[U-Boot] efi_loader: runtime services implementation broken?

Mark Kettenis mark.kettenis at xs4all.nl
Tue Jul 3 20:24:25 UTC 2018


> From: Alexander Graf <agraf at suse.de>
> Date: Tue, 3 Jul 2018 22:08:05 +0200
> 
> It's only ever been tested on ARM, so maybe the x86 Linux EFI stub
> behaves differently. If set_virtual_address_map needs to be intact after
> exiting boot services, we need to move all of the relocation information
> and functionality into runtime sections as well.

The OpenBSD EFI bootloader calls ExitBootServices() before handing
control to the kernel.  The OpenBSD/arm64 kernel then calls
SetVirtualAddressmap().  This works, but probably because it happens
very early when the kernel is only using memory inside a 32M block
that has been allocated by the bootloader.

So yes,  I think that functionality needs to marked as __efi_runtime.

Cheers,

Mark


More information about the U-Boot mailing list