Patchwork [Precise,12/12] samsung-laptop: Disable on EFI hardware

login
register
mail settings
Submitter Brad Figg
Date Feb. 1, 2013, 10:45 p.m.
Message ID <1359758752-21643-13-git-send-email-brad.figg@canonical.com>
Download mbox | patch
Permalink /patch/217616/
State New
Headers show

Comments

Brad Figg - Feb. 1, 2013, 10:45 p.m.
From: Matt Fleming <matt.fleming@intel.com>

BugLink: http://bugs.launchpad.net/bugs/1111689

It has been reported that running this driver on some Samsung laptops
with EFI can cause those machines to become bricked as detailed in the
following report,

	https://bugs.launchpad.net/ubuntu-cdimage/+bug/1040557

There have also been reports of this driver causing Machine Check
Exceptions on recent EFI-enabled Samsung laptops,

	https://bugzilla.kernel.org/show_bug.cgi?id=47121

So disable it if booting from EFI since this driver relies on
grovelling around in the BIOS memory map which isn't going to work.

Cc: Corentin Chary <corentincj@iksaif.net>
Cc: Matthew Garrett <mjg59@srcf.ucam.org>
Cc: Colin Ian King <colin.king@canonical.com>
Cc: Steve Langasek <steve.langasek@canonical.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
(backported from commit e0094244e41c4d0c7ad69920681972fc45d8ce34 upstream)
Signed-off-by: Brad Figg <brad.figg@canonical.com>
---
 drivers/platform/x86/samsung-laptop.c |    8 ++++++++
 1 file changed, 8 insertions(+)

Patch

diff --git a/drivers/platform/x86/samsung-laptop.c b/drivers/platform/x86/samsung-laptop.c
index 1782cea..ad6813f 100644
--- a/drivers/platform/x86/samsung-laptop.c
+++ b/drivers/platform/x86/samsung-laptop.c
@@ -22,6 +22,11 @@ 
 #include <linux/platform_device.h>
 #include <linux/rfkill.h>
 #include <linux/acpi.h>
+#include <linux/seq_file.h>
+#include <linux/debugfs.h>
+#include <linux/ctype.h>
+#include <linux/efi.h>
+#include <acpi/video.h>
 
 /*
  * This driver is needed because a number of Samsung laptops do not hook
@@ -833,6 +838,9 @@  static int __init samsung_init(void)
 		handle_backlight = false;
 #endif
 
+	if (efi_enabled(EFI_BOOT))
+		return -ENODEV;
+
 	if (!force && !dmi_check_system(samsung_dmi_table))
 		return -ENODEV;