[PATCH] acpi: acpidump: dump out table descriptions (LP: #1261483)

Colin King colin.king at canonical.com
Mon Dec 16 18:16:59 UTC 2013


From: Colin Ian King <colin.king at canonical.com>

Dump out a more meaningful description of ACPI tables rather
than just the 4 character signature.  Also, add in some more
tables and just dump the raw data for now - these will be
implemented at a later time.

Signed-off-by: Colin Ian King <colin.king at canonical.com>
---
 src/acpi/acpidump/acpidump.c | 111 +++++++++++++++++++++++++++----------------
 1 file changed, 71 insertions(+), 40 deletions(-)

diff --git a/src/acpi/acpidump/acpidump.c b/src/acpi/acpidump/acpidump.c
index 6a491f2..2b2c050 100644
--- a/src/acpi/acpidump/acpidump.c
+++ b/src/acpi/acpidump/acpidump.c
@@ -1643,7 +1643,7 @@ static void acpidump_rasf(fwts_framework *fw, const fwts_acpi_table_info *table)
 
 /*
  *  acpidump_pcct()
- *	dump RASF, see 14 ACPI PCCT (Platform Communications Channel)
+ *	dump PCCT, see 14 ACPI PCCT (Platform Communications Channel)
  *	of version 5.0 ACPI spec.
  */
 static void acpidump_pcct(fwts_framework *fw, const fwts_acpi_table_info *table)
@@ -1851,55 +1851,82 @@ static void acpidump_dbg2(fwts_framework *fw, const fwts_acpi_table_info *table)
 }
 
 typedef struct {
-	const char *name;
+	const char *name;		/* ACPI table signature */
 	void (*func)(fwts_framework *fw, const fwts_acpi_table_info *table);
-	const int  standard_header;
+	const int standard_header;	/* 1 = standard ACPI header */
+	const char *description;	/* table description */
 } acpidump_table_vec;
 
 /* To be implemented */
+#define acpidump_aspt		acpi_dump_raw_table
+#define acpidump_csrt		acpi_dump_raw_table
+#define acpidump_etdt		acpi_dump_raw_table
 #define acpidump_einj		acpi_dump_raw_table
 #define acpidump_hest		acpi_dump_raw_table
+#define acpidump_ibft		acpi_dump_raw_table
+#define acpidump_ivrs		acpi_dump_raw_table
+#define acpidump_mchi		acpi_dump_raw_table
 #define acpidump_msct		acpi_dump_raw_table
+#define acpidump_msdm		acpi_dump_raw_table
 #define acpidump_mpst		acpi_dump_raw_table
