|
@@ -154,7 +154,13 @@ static void mincore_pmd_range(struct vm_area_struct *vma, pud_t *pud,
|
|
pmd = pmd_offset(pud, addr);
|
|
pmd = pmd_offset(pud, addr);
|
|
do {
|
|
do {
|
|
next = pmd_addr_end(addr, end);
|
|
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))
|
|
if (pmd_none_or_clear_bad(pmd))
|
|
mincore_unmapped_range(vma, addr, next, vec);
|
|
mincore_unmapped_range(vma, addr, next, vec);
|
|
else
|
|
else
|