From: Jean-Philippe Brucker <jean-philippe@linaro.org>
To: eric.auger@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, pbonzini@redhat.com, imammedo@redhat.com
Subject: [PATCH 0/6] virtio-iommu: Add ACPI support
Date: Tue, 10 Aug 2021 10:45:00 +0200 [thread overview]
Message-ID: <20210810084505.2257983-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.
With a simple configuration the table contains a virtio-iommu-pci node
and a pci-range node:
qemu-system-aarch64 -M virt -bios QEMU_EFI.fd
-device virtio-iommu ...
$ iasl -d ...
[000h 0000 4] Signature : "VIOT"
[024h 0036 2] Node count : 0002
[026h 0038 2] Node offset : 0030
[030h 0048 1] Type : 03 [VirtIO-PCI IOMMU]
[032h 0050 2] Length : 0010
[034h 0052 2] PCI Segment : 0000
[036h 0054 2] PCI BDF number : 0030
[040h 0064 1] Type : 01 [PCI Range]
[042h 0066 2] Length : 0018
[044h 0068 4] Endpoint start : 00000000
[048h 0072 2] PCI Segment start : 0000
[04Ah 0074 2] PCI Segment end : 0000
[04Ch 0076 2] PCI BDF start : 0000
[04Eh 0078 2] PCI BDF end : 00FF
[050h 0080 2] Output node : 0030
With a more complex topology multiple PCI Range nodes describe the system:
qemu-system-aarch64 -bios QEMU_EFI.fd -device virtio-iommu
-M virt,default_bus_bypass_iommu=true
-device pxb-pcie,bus_nr=0x10,id=pcie.1000,bus=pcie.0
-device pxb-pcie,bus_nr=0x20,id=pcie.2000,bus=pcie.0,bypass_iommu=true
-device pxb-pcie,bus_nr=0x30,id=pcie.3000,bus=pcie.0
[024h 0036 2] Node count : 0003
[026h 0038 2] Node offset : 0030
[030h 0048 1] Type : 03 [VirtIO-PCI IOMMU]
[032h 0050 2] Length : 0010
[034h 0052 2] PCI Segment : 0000
[036h 0054 2] PCI BDF number : 0020
[040h 0064 1] Type : 01 [PCI Range]
[042h 0066 2] Length : 0018
[044h 0068 4] Endpoint start : 00003000
[048h 0072 2] PCI Segment start : 0000
[04Ah 0074 2] PCI Segment end : 0000
[04Ch 0076 2] PCI BDF start : 3000
[04Eh 0078 2] PCI BDF end : 32FF
[050h 0080 2] Output node : 0030
[058h 0088 1] Type : 01 [PCI Range]
[05Ah 0090 2] Length : 0018
[05Ch 0092 4] Endpoint start : 00001000
[060h 0096 2] PCI Segment start : 0000
[062h 0098 2] PCI Segment end : 0000
[064h 0100 2] PCI BDF start : 1000
[066h 0102 2] PCI BDF end : 11FF
[068h 0104 2] Output node : 0030
The VIOT table description will be in the next release of ACPI.
In the meantime you can find a description at
https://jpbrucker.net/virtio-iommu/viot/viot-v9.pdf
Linux support for VIOT was added in version 5.14
Eric Auger (1):
pc: Allow instantiating a virtio-iommu device
Jean-Philippe Brucker (5):
acpi: Add VIOT structure definitions
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
pc: Add VIOT table for virtio-iommu
hw/acpi/viot.h | 13 ++++++
include/hw/acpi/acpi-defs.h | 60 ++++++++++++++++++++++++++
include/hw/i386/pc.h | 2 +
hw/acpi/viot.c | 82 ++++++++++++++++++++++++++++++++++++
hw/arm/virt-acpi-build.c | 7 +++
hw/arm/virt.c | 10 +----
hw/i386/acpi-build.c | 5 +++
hw/i386/pc.c | 18 +++++++-
hw/virtio/virtio-iommu-pci.c | 7 ---
hw/acpi/Kconfig | 4 ++
hw/acpi/meson.build | 1 +
hw/arm/Kconfig | 1 +
hw/i386/Kconfig | 1 +
13 files changed, 195 insertions(+), 16 deletions(-)
create mode 100644 hw/acpi/viot.h
create mode 100644 hw/acpi/viot.c
--
2.32.0
next reply other threads:[~2021-08-10 8:47 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-10 8:45 Jean-Philippe Brucker [this message]
2021-08-10 8:45 ` [PATCH 1/6] acpi: Add VIOT structure definitions Jean-Philippe Brucker
2021-08-10 8:45 ` [PATCH 2/6] hw/acpi: Add VIOT table Jean-Philippe Brucker
2021-08-10 9:22 ` Igor Mammedov
2021-08-27 13:29 ` Jean-Philippe Brucker
2021-08-10 8:45 ` [PATCH 3/6] hw/arm/virt-acpi-build: Add VIOT table for virtio-iommu Jean-Philippe Brucker
2021-08-10 8:45 ` [PATCH 4/6] hw/arm/virt: Remove device tree restriction " Jean-Philippe Brucker
2021-08-17 13:42 ` Eric Auger
2021-08-27 13:29 ` Jean-Philippe Brucker
2021-08-10 8:45 ` [PATCH 5/6] pc: Add VIOT table " Jean-Philippe Brucker
2021-08-10 8:45 ` [PATCH 6/6] pc: Allow instantiating a virtio-iommu device Jean-Philippe Brucker
2021-08-17 14:11 ` Eric Auger
2021-08-27 13:26 ` Jean-Philippe Brucker
2021-09-02 9:36 ` Eric Auger
2021-08-17 14:58 ` [PATCH 0/6] virtio-iommu: Add ACPI support Eric Auger
2021-08-27 13:30 ` Jean-Philippe Brucker
2021-09-29 9:18 ` Eric Auger
2021-09-29 17:08 ` Jean-Philippe Brucker
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=20210810084505.2257983-1-jean-philippe@linaro.org \
--to=jean-philippe@linaro.org \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.