[U-Boot] [PATCH 08/11] efi_selftest: allow to select a single test for exexution

Alexander Graf agraf at suse.de
Mon Oct 9 11:09:47 UTC 2017



On 09.10.17 12:54, Heinrich Schuchardt wrote:
> On 10/09/2017 08:57 AM, Alexander Graf wrote:
>>
>>
>> On 09.10.17 08:14, Heinrich Schuchardt wrote:
>>> On 10/09/2017 06:46 AM, Alexander Graf wrote:
>>>>
>>>>
>>>> On 08.10.17 06:57, Heinrich Schuchardt wrote:
>>>>> The second argument of bootefi is passed as a configuration
>>>>> table to the selftest application. It is used to select
>>>>> a single test to be executed.
>>>>>
>>>>> Tests get an on_request property. If this property is set
>>>>> the tests are only executed if explicitly requested.
>>>>>
>>>>> A new command 'bootefi selftest list' is added that allows to list
>>>>> all tests.
>>>>>
>>>>> The invocation of efi_selftest is changed to reflect that
>>>>> bootefi selftest list will call the Exit bootservice.
>>>>>
>>>>> Signed-off-by: Heinrich Schuchardt <xypron.glpk at gmx.de>
>>>>
>>>> Wouldn't it make more sense to just pass "bootargs" to the EFI payload
>>>> as command line arguments?
>>>>
>>>> We could then just
>>>>
>>>>   U-Boot# setenv bootargs list
>>>>   U-Boot# bootefi selftest
>>>>
>>>> to list the available self tests. Same for selecting them.
>>>
>>> Why bootargs?
>>>
>>
>> Because bootargs is the variable that "bootm" pushes into a payload as
>> command line arguments.
>>
>>>>
>>>> That way we would also be able to directly load Linux as EFI binary and
>>>> pass command line arguments to it without jumping through fdt patching
>>>> hoops.
>>>
>>> Does the Linux EFI stub or grub.efi have a capability to receive the
>>> command line?
>>
>> Linux does:
>>
>>
>> https://github.com/torvalds/linux/blob/master/drivers/firmware/efi/libstub/efi-stub-helper.c#L773
>>
>> I don't think grub implements it today, but I don't see why it should.
>> Any UEFI application that expects to be executed from the UEFI Shell
>> certainly interprets the passed in command line.
>>
>>
>> Alex
>>
> 
> Thanks for pointing me at fields LoadOptionsSize and LoadOptions in the
> EFI_Loaded_Image_Protocol. Yes it makes sense to use this mechanism.
> 
> I guess efi_setup_loaded_image would be a good place to set the fields.

I'm not sure about that. efi_setup_loaded_image gets called from payload
context too. Imagine a bootefi on a UEFI Shell which then runs Linux.
That Linux binary should not see our bootargs arguments.

I think it really belongs in do_bootefi_exec.


Alex


More information about the U-Boot mailing list