Re: [PATCH v2 08/10] iommufd/device: Use iommu_group_replace_domain()

From: Nicolin Chen
Date: Tue Feb 14 2023 - 05:54:36 EST


On Mon, Feb 13, 2023 at 10:49:34AM -0400, Jason Gunthorpe wrote:
> On Sun, Feb 12, 2023 at 11:48:30PM -0800, Nicolin Chen wrote:
>
> > What about point 1? If dev2 and dev3 are already replaced when
> > doing iommu_group_replace_domain() on dev1, their idev objects
> > still have the old hwpt/iopt until user space does another two
> > IOCTLs on them, right?
>
> We have a complicated model for multi-device groups...
>
> The first device in the group to change domains must move all the
> devices in the group
>
> But userspace is still expected to run through and change all the
> other devices
>
> So replace should be a NOP if the group is already linked to the right
> domain.
>
> This patch needs to make sure that incosistency in the view betwen the
> iommu_group and the iommufd model doesn't cause a functional
> problem.

Yea, I was thinking that we'd need to block any access to the
idev->hwpt of a pending device's, before the kernel finishes
the "NOP" IOCTL from userspace, maybe with a helper:
(iommu_get_domain_for_dev(idev->dev) != idev->hwpt->domain)

Thanks
Nic