Re: [RFC PATCH v2 2/6] bus/cdx: add the cdx bus driver

From: Robin Murphy
Date: Tue Aug 30 2022 - 07:26:05 EST


On 2022-08-30 08:06, Gupta, Nipun wrote:
[AMD Official Use Only - General]



-----Original Message-----
From: Jason Gunthorpe <jgg@xxxxxxxxxx>
Sent: Monday, August 29, 2022 9:02 PM
To: Gupta, Nipun <Nipun.Gupta@xxxxxxx>
Cc: Robin Murphy <robin.murphy@xxxxxxx>; Saravana Kannan
<saravanak@xxxxxxxxxx>; Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx>;
robh+dt@xxxxxxxxxx; krzysztof.kozlowski+dt@xxxxxxxxxx; rafael@xxxxxxxxxx;
eric.auger@xxxxxxxxxx; alex.williamson@xxxxxxxxxx; cohuck@xxxxxxxxxx;
Gupta, Puneet (DCG-ENG) <puneet.gupta@xxxxxxx>;
song.bao.hua@xxxxxxxxxxxxx; mchehab+huawei@xxxxxxxxxx;
maz@xxxxxxxxxx; f.fainelli@xxxxxxxxx; jeffrey.l.hugo@xxxxxxxxx;
Michael.Srba@xxxxxxxxx; mani@xxxxxxxxxx; yishaih@xxxxxxxxxx; linux-
kernel@xxxxxxxxxxxxxxx; devicetree@xxxxxxxxxxxxxxx; kvm@xxxxxxxxxxxxxxx;
okaya@xxxxxxxxxx; Anand, Harpreet <harpreet.anand@xxxxxxx>; Agarwal,
Nikhil <nikhil.agarwal@xxxxxxx>; Simek, Michal <michal.simek@xxxxxxx>;
git (AMD-Xilinx) <git@xxxxxxx>
Subject: Re: [RFC PATCH v2 2/6] bus/cdx: add the cdx bus driver

[CAUTION: External Email]

On Mon, Aug 29, 2022 at 04:49:02AM +0000, Gupta, Nipun wrote:

Devices are created in FPFGA with a CDX wrapper, and CDX
controller(firmware)
reads that CDX wrapper to find out new devices. Host driver then interacts
with
firmware to find newly discovered devices. This bus aligns with PCI
infrastructure.
It happens to be an embedded interface as opposed to off-chip
connection.

Why do you need an FW in all of this?

And why do you need DT at all?

We need DT to describe the CDX controller only, similar to
how PCI controller is described in DT. PCI devices are
never enumerated in DT. All children are to be dynamically
discovered.

Children devices do not require DT as they will be discovered
by the bus driver.

Like PCI controller talks to PCI device over PCI spec defined channel,
we need CDX controller to talk to CDX device over a custom
defined (FW managed) channel.

OK, thanks for clarifying - it actually sounds quite cool :)

I think it's clear now that this should be a a full-fledged bus implementation. Note that if the CDX interface provides a way to query arbitrary properties beyond standard resources then you may well also want your own fwnode type to hook into the device_property APIs too. Yes, it then means a bit more work adapting individual drivers too, but that should be far cleaner in the long run, and there's already plenty of precedent for IPs which exist with multiple standard interfaces for PCI/USB/SDIO/platform MMIO/etc.

Plus it means that if CDX ever makes its way into PCIe-attached FPGA cards which can be used on non-OF systems, you've not painted yourself into a corner.

Thanks,
Robin.