14cdadfd5SDan Williams# SPDX-License-Identifier: GPL-2.0-only 24cdadfd5SDan Williamsmenuconfig CXL_BUS 34cdadfd5SDan Williams tristate "CXL (Compute Express Link) Devices Support" 44cdadfd5SDan Williams depends on PCI 53eddcc93SIra Weiny select PCI_DOE 64cdadfd5SDan Williams help 74cdadfd5SDan Williams CXL is a bus that is electrically compatible with PCI Express, but 84cdadfd5SDan Williams layers three protocols on that signalling (CXL.io, CXL.cache, and 94cdadfd5SDan Williams CXL.mem). The CXL.cache protocol allows devices to hold cachelines 104cdadfd5SDan Williams locally, the CXL.mem protocol allows devices to be fully coherent 114cdadfd5SDan Williams memory targets, the CXL.io protocol is equivalent to PCI Express. 124cdadfd5SDan Williams Say 'y' to enable support for the configuration and management of 134cdadfd5SDan Williams devices supporting these protocols. 144cdadfd5SDan Williams 154cdadfd5SDan Williamsif CXL_BUS 164cdadfd5SDan Williams 1768cdd3d2SBen Widawskyconfig CXL_PCI 1868cdd3d2SBen Widawsky tristate "PCI manageability" 193feaa2d3SDan Williams default CXL_BUS 204cdadfd5SDan Williams help 2168cdd3d2SBen Widawsky The CXL specification defines a "CXL memory device" sub-class in the 2268cdd3d2SBen Widawsky PCI "memory controller" base class of devices. Device's identified by 2368cdd3d2SBen Widawsky this class code provide support for volatile and / or persistent 2468cdd3d2SBen Widawsky memory to be mapped into the system address map (Host-managed Device 2568cdd3d2SBen Widawsky Memory (HDM)). 264cdadfd5SDan Williams 2768cdd3d2SBen Widawsky Say 'y/m' to enable a driver that will attach to CXL memory expander 2868cdd3d2SBen Widawsky devices enumerated by the memory device class code for configuration 2968cdd3d2SBen Widawsky and management primarily via the mailbox interface. See Chapter 2.3 3068cdd3d2SBen Widawsky Type 3 CXL Device in the CXL 2.0 specification for more details. 314cdadfd5SDan Williams 324cdadfd5SDan Williams If unsure say 'm'. 3313237183SBen Widawsky 3413237183SBen Widawskyconfig CXL_MEM_RAW_COMMANDS 3513237183SBen Widawsky bool "RAW Command Interface for Memory Devices" 3668cdd3d2SBen Widawsky depends on CXL_PCI 3713237183SBen Widawsky help 3813237183SBen Widawsky Enable CXL RAW command interface. 3913237183SBen Widawsky 4013237183SBen Widawsky The CXL driver ioctl interface may assign a kernel ioctl command 4113237183SBen Widawsky number for each specification defined opcode. At any given point in 4213237183SBen Widawsky time the number of opcodes that the specification defines and a device 4313237183SBen Widawsky may implement may exceed the kernel's set of associated ioctl function 4413237183SBen Widawsky numbers. The mismatch is either by omission, specification is too new, 4513237183SBen Widawsky or by design. When prototyping new hardware, or developing / debugging 4613237183SBen Widawsky the driver it is useful to be able to submit any possible command to 4713237183SBen Widawsky the hardware, even commands that may crash the kernel due to their 4813237183SBen Widawsky potential impact to memory currently in use by the kernel. 4913237183SBen Widawsky 5013237183SBen Widawsky If developing CXL hardware or the driver say Y, otherwise say N. 514812be97SDan Williams 524812be97SDan Williamsconfig CXL_ACPI 534812be97SDan Williams tristate "CXL ACPI: Platform Support" 544812be97SDan Williams depends on ACPI 553feaa2d3SDan Williams default CXL_BUS 56f4ce1f76SDan Williams select ACPI_TABLE_LIB 574812be97SDan Williams help 584812be97SDan Williams Enable support for host managed device memory (HDM) resources 594812be97SDan Williams published by a platform's ACPI CXL memory layout description. See 604812be97SDan Williams Chapter 9.14.1 CXL Early Discovery Table (CEDT) in the CXL 2.0 614812be97SDan Williams specification, and CXL Fixed Memory Window Structures (CEDT.CFMWS) 624812be97SDan Williams (https://www.computeexpresslink.org/spec-landing). The CXL core 634812be97SDan Williams consumes these resource to publish the root of a cxl_port decode 644812be97SDan Williams hierarchy to map regions that represent System RAM, or Persistent 654812be97SDan Williams Memory regions to be managed by LIBNVDIMM. 664812be97SDan Williams 674812be97SDan Williams If unsure say 'm'. 688fdcb170SDan Williams 698fdcb170SDan Williamsconfig CXL_PMEM 708fdcb170SDan Williams tristate "CXL PMEM: Persistent Memory Support" 718fdcb170SDan Williams depends on LIBNVDIMM 728fdcb170SDan Williams default CXL_BUS 738fdcb170SDan Williams help 748fdcb170SDan Williams In addition to typical memory resources a platform may also advertise 758fdcb170SDan Williams support for persistent memory attached via CXL. This support is 768fdcb170SDan Williams managed via a bridge driver from CXL to the LIBNVDIMM system 778fdcb170SDan Williams subsystem. Say 'y/m' to enable support for enumerating and 788fdcb170SDan Williams provisioning the persistent memory capacity of CXL memory expanders. 798fdcb170SDan Williams 808fdcb170SDan Williams If unsure say 'm'. 8154cdbf84SBen Widawsky 828dd2bc0fSBen Widawskyconfig CXL_MEM 838dd2bc0fSBen Widawsky tristate "CXL: Memory Expansion" 848dd2bc0fSBen Widawsky depends on CXL_PCI 858dd2bc0fSBen Widawsky default CXL_BUS 868dd2bc0fSBen Widawsky help 878dd2bc0fSBen Widawsky The CXL.mem protocol allows a device to act as a provider of "System 888dd2bc0fSBen Widawsky RAM" and/or "Persistent Memory" that is fully coherent as if the 898dd2bc0fSBen Widawsky memory were attached to the typical CPU memory controller. This is 908dd2bc0fSBen Widawsky known as HDM "Host-managed Device Memory". 918dd2bc0fSBen Widawsky 928dd2bc0fSBen Widawsky Say 'y/m' to enable a driver that will attach to CXL.mem devices for 938dd2bc0fSBen Widawsky memory expansion and control of HDM. See Chapter 9.13 in the CXL 2.0 948dd2bc0fSBen Widawsky specification for a detailed description of HDM. 958dd2bc0fSBen Widawsky 968dd2bc0fSBen Widawsky If unsure say 'm'. 978dd2bc0fSBen Widawsky 9854cdbf84SBen Widawskyconfig CXL_PORT 9954cdbf84SBen Widawsky default CXL_BUS 10054cdbf84SBen Widawsky tristate 10154cdbf84SBen Widawsky 1029ea4dcf4SDan Williamsconfig CXL_SUSPEND 1039ea4dcf4SDan Williams def_bool y 1049ea4dcf4SDan Williams depends on SUSPEND && CXL_MEM 1059ea4dcf4SDan Williams 106779dd20cSBen Widawskyconfig CXL_REGION 107779dd20cSBen Widawsky bool 108779dd20cSBen Widawsky default CXL_BUS 10923a22cd1SDan Williams # For MAX_PHYSMEM_BITS 11023a22cd1SDan Williams depends on SPARSEMEM 111779dd20cSBen Widawsky select MEMREGION 11223a22cd1SDan Williams select GET_FREE_REGION 113779dd20cSBen Widawsky 114d18bc74aSDan Williamsconfig CXL_REGION_INVALIDATION_TEST 115d18bc74aSDan Williams bool "CXL: Region Cache Management Bypass (TEST)" 116d18bc74aSDan Williams depends on CXL_REGION 117d18bc74aSDan Williams help 118d18bc74aSDan Williams CXL Region management and security operations potentially invalidate 119*cbbd05d0SRandy Dunlap the content of CPU caches without notifying those caches to 120d18bc74aSDan Williams invalidate the affected cachelines. The CXL Region driver attempts 121d18bc74aSDan Williams to invalidate caches when those events occur. If that invalidation 122d18bc74aSDan Williams fails the region will fail to enable. Reasons for cache 123d18bc74aSDan Williams invalidation failure are due to the CPU not providing a cache 124d18bc74aSDan Williams invalidation mechanism. For example usage of wbinvd is restricted to 125d18bc74aSDan Williams bare metal x86. However, for testing purposes toggling this option 126d18bc74aSDan Williams can disable that data integrity safety and proceed with enabling 127d18bc74aSDan Williams regions when there might be conflicting contents in the CPU cache. 128d18bc74aSDan Williams 129d18bc74aSDan Williams If unsure, or if this kernel is meant for production environments, 130d18bc74aSDan Williams say N. 131d18bc74aSDan Williams 1324cdadfd5SDan Williamsendif 133