| 
    
 [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  |