Commit bae9c19bf12bb2a914a8e530270f41d36cc87c63

Authored by Andrea Arcangeli
Committed by Linus Torvalds
1 parent e7a00c45f2

thp: split_huge_page_mm/vma

split_huge_page_pmd compat code.  Each one of those would need to be
expanded to hundred of lines of complex code without a fully reliable
split_huge_page_pmd design.

Signed-off-by: Andrea Arcangeli <aarcange@redhat.com>
Acked-by: Rik van Riel <riel@redhat.com>
Acked-by: Mel Gorman <mel@csn.ul.ie>
Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Showing 6 changed files with 6 additions and 0 deletions Side-by-side Diff

arch/x86/kernel/vm86_32.c
... ... @@ -179,6 +179,7 @@
179 179 if (pud_none_or_clear_bad(pud))
180 180 goto out;
181 181 pmd = pmd_offset(pud, 0xA0000);
  182 + split_huge_page_pmd(mm, pmd);
182 183 if (pmd_none_or_clear_bad(pmd))
183 184 goto out;
184 185 pte = pte_offset_map_lock(mm, pmd, 0xA0000, &ptl);
... ... @@ -514,6 +514,7 @@
514 514 pmd = pmd_offset(pud, addr);
515 515 do {
516 516 next = pmd_addr_end(addr, end);
  517 + split_huge_page_pmd(vma->vm_mm, pmd);
517 518 if (pmd_none_or_clear_bad(pmd))
518 519 continue;
519 520 if (check_pte_range(vma, pmd, addr, next, nodes,
... ... @@ -154,6 +154,7 @@
154 154 pmd = pmd_offset(pud, addr);
155 155 do {
156 156 next = pmd_addr_end(addr, end);
  157 + split_huge_page_pmd(vma->vm_mm, pmd);
157 158 if (pmd_none_or_clear_bad(pmd))
158 159 mincore_unmapped_range(vma, addr, next, vec);
159 160 else
... ... @@ -88,6 +88,7 @@
88 88 pmd = pmd_offset(pud, addr);
89 89 do {
90 90 next = pmd_addr_end(addr, end);
  91 + split_huge_page_pmd(mm, pmd);
91 92 if (pmd_none_or_clear_bad(pmd))
92 93 continue;
93 94 change_pte_range(mm, pmd, addr, next, newprot, dirty_accountable);
... ... @@ -41,6 +41,7 @@
41 41 return NULL;
42 42  
43 43 pmd = pmd_offset(pud, addr);
  44 + split_huge_page_pmd(mm, pmd);
44 45 if (pmd_none_or_clear_bad(pmd))
45 46 return NULL;
46 47  
... ... @@ -34,6 +34,7 @@
34 34 pmd = pmd_offset(pud, addr);
35 35 do {
36 36 next = pmd_addr_end(addr, end);
  37 + split_huge_page_pmd(walk->mm, pmd);
37 38 if (pmd_none_or_clear_bad(pmd)) {
38 39 if (walk->pte_hole)
39 40 err = walk->pte_hole(addr, next, walk);