OSDN Git Service

drm/nouveau: fix handling of GART OOM on pre-NV50 chipsets
authorBen Skeggs <bskeggs@redhat.com>
Tue, 31 Oct 2017 17:56:19 +0000 (03:56 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Thu, 2 Nov 2017 03:32:16 +0000 (13:32 +1000)
The correct thing to do on OOM is to return 0 and set mm_node to NULL,
otherwise TTM will assume some other kind of error, and not attempt to
evict other buffers to make space.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/nouveau_ttm.c

index b0ad7fc..ffc3458 100644 (file)
@@ -243,6 +243,10 @@ nv04_gart_manager_new(struct ttm_mem_type_manager *man,
        ret = nvkm_vm_get(man->priv, reg->num_pages << 12, node->page_shift,
                          NV_MEM_ACCESS_RW, &node->vma[0]);
        if (ret) {
+               if (ret == -ENOSPC) {
+                       reg->mm_node = NULL;
+                       ret = 0;
+               }
                kfree(node);
                return ret;
        }