mbox

[v6,0/4] Support AMD CDX bus

Message ID 20230605132624.8626-1-nipun.gupta@amd.com (mailing list archive)
Headers

Message

Gupta, Nipun June 5, 2023, 1:26 p.m. UTC
  The CDX devices are memory mapped on system bus for embedded CPUs.

It uses sysfs interface and the vfio-cdx driver to discover
and initialize the CDX devices.

The CDX bus and VFIO support is available at Xilinx/AMD open source tree:
https://github.com/Xilinx/linux-xlnx (drivers/cdx/ and drivers/vfio/cdx)

Linux AMD CDX bus patches has been added into linux tree:
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/tree/drivers/cdx

VFIO patches are also submitted in upstream:
https://www.spinics.net/lists/kvm/msg310623.html

CDX is a Hardware Architecture designed for AMD FPGA devices. It
consists of mechanism for interaction between FPGA, Firmware and 
the APUs (Application CPUs).
Firmware resides on RPU (Realtime CPUs) which interacts with
the FPGA program manager and the APUs. The RPU provides memory-mapped
interface (RPU if) which is used to communicate with APUs.

VFIO CDX driver provides the CDX device resources like MMIO and interrupts
to map to user-space. DPDK CDX bus uses sysfs interface and the vfio-cdx
driver to discover and initialize the CDX devices for user-space
applications.

Changes v5->v6
- Removed newly introduce irq_count parameter, and use num_intr
  instead.
- Removed rte_cdx_sysfs_path(), and directly used the macro for
  the sysfs path.
- Removed few unrequired param checks in multiple APIs
- add name variable in rte_cdx_device
- moved rte_cdx_bus from bus_cdx_driver.h to private.h
- Other code cleanup

Changes v4->v5
- Split patch and have a separate commit for eal interrupt field
  (irq_count) and corresponding set/get APIs (rte_intr_irq_count_set,
  rte_intr_irq_count_get)
- Renamed "CDX bus" to "AMD CDX bus" in documentation/commit headings
- Removed unnecessary headers
  

Changes v3->v4:
- removed platform specific patch (adding config for ARM CDX)
  from this series

Changes v2->v3:
- merged cdx bus compilation enablement in the first patch
- fixed issue reported by check-git-log.sh
- updated release notes
- updated offset to uint64_t instead of off_t in cdx_map_resource

Changes v1->v2:
- Moved file rte_cdx_bus.h to internal bus_cdx_driver.h
  and added this file to deivce_cdx_headers
- Moved cdx.h to private.h
- Removed rte_ prefix from the static symbols in .c files.

Changes RFC->v1:
- Marked few API's as internal which were not required
  to be provided to user.

Nipun Gupta (4):
  bus/cdx: introduce AMD CDX bus
  bus/cdx: add DMA map and unmap support
  bus/cdx: add support for MSI
  bus/cdx: support plug unplug and dev iterator

 MAINTAINERS                            |   5 +
 doc/guides/rel_notes/release_23_07.rst |   6 +
 drivers/bus/cdx/bus_cdx_driver.h       | 201 ++++++++
 drivers/bus/cdx/cdx.c                  | 666 +++++++++++++++++++++++++
 drivers/bus/cdx/cdx_logs.h             |  37 ++
 drivers/bus/cdx/cdx_vfio.c             | 598 ++++++++++++++++++++++
 drivers/bus/cdx/meson.build            |  13 +
 drivers/bus/cdx/private.h              |  53 ++
 drivers/bus/cdx/version.map            |  13 +
 drivers/bus/meson.build                |   1 +
 10 files changed, 1593 insertions(+)
 create mode 100644 drivers/bus/cdx/bus_cdx_driver.h
 create mode 100644 drivers/bus/cdx/cdx.c
 create mode 100644 drivers/bus/cdx/cdx_logs.h
 create mode 100644 drivers/bus/cdx/cdx_vfio.c
 create mode 100644 drivers/bus/cdx/meson.build
 create mode 100644 drivers/bus/cdx/private.h
 create mode 100644 drivers/bus/cdx/version.map