On Wed, Nov 24, 2021 at 12:22 AM Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> wrote: > > On Tue, Nov 23, 2021 at 11:54:03PM -0800, Dan Williams wrote: > > On Tue, Nov 23, 2021 at 11:33 PM Greg Kroah-Hartman > > <gregkh@xxxxxxxxxxxxxxxxxxx> wrote: > > > > > > On Wed, Nov 24, 2021 at 08:28:24AM +0100, Christoph Hellwig wrote: > > > > On Tue, Nov 23, 2021 at 11:17:55PM -0800, Dan Williams wrote: > > > > > I am missing the counter proposal in both Bjorn's and your distaste > > > > > for aux bus and PCIe portdrv? > > > > > > > > Given that I've only brought in in the last mail I have no idea what > > > > the original proposal even is. > > > > > > Neither do I :( > > > > To be clear I am also trying to get to the root of Bjorn's concern. > > > > The proposal in $SUBJECT is to build on / treat a CXL topology as a > > Linux device topology on /sys/bus/cxl that references devices on > > /sys/bus/platform (CXL ACPI topology root and Host Bridges) and > > /sys/bus/pci (CXL Switches and Endpoints). > > Wait, I am confused. > > A bus lists devices that are on that bus. It does not list devices that > are on other busses. > > Now a device in a bus list can have a parent be on different types of > busses, as the parent device does not matter, but the device itself can > not be of different types. > > So I do not understand what you are describing here at all. Do you have > an example output of sysfs that shows this situation? Commit 40ba17afdfab ("cxl/acpi: Introduce cxl_decoder objects") ...has an example of the devices registered on the CXL bus by the cxl_acpi driver. > > This CXL port device topology has already been shipping for a few > > kernel cycles. > > So it's always been broken? :) Kidding aside, CXL has different moving pieces than PCI and the Linux device-driver model is how we are organizing that complexity. CXL is also symbiotically attached to PCI as it borrows the enumeration mechanism while building up a parallel CXL.mem universe to live alongside PCI.config and PCI.mmio. The CXL subsystem is similar to MD / DM where virtual devices are built up from other devices. > > What is on > > the table now is a driver for CXL port devices (a logical Linux > > construct). The driver handles discovery of "component registers" > > either by ACPI table or PCI DVSEC and offers services to proxision CXL > > regions. > > So a normal bus controller device that creates new devices of a bus > type, right? What is special about that? Yes, which is the root of my confusion about Bjorn's concern. > > CXL 'regions' are also proposed as Linux devices that > > represent an active CXL memory range which can interleave multiple > > endpoints across multiple switches and host bridges. > > As long as these 'devices' have drivers and do not mess with the > resources of any other device in the system, I do not understand the > problem here. Correct, these drivers manage CXL.mem resources and leave PCI.mmio resource management to PCI. > Or is the issue that you are again trying to carve up "real" devices > into tiny devices that then somehow need to be aware of the resources > being touched by different drivers at the same time? No, there's no multiplexing of resources across devices / drivers that requires cross-driver awareness. > I'm still confused, sorry. No worries, appreciate the attention to make sure this implementation is idiomatic and avoids any architectural dragons.