mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-11-01 00:48:50 +00:00
40ba17afdf
A cxl_decoder is a child of a cxl_port. It represents a hardware decoder configuration of an upstream port to one or more of its downstream ports. The decoder is either represented in CXL standard HDM decoder registers (see CXL 2.0 section 8.2.5.12 CXL HDM Decoder Capability Structure), or it is a static decode configuration communicated by platform firmware (see the CXL Early Discovery Table: Fixed Memory Window Structure). The firmware described and hardware described decoders differ slightly leading to 2 different sub-types of decoders, cxl_decoder_root and cxl_decoder_switch. At the root level the decode capabilities restrict what can be mapped beneath them. Mid-level switch decoders are configured for either acclerator (type-2) or memory-expander (type-3) operation, but they are otherwise agnostic to the type of memory (volatile vs persistent) being mapped. Here is an example topology from a single-ported host-bridge environment without CFMWS decodes enumerated. /sys/bus/cxl/devices/root0 ├── devtype ├── dport0 -> ../../../LNXSYSTM:00/LNXSYBUS:00/ACPI0016:00 ├── port1 │ ├── decoder1.0 │ │ ├── devtype │ │ ├── locked │ │ ├── size │ │ ├── start │ │ ├── subsystem -> ../../../../../../bus/cxl │ │ ├── target_list │ │ ├── target_type │ │ └── uevent │ ├── devtype │ ├── dport0 -> ../../../../pci0000:34/0000:34:00.0 │ ├── subsystem -> ../../../../../bus/cxl │ ├── uevent │ └── uport -> ../../../../LNXSYSTM:00/LNXSYBUS:00/ACPI0016:00 ├── subsystem -> ../../../../bus/cxl ├── uevent └── uport -> ../../ACPI0017:00 Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Link: https://lore.kernel.org/r/162325695128.2293823.17519927266014762694.stgit@dwillia2-desk3.amr.corp.intel.com Signed-off-by: Dan Williams <dan.j.williams@intel.com>
129 lines
4.8 KiB
Text
129 lines
4.8 KiB
Text
What: /sys/bus/cxl/devices/memX/firmware_version
|
|
Date: December, 2020
|
|
KernelVersion: v5.12
|
|
Contact: linux-cxl@vger.kernel.org
|
|
Description:
|
|
(RO) "FW Revision" string as reported by the Identify
|
|
Memory Device Output Payload in the CXL-2.0
|
|
specification.
|
|
|
|
What: /sys/bus/cxl/devices/memX/ram/size
|
|
Date: December, 2020
|
|
KernelVersion: v5.12
|
|
Contact: linux-cxl@vger.kernel.org
|
|
Description:
|
|
(RO) "Volatile Only Capacity" as bytes. Represents the
|
|
identically named field in the Identify Memory Device Output
|
|
Payload in the CXL-2.0 specification.
|
|
|
|
What: /sys/bus/cxl/devices/memX/pmem/size
|
|
Date: December, 2020
|
|
KernelVersion: v5.12
|
|
Contact: linux-cxl@vger.kernel.org
|
|
Description:
|
|
(RO) "Persistent Only Capacity" as bytes. Represents the
|
|
identically named field in the Identify Memory Device Output
|
|
Payload in the CXL-2.0 specification.
|
|
|
|
What: /sys/bus/cxl/devices/*/devtype
|
|
Date: June, 2021
|
|
KernelVersion: v5.14
|
|
Contact: linux-cxl@vger.kernel.org
|
|
Description:
|
|
CXL device objects export the devtype attribute which mirrors
|
|
the same value communicated in the DEVTYPE environment variable
|
|
for uevents for devices on the "cxl" bus.
|
|
|
|
What: /sys/bus/cxl/devices/portX/uport
|
|
Date: June, 2021
|
|
KernelVersion: v5.14
|
|
Contact: linux-cxl@vger.kernel.org
|
|
Description:
|
|
CXL port objects are enumerated from either a platform firmware
|
|
device (ACPI0017 and ACPI0016) or PCIe switch upstream port with
|
|
CXL component registers. The 'uport' symlink connects the CXL
|
|
portX object to the device that published the CXL port
|
|
capability.
|
|
|
|
What: /sys/bus/cxl/devices/portX/dportY
|
|
Date: June, 2021
|
|
KernelVersion: v5.14
|
|
Contact: linux-cxl@vger.kernel.org
|
|
Description:
|
|
CXL port objects are enumerated from either a platform firmware
|
|
device (ACPI0017 and ACPI0016) or PCIe switch upstream port with
|
|
CXL component registers. The 'dportY' symlink identifies one or
|
|
more downstream ports that the upstream port may target in its
|
|
decode of CXL memory resources. The 'Y' integer reflects the
|
|
hardware port unique-id used in the hardware decoder target
|
|
list.
|
|
|
|
What: /sys/bus/cxl/devices/decoderX.Y
|
|
Date: June, 2021
|
|
KernelVersion: v5.14
|
|
Contact: linux-cxl@vger.kernel.org
|
|
Description:
|
|
CXL decoder objects are enumerated from either a platform
|
|
firmware description, or a CXL HDM decoder register set in a
|
|
PCIe device (see CXL 2.0 section 8.2.5.12 CXL HDM Decoder
|
|
Capability Structure). The 'X' in decoderX.Y represents the
|
|
cxl_port container of this decoder, and 'Y' represents the
|
|
instance id of a given decoder resource.
|
|
|
|
What: /sys/bus/cxl/devices/decoderX.Y/{start,size}
|
|
Date: June, 2021
|
|
KernelVersion: v5.14
|
|
Contact: linux-cxl@vger.kernel.org
|
|
Description:
|
|
The 'start' and 'size' attributes together convey the physical
|
|
address base and number of bytes mapped in the decoder's decode
|
|
window. For decoders of devtype "cxl_decoder_root" the address
|
|
range is fixed. For decoders of devtype "cxl_decoder_switch" the
|
|
address is bounded by the decode range of the cxl_port ancestor
|
|
of the decoder's cxl_port, and dynamically updates based on the
|
|
active memory regions in that address space.
|
|
|
|
What: /sys/bus/cxl/devices/decoderX.Y/locked
|
|
Date: June, 2021
|
|
KernelVersion: v5.14
|
|
Contact: linux-cxl@vger.kernel.org
|
|
Description:
|
|
CXL HDM decoders have the capability to lock the configuration
|
|
until the next device reset. For decoders of devtype
|
|
"cxl_decoder_root" there is no standard facility to unlock them.
|
|
For decoders of devtype "cxl_decoder_switch" a secondary bus
|
|
reset, of the PCIe bridge that provides the bus for this
|
|
decoders uport, unlocks / resets the decoder.
|
|
|
|
What: /sys/bus/cxl/devices/decoderX.Y/target_list
|
|
Date: June, 2021
|
|
KernelVersion: v5.14
|
|
Contact: linux-cxl@vger.kernel.org
|
|
Description:
|
|
Display a comma separated list of the current decoder target
|
|
configuration. The list is ordered by the current configured
|
|
interleave order of the decoder's dport instances. Each entry in
|
|
the list is a dport id.
|
|
|
|
What: /sys/bus/cxl/devices/decoderX.Y/cap_{pmem,ram,type2,type3}
|
|
Date: June, 2021
|
|
KernelVersion: v5.14
|
|
Contact: linux-cxl@vger.kernel.org
|
|
Description:
|
|
When a CXL decoder is of devtype "cxl_decoder_root", it
|
|
represents a fixed memory window identified by platform
|
|
firmware. A fixed window may only support a subset of memory
|
|
types. The 'cap_*' attributes indicate whether persistent
|
|
memory, volatile memory, accelerator memory, and / or expander
|
|
memory may be mapped behind this decoder's memory window.
|
|
|
|
What: /sys/bus/cxl/devices/decoderX.Y/target_type
|
|
Date: June, 2021
|
|
KernelVersion: v5.14
|
|
Contact: linux-cxl@vger.kernel.org
|
|
Description:
|
|
When a CXL decoder is of devtype "cxl_decoder_switch", it can
|
|
optionally decode either accelerator memory (type-2) or expander
|
|
memory (type-3). The 'target_type' attribute indicates the
|
|
current setting which may dynamically change based on what
|
|
memory regions are activated in this decode hierarchy.
|