efi/efivars: create efivars mount point when get variable services are available
PATCH 1/1 efi/efivars: create efivars mount point when get variable services are available
The efivars filesystem depends on GetVariable or GetNextVariable EFI runtime services. So the /sys/firmware/efi/efivars does not need to be created when GetVariable and GetNextVariable are not available.
It is useful for userland to determine the availability of efivars filesystem.
--- drivers/firmware/efi/efi.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-)
drivers/firmware/efi/efi.c +8 -5
@@ -404,11 +404,14 @@ static int __init efisubsys_init(void)if (error) goto err_remove_group; -/* and the standard mountpoint for efivarfs */ - error =sysfs_create_mount_point (efi_kobj,"efivars" ); -if (error) { -pr_err ("efivars: Subsystem registration failed.\n" ); - goto err_remove_group; +if (efi_rt_services_supported (EFI_RT_SUPPORTED_GET_VARIABLE | +EFI_RT_SUPPORTED_GET_NEXT_VARIABLE_NAME )) { +/* and the standard mountpoint for efivarfs */ + error =sysfs_create_mount_point (efi_kobj,"efivars" ); +if (error) { +pr_err ("efivars: Subsystem registration failed.\n" ); + goto err_remove_group; + } }if (efi_enabled (EFI_DBG ) &&efi_enabled (EFI_PRESERVE_BS_REGIONS ))
Signature · 1 line
2.16.4
Ard Biesheuvel
maintainerQuoted 11 lines · Chun-Yi
The efivars filesystem depends on GetVariable or GetNextVariable EFI runtime services. So the
/sys/firmware/efi/efivarsdoes not need to be created when GetVariable and GetNextVariable are not available.It is useful for userland to determine the availability of efivars filesystem.
Cc Ilias Apalodimas <[email protected]>Cc Ard Biesheuvel <[email protected]>Signed-off-by "Lee, Chun-Yi" <[email protected]>
Hello Joey,
This is not the right check to perform here: the efivarfs code could be instantiated using a different efivars abstraction, so whether the RT services are implemented is not entirely relevant.
Please look at commit f88814cc2578c121e6edef686365036db72af0ed ("efi/efivars: Expose RT service availability via efivars abstraction") for an explanation of the underlying issue, and update your patch accordingly.
Quoted 31 lines
--- drivers/firmware/efi/efi.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-)drivers/firmware/efi/efi.c +8
-6@@ -404,11 +404,14 @@ static int __init efisubsys_init(void)if (error) goto err_remove_group; -/* and the standard mountpoint for efivarfs */ - error =sysfs_create_mount_point (efi_kobj,"efivars" ); -if (error) { -pr_err ("efivars: Subsystem registration failed.\n" ); - goto err_remove_group; +if (efi_rt_services_supported (EFI_RT_SUPPORTED_GET_VARIABLE | +EFI_RT_SUPPORTED_GET_NEXT_VARIABLE_NAME )) { +/* and the standard mountpoint for efivarfs */ + error =sysfs_create_mount_point (efi_kobj,"efivars" ); +if (error) { +pr_err ("efivars: Subsystem registration failed.\n" ); + goto err_remove_group; + } }if (efi_enabled (EFI_DBG ) &&efi_enabled (EFI_PRESERVE_BS_REGIONS )) --2.16.4
Hi Ard,
Quoted 15 lines · Ard Biesheuvel
Quoted 11 lines · Chun-Yi
The efivars filesystem depends on GetVariable or GetNextVariable EFI runtime services. So the
/sys/firmware/efi/efivarsdoes not need to be created when GetVariable and GetNextVariable are not available.It is useful for userland to determine the availability of efivars filesystem.
Cc Ilias Apalodimas <[email protected]>Cc Ard Biesheuvel <[email protected]>Signed-off-by "Lee, Chun-Yi" <[email protected]>Hello Joey,
Quoted 9 lines
This is not the right check to perform here: the efivarfs code could be instantiated using a different efivars abstraction, so whether the RT services are implemented is not entirely relevant.
Please look at commit
f88814cc2578c121e6edef686365036db72af0ed("efi/efivars: Expose RT service availability via efivars abstraction") for an explanation of the underlying issue, and update your patch accordingly.
Thanks for youre review! I will look at f88814cc257 and change my patch for v2.
Joey Lee
Quoted 32 lines
Quoted 32 lines
--- drivers/firmware/efi/efi.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-)drivers/firmware/efi/efi.c +8
-6@@ -404,11 +404,14 @@ static int __init efisubsys_init(void)if (error) goto err_remove_group; -/* and the standard mountpoint for efivarfs */ - error =sysfs_create_mount_point (efi_kobj,"efivars" ); -if (error) { -pr_err ("efivars: Subsystem registration failed.\n" ); - goto err_remove_group; +if (efi_rt_services_supported (EFI_RT_SUPPORTED_GET_VARIABLE | +EFI_RT_SUPPORTED_GET_NEXT_VARIABLE_NAME )) { +/* and the standard mountpoint for efivarfs */ + error =sysfs_create_mount_point (efi_kobj,"efivars" ); +if (error) { +pr_err ("efivars: Subsystem registration failed.\n" ); + goto err_remove_group; + } }if (efi_enabled (EFI_DBG ) &&efi_enabled (EFI_PRESERVE_BS_REGIONS )) --2.16.4