-
- Downloads
drm/v3d: Fix race-condition between sysfs/fdinfo and interrupt handler
In V3D, the conclusion of a job is indicated by a IRQ. When a job finishes, then we update the local and the global GPU stats of that queue. But, while the GPU stats are being updated, a user might be reading the stats from sysfs or fdinfo. For example, on `gpu_stats_show()`, we could think about a scenario where `v3d->queue[queue].start_ns != 0`, then an interrupt happens, we update the value of `v3d->queue[queue].start_ns` to 0, we come back to `gpu_stats_show()` to calculate `active_runtime` and now, `active_runtime = timestamp`. In this simple example, the user would see a spike in the queue usage, that didn't match reality. In order to address this issue properly, use a seqcount to protect read and write sections of the code. Fixes: 09a93cc4 ("drm/v3d: Implement show_fdinfo() callback for GPU usage stats") Reported-by:Tvrtko Ursulin <tursulin@igalia.com> Signed-off-by:
Maíra Canal <mcanal@igalia.com> Reviewed-by:
Tvrtko Ursulin <tvrtko.ursulin@igalia.com> Link: https://patchwork.freedesktop.org/patch/msgid/20240420213632.339941-7-mcanal@igalia.com
Showing
- drivers/gpu/drm/v3d/v3d_drv.c 10 additions, 4 deletionsdrivers/gpu/drm/v3d/v3d_drv.c
- drivers/gpu/drm/v3d/v3d_drv.h 7 additions, 0 deletionsdrivers/gpu/drm/v3d/v3d_drv.h
- drivers/gpu/drm/v3d/v3d_gem.c 1 addition, 0 deletionsdrivers/gpu/drm/v3d/v3d_gem.c
- drivers/gpu/drm/v3d/v3d_sched.c 7 additions, 0 deletionsdrivers/gpu/drm/v3d/v3d_sched.c
Loading
Please register or sign in to comment