[libvirt PATCH v2 00/22] qemu: Implement virtio-iommu support

Andrea Bolognani posted 22 patches 2 years, 6 months ago
Failed in applying to current master (apply log)
There is a newer version of this series
.../qemuxml2argvdata/virtio-iommu-aarch64.xml |   20 +
...mmu-invalid-address-type.x86_64-latest.err |    1 +
.../virtio-iommu-invalid-address-type.xml     |   20 +
...io-iommu-invalid-address.x86_64-latest.err |    1 +
.../virtio-iommu-invalid-address.xml          |   20 +
.../virtio-iommu-no-acpi.x86_64-latest.err    |    1 +
.../qemuxml2argvdata/virtio-iommu-no-acpi.xml |   15 +
...rtio-iommu-wrong-machine.x86_64-latest.err |    1 +
.../virtio-iommu-wrong-machine.xml            |   18 +
.../virtio-iommu-x86_64.x86_64-6.1.0.err      |    1 +
.../virtio-iommu-x86_64.x86_64-latest.args    |   31 +
.../qemuxml2argvdata/virtio-iommu-x86_64.xml  |   18 +
tests/qemuxml2argvtest.c                      |    7 +
.../virtio-iommu-aarch64.aarch64-latest.xml   |   34 +
.../virtio-iommu-x86_64.x86_64-latest.xml     |   36 +
tests/qemuxml2xmltest.c                       |    2 +
71 files changed, 5278 insertions(+), 2604 deletions(-)
create mode 100644 tests/domaincapsdata/qemu_6.2.0-virt.aarch64.xml
create mode 100644 tests/domaincapsdata/qemu_6.2.0.aarch64.xml
copy tests/qemucapabilitiesdata/{caps_6.0.0.aarch64.replies => caps_6.2.0.aarch64.replies} (92%)
copy tests/qemucapabilitiesdata/{caps_6.0.0.aarch64.xml => caps_6.2.0.aarch64.xml} (92%)
copy tests/qemuxml2argvdata/{aarch64-default-cpu-tcg-virt-4.2.aarch64-latest.args => virtio-iommu-aarch64.aarch64-latest.args} (54%)
create mode 100644 tests/qemuxml2argvdata/virtio-iommu-aarch64.xml
create mode 100644 tests/qemuxml2argvdata/virtio-iommu-invalid-address-type.x86_64-latest.err
create mode 100644 tests/qemuxml2argvdata/virtio-iommu-invalid-address-type.xml
create mode 100644 tests/qemuxml2argvdata/virtio-iommu-invalid-address.x86_64-latest.err
create mode 100644 tests/qemuxml2argvdata/virtio-iommu-invalid-address.xml
create mode 100644 tests/qemuxml2argvdata/virtio-iommu-no-acpi.x86_64-latest.err
create mode 100644 tests/qemuxml2argvdata/virtio-iommu-no-acpi.xml
create mode 100644 tests/qemuxml2argvdata/virtio-iommu-wrong-machine.x86_64-latest.err
create mode 100644 tests/qemuxml2argvdata/virtio-iommu-wrong-machine.xml
create mode 100644 tests/qemuxml2argvdata/virtio-iommu-x86_64.x86_64-6.1.0.err
create mode 100644 tests/qemuxml2argvdata/virtio-iommu-x86_64.x86_64-latest.args
create mode 100644 tests/qemuxml2argvdata/virtio-iommu-x86_64.xml
create mode 100644 tests/qemuxml2xmloutdata/virtio-iommu-aarch64.aarch64-latest.xml
create mode 100644 tests/qemuxml2xmloutdata/virtio-iommu-x86_64.x86_64-latest.xml
[libvirt PATCH v2 00/22] qemu: Implement virtio-iommu support
Posted by Andrea Bolognani 2 years, 6 months ago
The first patch adds QEMU replies and as such has been aggressively
snipped to deal with mailing list message size limits. Grab the
unabriged version with

  $ git fetch https://gitlab.com/abologna/libvirt.git virtio-iommu


As noted in patch 10, the QEMU feature this series enables has not
yet been accepted upstream: the relevant patches are

  https://lists.gnu.org/archive/html/qemu-devel/2021-10/msg00161.html
  https://lists.gnu.org/archive/html/qemu-devel/2021-09/msg07819.html

and of course this series should only be merged once those have gone
in.

