123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390 |
- What: /sys/bus/cxl/flush
- Date: Januarry, 2022
- KernelVersion: v5.18
- Contact: [email protected]
- 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: [email protected]
- 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: [email protected]
- 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: [email protected]
- 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/serial
- Date: January, 2022
- KernelVersion: v5.18
- Contact: [email protected]
- 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: [email protected]
- 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/*/devtype
- Date: June, 2021
- KernelVersion: v5.14
- Contact: [email protected]
- 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: [email protected]
- 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: [email protected]
- 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/dportY
- Date: June, 2021
- KernelVersion: v5.14
- Contact: [email protected]
- 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/decoderX.Y
- Date: June, 2021
- KernelVersion: v5.14
- Contact: [email protected]
- 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,size}
- Date: June, 2021
- KernelVersion: v5.14
- Contact: [email protected]
- 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: [email protected]
- 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: [email protected]
- 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,ram,type2,type3}
- Date: June, 2021
- KernelVersion: v5.14
- Contact: [email protected]
- 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: [email protected]
- 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: v5.20
- Contact: [email protected]
- 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: v5.20
- Contact: [email protected]
- 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',
- 'mixed', or 'none'. The 'mixed' indication is for error cases
- when a decoder straddles the volatile/persistent partition
- boundary, and '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: v5.20
- Contact: [email protected]
- 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: v5.20
- Contact: [email protected]
- 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: v5.20
- Contact: [email protected]
- 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: v5.20
- Contact: [email protected]
- 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
- Date: May, 2022
- KernelVersion: v5.20
- Contact: [email protected]
- Description:
- (RW) Write a string in the form 'regionZ' to start the process
- of defining a new persistent 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: v5.20
- Contact: [email protected]
- 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/regionZ/uuid
- Date: May, 2022
- KernelVersion: v5.20
- Contact: [email protected]
- 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.
- What: /sys/bus/cxl/devices/regionZ/interleave_granularity
- Date: May, 2022
- KernelVersion: v5.20
- Contact: [email protected]
- 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: v5.20
- Contact: [email protected]
- 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: v5.20
- Contact: [email protected]
- 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.
- What: /sys/bus/cxl/devices/regionZ/resource
- Date: May, 2022
- KernelVersion: v5.20
- Contact: [email protected]
- 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: v5.20
- Contact: [email protected]
- 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: v5.20
- Contact: [email protected]
- 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.
|