drm/nouveau/mmu: flush tlbs before deleting page tables
authorBen Skeggs <bskeggs@redhat.com>
Mon, 25 Sep 2017 05:05:38 +0000 (15:05 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Tue, 3 Oct 2017 06:34:10 +0000 (16:34 +1000)
Even though we've zeroed the PDE, the GPU may have cached the PD, so we
need to flush when deleting them.

Noticed while working on replacement MMU code, but a backport might be a
good idea, so let's fix it in the current code too.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Cc: stable@vger.kernel.org
drivers/gpu/drm/nouveau/nvkm/subdev/mmu/base.c

index d06ad2c372bf30efb6b8ecc5978776def5721222..455da298227f65c2b4c2cfc6a2cedebe12661877 100644 (file)
@@ -241,6 +241,8 @@ nvkm_vm_unmap_pgt(struct nvkm_vm *vm, int big, u32 fpde, u32 lpde)
                        mmu->func->map_pgt(vpgd->obj, pde, vpgt->mem);
                }
 
+               mmu->func->flush(vm);
+
                nvkm_memory_del(&pgt);
        }
 }