That said, patches 1-6 are necessary to implement the feature but
also not strictly related to it, so they could be merged right away.


Changes from [v1]:

  * rebased after Peter's recent changes enabling JSON for -device.


[v1] https://listman.redhat.com/archives/libvir-list/2021-October/msg00459.html

Andrea Bolognani (22):
  tests: Add replies for QEMU 6.2.0 on aarch64
  conf: Make virDomainDeviceInfoFormat() const correct
  qemu: Make qemuBuildDeviceAddressProps() const correct
  qemu: Make qemuBuildVirtioDevProps() const correct
  conf: Add IOMMU support to virDomainDeviceDefCopy()
  conf: Add new/free functions for virDomainIOMMUDef
  conf: Introduce VIR_PCI_CONNECT_INTEGRATED
  qemu: Tweak some code
  qemu: Introduce QEMU_CAPS_DEVICE_VIRTIO_IOMMU_PCI
  DONOTMERGEYET: qemu: Introduce QEMU_CAPS_VIRTIO_IOMMU_BOOT_BYPASS
  conf: Introduce virtio model for <iommu>
  tests: Add test cases for virtio-iommu
  qemu: Validate machine type used with virtio-iommu
  qemu: Validate capabilities for virtio-iommu
  qemu: Validate use of ACPI with virtio-iommu
  conf: Add virDomainDeviceInfo to virDomainIOMMUDef
  qemu: Assign PCI address to virtio-iommu
  qemu: Validate address type for virtio-iommu
  tests: Add test for virtio-iommu address
  qemu: Generate command line for virtio-iommu
  docs: Document virtio-iommu
  news: Document virtio-iommu

 NEWS.rst                                      |    4 +
 docs/formatdomain.rst                         |    5 +-
 docs/schemas/domaincommon.rng                 |   64 +-
 src/conf/domain_addr.c                        |   21 +-
 src/conf/domain_addr.h                        |   30 +-
 src/conf/domain_conf.c                        |   74 +-
 src/conf/domain_conf.h                        |    5 +
 src/qemu/qemu_capabilities.c                  |   10 +
 src/qemu/qemu_capabilities.h                  |    2 +
 src/qemu/qemu_command.c                       |   52 +-
 src/qemu/qemu_domain_address.c                |   33 +-
 src/qemu/qemu_validate.c                      |   32 +
 .../qemu_6.2.0-virt.aarch64.xml               |  184 +
 tests/domaincapsdata/qemu_6.2.0.aarch64.xml   |  178 +
 .../caps_5.0.0.aarch64.replies                |   71 +-
 .../caps_5.0.0.aarch64.xml                    |    1 +
 .../caps_5.0.0.ppc64.replies                  |   59 +-
 .../qemucapabilitiesdata/caps_5.0.0.ppc64.xml |    1 +
 .../caps_5.0.0.riscv64.replies                |   55 +-
 .../caps_5.0.0.riscv64.xml                    |    1 +
 .../caps_5.0.0.x86_64.replies                 |   71 +-
 .../caps_5.0.0.x86_64.xml                     |    1 +
 .../caps_5.1.0.x86_64.replies                 |   71 +-
 .../caps_5.1.0.x86_64.xml                     |    1 +
 .../caps_5.2.0.aarch64.replies                |   71 +-
 .../caps_5.2.0.aarch64.xml                    |    1 +
 .../caps_5.2.0.ppc64.replies                  |   59 +-
 .../qemucapabilitiesdata/caps_5.2.0.ppc64.xml |    1 +
 .../caps_5.2.0.riscv64.replies                |   55 +-
 .../caps_5.2.0.riscv64.xml                    |    1 +
 .../caps_5.2.0.s390x.replies                  |   59 +-
 .../qemucapabilitiesdata/caps_5.2.0.s390x.xml |    1 +
 .../caps_5.2.0.x86_64.replies                 |   71 +-
 .../caps_5.2.0.x86_64.xml                     |    1 +
 .../caps_6.0.0.aarch64.replies                |   71 +-
 .../caps_6.0.0.aarch64.xml                    |    1 +
 .../caps_6.0.0.s390x.replies                  |   59 +-
 .../qemucapabilitiesdata/caps_6.0.0.s390x.xml |    1 +
 .../caps_6.0.0.x86_64.replies                 |   71 +-
 .../caps_6.0.0.x86_64.xml                     |    1 +
 .../caps_6.1.0.x86_64.replies                 |   71 +-
 .../caps_6.1.0.x86_64.xml                     |    1 +
 ...h64.replies => caps_6.2.0.aarch64.replies} | 5594 ++++++++++-------
 ...0.0.aarch64.xml => caps_6.2.0.aarch64.xml} |   58 +-
 .../caps_6.2.0.x86_64.replies                 |  275 +-
 .../caps_6.2.0.x86_64.xml                     |    2 +
 ...fault-cpu-kvm-virt-4.2.aarch64-latest.args |    6 +-
 ...fault-cpu-tcg-virt-4.2.aarch64-latest.args |    6 +-
 .../aarch64-tpm.aarch64-latest.args           |    2 +-
 .../aarch64-virt-graphics.aarch64-latest.args |   36 +-
 .../aarch64-virt-headless.aarch64-latest.args |   28 +-
 ...ult-video-type-aarch64.aarch64-latest.args |    6 +-
 .../disk-arm-virtio-sd.aarch64-latest.args    |    2 +-
 ...e-expander-bus-aarch64.aarch64-latest.args |    2 +-
 ... virtio-iommu-aarch64.aarch64-latest.args} |   17 +-
 .../qemuxml2argvdata/virtio-iommu-aarch64.xml |   20 +
 ...mmu-invalid-address-type.x86_64-latest.err |    1 +
 .../virtio-iommu-invalid-address-type.xml     |   20 +
 ...io-iommu-invalid-address.x86_64-latest.err |    1 +
 .../virtio-iommu-invalid-address.xml          |   20 +
 .../virtio-iommu-no-acpi.x86_64-latest.err    |    1 +
 .../qemuxml2argvdata/virtio-iommu-no-acpi.xml |   15 +
 ...rtio-iommu-wrong-machine.x86_64-latest.err |    1 +
 .../virtio-iommu-wrong-machine.xml            |   18 +
 .../virtio-iommu-x86_64.x86_64-6.1.0.err      |    1 +
 .../virtio-iommu-x86_64.x86_64-latest.args    |   31 +
 .../qemuxml2argvdata/virtio-iommu-x86_64.xml  |   18 +
 tests/qemuxml2argvtest.c                      |    7 +
 .../virtio-iommu-aarch64.aarch64-latest.xml   |   34 +
 .../virtio-iommu-x86_64.x86_64-latest.xml     |   36 +
 tests/qemuxml2xmltest.c                       |    2 +
 71 files changed, 5278 insertions(+), 2604 deletions(-)
 create mode 100644 tests/domaincapsdata/qemu_6.2.0-virt.aarch64.xml
 create mode 100644 tests/domaincapsdata/qemu_6.2.0.aarch64.xml
 copy tests/qemucapabilitiesdata/{caps_6.0.0.aarch64.replies => caps_6.2.0.aarch64.replies} (92%)
 copy tests/qemucapabilitiesdata/{caps_6.0.0.aarch64.xml => caps_6.2.0.aarch64.xml} (92%)
 copy tests/qemuxml2argvdata/{aarch64-default-cpu-tcg-virt-4.2.aarch64-latest.args => virtio-iommu-aarch64.aarch64-latest.args} (54%)
 create mode 100644 tests/qemuxml2argvdata/virtio-iommu-aarch64.xml
 create mode 100644 tests/qemuxml2argvdata/virtio-iommu-invalid-address-type.x86_64-latest.err
 create mode 100644 tests/qemuxml2argvdata/virtio-iommu-invalid-address-type.xml
 create mode 100644 tests/qemuxml2argvdata/virtio-iommu-invalid-address.x86_64-latest.err
 create mode 100644 tests/qemuxml2argvdata/virtio-iommu-invalid-address.xml
 create mode 100644 tests/qemuxml2argvdata/virtio-iommu-no-acpi.x86_64-latest.err
 create mode 100644 tests/qemuxml2argvdata/virtio-iommu-no-acpi.xml
 create mode 100644 tests/qemuxml2argvdata/virtio-iommu-wrong-machine.x86_64-latest.err
 create mode 100644 tests/qemuxml2argvdata/virtio-iommu-wrong-machine.xml
 create mode 100644 tests/qemuxml2argvdata/virtio-iommu-x86_64.x86_64-6.1.0.err
 create mode 100644 tests/qemuxml2argvdata/virtio-iommu-x86_64.x86_64-latest.args
 create mode 100644 tests/qemuxml2argvdata/virtio-iommu-x86_64.xml
 create mode 100644 tests/qemuxml2xmloutdata/virtio-iommu-aarch64.aarch64-latest.xml
 create mode 100644 tests/qemuxml2xmloutdata/virtio-iommu-x86_64.x86_64-latest.xml

-- 
2.31.1


Re: [libvirt PATCH v2 00/22] qemu: Implement virtio-iommu support
Posted by Ján Tomko 2 years, 6 months ago
On a Wednesday in 2021, Andrea Bolognani wrote:
>The first patch adds QEMU replies and as such has been aggressively
>snipped to deal with mailing list message size limits. Grab the
>unabriged version with
>
>  $ git fetch https://gitlab.com/abologna/libvirt.git virtio-iommu
>
>
>As noted in patch 10, the QEMU feature this series enables has not
>yet been accepted upstream: the relevant patches are
>
>  https://lists.gnu.org/archive/html/qemu-devel/2021-10/msg00161.html
>  https://lists.gnu.org/archive/html/qemu-devel/2021-09/msg07819.html
>
>and of course this series should only be merged once those have gone
>in.
>
>That said, patches 1-6 are necessary to implement the feature but
>also not strictly related to it, so they could be merged right away.
>
>
>Changes from [v1]:
>
>  * rebased after Peter's recent changes enabling JSON for -device.
>
>
>[v1] https://listman.redhat.com/archives/libvir-list/2021-October/msg00459.html
>
>Andrea Bolognani (22):
>  tests: Add replies for QEMU 6.2.0 on aarch64
>  conf: Make virDomainDeviceInfoFormat() const correct
>  qemu: Make qemuBuildDeviceAddressProps() const correct
>  qemu: Make qemuBuildVirtioDevProps() const correct
>  conf: Add IOMMU support to virDomainDeviceDefCopy()
>  conf: Add new/free functions for virDomainIOMMUDef
>  conf: Introduce VIR_PCI_CONNECT_INTEGRATED
>  qemu: Tweak some code

