Machine Check Exception on Samsung NP900X3C on UEFI boot

Note: As of Linux 3.7.6 the samsung-laptop no longer loads when booting in UEFI mode on Samsung hardware.

I got a beautiful new Samsung NP900X3C ultrabook this week. It came with Windows 7, which I only used to go download the Arch Linux ISO (ok fine, I also checked my email). As this machine is very new it comes with UEFI (the BIOS replacement). I’m actually not sure what the technical benefits of booting in UEFI mode are, but UEFI is the future so there we go.

After a few hours of fiddling I now have a pure UEFI + GPT boot, with / on a 128GB SSD with btrfs + compress=lzo. Zoom zoom zoom!

Rough edges

All is not well, though. The hardware is amazing, but Linux support is still a bit raw on this hardware. Booting in UEFI mode seems to have some rough edges with kernels I’ve tested (3.6.10 and 3.7.1). In particular, the samsung-laptop kernel module (used for rfkill, keyboard backlight, etc) apparently touches some memory areas which are off limits and causes a kernel panic.

The solution is to blacklist the samsung-laptop kernel module. /etc/modprobe.d/samsung-laptop.conf:

# See: https://bugzilla.kernel.org/show_bug.cgi?id=47121
blacklist samsung_laptop

It seems I’m not alone; lots of people are having seemingly-random kernel panics on this hardware when booting Linux in UEFI mode. There’s an upstream bugzilla entry here.

10 thoughts on “Machine Check Exception on Samsung NP900X3C on UEFI boot

  1. Do you mean the samsung-laptop package from the “Linux On My Samsung” project? Or is there another Kernel module of the same Name? The package from “Linux On My Samsung” didn’t work for me on my Samsung Series 7 chronos. I deinstalled it completely, and yet the Kernel Panic Machine Check Exception errors occured regularly. They disappeared only when I selected “UEFI OS” boot mode in the BIOS, instead to “UEFI and CSM OS” (which was necessary to install Ubuntu). Looks like UEFI sucks..

    1. Hmm, I was talking about the mainline kernel’s samsung-laptop module:

      $ find /usr/lib/modules -iname "*samsung-laptop*" 
      /usr/lib/modules/3.6.10-1-ARCH/kernel/drivers/platform/x86/samsung-laptop.ko.gz
      /usr/lib/modules/3.7.1-3-ck/kernel/drivers/platform/x86/samsung-laptop.ko.gz

      … so I’m not sure what Linux on my Samsung provides (isn’t it just a userland program?). I guess UEFI will be better eventually, but there are still some bugs (at least on Samsung hardware!).

  2. There are some problems with UEFI management in the core kernel and the samsung_laptop module:

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

    When booting in “UEFI only”, the module is not loaded, while it is loaded (if not blacklisted) when booting in “UEFI and CMS OS”.
    With the module loaded, it often occurs the kernel panic, while blacklistening it solves the problem (and deactivates some useful features).

    Problem is, when using UEFI only it could occur the infamous bug

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

    also if it is mostly relevant to usb boot

    1. Ouch, a bricked laptop from booting an Ubuntu Live USB? Ahhhh! That sucks. I’m using Arch, but UEFI is a pain in the ass still it seems. Maybe I should go back to BIOS boot…

    1. I booted the Arch Linux ISO in UEFI mode. At the boot prompt I specified modprobe.blacklist=samsung-laptop in the kernel cmdline. Turning UEFI off probably would have been the smart thing to do, but I just figured all these issues would be fixed eventually, and I don’t mind being a bit on the bleeding edge. At the time I had no idea that other Samsungs were being bricked or I wouldn’t have even tried!

  3. Hi Alan,

    I’m considering purchasing this notebook. Would you mind doing a quick writeup on what setup you did on bios side to get Arch on this laptop? The internet is rife with users reporting issues with some Samsung laptops getting bricked upon booting into Linux via USB (which is probably how most of us would install a distro).

    Thanks.

Leave a Reply

Your email address will not be published. Required fields are marked *