iommu: Add virtio-iommu driver
authorJean-Philippe Brucker <jean-philippe.brucker@arm.com>
Tue, 15 Jan 2019 12:19:57 +0000 (12:19 +0000)
committerMichael S. Tsirkin <mst@redhat.com>
Thu, 6 Jun 2019 21:32:13 +0000 (17:32 -0400)
commitedcd69ab9a323b7ac7a86e1c44b6c9c46598391f
treeb19a8c6d94e984d9f4d926d39a141052520df236
parent59b099a6c75e4ddceeaf9676422d8d91d0049755
iommu: Add virtio-iommu driver

The virtio IOMMU is a para-virtualized device, allowing to send IOMMU
requests such as map/unmap over virtio transport without emulating page
tables. This implementation handles ATTACH, DETACH, MAP and UNMAP
requests.

The bulk of the code transforms calls coming from the IOMMU API into
corresponding virtio requests. Mappings are kept in an interval tree
instead of page tables. A little more work is required for modular and x86
support, so for the moment the driver depends on CONFIG_VIRTIO=y and
CONFIG_ARM64.

Tested-by: Bharat Bhushan <bharat.bhushan@nxp.com>
Tested-by: Eric Auger <eric.auger@redhat.com>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Signed-off-by: Jean-Philippe Brucker <jean-philippe.brucker@arm.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
MAINTAINERS
drivers/iommu/Kconfig
drivers/iommu/Makefile
drivers/iommu/virtio-iommu.c [new file with mode: 0644]
include/uapi/linux/virtio_ids.h
include/uapi/linux/virtio_iommu.h [new file with mode: 0644]