Re: [PATCH] x86/efi: autoload efivars

2014-07-11 Thread Ard Biesheuvel
On 9 July 2014 08:40, joeyli j...@suse.com wrote:
 On Tue, Jul 08, 2014 at 01:19:42PM +0100, Ben Hutchings wrote:
 On Tue, 2014-07-08 at 11:14 +0100, Matt Fleming wrote:
  On Tue, 08 Jul, at 11:00:58AM, Lee, Chun-Yi wrote:
 [...]
   --- a/arch/x86/platform/efi/efi.c
   +++ b/arch/x86/platform/efi/efi.c
   @@ -44,6 +44,7 @@
#include linux/io.h
#include linux/reboot.h
#include linux/bcd.h
   +#include linux/platform_device.h
  
#include asm/setup.h
#include asm/efi.h
   @@ -780,6 +781,20 @@ void __init efi_late_init(void)
 efi_bgrt_init();
}
  
   +#ifdef CONFIG_EFI_VARS_MODULE
   +static int __init efi_load_efivars(void)
   +{
   + struct platform_device *pdev;
   +
   + if (!efi_enabled(EFI_RUNTIME_SERVICES))
   + return 0;
   +
   + pdev = platform_device_register_simple(efivars, 0, NULL, 0);
   + return IS_ERR(pdev) ? PTR_ERR(pdev) : 0;
   +}
   +device_initcall(efi_load_efivars);
   +#endif
   +
 
  Could this be moved to drivers/firmware/efi/efi.c? That way the arm64
  folks could benefit from it too.

 It seems like that should work now that efi_enabled() is not specific to
 x86.

 Ben.


 Thanks for Matt and Ban's review, I will move platform device register code to
 drivers/firmware/efi/efi.c and send version 2 patch.


Hi all,

I tested the version that is in Matt's -next now and it works fine on arm64.

-- 
Ard.
--
To unsubscribe from this list: send the line unsubscribe linux-efi in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] x86/efi: autoload efivars

2014-07-11 Thread Matt Fleming
On Fri, 11 Jul, at 09:47:23AM, Ard Biesheuvel wrote:
 
 Hi all,
 
 I tested the version that is in Matt's -next now and it works fine on arm64.

Great, thanks Ard. May I add your Tested-by to the patch?

-- 
Matt Fleming, Intel Open Source Technology Center
--
To unsubscribe from this list: send the line unsubscribe linux-efi in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] x86/efi: autoload efivars

2014-07-11 Thread Ard Biesheuvel
On 11 July 2014 09:52, Matt Fleming m...@console-pimps.org wrote:
 On Fri, 11 Jul, at 09:47:23AM, Ard Biesheuvel wrote:

 Hi all,

 I tested the version that is in Matt's -next now and it works fine on arm64.

 Great, thanks Ard. May I add your Tested-by to the patch?


Sure,

Tested-by: Ard Biesheuvel ard.biesheu...@linaro.org
--
To unsubscribe from this list: send the line unsubscribe linux-efi in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] x86/efi: autoload efivars

2014-07-09 Thread joeyli
On Tue, Jul 08, 2014 at 01:19:42PM +0100, Ben Hutchings wrote:
 On Tue, 2014-07-08 at 11:14 +0100, Matt Fleming wrote:
  On Tue, 08 Jul, at 11:00:58AM, Lee, Chun-Yi wrote:
 [...]
   --- a/arch/x86/platform/efi/efi.c
   +++ b/arch/x86/platform/efi/efi.c
   @@ -44,6 +44,7 @@
#include linux/io.h
#include linux/reboot.h
#include linux/bcd.h
   +#include linux/platform_device.h

