corna / me_cleaner

Tool for partial deblobbing of Intel ME/TXE firmware images
GNU General Public License v3.0
4.51k stars 279 forks source link

Google Pixelbook "eve" (Kaby Lake-Y, Coreboot): cleaning causes NVMe SSD to detach soon after boot #300

Closed valpackett closed 5 years ago

valpackett commented 5 years ago
Here's the me_cleaner log ``` Full image detected The ME/TXE region goes from 0x1000 to 0x200000 Found FPT header at 0x1010 Found 11 partition(s) Found FTPR header: FTPR partition spans from 0x1000 to 0xa8000 Found FTPR manifest at 0x1448 ME/TXE firmware version 11.6.31.3309 Public key match: Intel ME, firmware versions 11.x.x.x The HAP bit is NOT SET Reading partitions list... FTPR (0x00001000 - 0x0000a8000, 0x000a7000 total bytes): NOT removed FTUP (0x00110000 - 0x0001bc000, 0x000ac000 total bytes): removed DLMP ( no data here , 0x00000000 total bytes): nothing to remove PSVN (0x00000e00 - 0x000001000, 0x00000200 total bytes): removed IVBP (0x0010c000 - 0x000110000, 0x00004000 total bytes): removed MFS (0x000a8000 - 0x00010c000, 0x00064000 total bytes): removed NFTP (0x00110000 - 0x0001bc000, 0x000ac000 total bytes): removed ROMB ( no data here , 0x00000000 total bytes): nothing to remove FLOG (0x001bc000 - 0x0001bd000, 0x00001000 total bytes): removed UTOK (0x001bd000 - 0x0001bf000, 0x00002000 total bytes): removed ISHC ( no data here , 0x00000000 total bytes): nothing to remove Removing partition entries in FPT... Removing EFFS presence flag... Correcting checksum (0x7e)... Reading FTPR modules list... FTPR.man (uncompressed, 0x001448 - 0x002018): NOT removed, partition manif. rbe.met (uncompressed, 0x002018 - 0x0020ae): NOT removed, module metadata kernel.met (uncompressed, 0x0020ae - 0x00213c): NOT removed, module metadata syslib.met (uncompressed, 0x00213c - 0x0021a0): NOT removed, module metadata bup.met (uncompressed, 0x0021a0 - 0x00274a): NOT removed, module metadata pm.met (uncompressed, 0x00274a - 0x0027f8): NOT removed, module metadata vfs.met (uncompressed, 0x0027f8 - 0x003158): NOT removed, module metadata evtdisp.met (uncompressed, 0x003158 - 0x0032e6): NOT removed, module metadata loadmgr.met (uncompressed, 0x0032e6 - 0x00340e): NOT removed, module metadata busdrv.met (uncompressed, 0x00340e - 0x0037b6): NOT removed, module metadata gpio.met (uncompressed, 0x0037b6 - 0x003900): NOT removed, module metadata prtc.met (uncompressed, 0x003900 - 0x003ab0): NOT removed, module metadata policy.met (uncompressed, 0x003ab0 - 0x003c74): NOT removed, module metadata crypto.met (uncompressed, 0x003c74 - 0x003dfe): NOT removed, module metadata heci.met (uncompressed, 0x003dfe - 0x003fca): NOT removed, module metadata storage.met (uncompressed, 0x003fca - 0x0042c6): NOT removed, module metadata pmdrv.met (uncompressed, 0x0042c6 - 0x0043ea): NOT removed, module metadata maestro.met (uncompressed, 0x0043ea - 0x0044d4): NOT removed, module metadata fpf.met (uncompressed, 0x0044d4 - 0x0045e0): NOT removed, module metadata hci.met (uncompressed, 0x0045e0 - 0x0046e2): NOT removed, module metadata fwupdate.met (uncompressed, 0x0046e2 - 0x0047ec): NOT removed, module metadata ptt.met (uncompressed, 0x0047ec - 0x0048f8): NOT removed, module metadata touch_fw.met (uncompressed, 0x0048f8 - 0x004a40): NOT removed, module metadata rbe (Huffman , 0x004a40 - 0x007100): NOT removed, essential kernel (Huffman , 0x007100 - 0x016d40): NOT removed, essential syslib (Huffman , 0x016d40 - 0x028bc0): NOT removed, essential bup (Huffman , 0x028bc0 - 0x051140): NOT removed, essential pm (LZMA/uncomp., 0x051140 - 0x053740): removed vfs (LZMA/uncomp., 0x053740 - 0x05b4c0): removed evtdisp (LZMA/uncomp., 0x05b4c0 - 0x05cec0): removed loadmgr (LZMA/uncomp., 0x05cec0 - 0x05fc40): removed busdrv (LZMA/uncomp., 0x05fc40 - 0x061500): removed gpio (LZMA/uncomp., 0x061500 - 0x062780): removed prtc (LZMA/uncomp., 0x062780 - 0x063340): removed policy (LZMA/uncomp., 0x063340 - 0x067f00): removed crypto (LZMA/uncomp., 0x067f00 - 0x075ac0): removed heci (LZMA/uncomp., 0x075ac0 - 0x0799c0): removed storage (LZMA/uncomp., 0x0799c0 - 0x07dfc0): removed pmdrv (LZMA/uncomp., 0x07dfc0 - 0x07f180): removed maestro (LZMA/uncomp., 0x07f180 - 0x080f00): removed fpf (LZMA/uncomp., 0x080f00 - 0x082900): removed hci (LZMA/uncomp., 0x082900 - 0x0831c0): removed fwupdate (LZMA/uncomp., 0x0831c0 - 0x087d80): removed ptt (LZMA/uncomp., 0x087d80 - 0x09cf00): removed touch_fw (LZMA/uncomp., 0x09cf00 - 0x0a8000): removed The ME minimum size should be 352256 bytes (0x56000 bytes) The ME region can be reduced up to: 00001000:00056fff me Checking the FTPR RSA signature... VALID Done! Good luck! ```

With no arguments or with -S, i.e. when partitions are removed, a weird issue happens — some time after boot, the NVMe drive disappears/breaks. E.g. if I boot into OS, the drive times out and detaches. If I stay in UEFI for a long time (say on a disk encryption password prompt), I/O errors appear there too.

-s seems fine.

I just noticed that the help says

  -w whitelist, --whitelist whitelist
                        Comma separated list of additional partitions to keep
                        in the final image. This can be used to specify the
                        MFS partition for example, which stores PCIe and clock
                        settings.

I guess PCIe settings could be related…

valpackett commented 5 years ago

-S -w MFS seems fine so far.

Hopefully this info helps the next person who sees problems with NVMe drives specifically..