On Sat, Nov 27, 2021 at 05:18:28PM +0100, Eric Auger wrote: > Hi Jean, > > On 11/23/21 4:52 PM, Jean-Philippe Brucker wrote: > > The VIRTIO_IOMMU_F_BYPASS_CONFIG feature adds a new flag to the ATTACH > > request, that creates a bypass domain. Use it to enable identity > > domains. > > > > When VIRTIO_IOMMU_F_BYPASS_CONFIG is not supported by the device, we > > currently fail attaching to an identity domain. Future patches will > > instead create identity mappings in this case. > > > > Reviewed-by: Kevin Tian <kevin.tian@xxxxxxxxx> > > Signed-off-by: Jean-Philippe Brucker <jean-philippe@xxxxxxxxxx> > > --- > > drivers/iommu/virtio-iommu.c | 20 +++++++++++++++++++- > > 1 file changed, 19 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/iommu/virtio-iommu.c b/drivers/iommu/virtio-iommu.c > > index 80930ce04a16..ee8a7afd667b 100644 > > --- a/drivers/iommu/virtio-iommu.c > > +++ b/drivers/iommu/virtio-iommu.c > > @@ -71,6 +71,7 @@ struct viommu_domain { > > struct rb_root_cached mappings; > > > > unsigned long nr_endpoints; > > + bool bypass; > > }; > > > > struct viommu_endpoint { > > @@ -587,7 +588,9 @@ static struct iommu_domain *viommu_domain_alloc(unsigned type) > > { > > struct viommu_domain *vdomain; > > > > - if (type != IOMMU_DOMAIN_UNMANAGED && type != IOMMU_DOMAIN_DMA) > > + if (type != IOMMU_DOMAIN_UNMANAGED && > > + type != IOMMU_DOMAIN_DMA && > > + type != IOMMU_DOMAIN_IDENTITY) > > return NULL; > > > > vdomain = kzalloc(sizeof(*vdomain), GFP_KERNEL); > > @@ -630,6 +633,17 @@ static int viommu_domain_finalise(struct viommu_endpoint *vdev, > > vdomain->map_flags = viommu->map_flags; > > vdomain->viommu = viommu; > > > > + if (domain->type == IOMMU_DOMAIN_IDENTITY) { > > + if (!virtio_has_feature(viommu->vdev, > nit: couldn't the check be done before the ida_alloc_range(), > simplifying the failure cleanup? It could, but patch 5 falls back to identity mappings, which is better left at the end of the function to keep the error path simple. I put this at the end already here, so patch 5 doesn't need to move things around. Thanks, Jean _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/virtualization