#include asm/setup.h
#include asm/efi.h
   @@ -780,6 +781,20 @@ void __init efi_late_init(void)
 efi_bgrt_init();
}

   +#ifdef CONFIG_EFI_VARS_MODULE
   +static int __init efi_load_efivars(void)
   +{
   + struct platform_device *pdev;
   +
   + if (!efi_enabled(EFI_RUNTIME_SERVICES))
   + return 0;
   +
   + pdev = platform_device_register_simple(efivars, 0, NULL, 0);
   + return IS_ERR(pdev) ? PTR_ERR(pdev) : 0;
   +}
   +device_initcall(efi_load_efivars);
   +#endif
   +
  
  Could this be moved to drivers/firmware/efi/efi.c? That way the arm64
  folks could benefit from it too.
 
 It seems like that should work now that efi_enabled() is not specific to
 x86.
 
 Ben.
 

Thanks for Matt and Ban's review, I will move platform device register code to
drivers/firmware/efi/efi.c and send version 2 patch.

Joey Lee

void __init efi_set_executable(efi_memory_desc_t *md, bool executable)
{
 u64 addr, npages;
   diff --git a/drivers/firmware/efi/efivars.c 
   b/drivers/firmware/efi/efivars.c
   index 463c565..f256ecd 100644
   --- a/drivers/firmware/efi/efivars.c
   +++ b/drivers/firmware/efi/efivars.c
   @@ -78,6 +78,7 @@ MODULE_AUTHOR(Matt Domsch matt_dom...@dell.com);
MODULE_DESCRIPTION(sysfs interface to EFI Variables);
MODULE_LICENSE(GPL);
MODULE_VERSION(EFIVARS_VERSION);
   +MODULE_ALIAS(platform:efivars);

LIST_HEAD(efivar_sysfs_list);
EXPORT_SYMBOL_GPL(efivar_sysfs_list);
   -- 
   1.8.4.5
   
   --
   To unsubscribe from this list: send the line unsubscribe linux-efi in
   the body of a message to majord...@vger.kernel.org
   More majordomo info at  http://vger.kernel.org/majordomo-info.html
  
 
 -- 
 Ben Hutchings
 Any smoothly functioning technology is indistinguishable from a rigged demo.


--
To unsubscribe from this list: send the line unsubscribe linux-efi in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] x86/efi: autoload efivars

2014-07-08 Thread Ben Hutchings
On Tue, 2014-07-08 at 11:14 +0100, Matt Fleming wrote:
 On Tue, 08 Jul, at 11:00:58AM, Lee, Chun-Yi wrote:
[...]
  --- a/arch/x86/platform/efi/efi.c
  +++ b/arch/x86/platform/efi/efi.c
  @@ -44,6 +44,7 @@
   #include linux/io.h
   #include linux/reboot.h
   #include linux/bcd.h
  +#include linux/platform_device.h
   
   #include asm/setup.h
   #include asm/efi.h
  @@ -780,6 +781,20 @@ void __init efi_late_init(void)
  efi_bgrt_init();
   }
   
  +#ifdef CONFIG_EFI_VARS_MODULE
  +static int __init efi_load_efivars(void)
  +{
  +   struct platform_device *pdev;
  +
  +   if (!efi_enabled(EFI_RUNTIME_SERVICES))
  +   return 0;
  +
  +   pdev = platform_device_register_simple(efivars, 0, NULL, 0);
  +   return IS_ERR(pdev) ? PTR_ERR(pdev) : 0;
  +}
  +device_initcall(efi_load_efivars);
  +#endif
  +
 
 Could this be moved to drivers/firmware/efi/efi.c? That way the arm64
 folks could benefit from it too.

It seems like that should work now that efi_enabled() is not specific to
x86.

