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

Re: [PATCH v6 2/2] arm/efi: load dom0 modules from DT using UEFI



On Mon, 11 Oct 2021, Julien Grall wrote:
> Hi Stefano,
> 
> On 11/10/2021 22:24, Stefano Stabellini wrote:
> > > diff --git a/xen/arch/arm/efi/efi-boot.h b/xen/arch/arm/efi/efi-boot.h
> > > index 840728d6c0..076b827bdd 100644
> > > --- a/xen/arch/arm/efi/efi-boot.h
> > > +++ b/xen/arch/arm/efi/efi-boot.h
> > > @@ -713,10 +713,12 @@ static int __init handle_module_node(EFI_FILE_HANDLE
> > > dir_handle,
> > >       char mod_string[24]; /* Placeholder for module@ + a 64-bit number +
> > > \0 */
> > >       int uefi_name_len, file_idx, module_compat;
> > >       module_name *file;
> > > +    const char *compat_string = is_domu_module ? "multiboot,module" :
> > > +                                "xen,multiboot-module";
> > >         /* Check if the node is a multiboot,module otherwise return */
> > >       module_compat = fdt_node_check_compatible(fdt, module_node_offset,
> > > -                                              "multiboot,module");
> > > +                                              compat_string);
> > >       if ( module_compat < 0 )
> > >           /* Error while checking the compatible string */
> > >           return ERROR_CHECK_MODULE_COMPAT;
> > 
> > 
> > Well... not exactly like this because this would stop a normal
> > "multiboot,module" dom0 kernel from being recognized.
> > 
> > So we need for domU: only "multiboot,module"
> > For Dom0, either "multiboot,module" or "xen,multiboot-module"
> 
> Looking at the history, xen,multiboot-module has been considered as a legacy
> binding since before UEFI was introduced. In fact, without this series, I
> believe, there is limited reasons for the compatible to be present in the DT
> as you would either use grub (which use the new compatible) or xen.cfg (the
> stub will create the node).
> 
> So I would argue that this compatible should not be used in combination with
> UEFI and therefore we should not handle it. This would make the code simpler
> :).

What you suggested is a viable option, however ImageBuilder is still
using the "xen,multiboot-module" format somehow today (no idea why) and
we have the following written in docs/misc/arm/device-tree/booting.txt:

        Xen 4.4 supported a different set of legacy compatible strings
        which remain supported such that systems supporting both 4.4
        and later can use a single DTB.

        - "xen,multiboot-module" equivalent to "multiboot,module"
        - "xen,linux-zimage"     equivalent to "multiboot,kernel"
        - "xen,linux-initrd"     equivalent to "multiboot,ramdisk"

        For compatibility with Xen 4.4 the more specific "xen,linux-*"
        names are non-optional and must be included.

My preference is to avoid breaking compatibility (even with UEFI
booting). The way I suggested above is one way to do it.

But I don't feel strongly about this at all, I am fine with ignoring
"xen,multiboot-module" in the EFI stub. I can get ImageBuilder fixed
very quickly (I should do that in any case). If we are going to ignore
"xen,multiboot-module" then we probably want to update the text in
docs/misc/arm/device-tree/booting.txt also.



 


Rackspace

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