cxl/pmem: Add initial infrastructure for pmem support
authorDan Williams <dan.j.williams@intel.com>
Tue, 15 Jun 2021 23:18:17 +0000 (16:18 -0700)
committerDan Williams <dan.j.williams@intel.com>
Tue, 15 Jun 2021 23:47:14 +0000 (16:47 -0700)
commit8fdcb1704f61a8fd9be0f3849a174d084def0666
tree716bb7930778e4b62c604b7a8c39801acca342b1
parent6af7139c979474a29a6ad642c9bf32d92e24c5bc
cxl/pmem: Add initial infrastructure for pmem support

Register an 'nvdimm-bridge' device to act as an anchor for a libnvdimm
bus hierarchy. Also, flesh out the cxl_bus definition to allow a
cxl_nvdimm_bridge_driver to attach to the bridge and trigger the
nvdimm-bus registration.

The creation of the bridge is gated on the detection of a PMEM capable
address space registered to the root. The bridge indirection allows the
libnvdimm module to remain unloaded on platforms without PMEM support.

Given that the probing of ACPI0017 is asynchronous to CXL endpoint
devices, and the expectation that CXL endpoint devices register other
PMEM resources on the 'CXL' nvdimm bus, a workqueue is added. The
workqueue is needed to run bus_rescan_devices() outside of the
device_lock() of the nvdimm-bridge device to rendezvous nvdimm resources
as they arrive. For now only the bus is taken online/offline in the
workqueue.

Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Link: https://lore.kernel.org/r/162379909706.2993820.14051258608641140169.stgit@dwillia2-desk3.amr.corp.intel.com
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
drivers/cxl/Kconfig
drivers/cxl/Makefile
drivers/cxl/acpi.c
drivers/cxl/core.c
drivers/cxl/cxl.h
drivers/cxl/pmem.c [new file with mode: 0644]