mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
mm: eliminate is_swap_pte() when softleaf_from_pte() suffices
In cases where we can simply utilise the fact that softleaf_from_pte() treats present entries as if they were none entries and thus eliminate spurious uses of is_swap_pte(), do so. No functional change intended. Link: https://lkml.kernel.org/r/92ebab9567978155116804c67babc3c64636c403.1762812360.git.lorenzo.stoakes@oracle.com Signed-off-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> Reviewed-by: Vlastimil Babka <vbabka@suse.cz> Cc: Alexander Gordeev <agordeev@linux.ibm.com> Cc: Alistair Popple <apopple@nvidia.com> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Axel Rasmussen <axelrasmussen@google.com> Cc: Baolin Wang <baolin.wang@linux.alibaba.com> Cc: Baoquan He <bhe@redhat.com> Cc: Barry Song <baohua@kernel.org> Cc: Byungchul Park <byungchul@sk.com> Cc: Chengming Zhou <chengming.zhou@linux.dev> Cc: Chris Li <chrisl@kernel.org> Cc: Christian Borntraeger <borntraeger@linux.ibm.com> Cc: Christian Brauner <brauner@kernel.org> Cc: Claudio Imbrenda <imbrenda@linux.ibm.com> Cc: David Hildenbrand <david@redhat.com> Cc: Dev Jain <dev.jain@arm.com> Cc: Gerald Schaefer <gerald.schaefer@linux.ibm.com> Cc: Gregory Price <gourry@gourry.net> Cc: Heiko Carstens <hca@linux.ibm.com> Cc: "Huang, Ying" <ying.huang@linux.alibaba.com> Cc: Hugh Dickins <hughd@google.com> Cc: Jan Kara <jack@suse.cz> Cc: Jann Horn <jannh@google.com> Cc: Janosch Frank <frankja@linux.ibm.com> Cc: Jason Gunthorpe <jgg@ziepe.ca> Cc: Joshua Hahn <joshua.hahnjy@gmail.com> Cc: Kairui Song <kasong@tencent.com> Cc: Kemeng Shi <shikemeng@huaweicloud.com> Cc: Lance Yang <lance.yang@linux.dev> Cc: Leon Romanovsky <leon@kernel.org> Cc: Liam Howlett <liam.howlett@oracle.com> Cc: Mathew Brost <matthew.brost@intel.com> Cc: Matthew Wilcox (Oracle) <willy@infradead.org> Cc: Miaohe Lin <linmiaohe@huawei.com> Cc: Michal Hocko <mhocko@suse.com> Cc: Mike Rapoport <rppt@kernel.org> Cc: Muchun Song <muchun.song@linux.dev> Cc: Naoya Horiguchi <nao.horiguchi@gmail.com> Cc: Nhat Pham <nphamcs@gmail.com> Cc: Nico Pache <npache@redhat.com> Cc: Oscar Salvador <osalvador@suse.de> Cc: Pasha Tatashin <pasha.tatashin@soleen.com> Cc: Peter Xu <peterx@redhat.com> Cc: Rakie Kim <rakie.kim@sk.com> Cc: Rik van Riel <riel@surriel.com> Cc: Ryan Roberts <ryan.roberts@arm.com> Cc: SeongJae Park <sj@kernel.org> Cc: Suren Baghdasaryan <surenb@google.com> Cc: Sven Schnelle <svens@linux.ibm.com> Cc: Vasily Gorbik <gor@linux.ibm.com> Cc: Wei Xu <weixugc@google.com> Cc: xu xin <xu.xin16@zte.com.cn> Cc: Yuanchu Xie <yuanchu@google.com> Cc: Zi Yan <ziy@nvidia.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
committed by
Andrew Morton
parent
fb888710e2
commit
06fb61462b
@@ -15,7 +15,7 @@
|
||||
#include <linux/pagewalk.h>
|
||||
#include <linux/rmap.h>
|
||||
#include <linux/swap.h>
|
||||
#include <linux/swapops.h>
|
||||
#include <linux/leafops.h>
|
||||
#include <linux/swap_cgroup.h>
|
||||
#include <linux/tracepoint-defs.h>
|
||||
|
||||
@@ -380,13 +380,12 @@ static inline int swap_pte_batch(pte_t *start_ptep, int max_nr, pte_t pte)
|
||||
{
|
||||
pte_t expected_pte = pte_next_swp_offset(pte);
|
||||
const pte_t *end_ptep = start_ptep + max_nr;
|
||||
swp_entry_t entry = pte_to_swp_entry(pte);
|
||||
const softleaf_t entry = softleaf_from_pte(pte);
|
||||
pte_t *ptep = start_ptep + 1;
|
||||
unsigned short cgroup_id;
|
||||
|
||||
VM_WARN_ON(max_nr < 1);
|
||||
VM_WARN_ON(!is_swap_pte(pte));
|
||||
VM_WARN_ON(non_swap_entry(entry));
|
||||
VM_WARN_ON(!softleaf_is_swap(entry));
|
||||
|
||||
cgroup_id = lookup_swap_cgroup_id(entry);
|
||||
while (ptep < end_ptep) {
|
||||
|
||||
@@ -195,7 +195,7 @@ static int swapin_walk_pmd_entry(pmd_t *pmd, unsigned long start,
|
||||
|
||||
for (addr = start; addr < end; addr += PAGE_SIZE) {
|
||||
pte_t pte;
|
||||
swp_entry_t entry;
|
||||
softleaf_t entry;
|
||||
struct folio *folio;
|
||||
|
||||
if (!ptep++) {
|
||||
@@ -205,10 +205,8 @@ static int swapin_walk_pmd_entry(pmd_t *pmd, unsigned long start,
|
||||
}
|
||||
|
||||
pte = ptep_get(ptep);
|
||||
if (!is_swap_pte(pte))
|
||||
continue;
|
||||
entry = pte_to_swp_entry(pte);
|
||||
if (unlikely(non_swap_entry(entry)))
|
||||
entry = softleaf_from_pte(pte);
|
||||
if (unlikely(!softleaf_is_swap(entry)))
|
||||
continue;
|
||||
|
||||
pte_unmap_unlock(ptep, ptl);
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
#include <linux/kernel_stat.h>
|
||||
#include <linux/mempolicy.h>
|
||||
#include <linux/swap.h>
|
||||
#include <linux/swapops.h>
|
||||
#include <linux/leafops.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/pagemap.h>
|
||||
#include <linux/pagevec.h>
|
||||
@@ -736,7 +736,6 @@ static struct folio *swap_vma_readahead(swp_entry_t targ_entry, gfp_t gfp_mask,
|
||||
pte_t *pte = NULL, pentry;
|
||||
int win;
|
||||
unsigned long start, end, addr;
|
||||
swp_entry_t entry;
|
||||
pgoff_t ilx;
|
||||
bool page_allocated;
|
||||
|
||||
@@ -749,6 +748,7 @@ static struct folio *swap_vma_readahead(swp_entry_t targ_entry, gfp_t gfp_mask,
|
||||
blk_start_plug(&plug);
|
||||
for (addr = start; addr < end; ilx++, addr += PAGE_SIZE) {
|
||||
struct swap_info_struct *si = NULL;
|
||||
softleaf_t entry;
|
||||
|
||||
if (!pte++) {
|
||||
pte = pte_offset_map(vmf->pmd, addr);
|
||||
@@ -756,10 +756,9 @@ static struct folio *swap_vma_readahead(swp_entry_t targ_entry, gfp_t gfp_mask,
|
||||
break;
|
||||
}
|
||||
pentry = ptep_get_lockless(pte);
|
||||
if (!is_swap_pte(pentry))
|
||||
continue;
|
||||
entry = pte_to_swp_entry(pentry);
|
||||
if (unlikely(non_swap_entry(entry)))
|
||||
entry = softleaf_from_pte(pentry);
|
||||
|
||||
if (!softleaf_is_swap(entry))
|
||||
continue;
|
||||
pte_unmap(pte);
|
||||
pte = NULL;
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
#include <linux/plist.h>
|
||||
|
||||
#include <asm/tlbflush.h>
|
||||
#include <linux/swapops.h>
|
||||
#include <linux/leafops.h>
|
||||
#include <linux/swap_cgroup.h>
|
||||
#include "swap_table.h"
|
||||
#include "internal.h"
|
||||
@@ -2257,7 +2257,7 @@ static int unuse_pte_range(struct vm_area_struct *vma, pmd_t *pmd,
|
||||
struct folio *folio;
|
||||
unsigned long offset;
|
||||
unsigned char swp_count;
|
||||
swp_entry_t entry;
|
||||
softleaf_t entry;
|
||||
int ret;
|
||||
pte_t ptent;
|
||||
|
||||
@@ -2268,11 +2268,10 @@ static int unuse_pte_range(struct vm_area_struct *vma, pmd_t *pmd,
|
||||
}
|
||||
|
||||
ptent = ptep_get_lockless(pte);
|
||||
entry = softleaf_from_pte(ptent);
|
||||
|
||||
if (!is_swap_pte(ptent))
|
||||
if (!softleaf_is_swap(entry))
|
||||
continue;
|
||||
|
||||
entry = pte_to_swp_entry(ptent);
|
||||
if (swp_type(entry) != type)
|
||||
continue;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user