All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC] ACPI Code First ECR: Generic Target
@ 2021-02-10  3:55 Dan Williams
  2021-02-10 11:23 ` Jonathan Cameron
  2021-02-10 17:02 ` Vikram Sethi
  0 siblings, 2 replies; 18+ messages in thread
From: Dan Williams @ 2021-02-10  3:55 UTC (permalink / raw)
  To: linux-cxl, Linux ACPI
  Cc: Natu, Mahesh, Chet R Douglas, Ben Widawsky, Vishal L Verma

While the platform BIOS is able to describe the performance
characteristics of CXL memory that is present at boot, it is unable to
statically enumerate the performance of CXL memory hot inserted
post-boot. The OS can enumerate most of the characteristics from link
registers and CDAT, but the performance from the CPU to the host
bridge, for example, is not enumerated by PCIE or CXL. Introduce an
ACPI mechanism for this purpose. Critically this is achieved with a
small tweak to how the existing Generic Initiator proximity domain is
utilized in the HMAT.

---

# Title: Introduce a Generic Target for CXL

# Status: Draft

# Document: ACPI Specification 6.4

# License
SPDX-License Identifier: CC-BY-4.0

# Submitter:
* Sponsor: Dan Williams, Intel
* Creators/Contributors:
    * Mahesh Natu, Intel
    * Chet Douglas, Intel
    * Deepak Shivakumar, Intel

# Summary of the Change
Introduce a "Generic Target" concept to the SRAT to describe the root
performance parameters in the path to dynamically discovered (outside of
ACPI enumeration) CXL memory target endpoints.

# Benefits of the Change
Consider the case of a system with a set of CXL host bridges (ACPI0016),
and no devices attached at initial system power-on. In this scenario
platform firmware is unable to perform the end-to-end enumeration
necessary to populate SRAT and HMAT for the endpoints that may be
hot-inserted behind those bridges post power-on. The address-range is
unknown so SRAT can not be pre-populated, the performance is unknown (no
CDAT nor interleave configuration) so HMAT can not be pre-populated.

However, what is known to platform firmware that generates the SRAT and
HMAT is the performance characteristics of the path between CPU and
Generic Initiators to the CXL host bridge target. With either
CPU-to-Generic-Target, or Generic-Initiator-to-Generic-Target entries in
the HMAT the OS CXL subsystem can enumerate the remaining details (PCIE
link status, device CDAT, interleave configuration) to calculate the
bandwidth and latency of a dynamically discovered CXL memory target.

# Impact of the Change
The existing Generic Initiator Affinity Structure (ACPI 6.4 Section
5.2.16.6) already contains all the fields necessary to enumerate a
generic target proximity domain. All that is missing is the
interpretation of that proximity domain optionally as a target
identifier in the HMAT.

Given that the OS still needs to dynamically enumerate and instantiate
the memory ranges behind the host bridge. The assumption is that
operating systems that do not support native CXL enumeration will ignore
this data in the HMAT, while CXL native enumeration aware environments
will use this fragment of the performance path to calculate the
performance characteristics.

# References
* Compute Express Link Specification v2.0,
<https://www.computeexpresslink.org/>

# Detailed Description of the Change

* Replace "Generic Initiator" with "Generic Initiator / Target" in all
locations except where an "initiator" or "target" is implied.
Specifically 5.2.27.3 "Memory Proximity Domain Attributes Structure"
need not replace occurrences of "generic initiator" in field: "Proximity
Domain for Attached Initiator". Additionally field: "Proximity Domain
for the Memory" must be renamed to "Proximity Domain for the Memory /
Generic Target" with a new description "Integer that represents the
memory / generic target proximity domain to which this memory belongs."

* Revise "5.2.16.6 Generic Initiator Affinity Structure" to make it
  consistent with being referenced as either a target or initiator.

        * Description: (replace all text)

        > The Generic Initiator / Target Affinity Structure provides the
        > association between a Generic Initiator and a Memory Proximity
        > Domain, or another Generic Target Proximity Domain. The
        > distinction as to whether this structure represents an
        > Initiator, a Target, or both depends on how it is referenced
        > in the HMAT. See Section 5.2.27.3 for details.

        > Support of Generic Initiator / Target Affinity Structures by
        > OSPM is optional, and the platform may query whether the OS
        > supports it via the _OSC method. See Section 6.2.11.2.

        * Architectural transactions: (append after current text)

        > If this proximity domain is referenced as a target then it
        > supports all the transaction types inferred above.

        * Other updates are simple Initiator => Initiator / Target
          replacements.

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2021-02-17  9:55 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-10  3:55 [RFC] ACPI Code First ECR: Generic Target Dan Williams
2021-02-10 11:23 ` Jonathan Cameron
2021-02-10 15:18   ` Natu, Mahesh
2021-02-10 16:02     ` Jonathan Cameron
2021-02-10 16:24   ` Dan Williams
2021-02-11  9:42     ` Jonathan Cameron
2021-02-11 17:06       ` Dan Williams
2021-02-12 12:24         ` Jonathan Cameron
2021-02-12 23:51           ` Dan Williams
2021-02-16 11:06             ` Jonathan Cameron
2021-02-16 16:29               ` Dan Williams
2021-02-16 18:06                 ` Jonathan Cameron
2021-02-16 18:22                   ` Dan Williams
2021-02-16 18:58                     ` Jonathan Cameron
2021-02-16 19:41                       ` Dan Williams
2021-02-17  9:53                         ` Jonathan Cameron
2021-02-10 17:02 ` Vikram Sethi
2021-02-12  0:13   ` Natu, Mahesh

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.