Re: [RFC PATCH v2 08/10] vfio/type1: Add domain at(de)taching group helpers

From: Lu Baolu
Date: Wed Sep 12 2018 - 01:03:25 EST


On 09/11/2018 12:23 AM, Jean-Philippe Brucker wrote:
On 30/08/2018 05:09, Lu Baolu wrote:
+static int vfio_detach_aux_domain(struct device *dev, void *data)
+ struct iommu_domain *domain = data;
+ vfio_mdev_set_aux_domain(dev, NULL);
+ iommu_detach_device(domain, dev->parent);

I think that's only going to work for vt-d, which doesn't use a
default_domain. For other drivers, iommu.c ends up calling
domain->ops->attach_dev(default_domain, dev) here, which isn't what we want.

This doesn't break any functionality. It takes effect only if iommu
hardware supports finer granular translation and advertises it through
the API.

That was my concern with reusing attach/detach_dev callbacks for PASID
management. The attach_dev code of IOMMU drivers already has to deal
with toggling between default and unmanaged domain. Dealing with more
state transitions in the same path is going to be difficult.

Let's consider it from the API point of view.

We have iommu_a(de)ttach_device() APIs to attach or detach a domain
to/from a device. We should avoid applying a limitation of "these are
only for single domain case, for multiple domains, use another API".

Best regards,
Lu Baolu