Re: [PATCH] iommu: __iommu_attach_group: check for non-NULL blocking_domain
From: Jason Gunthorpe
Date: Wed Oct 01 2025 - 11:45:16 EST
On Wed, Oct 01, 2025 at 09:03:37AM +0300, Sakari Ailus wrote:
> Hi Hans, Jason,
>
> On Mon, Sep 29, 2025 at 03:30:22PM +0200, Hans Verkuil wrote:
> > On 29/09/2025 15:02, Jason Gunthorpe wrote:
> > > On Mon, Sep 29, 2025 at 02:18:50PM +0200, Hans Verkuil wrote:
> > >> On 29/09/2025 14:07, Jason Gunthorpe wrote:
> > >>> On Mon, Sep 29, 2025 at 10:23:47AM +0200, Hans Verkuil wrote:
> > >>>
> > >>>> Since I am unfamiliar with the iommu core code, I am uncertain whether I am
> > >>>> just papering over a bug elsewhere, or whether this is really the correct solution.
> > >>>
> > >>> It is papering over something, group->domain is not supposed to be
> > >>> NULL at this point.. That probably means the iommu driver has not been
> > >>
> > >> It's group->blocking_domain that's NULL, not group->domain.
> > >
> > > Er, I thought you were hitting a false positive on this:
> > >
> > > group->domain != group->blocking_domain
> > >
> > > ie NULL != NULL
> > >
> > > But I suppose the whole expression is checking for group->domain
> > > already.
> > >
> > > All your patch does is entirely disable the safetly logic :\
> > >
> > > What is isp_attach_iommu() trying to accomplish? It does
> > > arm_iommu_detach_device() and then arm_iommu_attach_device() ?
> > >
> > > Why?
> > >
> > > Is this trying to force a non-identity translation for ISP?
>
> The omap3isp driver expects to use its own virtual address space for the
> ISP: the video buffers are mapped there as virtually contiguous (physically
> they can be whatever).
Sure, but where does it do the mapping? I didn't see an iommu_map or
any other iommu_* call in this driver.
I think it is using dma_map_* to do it - probably dma_map_sg though I
could not find it?
This is why I gave my remarks, if it is relying on the DMA API for
mapping then it should just rely on the DMA API to establish a paging
domain and not try to open code something like that.
Jason