cxl/mem: Introduce a driver for CXL-2.0-Type-3 endpoints
authorDan Williams <dan.j.williams@intel.com>
Wed, 17 Feb 2021 04:09:50 +0000 (20:09 -0800)
committerDan Williams <dan.j.williams@intel.com>
Wed, 17 Feb 2021 04:36:38 +0000 (20:36 -0800)
commit4cdadfd5e0a70017fec735b7b6d7f2f731842dc6
tree2799c35a3a590847b517271742eccde395655e6f
parent1048ba83fb1c00cd24172e23e8263972f6b5d9ac
cxl/mem: Introduce a driver for CXL-2.0-Type-3 endpoints

The CXL.mem protocol allows a device to act as a provider of "System
RAM" and/or "Persistent Memory" that is fully coherent as if the memory
was attached to the typical CPU memory controller.

With the CXL-2.0 specification a PCI endpoint can implement a "Type-3"
device interface and give the operating system control over "Host
Managed Device Memory". See section 2.3 Type 3 CXL Device.

The memory range exported by the device may optionally be described by
the platform firmware memory map, or by infrastructure like LIBNVDIMM to
provision persistent memory capacity from one, or more, CXL.mem devices.

A pre-requisite for Linux-managed memory-capacity provisioning is this
cxl_mem driver that can speak the mailbox protocol defined in section
8.2.8.4 Mailbox Registers.

For now just land the initial driver boiler-plate and Documentation/
infrastructure.

Signed-off-by: Ben Widawsky <ben.widawsky@intel.com>
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Acked-by: David Rientjes <rientjes@google.com> (v1)
Cc: Jonathan Corbet <corbet@lwn.net>
Link: https://www.computeexpresslink.org/download-the-specification
Link: https://lore.kernel.org/r/20210217040958.1354670-2-ben.widawsky@intel.com
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Documentation/driver-api/cxl/index.rst [new file with mode: 0644]
Documentation/driver-api/cxl/memory-devices.rst [new file with mode: 0644]
Documentation/driver-api/index.rst
drivers/Kconfig
drivers/Makefile
drivers/cxl/Kconfig [new file with mode: 0644]
drivers/cxl/Makefile [new file with mode: 0644]
drivers/cxl/mem.c [new file with mode: 0644]
drivers/cxl/pci.h [new file with mode: 0644]
include/linux/pci_ids.h