> From: Tian, Kevin > Sent: Thursday, October 14, 2021 11:25 AM > > > From: Jean-Philippe Brucker <jean-philippe@xxxxxxxxxx> > > Sent: Wednesday, October 13, 2021 8:11 PM > > > > 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. > > > > 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, > > + VIRTIO_IOMMU_F_BYPASS_CONFIG)) > > { > > + ida_free(&viommu->domain_ids, vdomain->id); > > + vdomain->viommu = 0; > > + return -EOPNOTSUPP; > > + } > > + > > + vdomain->bypass = true; > > + } > > + > > move to the start of the function, then no need for above cleanup. > forgot it as I see the reason now when looking at patch05 _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/virtualization