I have installed coreboot on my CompuLab Intense PC (Ivy Bridge). Intel ME blob was extracted from firmware image dump. This ME version (8.1.20.1336) contains multiple security vulnerabilites, so I have downloaded latest firmware update from vendor website extracted the ME (8.1.72.3002) and used that to build coreboot. However, after flashing updated rom, the SATA disk is no longer detected.
The coreboot configuration is identical for both roms, only difference is the ME version. The SATA controller is detected in both cases by coreboot and Linux:
SATA: Initializing... SATA: Controller in AHCI mode.
00:1f.2 SATA controller: Intel Corporation 7 Series Chipset Family 6-port SATA Controller [AHCI mode] (rev 04)
With newer ME, there are no errors, it's just like the SATA disk is not plugged in.
I have compared output of cbmem, line by line in cronological order, from system booted by USB disk with working and non working SATA, cut out blocks with differences and marked them with a *. I don't know if this is a good way, please let me know if I should have done otherwise.
SATA disk working: ============================= Update PCI-E configuration space: PCI(0, 0, 0)[a0] = 0 PCI(0, 0, 0)[a4] = 2 * PCI(0, 0, 0)[bc] = 82a00000 PCI(0, 0, 0)[a8] = 7b600000 PCI(0, 0, 0)[ac] = 2 * PCI(0, 0, 0)[b8] = 80000000 PCI(0, 0, 0)[b0] = 80a00000 PCI(0, 0, 0)[b4] = 80800000 PCI(0, 0, 0)[7c] = 7f PCI(0, 0, 0)[70] = fe000000 PCI(0, 0, 0)[74] = 1 * PCI(0, 0, 0)[78] = fe000c00 ============================= SATA disk NOT working: ============================= Update PCI-E configuration space: PCI(0, 0, 0)[a0] = 0 PCI(0, 0, 0)[a4] = 4 * PCI(0, 0, 0)[bc] = 82a00000 PCI(0, 0, 0)[a8] = 7b600000 PCI(0, 0, 0)[ac] = 4 * PCI(0, 0, 0)[b8] = 80000000 PCI(0, 0, 0)[b0] = 80a00000 PCI(0, 0, 0)[b4] = 80800000 PCI(0, 0, 0)[7c] = 7f PCI(0, 0, 0)[70] = fe000000 PCI(0, 0, 0)[74] = 3 * PCI(0, 0, 0)[78] = fe000c00 =============================
SATA disk working: ============================= ME: FWS2: 0x161f012a * ME: Bist in progress: 0x0 ME: ICC Status : 0x1 * ME: Invoke MEBx : 0x1 ME: CPU replaced : 0x0 ============================= SATA disk NOT working: ============================= ME: FWS2: 0x161f012e * ME: Bist in progress: 0x0 ME: ICC Status : 0x3 * ME: Invoke MEBx : 0x1 ME: CPU replaced : 0x0 =============================
SATA disk working: ============================= PASSED! Tell ME that DRAM is ready ME: FWS2: 0x1650012e * ME: Bist in progress: 0x0 ME: ICC Status : 0x3 * ME: Invoke MEBx : 0x1 ME: CPU replaced : 0x0 ============================= SATA disk NOT working: ============================= PASSED! Tell ME that DRAM is ready ME: FWS2: 0x1650012a * ME: Bist in progress: 0x0 ME: ICC Status : 0x1 * ME: Invoke MEBx : 0x1 ME: CPU replaced : 0x0 =============================
SATA disk working: ============================= memcfg channel assignment: A: 1, B 0, C 2 * memcfg channel[0] config (00000000): * ECC inactive enhanced interleave mode off * rank interleave off * DIMMA 0 MB width x8 single rank, selected * DIMMB 0 MB width x8 single rank ============================= SATA disk NOT working: ============================= memcfg channel assignment: A: 0, B 1, C 2 * memcfg channel[0] config (00620020): * ECC inactive enhanced interleave mode on * rank interleave on * DIMMA 8192 MB width x8 dual rank, selected * DIMMB 0 MB width x8 single rank =============================
SATA disk working: ============================= PCH: Remap PCIe function 4 to 3 PCI: 00:1c.4 [8086/1e18] enabled PCI: 00:1c.5: Disabling device PCI: 00:1c.6: Disabling device PCI: 00:1c.6 [8086/1e1c] disabled * PCI: 00:1c.7: Disabling device ============================= SATA disk NOT working: ============================= PCH: Remap PCIe function 4 to 3 PCI: 00:1c.4 [8086/1e18] enabled PCI: 00:1c.5: Disabling device PCI: 00:1c.6: Disabling device * PCI: 00:1c.7: Disabling device =============================
SATA disk working: ============================= PCI: Leftover static devices: PCI: 00:16.1 PCI: 00:16.2 PCI: 00:16.3 PCI: 00:1c.4 PCI: 00:1c.5 * PCI: 00:1c.7 PCI: Check your devicetree.cb. ============================= SATA disk NOT working: ============================= PCI: Leftover static devices: PCI: 00:16.1 PCI: 00:16.2 PCI: 00:16.3 PCI: 00:1c.4 PCI: 00:1c.5 PCI: 00:1c.6 * PCI: 00:1c.7 PCI: Check your devicetree.cb. =============================
SATA disk working: ============================= Available memory below 4GB: 2048M Available memory above 4GB: 6070M * ============================= SATA disk NOT working: ============================= Available memory below 4GB: 2048M Available memory above 4GB: 14262M * =============================
SATA disk working: ============================= CPU physical address size: 36 bits MTRR: default type WB/UC MTRR counts: 4/4. * MTRR: UC selected as default type. * ============================= SATA disk NOT working: ============================= CPU physical address size: 36 bits MTRR: default type WB/UC MTRR counts: 4/5. * MTRR: WB selected as default type. * =============================
SATA disk working: ============================= Create SMBIOS type 17 SMBIOS tables: 682 bytes. * ============================= SATA disk NOT working: ============================= Create SMBIOS type 17 SMBIOS tables: 782 bytes. * =============================
SATA disk working: ============================= Found 1 serial ports Searching bootorder for: /pci@i0cf8/*@1f,2/drive@0/disk@0 * AHCI/0: Set transfer mode to UDMA-6 * Searching bios-geometry for: /pci@i0cf8/*@1f,2/drive@0/disk@0 * AHCI/0: registering: "AHCI/0: Samsung SSD 840 PRO Series ATA-9 Hard-Disk (238 GiBytes)" * PS2 keyboard initialized ============================= SATA disk NOT working: ============================= Found 1 serial ports * * * * PS2 keyboard initialized =============================
Vendor firmware has working SATA with same ME, what could change that makes coreboot not detect the SATA disk anymore?
The final goal is to disable ME with me_cleaner, but that also breaks SATA as documented here:
https://github.com/corna/me_cleaner/issues/119
But I think if we can get coreboot to detect SATA disk with new ME version, it can also be disabled completely.
I'm very interested in getting this to work, but I'm not sure where I should start with the debugging. Can anyone point me in the right direction? I would appreciate any ideas!!
Thanks in advance.
Regards, Mogense Jensen
Hi Mogens, According to "Intel® ME - 1.5MB FW Bring Up Guide" the Intel ME region contains the ICC profiles. If you simply replace the ME without applying the same ICC configuration to the new Intel ME, some hardware might not work as expected.
Regards, Patrick Rudolph
9elements Agency GmbH, Kortumstraße 19-21, 44787 Bochum, Germany Email: patrick.rudolph@9elements.com Phone: +49 234 / 68 94 188
Sitz der Gesellschaft: Bochum Handelsregister: Amtsgericht Bochum, HRB 13207 Geschäftsführung: Eray Basar, Sebastian Deutsch
Patrick Rudolph
9elements Agency GmbH, Kortumstraße 19-21, 44787 Bochum, Germany Email: patrick.rudolph@9elements.com Phone: +49 234 / 68 94 188
Sitz der Gesellschaft: Bochum Handelsregister: Amtsgericht Bochum, HRB 13207 Geschäftsführung: Eray Basar, Sebastian Deutsch
Am Mi., 12. Feb. 2020 um 02:31 Uhr schrieb Mogens Jensen via coreboot coreboot@coreboot.org:
I have installed coreboot on my CompuLab Intense PC (Ivy Bridge). Intel ME blob was extracted from firmware image dump. This ME version (8.1.20.1336) contains multiple security vulnerabilites, so I have downloaded latest firmware update from vendor website extracted the ME (8.1.72.3002) and used that to build coreboot. However, after flashing updated rom, the SATA disk is no longer detected.
The coreboot configuration is identical for both roms, only difference is the ME version. The SATA controller is detected in both cases by coreboot and Linux:
SATA: Initializing... SATA: Controller in AHCI mode.
00:1f.2 SATA controller: Intel Corporation 7 Series Chipset Family 6-port SATA Controller [AHCI mode] (rev 04)
With newer ME, there are no errors, it's just like the SATA disk is not plugged in.
I have compared output of cbmem, line by line in cronological order, from system booted by USB disk with working and non working SATA, cut out blocks with differences and marked them with a *. I don't know if this is a good way, please let me know if I should have done otherwise.
SATA disk working:
Update PCI-E configuration space: PCI(0, 0, 0)[a0] = 0 PCI(0, 0, 0)[a4] = 2 * PCI(0, 0, 0)[bc] = 82a00000 PCI(0, 0, 0)[a8] = 7b600000 PCI(0, 0, 0)[ac] = 2 * PCI(0, 0, 0)[b8] = 80000000 PCI(0, 0, 0)[b0] = 80a00000 PCI(0, 0, 0)[b4] = 80800000 PCI(0, 0, 0)[7c] = 7f PCI(0, 0, 0)[70] = fe000000 PCI(0, 0, 0)[74] = 1 * PCI(0, 0, 0)[78] = fe000c00 ============================= SATA disk NOT working: ============================= Update PCI-E configuration space: PCI(0, 0, 0)[a0] = 0 PCI(0, 0, 0)[a4] = 4 * PCI(0, 0, 0)[bc] = 82a00000 PCI(0, 0, 0)[a8] = 7b600000 PCI(0, 0, 0)[ac] = 4 * PCI(0, 0, 0)[b8] = 80000000 PCI(0, 0, 0)[b0] = 80a00000 PCI(0, 0, 0)[b4] = 80800000 PCI(0, 0, 0)[7c] = 7f PCI(0, 0, 0)[70] = fe000000 PCI(0, 0, 0)[74] = 3 * PCI(0, 0, 0)[78] = fe000c00 =============================
SATA disk working:
ME: FWS2: 0x161f012a * ME: Bist in progress: 0x0 ME: ICC Status : 0x1 * ME: Invoke MEBx : 0x1 ME: CPU replaced : 0x0 ============================= SATA disk NOT working: ============================= ME: FWS2: 0x161f012e * ME: Bist in progress: 0x0 ME: ICC Status : 0x3 * ME: Invoke MEBx : 0x1 ME: CPU replaced : 0x0 =============================
SATA disk working:
PASSED! Tell ME that DRAM is ready ME: FWS2: 0x1650012e * ME: Bist in progress: 0x0 ME: ICC Status : 0x3 * ME: Invoke MEBx : 0x1 ME: CPU replaced : 0x0 ============================= SATA disk NOT working: ============================= PASSED! Tell ME that DRAM is ready ME: FWS2: 0x1650012a * ME: Bist in progress: 0x0 ME: ICC Status : 0x1 * ME: Invoke MEBx : 0x1 ME: CPU replaced : 0x0 =============================
SATA disk working:
memcfg channel assignment: A: 1, B 0, C 2 * memcfg channel[0] config (00000000): * ECC inactive enhanced interleave mode off * rank interleave off * DIMMA 0 MB width x8 single rank, selected * DIMMB 0 MB width x8 single rank ============================= SATA disk NOT working: ============================= memcfg channel assignment: A: 0, B 1, C 2 * memcfg channel[0] config (00620020): * ECC inactive enhanced interleave mode on * rank interleave on * DIMMA 8192 MB width x8 dual rank, selected * DIMMB 0 MB width x8 single rank =============================
SATA disk working:
PCH: Remap PCIe function 4 to 3 PCI: 00:1c.4 [8086/1e18] enabled PCI: 00:1c.5: Disabling device PCI: 00:1c.6: Disabling device PCI: 00:1c.6 [8086/1e1c] disabled * PCI: 00:1c.7: Disabling device ============================= SATA disk NOT working: ============================= PCH: Remap PCIe function 4 to 3 PCI: 00:1c.4 [8086/1e18] enabled PCI: 00:1c.5: Disabling device PCI: 00:1c.6: Disabling device
PCI: 00:1c.7: Disabling device
SATA disk working:
PCI: Leftover static devices: PCI: 00:16.1 PCI: 00:16.2 PCI: 00:16.3 PCI: 00:1c.4 PCI: 00:1c.5
PCI: 00:1c.7 PCI: Check your devicetree.cb. ============================= SATA disk NOT working: ============================= PCI: Leftover static devices: PCI: 00:16.1 PCI: 00:16.2 PCI: 00:16.3 PCI: 00:1c.4 PCI: 00:1c.5 PCI: 00:1c.6 * PCI: 00:1c.7 PCI: Check your devicetree.cb. =============================
SATA disk working:
Available memory below 4GB: 2048M Available memory above 4GB: 6070M * ============================= SATA disk NOT working: ============================= Available memory below 4GB: 2048M Available memory above 4GB: 14262M * =============================
SATA disk working:
CPU physical address size: 36 bits MTRR: default type WB/UC MTRR counts: 4/4. * MTRR: UC selected as default type. * ============================= SATA disk NOT working: ============================= CPU physical address size: 36 bits MTRR: default type WB/UC MTRR counts: 4/5. * MTRR: WB selected as default type. * =============================
SATA disk working:
Create SMBIOS type 17 SMBIOS tables: 682 bytes. * ============================= SATA disk NOT working: ============================= Create SMBIOS type 17 SMBIOS tables: 782 bytes. * =============================
SATA disk working:
Found 1 serial ports Searching bootorder for: /pci@i0cf8/*@1f,2/drive@0/disk@0 * AHCI/0: Set transfer mode to UDMA-6 * Searching bios-geometry for: /pci@i0cf8/*@1f,2/drive@0/disk@0 * AHCI/0: registering: "AHCI/0: Samsung SSD 840 PRO Series ATA-9 Hard-Disk (238 GiBytes)" * PS2 keyboard initialized ============================= SATA disk NOT working: ============================= Found 1 serial ports
PS2 keyboard initialized
Vendor firmware has working SATA with same ME, what could change that makes coreboot not detect the SATA disk anymore?
The final goal is to disable ME with me_cleaner, but that also breaks SATA as documented here:
https://github.com/corna/me_cleaner/issues/119
But I think if we can get coreboot to detect SATA disk with new ME version, it can also be disabled completely.
I'm very interested in getting this to work, but I'm not sure where I should start with the debugging. Can anyone point me in the right direction? I would appreciate any ideas!!
Thanks in advance.
Regards, Mogense Jensen _______________________________________________ coreboot mailing list -- coreboot@coreboot.org To unsubscribe send an email to coreboot-leave@coreboot.org
Hi,
The ME often holds data about clock configuration for given mainboard. It is not easy to figure out how to configure those clocks without the proprietary Intel tools. That thing is called Integrated Clock Controller - ICC (or something like that).
Also the vendor's firmware probably has "the right" ME FW udpate procedure implemented, which uses the ME interface to perform the update. I suspect that update is omitting the mainboard specific configuration. I would advise to perform the vendor BIOS update process as usually typical user does it, then dump the image and extract the ME blob. Try this way out and see if it helps.
Regards,
Thanks everyone for pointing me in the right direction, I didn't know about configuration data in ME.
I did a quick comparison of the ICC profiles in the two ME images and found multiple differences.
FCIM/BTM Specific ICC Registers: ============================= Clock Source Select SRC Source Select PLL Reference Clock Select Divider Enable
ICC Registers: ============================= Flex Clock Source Select Output Clock Enable PI12BiasParms
I need to do more research to find out what all this means, but in theory, if I update the new ME with same values as the old one, then I should have a working SATA disk?
Regards, Mogens Jensen
On 13.02.2020 11:27, Mogens Jensen via coreboot wrote:
Thanks everyone for pointing me in the right direction, I didn't know about configuration data in ME.
I did a quick comparison of the ICC profiles in the two ME images and found multiple differences.
FCIM/BTM Specific ICC Registers:
Clock Source Select SRC Source Select PLL Reference Clock Select Divider Enable
ICC Registers:
Flex Clock Source Select Output Clock Enable PI12BiasParms
I need to do more research to find out what all this means, but in theory, if I update the new ME with same values as the old one, then I should have a working SATA disk?
Theoretically yes. But practically cannot guarantee that (it is hardware). However, the chances are very high. I recently had an issue with mismatched ICC configuration which caused 1 of 6 Gigabit Ethernet Controllers to be disabled. Fixed by applying identical ICC configuration to the new ME image.
Regards, Mogens Jensen _______________________________________________ coreboot mailing list -- coreboot@coreboot.org To unsubscribe send an email to coreboot-leave@coreboot.org
Regards,