Attention is currently required from: Arthur Heymans, Felix Singer, Subrata Banik, Tim Wawrzynczak, Patrick Rudolph, EricR Lai. Angel Pons has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/60405 )
Change subject: soc/intel/common/cse: Implement HECI notify ......................................................................
Patch Set 8:
(1 comment)
File src/soc/intel/common/block/cse/cse_eop.c:
https://review.coreboot.org/c/coreboot/+/60405/comment/7dc267f9_0632c406 PS7, Line 279: HeciEnabled
CB:47195 drops HeciEnabled from CNL looks like.
Ah, the HECI device can be enabled and initialised in coreboot, but hidden before booting an OS. So, if I understand correctly, there are multiple cases:
1. HECI device disabled: I think this happens when CSE is in an abnormal state (e.g. because of some error or because it has been disabled). This situation should be detected at runtime and dealt with accordingly.
2. HECI device enabled, and left visible: This is the simplest thing to do when the CSE is running normally, but I'm not sure if there are any drawbacks. I know Windows Device Manager shows a "yellow bang" for the HECI device when its drivers aren't installed, but it's not a serious problem.
3. HECI device enabled, but hidden before booting an OS: I think this is to avoid the Windows Device Manager "yellow bang" thing when the drivers aren't installed, and I think it also saves a bit of power by keeping the HECI device in D0i3. Other than that, I'm not sure if there are any other reasons to do this.
Case 1 would be handled as part of the CSE error handling flows, so we don't need to worry about it in this commit. Cases 2 and 3 are with CSE running normally. This makes me wonder: are there any reasons to prefer case 2 over case 3, or viceversa? If so, which ones?
If there's no (mainboard-specific) reason for a particular mainboard to require either case 2 or case 3, I was thinking of having a user-configurable Kconfig option to control hiding the HECI device. This still allows mainboards to override the default setting, and also allows non-mainboard code to do so. For instance, if Chrome OS needs case 3, one would only need to override the default once with `if CHROMEOS` or similar.
Thoughts?