mirror of
https://github.com/torvalds/linux.git
synced 2025-12-01 07:26:02 +07:00
mm: remove boolean output parameters from folio_pte_batch_ext()
Instead, let's just allow for specifying through flags whether we want to have bits merged into the original PTE. For the madvise() case, simplify by having only a single parameter for merging young+dirty. For madvise_cold_or_pageout_pte_range() merging the dirty bit is not required, but also not harmful. This code is not that performance critical after all to really force all micro-optimizations. As we now have two pte_t * parameters, use PageTable() to make sure we are actually given a pointer at a copy of the PTE, not a pointer into an actual page table. Link: https://lkml.kernel.org/r/20250702104926.212243-5-david@redhat.com Signed-off-by: David Hildenbrand <david@redhat.com> Reviewed-by: Dev Jain <dev.jain@arm.com> Reviewed-by: Oscar Salvador <osalvador@suse.de> Cc: Alistair Popple <apopple@nvidia.com> Cc: Byungchul Park <byungchul@sk.com> Cc: Gregory Price <gourry@gourry.net> Cc: "Huang, Ying" <ying.huang@linux.alibaba.com> Cc: Jann Horn <jannh@google.com> Cc: Joshua Hahn <joshua.hahnjy@gmail.com> Cc: Lance Yang <lance.yang@linux.dev> Cc: Liam Howlett <liam.howlett@oracle.com> Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> Cc: Mathew Brost <matthew.brost@intel.com> Cc: Michal Hocko <mhocko@suse.com> Cc: Mike Rapoport <rppt@kernel.org> Cc: Rakie Kim <rakie.kim@sk.com> Cc: Rik van Riel <riel@surriel.com> Cc: Suren Baghdasaryan <surenb@google.com> Cc: Vlastimil Babka <vbabka@suse.cz> 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
dd80cfd487
commit
7ae7e811f0
@@ -972,10 +972,9 @@ copy_present_ptes(struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma
|
||||
pte_t *dst_pte, pte_t *src_pte, pte_t pte, unsigned long addr,
|
||||
int max_nr, int *rss, struct folio **prealloc)
|
||||
{
|
||||
fpb_t flags = FPB_MERGE_WRITE;
|
||||
struct page *page;
|
||||
struct folio *folio;
|
||||
bool any_writable;
|
||||
fpb_t flags = 0;
|
||||
int err, nr;
|
||||
|
||||
page = vm_normal_page(src_vma, addr, pte);
|
||||
@@ -995,8 +994,7 @@ copy_present_ptes(struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma
|
||||
if (vma_soft_dirty_enabled(src_vma))
|
||||
flags |= FPB_RESPECT_SOFT_DIRTY;
|
||||
|
||||
nr = folio_pte_batch_flags(folio, src_pte, pte, max_nr, flags,
|
||||
&any_writable, NULL, NULL);
|
||||
nr = folio_pte_batch_flags(folio, src_vma, src_pte, &pte, max_nr, flags);
|
||||
folio_ref_add(folio, nr);
|
||||
if (folio_test_anon(folio)) {
|
||||
if (unlikely(folio_try_dup_anon_rmap_ptes(folio, page,
|
||||
@@ -1010,8 +1008,6 @@ copy_present_ptes(struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma
|
||||
folio_dup_file_rmap_ptes(folio, page, nr, dst_vma);
|
||||
rss[mm_counter_file(folio)] += nr;
|
||||
}
|
||||
if (any_writable)
|
||||
pte = pte_mkwrite(pte, src_vma);
|
||||
__copy_present_ptes(dst_vma, src_vma, dst_pte, src_pte, pte,
|
||||
addr, nr);
|
||||
return nr;
|
||||
|
||||
Reference in New Issue
Block a user