Introduces 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 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. RFC changes with stubs were submitted at: https://lore.kernel.org/linux-arm-kernel/20221014044049.2557085-1-nipun.gupta@xxxxxxx/ Abhijit Gangurde (1): bus/cdx: add rpmsg communication channel for CDX Nipun Gupta (6): bus/cdx: add the cdx bus driver iommu/arm-smmu-v3: support ops registration for CDX bus dt-bindings: bus: add CDX bus controller device tree bindings bus/cdx: add MCDI protocol interface for firmware interaction bus/cdx: add cdx controller bus/cdx: add device attributes Documentation/ABI/testing/sysfs-bus-cdx | 46 + .../bindings/bus/xlnx,cdxbus-controller.yaml | 68 ++ MAINTAINERS | 8 + drivers/bus/Kconfig | 1 + drivers/bus/Makefile | 2 + drivers/bus/cdx/Kconfig | 16 + drivers/bus/cdx/Makefile | 8 + drivers/bus/cdx/cdx.c | 577 +++++++++++ drivers/bus/cdx/cdx.h | 62 ++ drivers/bus/cdx/controller/Kconfig | 30 + drivers/bus/cdx/controller/Makefile | 9 + drivers/bus/cdx/controller/bitfield.h | 88 ++ drivers/bus/cdx/controller/cdx_controller.c | 282 ++++++ drivers/bus/cdx/controller/cdx_controller.h | 30 + drivers/bus/cdx/controller/cdx_rpmsg.c | 222 +++++ drivers/bus/cdx/controller/mc_cdx_pcol.h | 707 ++++++++++++++ drivers/bus/cdx/controller/mcdi.c | 918 ++++++++++++++++++ drivers/bus/cdx/controller/mcdi.h | 259 +++++ drivers/bus/cdx/controller/mcdi_functions.c | 139 +++ drivers/bus/cdx/controller/mcdi_functions.h | 61 ++ drivers/iommu/iommu.c | 4 + include/linux/cdx/cdx_bus.h | 176 ++++ include/linux/mod_devicetable.h | 15 + scripts/mod/devicetable-offsets.c | 4 + scripts/mod/file2alias.c | 12 + 25 files changed, 3744 insertions(+) create mode 100644 Documentation/ABI/testing/sysfs-bus-cdx create mode 100644 Documentation/devicetree/bindings/bus/xlnx,cdxbus-controller.yaml create mode 100644 drivers/bus/cdx/Kconfig create mode 100644 drivers/bus/cdx/Makefile create mode 100644 drivers/bus/cdx/cdx.c create mode 100644 drivers/bus/cdx/cdx.h create mode 100644 drivers/bus/cdx/controller/Kconfig create mode 100644 drivers/bus/cdx/controller/Makefile create mode 100644 drivers/bus/cdx/controller/bitfield.h create mode 100644 drivers/bus/cdx/controller/cdx_controller.c create mode 100644 drivers/bus/cdx/controller/cdx_controller.h create mode 100644 drivers/bus/cdx/controller/cdx_rpmsg.c create mode 100644 drivers/bus/cdx/controller/mc_cdx_pcol.h create mode 100644 drivers/bus/cdx/controller/mcdi.c create mode 100644 drivers/bus/cdx/controller/mcdi.h create mode 100644 drivers/bus/cdx/controller/mcdi_functions.c create mode 100644 drivers/bus/cdx/controller/mcdi_functions.h create mode 100644 include/linux/cdx/cdx_bus.h -- 2.17.1