Comment 629 for bug 1734147

johnmario (johnmario) wrote :

Fix: The issue was fixed in kernel version 4.13.0-21 by configuring the kernel so it is not compiled with Intel SPI support. But previous affected machines still suffered from a broken BIOS.

Repair: If you still can boot into Ubuntu, you can recover your BIOS with the following steps:

1. Boot into Ubuntu
2. Download http://people.canonical.com/~ypwong/lp1734147/linux-image-4.15.0-041500rc6-generic_4.15.0-041500rc6.201712312330+20170103+1_amd64.deb
3. Install the downloaded package:
  $ sudo dpkg -i linux-image-4.15.0-041500rc6-generic_4.15.0-041500rc6.201712312330+20170103+1_amd64.deb
4. Make sure the kernel is installed without any error. Once installed, reboot.
5. At grub, choose the newly installed kernel. You can choose the "recovery" mode.
6. Reboot and go to BIOS settings to confirm your BIOS has been recovered.
7. In case your BIOS is not recovered, reboot to the new kernel, then reboot *once again* to the new kernel, do not enter BIOS settings before the reboot. After the second reboot, check BIOS.
8. If your BIOS issue remains, download another kernel from http://people.canonical.com/~ypwong/lp1734147/linux-image-4.15.0-041500rc6-generic_4.15.0-041500rc6.201712312330+clear+debug_amd64.deb, and use dpkg to install it, then repeat steps 4 to 6.

After your BIOS is fixed, the kernel packages you just installed are no longer needed, you can remove it by running 'sudo dpkg -r linux-image-4.15.0-041500rc6-generic'.

The patch used to build the linux v4.15 kernel in step 8 can be found at https://goo.gl/xUKJFR.

If you have applied updates, and find that you can not boot the above fixed kernel because of Secure Boot and that the kernel is unsigned, but can still boot another kernel for your system; here's what you can do:

1) Download http://archive.ubuntu.com/ubuntu/dists/xenial-updates/main/uefi/grub2-amd64/2.02~beta2-36ubuntu3.20/grubx64.efi.signed:
$ wget http://archive.ubuntu.com/ubuntu/dists/xenial-updates/main/uefi/grub2-amd64/2.02~beta2-36ubuntu3.20/grubx64.efi.signed

2) Copy grubx64.efi.signed over /boot/efi/EFI/ubuntu/grubx64.efi:
$ sudo cp grubx64.efi.signed /boot/efi/EFI/ubuntu/grubx64.efi

3) Reboot; you should now be able to load the new unsigned kernel that allows fixing firmware / SPI.

4) Once you're satisfied that things work; boot to Ubuntu with a standard, signed kernel, and re-install the right GRUB version for your system:

$ sudo grub-install

---

Test Case: Fix has been verified by our HWE team on affected hardware.

Regression Potential: Minimal, it's unlikely anyone is actually doing anything which requires this driver.

---
For more tech related support visit https://bit.ly/2OUHlbu