Messages in this thread | | | Date | Wed, 16 Nov 2022 12:55:16 -0800 | From | Dan Williams <> | Subject | RE: [PATCH v3 8/9] cxl/pci: Extend devm_cxl_port_enumerate_dports() to support restricted hosts (RCH) |
| |
Robert Richter wrote: > The PCIe Software View of an RCH and RCD is different to VH mode. An > RCD is paired with an RCH and shows up as RCiEP. Its downstream and > upstream ports are hidden to the PCI hierarchy. This different PCI > topology requires a different handling of RCHs. > > Extend devm_cxl_port_enumerate_dports() to support restricted hosts > (RCH). If an RCH is detected, register its port as dport to the > device. An RCH is found if the host's dev 0 func 0 devices is an RCiEP > with an existing PCIe DVSEC for CXL Devices (ID 0000h).
It is not clear to me what this extra dport represents. Here are the Linux CXL objects I see in a VH vs an RCH topology:
VH ┌──────────┐ │ ACPI0017 │ │ root0 │ └─────┬────┘ │ ┌─────┴────┐ │ dport0 │ ┌─────┤ ACPI0016 ├─────┐ │ │ port1 │ │ │ └────┬─────┘ │ │ │ │ ┌──┴───┐ ┌──┴───┐ ┌───┴──┐ │dport0│ │dport1│ │dport2│ │ RP0 │ │ RP1 │ │ RP2 │ └──────┘ └──┬───┘ └──────┘ │ ┌───┴─────┐ │endpoint0│ │ port2 │ └─────────┘
RCH ┌──────────┐ │ ACPI0017 │ │ root0 │ └────┬─────┘ │ ┌───┴────┐ │ dport0 │ │ACPI0016│ └───┬────┘ │ ┌────┴─────┐ │endpoint0 │ │ port1 │ └──────────┘
So in the RCH case the only dport is the dport that root0 targets, and then that dport is directly connected to the RCIEP endpoint-port.
In the VH case another level of dports are needed to route from root0 to the fan out across the CXL root ports.
| |