I think the reason why 4.14.x works is because of commit 9d63f17661e2
("spi-nor: intel-spi: Fix broken software sequencing codes").
The current theory is that for certain serial flashes (those
with SPI_NOR_HAS_LOCK set in drivers/mtd/spi-nor/spi-nor.c) Linux
SPI-NOR core wants to clear the status register (SR) in addition to
reading the chip JEDEC ID. This is done to make sure protection bits
(BP0, BP1 and BP2) are cleared.
The sequence looks like this:
WREN (write enable)
WRSR with 0 (write status register)
However, the intel-spi driver had an off-by-one bug that causes it to
write two bytes instead of one. So the above sequence actually looks
like:
WREN (write enable)
WRSR with 0, X (write status register)
Where X is something that is in FDATA[1] FIFO. Most likely this is part
of the just read chip JEDEC ID. Now, WRSR command is weird in a sense
that it allows writing both the status register and the control
register even though there are separate commands to read them. If the X
above has bit 6 set we end up writing this to the control register which
means that we have:
SR=0x00 CR=0x40
(CR value can be something else but bit 6 needs to be set)
Because BP0, BP1 and BP2 in SR are 0 and CMP in CR is 1, this means that
the whole chip becomes read-only (CMP complements BP0, BP1 and BP2) and
this prevents the BIOS from saving settings anymore.
The off-by-one bug was already fixed in the mainline kernel by
commit 9d63f17661e2 ("spi-nor: intel-spi: Fix broken software sequencing
codes") in September.
--
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1734147
Title:
Ubuntu 17.10 corrupting BIOS - many LENOVO laptops models
Status in Linux:
Unknown
Status in linux package in Ubuntu:
Confirmed
Status in linux-hwe-edge package in Ubuntu:
Confirmed
Status in linux-oem package in Ubuntu:
Confirmed
Status in linux source package in Xenial:
Invalid
Status in linux-hwe-edge source package in Xenial:
Fix Released
Status in linux-oem source package in Xenial:
Fix Released
Status in linux source package in Artful:
Fix Released
Status in linux-hwe-edge source package in Artful:
Invalid
Status in linux-oem source package in Artful:
Invalid
Status in linux package in openSUSE:
New
Bug description:
Description: An update to linux kernel on Ubuntu 17.10 that enabled
the intel-spi-* drivers made Insyde BIOS unusable. Main issues were
Settings being not stored, USB Boot impossible and EFI entries read-
only.
Fix: The issue was fixed in Kernel Version 4.13.0-21. But previous
affected machines still suffered from a broken BIOS.
Repair: Boot Linux and Install Kernel Version 4.14.9. Reboot into
Linux and BIOS should be restored to a working state.
---
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.
---
Affected Machines:
Lenovo B40-70
Lenovo B50-70
Lenovo B50-80
Lenovo Flex-3
Lenovo Flex-10
Lenovo G40-30
Lenovo G50-30
Lenovo G50-70
Lenovo G50-80
Lenovo S20-30
Lenovo U31-70
Lenovo Y50-70
Lenovo Y70-70
Lenovo Yoga Thinkpad (20C0)
Lenovo Yoga 2 11" - 20332
Lenovo Z50-70
Lenovo Z51-70
Lenovo ideapad 100-15IBY
Acer Aspire E5-771G
Acer Aspire ES1-111M-C1LE
Acer TravelMate B113
Toshiba Satellite S55T-B5233
Toshiba Satellite L50-B-1R7
Toshiba Satellite S50-B-13G
Dell Inspiron 15-3531
Mediacom Smartbook 14 Ultra M-SB14UC
Acer Aspire E3-111-C0UM
---
Original Description:
Basically on Lenovo Y50-70 after installing Ubuntu 17.10, many users
reported a corrupted BIOS.
It's not possible to save new settings in BIOS anymore and after
rebooting, the system starts with the old settings.
Moreover (and most important) USB booting is not possible anymore
since USB is not recognized. It's very serious, since our machines do
not have a CDROM.
Lenovo forums at the moment are full of topics regading this issue.
Thank you!!
To manage notifications about this bug go to:
https://bugs.launchpad.net/linux/+bug/1734147/+subscriptions
--
Mailing list: https://launchpad.net/~kernel-packages
Post to : [email protected]
Unsubscribe : https://launchpad.net/~kernel-packages
More help : https://help.launchpad.net/ListHelp

