On Thu, Jun 01, 2023 at 08:37:45PM +0100, Robin Murphy wrote: > On 2023-05-16 01:00, Jason Gunthorpe wrote: > > Robin was able to check the documentation and what fsl_pamu has > > historically called detach_dev() is really putting the IOMMU into an > > IDENTITY mode. > > Unfortunately it was the other way around - it's the call to > fsl_setup_liodns() from fsl_pamu_probe() which leaves everything in bypass > by default (the PAACE_ATM_NO_XLATE part, IIRC), whereas the detach_device() > call here ends up disabling the given device's LIODN altogether Er, I see.. Let me think about it, you convinced me to change it from PLATFORM, so maybe we should go back to that if it is all wonky. > There doesn't appear to have ever been any code anywhere for putting > things *back* into bypass after using a VFIO domain, so as-is these > default domains would probably break all DMA :( Sounds like it just never worked right. ie going to VFIO mode was always a one way trip and you can't go back to a kernel driver. I don't think this patch makes it worse because we call the identity attach_dev in all the same places we called detach_dev in the first place. We add an extra call at the start of time, but that call is NOP'd by this: > > if (domain == platform_domain || !domain) > > + return 0; > > + (bah, and the variable name needs updating too) Honestly, I don't really want to fix FSL since it seems abandoned, so either this patch or going back to PLATFORM seems like the best option. Jason