Implement the virtio-iommu driver, following specification v0.9 [1].
Since v4 [2] I fixed the issues reported by Eric, and added Reviewed-by
from Eric and Rob. Thanks!
I changed the specification to fix one inconsistency discussed in v4.
That the device fills the probe buffer with zeroes is now a "SHOULD"
instead of a "MAY", since it's the only way for the driver to know if
the device wrote the status. Existing devices already do this. In
addition the device now needs to fill the three padding bytes at the
tail with zeroes.
You can find Linux driver and kvmtool device on branches
virtio-iommu/v0.9 [3]. I also lightly tested with Eric's latest QEMU
device [4].
[1] Virtio-iommu specification v0.9, sources, pdf and diff from v0.8
git://linux-arm.org/virtio-iommu.git virtio-iommu/v0.9
http://jpbrucker.net/virtio-iommu/spec/v0.9/virtio-iommu-v0.9.pdf
http://jpbrucker.net/virtio-iommu/spec/diffs/virtio-iommu-pdf-diff-v0.8-v0.9.pdf
[2] [PATCH v4 0/7] Add virtio-iommu driver
https://lists.linuxfoundation.org/pipermail/iommu/2018-November/031074.html
[3] git://linux-arm.org/linux-jpb.git virtio-iommu/v0.9
git://linux-arm.org/kvmtool-jpb.git virtio-iommu/v0.9
[4] [RFC v9 00/17] VIRTIO-IOMMU device
https://www.mail-archive.com/[email protected]/msg575578.html
Jean-Philippe Brucker (7):
dt-bindings: virtio-mmio: Add IOMMU description
dt-bindings: virtio: Add virtio-pci-iommu node
of: Allow the iommu-map property to omit untranslated devices
PCI: OF: Initialize dev->fwnode appropriately
iommu: Add virtio-iommu driver
iommu/virtio: Add probe request
iommu/virtio: Add event queue
.../devicetree/bindings/virtio/iommu.txt | 66 +
.../devicetree/bindings/virtio/mmio.txt | 30 +
MAINTAINERS | 7 +
drivers/iommu/Kconfig | 11 +
drivers/iommu/Makefile | 1 +
drivers/iommu/virtio-iommu.c | 1157 +++++++++++++++++
drivers/of/base.c | 10 +-
drivers/pci/of.c | 7 +
include/uapi/linux/virtio_ids.h | 1 +
include/uapi/linux/virtio_iommu.h | 161 +++
10 files changed, 1448 insertions(+), 3 deletions(-)
create mode 100644 Documentation/devicetree/bindings/virtio/iommu.txt
create mode 100644 drivers/iommu/virtio-iommu.c
create mode 100644 include/uapi/linux/virtio_iommu.h
--
2.19.1
_______________________________________________
Virtualization mailing list
[email protected]
https://lists.linuxfoundation.org/mailman/listinfo/virtualization