From aa0227bf539879f733119db0a1530aee9a4f3d9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vincent=20Stehl=C3=A9?= Date: Tue, 19 May 2026 15:56:41 +0200 Subject: [PATCH] RFC: chapter2: relax time services requirements MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Allow firmware to ignore time services timezone and daylight, and allow time and alarm to not persist across reset. This change break compatibility and therefore necessitates a change of the major version of this specification. Signed-off-by: Vincent Stehlé --- source/chapter2-uefi.rst | 38 ++++++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/source/chapter2-uefi.rst b/source/chapter2-uefi.rst index 243b1980..b5fc6c73 100644 --- a/source/chapter2-uefi.rst +++ b/source/chapter2-uefi.rst @@ -519,16 +519,16 @@ are required to be implemented during boot services and runtime services. - Before `ExitBootServices()` - After `ExitBootServices()` * - `GetTime` - - Required if RTC present. + - Required if RTC present. [#TimeNote]_ - Optional * - `SetTime` - - Required if RTC present. + - Required if RTC present. [#TimeNote]_ - Optional * - `GetWakeupTime` - - Required if wakeup supported. + - Required if wakeup supported. [#TimeNote]_ - Optional * - `SetWakeupTime` - - Required if wakeup supported. + - Required if wakeup supported. [#TimeNote]_ - Optional * - `SetVirtualAddressMap` - N/A @@ -561,6 +561,9 @@ are required to be implemented during boot services and runtime services. - Optional - Optional +.. [#TimeNote] See section :ref:`section-rtc` for relaxed requirements on time + services. + Runtime Device Mappings ----------------------- @@ -579,6 +582,8 @@ shall not be accessed by the OS. Only devices that explicitly support concurrent access by both firmware and an OS may be mapped at runtime by both firmware and the OS. +.. _section-rtc: + Real-time Clock (RTC) ^^^^^^^^^^^^^^^^^^^^^ @@ -594,6 +599,31 @@ However, if firmware does not support access to the RTC after `ExitBootServices()`, then `GetTime()` and `SetTime()` shall return `EFI_UNSUPPORTED` and the OS must use a device driver to control the RTC. +.. versionchanged:: 3.0.0 + +Some further aspects of the Services defined in :UEFI:`8.3` are made optional. +[#RelaxNote]_ + +.. [#RelaxNote] Those relaxations allow to support Time Services with a timer + instead of a real-time clock. + +Firmware may behave as if some fields of all the `EFI_TIME` structures had fixed +values, as listed in the following table: + +.. list-table:: Optional `EFI_TIME` structure fields fixed values + :widths: 50 50 + :header-rows: 1 + + * - `EFI_TIME` structure field + - Optional fixed value + * - `TimeZone` + - `EFI_UNSPECIFIED_TIMEZONE` + * - `Daylight` + - 0 + +Firmware is also not required to persist the current local time and date or the +system wakeup alarm clock time information across reset. + UEFI Reset and Shutdown -----------------------