Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mm: Move change_prot_numa outside CONFIG_ARCH_USES_NUMA_PROT_NONE

change_prot_numa should work even if _PAGE_NUMA != _PAGE_PROTNONE.
On archs like ppc64 that don't use _PAGE_PROTNONE and also have
a separate page table outside linux pagetable, we just need to
make sure that when calling change_prot_numa we flush the
hardware page table entry so that next page access result in a numa
fault.

We still need to make sure we use the numa faulting logic only
when CONFIG_NUMA_BALANCING is set. This implies the migrate-on-fault
(Lazy migration) via mbind will only work if CONFIG_NUMA_BALANCING
is set.

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Reviewed-by: Rik van Riel <riel@redhat.com>
Acked-by: Mel Gorman <mgorman@suse.de>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>

authored by

Aneesh Kumar K.V and committed by
Benjamin Herrenschmidt
5877231f 2c49195b

+3 -4
+1 -1
include/linux/mm.h
··· 1842 1842 } 1843 1843 #endif 1844 1844 1845 - #ifdef CONFIG_ARCH_USES_NUMA_PROT_NONE 1845 + #ifdef CONFIG_NUMA_BALANCING 1846 1846 unsigned long change_prot_numa(struct vm_area_struct *vma, 1847 1847 unsigned long start, unsigned long end); 1848 1848 #endif
+2 -3
mm/mempolicy.c
··· 613 613 return 0; 614 614 } 615 615 616 - #ifdef CONFIG_ARCH_USES_NUMA_PROT_NONE 616 + #ifdef CONFIG_NUMA_BALANCING 617 617 /* 618 618 * This is used to mark a range of virtual addresses to be inaccessible. 619 619 * These are later cleared by a NUMA hinting fault. Depending on these ··· 627 627 unsigned long addr, unsigned long end) 628 628 { 629 629 int nr_updated; 630 - BUILD_BUG_ON(_PAGE_NUMA != _PAGE_PROTNONE); 631 630 632 631 nr_updated = change_protection(vma, addr, end, vma->vm_page_prot, 0, 1); 633 632 if (nr_updated) ··· 640 641 { 641 642 return 0; 642 643 } 643 - #endif /* CONFIG_ARCH_USES_NUMA_PROT_NONE */ 644 + #endif /* CONFIG_NUMA_BALANCING */ 644 645 645 646 /* 646 647 * Walk through page tables and collect pages to be migrated.