diff options
author | Johannes Weiner <hannes@cmpxchg.org> | 2011-01-13 15:47:02 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-13 17:32:44 -0800 |
commit | 0ca1634d4143c3579273ca53b993df19f5c98e92 (patch) | |
tree | d566a582357a9e1528d1783566bfda4375c7e566 /mm/mincore.c | |
parent | f2d6bfe9ff0acec30b713614260e78b03d20e909 (diff) | |
download | linux-0ca1634d4143c3579273ca53b993df19f5c98e92.tar.gz linux-0ca1634d4143c3579273ca53b993df19f5c98e92.tar.bz2 linux-0ca1634d4143c3579273ca53b993df19f5c98e92.zip |
thp: mincore transparent hugepage support
Handle transparent huge page pmd entries natively instead of splitting
them into subpages.
Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
Signed-off-by: Andrea Arcangeli <aarcange@redhat.com>
Reviewed-by: Rik van Riel <riel@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/mincore.c')
-rw-r--r-- | mm/mincore.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/mm/mincore.c b/mm/mincore.c index 9959bb41570e..a4e6b9d75c76 100644 --- a/mm/mincore.c +++ b/mm/mincore.c @@ -154,7 +154,13 @@ static void mincore_pmd_range(struct vm_area_struct *vma, pud_t *pud, pmd = pmd_offset(pud, addr); do { next = pmd_addr_end(addr, end); - split_huge_page_pmd(vma->vm_mm, pmd); + if (pmd_trans_huge(*pmd)) { + if (mincore_huge_pmd(vma, pmd, addr, next, vec)) { + vec += (next - addr) >> PAGE_SHIFT; + continue; + } + /* fall through */ + } if (pmd_none_or_clear_bad(pmd)) mincore_unmapped_range(vma, addr, next, vec); else |