[RFC PATCH 0/5] Add new VFIO PCI driver for NVMe devices

Lei Rao
2022-12-06T05:58:42Z

Some devices, such as Infrastructure Processing Units (IPUs) and Data
Processing Units (DPUs), expose SR-IOV capable NVMe devices to the host.
Its VF devices support live migration via specific NVMe commands issued
through the PF's device's admin queue.

One of the problems is there are no standardized NVMe live migration
commands to make our patches spec compliant, which prevents us from
creating a spec-compliant implementation. So we've created a reference
implantation based on the Vendor-specific command fields of the protocol.
We want these commands to be standardized so that the implementation will
be spec compliant in future versions and use this RFC as a basis for the
same.

More importantly, we provide our work to help the community and start the
discussion, so everyone can participate and benefit from our work in
NVMe Live Migration implementation and help drive on standardization
efforts.

This series implements the specific vfio-pci driver to support live
migration of NVMe devices. Adds a new interface in the general
NVMe driver to receive the VF device's commands submission to the PF
device's admin queue. And also documents the details of NVMe device
live migration commands.

Any feedback and comments are greatly appreciated.

Lei Rao (5):
nvme-pci: add function nvme_submit_vf_cmd to issue admin commands for
VF driver.
nvme-vfio: add new vfio-pci driver for NVMe device
nvme-vfio: enable the function of VFIO live migration.
nvme-vfio: check if the hardware supports live migration
nvme-vfio: Add a document for the NVMe device

drivers/nvme/host/pci.c | 18 +
drivers/vfio/pci/Kconfig | 2 +
drivers/vfio/pci/Makefile | 2 +
drivers/vfio/pci/nvme/Kconfig | 10 +
drivers/vfio/pci/nvme/Makefile | 3 +
drivers/vfio/pci/nvme/nvme.c | 636 +++++++++++++++++++++++++++++++++
drivers/vfio/pci/nvme/nvme.h | 111 ++++++
drivers/vfio/pci/nvme/nvme.txt | 278 ++++++++++++++
8 files changed, 1060 insertions(+)
create mode 100644 drivers/vfio/pci/nvme/Kconfig
create mode 100644 drivers/vfio/pci/nvme/Makefile
create mode 100644 drivers/vfio/pci/nvme/nvme.c
create mode 100644 drivers/vfio/pci/nvme/nvme.h
create mode 100644 drivers/vfio/pci/nvme/nvme.txt

--
2.34.1