[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH RFC 34/35] arm : acpi workarounds for firmware/linux dependencies
Hi Jan, On 10/02/2015 18:01, Jan Beulich wrote: >>>> On 10.02.15 at 10:38, <julien.grall@xxxxxxxxxx> wrote: >> Why it's working on x86? This big allocation is done via the boot >> allocator memory (because the system state is early boot). Hopefully, we >> never have to resize it. >> >> On ARM64, ACPI is initialized after the boot allocator has ended, so we >> have to use xmalloc which will return a page-align pointer. >> >> As ACPI on ARM64 will never use the boot allocator, > > How come you're so certain? The reason why on x86 it needs to > be done this way is because of NUMA initialization. Are you not > expecting NUMA to become of interest to ARM? Or if you do, are > you sure you can get away without the same ordering that x86 > uses? I haven't though about it, sorry. Indeed, sooner or later NUMA will be interesting for ARM. So yes, the ACPI initialization has to be done before the boot_end_allocator. I gave a try and it works for me (see patch below). Parth, can you include this patch and drop the change about is_xmalloc_memory? Regards, diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c index 6651e78..6c7b3bf 100644 --- a/xen/arch/arm/setup.c +++ b/xen/arch/arm/setup.c @@ -600,8 +600,6 @@ static void __init setup_mm(unsigned long dtb_paddr, size_t dtb_size) allocator. */ init_xenheap_pages(pfn_to_paddr(xenheap_mfn_start), pfn_to_paddr(boot_mfn_start)); - - end_boot_allocator(); } #else /* CONFIG_ARM_64 */ static void __init setup_mm(unsigned long dtb_paddr, size_t dtb_size) @@ -670,8 +668,6 @@ static void __init setup_mm(unsigned long dtb_paddr, size_t dtb_size) setup_frametable_mappings(ram_start, ram_end); max_page = PFN_DOWN(ram_end); - - end_boot_allocator(); } #endif @@ -741,6 +737,12 @@ void __init start_xen(unsigned long boot_phys_offset, setup_mm(fdt_paddr, fdt_size); +#ifdef CONFIG_ACPI + acpi_boot_table_init(); +#endif + + end_boot_allocator(); + system_state = SYS_STATE_boot; vm_init(); @@ -750,7 +752,6 @@ void __init start_xen(unsigned long boot_phys_offset, */ #if defined(CONFIG_ACPI) && defined(CONFIG_ARM_64) - acpi_boot_table_init(); /* Get the boot CPU's MPIDR before cpu logical map is built */ cpu_logical_map(0) = read_cpuid_mpidr() & MPIDR_HWID_BITMASK; -- Julien Grall _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |