drm/nvc0/fb: ignore readback page alloc failure to support userspace
authorBen Skeggs <bskeggs@redhat.com>
Wed, 16 Jan 2013 00:05:31 +0000 (10:05 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Fri, 26 Apr 2013 05:37:32 +0000 (15:37 +1000)
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/core/subdev/fb/nvc0.c

index 7606ed15b6faf55ea531e6637cc86976b24012c2..3b2ddc65bd4834ac39d9e464b082cc54aad04416 100644 (file)
@@ -178,7 +178,8 @@ nvc0_fb_init(struct nouveau_object *object)
        if (ret)
                return ret;
 
-       nv_wr32(priv, 0x100c10, priv->r100c10 >> 8);
+       if (priv->r100c10_page)
+               nv_wr32(priv, 0x100c10, priv->r100c10 >> 8);
        return 0;
 }
 
@@ -217,13 +218,13 @@ nvc0_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
        priv->base.ram.put = nv50_fb_vram_del;
 
        priv->r100c10_page = alloc_page(GFP_KERNEL | __GFP_ZERO);
-       if (!priv->r100c10_page)
-               return -ENOMEM;
-
-       priv->r100c10 = pci_map_page(device->pdev, priv->r100c10_page, 0,
-                                    PAGE_SIZE, PCI_DMA_BIDIRECTIONAL);
-       if (pci_dma_mapping_error(device->pdev, priv->r100c10))
-               return -EFAULT;
+       if (priv->r100c10_page) {
+               priv->r100c10 = pci_map_page(device->pdev, priv->r100c10_page,
+                                            0, PAGE_SIZE,
+                                            PCI_DMA_BIDIRECTIONAL);
+               if (pci_dma_mapping_error(device->pdev, priv->r100c10))
+                       return -EFAULT;
+       }
 
        return nouveau_fb_preinit(&priv->base);
 }