[PATCH 1/2] drm/etnaviv: fix deadlock in GPU coredump
Christian Gmeiner
christian.gmeiner at gmail.com
Fri Oct 25 10:42:47 UTC 2019
Am Mi., 16. Okt. 2019 um 16:27 Uhr schrieb Lucas Stach <l.stach at pengutronix.de>:
>
> The GPU coredump function violates the locking order by holding the MMU
> context lock while trying to acquire the etnaviv_gem_object lock. This
> results in a possible ABBA deadlock with other codepaths which follow
> the established locking order.
> Fortunately this is easy to fix by dropping the MMU context lock
> earlier, as the BO dumping doesn't need the MMU context to be stable.
> The only thing the BO dumping cares about are the BO mappings, which
> are stable across the lifetime of the job.
>
> Fixes: 27b67278e007 (drm/etnaviv: rework MMU handling)
> [ Not really the first bad commit, but the one where this fix applies
> cleanly. Stable kernels need a manual backport. ]
> Reported-by: Christian Gmeiner <christian.gmeiner at gmail.com>
> Signed-off-by: Lucas Stach <l.stach at pengutronix.de>
Tested-by: Christian Gmeiner <christian.gmeiner at gmail.com>
> ---
> drivers/gpu/drm/etnaviv/etnaviv_dump.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/etnaviv/etnaviv_dump.c b/drivers/gpu/drm/etnaviv/etnaviv_dump.c
> index 698db540972c..648cf0207309 100644
> --- a/drivers/gpu/drm/etnaviv/etnaviv_dump.c
> +++ b/drivers/gpu/drm/etnaviv/etnaviv_dump.c
> @@ -180,6 +180,8 @@ void etnaviv_core_dump(struct etnaviv_gem_submit *submit)
> etnaviv_cmdbuf_get_va(&submit->cmdbuf,
> &gpu->mmu_context->cmdbuf_mapping));
>
> + mutex_unlock(&gpu->mmu_context->lock);
> +
> /* Reserve space for the bomap */
> if (n_bomap_pages) {
> bomap_start = bomap = iter.data;
> @@ -221,8 +223,6 @@ void etnaviv_core_dump(struct etnaviv_gem_submit *submit)
> obj->base.size);
> }
>
> - mutex_unlock(&gpu->mmu_context->lock);
> -
> etnaviv_core_dump_header(&iter, ETDUMP_BUF_END, iter.data);
>
> dev_coredumpv(gpu->dev, iter.start, iter.data - iter.start, GFP_KERNEL);
> --
> 2.20.1
>
--
greets
--
Christian Gmeiner, MSc
https://christian-gmeiner.info/privacypolicy
More information about the etnaviv
mailing list