vfio/powerpc/spapr_tce: Enforce IOMMU type compatibility check
authorAlexey Kardashevskiy <aik@ozlabs.ru>
Fri, 24 Mar 2017 06:44:06 +0000 (17:44 +1100)
committerAlex Williamson <alex.williamson@redhat.com>
Tue, 11 Apr 2017 19:38:46 +0000 (13:38 -0600)
commit1282ba7fc28dbc66c3f0e4aaafaaa228361d1ae5
treeb5e3008a8b5b2a3abc4216ede9192b1430d66e5c
parent39da7c509acff13fc8cb12ec1bb20337c988ed36
vfio/powerpc/spapr_tce: Enforce IOMMU type compatibility check

The existing SPAPR TCE driver advertises both VFIO_SPAPR_TCE_IOMMU and
VFIO_SPAPR_TCE_v2_IOMMU types to the userspace and the userspace usually
picks the v2.

Normally the userspace would create a container, attach an IOMMU group
to it and only then set the IOMMU type (which would normally be v2).

However a specific IOMMU group may not support v2, in other words
it may not implement set_window/unset_window/take_ownership/
release_ownership and such a group should not be attached to
a v2 container.

This adds extra checks that a new group can do what the selected IOMMU
type suggests. The userspace can then test the return value from
ioctl(VFIO_SET_IOMMU, VFIO_SPAPR_TCE_v2_IOMMU) and try
VFIO_SPAPR_TCE_IOMMU.

Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
drivers/vfio/vfio_iommu_spapr_tce.c