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 54cdadfd5SDan Williams help 64cdadfd5SDan Williams CXL is a bus that is electrically compatible with PCI Express, but 74cdadfd5SDan Williams layers three protocols on that signalling (CXL.io, CXL.cache, and 84cdadfd5SDan Williams CXL.mem). The CXL.cache protocol allows devices to hold cachelines 94cdadfd5SDan Williams locally, the CXL.mem protocol allows devices to be fully coherent 104cdadfd5SDan Williams memory targets, the CXL.io protocol is equivalent to PCI Express. 114cdadfd5SDan Williams Say 'y' to enable support for the configuration and management of 124cdadfd5SDan Williams devices supporting these protocols. 134cdadfd5SDan Williams 144cdadfd5SDan Williamsif CXL_BUS 154cdadfd5SDan Williams 164cdadfd5SDan Williamsconfig CXL_MEM 174cdadfd5SDan Williams tristate "CXL.mem: Memory Devices" 183feaa2d3SDan Williams default CXL_BUS 194cdadfd5SDan Williams help 204cdadfd5SDan Williams The CXL.mem protocol allows a device to act as a provider of 214cdadfd5SDan Williams "System RAM" and/or "Persistent Memory" that is fully coherent 224cdadfd5SDan Williams as if the memory was attached to the typical CPU memory 234cdadfd5SDan Williams controller. 244cdadfd5SDan Williams 2521e9f767SBen Widawsky Say 'y/m' to enable a driver that will attach to CXL.mem devices for 2621e9f767SBen Widawsky configuration and management primarily via the mailbox interface. See 2721e9f767SBen Widawsky Chapter 2.3 Type 3 CXL Device in the CXL 2.0 specification for more 2821e9f767SBen Widawsky details. 294cdadfd5SDan Williams 304cdadfd5SDan Williams If unsure say 'm'. 3113237183SBen Widawsky 3213237183SBen Widawskyconfig CXL_MEM_RAW_COMMANDS 3313237183SBen Widawsky bool "RAW Command Interface for Memory Devices" 3413237183SBen Widawsky depends on CXL_MEM 3513237183SBen Widawsky help 3613237183SBen Widawsky Enable CXL RAW command interface. 3713237183SBen Widawsky 3813237183SBen Widawsky The CXL driver ioctl interface may assign a kernel ioctl command 3913237183SBen Widawsky number for each specification defined opcode. At any given point in 4013237183SBen Widawsky time the number of opcodes that the specification defines and a device 4113237183SBen Widawsky may implement may exceed the kernel's set of associated ioctl function 4213237183SBen Widawsky numbers. The mismatch is either by omission, specification is too new, 4313237183SBen Widawsky or by design. When prototyping new hardware, or developing / debugging 4413237183SBen Widawsky the driver it is useful to be able to submit any possible command to 4513237183SBen Widawsky the hardware, even commands that may crash the kernel due to their 4613237183SBen Widawsky potential impact to memory currently in use by the kernel. 4713237183SBen Widawsky 4813237183SBen Widawsky If developing CXL hardware or the driver say Y, otherwise say N. 494812be97SDan Williams 504812be97SDan Williamsconfig CXL_ACPI 514812be97SDan Williams tristate "CXL ACPI: Platform Support" 524812be97SDan Williams depends on ACPI 533feaa2d3SDan Williams default CXL_BUS 544812be97SDan Williams help 554812be97SDan Williams Enable support for host managed device memory (HDM) resources 564812be97SDan Williams published by a platform's ACPI CXL memory layout description. See 574812be97SDan Williams Chapter 9.14.1 CXL Early Discovery Table (CEDT) in the CXL 2.0 584812be97SDan Williams specification, and CXL Fixed Memory Window Structures (CEDT.CFMWS) 594812be97SDan Williams (https://www.computeexpresslink.org/spec-landing). The CXL core 604812be97SDan Williams consumes these resource to publish the root of a cxl_port decode 614812be97SDan Williams hierarchy to map regions that represent System RAM, or Persistent 624812be97SDan Williams Memory regions to be managed by LIBNVDIMM. 634812be97SDan Williams 644812be97SDan Williams If unsure say 'm'. 65*8fdcb170SDan Williams 66*8fdcb170SDan Williamsconfig CXL_PMEM 67*8fdcb170SDan Williams tristate "CXL PMEM: Persistent Memory Support" 68*8fdcb170SDan Williams depends on LIBNVDIMM 69*8fdcb170SDan Williams default CXL_BUS 70*8fdcb170SDan Williams help 71*8fdcb170SDan Williams In addition to typical memory resources a platform may also advertise 72*8fdcb170SDan Williams support for persistent memory attached via CXL. This support is 73*8fdcb170SDan Williams managed via a bridge driver from CXL to the LIBNVDIMM system 74*8fdcb170SDan Williams subsystem. Say 'y/m' to enable support for enumerating and 75*8fdcb170SDan Williams provisioning the persistent memory capacity of CXL memory expanders. 76*8fdcb170SDan Williams 77*8fdcb170SDan Williams If unsure say 'm'. 784cdadfd5SDan Williamsendif 79