[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen staging] xen/page_alloc: statically allocate bootmem_region_list
commit c61c1b49430527ee16fbf5b55aca195c325b1a23 Author: Hongyan Xia <hongyxia@xxxxxxxxxx> AuthorDate: Tue Dec 17 14:33:19 2019 +0000 Commit: Julien Grall <julien@xxxxxxx> CommitDate: Tue Dec 17 16:51:20 2019 +0000 xen/page_alloc: statically allocate bootmem_region_list The existing code assumes that the first mfn passed to the boot allocator is mapped, which creates problems when, e.g., we do not have a direct map, and may create other bootstrapping problems in the future. Make it static. The size is kept the same as before (1 page). Signed-off-by: Hongyan Xia <hongyxia@xxxxxxxxxx> Reviewed-by: Julien Grall <julien@xxxxxxx> Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx> --- xen/common/page_alloc.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c index 7cb1bd368b..919a270587 100644 --- a/xen/common/page_alloc.c +++ b/xen/common/page_alloc.c @@ -244,9 +244,12 @@ PAGE_LIST_HEAD(page_broken_list); */ mfn_t first_valid_mfn = INVALID_MFN_INITIALIZER; -static struct bootmem_region { +struct bootmem_region { unsigned long s, e; /* MFNs @s through @e-1 inclusive are free */ -} *__initdata bootmem_region_list; +}; +/* Statically allocate a page for bootmem_region_list. */ +static struct bootmem_region __initdata + bootmem_region_list[PAGE_SIZE / sizeof(struct bootmem_region)]; static unsigned int __initdata nr_bootmem_regions; struct scrub_region { @@ -263,9 +266,6 @@ static void __init bootmem_region_add(unsigned long s, unsigned long e) { unsigned int i; - if ( (bootmem_region_list == NULL) && (s < e) ) - bootmem_region_list = mfn_to_virt(s++); - if ( s >= e ) return; @@ -1869,7 +1869,6 @@ void __init end_boot_allocator(void) init_heap_pages(mfn_to_page(_mfn(r->s)), r->e - r->s); } nr_bootmem_regions = 0; - init_heap_pages(virt_to_page(bootmem_region_list), 1); if ( !dma_bitsize && (num_online_nodes() > 1) ) dma_bitsize = arch_get_dma_bitsize(); -- generated by git-patchbot for /home/xen/git/xen.git#staging _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |