| .. SPDX-License-Identifier: GPL-2.0 | |
| ====================================== | |
| Coherent Device Attribute Table (CDAT) | |
| ====================================== | |
| The CDAT provides functional and performance attributes of devices such | |
| as CXL accelerators, switches, or endpoints. The table formatting is | |
| similar to ACPI tables. CDAT data may be parsed by BIOS at boot or may | |
| be enumerated at runtime (after device hotplug, for example). | |
| Terminology: | |
| DPA - Device Physical Address, used by the CXL device to denote the address | |
| it supports for that device. | |
| DSMADHandle - A device unique handle that is associated with a DPA range | |
| defined by the DSMAS table. | |
| =============================================== | |
| Device Scoped Memory Affinity Structure (DSMAS) | |
| =============================================== | |
| The DSMAS contains information such as DSMADHandle, the DPA Base, and DPA | |
| Length. | |
| This table is used by Linux in conjunction with the Device Scoped Latency and | |
| Bandwidth Information Structure (DSLBIS) to determine the performance | |
| attributes of the CXL device itself. | |
| Example :: | |
| Structure Type : 00 [DSMAS] | |
| Reserved : 00 | |
| Length : 0018 <- 24d, size of structure | |
| DSMADHandle : 01 | |
| Flags : 00 | |
| Reserved : 0000 | |
| DPA Base : 0000000040000000 <- 1GiB base | |
| DPA Length : 0000000080000000 <- 2GiB size | |
| ================================================================== | |
| Device Scoped Latency and Bandwidth Information Structure (DSLBIS) | |
| ================================================================== | |
| This table is used by Linux in conjunction with DSMAS to determine the | |
| performance attributes of a CXL device. The DSLBIS contains latency | |
| and bandwidth information based on DSMADHandle matching. | |
| Example :: | |
| Structure Type : 01 [DSLBIS] | |
| Reserved : 00 | |
| Length : 18 <- 24d, size of structure | |
| Handle : 0001 <- DSMAS handle | |
| Flags : 00 <- Matches flag field for HMAT SLLBIS | |
| Data Type : 00 <- Latency | |
| Entry Basee Unit : 0000000000001000 <- Entry Base Unit field in HMAT SSLBIS | |
| Entry : 010000000000 <- First byte used here, CXL LTC | |
| Reserved : 0000 | |
| Structure Type : 01 [DSLBIS] | |
| Reserved : 00 | |
| Length : 18 <- 24d, size of structure | |
| Handle : 0001 <- DSMAS handle | |
| Flags : 00 <- Matches flag field for HMAT SLLBIS | |
| Data Type : 03 <- Bandwidth | |
| Entry Basee Unit : 0000000000001000 <- Entry Base Unit field in HMAT SSLBIS | |
| Entry : 020000000000 <- First byte used here, CXL BW | |
| Reserved : 0000 | |
| ================================================================== | |
| Switch Scoped Latency and Bandwidth Information Structure (SSLBIS) | |
| ================================================================== | |
| The SSLBIS contains information about the latency and bandwidth of a switch. | |
| The table is used by Linux to compute the performance coordinates of a CXL path | |
| from the device to the root port where a switch is part of the path. | |
| Example :: | |
| Structure Type : 05 [SSLBIS] | |
| Reserved : 00 | |
| Length : 20 <- 32d, length of record, including SSLB entries | |
| Data Type : 00 <- Latency | |
| Reserved : 000000 | |
| Entry Base Unit : 00000000000000001000 <- Matches Entry Base Unit in HMAT SSLBIS | |
| <- SSLB Entry 0 | |
| Port X ID : 0100 <- First port, 0100h represents an upstream port | |
| Port Y ID : 0000 <- Second port, downstream port 0 | |
| Latency : 0100 <- Port latency | |
| Reserved : 0000 | |
| <- SSLB Entry 1 | |
| Port X ID : 0100 | |
| Port Y ID : 0001 | |
| Latency : 0100 | |
| Reserved : 0000 | |
| Structure Type : 05 [SSLBIS] | |
| Reserved : 00 | |
| Length : 18 <- 24d, length of record, including SSLB entry | |
| Data Type : 03 <- Bandwidth | |
| Reserved : 000000 | |
| Entry Base Unit : 00000000000000001000 <- Matches Entry Base Unit in HMAT SSLBIS | |
| <- SSLB Entry 0 | |
| Port X ID : 0100 <- First port, 0100h represents an upstream port | |
| Port Y ID : FFFF <- Second port, FFFFh indicates any port | |
| Bandwidth : 1200 <- Port bandwidth | |
| Reserved : 0000 | |
| The CXL driver uses a combination of CDAT, HMAT, SRAT, and other data to | |
| generate "whole path performance" data for a CXL device. |