On Wed, Feb 11, 2015 at 2:21 AM, Alexandre Courbot <[email protected]> wrote: > Let GK20A's instmem take advantage of the IOMMU if it is present. Having > an IOMMU means that instmem is no longer allocated using the DMA API, > but instead obtained through page_alloc and made contiguous to the GPU > by IOMMU mappings. > > Signed-off-by: Alexandre Courbot <[email protected]> > --- > drm/nouveau/nvkm/subdev/instmem/gk20a.c | 272 > ++++++++++++++++++++++++++++---- > 1 file changed, 241 insertions(+), 31 deletions(-) > > diff --git a/drm/nouveau/nvkm/subdev/instmem/gk20a.c > b/drm/nouveau/nvkm/subdev/instmem/gk20a.c > index 4c8af6e..a20b93c 100644 > --- a/drm/nouveau/nvkm/subdev/instmem/gk20a.c > +++ b/drm/nouveau/nvkm/subdev/instmem/gk20a.c > @@ -20,12 +20,32 @@ > * DEALINGS IN THE SOFTWARE. > */ > > +/* > + * GK20A does not have dedicated video memory, and to accurately represent > this > + * fact Nouveau will not create a RAM device for it. Therefore its instmem > + * implementation must be done directly on top of system memory, while > providing > + * coherent read and write operations. > + * > + * Instmem can be allocated through two means: > + * 1) If a IOMMU mapping has been probed, the IOMMU API is used to make > memory
an IOMMU mapping > + * pages contiguous to the GPU. This is the preferred way. > + * 2) If no IOMMU mapping is probed, the DMA API is used to allocated > physically to allocate physically > + * contiguous memory. > + * > + * In both cases CPU read and writes are performed using PRAMIN (i.e. using > the > + * GPU path) to ensure these operations are coherent for the GPU. This > allows us > + * to use more "relaxed" allocation parameters when using the DMA API, since > we > + * never need a kernel mapping. > + */ Er yeah... obviously ignore my comments about sharing nv50_instmem_priv stuff. -ilia -- To unsubscribe from this list: send the line "unsubscribe linux-tegra" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
