Hi Lucas, On Wed, Oct 16, 2019 at 04:27:16PM +0200, Lucas Stach wrote: > The switch to per-process address spaces erroneously dropped the check > which validated that the command buffer is mapped through the linear > apperture as required by the hardware. This turned a system > misconfiguration with a helpful error message into a very hard to > debug issue. Reinstate the check at the appropriate location. > > Fixes: 17e4660ae3d7 (drm/etnaviv: implement per-process address spaces on MMUv2) > Signed-off-by: Lucas Stach <l.stach@xxxxxxxxxxxxxx> > --- > drivers/gpu/drm/etnaviv/etnaviv_mmu.c | 17 ++++++++++++++--- > 1 file changed, 14 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/etnaviv/etnaviv_mmu.c b/drivers/gpu/drm/etnaviv/etnaviv_mmu.c > index 35ebae6a1be7..3607d348c298 100644 > --- a/drivers/gpu/drm/etnaviv/etnaviv_mmu.c > +++ b/drivers/gpu/drm/etnaviv/etnaviv_mmu.c > @@ -328,12 +328,23 @@ etnaviv_iommu_context_init(struct etnaviv_iommu_global *global, > > ret = etnaviv_cmdbuf_suballoc_map(suballoc, ctx, &ctx->cmdbuf_mapping, > global->memory_base); > - if (ret) { > - global->ops->free(ctx); > - return NULL; > + if (ret) > + goto out_free; > + > + if (global->version == ETNAVIV_IOMMU_V1 && > + ctx->cmdbuf_mapping.iova > 0x80000000) { > + dev_err(global->dev, > + "command buffer outside valid memory window\n"); > + goto out_unmap; > } > > return ctx; > + > +out_unmap: > + etnaviv_cmdbuf_suballoc_unmap(ctx, &ctx->cmdbuf_mapping); > +out_free: > + global->ops->free(ctx); > + return NULL; > } > > void etnaviv_iommu_restore(struct etnaviv_gpu *gpu, Reviewed-by: Guido Günther <agx@xxxxxxxxxxx> Cheers, -- Guido > -- > 2.20.1 > > _______________________________________________ > etnaviv mailing list > etnaviv@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/etnaviv _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel