|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] xen/arm32: setup: Give a xenheap page to the boot allocator
On Tue, 17 Sep 2019, Julien Grall wrote:
> After commit 6e3e771203 "xen/arm: setup: Relocate the Device-Tree later on
> in the boot", the boot allocator will not receive any xenheap page (i.e.
> mapped page) on Arm32.
>
> However, the boot allocator implicitely rely on having the first page
> already mapped and therefore result to break boot on Arm32.
>
> The easiest way for now is to give a xenheap page to the boot allocator.
> We may want to rethink the interface in the future.
>
> Fixes: 6e3e771203 ('xen/arm: setup: Relocate the Device-Tree later on in the
> boot')
> Signed-off-by: Julien Grall <julien.grall@xxxxxxx>
> ---
> xen/arch/arm/setup.c | 8 +++++++-
> 1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
> index ebbfad94e4..e6ddefb5cf 100644
> --- a/xen/arch/arm/setup.c
> +++ b/xen/arch/arm/setup.c
> @@ -593,6 +593,7 @@ static void __init setup_mm(void)
> unsigned long heap_pages, xenheap_pages, domheap_pages;
> int i;
> const uint32_t ctr = READ_CP32(CTR);
> + mfn_t boot_mfn_start, boot_mfn_end;
>
> if ( !bootinfo.mem.nr_banks )
> panic("No memory bank\n");
> @@ -665,6 +666,11 @@ static void __init setup_mm(void)
>
> setup_xenheap_mappings((e >> PAGE_SHIFT) - xenheap_pages, xenheap_pages);
>
> + /* We need a single mapped page for populating bootmem_region_list. */
> + boot_mfn_start = mfn_add(xenheap_mfn_end, -1);
> + boot_mfn_end = xenheap_mfn_end;
> + init_boot_pages(mfn_to_maddr(boot_mfn_start),
> mfn_to_maddr(boot_mfn_end));
> +
> /* Add non-xenheap memory */
> for ( i = 0; i < bootinfo.mem.nr_banks; i++ )
> {
> @@ -710,7 +716,7 @@ static void __init setup_mm(void)
>
> /* Add xenheap memory that was not already added to the boot allocator.
> */
> init_xenheap_pages(mfn_to_maddr(xenheap_mfn_start),
> - mfn_to_maddr(xenheap_mfn_end));
> + mfn_to_maddr(boot_mfn_end));
I can see what you are trying to do with this patch and it looks like
the right fix at the moment. However, shouldn't this last change:
mfn_to_maddr(boot_mfn_start)
> }
> #else /* CONFIG_ARM_64 */
> static void __init setup_mm(void)
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |