Hi,

This series adds support for configuring Intel vIOMMU (VT-d) in domain XML
and formatting them onto the QEMU command line:

  * scalable_mode: Configures scalable mode support ('on'/'off').
  * fsts: Enables First-Stage Translation support ('on'/'off').
  * pasid_bits: Sets the number of supported PASID bits.
  * svm: Enables Shared Virtual Memory (SVM) / PRQ support ('on'/'off').

With these attributes, users can configure advanced vIOMMU features for both
emulated devices and assigned host devices (e.g., vSVA / nested translation via
iommufd and first-stage translation).

Example domain XML configuration:

    <iommu model='intel'>
      <driver caching_mode='on' iotlb='on' scalable_mode='on' fsts='on' 
pasid_bits='6' svm='on'/>
    </iommu>

Which formats the following QEMU command line options:

    -device 
{"driver":"intel-iommu","id":"iommu0","caching-mode":true,"device-iotlb":true,"scalable-mode":true,"fsts":true,"pasid-bits":6,"svm":true}

Testing:
  - Validated with libvirt test suite (ninja test).
  - Tested DSA card passthrough and SVM/vSVA with iommufd backend.

Changelog:
v3:
- merge qemu patch into conf patch (Peter Krempa)
- fix pasid_bits type definition (Peter Krempa)
- fix doc to use 'pasid_bits' rather than 'pasid-bits' (Peter Krempa)
- add patch10 to print attribute name in error message (Peter Krempa)
- add patch5 for missing validations

v2:
- Added support for 'pasid_bits' and 'svm' attributes.
- rebased to master branch newest

Thanks,
Zhenzhong


Zhenzhong Duan (10):
  qemu_capabilities: Introduce QEMU_CAPS_INTEL_IOMMU_SCALABLE_MODE
  qemu: Add scalable_mode attribute to iommu
  qemu_capabilities: Introduce QEMU_CAPS_INTEL_IOMMU_FSTS
  qemu: Add fsts attribute to iommu
  qemu: Validate PCI hostdev assignment against intel-iommu 'fsts'
  qemu_capabilities: Introduce QEMU_CAPS_INTEL_IOMMU_PASID_BITS
  qemu: add pasid_bits attribute to iommu
  qemu_capabilities: Introduce QEMU_CAPS_INTEL_IOMMU_SVM
  qemu: add svm attribute to iommu
  conf: qemu: Standardize IOMMU error messages to use XML attribute
    names

 docs/formatdomain.rst                         |  19 +++
 src/conf/domain_conf.c                        | 120 +++++++++++++++---
 src/conf/domain_conf.h                        |   7 +
 src/conf/domain_validate.c                    |  55 +++++++-
 src/conf/schemas/domaincommon.rng             |  20 +++
 src/libvirt_private.syms                      |   1 +
 src/qemu/qemu_capabilities.c                  |  10 ++
 src/qemu/qemu_capabilities.h                  |   6 +
 src/qemu/qemu_command.c                       |   4 +
 src/qemu/qemu_validate.c                      |  59 +++++++--
 .../caps_11.0.0_x86_64+sgx.xml                |   1 +
 .../caps_11.0.0_x86_64.xml                    |   1 +
 .../caps_11.1.0_x86_64.xml                    |   4 +
 .../intel-iommu-fsts.x86_64-latest.args       |  34 +++++
 .../intel-iommu-fsts.x86_64-latest.xml        |  37 ++++++
 tests/qemuxmlconfdata/intel-iommu-fsts.xml    |  37 ++++++
 .../intel-iommu-pasid-bits.x86_64-latest.args |  34 +++++
 .../intel-iommu-pasid-bits.x86_64-latest.xml  |  37 ++++++
 .../intel-iommu-pasid-bits.xml                |  37 ++++++
 ...tel-iommu-scalable-mode.x86_64-latest.args |  34 +++++
 ...ntel-iommu-scalable-mode.x86_64-latest.xml |  37 ++++++
 .../intel-iommu-scalable-mode.xml             |  37 ++++++
 .../intel-iommu-svm.x86_64-latest.args        |  34 +++++
 .../intel-iommu-svm.x86_64-latest.xml         |  37 ++++++
 tests/qemuxmlconfdata/intel-iommu-svm.xml     |  37 ++++++
 tests/qemuxmlconftest.c                       |   4 +
 26 files changed, 712 insertions(+), 31 deletions(-)
 create mode 100644 tests/qemuxmlconfdata/intel-iommu-fsts.x86_64-latest.args
 create mode 100644 tests/qemuxmlconfdata/intel-iommu-fsts.x86_64-latest.xml
 create mode 100644 tests/qemuxmlconfdata/intel-iommu-fsts.xml
 create mode 100644 
tests/qemuxmlconfdata/intel-iommu-pasid-bits.x86_64-latest.args
 create mode 100644 
tests/qemuxmlconfdata/intel-iommu-pasid-bits.x86_64-latest.xml
 create mode 100644 tests/qemuxmlconfdata/intel-iommu-pasid-bits.xml
 create mode 100644 
tests/qemuxmlconfdata/intel-iommu-scalable-mode.x86_64-latest.args
 create mode 100644 
tests/qemuxmlconfdata/intel-iommu-scalable-mode.x86_64-latest.xml
 create mode 100644 tests/qemuxmlconfdata/intel-iommu-scalable-mode.xml
 create mode 100644 tests/qemuxmlconfdata/intel-iommu-svm.x86_64-latest.args
 create mode 100644 tests/qemuxmlconfdata/intel-iommu-svm.x86_64-latest.xml
 create mode 100644 tests/qemuxmlconfdata/intel-iommu-svm.xml

-- 
2.52.0

Reply via email to