| From 5dc7f4aa9d84ea94b54a9bfcef095f0289f1ebda Mon Sep 17 00:00:00 2001 |
| From: Ben Skeggs <bskeggs@redhat.com> |
| Date: Fri, 14 Oct 2016 13:16:36 +1000 |
| Subject: drm/nouveau/bios: require checksum to match for fast acpi shadow method |
| |
| From: Ben Skeggs <bskeggs@redhat.com> |
| |
| commit 5dc7f4aa9d84ea94b54a9bfcef095f0289f1ebda upstream. |
| |
| Signed-off-by: Ben Skeggs <bskeggs@redhat.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| 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(&bios->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 |