[PATCH 4.9 037/116] drm/nouveau/bios: require checksum to match for fast acpi shadow method

2017-01-06 Thread Greg Kroah-Hartman
4.9-stable review patch.  If anyone has any objections, please let me know.

--

From: Ben Skeggs 

commit 5dc7f4aa9d84ea94b54a9bfcef095f0289f1ebda upstream.

Signed-off-by: Ben Skeggs 
Signed-off-by: Greg Kroah-Hartman 

---
 drivers/gpu/drm/nouveau/nvkm/subdev/bios/priv.h   |1 +
 drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadow.c |7 +--
 drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadowacpi.c |1 +
 3 files changed, 7 insertions(+), 2 deletions(-)

--- a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/priv.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/priv.h
@@ -12,6 +12,7 @@ struct nvbios_source {
bool rw;
bool ignore_checksum;
bool no_pcir;
+   bool require_checksum;
 };
 
 int nvbios_extend(struct nvkm_bios *, u32 length);
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadow.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadow.c
@@ -86,9 +86,12 @@ shadow_image(struct nvkm_bios *bios, int
nvbios_checksum(>data[image.base], image.size)) {
nvkm_debug(subdev, "%08x: checksum failed\n",
   image.base);
-   if (mthd->func->rw)
+   if (!mthd->func->require_checksum) {
+   if (mthd->func->rw)
+   score += 1;
score += 1;
-   score += 1;
+   } else
+   return 0;
} else {
score += 3;
}
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadowacpi.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadowacpi.c
@@ -99,6 +99,7 @@ nvbios_acpi_fast = {
.init = acpi_init,
.read = acpi_read_fast,
.rw = false,
+   .require_checksum = true,
 };
 
 const struct nvbios_source




[PATCH 4.9 037/116] drm/nouveau/bios: require checksum to match for fast acpi shadow method

2017-01-06 Thread Greg Kroah-Hartman
4.9-stable review patch.  If anyone has any objections, please let me know.

--

From: Ben Skeggs 

commit 5dc7f4aa9d84ea94b54a9bfcef095f0289f1ebda upstream.

Signed-off-by: Ben Skeggs 
Signed-off-by: Greg Kroah-Hartman 

---
 drivers/gpu/drm/nouveau/nvkm/subdev/bios/priv.h   |1 +
 drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadow.c |7 +--
 drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadowacpi.c |1 +
 3 files changed, 7 insertions(+), 2 deletions(-)

--- a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/priv.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/priv.h
@@ -12,6 +12,7 @@ struct nvbios_source {
bool rw;
bool ignore_checksum;
bool no_pcir;
+   bool require_checksum;
 };
 
 int nvbios_extend(struct nvkm_bios *, u32 length);
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadow.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadow.c
@@ -86,9 +86,12 @@ shadow_image(struct nvkm_bios *bios, int
nvbios_checksum(>data[image.base], image.size)) {
nvkm_debug(subdev, "%08x: checksum failed\n",
   image.base);
-   if (mthd->func->rw)
+   if (!mthd->func->require_checksum) {
+   if (mthd->func->rw)
+   score += 1;
score += 1;
-   score += 1;
+   } else
+   return 0;
} else {
score += 3;
}
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadowacpi.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadowacpi.c
@@ -99,6 +99,7 @@ nvbios_acpi_fast = {
.init = acpi_init,
.read = acpi_read_fast,
.rw = false,
+   .require_checksum = true,
 };
 
 const struct nvbios_source