Ben.

   void __init efi_set_executable(efi_memory_desc_t *md, bool executable)
   {
  u64 addr, npages;
  diff --git a/drivers/firmware/efi/efivars.c b/drivers/firmware/efi/efivars.c
  index 463c565..f256ecd 100644
  --- a/drivers/firmware/efi/efivars.c
  +++ b/drivers/firmware/efi/efivars.c
  @@ -78,6 +78,7 @@ MODULE_AUTHOR(Matt Domsch matt_dom...@dell.com);
   MODULE_DESCRIPTION(sysfs interface to EFI Variables);
   MODULE_LICENSE(GPL);
   MODULE_VERSION(EFIVARS_VERSION);
  +MODULE_ALIAS(platform:efivars);
   
   LIST_HEAD(efivar_sysfs_list);
   EXPORT_SYMBOL_GPL(efivar_sysfs_list);
  -- 
  1.8.4.5
  
  --
  To unsubscribe from this list: send the line unsubscribe linux-efi in
  the body of a message to majord...@vger.kernel.org
  More majordomo info at  http://vger.kernel.org/majordomo-info.html
 

-- 
Ben Hutchings
Any smoothly functioning technology is indistinguishable from a rigged demo.


signature.asc
Description: This is a digitally signed message part


[PATCH] x86/efi: autoload efivars

2014-07-07 Thread Lee, Chun-Yi
The original patch is from Ben Hutchings's contribution to debian
kernel. Got Ben's permission to remove the code of efi-pstore.c and
then patch to linux-efi:
https://github.com/BlankOn/linux-debian/blob/master/debian/patches/features/all/efi-autoload-efivars.patch

efivars is generally useful to have on EFI systems, and in some cases
it may be impossible to load it after a kernel upgrade in order to
complete a boot loader update. At the same time we don't want to waste
memory on non-EFI systems by making them built-in.

Instead, give them module aliases as if they are platform drivers, and
register a corresponding platform device whenever EFI runtime services
are available.  This should trigger udev to load them.

Cc: Ben Hutchings b...@decadent.org.uk
Cc: Matt Fleming matt.flem...@intel.com
Signed-off-by: Lee, Chun-Yi j...@suse.com
---
 arch/x86/platform/efi/efi.c| 15 +++
 drivers/firmware/efi/efivars.c |  1 +
 2 files changed, 16 insertions(+)

diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c
index 87fc96b..c295c08 100644
--- a/arch/x86/platform/efi/efi.c
+++ b/arch/x86/platform/efi/efi.c
@@ -44,6 +44,7 @@
 #include linux/io.h
 #include linux/reboot.h
 #include linux/bcd.h
+#include linux/platform_device.h
 
 #include asm/setup.h
 #include asm/efi.h
@@ -780,6 +781,20 @@ void __init efi_late_init(void)
efi_bgrt_init();
 }
 
+#ifdef CONFIG_EFI_VARS_MODULE
+static int __init efi_load_efivars(void)
+{
+   struct platform_device *pdev;
+
+   if (!efi_enabled(EFI_RUNTIME_SERVICES))
+   return 0;
+
+   pdev = platform_device_register_simple(efivars, 0, NULL, 0);
+   return IS_ERR(pdev) ? PTR_ERR(pdev) : 0;
+}
+device_initcall(efi_load_efivars);
+#endif
+
 void __init efi_set_executable(efi_memory_desc_t *md, bool executable)
 {
u64 addr, npages;
diff --git a/drivers/firmware/efi/efivars.c b/drivers/firmware/efi/efivars.c
index 463c565..f256ecd 100644
--- a/drivers/firmware/efi/efivars.c
+++ b/drivers/firmware/efi/efivars.c
@@ -78,6 +78,7 @@ MODULE_AUTHOR(Matt Domsch matt_dom...@dell.com);
 MODULE_DESCRIPTION(sysfs interface to EFI Variables);
 MODULE_LICENSE(GPL);
 MODULE_VERSION(EFIVARS_VERSION);
+MODULE_ALIAS(platform:efivars);
 
 LIST_HEAD(efivar_sysfs_list);
 EXPORT_SYMBOL_GPL(efivar_sysfs_list);
-- 
1.8.4.5

--
To unsubscribe from this list: send the line unsubscribe linux-efi in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html