[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 dri-devel mailing list