[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] linux x86/64: No need to pre-allocate all fixmap pagetables:
# HG changeset patch # User kfraser@xxxxxxxxxxxxxxxxxxxxx # Date 1173188465 0 # Node ID 200d13363a38cb84ab1a75aca6d0a31f9390ecaa # Parent ae203b55e7c833b8ed934fab8e06d00e694ae989 linux x86/64: No need to pre-allocate all fixmap pagetables: just those for bt_ioremap(). Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx> --- linux-2.6-xen-sparse/arch/x86_64/mm/init-xen.c | 20 +++++++++++++------- 1 files changed, 13 insertions(+), 7 deletions(-) diff -r ae203b55e7c8 -r 200d13363a38 linux-2.6-xen-sparse/arch/x86_64/mm/init-xen.c --- a/linux-2.6-xen-sparse/arch/x86_64/mm/init-xen.c Tue Mar 06 11:53:37 2007 +0000 +++ b/linux-2.6-xen-sparse/arch/x86_64/mm/init-xen.c Tue Mar 06 13:41:05 2007 +0000 @@ -708,19 +708,22 @@ static void xen_finish_init_mapping(void WARN_ON(HYPERVISOR_update_va_mapping( start, __pte_ma(0), 0)); - /* Initialise all fixmap pagetables. Use 'start_pfn' allocator. */ + /* Allocate pte's for initial fixmaps from 'start_pfn' allocator. */ table_end = ~0UL; - for (i = 0; i < __end_of_fixed_addresses; i++) + + /* + * Prefetch pte's for the bt_ioremap() area. It gets used before the + * boot-time allocator is online, so allocate-on-demand would fail. + */ + for (i = FIX_BTMAP_END; i <= FIX_BTMAP_BEGIN; i++) __set_fixmap(i, 0, __pgprot(0)); - table_end = start_pfn; - - /* Switch to the real shared_info page, and clear the - * dummy page. */ + + /* Switch to the real shared_info page, and clear the dummy page. */ set_fixmap(FIX_SHARED_INFO, xen_start_info->shared_info); HYPERVISOR_shared_info = (shared_info_t *)fix_to_virt(FIX_SHARED_INFO); memset(empty_zero_page, 0, sizeof(empty_zero_page)); - /* Setup mapping of lower 1st MB */ + /* Set up mapping of lowest 1MB of physical memory. */ for (i = 0; i < NR_FIX_ISAMAPS; i++) if (is_initial_xendomain()) set_fixmap(FIX_ISAMAP_BEGIN - i, i * PAGE_SIZE); @@ -729,6 +732,9 @@ static void xen_finish_init_mapping(void virt_to_mfn(empty_zero_page) << PAGE_SHIFT, PAGE_KERNEL_RO); + + /* Disable the 'start_pfn' allocator. */ + table_end = start_pfn; } /* Setup the direct mapping of the physical memory at PAGE_OFFSET. _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |