Samsung activate firmware slot via PCI commands
Posted: October 7th, 2019, 23:09
Hello, I did a bad firmware flash on a Samsung SSD NVME. I have a backup of the data so that is not the issue. I would like to start using the bricked drive again. I put bad firmware in slot 2 and activated slot 2. Slot 1 still has the good firmware. But the device does not complete initialization as /dev/nvme on Linux anymore (same under Windows). Only a PCI endpoint shows up in lspci -v:
09:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller SM961/PM961 (prog-if 02 [NVM Express])
Subsystem: Samsung Electronics Co Ltd Device a801
Flags: fast devsel, IRQ 16, NUMA node 0
Memory at df100000 (64-bit, non-prefetchable) [size=16K]
Capabilities: [40] Power Management version 3
Capabilities: [50] MSI: Enable- Count=1/32 Maskable- 64bit+
Capabilities: [70] Express Endpoint, MSI 00
Capabilities: [b0] MSI-X: Enable- Count=8 Masked-
Capabilities: [100] Advanced Error Reporting
Capabilities: [148] Device Serial Number 00-00-00-00-00-00-00-00
Capabilities: [158] Power Budgeting <?>
Capabilities: [168] Secondary PCI Express <?>
Capabilities: [188] Latency Tolerance Reporting
Capabilities: [190] L1 PM Substates
so I can't simply use nvme-cli to switch to the Page 1 firmware. How can I switch this drive, mostly bricked but still showing up in the PCI device tree, back to the factory firmware in Slot 1? Either via this endpoint, PCI registers or perhaps using a serial recovery console or even jtag? I hope I clearly described the problem. Thanks for any help.
09:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller SM961/PM961 (prog-if 02 [NVM Express])
Subsystem: Samsung Electronics Co Ltd Device a801
Flags: fast devsel, IRQ 16, NUMA node 0
Memory at df100000 (64-bit, non-prefetchable) [size=16K]
Capabilities: [40] Power Management version 3
Capabilities: [50] MSI: Enable- Count=1/32 Maskable- 64bit+
Capabilities: [70] Express Endpoint, MSI 00
Capabilities: [b0] MSI-X: Enable- Count=8 Masked-
Capabilities: [100] Advanced Error Reporting
Capabilities: [148] Device Serial Number 00-00-00-00-00-00-00-00
Capabilities: [158] Power Budgeting <?>
Capabilities: [168] Secondary PCI Express <?>
Capabilities: [188] Latency Tolerance Reporting
Capabilities: [190] L1 PM Substates
so I can't simply use nvme-cli to switch to the Page 1 firmware. How can I switch this drive, mostly bricked but still showing up in the PCI device tree, back to the factory firmware in Slot 1? Either via this endpoint, PCI registers or perhaps using a serial recovery console or even jtag? I hope I clearly described the problem. Thanks for any help.