Re: [PATCH v3 4/5] iommu/hyperv: Add para-virtualized IOMMU support for Hyper-V guest

Yu Zhang <[email protected]> Fri, 14 Aug 2026 17:37:48 +0800
Newsgroups org.kernel.vger.linux-hyperv,dev.linux.lists.iommu,org.kernel.vger.linux-arch,org.kernel.vger.linux-kernel,org.kernel.vger.linux-pci
Message-ID <p7ts4y6lxt7k6ldzaa26v7rckmmp7o5js2gn2r3eantgzut2cc@xxsvso76nefj>
On Thu, Aug 13, 2026 at 07:46:27PM -0300, Jason Gunthorpe wrote:
> On Thu, Aug 13, 2026 at 03:29:13PM -0700, Jacob Pan wrote:
> 
> > > +static int hv_iommu_blocking_attach_dev(struct iommu_domain *domain,
> > > +					struct device *dev,
> > > +					struct iommu_domain *old)
> > > +{
> > > +	struct hv_iommu_endpoint *vdev = dev_iommu_priv_get(dev);
> > > +	struct hv_iommu_domain *hv_domain =
> > > to_hv_iommu_domain(domain);
> > > +	struct pci_dev *pdev = to_pci_dev(dev);
> > > +	int ret;
> > > +
> > > +	if (pdev->ats_enabled)
> > > +		pci_disable_ats(pdev);
> > > +
> > > +	if (vdev->hv_domain == hv_domain)
> > > +		return 0;
> > It may not be needed since the core code will check this. If you keep
> > this as extra precaution, should this be moved up before ats? since ats
> > must be disabled already if blocking domain is attached.

@Jacob In v2 (https://lore.kernel.org/all/[email protected]/), 
this check was in the common attach helper. It was redundant because the normal
group domain path already skips same-domain attaches.
                                                                                                                                                        
In this version, I removed it from the common helper and kept it only in the 
blocking attach callback. iommu_deinit_device() directly attaches the
device to release_domain without going through the group-level check.
IIUC, for a device which is alreading parked in the blocking domain, the
releasing might invoke another blocking-domain attach.
                                                                                                                                                        
Sorry, I should have explained this change and its rationale in the changelog.

> 
> Why check it at all? Is there an issue with attaching the same thing
> twice? Will it blip the DMA or something?

Actually, I do not think there should be any issue with attaching twice.
Hyper-V *should* be able to accept such attachment. But I do not want to
make such assumption just for a redundant hypercall.

Does this reasoning make sense, or would you prefer that I remove the
check?

B.R.
Yu

> 
> Jason
>