RE: [PATCH v7 0/7] add support for CDX bus

From: Agarwal, Nikhil
Date: Wed Feb 15 2023 - 07:52:23 EST


[AMD Official Use Only - General]

CDX bus driver series:

Tested-by: Nikhil Agarwal <nikhil.agarwal@xxxxxxx>

On a vnc board for versal-net. Also, on QEMU simulation platform.

> -----Original Message-----
> From: Nipun Gupta <nipun.gupta@xxxxxxx>
> Sent: Tuesday, January 31, 2023 2:11 PM
> To: robh+dt@xxxxxxxxxx; krzysztof.kozlowski+dt@xxxxxxxxxx;
> gregkh@xxxxxxxxxxxxxxxxxxx; rafael@xxxxxxxxxx; eric.auger@xxxxxxxxxx;
> alex.williamson@xxxxxxxxxx; cohuck@xxxxxxxxxx;
> song.bao.hua@xxxxxxxxxxxxx; mchehab+huawei@xxxxxxxxxx; maz@xxxxxxxxxx;
> f.fainelli@xxxxxxxxx; jeffrey.l.hugo@xxxxxxxxx; saravanak@xxxxxxxxxx;
> Michael.Srba@xxxxxxxxx; mani@xxxxxxxxxx; yishaih@xxxxxxxxxx;
> jgg@xxxxxxxx; jgg@xxxxxxxxxx; robin.murphy@xxxxxxx; will@xxxxxxxxxx;
> joro@xxxxxxxxxx; masahiroy@xxxxxxxxxx; ndesaulniers@xxxxxxxxxx;
> rdunlap@xxxxxxxxxxxxx; linux-arm-kernel@xxxxxxxxxxxxxxxxxxx; linux-
> kbuild@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx;
> devicetree@xxxxxxxxxxxxxxx
> Cc: okaya@xxxxxxxxxx; Anand, Harpreet <harpreet.anand@xxxxxxx>;
> Agarwal, Nikhil <nikhil.agarwal@xxxxxxx>; Simek, Michal
> <michal.simek@xxxxxxx>; git (AMD-Xilinx) <git@xxxxxxx>; Gupta, Nipun
> <Nipun.Gupta@xxxxxxx>
> Subject: [PATCH v7 0/7] add support for CDX bus
>
> Introduce AMD CDX bus, which provides a mechanism to discover/rescan CDX
> devices. The CDX devices are memory mapped on system bus for embedded
> CPUs.
>
> CDX controller interacts with the firmware to query different CDX devices
> present in the Fabric and expose them to the Linux host on CDX bus.
>
> This patch series:
> - Introduces the CDX bus and CDX devices.
> - Device tree binding for CDX controller
> - Support for CDX bus in arm-smmu-v3 driver
> - Add MCDI (Management CPU Driver Interface) as a protocol
> for communication with RPU Firmware
> - Support RPMSg channel for Firmware communication
>
> v6 patch series is at:
> https://lore.kernel.org/lkml/20230117134139.1298-4-
> nipun.gupta@xxxxxxx/T/
>
> Changes v6 -> v7
> - Fix compilation for x86 environment in case CDX bus is enabled
> - Fixed crash in reset if device is not bound to any device driver
> - Update sysfs with typo and other minor changes
> - Removed header file issue reported by make versioncheck
>
> Changes v5 -> v6
> - updated compatible name in the CDX dt-binding
> - updated reset CDX device and removed redundant function
> - moved from drivers/bus/cdx to drivers/cdx
> - used xarray instead of controller list and ID
> - updated sysfs documentation with more details
>
> Changes RFC v4 -> v5
> - Fixed device tree documentation
> - Add MCDI as a protocol and RPMsg as transport for communication
> with RPU Firmware instead of using MCDI stubs.
> - MSI patches for CDX are not added in this series as it's
> support is being revisited as per patch series:
> https://lore.kernel.org/all/20221111133158.196269823@xxxxxxxxxxxxx/
> It will be added as separate patches.
>
> Changes RFC v3 -> RFC v4:
> - Separate CDX bus and CDX controller driver (Greg K-H)
> - Added MSI interfacing to Firmware for writing MSI message
> to firmware so it can be provided to the device.
> - Fix MSI review comments - multiple cleanups (Mark Zynger)
> - Fix the device tree yaml compilation (Rob Herring, Krzysztof)
> - removed vfio-cdx from this series. It will be added after bus
> support is complete (Jason)
>
> Changes RFC v2 -> RFC v3:
> - Move CDX bus as a new bus type in kernel rather than
> using the platform devices (Greg K-H, Marc Zynger)
> - Correspondingly update ARM SMMU v3
> - Add support for vfio-cdx driver
> - Updated device tree yaml with correct binding information
> (Krzysztof Kozlowski)
> - remove 'compatible' sysfs platform patch which was required
> for CDX devices exposed as platform devices
>
> Changes RFC v1 -> RFC v2:
> - introduce CDX bus infrastructure
> - fixed code for making compatible visible for devices
> having the 'compatible' property only (Greg K-H)
> - moved CDX-MSI domain as part of CDX bus infrastructure.
> previously it was part of irqchip (Marc Zynger).
> - fixed few prints (Greg K-H)
> - support rescan and reset of CDX bus
> - add VFIO reset module for CDX bus based devices
>
> Abhijit Gangurde (1):
> cdx: add rpmsg communication channel for CDX
>
> Nipun Gupta (6):
> cdx: add the cdx bus driver
> iommu/arm-smmu-v3: support ops registration for CDX bus
> dt-bindings: bus: add CDX bus controller for versal net
> cdx: add MCDI protocol interface for firmware interaction
> cdx: add cdx controller
> cdx: add device attributes
>
> Documentation/ABI/testing/sysfs-bus-cdx | 56 ++
> .../bindings/bus/xlnx,versal-net-cdx.yaml | 68 ++
> MAINTAINERS | 8 +
> drivers/Kconfig | 2 +
> drivers/Makefile | 1 +
> drivers/cdx/Kconfig | 19 +
> drivers/cdx/Makefile | 8 +
> drivers/cdx/cdx.c | 553 +++++++++++
> drivers/cdx/cdx.h | 62 ++
> drivers/cdx/controller/Kconfig | 30 +
> drivers/cdx/controller/Makefile | 9 +
> drivers/cdx/controller/bitfield.h | 90 ++
> drivers/cdx/controller/cdx_controller.c | 230 +++++
> drivers/cdx/controller/cdx_controller.h | 30 +
> drivers/cdx/controller/cdx_rpmsg.c | 202 ++++
> drivers/cdx/controller/mc_cdx_pcol.h | 590 ++++++++++++
> drivers/cdx/controller/mcdi.c | 911 ++++++++++++++++++
> drivers/cdx/controller/mcdi.h | 247 +++++
> drivers/cdx/controller/mcdi_functions.c | 139 +++
> drivers/cdx/controller/mcdi_functions.h | 61 ++
> drivers/iommu/iommu.c | 4 +
> include/linux/cdx/cdx_bus.h | 174 ++++
> include/linux/mod_devicetable.h | 15 +
> scripts/mod/devicetable-offsets.c | 4 +
> scripts/mod/file2alias.c | 12 +
> 25 files changed, 3525 insertions(+)
> create mode 100644 Documentation/ABI/testing/sysfs-bus-cdx
> create mode 100644 Documentation/devicetree/bindings/bus/xlnx,versal-
> net-cdx.yaml
> create mode 100644 drivers/cdx/Kconfig
> create mode 100644 drivers/cdx/Makefile create mode 100644
> drivers/cdx/cdx.c create mode 100644 drivers/cdx/cdx.h create mode
> 100644 drivers/cdx/controller/Kconfig create mode 100644
> drivers/cdx/controller/Makefile create mode 100644
> drivers/cdx/controller/bitfield.h create mode 100644
> drivers/cdx/controller/cdx_controller.c
> create mode 100644 drivers/cdx/controller/cdx_controller.h
> create mode 100644 drivers/cdx/controller/cdx_rpmsg.c
> create mode 100644 drivers/cdx/controller/mc_cdx_pcol.h
> create mode 100644 drivers/cdx/controller/mcdi.c create mode 100644
> drivers/cdx/controller/mcdi.h create mode 100644
> drivers/cdx/controller/mcdi_functions.c
> create mode 100644 drivers/cdx/controller/mcdi_functions.h
> create mode 100644 include/linux/cdx/cdx_bus.h
>
> --
> 2.17.1