2. ASIA 2013 (LCA13)
www.linaro.org
What is ACPI?
ACPI == Advanced Configuration and Power Interface
As usual, an overloaded term:
A specification (4.0a, 5.0: http://www.acpi.info)
An implementation (MS Windows, Linux drivers)
The tables, objects and methods that create an instance for specific
hardware
A text or binary representation of an instance (ASL or AML)
A reference implementation (ACPICA: http://www.acpica.org)
User-space tools
Why do we care?
Expected in the enterprise environment: it is a known
Manufacturer demand (SoC vendors, Server OEMs)
Standardization for AArch64 (e.g., UEFI)
Issues:
Governance in producing the specification
3. ASIA 2013 (LCA13)
www.linaro.org
Hardware
Register
Blocks
What Does ACPI Look Like?
RSD Ptr
Pointer
Pointer
Root System Description Pointer
Header
XSDT
Entry
.....
Entry
Entry
Extended System Description Table
Header
FACP
Static Info
BLKs
DSDT
FIRM
Fixed ACPI Description Table
Header
FACS
Wake Vector
Shared Lock
Firmware ACPI Control Structure
Header
DSDT
Differentiated System Description Table
Differentiated
Definition
Block
Header
Sig
Contents
Header
Sig
Contents
..... ACPI Driver
Software
Hardware
Hardware
Register
Blocks
Hardware
Register
Blocks
Port Space
OEM Specific
Device I/O
Device Memory
PCI Configuration
Embedded Controller Space
4. ASIA 2013 (LCA13)
www.linaro.org
What's in the Tables?
ACPI can describe:
System power management
Device power management
Processor power management
Configuration / Plug and Play
System events
Battery management
Thermal management
Embedded controller
SMBus controller
AML: ACPI Machine Language
Describe the above in ASL (ACPI Source Language)
Use iasl (in the ACPICA user tools) to compile to tables containing
AML methods and objects
Load via UEFI and pass to kernel driver
5. ASIA 2013 (LCA13)
www.linaro.org
Where Are We?
Notes:
[0] OSL is provided by ACPICA, and incorporated in each OS
[1] Packaged and submitted for all distros, pending inclusion
[2] Boots, does little else, based on Linaro kernel
[3] Best estimate based on documentation available
[4] TBD; we assume at least as much as was done in 4.0a, but still verifying
6. ASIA 2013 (LCA13)
www.linaro.org
The Plan
Goal: provide ACPI feature parity for ARMv8 Linux
Phases:
0: Proof of Concept on ARMv7
Goal: push the power button and have ACPI handle it
Result: prototype implementation
1: Core Support for ARMv7
Goal: provide basic functionality for inclusion upstream
Result: ACPI for ARMv7 in upstream, Arndale tables
2: Adapt Core Support to ARMv8
Goal: provide basic functionality for inclusion upstream
Result: ACPI for ARMv8 in upstream, VE tables
3: Add Support for Additional Requirements for ARMv8
Goal: feature parity with x86
Result: robust ACPI for ARMv8 upstream, robust VE tables
7. ASIA 2013 (LCA13)
www.linaro.org
Implementation State
Phase 0: Proof of Concept for ARMv7
User Space:
ACPICA 20130214 packages prepared, submitted to Fedora, Debian and
Linaro PPA
Inclusion pending distro acceptance
Integration of test suites into LAVA in progress
Linux Kernel:
git clone -b acpi git://git.linaro.org/people/ahs3/arndale-acpi.git
Config options added
Kernel and modules build with skeleton driver
Kernel boots, ACPI loads and makes debug tools available
To Do:
Write ASL for power button
Fill in the blanks to actully load tables (U-boot, then UEFI)
Fill in the blanks for event handling
Verify correct AML debugger and method execution
8. More about Linaro Connect: www.linaro.org/connect/
More about Linaro: www.linaro.org/about/
More about Linaro engineering: www.linaro.org/engineering/
ASIA 2013 (LCA13)