Call mmu notifier's callback .numa_protect() in change_pmd_range() when a page is ensured to be protected by PROT_NONE for NUMA migration purpose. Signed-off-by: Yan Zhao <yan.y.zhao@xxxxxxxxx> --- mm/huge_memory.c | 1 + mm/mprotect.c | 1 + 2 files changed, 2 insertions(+) diff --git a/mm/huge_memory.c b/mm/huge_memory.c index a71cf686e3b2..8ae56507da12 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -1892,6 +1892,7 @@ int change_huge_pmd(struct mmu_gather *tlb, struct vm_area_struct *vma, if (sysctl_numa_balancing_mode & NUMA_BALANCING_MEMORY_TIERING && !toptier) xchg_page_access_time(page, jiffies_to_msecs(jiffies)); + mmu_notifier_numa_protect(vma->vm_mm, addr, addr + PMD_SIZE); } /* * In case prot_numa, we are under mmap_read_lock(mm). It's critical diff --git a/mm/mprotect.c b/mm/mprotect.c index a1f63df34b86..c401814b2992 100644 --- a/mm/mprotect.c +++ b/mm/mprotect.c @@ -164,6 +164,7 @@ static long change_pte_range(struct mmu_gather *tlb, !toptier) xchg_page_access_time(page, jiffies_to_msecs(jiffies)); + mmu_notifier_numa_protect(vma->vm_mm, addr, addr + PAGE_SIZE); } oldpte = ptep_modify_prot_start(vma, addr, pte); -- 2.17.1