
3 Jul
2018
3 Jul
'18
10:24 p.m.
From: Alexander Graf agraf@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