[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] xen: Add EFI_LOAD_OPTION support
>>> On 02.01.18 at 16:56, <tamas@xxxxxxxxxxxxx> wrote: > When booting Xen via UEFI the Xen config file can contain multiple sections > each describing different boot options. It is currently only possible to > choose > which section to boot with if Xen is started through an EFI Shell. Is this true? I thought that EFI Boot Manager entries can very well have command line options. And other boot loaders (e.g. grub2) should provide their own means to hand over options. > @@ -375,12 +375,40 @@ static void __init PrintErrMesg(const CHAR16 *mesg, > EFI_STATUS ErrCode) > > static unsigned int __init get_argv(unsigned int argc, CHAR16 **argv, > CHAR16 *cmdline, UINTN cmdsize, > - CHAR16 **options) > + CHAR16 **options, bool *elo_active) > { > CHAR16 *ptr = (CHAR16 *)(argv + argc + 1), *prev = NULL; > bool prev_sep = true; > > - for ( ; cmdsize > sizeof(*cmdline) && *cmdline; > + if ( cmdsize > sizeof(EFI_LOAD_OPTION) ) > + { > + /* > + * See include/efi/efiapi.h for more info about the following > + */ This should be a single line comment (also elsewhere). > + EFI_LOAD_OPTION *elo = (EFI_LOAD_OPTION*)cmdline; Missing blank before * (also elsewhere). And please make this a pointer to const (and wherever else this would be suitable). > + if ( elo->Attributes & LOAD_OPTION_ACTIVE ) Without any other (earlier) check, how can you reliably tell this being a pointer to EFI_LOAD_OPTION from it being the currently used one to CHAR16? Is the distinction perhaps UEFI version dependent? In the 2.3 spec I can't find any information on the layout of what ->LoadOptions points to. > + { > + UINT8 *_opts = (UINT8*)elo; > + UINTN _cmdsize = cmdsize; Leading underscores should only be used on file scope variables. > @@ -1074,6 +1102,7 @@ efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE > *SystemTable) > bool base_video = false; > char *option_str; > bool use_cfg_file; > + bool elo_active = false; Please add to one of the existing bool lines instead of introducing yet another one. > --- a/xen/include/efi/efiapi.h > +++ b/xen/include/efi/efiapi.h Generally additions to this file are expected to come from the gnu-efi package, which it was originally cloned from. I've just checked and see that 3.0.6 doesn't appear to have any of this (yet). In such a case at the very least you should match pre-existing style (e.g. indentation). Commonly, however, we introduce such private (and temporary) definitions into the source file that needs them (see e.g. the Apple Properties interface). > +typedef struct __packed _EFI_LOAD_OPTION { Is the __packed here really needed? I'd much rather uncomment the Description[] field (allowing you to get at it without using sizeof(the-whole-structure). Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |