This series adds a vDPA driver for SolidNET DPU.

Patch 1 adds SolidRun vendor ID to pci_ids.
Patch 2 adds a PCI quirk needed by the DPU.
Patch 3 has the driver source code.

Patch 1 is prerequisite for both patch 2 and patch 3.

v2:
        - Semantics fixes in commit log - Patch 1.
        - Move the vendor ID to the right place, sorted by vendor ID - Patch 1.
        - Update patch subject to be more meaningful and similar to
          previous quirks - Patch 2.
        - Update the commit log to describe better what the patch does -
          Patch 2.
        - Auto detect the BAR used for communication - Patch 3.
        - When waiting for the DPU to write a config, wait for 5secs
          before giving up on the device - Patch 3.
        - Return EOPNOTSUPP error code in vDPA set_vq_state callback if
          the vq state is not the same as the initial one - Patch 3.
        - Implement a vDPA reset callback - Patch 3.
        - Wait for an ACK when sending a message to the DPU - Patch 3.
        - Add endianness comments on 64bit read/write functions - Patch 3.
        - Remove the get_iova_range and free vDPA callbacks - Patch 3.
        - Usage of managed device functions to ioremap a region - Patch 3.
        - Call pci_set_drvdata and pci_set_master before
          vdpa_register_device - Patch 3.
        - Create DMA isolation between the vDPA devices by using the
          chip SR-IOV feature.
          Every vDPA device gets a PCIe VF with its own DMA device - Patch 3.

v3:
        - Validate vDPA config length while receiving the DPU's config,
          not while trying to write the vDPA config to the DPU - Patch 3.
        - Request IRQs when vDPA status is set to
          VIRTIO_CONFIG_S_DRIVER_OK - Patch 3.
        - Remove snet_reset_dev() from the PCI remove function for a VF - Patch 
3.

v4:
        - Get SolidRun vendor ID from pci_ids - Patch 3.

v5:
        - Remove "select HWMON" from Kconfig.
          Usage of "depends on HWMON || HWMON=n" instead and usage of
          IS_ENABLED(CONFIG_HWMON) when calling to snet hwmon functions.
          snet_hwmon.c is compiled only if CONFIG_HWMON is defined - Patch 3.
        - Remove the  #include <linux/hwmon-sysfs.h> from snet_hwmon.c - Patch 
3.
        - Remove the unnecessary (long) casting from snet_hwmon_read_reg -
          Patch 3.
        - Remove the "_hwmon" ending from the hwmon name - Patch 3.
        - Usage of IS_ERR macro to check if devm_hwmon_device_register_with_info
          failed - Patch 3.
        - Replace schedule() with usleep_range() in the "hot loop" in
          psnet_detect_bar - Patch 3.
        - Remove the logging of memory allocation failures - Patch 3.
        - Add parenthesis to arguments in SNET_* macros - Patch 3.
        - Prefer sizeof(*variable) instead of sizeof(struct x) when allocating
          memory - Patch 3.

v6:
        - SNET_WRN -> SNET_WARN - Patch 3.

v7:
        - Explain the dependency of SNET_VDPA on HWMON in Kconfig - Patch 3.
        - Fix snprintf size argument in psnet_open_pf_bar and
          snet_open_vf_bar - Patch 3.
        - Fix kernel warning in snet_vdpa_remove_vf.
          Call pci_free_irq_vectors after vdpa_unregister_device,
          otherwise we'll get "remove_proc_entry: removing non-empty
          directory 'irq/..', leaking at least '..'" warnings - Patch 3.
        - Remove the psnet_create_hwmon function empty definition if
          HWMON is not enabled, otherwise, we'll get "warning: no
          previous prototype for 'psnet_create_hwmon'" when compiling
          with W=1.
          This was reported by kernel test robot <l...@intel.com> - Patch 3.

v8:
        - Fix the series versioning.
          I updated the versions of every patch separately,
          which seems to be wrong.

v9:
        - Indent PCI id in pci_ids.h with tabs - Patch 1.
        - Wrap patch comment log to fill 75 columns - Patch 1 + 2.

Alvaro Karsz (3):
  PCI: Add SolidRun vendor ID
  PCI: Avoid FLR for SolidRun SNET DPU rev 1
  virtio: vdpa: new SolidNET DPU driver.

 MAINTAINERS                        |    4 +
 drivers/pci/quirks.c               |    8 +
 drivers/vdpa/Kconfig               |   18 +
 drivers/vdpa/Makefile              |    1 +
 drivers/vdpa/solidrun/Makefile     |    6 +
 drivers/vdpa/solidrun/snet_hwmon.c |  188 +++++
 drivers/vdpa/solidrun/snet_main.c  | 1110 ++++++++++++++++++++++++++++
 drivers/vdpa/solidrun/snet_vdpa.h  |  194 +++++
 include/linux/pci_ids.h            |    2 +
 9 files changed, 1531 insertions(+)
 create mode 100644 drivers/vdpa/solidrun/Makefile
 create mode 100644 drivers/vdpa/solidrun/snet_hwmon.c
 create mode 100644 drivers/vdpa/solidrun/snet_main.c
 create mode 100644 drivers/vdpa/solidrun/snet_vdpa.h

-- 
2.32.0

_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

Reply via email to