qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Jean-Philippe Brucker <jean-philippe@linaro.org>
To: eric.auger@redhat.com, imammedo@redhat.com
Cc: peter.maydell@linaro.org, ehabkost@redhat.com, mst@redhat.com,
	richard.henderson@linaro.org, qemu-devel@nongnu.org,
	shannon.zhaosl@gmail.com,
	Jean-Philippe Brucker <jean-philippe@linaro.org>,
	qemu-arm@nongnu.org, ani@anisinha.ca, pbonzini@redhat.com
Subject: [PATCH v4 00/11] virtio-iommu: Add ACPI support
Date: Fri,  1 Oct 2021 18:33:48 +0100	[thread overview]
Message-ID: <20211001173358.863017-1-jean-philippe@linaro.org> (raw)

Allow instantiating a virtio-iommu device on ACPI systems by adding a
Virtual I/O Translation table (VIOT). Enable x86 support for VIOT.

Changes since v3 [1]:
* Cleaned the IOMMU-uniqueness checks. Added patch 6 to have a
  single check on x86.
* Added patch 5 that allows to gracefully propagate errors when setting
  resv_mem properties.
* Squashed table blobs into patch 11.
* Addressed all other comments from v3.

Caveats:

* Series depends on "acpi: refactor error prone build_header() and
  packed structures usage in ACPI tables" [2]

* Since virtio-iommu doesn't support boot-bypass at the moment, firmware
  can't access storage behind the IOMMU to load bootloader or kernel.
  This will be solved by another series currently in flight [3]. In the
  meantime you can use a storage device that bypasses the IOMMU such as
  virtio-blk-pci (without iommu_platform property) or a bypass bridge
  (docs/iommu-bypass.txt).

You can find a description of the VIOT table, which will be included in
next ACPI version, here: https://jpbrucker.net/virtio-iommu/viot/viot-v9.pdf

[1] https://lore.kernel.org/qemu-devel/20210914142004.2433568-1-jean-philippe@linaro.org/
[2] https://lore.kernel.org/qemu-devel/20210924122802.1455362-1-imammedo@redhat.com/
[3] https://lore.kernel.org/qemu-devel/20210930185050.262759-1-jean-philippe@linaro.org/

Jean-Philippe Brucker (11):
  hw/acpi: Add VIOT table
  hw/arm/virt-acpi-build: Add VIOT table for virtio-iommu
  hw/arm/virt: Remove device tree restriction for virtio-iommu
  hw/arm/virt: Reject instantiation of multiple IOMMUs
  hw/arm/virt: Use object_property_set instead of qdev_prop_set
  hw/i386: Move vIOMMU uniqueness check into pc.c
  pc: Allow instantiating a virtio-iommu device
  tests/acpi: allow updates of VIOT expected data files
  tests/acpi: add test cases for VIOT
  tests/acpi: add expected blob for VIOT test on virt machine
  tests/acpi: add expected blobs for VIOT test on q35 machine

 hw/acpi/viot.h                 |  13 ++++
 include/hw/i386/pc.h           |   2 +
 hw/acpi/viot.c                 | 112 +++++++++++++++++++++++++++++++++
 hw/arm/virt-acpi-build.c       |   7 +++
 hw/arm/virt.c                  |  20 +++---
 hw/i386/acpi-build.c           |   5 ++
 hw/i386/pc.c                   |  30 ++++++++-
 hw/i386/x86-iommu.c            |   6 --
 hw/virtio/virtio-iommu-pci.c   |   7 ---
 tests/qtest/bios-tables-test.c |  38 +++++++++++
 hw/acpi/Kconfig                |   4 ++
 hw/acpi/meson.build            |   1 +
 hw/arm/Kconfig                 |   1 +
 hw/i386/Kconfig                |   1 +
 tests/data/acpi/q35/DSDT.viot  | Bin 0 -> 9398 bytes
 tests/data/acpi/q35/VIOT.viot  | Bin 0 -> 112 bytes
 tests/data/acpi/virt/VIOT      | Bin 0 -> 88 bytes
 17 files changed, 223 insertions(+), 24 deletions(-)
 create mode 100644 hw/acpi/viot.h
 create mode 100644 hw/acpi/viot.c
 create mode 100644 tests/data/acpi/q35/DSDT.viot
 create mode 100644 tests/data/acpi/q35/VIOT.viot
 create mode 100644 tests/data/acpi/virt/VIOT

-- 
2.33.0



             reply	other threads:[~2021-10-01 17:52 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-01 17:33 Jean-Philippe Brucker [this message]
2021-10-01 17:33 ` [PATCH v4 01/11] hw/acpi: Add VIOT table Jean-Philippe Brucker
2021-10-06  8:09   ` Igor Mammedov
2021-10-08 15:20     ` Jean-Philippe Brucker
2021-10-01 17:33 ` [PATCH v4 02/11] hw/arm/virt-acpi-build: Add VIOT table for virtio-iommu Jean-Philippe Brucker
2021-10-01 17:33 ` [PATCH v4 03/11] hw/arm/virt: Remove device tree restriction " Jean-Philippe Brucker
2021-10-05 11:57   ` Eric Auger
2021-10-08 15:20     ` Jean-Philippe Brucker
2021-10-01 17:33 ` [PATCH v4 04/11] hw/arm/virt: Reject instantiation of multiple IOMMUs Jean-Philippe Brucker
2021-10-06  6:35   ` Igor Mammedov
2021-10-01 17:33 ` [PATCH v4 05/11] hw/arm/virt: Use object_property_set instead of qdev_prop_set Jean-Philippe Brucker
2021-10-05  9:27   ` Eric Auger
2021-10-06  6:36   ` Igor Mammedov
2021-10-01 17:33 ` [PATCH v4 06/11] hw/i386: Move vIOMMU uniqueness check into pc.c Jean-Philippe Brucker
2021-10-05 11:41   ` Eric Auger
2021-10-01 17:33 ` [PATCH v4 07/11] pc: Allow instantiating a virtio-iommu device Jean-Philippe Brucker
2021-10-05 19:18   ` Eric Auger
2021-10-06  7:19   ` Igor Mammedov
2021-10-08 15:24     ` Jean-Philippe Brucker
2021-10-08 10:46   ` Michael S. Tsirkin
2021-10-01 17:33 ` [PATCH v4 08/11] tests/acpi: allow updates of VIOT expected data files Jean-Philippe Brucker
2021-10-06  8:12   ` Igor Mammedov
2021-10-08 15:26     ` Jean-Philippe Brucker
2021-10-11 15:55       ` Igor Mammedov
2021-10-01 17:33 ` [PATCH v4 09/11] tests/acpi: add test cases for VIOT Jean-Philippe Brucker
2021-10-05 10:27   ` Ani Sinha
2021-10-08 15:27     ` Jean-Philippe Brucker
2021-10-05 19:40   ` Eric Auger
2021-10-06  8:14   ` Igor Mammedov
2021-10-01 17:33 ` [PATCH v4 10/11] tests/acpi: add expected blob for VIOT test on virt machine Jean-Philippe Brucker
2021-10-05 10:04   ` Ani Sinha
2021-10-08 15:33     ` Jean-Philippe Brucker
2021-10-05 19:38   ` Eric Auger
2021-10-08 15:30     ` Jean-Philippe Brucker
2021-10-01 17:33 ` [PATCH v4 11/11] tests/acpi: add expected blobs for VIOT test on q35 machine Jean-Philippe Brucker
2021-10-05 10:07   ` Ani Sinha
2021-10-05 19:41   ` Eric Auger
2021-10-05 15:45 ` [PATCH v4 00/11] virtio-iommu: Add ACPI support Michael S. Tsirkin
2021-10-08 15:17   ` Jean-Philippe Brucker
2021-10-11 10:10     ` Haiwei Li
2021-10-11 17:34       ` Jean-Philippe Brucker
2021-10-13  0:56         ` Haiwei Li
2021-10-18 15:25     ` Michael S. Tsirkin
2021-10-19 15:39       ` Jean-Philippe Brucker
2021-10-20 15:17         ` Michael S. Tsirkin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211001173358.863017-1-jean-philippe@linaro.org \
    --to=jean-philippe@linaro.org \
    --cc=ani@anisinha.ca \
    --cc=ehabkost@redhat.com \
    --cc=eric.auger@redhat.com \
    --cc=imammedo@redhat.com \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-arm@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=richard.henderson@linaro.org \
    --cc=shannon.zhaosl@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).