mm: numa: Do not mark PTEs pte_numa when splitting huge pages
authorMel Gorman <mgorman@suse.de>
Thu, 2 Oct 2014 18:47:42 +0000 (19:47 +0100)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 2 Oct 2014 18:57:18 +0000 (11:57 -0700)
commitabc40bd2eeb77eb7c2effcaf63154aad929a1d5f
treeee3cddc97fad0654fdc36e3052c0598ae370e9fc
parentd3cb8bf6081b8b7a2dabb1264fe968fd870fa595
mm: numa: Do not mark PTEs pte_numa when splitting huge pages

This patch reverts 1ba6e0b50b ("mm: numa: split_huge_page: transfer the
NUMA type from the pmd to the pte"). If a huge page is being split due
a protection change and the tail will be in a PROT_NONE vma then NUMA
hinting PTEs are temporarily created in the protected VMA.

 VM_RW|VM_PROTNONE
|-----------------|
      ^
      split here

In the specific case above, it should get fixed up by change_pte_range()
but there is a window of opportunity for weirdness to happen. Similarly,
if a huge page is shrunk and split during a protection update but before
pmd_numa is cleared then a pte_numa can be left behind.

Instead of adding complexity trying to deal with the case, this patch
will not mark PTEs NUMA when splitting a huge page. NUMA hinting faults
will not be triggered which is marginal in comparison to the complexity
in dealing with the corner cases during THP split.

Cc: stable@vger.kernel.org
Signed-off-by: Mel Gorman <mgorman@suse.de>
Acked-by: Rik van Riel <riel@redhat.com>
Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
mm/huge_memory.c