Attention is currently required from: Arthur Heymans, Christian Walter, Johnny Lin, Jonathan Zhang, Lean Sheng Tan, Patrick Rudolph, Tim Chu.
Shuo Liu has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/81377?usp=email )
Change subject: soc/intel/xeon_sp/spr: Support dynamic domain SSDT generation ......................................................................
Patch Set 21:
(1 comment)
Patchset:
PS21: Add some backgrounds for the reason to adopt dynamic _OSC generations. The code that is generated is as below. We can get that it includes the host bridge device name (_SB.PM08) and locality (_PXM) ... (will be more cases and not limited to these).
In a static ASL, such info will be hard coded to fit for one SoC SKU, however, for different SoC/SKUs, we need multiple set of static ASLs.
For Xeon-SP codes starting from SPR, we need one set of SoC codes to support multiple SKUs (SPR -> SPR-XCC, SPR-MCC) or multiple SoC/SKUs (GNR -> GNR-SP, GNR-AP, SRF-SP, SRF-AP). Hence the dynamic code generations are more suitable.
Scope (_SB.PM08) { Name (_PXM, Zero) // _PXM: Device Proximity Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table { Return (_SB.AR12) /* External reference */ }
Method (_OSC, 4, NotSerialized) // _OSC: Operating System Capabilities { If ((Arg1 != One)) { RETE = 0x08 Return (Arg3) }
Local7 = Arg3 CreateDWordField (Local7, Zero, QSUP) CreateDWordField (Arg3, Zero, RETE) RETE = Zero Local6 = Zero If ((Arg0 == ToUUID ("33db4d5b-1ff7-401c-9657-7441c03dd766") /* PCI Host Bridge Device */)) { If ((Arg2 < 0x02)) { RETE = 0x02 Return (Arg3) }
CreateDWordField (Arg3, 0x04, SUPP) CreateDWordField (Arg3, 0x08, CTRL) CreateDWordField (Local7, 0x08, OTRL) ToInteger (CTRL, Local0) Local1 = 0x15 Local0 &= Local1 CTRL = Local0 If ((CTRL != OTRL)) { RETE = 0x10 }
Local6 = One }
If ((Local6 == Zero)) { RETE = 0x04 }
Return (Arg3) } }