Angel Pons has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/46468 )
Change subject: soc/intel/common/acpi: rename uuid for s0ix ......................................................................
Patch Set 1:
(4 comments)
https://review.coreboot.org/c/coreboot/+/46468/1/src/soc/intel/common/acpi/l... File src/soc/intel/common/acpi/lpit.asl:
https://review.coreboot.org/c/coreboot/+/46468/1/src/soc/intel/common/acpi/l... PS1, Line 23: c4eb40a0-6cd2-11e2-bcfd-0800200c9a66 This is the "new" UUID for µPEP.
https://review.coreboot.org/c/coreboot/+/46468/1/src/soc/intel/common/acpi/l... PS1, Line 32: 0x60 This indicates only functions 5 and 6 are supported
https://review.coreboot.org/c/coreboot/+/46468/1/src/soc/intel/common/acpi/l... PS1, Line 38: Return(Package(5) {0, Ones, Ones, Ones, Ones}) This is where you report the platform requirements for s0ix entry, and I think this may be why s0ix entry might be hard (something something XTAL).
The return value is a package of packages. You can either return the package directly, or store it in a variable:
Name (DEVY, Package() { Package() { "\_PR.CPU0", // Fully Qualified namestring 1, // Enabled/Disabled state Package() { 0, // Revision (always 0 for now) Package() { 0xff, // Associated LPI state UID (0xff: all) 0, // Minimum Dx state as precondition }, }, }, Package() { "\_SB.PCI0.GFX0", // Fully Qualified namestring 1, // Enabled/Disabled state Package() { 0, // Revision (always 0 for now) Package() { 0xff, // Associated LPI state UID (0xff: all) 3, // Minimum Dx state as precondition }, }, }, Package() { "\_SB.PCI0.SAT0", // Fully Qualified namestring 1, // Enabled/Disabled state Package() { 0, // Revision (always 0 for now) Package() { 0xff, // Associated LPI state UID (0xff: all) 0, // Minimum Dx state as precondition 0x81, // Optional: Device-specific F-state constraint }, }, }, }
Note that the device list could change across boots. You can use the enabled/disabled state to list the devices statically, but determine whether devices are enabled/disabled at runtime. I think this can be done from within ACPI itself: just use Methods that return the enabled/disabled state for a device, by e.g. querying DEVEN for PCI devices.
https://review.coreboot.org/c/coreboot/+/46468/1/src/soc/intel/common/acpi/l... PS1, Line 44: Return(Buffer(One) {0x0}) This is required to support ACPI S3. If s0ix is disabled, we should just not include this file at all. This is where you return a list of "bug-check critical devices" such as all SATA/AHCI ports and NVMe drives that support D3cold.