> 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. 😊