On Thu, 1 Feb 2018 12:49:24 +0000
Robin Murphy <robin.mur...@arm.com> wrote:

> On 01/02/18 10:18, Jonathan Cameron wrote:
> > Hi All,
> > 
> > We have a crypto accelerator which needs to have a few different settings
> > depending on whether or not the SMMUv3 is enabled and translating addresses
> > or not.
> > 
> > https://marc.info/?l=linux-crypto-vger&m=151732626428206&w=2
> > 
> > 1) A quirk of the hardware revision means we need to turn some elements
> >     off if the iommu is enabled.
> > 2) The device has certain cache related settings that means it needs to know
> >     if it is dealing with VAs or PAs.
> > 
> > Current approach is to see if the iommu_group is set in struct device.
> > 
> > We could fine one instance of another driver doing this and copied that,
> > (drivers/dma/rcar-dmac.c)
> > but the precedence is weak enough that confirmation would be good.
> > So whilst it 'works' the question is whether it is safe in general
> > and whether there is a better way.  
> 
> The presence of a group alone is not sufficient, as it only tells you 
> that the device is associated with an IOMMU in some way (including VFIO 
> no-iommu mode where said IOMMU isn't even real).
> 
> To detect whether translation is active, I think the best way right now 
> would be to first call iommu_get_domain_for_dev() to see whether the 
> device is actually attached to a domain, then if so check the domain 
> type for the __IOMMU_DOMAIN_PAGING flag to confirm if it represents a 
> translation context rather than a bypass one.

Thanks - that works great.

> 
> It might be reasonable to propose wrapping that up in an IOMMU API (or 
> possibly DMA API, as appropriate) helper, as there are certainly other 
> drivers doing various degrees of this sort of thing for various reasons 
> (to the point where we currently have to accommodate rather nonsensical 
> iova_to_phys() calls on identity domains).

Sounds like a good plan but the fun question as ever is what to call it..

iommu_domain_can_map or iommu_domain_is_translating perhaps?

For now I'll just put the check in the driver so we can move forward
in parallel.

Thanks,

Jonathan
> 
> Robin.

_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

Reply via email to