Date
1 - 1 of 1
[edk2-platforms][PATCH V1 0/3] Enable CXL support and prepare necessary ACPI tables
Sayanta Pattanayak
This patch series adds support for discovering and reading out CXL
device capabilities, also it prepares SRAT, HMAT, CEDT tables. First patch adds a CXL DXE. It discovers PCIe device with CXL and DOE capability. Once DOE capability is discovered, DOE operation is executed to fetch CDAT (DSMAS) table, which will have information about Device physical address and range. At present only DSMAS table is tested and using the information from DSMAS table remote memory node is prepared by platform drivers. This Dxe also installs a protocol, enabling platform modules to fetch details about remote memory. The purpose of second patch is to prepare SRAT and HMAT table dynamically for associating proximity / locality domains to memory ranges and also describing memory attributes associated with memory ranges. There is statically defined GICC device in SRAT table, which is kept as it is needed for Sgi platform boot. GICC structure is just kept to maintain platform boot integrity, otherwise it has no relation with the purpose of this patch. Third patch introduces CEDT structures (CFMWS, CHBS) that will allow kernel to configure CXL host bridge HDM decoder. It also adds an ACPI0016 object to indicate presence of CXL Host bridge. In this patch, Interleave target number is considered 1 for demonstrating a reference solution with CEDT structures. There is no real interleaving address windows across multiple ports with this configuration. It is same as single port CXL Host bridge. CXL Specification Revision 3.0, Version 0.7 is referred for patch preparation. Link to github branch with the patches in this series - https://github.com/SayantaP-arm/edk2-platforms/tree/cxl-type-3 Sayanta Pattanayak (3): Platform/ARM: add CXL driver Platform/Sgi: prepare SRAT, HMAT table Platform/Sgi: Add CXL Early Discovery Table(CEDT) for Rd-N2-Cfg1 Platform Platform/ARM/Drivers/CxlDxe/CxlDxe.dec | 21 + Platform/ARM/SgiPkg/SgiPlatform.dsc.inc | 7 + Platform/ARM/SgiPkg/SgiPlatform.fdf | 9 +- Platform/ARM/Drivers/CxlDxe/CxlDxe.inf | 48 ++ .../SgiPkg/AcpiTables/RdN2Cfg1AcpiTables.inf | 7 +- .../AcpiTableGenerator.inf | 73 +++ Platform/ARM/Drivers/CxlDxe/CxlDxe.h | 156 ++++++ Platform/ARM/Include/Protocol/Cxl.h | 57 ++ .../AcpiTableGenerator.h | 36 ++ Platform/ARM/Drivers/CxlDxe/CxlDxe.c | 530 ++++++++++++++++++ .../AcpiTableGenerator.c | 72 +++ .../HmatTableGenerator.c | 120 ++++ .../SratTableGenerator.c | 290 ++++++++++ .../ARM/SgiPkg/AcpiTables/RdN2Cfg1/Cedt.aslc | 86 +++ .../ARM/SgiPkg/AcpiTables/RdN2Cfg1/Ssdt.asl | 119 ++++ 15 files changed, 1628 insertions(+), 3 deletions(-) create mode 100644 Platform/ARM/Drivers/CxlDxe/CxlDxe.dec create mode 100644 Platform/ARM/Drivers/CxlDxe/CxlDxe.inf create mode 100644 Platform/ARM/SgiPkg/Library/AcpiTableGeneratorLib/Acp= iTableGenerator.inf create mode 100644 Platform/ARM/Drivers/CxlDxe/CxlDxe.h create mode 100644 Platform/ARM/Include/Protocol/Cxl.h create mode 100644 Platform/ARM/SgiPkg/Library/AcpiTableGeneratorLib/Acp= iTableGenerator.h create mode 100644 Platform/ARM/Drivers/CxlDxe/CxlDxe.c create mode 100644 Platform/ARM/SgiPkg/Library/AcpiTableGeneratorLib/Acp= iTableGenerator.c create mode 100644 Platform/ARM/SgiPkg/Library/AcpiTableGeneratorLib/Hma= tTableGenerator.c create mode 100644 Platform/ARM/SgiPkg/Library/AcpiTableGeneratorLib/Sra= tTableGenerator.c create mode 100644 Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1/Cedt.aslc create mode 100644 Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1/Ssdt.asl --=20 2.17.1 |
|