| What: /sys/bus/cxl/flush | |
| Date: January, 2022 | |
| KernelVersion: v5.18 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (WO) If userspace manually unbinds a port the kernel schedules | |
| all descendant memdevs for unbind. Writing '1' to this attribute | |
| flushes that work. | |
| 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/payload_max | |
| Date: December, 2020 | |
| KernelVersion: v5.12 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (RO) Maximum size (in bytes) of the mailbox command payload | |
| registers. Linux caps this at 1MB if the device reports a | |
| larger size. | |
| What: /sys/bus/cxl/devices/memX/label_storage_size | |
| Date: May, 2021 | |
| KernelVersion: v5.13 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (RO) Size (in bytes) of the Label Storage Area (LSA). | |
| 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/ram/qos_class | |
| Date: May, 2023 | |
| KernelVersion: v6.8 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (RO) For CXL host platforms that support "QoS Telemetry" | |
| this attribute conveys a comma delimited list of platform | |
| specific cookies that identifies a QoS performance class | |
| for the volatile partition of the CXL mem device. These | |
| class-ids can be compared against a similar "qos_class" | |
| published for a root decoder. While it is not required | |
| that the endpoints map their local memory-class to a | |
| matching platform class, mismatches are not recommended | |
| and there are platform specific performance related | |
| side-effects that may result. First class-id is displayed. | |
| 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/memX/pmem/qos_class | |
| Date: May, 2023 | |
| KernelVersion: v6.8 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (RO) For CXL host platforms that support "QoS Telemetry" | |
| this attribute conveys a comma delimited list of platform | |
| specific cookies that identifies a QoS performance class | |
| for the persistent partition of the CXL mem device. These | |
| class-ids can be compared against a similar "qos_class" | |
| published for a root decoder. While it is not required | |
| that the endpoints map their local memory-class to a | |
| matching platform class, mismatches are not recommended | |
| and there are platform specific performance related | |
| side-effects that may result. First class-id is displayed. | |
| What: /sys/bus/cxl/devices/memX/serial | |
| Date: January, 2022 | |
| KernelVersion: v5.18 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (RO) 64-bit serial number per the PCIe Device Serial Number | |
| capability. Mandatory for CXL devices, see CXL 2.0 8.1.12.2 | |
| Memory Device PCIe Capabilities and Extended Capabilities. | |
| What: /sys/bus/cxl/devices/memX/numa_node | |
| Date: January, 2022 | |
| KernelVersion: v5.18 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (RO) If NUMA is enabled and the platform has affinitized the | |
| host PCI device for this memory device, emit the CPU node | |
| affinity for this device. | |
| What: /sys/bus/cxl/devices/memX/security/state | |
| Date: June, 2023 | |
| KernelVersion: v6.5 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (RO) Reading this file will display the CXL security state for | |
| that device. Such states can be: 'disabled', 'sanitize', when | |
| a sanitization is currently underway; or those available only | |
| for persistent memory: 'locked', 'unlocked' or 'frozen'. This | |
| sysfs entry is select/poll capable from userspace to notify | |
| upon completion of a sanitize operation. | |
| What: /sys/bus/cxl/devices/memX/security/sanitize | |
| Date: June, 2023 | |
| KernelVersion: v6.5 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (WO) Write a boolean 'true' string value to this attribute to | |
| sanitize the device to securely re-purpose or decommission it. | |
| This is done by ensuring that all user data and meta-data, | |
| whether it resides in persistent capacity, volatile capacity, | |
| or the LSA, is made permanently unavailable by whatever means | |
| is appropriate for the media type. This functionality requires | |
| the device to be disabled, that is, not actively decoding any | |
| HPA ranges. This permits avoiding explicit global CPU cache | |
| management, relying instead for it to be done when a region | |
| transitions between software programmed and hardware committed | |
| states. If this file is not present, then there is no hardware | |
| support for the operation. | |
| What /sys/bus/cxl/devices/memX/security/erase | |
| Date: June, 2023 | |
| KernelVersion: v6.5 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (WO) Write a boolean 'true' string value to this attribute to | |
| secure erase user data by changing the media encryption keys for | |
| all user data areas of the device. This functionality requires | |
| the device to be disabled, that is, not actively decoding any | |
| HPA ranges. This permits avoiding explicit global CPU cache | |
| management, relying instead for it to be done when a region | |
| transitions between software programmed and hardware committed | |
| states. If this file is not present, then there is no hardware | |
| support for the operation. | |
| What: /sys/bus/cxl/devices/memX/firmware/ | |
| Date: April, 2023 | |
| KernelVersion: v6.5 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (RW) Firmware uploader mechanism. The different files under | |
| this directory can be used to upload and activate new | |
| firmware for CXL devices. The interfaces under this are | |
| documented in sysfs-class-firmware. | |
| What: /sys/bus/cxl/devices/*/devtype | |
| Date: June, 2021 | |
| KernelVersion: v5.14 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (RO) 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/*/modalias | |
| Date: December, 2021 | |
| KernelVersion: v5.18 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (RO) CXL device objects export the modalias attribute which | |
| mirrors the same value communicated in the MODALIAS 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: | |
| (RO) 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/parent_dport | |
| What: /sys/bus/cxl/devices/endpointX/parent_dport | |
| Date: January, 2023 | |
| KernelVersion: v6.3 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (RO) CXL port objects are instantiated for each upstream port in | |
| a CXL/PCIe switch, and for each endpoint to map the | |
| corresponding memory device into the CXL port hierarchy. When a | |
| descendant CXL port (switch or endpoint) is enumerated it is | |
| useful to know which 'dport' object in the parent CXL port | |
| routes to this descendant. The 'parent_dport' symlink points to | |
| the device representing the downstream port of a CXL switch that | |
| routes to {port,endpoint}X. | |
| What: /sys/bus/cxl/devices/portX/dportY | |
| Date: June, 2021 | |
| KernelVersion: v5.14 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (RO) 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/portX/decoders_committed | |
| Date: October, 2023 | |
| KernelVersion: v6.7 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (RO) A memory device is considered active when any of its | |
| decoders are in the "committed" state (See CXL 3.0 8.2.4.19.7 | |
| CXL HDM Decoder n Control Register). Hotplug and destructive | |
| operations like "sanitize" are blocked while device is actively | |
| decoding a Host Physical Address range. Note that this number | |
| may be elevated without any regionX objects active or even | |
| enumerated, as this may be due to decoders established by | |
| platform firmware or a previous kernel (kexec). | |
| What: /sys/bus/cxl/devices/decoderX.Y | |
| Date: June, 2021 | |
| KernelVersion: v5.14 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (RO) 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 | |
| What: /sys/bus/cxl/devices/decoderX.Y/size | |
| Date: June, 2021 | |
| KernelVersion: v5.14 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (RO) 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: | |
| (RO) 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: | |
| (RO) 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 | |
| What: /sys/bus/cxl/devices/decoderX.Y/cap_ram | |
| What: /sys/bus/cxl/devices/decoderX.Y/cap_type2 | |
| What: /sys/bus/cxl/devices/decoderX.Y/cap_type3 | |
| Date: June, 2021 | |
| KernelVersion: v5.14 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (RO) 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: | |
| (RO) 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. | |
| What: /sys/bus/cxl/devices/endpointX/CDAT | |
| Date: July, 2022 | |
| KernelVersion: v6.0 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (RO) If this sysfs entry is not present no DOE mailbox was | |
| found to support CDAT data. If it is present and the length of | |
| the data is 0 reading the CDAT data failed. Otherwise the CDAT | |
| data is reported. | |
| What: /sys/bus/cxl/devices/decoderX.Y/mode | |
| Date: May, 2022 | |
| KernelVersion: v6.0 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (RW) When a CXL decoder is of devtype "cxl_decoder_endpoint" it | |
| translates from a host physical address range, to a device | |
| local address range. Device-local address ranges are further | |
| split into a 'ram' (volatile memory) range and 'pmem' | |
| (persistent memory) range. The 'mode' attribute emits one of | |
| 'ram', 'pmem', or 'none'. The 'none' indicates the decoder is | |
| not actively decoding, or no DPA allocation policy has been | |
| set. | |
| 'mode' can be written, when the decoder is in the 'disabled' | |
| state, with either 'ram' or 'pmem' to set the boundaries for the | |
| next allocation. | |
| What: /sys/bus/cxl/devices/decoderX.Y/dpa_resource | |
| Date: May, 2022 | |
| KernelVersion: v6.0 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (RO) When a CXL decoder is of devtype "cxl_decoder_endpoint", | |
| and its 'dpa_size' attribute is non-zero, this attribute | |
| indicates the device physical address (DPA) base address of the | |
| allocation. | |
| What: /sys/bus/cxl/devices/decoderX.Y/dpa_size | |
| Date: May, 2022 | |
| KernelVersion: v6.0 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (RW) When a CXL decoder is of devtype "cxl_decoder_endpoint" it | |
| translates from a host physical address range, to a device local | |
| address range. The range, base address plus length in bytes, of | |
| DPA allocated to this decoder is conveyed in these 2 attributes. | |
| Allocations can be mutated as long as the decoder is in the | |
| disabled state. A write to 'dpa_size' releases the previous DPA | |
| allocation and then attempts to allocate from the free capacity | |
| in the device partition referred to by 'decoderX.Y/mode'. | |
| Allocate and free requests can only be performed on the highest | |
| instance number disabled decoder with non-zero size. I.e. | |
| allocations are enforced to occur in increasing 'decoderX.Y/id' | |
| order and frees are enforced to occur in decreasing | |
| 'decoderX.Y/id' order. | |
| What: /sys/bus/cxl/devices/decoderX.Y/interleave_ways | |
| Date: May, 2022 | |
| KernelVersion: v6.0 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (RO) The number of targets across which this decoder's host | |
| physical address (HPA) memory range is interleaved. The device | |
| maps every Nth block of HPA (of size == | |
| 'interleave_granularity') to consecutive DPA addresses. The | |
| decoder's position in the interleave is determined by the | |
| device's (endpoint or switch) switch ancestry. For root | |
| decoders their interleave is specified by platform firmware and | |
| they only specify a downstream target order for host bridges. | |
| What: /sys/bus/cxl/devices/decoderX.Y/interleave_granularity | |
| Date: May, 2022 | |
| KernelVersion: v6.0 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (RO) The number of consecutive bytes of host physical address | |
| space this decoder claims at address N before the decode rotates | |
| to the next target in the interleave at address N + | |
| interleave_granularity (assuming N is aligned to | |
| interleave_granularity). | |
| What: /sys/bus/cxl/devices/decoderX.Y/create_pmem_region | |
| What: /sys/bus/cxl/devices/decoderX.Y/create_ram_region | |
| Date: May, 2022, January, 2023 | |
| KernelVersion: v6.0 (pmem), v6.3 (ram) | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (RW) Write a string in the form 'regionZ' to start the process | |
| of defining a new persistent, or volatile memory region | |
| (interleave-set) within the decode range bounded by root decoder | |
| 'decoderX.Y'. The value written must match the current value | |
| returned from reading this attribute. An atomic compare exchange | |
| operation is done on write to assign the requested id to a | |
| region and allocate the region-id for the next creation attempt. | |
| EBUSY is returned if the region name written does not match the | |
| current cached value. | |
| What: /sys/bus/cxl/devices/decoderX.Y/delete_region | |
| Date: May, 2022 | |
| KernelVersion: v6.0 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (WO) Write a string in the form 'regionZ' to delete that region, | |
| provided it is currently idle / not bound to a driver. | |
| What: /sys/bus/cxl/devices/decoderX.Y/qos_class | |
| Date: May, 2023 | |
| KernelVersion: v6.5 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (RO) For CXL host platforms that support "QoS Telemetry" this | |
| root-decoder-only attribute conveys a platform specific cookie | |
| that identifies a QoS performance class for the CXL Window. | |
| This class-id can be compared against a similar "qos_class" | |
| published for each memory-type that an endpoint supports. While | |
| it is not required that endpoints map their local memory-class | |
| to a matching platform class, mismatches are not recommended and | |
| there are platform specific side-effects that may result. | |
| What: /sys/bus/cxl/devices/regionZ/uuid | |
| Date: May, 2022 | |
| KernelVersion: v6.0 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (RW) Write a unique identifier for the region. This field must | |
| be set for persistent regions and it must not conflict with the | |
| UUID of another region. For volatile ram regions this | |
| attribute is a read-only empty string. | |
| What: /sys/bus/cxl/devices/regionZ/interleave_granularity | |
| Date: May, 2022 | |
| KernelVersion: v6.0 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (RW) Set the number of consecutive bytes each device in the | |
| interleave set will claim. The possible interleave granularity | |
| values are determined by the CXL spec and the participating | |
| devices. | |
| What: /sys/bus/cxl/devices/regionZ/interleave_ways | |
| Date: May, 2022 | |
| KernelVersion: v6.0 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (RW) Configures the number of devices participating in the | |
| region is set by writing this value. Each device will provide | |
| 1/interleave_ways of storage for the region. | |
| What: /sys/bus/cxl/devices/regionZ/size | |
| Date: May, 2022 | |
| KernelVersion: v6.0 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (RW) System physical address space to be consumed by the region. | |
| When written trigger the driver to allocate space out of the | |
| parent root decoder's address space. When read the size of the | |
| address space is reported and should match the span of the | |
| region's resource attribute. Size shall be set after the | |
| interleave configuration parameters. Once set it cannot be | |
| changed, only freed by writing 0. The kernel makes no guarantees | |
| that data is maintained over an address space freeing event, and | |
| there is no guarantee that a free followed by an allocate | |
| results in the same address being allocated. If extended linear | |
| cache is present, the size indicates extended linear cache size | |
| plus the CXL region size. | |
| What: /sys/bus/cxl/devices/regionZ/extended_linear_cache_size | |
| Date: October, 2025 | |
| KernelVersion: v6.19 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (RO) The size of extended linear cache, if there is an extended | |
| linear cache. Otherwise the attribute will not be visible. | |
| What: /sys/bus/cxl/devices/regionZ/locked | |
| Date: Mar, 2026 | |
| KernelVersion: v7.1 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (RO) The CXL driver has the capability to lock a region based on | |
| a BIOS or platform dependent configuration. Regions created as | |
| locked are never permitted to be destroyed. Resets to participating | |
| decoders will not result in a region destroy and will not free the | |
| decoder resources. | |
| What: /sys/bus/cxl/devices/regionZ/mode | |
| Date: January, 2023 | |
| KernelVersion: v6.3 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (RO) The mode of a region is established at region creation time | |
| and dictates the mode of the endpoint decoder that comprise the | |
| region. For more details on the possible modes see | |
| /sys/bus/cxl/devices/decoderX.Y/mode | |
| What: /sys/bus/cxl/devices/regionZ/resource | |
| Date: May, 2022 | |
| KernelVersion: v6.0 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (RO) A region is a contiguous partition of a CXL root decoder | |
| address space. Region capacity is allocated by writing to the | |
| size attribute, the resulting physical address space determined | |
| by the driver is reflected here. It is therefore not useful to | |
| read this before writing a value to the size attribute. | |
| What: /sys/bus/cxl/devices/regionZ/target[0..N] | |
| Date: May, 2022 | |
| KernelVersion: v6.0 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (RW) Write an endpoint decoder object name to 'targetX' where X | |
| is the intended position of the endpoint device in the region | |
| interleave and N is the 'interleave_ways' setting for the | |
| region. ENXIO is returned if the write results in an impossible | |
| to map decode scenario, like the endpoint is unreachable at that | |
| position relative to the root decoder interleave. EBUSY is | |
| returned if the position in the region is already occupied, or | |
| if the region is not in a state to accept interleave | |
| configuration changes. EINVAL is returned if the object name is | |
| not an endpoint decoder. Once all positions have been | |
| successfully written a final validation for decode conflicts is | |
| performed before activating the region. | |
| What: /sys/bus/cxl/devices/regionZ/commit | |
| Date: May, 2022 | |
| KernelVersion: v6.0 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (RW) Write a boolean 'true' string value to this attribute to | |
| trigger the region to transition from the software programmed | |
| state to the actively decoding in hardware state. The commit | |
| operation in addition to validating that the region is in proper | |
| configured state, validates that the decoders are being | |
| committed in spec mandated order (last committed decoder id + | |
| 1), and checks that the hardware accepts the commit request. | |
| Reading this value indicates whether the region is committed or | |
| not. | |
| What: /sys/bus/cxl/devices/memX/trigger_poison_list | |
| Date: April, 2023 | |
| KernelVersion: v6.4 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (WO) When a boolean 'true' is written to this attribute the | |
| memdev driver retrieves the poison list from the device. The | |
| list consists of addresses that are poisoned, or would result | |
| in poison if accessed, and the source of the poison. This | |
| attribute is only visible for devices supporting the | |
| capability. The retrieved errors are logged as kernel | |
| events when cxl_poison event tracing is enabled. | |
| What: /sys/bus/cxl/devices/regionZ/accessY/read_bandwidth | |
| /sys/bus/cxl/devices/regionZ/accessY/write_bandwidth | |
| Date: Jan, 2024 | |
| KernelVersion: v6.9 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (RO) The aggregated read or write bandwidth of the region. The | |
| number is the accumulated read or write bandwidth of all CXL memory | |
| devices that contributes to the region in MB/s. It is | |
| identical data that should appear in | |
| /sys/devices/system/node/nodeX/accessY/initiators/read_bandwidth or | |
| /sys/devices/system/node/nodeX/accessY/initiators/write_bandwidth. | |
| See Documentation/ABI/stable/sysfs-devices-node. access0 provides | |
| the number to the closest initiator and access1 provides the | |
| number to the closest CPU. | |
| What: /sys/bus/cxl/devices/regionZ/accessY/read_latency | |
| /sys/bus/cxl/devices/regionZ/accessY/write_latency | |
| Date: Jan, 2024 | |
| KernelVersion: v6.9 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (RO) The read or write latency of the region. The number is | |
| the worst read or write latency of all CXL memory devices that | |
| contributes to the region in nanoseconds. It is identical data | |
| that should appear in | |
| /sys/devices/system/node/nodeX/accessY/initiators/read_latency or | |
| /sys/devices/system/node/nodeX/accessY/initiators/write_latency. | |
| See Documentation/ABI/stable/sysfs-devices-node. access0 provides | |
| the number to the closest initiator and access1 provides the | |
| number to the closest CPU. | |
| What: /sys/bus/cxl/devices/nvdimm-bridge0/ndbusX/nmemY/cxl/dirty_shutdown | |
| Date: Feb, 2025 | |
| KernelVersion: v6.15 | |
| Contact: linux-cxl@vger.kernel.org | |
| Description: | |
| (RO) The device dirty shutdown count value, which is the number | |
| of times the device could have incurred in potential data loss. | |
| The count is persistent across power loss and wraps back to 0 | |
| upon overflow. If this file is not present, the device does not | |
| have the necessary support for dirty tracking. |