drm/nouveau: Fix ordering between TTM and GEM release
authorThierry Reding <treding@nvidia.com>
Mon, 16 Sep 2019 14:19:25 +0000 (16:19 +0200)
committerBen Skeggs <bskeggs@redhat.com>
Tue, 17 Sep 2019 04:50:16 +0000 (14:50 +1000)
commit641f53c07d2760f1a53288c3cab0300030f049cb
treebf3a033bc07e7d512dab9bf5e7fb2e5492ae0edf
parent0bb21c9677e5a5e2355f4f81a4e48afe62257a75
drm/nouveau: Fix ordering between TTM and GEM release

When the last reference to a TTM BO is dropped, ttm_bo_release() will
acquire the DMA reservation object's wound/wait mutex while trying to
clean up (ttm_bo_cleanup_refs_or_queue() via ttm_bo_release()). It is
therefore essential that drm_gem_object_release() be called after the
TTM BO has been uninitialized, otherwise drm_gem_object_release() has
already destroyed the wound/wait mutex (via dma_resv_fini()).

Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/nouveau_bo.c
drivers/gpu/drm/nouveau/nouveau_gem.c