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.
--
Michał Żygowski
Firmware Engineer
http://3mdeb.com | @3mdeb_com
On 12.02.2020 02:30, Mogens Jensen via coreboot wrote:
> 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