diff mbox series

[1/1] fwts-test: fwts-test: EFI_RT_PROPERTIES_TABLE

Message ID 20201014184240.23998-1-xypron.glpk@gmx.de
State Superseded
Headers show
Series [1/1] fwts-test: fwts-test: EFI_RT_PROPERTIES_TABLE | expand

Commit Message

Heinrich Schuchardt Oct. 14, 2020, 6:42 p.m. UTC
The UEFI 2.8 specification introduced the RuntimeServicesSupported EFI
variable. In the UEFI 2.8 specification (Errata A) this variable was
marked invalid and replaced by the EFI_RT_PROPERTIES_TABLE configuration
table.

If a RuntimeServicesSupported variable is not found this does not indicate
that runtime services are not avaiable. As of v5.9 the efi_test driver of
the Linux kernel does not provide access to the EFI_RT_PROPERTIES_TABLE
configuration table. So lets assume that all services are implemented. If
they are not supported they will signal this by returning EFI_UNSUPPORTED.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
---
 src/lib/src/fwts_uefi.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

--
2.28.0

Comments

Alex Hung Oct. 14, 2020, 7:09 p.m. UTC | #1
Ivan should be able to comment on the changes, but the subject is not
very informative.

Can it be "lib: fwts_uefi: update returns as in spec 2.8a ... " or
something?

On 2020-10-14 12:42 p.m., Heinrich Schuchardt wrote:
> The UEFI 2.8 specification introduced the RuntimeServicesSupported EFI
> variable. In the UEFI 2.8 specification (Errata A) this variable was
> marked invalid and replaced by the EFI_RT_PROPERTIES_TABLE configuration
> table.
> 
> If a RuntimeServicesSupported variable is not found this does not indicate
> that runtime services are not avaiable. Asimilars of v5.9 the efi_test driver of
> the Linux kernel does not provide access to the EFI_RT_PROPERTIES_TABLE
> configuration table. So lets assume that all services are implemented. If
> they are not supported they will signal this by returning EFI_UNSUPPORTED.
> 
> Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
> ---
>  src/lib/src/fwts_uefi.c | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/src/lib/src/fwts_uefi.c b/src/lib/src/fwts_uefi.c
> index 0fb6b799..aeddb153 100644
> --- a/src/lib/src/fwts_uefi.c
> +++ b/src/lib/src/fwts_uefi.c
> @@ -543,6 +543,9 @@ bool fwts_uefi_efivars_iface_exist(void)
>   *  fwts_uefi_rt_support_status_get()
>   *	get the status of runtime service support and the value of
>   *	the RuntimeServicesSupported variable
> + *
> + *  This variable only exists in UEFI 2.8 but not in UEFI 2.8 (Errata A) ff.
> + *  TODO: evaluate the EFI_RT_PROPERTIES_TABLE configuration table.
>   */
>  void fwts_uefi_rt_support_status_get(int fd, bool *getvar_supported, uint32_t *var_rtsupported)
>  {
> @@ -569,11 +572,8 @@ void fwts_uefi_rt_support_status_get(int fd, bool *getvar_supported, uint32_t *v
> 
>  	ioret = ioctl(fd, EFI_RUNTIME_GET_VARIABLE, &getvariable);
>  	if (ioret == -1) {
> -		if (status == EFI_NOT_FOUND) {
> -			*getvar_supported = true;
> -		} else {
> -			*getvar_supported = false;
> -		}
> +		*getvar_supported = true;
> +		*var_rtsupported = 0x3fff;
>  		return;
>  	}
> 
> --
> 2.28.0
>
diff mbox series

Patch

diff --git a/src/lib/src/fwts_uefi.c b/src/lib/src/fwts_uefi.c
index 0fb6b799..aeddb153 100644
--- a/src/lib/src/fwts_uefi.c
+++ b/src/lib/src/fwts_uefi.c
@@ -543,6 +543,9 @@  bool fwts_uefi_efivars_iface_exist(void)
  *  fwts_uefi_rt_support_status_get()
  *	get the status of runtime service support and the value of
  *	the RuntimeServicesSupported variable
+ *
+ *  This variable only exists in UEFI 2.8 but not in UEFI 2.8 (Errata A) ff.
+ *  TODO: evaluate the EFI_RT_PROPERTIES_TABLE configuration table.
  */
 void fwts_uefi_rt_support_status_get(int fd, bool *getvar_supported, uint32_t *var_rtsupported)
 {
@@ -569,11 +572,8 @@  void fwts_uefi_rt_support_status_get(int fd, bool *getvar_supported, uint32_t *v

 	ioret = ioctl(fd, EFI_RUNTIME_GET_VARIABLE, &getvariable);
 	if (ioret == -1) {
-		if (status == EFI_NOT_FOUND) {
-			*getvar_supported = true;
-		} else {
-			*getvar_supported = false;
-		}
+		*getvar_supported = true;
+		*var_rtsupported = 0x3fff;
 		return;
 	}