
On 5/22/19 5:15 AM, AKASHI Takahiro wrote:
Alex,
It seems to me that the current efi_runtime_detach() has two meanings:
- changes relating to the transition to virtual address mode
- changes relating to exiting boot services
In the current implementation, efi_runtime_detach() is called from efi_set_virtual_address_map() as those two purposes are apparently the same. For instance, however, systab.con_in/out/std_err/boottime are set to NULL in exit_boot_services() as well. Logically, efi_get_variable() won't work as U-Boot environment data can be potentially re-used at any time after exit_boot_services(). The only meaningful change is to invalidate efi_set_virtual_address_map().
So I believe that we should distinguish the two purposes and make appropriate changes in efi_set_virtual_address_map() and and exit_boot_services() respectively.
This will be crucial particularly when I will add runtime variable support using "cache".
Any thoughts?
Please, consider this pending patch from Alex: https://patchwork.ozlabs.org/patch/1054074/ efi_loader: Patch non-runtime code out at ExitBootServices already
Unfortunately Travis CI is still failing with the patch and QEMU arm64 does not reboot.
Best regards
Heinrich
Thanks, -Takahiro Akashi