Merge branches 'core-fixes-for-linus' and 'irq-fixes-for-linus' of git://git.kernel...
[pandora-kernel.git] / drivers / gpu / drm / nouveau / nouveau_perf.c
index 90ab497..922fb6b 100644 (file)
@@ -116,8 +116,10 @@ nouveau_perf_timing(struct drm_device *dev, struct bit_entry *P,
                entries   = tmap[4];
        }
 
-       ramcfg = nv_rd32(dev, NV_PEXTDEV_BOOT_0) & 0x0000003c;
-       ramcfg >>= 2;
+       ramcfg = (nv_rd32(dev, NV_PEXTDEV_BOOT_0) & 0x0000003c) >> 2;
+       if (bios->ram_restrict_tbl_ptr)
+               ramcfg = bios->data[bios->ram_restrict_tbl_ptr + ramcfg];
+
        if (ramcfg >= entries) {
                NV_WARN(dev, "ramcfg strap out of bounds!\n");
                return NULL;
@@ -243,12 +245,14 @@ nouveau_perf_init(struct drm_device *dev)
                        } else {
                                perflvl->shader = ROM16(subent(3)) & 0xfff;
                                perflvl->core   = perflvl->shader / 2;
+                               perflvl->unk0a  = ROM16(subent(4)) & 0xfff;
                                perflvl->memory = ROM16(subent(5)) & 0xfff;
                        }
 
                        perflvl->core *= 1000;
                        perflvl->shader *= 1000;
                        perflvl->memory *= 1000;
+                       perflvl->unk0a *= 1000;
                        break;
                }