mirror of
https://github.com/torvalds/linux
synced 2024-10-19 17:58:44 +00:00
drm/panfrost: Shrink sched_lock
drm/scheduler requires a lock between _init and _push_job, but the reservation lock dance doesn't. So shrink the critical section a notch. v2: Lucas pointed out how this should really work, I got it all wrong in v1. Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> Cc: Lucas Stach <l.stach@pengutronix.de> Cc: Rob Herring <robh@kernel.org> Cc: Tomeu Vizoso <tomeu.vizoso@collabora.com> Cc: Steven Price <steven.price@arm.com> Cc: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com> Link: https://patchwork.freedesktop.org/patch/msgid/20210622165511.3169559-5-daniel.vetter@ffwll.ch
This commit is contained in:
parent
2254e49cef
commit
94dd80feb6
|
@ -224,14 +224,13 @@ int panfrost_job_push(struct panfrost_job *job)
|
|||
struct ww_acquire_ctx acquire_ctx;
|
||||
int ret = 0;
|
||||
|
||||
mutex_lock(&pfdev->sched_lock);
|
||||
|
||||
ret = drm_gem_lock_reservations(job->bos, job->bo_count,
|
||||
&acquire_ctx);
|
||||
if (ret) {
|
||||
mutex_unlock(&pfdev->sched_lock);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
||||
mutex_lock(&pfdev->sched_lock);
|
||||
|
||||
ret = drm_sched_job_init(&job->base, entity, NULL);
|
||||
if (ret) {
|
||||
|
|
Loading…
Reference in a new issue