mirror of
https://github.com/torvalds/linux
synced 2024-10-20 02:09:15 +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;
|
struct ww_acquire_ctx acquire_ctx;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
mutex_lock(&pfdev->sched_lock);
|
|
||||||
|
|
||||||
ret = drm_gem_lock_reservations(job->bos, job->bo_count,
|
ret = drm_gem_lock_reservations(job->bos, job->bo_count,
|
||||||
&acquire_ctx);
|
&acquire_ctx);
|
||||||
if (ret) {
|
if (ret)
|
||||||
mutex_unlock(&pfdev->sched_lock);
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
|
||||||
|
mutex_lock(&pfdev->sched_lock);
|
||||||
|
|
||||||
ret = drm_sched_job_init(&job->base, entity, NULL);
|
ret = drm_sched_job_init(&job->base, entity, NULL);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
|
|
Loading…
Reference in a new issue