|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [RFC PATCH] xen/design: Add design for EFI dom0less system start
On 07.09.2021 13:51, Luca Fancellu wrote:
>> On 7 Sep 2021, at 10:35, Julien Grall <julien@xxxxxxx> wrote:
>> On 07/09/2021 07:52, Luca Fancellu wrote:
>>> --- /dev/null
>>> +++ b/docs/designs/efi-arm-dom0less.md
>>> @@ -0,0 +1,105 @@
>>> +# Xen EFI configuration file
>>> +
>>> +The current configuration file used by Xen when it is started as an EFI
>>> +application is considering only the dom0 guest and doesn't have any
>>> +property to describe and load in memory domU guests.
>>
>> From my understanding, the problem is less about properties (we already have
>> them in the Device-Tree) but more about where are the binaries located in
>> memory as we don't know in advance.
>
> I think I used the wrong word there, I meant “keyword” instead of “property”
> because I was referring about the
> lack of keywords to describe a domu guest in the Xen EFI configuration file.
>
> I agree with you that on systems with static allocation, the kernel and
> ramdisk binaries must be at certain locations
> that are out of control when we use the EFI boot services, the thing we can
> do is provide a keyword to specify the
> addresses and then use the CopyMem() function to relocate the kernel/ramdisk
> in the address we want.
>
>>
>> So I would like to propose something that build on top of the Device-Tree
>> work we did. Note this is early thoughts.
>>
>> The problematic nodes in the DT are:
>>
>> module@0x4a000000 {
>> compatible = "multiboot,kernel", "multiboot,module";
>> reg = <0x0 0x4a000000 0xffffff>;
>> bootargs = "console=ttyAMA0 init=/bin/sh";
>> };
>>
>> module@0x4b000000 {
>> compatible = "multiboot,ramdisk", "multiboot,module";
>> reg = <0x0 0x4b000000 0xffffff>;
>> };
>>
>> In particular the property "reg" cannot be known in advance because the UEFI
>> stub will be responsible to load the binaries in memory.
>
> Yes that’s true, the UEFI stub is using from the UEFI boot service the
> AllocatePages function that is giving back an address out of our control,
> then using another function the binary is read from the disk and copied at
> that address, finally the UEFI stub is writing the node in the device tree
> that
> will be used by Xen later.
If you know the intended address is available, AllocatePages() can very well
be given a pre-determined address via the AllocateAddress allocation type.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |