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

Re: [Xen-devel] [PATCH for-4.10] libxc: load acpi RSDP table at correct address



On Tue, Nov 21, 2017 at 12:13 PM, Juergen Gross <jgross@xxxxxxxx> wrote:
> On 21/11/17 11:42, Andrew Cooper wrote:
>> On 21/11/17 07:44, Jan Beulich wrote:
>>>>>> On 20.11.17 at 17:59, <boris.ostrovsky@xxxxxxxxxx> wrote:
>>>> On 11/20/2017 11:43 AM, Jan Beulich wrote:
>>>>>>>> On 20.11.17 at 17:28, <boris.ostrovsky@xxxxxxxxxx> wrote:
>>>>>> On 11/20/2017 11:26 AM, Jan Beulich wrote:
>>>>>>>>>> On 20.11.17 at 17:14, <boris.ostrovsky@xxxxxxxxxx> wrote:
>>>>>>>> What could cause grub2 to fail to find space for the pointer in the
>>>>>>>> first page? Will we ever have anything in EBDA (which is one of the
>>>>>>>> possible RSDP locations)?
>>>>>>> Well, the EBDA (see the B in its name) is again something that's
>>>>>>> meaningless without there being a BIOS.
>>>>>> Exactly. So it should always be available for grub to copy the pointer
>>>>>> there.
>>>>> But what use would it be if grub copied it there? It just shouldn't
>>>>> be there, neither before nor after grub (just like grub doesn't
>>>>> introduce firmware into the system).
>>>> So that the guest can find it using standard methods. If Xen can't
>>>> guarantee ACPI-compliant placement of the pointer then someone has to
>>>> help the guest find it in the expected place. We can do it with a
>>>> dedicated entry point by setting the pointer explicitly (although
>>>> admittedly this is not done correctly now) or we need to have firmware
>>>> (grub2) place it in the "right" location.
>>>>
>>>> (It does look a bit hacky though)
>>> Indeed. Of course ACPI without any actual firmware is sort of odd,
>>> too. As to dedicated entry point and its alternatives: Xen itself
>>> tells grub (aiui we're talking about a flavor of it running PVH itself)
>>> where the RSDP is. Why can't grub forward that information in a
>>> suitable way (e.g. via a new tag, or - for Linux - as a new entry
>>> in the Linux boot header)?
>>
>> Or if the worst comes to the worst, fabricate an acpi_rsdp= command line
>> parameter?
>
> This would be easy: just replace the #ifdef CONFIG_KEXEC in
> drivers/acpi/osl.c of the Linux kernel with:
>
> #if defined(CONFIG_KEXEC) || defined(CONFIG_XEN_PVH)
>
> and the parameter is usable and active.
>
> Another possibility would be to let grub copy the RSDP to below 1MB and
> add the E820 entry for it.
>
> In any case it seems save to let Xen place the RSDP just below 4GB,
> together with console and Xenstore pages (so this area just expands).
> grub can handle this either on its own or together with the kernel.
>
> Lets see how Roger's plans with BSD look like.

On FreeBSD the position of the RSDP is passed from the loader to the
kernel, memory scanning is only used if the loader hasn't provided a
RSDP address. I don't know much about the Linux boot protocol, but it
would seem sensible to pass this information from the loader to the
kernel in the boot information (IIRC it's called the zero page on
Linux), so that Linux tries to get the RSDP from the information
passed by the loader and then resorts to memory scanning if that's not
provided.

Roger.

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

 


Rackspace

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