-
Notifications
You must be signed in to change notification settings - Fork 37
All runtime services optional after ExitBootServices() #141
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Add a link to the UEFI specification runtime properties table section to ease navigation. Signed-off-by: Vincent Stehlé <[email protected]>
We are requiring two remaining runtime services at runtime: SetVirtualAddressMap() and ConvertPointer(). Those two services are not strictly required to boot an OS such as Linux for example (see efi=novamap), and their implementation in the firmware can be tricky. Besides, the UEFI specification allows to not implement those services at runtime since version 2.8. Relax our requirements by making those two services explicitly optional at runtime, to go back to what the UEFI specification does now. Signed-off-by: Vincent Stehlé <[email protected]>
Linux may boot with SetVirtualAddressMap(), ConvertPointer() but we cannot expect all OSes to be the same. |
Action for this pull request after the EBBR call of Apr 23: investigate a bit more.
|
I have concerns about this. There should be no reason to relax UEFI rules further. If runtime services are not wanted by the OS, the OS is already able to simply never call into them. What is driving this proposed change? |
What's Windows got to do with EBBR? EBBR is about device tree, so not sure how ACPI or Windows comes in here? |
Hi @glikely,
This means that because UEFI has moved, EBBR is currently stricter than UEFI on that topic (!)
Allowing a firmware to not implement those two services is interesting:
Let me know if any of this does not make sense. |
Hi @nullr0ute, |
Gotcha. That makes sense. Since the entire column is all optionals now, should the column be removed entirely from EBBR? |
Actually, no, that doesn't make sense. EBBR should be stricter that UEFI on this point. Part of the intent of EBBR is to lay out a minimum level of functionality that allows a 3rd party OS to mange the platform. The options runtime services were made optional early on to pragmatically enable platforms, but it was never a good solution and the early intent was to start tightening the requirements as U-Boot an other implementations became more mature. |
@vstehle I am not sure about this. SetVariableRT has proven problematic over the years -- e.g capsule update on disk support & distro installers need it |
Hi @apalos, thanks for having a look. Currently, Is your comment more about the general direction, please? |
Here are some preliminary results of investigations:
|
With this change we would have no more runtime service required after ExitBootServices().
Our requirement dates back from before UEFI version 2.8, which introduced the RT properties table and allowed the UNSUPPORTED return code for the runtime services.
This would be better aligned to what UEFI requires now. Also, making sure that we can build compliant systems with zero service at runtime is interesting for safety and realtime.