[U-Boot] [RFC] efi_loader: Add test to boot OpenBSD's efi bootloader
Rob Clark
robdclark at gmail.com
Sun Aug 6 19:06:17 UTC 2017
On Sun, Aug 6, 2017 at 2:54 PM, Mark Kettenis <mark.kettenis at xs4all.nl> wrote:
>> From: Rob Clark <robdclark at gmail.com>
>> Date: Sun, 6 Aug 2017 12:10:28 -0400
>>
>> Signed-off-by: Rob Clark <robdclark at gmail.com>
>> ---
>> Kinda works, but since we don't have an 'exit' command like grub, we
>> have to reboot, which leaves the "board" in a bad state (I guess,
>> since the next test fails). I haven't tackled the travis bits to get
>> travis to download OpenBSD's bootloader, or other little details like
>> that.
>
> What does the grub "exit" command do? Simply call EFI_BOOT_SERVICE.Exit()?
> Wouldn't be too difficult for me to add a command that does this.
Yeah, I think just calls BS->Exit().. that would be quite useful.
BR,
-R
> The OpenBSD bootloader currently just executes an illegal instruction
> as EFI_RUNTIME_SERVICES.ResetSystem() didn't work at the time I wrote
> the code. Perhaps I should revisit that issue now.
>
>> test/py/tests/test_efi_loader.py | 19 +++++++++++++++++++
>> 1 file changed, 19 insertions(+)
>>
>> diff --git a/test/py/tests/test_efi_loader.py b/test/py/tests/test_efi_loader.py
>> index 5d7f5dbfb2..376f6442a3 100644
>> --- a/test/py/tests/test_efi_loader.py
>> +++ b/test/py/tests/test_efi_loader.py
>> @@ -193,3 +193,22 @@ def test_efi_grub_net(u_boot_console):
>>
>> # And give us our U-Boot prompt back
>> u_boot_console.run_command('')
>> +
>> + at pytest.mark.buildconfigspec('cmd_bootefi')
>> +def test_efi_openbsd_net(u_boot_console):
>> + """Run OpenBSD's bootloader via TFTP.
>> +
>> + The bootaa64.efi file is downloaded from the TFTP server and
>> + gets executed.
>> + """
>> +
>> + addr = fetch_tftp_file(u_boot_console, 'env__efi_loader_openbsd_file')
>> +
>> + u_boot_console.run_command('bootefi %x' % addr, wait_for_prompt=False)
>> +
>> + # Check that bootloader loads properly:
>> + u_boot_console.wait_for('boot>')
>> +
>> + # There is no exit, but there is a reboot cmd.. maybe we need to do
>> + # more than this to get u-boot running again??
>> + u_boot_console.run_command('reboot', wait_for_prompt=False, wait_for_echo=False)
>> --
>> 2.13.0
>>
>> _______________________________________________
>> U-Boot mailing list
>> U-Boot at lists.denx.de
>> https://lists.denx.de/listinfo/u-boot
>>
>>
More information about the U-Boot
mailing list