Firmware Test Suite - acpidump utility
This utility loads the ACPI tables and will annotate the tables where possible. This is useful way of inspecting the configuration settings in each table. Tables that are not described in the ACPI specification are dumped out in a hex dump format.
The annotation format is as follows:
TTTT @ xxxxxxxx (ddd bytes) --------------------------- [0xaaa bbbb nn] Text name of field: contents where: TTTT is the name of a table, xxxxxxxx is the address of the table in memory, aaa is the offset of the field in the table (in hex), bbbb is the offset of the field in the table (in decimal), nn is the size of the field in bytes (in decimal)
Note that some fields are bitfields, so these are dumped out as the integer value followed by an annotated dump of the individual bit field values.
for example:
Dump ACPI tables. -------------------------------------------------------------------------------- Test 1 of 1: Dump ACPI tables. RSDP @ f0120 (36 bytes) --------------- [0x000 0000 8] Signature: RSD PTR [0x008 0008 1] Checksum: 0x7f [0x009 0009 6] OEM ID: LENOVO [0x00f 0015 1] Revision: 0x02 [0x010 0016 4] RsdtAddress: 0xdaffe0d4 [0x014 0020 4] Length: 0x00000024 [0x018 0024 8] XsdtAddress: 0x00000000daffe170 [0x020 0032 1] Extended Checksum: 0xb2 [0x021 0033 3] Reserved: 0x00 [0] [0x021 0033 3] Reserved: 0x00 [1] [0x021 0033 3] Reserved: 0x00 [2] RSDT @ daffe0d4 (112 bytes) --------------- [0x000 0000 4] Signature: RSDT [0x004 0004 4] Length: 0x00000070 [0x008 0008 1] Revision: 0x01 [0x009 0009 1] Checksum: 0x8c [0x00a 0010 6] OEM ID: LENOVO [0x010 0016 8] OEM Table ID: TP-G2 [0x018 0024 4] OEM Revision: 0x00001110 [0x01c 0028 4] Creator ID: PTL [0x020 0032 4] Creator Revision: 0x00000002 [0x024 0036 4] Entry 00 FACP: 0xdafe5000 [0x028 0040 4] Entry 01 SLIC: 0xdaffd000 [0x02c 0044 4] Entry 02 TCPA: 0xdaffc000 [0x030 0048 4] Entry 03 SSDT: 0xdaffb000 [0x034 0052 4] Entry 04 SSDT: 0xdaffa000 [0x038 0056 4] Entry 05 SSDT: 0xdaff9000 [0x03c 0060 4] Entry 06 HPET: 0xdafe4000 [0x040 0064 4] Entry 07 APIC: 0xdafe3000 [0x044 0068 4] Entry 08 MCFG: 0xdafe2000 [0x048 0072 4] Entry 09 ECDT: 0xdafe1000 [0x04c 0076 4] Entry 10 FPDT: 0xdafe0000 [0x050 0080 4] Entry 11 ASF!: 0xdafe7000 [0x054 0084 4] Entry 12 UEFI: 0xdafdf000 [0x058 0088 4] Entry 13 UEFI: 0xdafde000 [0x05c 0092 4] Entry 14 POAT: 0xdafdd000 [0x060 0096 4] Entry 15 SSDT: 0xdafdc000 [0x064 0100 4] Entry 16 SSDT: 0xdafdb000 [0x068 0104 4] Entry 17 DMAR: 0xdafda000 [0x06c 0108 4] Entry 18 UEFI: 0xdafd9000 DSDT @ dafe8000 (66130 bytes) --------------- [0x000 0000 4] Signature: DSDT [0x004 0004 4] Length: 0x00010252 [0x008 0008 1] Revision: 0x01 [0x009 0009 1] Checksum: 0x8d [0x00a 0010 6] OEM ID: LENOVO [0x010 0016 8] OEM Table ID: TP-G2 [0x018 0024 4] OEM Revision: 0x00001110 [0x01c 0028 4] Creator ID: INTL [0x020 0032 4] Creator Revision: 0x20061109 Contains 0x1022e bytes of AML byte code FACS @ daf5a000 (64 bytes) --------------- [0x000 0000 4] Signature: FACS [0x004 0004 4] Length: 0x00000040 [0x008 0008 4] H/W Signature: 0x0000a200 [0x00c 0012 4] Waking Vector: 0x00000000 [0x010 0016 4] Global Lock: 0x00000000 [0x014 0020 4] Flags: 0x00000000 [0x018 0024 8] X Waking Vector: 0x0000000000000000 [0x020 0032 1] Version: 0x01 [0x024 0036 4] OSPM Flags: 0x00000000 FACP @ dafe5000 (244 bytes) --------------- [0x000 0000 4] Signature: FACP [0x004 0004 4] Length: 0x000000f4 [0x008 0008 1] Revision: 0x04 [0x009 0009 1] Checksum: 0x50 [0x00a 0010 6] OEM ID: LENOVO [0x010 0016 8] OEM Table ID: TP-G2 [0x018 0024 4] OEM Revision: 0x00001110 [0x01c 0028 4] Creator ID: PTL [0x020 0032 4] Creator Revision: 0x00000002 [0x024 0036 4] FACS Address: 0xdaf5a000 [0x028 0040 4] DSDT Address: 0xdafe8000 [0x02c 0044 1] Model: 0x00 [0x02d 0045 1] PM Profile: 0x02 (Mobile) [0x02e 0046 2] SCI Interrupt: 0x0009 [0x030 0048 4] SMI Command Port: 0x000000b2 [0x034 0052 1] ACPI Enable Value: 0xf2 [0x035 0053 1] ACPI Disable Value: 0xf1 [0x036 0054 1] S4BIOS Command: 0x00 [0x037 0055 1] P-State Control: 0xf3 [0x038 0056 4] PM1A Event Block: 0x00000400 [0x03c 0060 4] PM1B Event Block: 0x00000000 [0x040 0064 4] PM1A Control Block: 0x00000404 [0x044 0068 4] PM1B Control Block: 0x00000000 [0x048 0072 4] PM2 Control Block: 0x00000450 [0x04c 0076 4] PM Timer Block: 0x00000408 [0x050 0080 4] GPE0 Block: 0x00000420 [0x054 0084 4] GPE1 Block: 0x00000000 [0x058 0088 1] PM1 Event Block Length: 0x04 [0x059 0089 1] PM1 Control Block Length: 0x02 [0x05a 0090 1] PM2 Control Block Length: 0x01 [0x05b 0091 1] PM Timer Block Length: 0x04 [0x05c 0092 1] GPE0 Block Length: 0x10 [0x05d 0093 1] GPE1 Block Length: 0x00 [0x05f 0095 1] _CST Support: 0xf4 [0x060 0096 2] C2 Latency: 0x0065 [0x062 0098 2] C3 Latency: 0x03e9 [0x064 0100 2] CPU Cache Size: 0x0000 [0x066 0102 2] CPU Cache Flush Stride: 0x0000 [0x068 0104 1] Duty Cycle Offset: 0x01 [0x069 0105 1] Duty Cycle Width: 0x03 [0x06a 0106 1] RTC Day Alarm Index: 0x0d [0x06b 0107 1] RTC Month Alarm Index: 0x00 [0x06c 0108 1] RTC Century Index: 0x32 [0x06d 0109 2] IA-PC Boot Flags (see below): 0x0013 Legacy Devices Supported (V2): 0x1 8042 present on ports 60/64 (V2): 0x1 VGA Not Present (V4): 0x0 MSI Not Supported (V4): 0x0 PCIe ASPM Not supported (V4): 0x1 CMOS RTC Not Present (V5): 0x0 [0x070 0112 4] Flags (see below): 0x000046ad WBINVD instruction (V1): 0x1 WBINVD flushes all caches (V1): 0x0 All CPUs support C1 (V1): 0x1 C2 works on MP system (V1): 0x1 Control Method Power Button (V1): 0x0 Control Method Sleep Button (V1): 0x1 RTC wake not in fixed reg space (V1): 0x0 RTC can wake system from S4 (V1): 0x1 32 bit PM timer (V1): 0x0 Docking Capability (V1): 0x1 Reset Register Supported (V2): 0x1 Sealed Case (V3): 0x0 Headless, No Video (V3): 0x0 Use native instr. after SLP_TYPx (V3): 0x0 PCI_EXP_WAK bits supported (V4): 0x1 Use patform clock (V4): 0x0 RTC_STS Valid after S4 wake (V4): 0x0 Remote power on capable (V4): 0x0 Use APIC Cluster Model (V4): 0x0 Use APIC Physical Dest. Mode (V4): 0x0 ACPI hardware is not implemented (V5): 0x0 S0 power savings are equal or better than S3 (V5): 0x0 RESERVED: 0x000 [0x074 0116 12] RESET_REG: (Generic Address Structure) [0x074 0116 1] addr_space_id: 0x01 (System I/O) [0x075 0117 1] reg_bit_width: 0x08 [0x076 0118 1] reg_bit_offset: 0x00 [0x077 0119 1] access_width: 0x00 (Undefined (legacy reasons)) [0x078 0120 8] address: 0x0000000000000cf9 [0x080 0128 1] RESET_VALUE: 0x06 [0x084 0132 8] X_FIRMWARE_CTRL: 0x00000000daf5a000 [0x08c 0140 8] X_DSDT: 0x00000000dafe8000 [0x094 0148 12] X_PM1a_EVT_BLK: (Generic Address Structure) [0x094 0148 1] addr_space_id: 0x01 (System I/O) [0x095 0149 1] reg_bit_width: 0x20 [0x096 0150 1] reg_bit_offset: 0x00 [0x097 0151 1] access_width: 0x00 (Undefined (legacy reasons)) [0x098 0152 8] address: 0x0000000000000400 [0x0a0 0160 12] X_PM1b_EVT_BLK: (Generic Address Structure) [0x0a0 0160 1] addr_space_id: 0x01 (System I/O) [0x0a1 0161 1] reg_bit_width: 0x00 [0x0a2 0162 1] reg_bit_offset: 0x00 [0x0a3 0163 1] access_width: 0x00 (Undefined (legacy reasons)) [0x0a4 0164 8] address: 0x0000000000000000 [0x0ac 0172 12] X_PM1a_CNT_BLK: (Generic Address Structure) [0x0ac 0172 1] addr_space_id: 0x01 (System I/O) [0x0ad 0173 1] reg_bit_width: 0x10 [0x0ae 0174 1] reg_bit_offset: 0x00 [0x0af 0175 1] access_width: 0x00 (Undefined (legacy reasons)) [0x0b0 0176 8] address: 0x0000000000000404 [0x0b8 0184 12] X_PM1b_CNT_BLK: (Generic Address Structure) [0x0b8 0184 1] addr_space_id: 0x01 (System I/O) [0x0b9 0185 1] reg_bit_width: 0x00 [0x0ba 0186 1] reg_bit_offset: 0x00 [0x0bb 0187 1] access_width: 0x00 (Undefined (legacy reasons)) [0x0bc 0188 8] address: 0x0000000000000000 [0x0c4 0196 12] X_PM2_CNT_BLK: (Generic Address Structure) [0x0c4 0196 1] addr_space_id: 0x01 (System I/O) [0x0c5 0197 1] reg_bit_width: 0x08 [0x0c6 0198 1] reg_bit_offset: 0x00 [0x0c7 0199 1] access_width: 0x00 (Undefined (legacy reasons)) [0x0c8 0200 8] address: 0x0000000000000450 [0x0d0 0208 12] X_PM_TMR_BLK: (Generic Address Structure) [0x0d0 0208 1] addr_space_id: 0x01 (System I/O) [0x0d1 0209 1] reg_bit_width: 0x20 [0x0d2 0210 1] reg_bit_offset: 0x00 [0x0d3 0211 1] access_width: 0x00 (Undefined (legacy reasons)) [0x0d4 0212 8] address: 0x0000000000000408 [0x0dc 0220 12] X_GPE0_BLK: (Generic Address Structure) [0x0dc 0220 1] addr_space_id: 0x01 (System I/O) [0x0dd 0221 1] reg_bit_width: 0x80 [0x0de 0222 1] reg_bit_offset: 0x00 [0x0df 0223 1] access_width: 0x00 (Undefined (legacy reasons)) [0x0e0 0224 8] address: 0x0000000000000420 [0x0e8 0232 12] X_GPE1_BLK: (Generic Address Structure) [0x0e8 0232 1] addr_space_id: 0x01 (System I/O) [0x0e9 0233 1] reg_bit_width: 0x00 [0x0ea 0234 1] reg_bit_offset: 0x00 [0x0eb 0235 1] access_width: 0x00 (Undefined (legacy reasons)) [0x0ec 0236 8] address: 0x0000000000000000 ... XSDT @ daffe170 (188 bytes) --------------- [0x000 0000 4] Signature: XSDT [0x004 0004 4] Length: 0x000000bc [0x008 0008 1] Revision: 0x01 [0x009 0009 1] Checksum: 0x3a [0x00a 0010 6] OEM ID: LENOVO [0x010 0016 8] OEM Table ID: TP-G2 [0x018 0024 4] OEM Revision: 0x00001110 [0x01c 0028 4] Creator ID: PTL [0x020 0032 4] Creator Revision: 0x00000002 [0x024 0036 8] Entry 00 FACP: 0x00000000dafe5000 [0x02c 0044 8] Entry 01 SLIC: 0x00000000daffd000 [0x034 0052 8] Entry 02 TCPA: 0x00000000daffc000 [0x03c 0060 8] Entry 03 SSDT: 0x00000000daffb000 [0x044 0068 8] Entry 04 SSDT: 0x00000000daffa000 [0x04c 0076 8] Entry 05 SSDT: 0x00000000daff9000 [0x054 0084 8] Entry 06 HPET: 0x00000000dafe4000 [0x05c 0092 8] Entry 07 APIC: 0x00000000dafe3000 [0x064 0100 8] Entry 08 MCFG: 0x00000000dafe2000 [0x06c 0108 8] Entry 09 ECDT: 0x00000000dafe1000 [0x074 0116 8] Entry 10 FPDT: 0x00000000dafe0000 [0x07c 0124 8] Entry 11 ASF!: 0x00000000dafe7000 [0x084 0132 8] Entry 12 UEFI: 0x00000000dafdf000 [0x08c 0140 8] Entry 13 UEFI: 0x00000000dafde000 [0x094 0148 8] Entry 14 POAT: 0x00000000dafdd000 [0x09c 0156 8] Entry 15 SSDT: 0x00000000dafdc000 [0x0a4 0164 8] Entry 16 SSDT: 0x00000000dafdb000 [0x0ac 0172 8] Entry 17 DMAR: 0x00000000dafda000 [0x0b4 0180 8] Entry 18 UEFI: 0x00000000dafd9000
The default mode of this utility is to try and use the host machine's ACPI tables which requires root permissions to be able to load this data from firmware. However, one can load in ACPI tables from other machines using the --dumpfile option. The ACPI tables can be loaded in from the output from acpidump or from using "sudo fwts --dump".
Examples:
sudo fwts acpidump -
..runs the acpidump on your machine and dumps the output to stdout.
fwts acpidump --dumpfile=apcidump.dat -
..runs the tool using ACPI tables in the dump file acpidump.dat as the input and dumps the test results to stdout.
sudo acpidump > acpidump.dat fwts acpidump --dumpfile=acpidump.dat
..dumps the tables using acpidump and loads them in and runs the tool with results appended to results.log
sudo fwts --dump fwts acpidump --dumpfile=acpidump.log -
..dumps the tables using fwts and loads them in and runs the tool with results going to stdout.