RE: [PATCH v2 1/2] iommu: Prevent RESV_DIRECT devices from blocking domains

From: Tian, Kevin
Date: Sun Jul 23 2023 - 22:17:42 EST


> From: Jason Gunthorpe <jgg@xxxxxxxxxx>
> Sent: Friday, July 21, 2023 11:10 PM
>
> On Fri, Jul 21, 2023 at 03:07:47AM +0000, Tian, Kevin wrote:
> > > @@ -974,13 +972,17 @@ static int
> > > iommu_create_device_direct_mappings(struct iommu_domain *domain,
> > > dma_addr_t start, end, addr;
> > > size_t map_size = 0;
> > >
> > > + if (entry->type == IOMMU_RESV_DIRECT)
> > > + dev->iommu->requires_direct = 1;
> > > +
> > > + if ((entry->type != IOMMU_RESV_DIRECT &&
> > > + entry->type != IOMMU_RESV_DIRECT_RELAXABLE) ||
> > > + !iommu_is_dma_domain(domain))
> > > + continue;
> >
> > piggybacking a device attribute detection in a function which tries to
> > populate domain mappings is a bit confusing.
>
> It is, but to do otherwise we'd want to have the caller obtain the
> reserved regions list and iterate it twice. Not sure it is worth the
> trouble right now.
>

Not a strong opinion but It's a slow path and readability is more
preferable to me. 😊