[PATCH v13 00/13] SMMUv3 Nested Stage Setup (VFIO part)

From: Eric Auger
Date: Sun Apr 11 2021 - 07:47:34 EST


This series brings the VFIO part of HW nested paging support
in the SMMUv3.

The series depends on:
[PATCH v15 00/13] SMMUv3 Nested Stage Setup (IOMMU part)

3 new IOCTLs are introduced that allow the userspace to
1) pass the guest stage 1 configuration
2) pass stage 1 MSI bindings
3) invalidate stage 1 related caches

They map onto the related new IOMMU API functions.

We introduce the capability to register specific interrupt
indexes (see [1]). A new DMA_FAULT interrupt index allows to register
an eventfd to be signaled whenever a stage 1 related fault
is detected at physical level. Also two specific regions allow to
- expose the fault records to the user space and
- inject page responses.

This latter functionality is not exercised in this series
but is provided as a POC for further vSVA activities (Shameer's input).

Best Regards

Eric

This series can be found at:
https://github.com/eauger/linux/tree/v5.12-rc6-jean-iopf-14-2stage-v15

The series series includes Tina's patch steming from
[1] "[RFC PATCH v2 1/3] vfio: Use capability chains to handle device
specific irq" plus patches originally contributed by Yi.

History:

v12 -> v13:
- Comment fix for VFIO_IOMMU_SET_PASID_TABLE (Zenghui)

v11 -> v12:
- numerous fixes following feedbacks. Many thanks to all of you
- See individual history log.

v10 -> v11:
- rebase on top of v5.10-rc4
- adapt to changes on the IOMMU API (compliant with the doc
written by Jacob/Yi)
- addition of the page response region
- Took into account Zenghui's comments
- In this version I have kept the ioctl separate. Since
Yi's series [2] is currently stalled, I've just rebased here.

[2] [PATCH v7 00/16] vfio: expose virtual Shared Virtual Addressing
to VMs

v9 -> v10
- rebase on top of 5.6.0-rc3 (no change versus v9)

Eric Auger (10):
vfio: VFIO_IOMMU_SET_MSI_BINDING
vfio/pci: Add VFIO_REGION_TYPE_NESTED region type
vfio/pci: Register an iommu fault handler
vfio/pci: Allow to mmap the fault queue
vfio/pci: Add framework for custom interrupt indices
vfio: Add new IRQ for DMA fault reporting
vfio/pci: Register and allow DMA FAULT IRQ signaling
vfio: Document nested stage control
vfio/pci: Register a DMA fault response region
vfio/pci: Inject page response upon response region fill

Liu, Yi L (2):
vfio: VFIO_IOMMU_SET_PASID_TABLE
vfio: VFIO_IOMMU_CACHE_INVALIDATE

Tina Zhang (1):
vfio: Use capability chains to handle device specific irq

Documentation/driver-api/vfio.rst | 77 +++++
drivers/vfio/pci/vfio_pci.c | 447 ++++++++++++++++++++++++++--
drivers/vfio/pci/vfio_pci_intrs.c | 62 ++++
drivers/vfio/pci/vfio_pci_private.h | 33 ++
drivers/vfio/pci/vfio_pci_rdwr.c | 84 ++++++
drivers/vfio/vfio_iommu_type1.c | 178 +++++++++++
include/uapi/linux/vfio.h | 142 ++++++++-
7 files changed, 1003 insertions(+), 20 deletions(-)

--
2.26.3