From: Jeremy Fitzhardinge <jeremy.fitzhardinge@xxxxxxxxxx> No need to call the callback per-pte. Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@xxxxxxxxxx> --- arch/x86/xen/grant-table.c | 28 ++++++++++++++++++---------- 1 files changed, 18 insertions(+), 10 deletions(-) diff --git a/arch/x86/xen/grant-table.c b/arch/x86/xen/grant-table.c index 5bf892a..11a8a45 100644 --- a/arch/x86/xen/grant-table.c +++ b/arch/x86/xen/grant-table.c @@ -44,19 +44,27 @@ #include <asm/pgtable.h> -static int map_pte_fn(pte_t *pte, unsigned long addr, void *data) +static int map_pte_fn(pte_t *pte, unsigned count, unsigned long addr, void *data) { unsigned long **frames = (unsigned long **)data; - set_pte_at(&init_mm, addr, pte, mfn_pte((*frames)[0], PAGE_KERNEL)); - (*frames)++; + while (count--) { + set_pte_at(&init_mm, addr, pte, mfn_pte((*frames)[0], PAGE_KERNEL)); + (*frames)++; + pte++; + addr += PAGE_SIZE; + } return 0; } -static int unmap_pte_fn(pte_t *pte, unsigned long addr, void *data) +static int unmap_pte_fn(pte_t *pte, unsigned count, unsigned long addr, void *data) { + while (count--) { + pte_clear(&init_mm, addr, pte); + addr += PAGE_SIZE; + pte++; + } - set_pte_at(&init_mm, addr, pte, __pte(0)); return 0; } @@ -75,15 +83,15 @@ int arch_gnttab_map_shared(unsigned long *frames, unsigned long nr_gframes, *__shared = shared; } - rc = apply_to_page_range(&init_mm, (unsigned long)shared, - PAGE_SIZE * nr_gframes, - map_pte_fn, &frames); + rc = apply_to_page_range_batch(&init_mm, (unsigned long)shared, + PAGE_SIZE * nr_gframes, + map_pte_fn, &frames); return rc; } void arch_gnttab_unmap_shared(struct grant_entry *shared, unsigned long nr_gframes) { - apply_to_page_range(&init_mm, (unsigned long)shared, - PAGE_SIZE * nr_gframes, unmap_pte_fn, NULL); + apply_to_page_range_batch(&init_mm, (unsigned long)shared, + PAGE_SIZE * nr_gframes, unmap_pte_fn, NULL); } -- 1.7.3.4 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom policy in Canada: sign http://dissolvethecrtc.ca/ Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>