Commit 366d6b20 authored by Ilia Mirkin's avatar Ilia Mirkin Committed by Greg Kroah-Hartman

drm/nouveau/bios: fix offset calculation for BMPv1 bioses

commit 5d2f4767 upstream.

The only BIOS on record that needs the 14 offset has a bios major
version 2 but BMP version 1.01. Another bunch of BIOSes that need the 18
offset have BMP version 2.01 or 5.01 or higher. So instead of looking at the
bios major version, look at the BMP version. BIOSes with BMP version 0
do not contain a detectable script, so always return 0 for them.

See https://bugs.freedesktop.org/show_bug.cgi?id=68835Reported-by: default avatarMauro Molinari <mauromol@tiscali.it>
Signed-off-by: default avatarIlia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 6ba854e9
...@@ -366,13 +366,13 @@ static u16 ...@@ -366,13 +366,13 @@ static u16
init_script(struct nouveau_bios *bios, int index) init_script(struct nouveau_bios *bios, int index)
{ {
struct nvbios_init init = { .bios = bios }; struct nvbios_init init = { .bios = bios };
u16 data; u16 bmp_ver = bmp_version(bios), data;
if (bmp_version(bios) && bmp_version(bios) < 0x0510) { if (bmp_ver && bmp_ver < 0x0510) {
if (index > 1) if (index > 1 || bmp_ver < 0x0100)
return 0x0000; return 0x0000;
data = bios->bmp_offset + (bios->version.major < 2 ? 14 : 18); data = bios->bmp_offset + (bmp_ver < 0x0200 ? 14 : 18);
return nv_ro16(bios, data + (index * 2)); return nv_ro16(bios, data + (index * 2));
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment