On 24.11.22 10:34:35, Dan Williams wrote:
> Changes since v3 [1]:
> - Rework / simplify CXL to LIBNVDIMM coordination to remove a
>   flush_work() locking dependency from underneath the root device lock.
> - Move the root device rescan to a workqueue
> - Connect RCDs directly as endpoints reachable through a CXL host bridge
>   as a dport, i.e. drop the extra dport indirection from v3
> - Add unit test infrastructure for an RCD configuration
> 
> [1]: http://lore.kernel.org/r/20221109104059.766720-1-rrich...@amd.com/
> 
> ---
> 
> >From [PATCH v4 10/12] cxl/port: Add RCD endpoint port enumeration

> ---
> 
> Dan Williams (9):
>       cxl/acpi: Simplify cxl_nvdimm_bridge probing
>       cxl/region: Drop redundant pmem region release handling
>       cxl/pmem: Refactor nvdimm device registration, delete the workqueue
>       cxl/pmem: Remove the cxl_pmem_wq and related infrastructure
>       cxl/acpi: Move rescan to the workqueue
>       tools/testing/cxl: Make mock CEDT parsing more robust
>       cxl/mem: Move devm_cxl_add_endpoint() from cxl_core to cxl_mem
>       cxl/port: Add RCD endpoint port enumeration
>       tools/testing/cxl: Add an RCH topology
> 
> Robert Richter (2):
>       cxl/ACPI: Register CXL host ports by bridge device
>       cxl/acpi: Extract component registers of restricted hosts from RCRB
> 
> Terry Bowman (1):
>       cxl/acpi: Set ACPI's CXL _OSC to indicate CXL1.1 support
> 
> 
>  drivers/acpi/pci_root.c       |    1 
>  drivers/cxl/acpi.c            |  105 +++++++++---
>  drivers/cxl/core/core.h       |    8 -
>  drivers/cxl/core/pmem.c       |   94 +++++++----
>  drivers/cxl/core/port.c       |  111 +++++++------
>  drivers/cxl/core/region.c     |   54 ++++++
>  drivers/cxl/core/regs.c       |   56 +++++++
>  drivers/cxl/cxl.h             |   46 +++--
>  drivers/cxl/cxlmem.h          |   15 ++
>  drivers/cxl/mem.c             |   72 ++++++++
>  drivers/cxl/pci.c             |   13 +-
>  drivers/cxl/pmem.c            |  351 
> +++++------------------------------------
>  tools/testing/cxl/Kbuild      |    1 
>  tools/testing/cxl/test/cxl.c  |  241 ++++++++++++++++++++++------
>  tools/testing/cxl/test/mem.c  |   40 ++++-
>  tools/testing/cxl/test/mock.c |   19 ++
>  tools/testing/cxl/test/mock.h |    3 
>  17 files changed, 712 insertions(+), 518 deletions(-)

I have tested this series and the enumeration is as expected (see
sysfs dump below). I see an HDM failure which I am investigating, but
that seems unrelated to this series.

You can add to this series my:

Tested-by: Robert Richter <rrich...@amd.com>

The drawback of this topology decision is that the endpoint's port is
a child of root0, which is the ACPI0017's device (not the CXL host
bridge):

 /sys/bus/cxl/devices/root0/endpoint1

I understand this is the CXL's RCD view on the pcie hierarchy here.
Logically there would be a cxl host port in between, like this:

 /sys/bus/cxl/devices/root0/port1/endpoint2

Esp. if there are multiple hosts in the system the port relations will
be lost and can only be determined using the pci dev's parent bridge.

port1 could then also hold the uport's component regs with the
upstream port capabilities to access e.g. status regs for RAS.

Anyway, let's see how this approach flies.

Thanks for looing into this.

-Robert

---

# find /sys/bus/cxl/devices/ -ls
   265293      0 drwxr-xr-x   2 root     root            0 Nov 30 14:18 
/sys/bus/cxl/devices/
   265493      0 lrwxrwxrwx   1 root     root            0 Nov 30 14:21 
/sys/bus/cxl/devices/root0 -> ../../../devices/platform/ACPI0017:00/root0
   265664      0 lrwxrwxrwx   1 root     root            0 Nov 30 14:18 
/sys/bus/cxl/devices/endpoint1 -> 
../../../devices/platform/ACPI0017:00/root0/endpoint1
   265584      0 lrwxrwxrwx   1 root     root            0 Nov 30 14:21 
/sys/bus/cxl/devices/mem0 -> ../../../devices/pci0000:7f/0000:7f:00.0/mem0
# find /sys/bus/cxl/devices/*/ -ls 
   265660      0 drwxr-xr-x   2 root     root            0 Nov 30 14:18 
/sys/bus/cxl/devices/endpoint1/
   265661      0 -rw-r--r--   1 root     root         4096 Nov 30 14:18 
/sys/bus/cxl/devices/endpoint1/uevent
   265667      0 lrwxrwxrwx   1 root     root            0 Nov 30 14:18 
/sys/bus/cxl/devices/endpoint1/driver -> ../../../../../bus/cxl/drivers/cxl_port
   265669      0 lrwxrwxrwx   1 root     root            0 Nov 30 14:21 
