]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
mm: use folio_xchg_last_cpupid() in wp_page_reuse()
authorKefeng Wang <wangkefeng.wang@huawei.com>
Wed, 18 Oct 2023 14:08:05 +0000 (22:08 +0800)
committerAndrew Morton <akpm@linux-foundation.org>
Wed, 25 Oct 2023 23:47:13 +0000 (16:47 -0700)
Convert to use folio_xchg_last_cpupid() in wp_page_reuse(), and remove
page variable. Since now only normal and PMD-mapped page is handled by
numa balancing, it's enough to only update the entire folio's last cpupid.

Link: https://lkml.kernel.org/r/20231018140806.2783514-19-wangkefeng.wang@huawei.com
Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
Cc: David Hildenbrand <david@redhat.com>
Cc: Huang Ying <ying.huang@intel.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Juri Lelli <juri.lelli@redhat.com>
Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Vincent Guittot <vincent.guittot@linaro.org>
Cc: Zi Yan <ziy@nvidia.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/memory.c

index 94791c5e2951d9aaa1cae7518fe3d2dbceaca174..1f18ed4a54971dd8737e7fb108d093bc702d777c 100644 (file)
@@ -3019,19 +3019,20 @@ static inline void wp_page_reuse(struct vm_fault *vmf, struct folio *folio)
        __releases(vmf->ptl)
 {
        struct vm_area_struct *vma = vmf->vma;
-       struct page *page = vmf->page;
        pte_t entry;
 
        VM_BUG_ON(!(vmf->flags & FAULT_FLAG_WRITE));
-       VM_BUG_ON(folio && folio_test_anon(folio) && !PageAnonExclusive(page));
 
-       /*
-        * Clear the pages cpupid information as the existing
-        * information potentially belongs to a now completely
-        * unrelated process.
-        */
-       if (page)
-               page_cpupid_xchg_last(page, (1 << LAST_CPUPID_SHIFT) - 1);
+       if (folio) {
+               VM_BUG_ON(folio_test_anon(folio) &&
+                         !PageAnonExclusive(vmf->page));
+               /*
+                * Clear the folio's cpupid information as the existing
+                * information potentially belongs to a now completely
+                * unrelated process.
+                */
+               folio_xchg_last_cpupid(folio, (1 << LAST_CPUPID_SHIFT) - 1);
+       }
 
        flush_cache_page(vma, vmf->address, pte_pfn(vmf->orig_pte));
        entry = pte_mkyoung(vmf->orig_pte);