Check out my first novel, midnight's simulacra!
ACPI: Difference between revisions
From dankwiki
No edit summary |
|||
Line 1: | Line 1: | ||
Not to be confused with [[APIC]]. The second worst type of coder in the world is the kind that [http://geekz.co.uk/lovesraymond/archive/so-i-married-a-kernel-programmer shows up with a bloody shovel]. The worst kind is a [http://dankamongmen.livejournal.com/#entry_298962 BIOS coder]. Upwards and onwards to ACPI, a creation of the [http://www.acpi.info/ Advanced Configuration and Power Interface] group. | Not to be confused with [[APIC]]. The second worst type of coder in the world is the kind that [http://geekz.co.uk/lovesraymond/archive/so-i-married-a-kernel-programmer shows up with a bloody shovel]. The worst kind is a [http://dankamongmen.livejournal.com/#entry_298962 BIOS coder]. Upwards and onwards to ACPI, a creation of the [http://www.acpi.info/ Advanced Configuration and Power Interface] group. | ||
== | ==Specifications== | ||
The current version is 3.0, amended as 3.0a. Version 4.0 is under development. | |||
* [http://www.acpi.info/spec30a.htm ACPI 3.0a] specification | |||
* [http://www.acpi.info/spec30.htm ACPI 3.0] specification | |||
==acpidump/acpixtract== | ==acpidump/acpixtract== | ||
Line 85: | Line 53: | ||
[recombinator](0) $</pre> | [recombinator](0) $</pre> | ||
== | ==DSDT== | ||
Differentiated System Description Tables. | |||
<pre> | |||
[recombinator](0) $ sudo acpidump -t DSDT -b -o acpidump.dsdt | |||
[recombinator](0) $ iasl -d acpidump.dsdt | |||
Intel ACPI Component Architecture | |||
AML Disassembler version 20061109 [Mar 19 2009] | |||
Copyright (C) 2000 - 2006 Intel Corporation | |||
Supports ACPI Specification Revision 3.0a | |||
Loading Acpi table from file acpidump.dsdt | |||
Acpi table [DSDT] successfully installed and loaded | |||
Pass 1 parse of [DSDT] | |||
Pass 2 parse of [DSDT] | |||
Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions) | |||
..................................................... etc | |||
Parsing completed | |||
Disassembly completed, written to "acpidump.dsl" | |||
[recombinator](0) $ </pre> | |||
===Rebuilding a decompiled DSDT=== | |||
<pre>[recombinator](0) $ iasl -tc acpidump.dsl | |||
Intel ACPI Component Architecture | |||
ASL Optimizing Compiler version 20061109 [Mar 19 2009] | |||
Copyright (C) 2000 - 2006 Intel Corporation | |||
Supports ACPI Specification Revision 3.0a | |||
acpidump.dsl 2186: Acquire (MUT0, 0x0FFF) | |||
Warning 1103 - Possible operator timeout is ignored ^ | |||
ASL Input: acpidump.dsl - 5185 lines, 178349 bytes, 1615 keywords | |||
AML Output: acpidump.aml - 15771 bytes 546 named objects 1069 executable opcodes | |||
Compilation complete. 0 Errors, 1 Warnings, 0 Remarks, 597 Optimizations | |||
[recombinator](0) $ </pre> | |||
==SRAT== | |||
[http://lwn.net/Articles/7177/ Linux in 2009] gained support for parsing of the BIOS-provided SRAT table ([http://mail-index.netbsd.org/port-amd64/2009/11/23/msg001026.html NetBSD also had support] by later that year). The SRAT describes memory and processor topology, and the hot-pluggable status of all. | |||
* Use the CONFIG_X86_64_ACPI_NUMA kernel option to enable SRAT-based enumeration of NUMA. | |||
==See also== | ==See also== |
Revision as of 06:27, 23 January 2010
Not to be confused with APIC. The second worst type of coder in the world is the kind that shows up with a bloody shovel. The worst kind is a BIOS coder. Upwards and onwards to ACPI, a creation of the Advanced Configuration and Power Interface group.
Specifications
The current version is 3.0, amended as 3.0a. Version 4.0 is under development.
acpidump/acpixtract
acpidump differs subtly and annoyingly between Debian and FreeBSD.
[recombinator](0) $ sudo acpidump -o recombinator.acpi [recombinator](0) $ acpixtract -l recombinator.acpi Signature Length OemId OemTableId OemRevision CompilerId CompilerRevision DSDT 17452 "INTEL " "DG965WH " 000006C1 "MSFT" 01000013 FACS 64 FACP 116 "INTEL " "DG965WH " 000006C1 "MSFT" 01000013 APIC 120 "INTEL " "DG965WH " 000006C1 "MSFT" 01000013 WDDT 64 "INTEL " "DG965WH " 000006C1 "MSFT" 01000013 MCFG 60 "INTEL " "DG965WH " 000006C1 "MSFT" 01000013 ASF! 166 "INTEL " "DG965WH " 000006C1 "MSFT" 01000013 HPET 56 "INTEL " "DG965WH " 000006C1 "MSFT" 01000013 SSDT 524 "INTEL " "CpuPm " 000006C1 "MSFT" 01000013 SSDT 373 "INTEL " "Cpu0Ist " 000006C1 "MSFT" 01000013 SSDT 373 "INTEL " "Cpu1Ist " 000006C1 "MSFT" 01000013 SSDT 373 "INTEL " "Cpu2Ist " 000006C1 "MSFT" 01000013 SSDT 373 "INTEL " "Cpu3Ist " 000006C1 "MSFT" 01000013 RSDT 80 "INTEL " "DG965WH " 000006C1 " " 01000013 RSDP "INTEL " Found 15 ACPI tables [20060324] [recombinator](0) $ acpixtract recombinator.acpi Acpi table [DSDT] - 17452 bytes written to DSDT.dat Acpi table [SSDT] - 524 bytes written to SSDT1.dat Acpi table [SSDT] - 373 bytes written to SSDT2.dat Acpi table [SSDT] - 373 bytes written to SSDT3.dat Acpi table [SSDT] - 373 bytes written to SSDT4.dat Acpi table [SSDT] - 373 bytes written to SSDT5.dat [recombinator](0) $ iasl -d DSDT.dat Intel ACPI Component Architecture AML Disassembler version 20061109 [May 15 2007] Copyright (C) 2000 - 2006 Intel Corporation Supports ACPI Specification Revision 3.0a Loading Acpi table from file DSDT.dat Acpi table [DSDT] successfully installed and loaded Pass 1 parse of [DSDT] Pass 2 parse of [DSDT] Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions) Parsing completed Disassembly completed, written to "DSDT.dsl" [recombinator](0) $
DSDT
Differentiated System Description Tables.
[recombinator](0) $ sudo acpidump -t DSDT -b -o acpidump.dsdt [recombinator](0) $ iasl -d acpidump.dsdt Intel ACPI Component Architecture AML Disassembler version 20061109 [Mar 19 2009] Copyright (C) 2000 - 2006 Intel Corporation Supports ACPI Specification Revision 3.0a Loading Acpi table from file acpidump.dsdt Acpi table [DSDT] successfully installed and loaded Pass 1 parse of [DSDT] Pass 2 parse of [DSDT] Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions) ..................................................... etc Parsing completed Disassembly completed, written to "acpidump.dsl" [recombinator](0) $
Rebuilding a decompiled DSDT
[recombinator](0) $ iasl -tc acpidump.dsl Intel ACPI Component Architecture ASL Optimizing Compiler version 20061109 [Mar 19 2009] Copyright (C) 2000 - 2006 Intel Corporation Supports ACPI Specification Revision 3.0a acpidump.dsl 2186: Acquire (MUT0, 0x0FFF) Warning 1103 - Possible operator timeout is ignored ^ ASL Input: acpidump.dsl - 5185 lines, 178349 bytes, 1615 keywords AML Output: acpidump.aml - 15771 bytes 546 named objects 1069 executable opcodes Compilation complete. 0 Errors, 1 Warnings, 0 Remarks, 597 Optimizations [recombinator](0) $
SRAT
Linux in 2009 gained support for parsing of the BIOS-provided SRAT table (NetBSD also had support by later that year). The SRAT describes memory and processor topology, and the hot-pluggable status of all.
- Use the CONFIG_X86_64_ACPI_NUMA kernel option to enable SRAT-based enumeration of NUMA.
See also
- Linux ACPI page at http://www.lesswatts.org/projects/acpi/
- Legacy info regarding Linux DSDT replacement
- Intel's ACPI page, including iasl.
- The MADT table can be used to discover SMP topology