[PATCH 02/20] iommu/terga-gart: Replace set_platform_dma_ops() with IOMMU_DOMAIN_PLATFORM
Jason Gunthorpe
jgg at nvidia.com
Wed May 3 04:01:35 PDT 2023
On Wed, May 03, 2023 at 10:17:29AM +0100, Robin Murphy wrote:
> On 2023-05-01 19:02, Jason Gunthorpe wrote:
> > tegra-gart seems to be kind of wonky since from the start its 'detach_dev'
> > op doesn't actually touch hardware. It is supposed to empty the GART of
> > all translations loaded into it.
>
> No, detach should never tear down translations - what if other devices are
> still using the domain?
?? All other drivers do this. The core contract is that this sequence:
dom = iommu_domain_alloc()
iommu_attach_device(dom, dev)
iommu_map(dom,...)
iommu_detach_device(dom, dev)
Will not continue to have the IOVA mapped to the device. We rely on
this for various error paths.
If the HW is multi-device then it is supposed to have groups.
> > Call this weirdness PLATFORM which keeps the basic original
> > ops->detach_dev() semantic alive without needing much special core code
> > support. I'm guessing it really ends up in a BLOCKING configuration, but
> > without any forced cleanup it is unsafe.
>
> The GART translation aperture is in physical address space, so the truth is
> that all devices have access to it at the same time as having access to the
> rest of physical address space. Attach/detach here really are only
> bookkeeping for which domain currently owns the aperture.
Oh yuk, that is not an UNMANAGED domain either as we now assume empty
UNMANAGED domains are blocking in the core...
> FWIW I wrote up this patch a while ago, not sure if it needs rebasing
> again...
That looks like the same as this patch, just calling the detach dev
behavior IDENTITY. Can do..
Thanks,
Jason
More information about the Linux-rockchip
mailing list