mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 22:00:53 +07:00
drm/etnaviv: reinstate MMUv1 command buffer window check
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: 17e4660ae3
(drm/etnaviv: implement per-process address spaces on MMUv2)
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Guido Günther <agx@sigxcpu.org>
This commit is contained in:
parent
ca8cb69580
commit
18fa692d80
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user