> From: Tian, Kevin > Sent: Thursday, September 8, 2022 5:31 PM > > This mixture of error codes is the basic reason why a new code was > > used, because none of the existing codes are used with any > > consistency. > > btw I saw the policy for -EBUSY is also not consistent in this series. > > while it's correct to change -EBUSY to -EMEDIUMTYPE for omap, assuming > that retrying another fresh domain for the said device should work: > > if (omap_domain->dev) { > - dev_err(dev, "iommu domain is already attached\n"); > - ret = -EBUSY; > + ret = -EMEDIUMTYPE; > goto out; > } > > the change in tegra-gart doesn't sound correct: > > if (gart->active_domain && gart->active_domain != domain) { > - ret = -EBUSY; > + ret = -EMEDIUMTYPE; > > one device cannot be attached to two domains. This fact doesn't change > no matter how many domains are tried. In concept this check is > redundant and should have been done by iommu core, but obviously we > didn't pay attention to what -EBUSY actually represents in this path. > oops. Above is actually a right retry condition. gart is iommu instead of device. So in concept retrying gart->active_domain for the device could work. So please ignore this comment.