Linux ACPI(一) -- 解析ACPI表
描述acpi 如何解析
- 简析 ACPI 表
1.ACPI表
For ACPI on arm64, tables also fall into the following categories:
-
Required: DSDT, FADT, GTDT, MADT, MCFG, RSDP, SPCR, XSDT
-
Recommended: BERT, EINJ, ERST, HEST, PCCT, SSDT
-
Optional: BGRT, CPEP, CSRT, DBG2, DRTM, ECDT, FACS, FPDT, IBFT, IORT, MCHI, MPST, MSCT, NFIT, PMTT, RASF, SBST, SLIT, SPMI, SRAT, STAO, TCPA, TPM2, UEFI, XENV
-
Not supported: BOOT, DBGP, DMAR, ETDT, HPET, IVRS, LPIT, MSDM, OEMx, PSDT, RSDT, SLIC, WAET, WDAT, WDRT, WPBT
1.1.解析ACPI表
root@uos-PC:/sys/firmware/acpi/tables# tree
.
├── APIC
├── data
├── DSDT
├── dynamic
├── FACP
├── FACS
├── MCFG
├── SLIT
└── SRAT
2 directories, 7 files
2.解析工具
2.1.iasl
iasl是一个编译和解析ACPI的工具,在编译UEFI的时候也是必不可少的。默认系统不会安装,需要额外安装:apt install iasl
然后就可以通过iasl命令来解析ACPI文件了,但不能直接在/sys/firmare/acpi/tables上来解析,会报错:
root@uos-PC:/sys/firmware/acpi/tables# iasl -d APIC
Intel ACPI Component Architecture
ASL+ Optimizing Compiler/Disassembler version 20181213
Copyright (c) 2000 - 2018 Intel Corporation
Input file APIC, Length 0x5E (94) bytes
ACPI: APIC 0x0000000000000000 00005E (v01 LOONGS LOONGSON 00000002 LIUX 01000013)
Could not open output file APIC.dsl
先将需要解析的文件拿出来再解析:
root@uos-PC:/home/uos# iasl -d APIC
Intel ACPI Component Architecture
ASL+ Optimizing Compiler/Disassembler version 20181213
Copyright (c) 2000 - 2018 Intel Corporation
Input file APIC, Length 0x5E (94) bytes
ACPI: APIC 0x0000000000000000 00005E (v01 LOONGS LOONGSON 00000002 LIUX 01000013)
Acpi Data Table [APIC] decoded
Formatted output: APIC.dsl - 3519 bytes
root@uos-PC:/home/uos# cat APIC.dsl
[000h 0000 4] Signature : "APIC" [Multiple APIC Description Table (MADT)]
[004h 0004 4] Table Length : 0000005E
[008h 0008 1] Revision : 01
[009h 0009 1] Checksum : 39
[00Ah 0010 6] Oem ID : "LOONGS"
[010h 0016 8] Oem Table ID : "LOONGSON"
[018h 0024 4] Oem Revision : 00000002
[01Ch 0028 4] Asl Compiler ID : "LIUX"
[020h 0032 4] Asl Compiler Revision : 01000013
[024h 0036 4] Local Apic Address : 1FE01400
[028h 0040 4] Flags (decoded below) : 00000001
PC-AT Compatibility : 1
[02Ch 0044 1] Subtable Type : 00 [Processor Local APIC]
[02Dh 0045 1] Length : 08
[02Eh 0046 1] Processor ID : 01
[02Fh 0047 1] Local Apic ID : 00
[030h 0048 4] Flags (decoded below) : 00000001
Processor Enabled : 1
[034h 0052 1] Subtable Type : 00 [Processor Local APIC]
[035h 0053 1] Length : 08
[036h 0054 1] Processor ID : 02
[037h 0055 1] Local Apic ID : 01
[038h 0056 4] Flags (decoded below) : 00000001
Processor Enabled : 1
[03Ch 0060 1] Subtable Type : 00 [Processor Local APIC]
[03Dh 0061 1] Length : 08
[03Eh 0062 1] Processor ID : 03
[03Fh 0063 1] Local Apic ID : 02
[040h 0064 4] Flags (decoded below) : 00000001
Processor Enabled : 1
[044h 0068 1] Subtable Type : 00 [Processor Local APIC]
[045h 0069 1] Length : 08
[046h 0070 1] Processor ID : 04
[047h 0071 1] Local Apic ID : 03
[048h 0072 4] Flags (decoded below) : 00000001
Processor Enabled : 1
[04Ch 0076 1] Subtable Type : 01 [I/O APIC]
[04Dh 0077 1] Length : 0C
[04Eh 0078 1] I/O Apic ID : 00
[04Fh 0079 1] Reserved : 00
[050h 0080 4] Address : 10000000
[054h 0084 4] Interrupt : 00000040
[058h 0088 1] Subtable Type : 04 [Local APIC NMI]
[059h 0089 1] Length : 06
[05Ah 0090 1] Processor ID : 02
[05Bh 0091 2] Flags (decoded below) : 0000
Polarity : 0
Trigger Mode : 0
[05Dh 0093 1] Interrupt Input LINT : 01
Raw Table Data: Length 94 (0x5E)
0000: 41 50 49 43 5E 00 00 00 01 39 4C 4F 4F 4E 47 53 // APIC^....9LOONGS
0010: 4C 4F 4F 4E 47 53 4F 4E 02 00 00 00 4C 49 55 58 // LOONGSON....LIUX
0020: 13 00 00 01 00 14 E0 1F 01 00 00 00 00 08 01 00 // ................
0030: 01 00 00 00 00 08 02 01 01 00 00 00 00 08 03 02 // ................
0040: 01 00 00 00 00 08 04 03 01 00 00 00 01 0C 00 00 // ................
0050: 00 00 00 10 40 00 00 00 04 06 02 00 00 01 // ....@.........
2.2.acpidump
iasl工具获取ACPI表需要从特定目录去拿,比较复杂,这里还可以用一个简单的工具acpidump来获取。它是一系列工具中的一个,可以通过如下的命令来安装:
apt install acpica-tools
acpidump工具需要在root用户下使用:
root@uos-PC:~# acpidump -s (-s来查看现有的表)
ACPI: MCFG 0x0000000000000000 00003C (v01 LOONGS LOONGSON 00000001 LIUX 01000013)
ACPI: APIC 0x0000000000000000 00005E (v01 LOONGS LOONGSON 00000002 LIUX 01000013)
ACPI: SLIT 0x0000000000000000 00002D (v01 LOONGS LOONGSON 00000002 LIUX 01000013)
ACPI: DSDT 0x0000000000000000 00202C (v02 LOONGS LOONGSON 00000002 INTL 20190509)
ACPI: SRAT 0x0000000000000000 0000C0 (v02 LOONGS LOONGSON 00000002 LIUX 01000013)
ACPI: FACP 0x0000000000000000 0000F4 (v03 LOONGS LOONGSON 00000002 LIUX 01000013)
ACPI: FACS 0x0000000000000000 000040
root@uos-PC:~# acpidump -n APIC -b
root@uos-PC:~# ls
APIC apic.dat
root@uos-PC:~# iasl -d apic.dat
更多推荐
所有评论(0)