1
- =====================
2
- ACPI on ARMv8 Servers
3
- =====================
1
+ ===================
2
+ ACPI on Arm systems
3
+ ===================
4
4
5
- ACPI can be used for ARMv8 general purpose servers designed to follow
6
- the ARM SBSA (Server Base System Architecture) [0] and SBBR (Server
5
+ ACPI can be used for Armv8 and Armv9 systems designed to follow
6
+ the Arm SBSA (Server Base System Architecture) [0] and SBBR (Server
7
7
Base Boot Requirements) [1] specifications. Please note that the SBBR
8
8
can be retrieved simply by visiting [1], but the SBSA is currently only
9
9
available to those with an ARM login due to ARM IP licensing concerns.
10
10
11
- The ARMv8 kernel implements the reduced hardware model of ACPI version
11
+
12
+ The Arm kernel implements the reduced hardware model of ACPI version
12
13
5.1 or later. Links to the specification and all external documents
13
14
it refers to are managed by the UEFI Forum. The specification is
14
15
available at http://www.uefi.org/specifications and documents referenced
15
16
by the specification can be found via http://www.uefi.org/acpi.
16
17
17
- If an ARMv8 system does not meet the requirements of the SBSA and SBBR ,
18
+ If an Arm system does not meet the requirements of the BSA and BBR ,
18
19
or cannot be described using the mechanisms defined in the required ACPI
19
20
specifications, then ACPI may not be a good fit for the hardware.
20
21
21
22
While the documents mentioned above set out the requirements for building
22
- industry-standard ARMv8 servers , they also apply to more than one operating
23
+ industry-standard Arm systems , they also apply to more than one operating
23
24
system. The purpose of this document is to describe the interaction between
24
- ACPI and Linux only, on an ARMv8 system -- that is, what Linux expects of
25
+ ACPI and Linux only, on an Arm system -- that is, what Linux expects of
25
26
ACPI and what ACPI can expect of Linux.
26
27
27
28
28
- Why ACPI on ARM ?
29
+ Why ACPI on Arm ?
29
30
----------------
30
31
Before examining the details of the interface between ACPI and Linux, it is
31
32
useful to understand why ACPI is being used. Several technologies already
32
33
exist in Linux for describing non-enumerable hardware, after all. In this
33
34
section we summarize a blog post [2] from Grant Likely that outlines the
34
- reasoning behind ACPI on ARMv8 servers . Actually, we snitch a good portion
35
+ reasoning behind ACPI on Arm systems . Actually, we snitch a good portion
35
36
of the summary text almost directly, to be honest.
36
37
37
- The short form of the rationale for ACPI on ARM is:
38
+ The short form of the rationale for ACPI on Arm is:
38
39
39
40
- ACPI’s byte code (AML) allows the platform to encode hardware behavior,
40
41
while DT explicitly does not support this. For hardware vendors, being
@@ -47,7 +48,7 @@ The short form of the rationale for ACPI on ARM is:
47
48
48
49
- In the enterprise server environment, ACPI has established bindings (such
49
50
as for RAS) which are currently used in production systems. DT does not.
50
- Such bindings could be defined in DT at some point, but doing so means ARM
51
+ Such bindings could be defined in DT at some point, but doing so means Arm
51
52
and x86 would end up using completely different code paths in both firmware
52
53
and the kernel.
53
54
@@ -108,7 +109,7 @@ recent version of the kernel.
108
109
109
110
Relationship with Device Tree
110
111
-----------------------------
111
- ACPI support in drivers and subsystems for ARMv8 should never be mutually
112
+ ACPI support in drivers and subsystems for Arm should never be mutually
112
113
exclusive with DT support at compile time.
113
114
114
115
At boot time the kernel will only use one description method depending on
@@ -121,11 +122,11 @@ time).
121
122
122
123
Booting using ACPI tables
123
124
-------------------------
124
- The only defined method for passing ACPI tables to the kernel on ARMv8
125
+ The only defined method for passing ACPI tables to the kernel on Arm
125
126
is via the UEFI system configuration table. Just so it is explicit, this
126
127
means that ACPI is only supported on platforms that boot via UEFI.
127
128
128
- When an ARMv8 system boots, it can either have DT information, ACPI tables,
129
+ When an Arm system boots, it can either have DT information, ACPI tables,
129
130
or in some very unusual cases, both. If no command line parameters are used,
130
131
the kernel will try to use DT for device enumeration; if there is no DT
131
132
present, the kernel will try to use ACPI tables, but only if they are present.
@@ -448,15 +449,15 @@ ASWG
448
449
----
449
450
The ACPI specification changes regularly. During the year 2014, for instance,
450
451
version 5.1 was released and version 6.0 substantially completed, with most of
451
- the changes being driven by ARM -specific requirements. Proposed changes are
452
+ the changes being driven by Arm -specific requirements. Proposed changes are
452
453
presented and discussed in the ASWG (ACPI Specification Working Group) which
453
454
is a part of the UEFI Forum. The current version of the ACPI specification
454
455
is 6.1 release in January 2016.
455
456
456
457
Participation in this group is open to all UEFI members. Please see
457
458
http://www.uefi.org/workinggroup for details on group membership.
458
459
459
- It is the intent of the ARMv8 ACPI kernel code to follow the ACPI specification
460
+ It is the intent of the Arm ACPI kernel code to follow the ACPI specification
460
461
as closely as possible, and to only implement functionality that complies with
461
462
the released standards from UEFI ASWG. As a practical matter, there will be
462
463
vendors that provide bad ACPI tables or violate the standards in some way.
@@ -470,12 +471,12 @@ likely be willing to assist in submitting ECRs.
470
471
471
472
Linux Code
472
473
----------
473
- Individual items specific to Linux on ARM , contained in the Linux
474
+ Individual items specific to Linux on Arm , contained in the Linux
474
475
source code, are in the list that follows:
475
476
476
477
ACPI_OS_NAME
477
478
This macro defines the string to be returned when
478
- an ACPI method invokes the _OS method. On ARM64
479
+ an ACPI method invokes the _OS method. On Arm
479
480
systems, this macro will be "Linux" by default.
480
481
The command line parameter acpi_os=<string>
481
482
can be used to set it to some other value. The
0 commit comments