> From: Baolu Lu <baolu.lu@xxxxxxxxxxxxxxx> > Sent: Tuesday, August 1, 2023 3:44 PM > > On 2023/8/1 15:03, Tian, Kevin wrote: > >> /** > >> * iommu_device_use_default_domain() - Device driver wants to handle > >> device > >> * DMA through the kernel DMA API. > >> @@ -3052,14 +3063,14 @@ int > iommu_device_use_default_domain(struct > >> device *dev) > >> > >> mutex_lock(&group->mutex); > >> if (group->owner_cnt) { > >> - if (group->owner || !iommu_is_default_domain(group) || > >> - !xa_empty(&group->pasid_array)) { > >> + if (group->owner || !iommu_is_default_domain(group)) { > >> ret = -EBUSY; > >> goto unlock_out; > >> } > >> } > >> > >> group->owner_cnt++; > >> + assert_pasid_dma_ownership(group); > > Old code returns error if pasid_xrrary is not empty. > > > > New code continues to take ownership with a warning. > > > > this is a functional change. Is it intended or not? > > If iommu_device_use_default_domain() is called with pasid_array not > empty, there must be a bug somewhere in the device driver. We should > WARN it instead of returning an error. Probably this is a functional > change? If so, I can add this in the commit message. > IMHO we should WARN *and* return an error.