[PATCH 1/2] acpi: cedt: update the cedt tests for CXL spec rev3.2

Ivan Hu ivan.hu at canonical.com
Thu Feb 13 06:36:52 UTC 2025


BugLink: https://bugs.launchpad.net/fwts/+bug/2098072

Update the tests for Compute Express Link(CXL) Specification
October 2, 2024 Revision 3.2, Version 1.0

Signed-off-by: Ivan Hu <ivan.hu at canonical.com>
---
 src/acpi/cedt/cedt.c        | 25 +++++++++++++++++++++++--
 src/lib/include/fwts_acpi.h |  9 ++++++++-
 2 files changed, 31 insertions(+), 3 deletions(-)

diff --git a/src/acpi/cedt/cedt.c b/src/acpi/cedt/cedt.c
index 444bc410..ff63a98d 100644
--- a/src/acpi/cedt/cedt.c
+++ b/src/acpi/cedt/cedt.c
@@ -111,7 +111,7 @@ static void cedt_cfmws_test(
 			"0x%2.2" PRIx8 "instead", entry->interleave_arithmetic);
 	}
 
-	fwts_acpi_reserved_bits("CEDT", "Window Restrictions", entry->window_restrictions, 5, 15, passed);
+	fwts_acpi_reserved_bits("CEDT", "Window Restrictions", entry->window_restrictions, 6, 15, passed);
 
 }
 
@@ -163,6 +163,24 @@ static void cedt_rdpas_test(
 
 }
 
+static void cedt_csds_test(
+	fwts_framework *fw,
+	const fwts_acpi_table_cedt_csds *entry,
+	bool *passed)
+{
+	fwts_log_info_verbatim(fw, "  CXL System Description Structure (CSDS):");
+	fwts_log_info_simp_int(fw, "    Type:                           ", entry->header.type);
+	fwts_log_info_simp_int(fw, "    Reserved:                       ", entry->header.reserved);
+	fwts_log_info_simp_int(fw, "    Record Length:                  ", entry->header.record_length);
+	fwts_log_info_simp_int(fw, "    System Capabilities:            ", entry->system_cap);
+	fwts_log_info_simp_int(fw, "    Reserved:                       ", entry->reserved);
+
+	fwts_acpi_reserved_zero("CEDT", "Reserved", entry->header.reserved, passed);
+	fwts_acpi_reserved_bits("CEDT", "System Capabilities", entry->system_cap, 6, 15, passed);
+	fwts_acpi_reserved_zero("CEDT", "Reserved", entry->reserved, passed);
+
+}
+
 static void cedt_structure(
 	fwts_framework *fw,
 	fwts_acpi_table_cedt_header *entry,
@@ -181,11 +199,14 @@ static void cedt_structure(
 		case FWTS_CEDT_TYPE_RDPAS:
 			cedt_rdpas_test(fw, (fwts_acpi_table_cedt_rdpas *)entry, passed);
 			break;
+		case FWTS_CEDT_TYPE_CSDS:
+			cedt_csds_test(fw, (fwts_acpi_table_cedt_csds *)entry, passed);
+			break;
 		default:
 			*passed = false;
 			fwts_failed(fw, LOG_LEVEL_HIGH,
 				"CEDTBadSubtableType",
-				"CEDT must have subtable with Type 0 to 3, got "
+				"CEDT must have subtable with Type 0 to 4, got "
 				"0x%4.4" PRIx16 " instead", entry->type);
 			break;
 	}
diff --git a/src/lib/include/fwts_acpi.h b/src/lib/include/fwts_acpi.h
index 598cf364..a327e56d 100644
--- a/src/lib/include/fwts_acpi.h
+++ b/src/lib/include/fwts_acpi.h
@@ -2375,7 +2375,8 @@ typedef enum {
 	FWTS_CEDT_TYPE_CFMWS	= 1,
 	FWTS_CEDT_TYPE_CXIMS	= 2,
 	FWTS_CEDT_TYPE_RDPAS	= 3,
-	FWTS_CEDT_TYPE_RESERVED	= 4,
+	FWTS_CEDT_TYPE_CSDS	= 4,
+	FWTS_CEDT_TYPE_RESERVED	= 5,
 } fwts_acpi_cedt_type;
 
 typedef struct {
@@ -2423,6 +2424,12 @@ typedef struct {
 	uint64_t	base_addr;
 } __attribute__ ((packed)) fwts_acpi_table_cedt_rdpas;
 
+typedef struct {
+	fwts_acpi_table_cedt_header	header;
+	uint16_t	system_cap;
+	uint16_t	reserved;
+} __attribute__ ((packed)) fwts_acpi_table_cedt_csds;
+
 /*
  * ACPI AEST (Arm Error Source Table)
  * https://developer.arm.com/documentation/den0085/latest/
-- 
2.34.1




More information about the fwts-devel mailing list