From: Ben Skeggs <bskeggs@redhat.com>
Date: Mon, 22 Sep 2014 01:21:57 +0000 (+1000)
Subject: drm/nouveau/bios: use NPDE to locate images beyond those defined by PCIR
X-Git-Tag: v3.19-rc1~73^2~15^2~64
X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=7205875d09e4fd60d21a448fe070c0ba3e6e9588;p=users%2Fdwmw2%2Flinux.git

drm/nouveau/bios: use NPDE to locate images beyond those defined by PCIR

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
---

diff --git a/drivers/gpu/drm/nouveau/core/subdev/bios/image.c b/drivers/gpu/drm/nouveau/core/subdev/bios/image.c
index dd8fd2f4263b4..df85cc6d0fc7e 100644
--- a/drivers/gpu/drm/nouveau/core/subdev/bios/image.c
+++ b/drivers/gpu/drm/nouveau/core/subdev/bios/image.c
@@ -25,11 +25,13 @@
 #include <subdev/bios.h>
 #include <subdev/bios/image.h>
 #include <subdev/bios/pcir.h>
+#include <subdev/bios/npde.h>
 
 static bool
 nvbios_imagen(struct nouveau_bios *bios, struct nvbios_image *image)
 {
 	struct nvbios_pcirT pcir;
+	struct nvbios_npdeT npde;
 	u8  ver;
 	u16 hdr;
 	u32 data;
@@ -48,6 +50,11 @@ nvbios_imagen(struct nouveau_bios *bios, struct nvbios_image *image)
 	image->size = pcir.image_size;
 	image->type = pcir.image_type;
 	image->last = pcir.last;
+
+	if (!(data = nvbios_npdeTp(bios, image->base, &npde)))
+		return true;
+	image->size = npde.image_size;
+	image->last = npde.last;
 	return true;
 }