cxl/acpi: Simplify cxl_nvdimm_bridge probing
authorDan Williams <dan.j.williams@intel.com>
Thu, 1 Dec 2022 21:33:26 +0000 (13:33 -0800)
committerDan Williams <dan.j.williams@intel.com>
Thu, 1 Dec 2022 23:52:36 +0000 (15:52 -0800)
commitcb9cfff82f6a862c1f54b8b01d9d9a979bb8ae78
treeb4cdc067803fffc9926455379918883ca83cf76c
parent3b39fd6cf12ceda2a2582dcb9b9ee9f4d197b857
cxl/acpi: Simplify cxl_nvdimm_bridge probing

The 'struct cxl_nvdimm_bridge' object advertises platform CXL PMEM
resources. It coordinates with libnvdimm to attach nvdimm devices and
regions for each corresponding CXL object. That coordination is
complicated, i.e. difficult to reason about, and it turns out redundant.
It is already the case that the CXL core knows how to tear down a
cxl_region when a cxl_memdev goes through ->remove(), so that pathway
can be extended to directly cleanup cxl_nvdimm and cxl_pmem_region
objects.

Towards the goal of ripping out the cxl_nvdimm_bridge state machine,
arrange for cxl_acpi to optionally pre-load the cxl_pmem driver so that
the nvdimm bridge is active synchronously with
devm_cxl_add_nvdimm_bridge(), and remove all the bind attributes for the
cxl_nvdimm* objects since the cxl root device and cxl_memdev bind
attributes are sufficient.

Tested-by: Robert Richter <rrichter@amd.com>
Link: https://lore.kernel.org/r/166993040668.1882361.7450361097265836752.stgit@dwillia2-xfh.jf.intel.com
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
drivers/cxl/acpi.c
drivers/cxl/pmem.c