mm/apply_to_range: call pte function with lazy updates
Make the pte-level function in apply_to_range be called in lazy mmu mode, so that any pagetable modifications can be batched. Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Nick Piggin <nickpiggin@yahoo.com.au> Cc: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com> Cc: Hugh Dickins <hugh@veritas.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
cd52858c73
commit
38e0edb15b
|
@ -1645,6 +1645,8 @@ static int apply_to_pte_range(struct mm_struct *mm, pmd_t *pmd,
|
||||||
|
|
||||||
BUG_ON(pmd_huge(*pmd));
|
BUG_ON(pmd_huge(*pmd));
|
||||||
|
|
||||||
|
arch_enter_lazy_mmu_mode();
|
||||||
|
|
||||||
token = pmd_pgtable(*pmd);
|
token = pmd_pgtable(*pmd);
|
||||||
|
|
||||||
do {
|
do {
|
||||||
|
@ -1653,6 +1655,8 @@ static int apply_to_pte_range(struct mm_struct *mm, pmd_t *pmd,
|
||||||
break;
|
break;
|
||||||
} while (pte++, addr += PAGE_SIZE, addr != end);
|
} while (pte++, addr += PAGE_SIZE, addr != end);
|
||||||
|
|
||||||
|
arch_leave_lazy_mmu_mode();
|
||||||
|
|
||||||
if (mm != &init_mm)
|
if (mm != &init_mm)
|
||||||
pte_unmap_unlock(pte-1, ptl);
|
pte_unmap_unlock(pte-1, ptl);
|
||||||
return err;
|
return err;
|
||||||
|
|
Loading…
Reference in New Issue