+#define acpidump_oemb		acpi_dump_raw_table
+#define acpidump_pmtt		acpi_dump_raw_table
+#define acpidump_waet		acpi_dump_raw_table
+#define acpidump_wdat		acpi_dump_raw_table
+#define acpidump_wdrt		acpi_dump_raw_table
+#define acpidump_wpbt		acpi_dump_raw_table
 
 static const acpidump_table_vec table_vec[] = {
-	{ "APIC", 	acpidump_madt, 	1 },
-	{ "ASF!", 	acpidump_asf, 	1 },
-	{ "BERT", 	acpidump_bert, 	1 },
-	{ "BGRT", 	acpidump_bgrt, 	1 },
-	{ "BOOT", 	acpidump_boot, 	1 },
-	{ "CPEP", 	acpidump_cpep, 	1 },
-	{ "DBG2", 	acpidump_dbg2,	1 },
-	{ "DBGP", 	acpidump_dbgp,	1 },
-	{ "DSDT", 	acpidump_amlcode, 1 },
-	{ "DMAR", 	acpidump_dmar,	1 },
-	{ "ECDT", 	acpidump_ecdt, 	1 },
-	{ "EINJ", 	acpidump_einj, 	1 },
-	{ "ERST", 	acpidump_erst, 	1 },
-	{ "FACP", 	acpidump_fadt, 	1 },
-	{ "FACS", 	acpidump_facs, 	0 },
-	{ "FPDT",	acpidump_fpdt,	1 },
-	{ "GTDT", 	acpidump_gtdt, 	1 },
-	{ "HEST", 	acpidump_hest, 	1 },
-	{ "HPET", 	acpidump_hpet, 	1 },
-	{ "MCFG", 	acpidump_mcfg, 	1 },
-	{ "MPST",	acpidump_mpst,  1 },
-	{ "MSCT", 	acpidump_msct, 	1 },
-	{ "PCCT",	acpidump_pcct,	1 },
-	{ "PSDT", 	acpidump_amlcode, 1 },
-	{ "RASF",	acpidump_rasf,	1 },
-	{ "RSDT", 	acpidump_rsdt, 	1 },
-	{ "RSD PTR ", 	acpidump_rsdp, 	0 },
-	{ "SBST", 	acpidump_sbst,  1 },
-	{ "SPCR",	acpidump_spcr,  1 },
-	{ "SSDT", 	acpidump_amlcode, 1 },
-	{ "SLIT", 	acpidump_slit,  1 },
-	{ "SLIC", 	acpidump_slic,  1 },
-	{ "SRAT", 	acpidump_srat,  1 },
-	{ "TCPA",	acpidump_tcpa,	1 },
-	{ "UEFI", 	acpidump_uefi, 	1 },
-	{ "XSDT", 	acpidump_xsdt, 	1 },
-	{ NULL,		NULL,		0 },
+	{ "APIC", 	acpidump_madt, 	1, "Multiple APIC Description Table" },
+	{ "ASF!", 	acpidump_asf, 	1, "Alert Standard Format Table" },
+	{ "ASPT",	acpidump_aspt,	1, "ACPI System Performance Tuning Table" },
+	{ "BERT", 	acpidump_bert, 	1, "Boot Error Record Table" },
+	{ "BGRT", 	acpidump_bgrt, 	1, "Boot Graphics Resource Table" },
+	{ "BOOT", 	acpidump_boot, 	1, "Simple Boot Flag Table", },
+	{ "CPEP", 	acpidump_cpep, 	1, "Corrected Platform Error Polling Table" },
+	{ "CSRT",	acpidump_csrt,	1, "Core System Resource Table" },
+	{ "DBG2", 	acpidump_dbg2,	1, "Debug Port Table 2" },
+	{ "DBGP", 	acpidump_dbgp,	1, "Debug Port Table", },
+	{ "DSDT", 	acpidump_amlcode, 1, "Differentiated System Description Table" },
+	{ "DMAR", 	acpidump_dmar,	1, "DMA Remapping Table", },
+	{ "ECDT", 	acpidump_ecdt, 	1, "Embedded Controller Boot Resources Table" },
+	{ "EINJ", 	acpidump_einj, 	1, "Error Injection Table" },
+	{ "ERST", 	acpidump_erst, 	1, "Error Record Serialization Table" },
+	{ "ETDT",	acpidump_etdt,	1, "Event Timer Description Table (Obsolete)" },
+	{ "FACP", 	acpidump_fadt, 	1, "Fixed ACPI Description Table" },
+	{ "FACS", 	acpidump_facs, 	0, "Firmware ACPI Control Structure" },
+	{ "FPDT",	acpidump_fpdt,	1, "Firmware Performance Data Table" },
+	{ "GTDT", 	acpidump_gtdt, 	1, "Generic Timer Description Table" },
+	{ "HEST", 	acpidump_hest, 	1, "Hardware Error Source Table" },
+	{ "HPET", 	acpidump_hpet, 	1, "IA-PC High Precision Event Timer Table" },
+	{ "IBFT",	acpidump_ibft,	1, "iSCSI Boot Firmware Table" },
+	{ "IVRS",	acpidump_ivrs,	1, "I/O Virtualization Reporting Structure" },
+	{ "MCFG", 	acpidump_mcfg, 	1, "PCI Express Memory Mapped Config Space Base Address Table" },
+	{ "MCHI", 	acpidump_mchi, 	1, "Management Controller Host Interface Table" },
+	{ "MPST",	acpidump_mpst,  1, "Memory Power State Table" },
+	{ "MSCT", 	acpidump_msct, 	1, "Maximum System Characteristics Table" },
+	{ "MSDM", 	acpidump_msdm, 	1, "Microsoft Data Management Table" },
+	{ "OEMB",	acpidump_oemb,	1, "OEM-define ACPI Table" },
+	{ "PCCT",	acpidump_pcct,	1, "Platform Communications Channel" },
+	{ "PMTT",	acpidump_pmtt,	1, "Platform Memory Topology Table", },
+	{ "PSDT", 	acpidump_amlcode, 1, "Persistent System Description Table" },
+	{ "RASF",	acpidump_rasf,	1, "ACPI RAS Feature Table" },
+	{ "RSDT", 	acpidump_rsdt, 	1, "Root System Description Table" },
+	{ "RSD PTR ", 	acpidump_rsdp, 	0, "Root System Description Pointer" },
+	{ "SBST", 	acpidump_sbst,  1, "Smart Battery Specification Table" },
+	{ "SPCR",	acpidump_spcr,  1, "Serial Port Console Redirection Table" },
+	{ "SSDT", 	acpidump_amlcode, 1, "Secondary System Description Table" },
+	{ "SLIC", 	acpidump_slic,  1, "Microsoft Software License Table" },
+	{ "SLIT", 	acpidump_slit,  1, "System Locality Distance Information Table" },
+	{ "SRAT", 	acpidump_srat,  1, "System Resource Affinity Tanle" },
+	{ "TCPA",	acpidump_tcpa,	1, "Trusted Computing Platform Alliance Capabilities Table" },
+	{ "UEFI", 	acpidump_uefi, 	1, "UEFI ACPI Data Table" },
+	{ "WAET",	acpidump_waet,	1, "Windows ACPI Emulated Devices Table" },
+	{ "WDAT",	acpidump_wdat,	1, "Watch Dog Action Table" },
+	{ "WDRT",	acpidump_wdrt,	1, "Watch Dog Resource Table" },
+	{ "WPBT",	acpidump_wpbt,	1, "Windows Platform Binary Table" },
+	{ "XSDT", 	acpidump_xsdt, 	1, "Extended System Description Table" },
+	{ NULL,		NULL,		0, NULL },
 };
 
 static int acpidump_table(fwts_framework *fw, fwts_acpi_table_info *table)
@@ -1911,6 +1938,10 @@ static int acpidump_table(fwts_framework *fw, fwts_acpi_table_info *table)
 
 	for (i = 0; table_vec[i].name != NULL; i++) {
 		if (strncmp(table_vec[i].name, (char *)data, strlen(table_vec[i].name)) == 0) {
+			if (table_vec[i].description) {
+				fwts_log_info_verbatum(fw, "%s:", table_vec[i].description);
+				fwts_log_nl(fw);
+			}
 			if (table_vec[i].standard_header) {
 				fwts_acpi_table_get_header(&hdr, data);
 				acpidump_hdr(fw, &hdr, length);
-- 
1.8.5.1




More information about the fwts-devel mailing list