Skip to content

Commit 9781957

Browse files
committed
Add previously approved ECRs
Add the following ECRs which have already been approved as of ACPI-6.4: - Add an ACPI0017 root object - Add a 'Generic Port' Object Signed-off-by: Vishal Verma <[email protected]>
1 parent a531699 commit 9781957

File tree

2 files changed

+171
-0
lines changed

2 files changed

+171
-0
lines changed

acpi_generic_port_ECN.md

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
# Title: Introduce a Generic Port for hotplug memory buses like CXL
2+
3+
# Status: Draft v2
4+
5+
# Document: ACPI Specification 6.4
6+
7+
# License
8+
SPDX-License Identifier: CC-BY-4.0
9+
10+
# Submitter:
11+
* Sponsor: Dan Williams, Intel
12+
* Creators/Contributors:
13+
* Mahesh Natu, Intel
14+
* Chet Douglas, Intel
15+
* Deepak Shivakumar, Intel
16+
* Jonathan Cameron, Huawei
17+
18+
# Changes since v1
19+
* Rename Generic Target to Generic Port and make a new distinct SRAT
20+
type independent of Generic Initiator (Jonathan)
21+
* Clarify that this new "Port" concept is not limited to CXL. It is a
22+
generic way to describe the performance of static paths to
23+
dynamically added system memory (Mahesh)
24+
25+
# Summary of the Change
26+
Introduce a new "Generic Port" type to the SRAT to describe the
27+
performance from CPU and other initiator domains to the root of a CXL
28+
topology, or any other topology that might dynamically add system memory
29+
behind the "Port". This is in support of, but not limited to, the OS
30+
being able to enumerate the performance topology for dynamically added /
31+
discovered CXL Memory Device endpoints.
32+
33+
# Benefits of the Change
34+
Consider the case of a system with a set of CXL Host Bridges (ACPI0016),
35+
and some endpoints attached at boot. In that scenario the platform
36+
firmware is able to enumerate those devices, enumerate and map CXL
37+
memory into the system physical memory address space, and generate the
38+
typical static SRAT/SLIT/HMAT set of tables describing CXL attached
39+
memory. Now, consider the case where devices are dynamically added and
40+
enumerated post boot, i.e. post generation of the static memory tables.
41+
In this scenario platform firmware is unable to perform the end-to-end
42+
enumeration necessary to populate SRAT and HMAT for the endpoints that
43+
may be hot-inserted behind those bridges post power-on. The
44+
address-range is unknown so SRAT can not be pre-populated in the typical
45+
way that hotplug system memory is enumerated. Even if a static address
46+
range was set aside for future hotplug the performance is unknown (no
47+
CDAT nor interleave configuration) so HMAT can not be pre-populated.
48+
49+
However, what is known to platform firmware that generates the
50+
SRAT/SLIT/HMAT and is the performance characteristics of the path
51+
between CPU and Generic Initiators to the Generic Port (e.g. CXL Host
52+
Bridge). With the addition of a Generic Port proximity domain to the
53+
SRAT then the SLIT and HMAT can enumerate the platform-static component
54+
of a given edge in the platform-performance topology graph. It enables
55+
the OS to build out a performance mapping for system memory address
56+
ranges dynamically discovered, or provisioned, behind a Generic Port.
57+
The OS mapping takes into account the Generic Port performance (as
58+
either an initiator or a target), the interleave configuration, and the
59+
bus enumerable performance characteristics (link latency, bandwidth,
60+
switch traversals) to supplement the static HMAT data enumerated at
61+
boot.
62+
63+
# Impact of the Change
64+
A new SRAT type requires non-conforming system software to ignore the
65+
new type in the SRAT, ignore any coordinate in the SLIT that includes
66+
the associated port's proximity domain, and ignore any coordinate in the
67+
HMAT that includes the port's proximity domain as either an initiator or
68+
a target.
69+
70+
In contrast, conforming system software need only consult the Generic
71+
Port data to optionally extend the enumeration and distinguish Port
72+
attached initiators and memory targets from the existing set of
73+
enumerated proximity domains.
74+
75+
A conforming implementation also has the option to ignore the Generic Port
76+
contribution to the performance, in either a row, or col to be considered
77+
by system software that parses SRAT, SLIT, and HMAT. Given that the OS
78+
still needs to dynamically enumerate and instantiate the memory ranges and
79+
initiators behind the Generic Port. The assumption is that operating systems
80+
that do not support native CXL enumeration will ignore this data in the HMAT,
81+
while CXL native enumeration aware environments will use this fragment of the
82+
performance path to calculate the performance characteristics.
83+
84+
# References
85+
* Compute Express Link Specification v2.0,
86+
<https://www.computeexpresslink.org/>
87+
88+
# Detailed Description of the Change
89+
90+
* Section 5.2.16 System Resource Affinity Table (SRAT) add another
91+
bullet for Generic Ports:
92+
93+
* generic ports (e.g. host bridges that can dynamically discover
94+
new initiators and instantiate new memory range targets)
95+
96+
* Add new section 5.2.16.7 Generic Port Affinity Structure:
97+
The Generic Port Affinity Structure provides an association between a
98+
proximity domain number and a device handle representing a Generic
99+
Port (e.g. CXL Host Bridge, or similar device that hosts a dynamic
100+
topology of memory ranges and/or initiators).
101+
102+
Support of Generic Port Affinity Structures by an OSPM is optional.
103+
104+
* Add a table describing the Generic Port Affinity Structure (Table
105+
5.xx):
106+
107+
108+
| Field | Byte Length | Byte Offset | Description |
109+
| :----- | :--- | :--- | :--------------------------- |
110+
| Type | 1 | 0 | 6 Generic Port Structure |
111+
| Length | 1 | 1 | 32 |
112+
| Reserved | 1 | 2 | Reserved and must be zero |
113+
| Device Handle Type | 1 | 3 | Device Handle Type: See 5.2.16.6 Generic Initiator Affinity Structure for the possible device handle types and their format. |
114+
| Proximity Domain | 4 | 4 | The proximity domain to identify the performance of this port in the HMAT. |
115+
| Device Handle | 16 | 8 | Device Handle of the Generic Port, see Table 5.57 and 5.58 for a description of this field. |
116+
| Flags | 4 | 24 | See table 5.59 for a description of this field. |
117+
| Reserved | 4 | 28 | Reserved and must be zero. |
118+
119+
* Replace all instances of "Initiator" with "Initiator / Port" in "Table
120+
5.59 Flags - Generic Initiator Affinity Structure", including the
121+
table name.

