Home
last modified time | relevance | path

Searched full:cxl (Results 1 – 25 of 115) sorted by relevance

12345

/linux/drivers/cxl/
H A DKconfig3 tristate "CXL (Compute Express Link) Devices Support"
12 CXL is a bus that is electrically compatible with PCI Express, but
13 layers three protocols on that signalling (CXL.io, CXL.cache, and
14 CXL.mem). The CXL.cache protocol allows devices to hold cachelines
15 locally, the CXL.mem protocol allows devices to be fully coherent
16 memory targets, the CXL.io protocol is equivalent to PCI Express.
27 The CXL specification defines a "CXL memory device" sub-class in the
33 Say 'y/m' to enable a driver that will attach to CXL memory expander
36 Type 3 CXL Device in the CXL 2.0 specification for more details.
44 Enable CXL RAW command interface.
[all …]
H A Dcxl.h15 #include <cxl/cxl.h>
20 * DOC: cxl objects
22 * The CXL core objects like ports, decoders, and regions are shared
27 /* CXL 2.0 8.2.4 CXL Component Register Layout and Definition */
30 /* CXL 2.0 8.2.5 CXL.cache and CXL.mem Registers*/
46 /* HDM decoders CXL 2.0 8.2.5.12 CXL HDM Decoder Capability Structure */
73 /* HDM decoder control register constants CXL 3.0 8.2.5.19.7 */
93 /* Encode defined in CXL 2.0 8.2.5.12.7 HDM Decoder Control Register */
102 /* Encode defined in CXL ECN "3, 6, 12 and 16-way memory Interleaving" */
145 /* RAS Registers CXL 2.0 8.2.5.9 CXL RAS Capability Structure */
[all …]
H A Dacpi.c12 #include "cxl.h"
33 * that nullifies any expectation of trusted parameters from the CXL in cxl_do_xormap_calc()
46 * In regions using XOR interleave arithmetic the CXL HPA may not in cxl_do_xormap_calc()
47 * be the same as the SPA. This helper performs the SPA->CXL HPA in cxl_do_xormap_calc()
48 * or the CXL HPA->SPA translation. Since XOR is self-inverting, in cxl_do_xormap_calc()
57 * XORALLBITS: The CXL spec (3.1 Table 9-22) defines XORALLBITS in cxl_do_xormap_calc()
111 /* Does this CXIMS entry apply to the given CXL Window? */ in cxl_parse_cxims()
347 res->name = kasprintf(GFP_KERNEL, "CXL Window %d", id); in alloc_cxl_resource()
384 * Currently there is only support cache_size == cxl_size. CXL in cxl_setup_extended_linear_cache()
390 "Extended Linear Cache size %pa != CXL size %pa. No Support!", in cxl_setup_extended_linear_cache()
[all …]
/linux/Documentation/driver-api/cxl/
H A Dtheory-of-operation.rst8 A Compute Express Link Memory Device is a CXL component that implements the
9 CXL.mem protocol. It contains some amount of volatile memory, persistent memory,
17 The CXL Bus
20 logical device, the CXL subsystem is tasked to take PCIe and ACPI objects and
21 assemble them into a CXL.mem decode topology. The need for runtime configuration
22 of the CXL.mem topology is also similar to RAID in that different environments
26 and disable any striping in the CXL.mem topology.
28 Platform firmware enumerates a menu of interleave options at the "CXL root port"
29 (Linux term for the top of the CXL decode topology). From there, PCIe topology
38 Here is a sample listing of a CXL topology defined by 'cxl_test'. The 'cxl_test'
[all …]
/linux/Documentation/driver-api/cxl/linux/
H A Dcxl-driver.rst4 CXL Driver Operation
9 /sys/bus/cxl/devices/
10 /dev/cxl/
12 The :code:`cxl-cli` library, maintained as part of the NDTCL project, may
17 The CXL driver is split into a number of drivers.
31 # ls /sys/bus/cxl/devices/
39 :alt: Digraph of CXL fabric describing host-bridge interleaving
40 :caption: Diagraph of CXL fabric with a host-bridge interleave memory region
68 Most devices in a CXL fabric are a `port` of some kind (because each
74 The `CXL Root` is logical object created by the `cxl_acpi` driver during
[all …]
H A Daccess-coordinates.rst5 CXL Access Coordinates Computation
13 not able to annotate those for CXL devices that are hot-plugged since they do
14 not exist during platform firmware initialization. The CXL driver can compute
19 would be the CXL hostbridge. Using this association, the performance
22 performance coordinates between a CPU and a Generic Port (CXL hostbridge).
25 the CXL device itself. That is the bandwidth and latency to access that device's
34 If there's a CXL switch in the topology, then the performance coordinates for the
53 In this example, there is a CXL switch between an endpoint and a root port.
79 See `CXL Memory Device SW Guide r1.0 <https://www.intel.com/content/www/us/en/content-details/64380…
83 or more memory partitions from each of the CXL device(s).
[all …]
H A Ddax-driver.rst8 extended to support CXL Memory Devices, which provide user-configured
11 The CXL subsystem depends on the DAX subsystem to either:
14 - Engage the memory-hotplug interface to add CXL memory to page allocator.
17 A `dax_region` provides the translation between a CXL `memory_region` and
25 CXL capacity in the task's page tables.
27 Users wishing to manually handle allocation of CXL memory should use this
/linux/drivers/nvdimm/
H A Dnd.h33 bool cxl; member
42 if (ndd->cxl) in nsl_ref_name()
43 return nd_label->cxl.name; in nsl_ref_name()
50 if (ndd->cxl) in nsl_get_name()
51 return memcpy(name, nd_label->cxl.name, NSLABEL_NAME_LEN); in nsl_get_name()
60 if (ndd->cxl) in nsl_set_name()
61 return memcpy(nd_label->cxl.name, name, NSLABEL_NAME_LEN); in nsl_set_name()
68 if (ndd->cxl) in nsl_get_slot()
69 return __le32_to_cpu(nd_label->cxl.slot); in nsl_get_slot()
76 if (ndd->cxl) in nsl_set_slot()
[all …]
/linux/drivers/acpi/apei/
H A Deinj-cxl.c3 * CXL Error INJection support. Used by CXL core to inject
4 * protocol errors into CXL ports.
12 #include <cxl/einj.h>
20 { ACPI_EINJ_CXL_CACHE_CORRECTABLE, "CXL.cache Protocol Correctable" },
21 { ACPI_EINJ_CXL_CACHE_UNCORRECTABLE, "CXL.cache Protocol Uncorrectable non-fatal" },
22 { ACPI_EINJ_CXL_CACHE_FATAL, "CXL.cache Protocol Uncorrectable fatal" },
23 { ACPI_EINJ_CXL_MEM_CORRECTABLE, "CXL.mem Protocol Correctable" },
24 { ACPI_EINJ_CXL_MEM_UNCORRECTABLE, "CXL.mem Protocol Uncorrectable non-fatal" },
25 { ACPI_EINJ_CXL_MEM_FATAL, "CXL.mem Protocol Uncorrectable fatal" },
48 EXPORT_SYMBOL_NS_GPL(einj_cxl_available_error_type_show, "CXL");
[all …]
/linux/drivers/firmware/efi/
H A Dcper_cxl.c3 * UEFI Common Platform Error Record (CPER) support for CXL Section.
11 #include <cxl/event.h>
14 "Restricted CXL Device",
15 "Restricted CXL Host Downstream Port",
16 "CXL Device",
17 "CXL Logical Device",
18 "CXL Fabric Manager managed Logical Device",
19 "CXL Root Port",
20 "CXL Downstream Switch Port",
21 "CXL Upstream Switch Port",
[all …]
/linux/Documentation/edac/
H A Dmemory_repair.rst32 For example, a CXL memory device with DRAM components that support PPR
46 For example, for CXL memory devices, see CXL spec rev 3.1 [1]_ sections
68 For example, CXL memory devices can support various subclasses for sparing
77 See CXL spec 3.1 [1]_ section 8.2.9.7.1.4 Memory Sparing Maintenance
80 .. [1] https://computeexpresslink.org/cxl-specification/
90 2. When a CXL device detects an error in a memory component, it informs the
94 that requires repair. The kernel reports the corresponding CXL general
128 1. CXL memory sparing
135 Memory sparing maintenance operations may be supported by CXL devices that
136 implement CXL.mem protocol. A sparing maintenance operation requests the
[all …]
H A Dscrub.rst52 identified, such as CXL memory device patrol scrub, CXL DDR5 ECS, ACPI
68 identified, including the CXL memory device patrol scrub, CXL DDR5 ECS,
73 control over patrol (background) scrubbing (e.g., ACPI RAS2, CXL) and/or
97 be a system-wide BIOS or similar control to manage scrub settings for a CXL
107 CXL Memory Scrubbing features
110 CXL spec r3.1 [1]_ section 8.2.9.9.11.1 describes the memory device patrol
113 userspace request to change CXL patrol scrubber's configurations.
118 scrub rate that the device is capable of. In the CXL driver, the
129 CXL spec r3.1 [1]_ section 8.2.9.9.11.2 describes Error Check Scrub (ECS)
190 .. [1] https://computeexpresslink.org/cxl-specification/
[all …]
/linux/Documentation/admin-guide/perf/
H A Dcxl.rst4 CXL Performance Monitoring Unit (CPMU)
7 The CXL rev 3.0 specification provides a definition of CXL Performance
10 CXL components (e.g. Root Port, Switch Upstream Port, End Point) may have
12 the devices. The specification provides event definitions for all CXL protocol
14 CXL devices (e.g. DRAM events).
19 The CPMU driver registers a perf PMU with the name pmu_mem<X>.<Y> on the CXL bus
22 /sys/bus/cxl/device/pmu_mem<X>.<Y>
28 In common with other CXL bus devices, the id has no specific meaning and the
29 relationship to specific CXL device should be established via the device parent
30 of the device on the CXL bus.
/linux/Documentation/driver-api/cxl/linux/example-configurations/
H A Dsingle-device.rst6 This cxl-cli configuration dump shows the following host configuration:
8 * A single socket system with one CXL root
9 * CXL Root has Four (4) CXL Host Bridges
10 * One CXL Host Bridges has a single CXL Memory Expander Attached
13 This output is generated by :code:`cxl list -v` and describes the relationships
14 between objects exposed in :code:`/sys/bus/cxl/devices/`.
21 "provider":"ACPI.CXL",
46 This chunk shows the CXL "bus" (root0) has 4 downstream ports attached to CXL
79 This chunk shows the available downstream ports associated with the CXL Host
145 The next chunk shows the three CXL host bridges without attached endpoints.
[all …]
H A Dhb-interleave.rst6 This cxl-cli configuration dump shows the following host configuration:
8 * A single socket system with one CXL root
9 * CXL Root has Four (4) CXL Host Bridges
10 * Two CXL Host Bridges have a single CXL Memory Expander Attached
11 * The CXL root is configured to interleave across the two host bridges.
13 This output is generated by :code:`cxl list -v` and describes the relationships
14 between objects exposed in :code:`/sys/bus/cxl/devices/`.
21 "provider":"ACPI.CXL",
46 This chunk shows the CXL "bus" (root0) has 4 downstream ports attached to CXL
79 This chunk shows the available downstream ports associated with the CXL Host
[all …]
H A Dintra-hb-interleave.rst6 This cxl-cli configuration dump shows the following host configuration:
8 * A single socket system with one CXL root
9 * CXL Root has Four (4) CXL Host Bridges
10 * One (1) CXL Host Bridges has two CXL Memory Expanders Attached
13 This output is generated by :code:`cxl list -v` and describes the relationships
14 between objects exposed in :code:`/sys/bus/cxl/devices/`.
21 "provider":"ACPI.CXL",
46 This chunk shows the CXL "bus" (root0) has 4 downstream ports attached to CXL
79 This chunk shows the available downstream ports associated with the CXL Host
183 The next chunk shows the three CXL host bridges without attached endpoints.
[all …]
H A Dmulti-interleave.rst6 This cxl-cli configuration dump shows the following host configuration:
8 * A single socket system with one CXL root
9 * CXL Root has Four (4) CXL Host Bridges
10 * Two CXL Host Bridges have a two CXL Memory Expanders Attached each.
11 * The CXL root is configured to interleave across the two host bridges.
14 This output is generated by :code:`cxl list -v` and describes the relationships
15 between objects exposed in :code:`/sys/bus/cxl/devices/`.
22 "provider":"ACPI.CXL",
47 This chunk shows the CXL "bus" (root0) has 4 downstream ports attached to CXL
80 This chunk shows the available downstream ports associated with the CXL Host
[all …]
/linux/drivers/cxl/core/
H A Dpmem.c7 #include <cxl.h>
11 * DOC: cxl pmem
13 * The core CXL PMEM infrastructure supports persistent memory
14 * provisioning and serves as a bridge to the LIBNVDIMM subsystem. A CXL
15 * 'bridge' device is added at the root of a CXL device topology if
17 * CXL window. That root-level bridge corresponds to a LIBNVDIMM 'bus'
18 * device. Then for each cxl_memdev in the CXL device topology a bridge
20 * are registered native LIBNVDIMM uapis are translated to CXL
52 EXPORT_SYMBOL_NS_GPL(to_cxl_nvdimm_bridge, "CXL");
57 * root-cxl-port
[all …]
H A Dport.c13 #include <cxl/einj.h>
16 #include <cxl.h>
20 * DOC: cxl core
22 * The CXL core provides a set of interfaces that can be consumed by CXL aware
24 * regions, memory devices, ports, and decoders. CXL aware drivers must register
25 * with the CXL core via these interfaces in order to be able to participate in
26 * cross-device interleave coordination. The CXL core also establishes and
29 * CXL core introduces sysfs hierarchy to control the devices that are
453 EXPORT_SYMBOL_NS_GPL(to_cxl_root_decoder, "CXL");
487 EXPORT_SYMBOL_NS_GPL(is_endpoint_decoder, "CXL");
[all …]
/linux/Documentation/firmware-guide/acpi/apei/
H A Deinj.rst35 ...and to (optionally) enable CXL protocol error injection set::
137 CXL error types are supported from ACPI 6.5 onwards (given a CXL port
138 is present). The EINJ user interface for CXL error types is at
139 <debugfs mount point>/cxl. The following files belong to it:
144 for CXL error types
148 Injects a CXL error type into the CXL port represented by $dport_dev,
149 where $dport_dev is the name of the CXL port (usually a PCIe device name).
150 Error injections targeting a CXL 2.0+ port can use the legacy interface
151 under <debugfs mount point>/apei/einj, while CXL 1.1/1.0 port injections
239 A CXL error injection example with $dport_dev=0000:e0:01.1::
[all …]
/linux/Documentation/driver-api/cxl/allocation/
H A Dhugepages.rst9 CXL Memory onlined as SystemRAM during early boot is eligible for use by CMA,
13 CXL Memory deferred to the CXL Driver for configuration cannot have its
23 All CXL capacity regardless of configuration time or memory zone is eligible
28 CXL capacity onlined in :code:`ZONE_NORMAL` is eligible for 1GB Gigantic Page
31 CXL capacity onlined in :code:`ZONE_MOVABLE` is not eligible for 1GB Gigantic
H A Dpage-allocator.rst8 as :code:`kmalloc`. CXL configuration steps affect the behavior of the page
21 Generally, we expect to see local DRAM and CXL memory on separate NUMA nodes,
22 with the CXL memory being non-local. Technically, however, it is possible
23 for a compute node to have no local DRAM, and for CXL memory to be the
29 CXL capacity may be onlined in :code:`ZONE_NORMAL` or :code:`ZONE_MOVABLE`.
46 Finally, assuming CXL memory is reachable via the page allocation (i.e. onlined
53 prevent demotions of shared data to CXL memory (if demotions are enabled).
/linux/Documentation/driver-api/cxl/platform/example-configurations/
H A Dflexible.rst6 This system has a single socket with two CXL host bridges. Each host bridge
7 has two CXL memory expanders with a 4GB of memory (32GB total).
23 Subtable Type : 00 [CXL Host Bridge Structure]
32 Subtable Type : 00 [CXL Host Bridge Structure]
41 Subtable Type : 01 [CXL Fixed Memory Window Structure]
56 Subtable Type : 01 [CXL Fixed Memory Window Structure]
70 Subtable Type : 01 [CXL Fixed Memory Window Structure]
84 Subtable Type : 01 [CXL Fixed Memory Window Structure]
98 Subtable Type : 01 [CXL Fixed Memory Window Structure]
112 Subtable Type : 01 [CXL Fixed Memory Window Structure]
[all …]
/linux/include/uapi/cxl/
H A Dfeatures.h5 * These are definitions for the mailbox command interface of CXL subsystem.
33 * Get Supported Features (0x500h) CXL r3.2 8.2.9.6.1 command.
42 /* CXL spec r3.2 Table 8-87 command effects */
68 * CXL spec r3.2 Table 8-109
96 * CXL spec r3.2 Table 8-108
109 * Get Feature CXL spec r3.2 Spec 8.2.9.6.2
119 * CXL spec r3.2 section 8.2.9.6.2 Table 8-99
139 * Set Feature CXL spec r3.2 8.2.9.6.3
151 * CXL spec r3.2 section 8.2.9.6.3 Table 8-101
/linux/Documentation/driver-api/cxl/platform/
H A Dcdat.rst8 as CXL accelerators, switches, or endpoints. The table formatting is
13 DPA - Device Physical Address, used by the CXL device to denote the address
29 attributes of the CXL device itself.
48 performance attributes of a CXL device. The DSLBIS contains latency
60 Entry : 010000000000 <- First byte used here, CXL LTC
70 Entry : 020000000000 <- First byte used here, CXL BW
80 The table is used by Linux to compute the performance coordinates of a CXL path
117 The CXL driver uses a combination of CDAT, HMAT, SRAT, and other data to
118 generate "whole path performance" data for a CXL device.

12345