Patches up to here can be pushed already.

>  qemu: Introduce QEMU_CAPS_DEVICE_VIRTIO_IOMMU_PCI
>  DONOTMERGEYET: qemu: Introduce QEMU_CAPS_VIRTIO_IOMMU_BOOT_BYPASS
>  conf: Introduce virtio model for <iommu>
>  tests: Add test cases for virtio-iommu
>  qemu: Validate machine type used with virtio-iommu
>  qemu: Validate capabilities for virtio-iommu
>  qemu: Validate use of ACPI with virtio-iommu
>  conf: Add virDomainDeviceInfo to virDomainIOMMUDef
>  qemu: Assign PCI address to virtio-iommu
>  qemu: Validate address type for virtio-iommu
>  tests: Add test for virtio-iommu address
>  qemu: Generate command line for virtio-iommu
>  docs: Document virtio-iommu
>  news: Document virtio-iommu
>

Reviewed-by: Ján Tomko <jtomko@redhat.com>

Jano
Re: [libvirt PATCH v2 00/22] qemu: Implement virtio-iommu support
Posted by Andrea Bolognani 2 years, 6 months ago
On Wed, Oct 20, 2021 at 03:44:48PM +0200, Ján Tomko wrote:
> On a Wednesday in 2021, Andrea Bolognani wrote:
> >  tests: Add replies for QEMU 6.2.0 on aarch64
> >  conf: Make virDomainDeviceInfoFormat() const correct
> >  qemu: Make qemuBuildDeviceAddressProps() const correct
> >  qemu: Make qemuBuildVirtioDevProps() const correct
> >  conf: Add IOMMU support to virDomainDeviceDefCopy()
> >  conf: Add new/free functions for virDomainIOMMUDef
> >  conf: Introduce VIR_PCI_CONNECT_INTEGRATED
> >  qemu: Tweak some code
>
> Patches up to here can be pushed already.
>
> Reviewed-by: Ján Tomko <jtomko@redhat.com>

Thanks a lot for the review!

I've only pushed patches 1-6 for now, because I don't feel that 7-8
make a lot of sense without the rest of the series and they have a
low chance of bitrotting anyway. I'll just wait for the QEMU feature
to be merged and then push the remaining patches all at once :)

-- 
Andrea Bolognani / Red Hat / Virtualization