linux/drivers/cxl
Dan Williams 2703c16c75 cxl/core/port: Add switch port enumeration
So far the platorm level CXL resources have been enumerated by the
cxl_acpi driver, and cxl_pci has gathered all the pre-requisite
information it needs to fire up a cxl_mem driver. However, the first
thing the cxl_mem driver will be tasked to do is validate that all the
PCIe Switches in its ancestry also have CXL capabilities and an CXL.mem
link established.

Provide a common mechanism for a CXL.mem endpoint driver to enumerate
all the ancestor CXL ports in the topology and validate CXL.mem
connectivity.

Multiple endpoints may end up racing to establish a shared port in the
topology. This race is resolved via taking the device-lock on a parent
CXL Port before establishing a new child. The winner of the race
establishes the port, the loser simply registers its interest in the
port via 'struct cxl_ep' place-holder reference.

At endpoint teardown the same parent port lock is taken as 'struct
cxl_ep' references are deleted. Last endpoint to drop its reference
unregisters the port.

Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Link: https://lore.kernel.org/r/164398731146.902644.1029761300481366248.stgit@dwillia2-desk3.amr.corp.intel.com
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
2022-02-08 22:57:32 -08:00
..
core cxl/core/port: Add switch port enumeration 2022-02-08 22:57:32 -08:00
acpi.c cxl/core/port: Add switch port enumeration 2022-02-08 22:57:32 -08:00
cxl.h cxl/core/port: Add switch port enumeration 2022-02-08 22:57:32 -08:00
cxlmem.h cxl/pci: Emit device serial number 2022-02-08 22:57:32 -08:00
cxlpci.h cxl/pci: Retrieve CXL DVSEC memory info 2022-02-08 22:57:31 -08:00
Kconfig cxl/port: Add a driver for 'struct cxl_port' objects 2022-02-08 22:57:30 -08:00
Makefile cxl/port: Add a driver for 'struct cxl_port' objects 2022-02-08 22:57:30 -08:00
pci.c cxl/pci: Emit device serial number 2022-02-08 22:57:32 -08:00
pmem.c cxl: Prove CXL locking 2022-02-08 22:57:29 -08:00
port.c cxl/core/port: Remove @host argument for dport + decoder enumeration 2022-02-08 22:57:30 -08:00