diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2022-06-01 20:46:31 +1000 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2022-07-27 09:05:48 +1000 |
commit | a6fd8f936402c3bcc5ac6aed9cca8e73b5ca08f7 (patch) | |
tree | a672ce34eb30bf18dd356350bc75f54dda6d25e0 /drivers/gpu/drm/nouveau/nvkm/engine/disp/base.c | |
parent | 32dd9236698bcd2ffdb69954b167a851fd50182a (diff) | |
download | linux-a6fd8f936402c3bcc5ac6aed9cca8e73b5ca08f7.tar.bz2 |
drm/nouveau/disp: add supervisor mutex
Will be used to protect NVIF_CLASS_OUTP method calls from racing with
in-progress supervisor handling.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nvkm/engine/disp/base.c')
-rw-r--r-- | drivers/gpu/drm/nouveau/nvkm/engine/disp/base.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/base.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/base.c index 10d4a3359a3f..65c99d948b68 100644 --- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/base.c +++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/base.c @@ -399,8 +399,11 @@ nvkm_disp_dtor(struct nvkm_engine *engine) nvkm_gpuobj_del(&disp->inst); nvkm_event_fini(&disp->uevent); - if (disp->super.wq) + + if (disp->super.wq) { destroy_workqueue(disp->super.wq); + mutex_destroy(&disp->super.mutex); + } nvkm_event_fini(&disp->vblank); nvkm_event_fini(&disp->hpd); @@ -467,6 +470,7 @@ nvkm_disp_new_(const struct nvkm_disp_func *func, struct nvkm_device *device, return -ENOMEM; INIT_WORK(&disp->super.work, func->super); + mutex_init(&disp->super.mutex); } return nvkm_event_init(func->uevent, 1, ARRAY_SIZE(disp->chan), &disp->uevent); |