diff options
author | Mel Gorman <mgorman@suse.de> | 2013-12-18 17:08:36 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-12-18 19:04:51 -0800 |
commit | 5a6dac3ec5f583cc8ee7bc53b5500a207c4ca433 (patch) | |
tree | 471c00fcd2c7666cdf91132c6557efb34264ace6 /mm/huge_memory.c | |
parent | 67f87463d3a3362424efcbe8b40e4772fd34fc61 (diff) | |
download | linux-5a6dac3ec5f583cc8ee7bc53b5500a207c4ca433.tar.gz linux-5a6dac3ec5f583cc8ee7bc53b5500a207c4ca433.tar.bz2 linux-5a6dac3ec5f583cc8ee7bc53b5500a207c4ca433.zip |
mm: numa: do not clear PMD during PTE update scan
If the PMD is flushed then a parallel fault in handle_mm_fault() will
enter the pmd_none and do_huge_pmd_anonymous_page() path where it'll
attempt to insert a huge zero page. This is wasteful so the patch
avoids clearing the PMD when setting pmd_numa.
Signed-off-by: Mel Gorman <mgorman@suse.de>
Reviewed-by: Rik van Riel <riel@redhat.com>
Cc: Alex Thorlton <athorlton@sgi.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/huge_memory.c')
-rw-r--r-- | mm/huge_memory.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 51f069303ab9..420826efda48 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -1539,7 +1539,7 @@ int change_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd, */ if (!is_huge_zero_page(page) && !pmd_numa(*pmd)) { - entry = pmdp_get_and_clear(mm, addr, pmd); + entry = *pmd; entry = pmd_mknuma(entry); ret = HPAGE_PMD_NR; } |