[PATCH v2 2/5] drm/etnaviv: assert GPU lock held in perfmon pipe_*_read functions
Christian Gmeiner
christian.gmeiner at gmail.com
Sun Jul 7 20:38:57 UTC 2024
>
> The perf counter read functions don't just read registers, but they
> also mutate state to direct the reads towards the correct pipe and
> engine. Assert that the GPU mutex is held at this point, so that
> those state changes don't interfere with others.
>
> Signed-off-by: Lucas Stach <l.stach at pengutronix.de>
Reviewed-by: Christian Gmeiner <cgmeiner at igalia.com>
> ---
> v2: new patch
> ---
> drivers/gpu/drm/etnaviv/etnaviv_perfmon.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/gpu/drm/etnaviv/etnaviv_perfmon.c b/drivers/gpu/drm/etnaviv/etnaviv_perfmon.c
> index dc9dea664a28..d53a5c293373 100644
> --- a/drivers/gpu/drm/etnaviv/etnaviv_perfmon.c
> +++ b/drivers/gpu/drm/etnaviv/etnaviv_perfmon.c
> @@ -62,6 +62,8 @@ static u32 pipe_perf_reg_read(struct etnaviv_gpu *gpu,
> u32 value = 0;
> unsigned i;
>
> + lockdep_assert_held(&gpu->lock);
> +
> for (i = 0; i < gpu->identity.pixel_pipes; i++) {
> pipe_select(gpu, clock, i);
> value += perf_reg_read(gpu, domain, signal);
> @@ -81,6 +83,8 @@ static u32 pipe_reg_read(struct etnaviv_gpu *gpu,
> u32 value = 0;
> unsigned i;
>
> + lockdep_assert_held(&gpu->lock);
> +
> for (i = 0; i < gpu->identity.pixel_pipes; i++) {
> pipe_select(gpu, clock, i);
> value += gpu_read(gpu, signal->data);
> --
> 2.39.2
>
--
greets
--
Christian Gmeiner, MSc
https://christian-gmeiner.info/privacypolicy
More information about the etnaviv
mailing list