2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-12-21 11:44:01 +08:00

drm/nouveau/pm: translate ramcfg strap through ram restrict table

Hopefully this is how we're supposed to correctly handle when the RAMCFG
strap is above the number of entries in timing-related tables.

It's rather difficult to confirm without finding a configuration where
the ram restrict table doesn't map 8-15 back onto 0-7 anyway.  There's
not a single vbios in the repo which is configured differently..

In any case, this is probably still better than potentially reading
outside of the bounds of various tables..

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
Ben Skeggs 2011-04-20 14:36:13 +10:00
parent bfb61f43b3
commit 96d1fcf8b5

View File

@ -116,8 +116,10 @@ nouveau_perf_timing(struct drm_device *dev, struct bit_entry *P,
entries = tmap[4]; entries = tmap[4];
} }
ramcfg = nv_rd32(dev, NV_PEXTDEV_BOOT_0) & 0x0000003c; ramcfg = (nv_rd32(dev, NV_PEXTDEV_BOOT_0) & 0x0000003c) >> 2;
ramcfg >>= 2; if (bios->ram_restrict_tbl_ptr)
ramcfg = bios->data[bios->ram_restrict_tbl_ptr + ramcfg];
if (ramcfg >= entries) { if (ramcfg >= entries) {
NV_WARN(dev, "ramcfg strap out of bounds!\n"); NV_WARN(dev, "ramcfg strap out of bounds!\n");
return NULL; return NULL;