[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] Design doc of adding ACPI support for arm64 on Xen - version 5



On 01/09/15 13:35, Shannon Zhao wrote:
> 
> 
> On 2015/9/1 19:28, Julien Grall wrote:
>> Hi Shannon,
>> On 01/09/15 05:12, Shannon Zhao wrote:
>>> I tried this. Directly use the "kinfo->gnttab_start = __pa(_stext)" as
>>> the address where these tables are mapped to Dom0. But the value of
>>> gnttab_start is lower than the start of RAM, so Dom0 ingore these
>>> regions and boot failed. see early_init_dt_add_memory_arch()
>>
>> Can you elaborate? How Linux will fail? If this region is marked as
>> reserved in the UEFI memory map, Linux will mark the memory as reserved.
>>
>> Furthermore, *ioremap is used in order to map the EFI tables so I don't
>> see a reason to fail.
>>
> 
> It's fine to parse EFI table but fails to parse ACPI table.
> 
> It doesn't add the memblock since it doesn't pass below check in
> early_init_dt_add_memory_arch:
>       if (base + size < phys_offset) {
>               pr_warning("Ignoring memory block 0x%llx - 0x%llx\n",
>                          base, base + size);
>               return;
>       }
> 
> It's due to kinfo->gnttab_start (e.g. 0x87e00000) lower than the memory
> start address (e.g. 0x90000000).
> 
> Then Linux will fail at parsing ACPI table.
> 
> ACPI: Interpreter enabled
> ACPI: Using GIC for interrupt routing
> Unhandled fault: alignment fault (0x96000021) at 0xffffff8000068184
> Internal error: : 96000021 [#1] PREEMPT SMP
> Modules linked in:
> CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.2.0-rc6+ #143
> Hardware name: (null) (DT)
> task: ffffffc008870000 ti: ffffffc00884c000 task.ti: ffffffc00884c000
> PC is at acpi_get_phys_id+0x264/0x290
> LR is at acpi_get_phys_id+0x178/0x290

IIRC, this is because Linux will consider the region as non-RAM (see
acpi_os_ioremap in arch/arm64/include/asm/acpi.h).

IHMO this is not a problem in the design but a bug in Linux/Xen.

You need to see how to make Linux see the region as a RAM (either by
early_init_dt_add_memory_arch or memblock_reserve). This would mean
either change the way you describe the region in the UEFI memory map or
fix Linux.

Regards,

-- 
Julien Grall

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.