Message ID | 1475009318-2617-8-git-send-email-eric.auger@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c index 617cb2b..8b4b90c 100644 --- a/drivers/iommu/iommu.c +++ b/drivers/iommu/iommu.c @@ -1069,7 +1069,10 @@ static struct iommu_domain *__iommu_domain_alloc(struct bus_type *bus, struct iommu_domain *iommu_domain_alloc(struct bus_type *bus) { - return __iommu_domain_alloc(bus, IOMMU_DOMAIN_UNMANAGED); + if (bus->iommu_ops->capable(IOMMU_CAP_TRANSLATE_MSI)) + return __iommu_domain_alloc(bus, IOMMU_DOMAIN_MIXED); + else + return __iommu_domain_alloc(bus, IOMMU_DOMAIN_UNMANAGED); } EXPORT_SYMBOL_GPL(iommu_domain_alloc);
If the IOMMU advertises IOMMU_CAP_TRANSLATE_MSI choose IOMMU_DOMAIN_MIXED domain type instead of IOMMU_DOMAIN_UNMANAGED to allow transparent allocation of MSI frame IOVAs. Signed-off-by: Eric Auger <eric.auger@redhat.com> --- drivers/iommu/iommu.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)