/sys/bus/cxl/devices/endpoint1/uport -> ../../../../pci0000:7f/0000:7f:00.0/mem0
   265668      0 -r--------   1 root     root            0 Nov 30 14:21 
/sys/bus/cxl/devices/endpoint1/CDAT
   265665      0 lrwxrwxrwx   1 root     root            0 Nov 30 14:18 
/sys/bus/cxl/devices/endpoint1/subsystem -> ../../../../../bus/cxl
   265662      0 -r--r--r--   1 root     root         4096 Nov 30 14:21 
/sys/bus/cxl/devices/endpoint1/devtype
   265663      0 -r--r--r--   1 root     root         4096 Nov 30 14:21 
/sys/bus/cxl/devices/endpoint1/modalias
   265573      0 drwxr-xr-x   4 root     root            0 Nov 30 14:18 
/sys/bus/cxl/devices/mem0/
   265574      0 -rw-r--r--   1 root     root         4096 Nov 30 14:18 
/sys/bus/cxl/devices/mem0/uevent
   265578      0 -r--r--r--   1 root     root         4096 Nov 30 14:21 
/sys/bus/cxl/devices/mem0/label_storage_size
   265582      0 drwxr-xr-x   2 root     root            0 Nov 30 14:21 
/sys/bus/cxl/devices/mem0/pmem
   265583      0 -r--r--r--   1 root     root         4096 Nov 30 14:21 
/sys/bus/cxl/devices/mem0/pmem/size
   265576      0 -r--r--r--   1 root     root         4096 Nov 30 14:21 
/sys/bus/cxl/devices/mem0/firmware_version
   265579      0 -r--r--r--   1 root     root         4096 Nov 30 14:21 
/sys/bus/cxl/devices/mem0/numa_node
   265586      0 -r--r--r--   1 root     root         4096 Nov 30 14:21 
/sys/bus/cxl/devices/mem0/dev
   265659      0 lrwxrwxrwx   1 root     root            0 Nov 30 14:21 
/sys/bus/cxl/devices/mem0/driver -> ../../../../bus/cxl/drivers/cxl_mem
   265580      0 drwxr-xr-x   2 root     root            0 Nov 30 14:21 
/sys/bus/cxl/devices/mem0/ram
   265581      0 -r--r--r--   1 root     root         4096 Nov 30 14:21 
/sys/bus/cxl/devices/mem0/ram/size
   265585      0 lrwxrwxrwx   1 root     root            0 Nov 30 14:18 
/sys/bus/cxl/devices/mem0/subsystem -> ../../../../bus/cxl
   265575      0 -r--r--r--   1 root     root         4096 Nov 30 14:21 
/sys/bus/cxl/devices/mem0/serial
   265577      0 -r--r--r--   1 root     root         4096 Nov 30 14:21 
/sys/bus/cxl/devices/mem0/payload_max
   265489      0 drwxr-xr-x   3 root     root            0 Nov 30 14:18 
/sys/bus/cxl/devices/root0/
   265490      0 -rw-r--r--   1 root     root         4096 Nov 30 14:18 
/sys/bus/cxl/devices/root0/uevent
   265660      0 drwxr-xr-x   2 root     root            0 Nov 30 14:18 
/sys/bus/cxl/devices/root0/endpoint1
   265661      0 -rw-r--r--   1 root     root         4096 Nov 30 14:18 
/sys/bus/cxl/devices/root0/endpoint1/uevent
   265667      0 lrwxrwxrwx   1 root     root            0 Nov 30 14:18 
/sys/bus/cxl/devices/root0/endpoint1/driver -> 
../../../../../bus/cxl/drivers/cxl_port
   265669      0 lrwxrwxrwx   1 root     root            0 Nov 30 14:21 
/sys/bus/cxl/devices/root0/endpoint1/uport -> 
../../../../pci0000:7f/0000:7f:00.0/mem0
   265668      0 -r--------   1 root     root            0 Nov 30 14:21 
/sys/bus/cxl/devices/root0/endpoint1/CDAT
   265665      0 lrwxrwxrwx   1 root     root            0 Nov 30 14:18 
/sys/bus/cxl/devices/root0/endpoint1/subsystem -> ../../../../../bus/cxl
   265662      0 -r--r--r--   1 root     root         4096 Nov 30 14:21 
/sys/bus/cxl/devices/root0/endpoint1/devtype
   265663      0 -r--r--r--   1 root     root         4096 Nov 30 14:21 
/sys/bus/cxl/devices/root0/endpoint1/modalias
   265495      0 lrwxrwxrwx   1 root     root            0 Nov 30 14:21 
/sys/bus/cxl/devices/root0/uport -> ../../ACPI0017:00
   265496      0 lrwxrwxrwx   1 root     root            0 Nov 30 14:21 
/sys/bus/cxl/devices/root0/dport4 -> ../../../pci0000:7f
   265494      0 lrwxrwxrwx   1 root     root            0 Nov 30 14:18 
/sys/bus/cxl/devices/root0/subsystem -> ../../../../bus/cxl
   265491      0 -r--r--r--   1 root     root         4096 Nov 30 14:21 
/sys/bus/cxl/devices/root0/devtype
   265492      0 -r--r--r--   1 root     root         4096 Nov 30 14:21 
/sys/bus/cxl/devices/root0/modalias

Reply via email to