]> git.baikalelectronics.ru Git - kernel.git/commitdiff
efi: Clear EFI_RUNTIME_SERVICES rather than EFI_BOOT by "noefi" boot parameter
authorSatoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
Thu, 14 Feb 2013 00:12:52 +0000 (09:12 +0900)
committerH. Peter Anvin <hpa@linux.intel.com>
Thu, 14 Feb 2013 01:24:11 +0000 (17:24 -0800)
There was a serious problem in samsung-laptop that its platform driver is
designed to run under BIOS and running under EFI can cause the machine to
become bricked or can cause Machine Check Exceptions.

    Discussion about this problem:
    https://bugs.launchpad.net/ubuntu-cdimage/+bug/1040557
    https://bugzilla.kernel.org/show_bug.cgi?id=47121

    The patches to fix this problem:
    efi: Make 'efi_enabled' a function to query EFI facilities
    3d024a119703c43d58739e1bd8bbf726c6489bb2

    samsung-laptop: Disable on EFI hardware
    64412911024f4b059b4f4a9e3f96a5a07a1ba807

Unfortunately this problem comes back again if users specify "noefi" option.
This parameter clears EFI_BOOT and that driver continues to run even if running
under EFI. Refer to the document, this parameter should clear
EFI_RUNTIME_SERVICES instead.

Documentation/kernel-parameters.txt:
===============================================================================
...
noefi [X86] Disable EFI runtime services support.
...
===============================================================================

Documentation/x86/x86_64/uefi.txt:
===============================================================================
...
- If some or all EFI runtime services don't work, you can try following
  kernel command line parameters to turn off some or all EFI runtime
  services.
noefi turn off all EFI runtime services
...
===============================================================================

Signed-off-by: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
Link: http://lkml.kernel.org/r/511C2C04.2070108@jp.fujitsu.com
Cc: Matt Fleming <matt.fleming@intel.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
arch/x86/platform/efi/efi.c

index 77cf0090c0a3ef7890ea24d4e5e47d1d68e0b024..928bf837040a273f673e6bcb9b7f017284985a7b 100644 (file)
@@ -87,7 +87,7 @@ EXPORT_SYMBOL(efi_enabled);
 
 static int __init setup_noefi(char *arg)
 {
-       clear_bit(EFI_BOOT, &x86_efi_facility);
+       clear_bit(EFI_RUNTIME_SERVICES, &x86_efi_facility);
        return 0;
 }
 early_param("noefi", setup_noefi);