From d5a40e7ac5990579046ba5e07bef35ae55596a9e Mon Sep 17 00:00:00 2001 From: Ben Skeggs Date: Tue, 7 Jun 2011 16:18:19 +1000 Subject: [PATCH] --- yaml --- r: 260137 b: refs/heads/master c: ad9ac437a500f8c0822bd5fe139af8ee2c132e15 h: refs/heads/master i: 260135: 47484131f7801ac72c1c7e53dee191877b8d8d7d v: v3 --- [refs] | 2 +- trunk/drivers/gpu/drm/nouveau/nouveau_mm.c | 11 +++++++++-- trunk/drivers/gpu/drm/nouveau/nouveau_vm.c | 2 +- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index d88bde53cb9d..ea6ed07c55dc 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e41f26e7d18951086611bc78cc35e244bd01d1ca +refs/heads/master: ad9ac437a500f8c0822bd5fe139af8ee2c132e15 diff --git a/trunk/drivers/gpu/drm/nouveau/nouveau_mm.c b/trunk/drivers/gpu/drm/nouveau/nouveau_mm.c index 7609756b6faf..1640dec3b823 100644 --- a/trunk/drivers/gpu/drm/nouveau/nouveau_mm.c +++ b/trunk/drivers/gpu/drm/nouveau/nouveau_mm.c @@ -158,11 +158,18 @@ int nouveau_mm_fini(struct nouveau_mm **prmm) { struct nouveau_mm *rmm = *prmm; - struct nouveau_mm_node *heap = + struct nouveau_mm_node *node, *heap = list_first_entry(&rmm->nodes, struct nouveau_mm_node, nl_entry); - if (!list_is_singular(&rmm->nodes)) + if (!list_is_singular(&rmm->nodes)) { + printk(KERN_ERR "nouveau_mm not empty at destroy time!\n"); + list_for_each_entry(node, &rmm->nodes, nl_entry) { + printk(KERN_ERR "0x%02x: 0x%08x 0x%08x\n", + node->type, node->offset, node->length); + } + WARN_ON(1); return -EBUSY; + } kfree(heap); kfree(rmm); diff --git a/trunk/drivers/gpu/drm/nouveau/nouveau_vm.c b/trunk/drivers/gpu/drm/nouveau/nouveau_vm.c index 519a6b4bba46..75ef595db4d5 100644 --- a/trunk/drivers/gpu/drm/nouveau/nouveau_vm.c +++ b/trunk/drivers/gpu/drm/nouveau/nouveau_vm.c @@ -396,8 +396,8 @@ nouveau_vm_del(struct nouveau_vm *vm) list_for_each_entry_safe(vpgd, tmp, &vm->pgd_list, head) { nouveau_vm_unlink(vm, vpgd->obj); } - WARN_ON(nouveau_mm_fini(&vm->mm) != 0); + nouveau_mm_fini(&vm->mm); kfree(vm->pgt); kfree(vm); }