Re: [PATCH] vfio/noiommu: Don't use iommu_present() to track fake groups

From: Alexey Kardashevskiy
Date: Sun Jan 24 2016 - 19:21:26 EST

On 01/23/2016 04:23 AM, Alex Williamson wrote:
Using iommu_present() to determine whether an IOMMU group is real or
fake has some problems. First, apparently Power systems don't
register an IOMMU on the device bus, so the groups and containers get
marked as noiommu and then won't bind to their actual IOMMU driver.
Second, I expect we'll run into the same issue as we try to support
vGPUs through vfio, since they're likely to emulate this behavior of
creating an IOMMU group on a virtual device and then providing a vfio
IOMMU backend tailored to the sort of isolation they provide, which
won't necessarily be fully compatible with the IOMMU API.

The solution here is to use the existing iommudata interface to IOMMU
groups, which allows us to easily identify the fake groups we've
created for noiommu purposes. The iommudata we set is purely
arbitrary since we're only comparing the address, so we use the
address of the noiommu switch itself.

Reported-by: Alexey Kardashevskiy <aik@xxxxxxxxx>
Fixes: 03a76b60f8ba ("vfio: Include No-IOMMU mode")
Signed-off-by: Alex Williamson <alex.williamson@xxxxxxxxxx>

Reviewed-by: Alexey Kardashevskiy <aik@xxxxxxxxx>
Tested-by: Alexey Kardashevskiy <aik@xxxxxxxxx>