aboutsummaryrefslogtreecommitdiffstats
path: root/mm
diff options
context:
space:
mode:
authorJeremy Fitzhardinge <jeremy@goop.org>2009-01-06 17:39:21 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2009-01-06 18:59:01 -0500
commit38e0edb15bd07c6a0caf0cfe39f8f90bd98601b2 (patch)
tree1ba874020bb20412ba312abef199a8668c5b99a6 /mm
parentcd52858c73f9f7df859a08fb08496ca39b9b3d8d (diff)
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>
Diffstat (limited to 'mm')
-rw-r--r--mm/memory.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/mm/memory.c b/mm/memory.c
index 99e8d5c7b312..b5af358b8b22 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -1645,6 +1645,8 @@ static int apply_to_pte_range(struct mm_struct *mm, pmd_t *pmd,
1645 1645
1646 BUG_ON(pmd_huge(*pmd)); 1646 BUG_ON(pmd_huge(*pmd));
1647 1647
1648 arch_enter_lazy_mmu_mode();
1649
1648 token = pmd_pgtable(*pmd); 1650 token = pmd_pgtable(*pmd);
1649 1651
1650 do { 1652 do {
@@ -1653,6 +1655,8 @@ static int apply_to_pte_range(struct mm_struct *mm, pmd_t *pmd,
1653 break; 1655 break;
1654 } while (pte++, addr += PAGE_SIZE, addr != end); 1656 } while (pte++, addr += PAGE_SIZE, addr != end);
1655 1657
1658 arch_leave_lazy_mmu_mode();
1659
1656 if (mm != &init_mm) 1660 if (mm != &init_mm)
1657 pte_unmap_unlock(pte-1, ptl); 1661 pte_unmap_unlock(pte-1, ptl);
1658 return err; 1662 return err;