Commit e54163e9 authored by Christian König's avatar Christian König Committed by Christian König

drm/vmwgfx: unbind in vmw_ttm_unpopulate

Doing this in vmw_ttm_destroy() is to late.

It turned out that this is not a good idea at all because it leaves pointers
to freed up system memory pages in the GART tables of the drivers.
Signed-off-by: default avatarChristian König <christian.koenig@amd.com>
Reviewed-by: default avatarThomas Hellström <thomas.hellstrom@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210728130552.2074-1-christian.koenig@amd.com
parent a23e0a2a
...@@ -526,14 +526,9 @@ static void vmw_ttm_destroy(struct ttm_device *bdev, struct ttm_tt *ttm) ...@@ -526,14 +526,9 @@ static void vmw_ttm_destroy(struct ttm_device *bdev, struct ttm_tt *ttm)
struct vmw_ttm_tt *vmw_be = struct vmw_ttm_tt *vmw_be =
container_of(ttm, struct vmw_ttm_tt, dma_ttm); container_of(ttm, struct vmw_ttm_tt, dma_ttm);
vmw_ttm_unbind(bdev, ttm);
ttm_tt_destroy_common(bdev, ttm); ttm_tt_destroy_common(bdev, ttm);
vmw_ttm_unmap_dma(vmw_be); vmw_ttm_unmap_dma(vmw_be);
if (vmw_be->dev_priv->map_mode == vmw_dma_alloc_coherent) ttm_tt_fini(ttm);
ttm_tt_fini(&vmw_be->dma_ttm);
else
ttm_tt_fini(ttm);
if (vmw_be->mob) if (vmw_be->mob)
vmw_mob_destroy(vmw_be->mob); vmw_mob_destroy(vmw_be->mob);
...@@ -578,6 +573,8 @@ static void vmw_ttm_unpopulate(struct ttm_device *bdev, ...@@ -578,6 +573,8 @@ static void vmw_ttm_unpopulate(struct ttm_device *bdev,
dma_ttm); dma_ttm);
unsigned int i; unsigned int i;
vmw_ttm_unbind(bdev, ttm);
if (vmw_tt->mob) { if (vmw_tt->mob) {
vmw_mob_destroy(vmw_tt->mob); vmw_mob_destroy(vmw_tt->mob);
vmw_tt->mob = NULL; vmw_tt->mob = NULL;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment