Back to home page

OSCL-LXR

 
 

    


0001 # SPDX-License-Identifier: GPL-2.0-only
0002 menuconfig CXL_BUS
0003         tristate "CXL (Compute Express Link) Devices Support"
0004         depends on PCI
0005         select PCI_DOE
0006         help
0007           CXL is a bus that is electrically compatible with PCI Express, but
0008           layers three protocols on that signalling (CXL.io, CXL.cache, and
0009           CXL.mem). The CXL.cache protocol allows devices to hold cachelines
0010           locally, the CXL.mem protocol allows devices to be fully coherent
0011           memory targets, the CXL.io protocol is equivalent to PCI Express.
0012           Say 'y' to enable support for the configuration and management of
0013           devices supporting these protocols.
0014 
0015 if CXL_BUS
0016 
0017 config CXL_PCI
0018         tristate "PCI manageability"
0019         default CXL_BUS
0020         help
0021           The CXL specification defines a "CXL memory device" sub-class in the
0022           PCI "memory controller" base class of devices. Device's identified by
0023           this class code provide support for volatile and / or persistent
0024           memory to be mapped into the system address map (Host-managed Device
0025           Memory (HDM)).
0026 
0027           Say 'y/m' to enable a driver that will attach to CXL memory expander
0028           devices enumerated by the memory device class code for configuration
0029           and management primarily via the mailbox interface. See Chapter 2.3
0030           Type 3 CXL Device in the CXL 2.0 specification for more details.
0031 
0032           If unsure say 'm'.
0033 
0034 config CXL_MEM_RAW_COMMANDS
0035         bool "RAW Command Interface for Memory Devices"
0036         depends on CXL_PCI
0037         help
0038           Enable CXL RAW command interface.
0039 
0040           The CXL driver ioctl interface may assign a kernel ioctl command
0041           number for each specification defined opcode. At any given point in
0042           time the number of opcodes that the specification defines and a device
0043           may implement may exceed the kernel's set of associated ioctl function
0044           numbers. The mismatch is either by omission, specification is too new,
0045           or by design. When prototyping new hardware, or developing / debugging
0046           the driver it is useful to be able to submit any possible command to
0047           the hardware, even commands that may crash the kernel due to their
0048           potential impact to memory currently in use by the kernel.
0049 
0050           If developing CXL hardware or the driver say Y, otherwise say N.
0051 
0052 config CXL_ACPI
0053         tristate "CXL ACPI: Platform Support"
0054         depends on ACPI
0055         default CXL_BUS
0056         select ACPI_TABLE_LIB
0057         help
0058           Enable support for host managed device memory (HDM) resources
0059           published by a platform's ACPI CXL memory layout description.  See
0060           Chapter 9.14.1 CXL Early Discovery Table (CEDT) in the CXL 2.0
0061           specification, and CXL Fixed Memory Window Structures (CEDT.CFMWS)
0062           (https://www.computeexpresslink.org/spec-landing). The CXL core
0063           consumes these resource to publish the root of a cxl_port decode
0064           hierarchy to map regions that represent System RAM, or Persistent
0065           Memory regions to be managed by LIBNVDIMM.
0066 
0067           If unsure say 'm'.
0068 
0069 config CXL_PMEM
0070         tristate "CXL PMEM: Persistent Memory Support"
0071         depends on LIBNVDIMM
0072         default CXL_BUS
0073         help
0074           In addition to typical memory resources a platform may also advertise
0075           support for persistent memory attached via CXL. This support is
0076           managed via a bridge driver from CXL to the LIBNVDIMM system
0077           subsystem. Say 'y/m' to enable support for enumerating and
0078           provisioning the persistent memory capacity of CXL memory expanders.
0079 
0080           If unsure say 'm'.
0081 
0082 config CXL_MEM
0083         tristate "CXL: Memory Expansion"
0084         depends on CXL_PCI
0085         default CXL_BUS
0086         help
0087           The CXL.mem protocol allows a device to act as a provider of "System
0088           RAM" and/or "Persistent Memory" that is fully coherent as if the
0089           memory were attached to the typical CPU memory controller. This is
0090           known as HDM "Host-managed Device Memory".
0091 
0092           Say 'y/m' to enable a driver that will attach to CXL.mem devices for
0093           memory expansion and control of HDM. See Chapter 9.13 in the CXL 2.0
0094           specification for a detailed description of HDM.
0095 
0096           If unsure say 'm'.
0097 
0098 config CXL_PORT
0099         default CXL_BUS
0100         tristate
0101 
0102 config CXL_SUSPEND
0103         def_bool y
0104         depends on SUSPEND && CXL_MEM
0105 
0106 config CXL_REGION
0107         bool
0108         default CXL_BUS
0109         # For MAX_PHYSMEM_BITS
0110         depends on SPARSEMEM
0111         select MEMREGION
0112         select GET_FREE_REGION
0113 
0114 endif