On Thu, Aug 13, 2020 at 6:14 AM Will Deacon <will@xxxxxxxxxx> wrote: > > On Mon, Aug 10, 2020 at 04:26:48PM -0600, Jordan Crouse wrote: > > Add domain attribute DOMAIN_ATTR_PGTABLE_CFG. This will be used by > > arm-smmu to share the current pagetable configuration with the > > leaf driver and to allow the leaf driver to set up a new pagetable > > configuration under certain circumstances. > > > > Signed-off-by: Jordan Crouse <jcrouse@xxxxxxxxxxxxxx> > > --- > > > > include/linux/iommu.h | 1 + > > 1 file changed, 1 insertion(+) > > > > diff --git a/include/linux/iommu.h b/include/linux/iommu.h > > index fee209efb756..995ab8c47ef2 100644 > > --- a/include/linux/iommu.h > > +++ b/include/linux/iommu.h > > @@ -118,6 +118,7 @@ enum iommu_attr { > > DOMAIN_ATTR_FSL_PAMUV1, > > DOMAIN_ATTR_NESTING, /* two stages of translation */ > > DOMAIN_ATTR_DMA_USE_FLUSH_QUEUE, > > + DOMAIN_ATTR_PGTABLE_CFG, > > DOMAIN_ATTR_MAX, > > }; > > Nobody other than the adreno gpu uses this, so can we avoid exposing it > in the IOMMU API, please? Given that you have a reference to the adreno > GPU device in the SMMU implementation code thanks to .alloc_context_bank(), > can you squirrel some function pointers away in the driver data (i.e. with > dev_set_drvdata()) instead? > Hmm, we are already using drvdata on the gpu side, and it looks like arm-smmu is also using it. Could we get away with stashing an extra 'void *' in iommu_domain itself? Or alternatively, if we had a is_arm_smmu_domain(domain), then we could just directly call some exported private fxns with the domain ptr (which could then verify that the domain is actually an arm_smmu_domain, and then from there that the smmu is indeed qcom,adreno-smmu, to keep things sane) BR, -R