mm, dax: dax-pmd vs thp-pmd vs hugetlbfs-pmd
authorDan Williams <[email protected]>
Sat, 16 Jan 2016 00:56:52 +0000 (16:56 -0800)
committerLinus Torvalds <[email protected]>
Sat, 16 Jan 2016 01:56:32 +0000 (17:56 -0800)
commit5c7fb56e5e3f7035dd798a8e1adee639f87043e5
treee3419de32c4b42c918267a50120549cbec2ed63f
parent5c2c2587b13235bf8b5c9027589f22eff68bdf49
mm, dax: dax-pmd vs thp-pmd vs hugetlbfs-pmd

A dax-huge-page mapping while it uses some thp helpers is ultimately not
a transparent huge page.  The distinction is especially important in the
get_user_pages() path.  pmd_devmap() is used to distinguish dax-pmds
from pmd_huge() and pmd_trans_huge() which have slightly different
semantics.

Explicitly mark the pmd_trans_huge() helpers that dax needs by adding
pmd_devmap() checks.

[[email protected]: fix regression in handling mlocked pages in  __split_huge_pmd()]
Signed-off-by: Dan Williams <[email protected]>
Cc: Dave Hansen <[email protected]>
Cc: Mel Gorman <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Andrea Arcangeli <[email protected]>
Cc: Matthew Wilcox <[email protected]>
Signed-off-by: Kirill A. Shutemov <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
arch/x86/include/asm/pgtable.h
include/linux/huge_mm.h
include/linux/mm.h
mm/huge_memory.c
mm/memory.c
mm/mprotect.c
mm/pgtable-generic.c