On Thu, Sep 01, 2016 at 05:58:17PM +0300, Stanimir Varbanov wrote: > Hi, > > Cc: Marek > > On 08/30/2016 08:17 PM, Bjorn Andersson wrote: > > On Mon 29 Aug 04:48 PDT 2016, Stanimir Varbanov wrote: > > > > [..] > >>> Trying to wrap my head around how the iommu part works here. The > >>> downstream code seems to indicate that this is a "generic" secure iommu > >>> interface - used by venus, camera and kgsl; likely for dealing with DRM > >>> protected buffers. > >> > >> The secure iommu interface is for content protected buffers. But these > >> secure iommu contexts aren't used by msm DRM nor Venus in mainline. In > >> Venus case I use non-secure iommu context for data buffers. > >> > > > > We must consider the case when DRM, VFE and Venus handles protected > > buffers. > > That would be interesting topic. > > > > >>> > >>> As such the iommu tables are not part of the venus rproc; I believe they > >>> should either be tied into the msm-iommu driver or perhaps exposed as > >>> its own iommu(?). > >> > >> The page tables are in msm-iommu driver. > >> > > > > So, just to verify your answer, the msm-iommu driver will handle both > > protected and unprotected? > > yes, at least for Venus case, the secured buffers are tied to different > iommu contexts (and stream IDs). But this needs to be verified more > carefully. > > > > >>> > >>> > >>> But I presume from your inclusion that you've concluded that the venus > >>> firmware we have refuses to execute without these tables at least > >>> initialized, is this correct? > >> > >> Yes, the SMC call for PAS memory-setup will fail if this page table is > >> not initialized. > >> > > > > If the msm-iommu driver will handle the protected buffers (or if there > > will be a separate iommu driver for protected buffers) it should issue > > these calls, to not be dependant on the rproc-venus driver. > > For msm8916 we don't have iommu driver in mainline, I don't know what is > the status with msm8996.
The iommu v2 transparently handles this and removes the requirement for the specific SCM page tbl init calls. However, the memory still has to be configured to be accessible from the remote processor. <snip> Andy