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.lik...@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::
-- 
2.13.0

_______________________________________________
boot-architecture mailing list
boot-architecture@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/boot-architecture

Reply via email to