Nico Huber has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/34285 )
Change subject: soc/intel: Fix regression with hidden PCI devices ......................................................................
Patch Set 5:
The device responds back with all 1s. Basically, the EDS says that when the hide bit gets set, this device will read 1s for any PCI config read. All other transactions are unaffected. I am not sure if it is a violation of spec to return back all 1s. That is a special value which basically indicates no device. But, I am not a PCI spec expert.
Huh.. so you can write but cannot read? Or did you mean "unaffected -> not decoded" ?
What I know so far about the P2SB hiding:
* The device is still active when hidden, obviously. * All config read cycles are ignored when hidden. * On SKL, KBL: Config write requests work on only one register, 32 bits, to unhide it. * You are supposed to write only the second byte in the register, because you can't maintain the bits around otherwise. * Unhiding only works as long as the P2SB uses BOOT_SAI. On later platforms, it's switched to POSTBOOT_SAI by FSP looooooooooooong before the system is booted. * All public references assume that it's hidden because of broken ASL code that uses constants for (parts of?) the P2SB BAR (instead of easier, native ACPI means). * I personally assume, most SMM code doesn't do better. * It's the only way to discover the P2SB BAR, which is required for a lot of things. So everybody, including kernel developers, have to risk havoc by unhiding it. I've seen kernel code that doesn't lock properly, so another thread could detect the BAR, and would have to disable it (best case) because it conflicts with ACPI resources.
To sum it up: My impression is that Intel desperately tries to cover up for broken software. And even use hardware means (SAI switch) to do so (otherwise unhiding would allow to hack broken SMM code?). Nobody can handle the added complexity, it seems. Best case scenario, IMHO: coreboot gets control of all hiding/locking/SAI switching in the future. Otherwise, I fear, we'll never see reliable firmware on Intel systems again.