drm/nouveau/bar: only ioremap BAR3 if it exists
authorAlexandre Courbot <acourbot@nvidia.com>
Fri, 2 May 2014 09:32:34 +0000 (18:32 +0900)
committerBen Skeggs <bskeggs@redhat.com>
Tue, 10 Jun 2014 06:05:49 +0000 (16:05 +1000)
Some chips that use system memory exclusively (e.g. GK20A) do not
expose 2 BAR regions. For them only BAR1 exists, and it should be used
for USERD mapping. Do not map BAR3 if its resource does not exist.

Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
Reviewed-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/core/subdev/bar/base.c

index bdf594116f3f2a1ab49698669ccf7a2b641c91ee..73b1ed20c8d597b5d6b4c9f67f91b24cb3814d30 100644 (file)
@@ -118,8 +118,10 @@ nouveau_bar_create_(struct nouveau_object *parent,
        if (ret)
                return ret;
 
-       bar->iomem = ioremap(nv_device_resource_start(device, 3),
-                            nv_device_resource_len(device, 3));
+       if (nv_device_resource_len(device, 3) != 0)
+               bar->iomem = ioremap(nv_device_resource_start(device, 3),
+                                    nv_device_resource_len(device, 3));
+
        return 0;
 }