add-cxl-acpi0017.md

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# Title: Add CXL Root Object _HID
2+
3+
# Status: Draft
4+
5+
# Document: ACPI Specification 6.4
6+
7+
# License
8+
SPDX-License Identifier: CC-BY-4.0
9+
10+
# Submitter:
11+
* Sponsor: Vishal Verma, Intel
12+
* Creators/Contributors:
13+
* Chet Douglas, Intel
14+
* Ben Widawsky, Intel
15+
* Dan Williams, Intel
16+
* Vishal Verma, Intel
17+
18+
# Summary of the Change
19+
Add “Compute Express Link Root Object” enumeration value to the ACPI Device IDs Table (5.160).
20+
21+
# Benefits of the Change
22+
Compute Express Link (CXL) is a new high-speed CPU-to-Device and CPU-to-
23+
Memory interconnect. The new ACPI Device ID represents a singleton
24+
device that allows the OSPM to trigger the enumeration of the CXL.mem
25+
address space, and indicates the presence of cross Host Bridge
26+
(ACPI0016) interleaved CXL.mem resources.
27+
28+
# Impact of the Change
29+
One new row added to the ACPI Device IDs table (5.160).
30+
31+
# References
32+
* Compute Express Link Specification v2.0,
33+
<https://www.computeexpresslink.org/>
34+
35+
# Detailed Description of the Change
36+
37+
Add “Compute Express Link Root Object” enumeration device
38+
39+
### 5.6.7 Device Class-Specific Objects
40+
41+
Most device objects are controlled through generic objects and ...
42+
43+
Table 5.160 ACPI Device IDs
44+
45+
| Value | Description |
46+
| :--- | :--------------------------- |
47+
| .. | .. |
48+
| ACPI0017 | **Compute Express Link Root Object:** This device represents the root of a CXL capable device hierarchy. It shall be present whenever the platform allows OSPM to dynamically assign CXL endpoints to a platform address space. |
49+
50+
## Special Instructions

0 commit comments

Comments
 (0)