At the Linaro Connect Face to Face meeting the requirements on runtime services were discussed. It was agreed to propose a change to UEFI that allows all EFI_RUNTIME_SERVICE functions to return EFI_UNSUPPORTED during runtime services. Rework the text to reflect those decisions and the UEFI ECR.
Signed-off-by: Grant Likely grant.likely@arm.com --- source/appendix-a-uefi-features.rst | 27 --------------------- source/chapter2-uefi.rst | 47 +++++++++++++++++++++++++++---------- source/index.rst | 2 ++ 3 files changed, 37 insertions(+), 39 deletions(-)
diff --git a/source/appendix-a-uefi-features.rst b/source/appendix-a-uefi-features.rst index 8777edd..bb74ca5 100644 --- a/source/appendix-a-uefi-features.rst +++ b/source/appendix-a-uefi-features.rst @@ -56,33 +56,6 @@ EFI_SET_MEM 7.5 EFI_CREATE_EVENT_EX 7.5 ========================================== ======
-.. _appendix-uefi-required-runtime: - -Required Runtime Services -************************* - -========================================== ====== -Service UEFI ยง -========================================== ====== -EFI_GET_TIME 8.3 -EFI_SET_TIME 8.3 -EFI_GET_WAKEUP_TIME 8.3 -EFI_SET_WAKEUP_TIME 8.3 -EFI_SET_VIRTUAL_ADDRESS_MAP 8.4 -EFI_CONVERT_POINTER 8.4 -EFI_GET_VARIABLE 8.2 -EFI_GET_NEXT_VARIABLE_NAME 8.2 -EFI_SET_VARIABLE 8.2 -EFI_GET_NEXT_HIGH_MONO_COUNT 8.5 -EFI_RESET_SYSTEM 8.5 -EFI_UPDATE_CAPSULE 8.5 -EFI_QUERY_CAPSULE_CAPABILITIES 8.5 -EFI_QUERY_VARIABLE_INFO 8.5 -========================================== ====== - -.. note:: EFI_GET_WAKEUP_TIME and EFI_SET_WAKEUP_TIME must be implemented, but - might simply return EFI_UNSUPPORTED. - Required UEFI Protocols ***********************
diff --git a/source/chapter2-uefi.rst b/source/chapter2-uefi.rst index a6b3ff7..cbf1529 100644 --- a/source/chapter2-uefi.rst +++ b/source/chapter2-uefi.rst @@ -110,20 +110,43 @@ requirements for Secure Boot. UEFI Runtime Services =====================
-UEFI Runtime Services exist after the call to ExitBootServices() and are +UEFI runtime services exist after the call to ExitBootServices() and are designed to provide a limited set of persistent services to the platform Operating System or hypervisor. - -The Runtime Services that are listed in :ref:`appendix-uefi-required-runtime` -must be provided. - -Runtime Exception Level ------------------------ - -On AArch64, UEFI 2.7 enables runtime services to be supported at either -EL1 or EL2, with appropriate virtual address mappings. -When called, subsequent runtime service calls must be from the same Exception -level. +Functions contained in EFI_RUNTIME_SERVICES are expected to be available +during both boot services and runtime services. +However, it isn't always practical for all EFI_RUNTIME_SERVICES functions +to be callable during runtime services due to hardware limitations. +If any EFI_RUNTIME_SERVICES functions are only available during boot services +then firmware shall provide the global `RuntimeServicesAvailable` variable to +indicate which functions are available during runtime services. +Functions that are not available during runtime services shall return +EFI_UNSUPPORTED. + +Table :numref:_uefi_runtime_service_requirements details which EFI_RUNTIME_SERVICES +are required to be implemented during boot services and runtime services. + +.. _uefi_runtime_service_requirements: +.. table:: EFI_RUNTIME_SERVICES Implementation Requirements + + ============================== ============= ================ + EFI_RUNTIME_SERVICES function Boot Services Runtime Services + ============================== ============= ================ + EFI_GET_TIME Optional Optional + EFI_SET_TIME Optional Optional + EFI_GET_WAKEUP_TIME Optional Optional + EFI_SET_WAKEUP_TIME Optional Optional + EFI_SET_VIRTUAL_ADDRESS_MAP N/A Required + EFI_CONVERT_POINTER N/A Required + EFI_GET_VARIABLE Required Optional + EFI_GET_NEXT_VARIABLE_NAME Required Optional + EFI_SET_VARIABLE Required Optional + EFI_GET_NEXT_HIGH_MONO_COUNT N/A Optional + EFI_RESET_SYSTEM Required Optional + EFI_UPDATE_CAPSULE Optional Optional + EFI_QUERY_CAPSULE_CAPABILITIES Optional Optional + EFI_QUERY_VARIABLE_INFO Optional Optional + ============================== ============= ================
Runtime Device Mappings ----------------------- diff --git a/source/index.rst b/source/index.rst index db47ce6..3045387 100644 --- a/source/index.rst +++ b/source/index.rst @@ -37,6 +37,8 @@ Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. - Add large note on implementation of runtime modification of non-volatile variables TBD TBD - Add AArch32 details + - Refactor Runtime Services text after face + to fact meeting at Linaro Connect YVR18 ================= ========= =============================================
.. toctree::