From: Ben Hutchings Subject: x86/efi: Autoload efivars Date: Mon, 18 Mar 2013 22:59:14 +0000 Bug-Debian: http://bugs.debian.org/703363 Forwarded: no 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. efi-pstore is similarly useful though less critical. 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. --- --- a/arch/x86/platform/efi/efi.c +++ b/arch/x86/platform/efi/efi.c @@ -42,6 +42,7 @@ #include #include #include +#include #include #include @@ -783,6 +784,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; --- a/drivers/firmware/efi/efivars.c +++ b/drivers/firmware/efi/efivars.c @@ -77,6 +77,7 @@ MODULE_AUTHOR("Matt Domsch