|
|
42a4d9 |
From 53b64698cdcba24ebcea482523196eb1e64c65aa Mon Sep 17 00:00:00 2001
|
|
|
42a4d9 |
From: Ladi Prosek <lprosek@redhat.com>
|
|
|
42a4d9 |
Date: Mon, 31 Oct 2016 19:33:05 +0100
|
|
|
42a4d9 |
Subject: vgabios: Reorder video modes to work around a Windows bug
|
|
|
42a4d9 |
|
|
|
42a4d9 |
RH-Author: Ladi Prosek <lprosek@redhat.com>
|
|
|
42a4d9 |
Message-id: <1477924385-6169-1-git-send-email-lprosek@redhat.com>
|
|
|
42a4d9 |
Patchwork-id: 72677
|
|
|
42a4d9 |
O-Subject: [RHEL-7.4/7.3.z seabios PATCH] vgabios: Reorder video modes to work around a Windows bug
|
|
|
42a4d9 |
Bugzilla: 1392028
|
|
|
42a4d9 |
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
|
|
|
42a4d9 |
RH-Acked-by: Gerd Hoffmann <kraxel@redhat.com>
|
|
|
42a4d9 |
RH-Acked-by: vrozenfe <vrozenfe@redhat.com>
|
|
|
42a4d9 |
|
|
|
42a4d9 |
Windows Server 2016 and Windows 10 RS1 come with a bug in its blue screen
|
|
|
42a4d9 |
of death rendering logic which prevents it from generating crash dumps.
|
|
|
42a4d9 |
|
|
|
42a4d9 |
The bug does not manifest if Windows sees a suitable 32 bpp video mode
|
|
|
42a4d9 |
before a suitable 24 bpp video mode in the list of modes returned from
|
|
|
42a4d9 |
vgabios. This commit moves all 32 bpp modes to the front of the list to
|
|
|
42a4d9 |
make sure that this is always the case.
|
|
|
42a4d9 |
|
|
|
42a4d9 |
Upstream patch:
|
|
|
42a4d9 |
https://www.coreboot.org/pipermail/seabios/2016-October/010963.html
|
|
|
42a4d9 |
|
|
|
42a4d9 |
There are valid concerns upstream about the breaking nature of the fix
|
|
|
42a4d9 |
but for the limited set of operating systems supported by RHEL/RHEV we
|
|
|
42a4d9 |
can easily verify that they are unaffected. So as things stand now, this
|
|
|
42a4d9 |
is a downstream-only patch which will be reverted in the near future;
|
|
|
42a4d9 |
the exact time will depend on Windows 10 RS2 schedule and other factors.
|
|
|
42a4d9 |
The goal is to make sure that our customers running Windows 10 VMs can
|
|
|
42a4d9 |
generate crash dumps.
|
|
|
42a4d9 |
|
|
|
42a4d9 |
Signed-off-by: Ladi Prosek <lprosek@redhat.com>
|
|
|
42a4d9 |
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
|
|
42a4d9 |
---
|
|
|
42a4d9 |
vgasrc/bochsvga.c | 39 ++++++++++++++++++++-------------------
|
|
|
42a4d9 |
1 file changed, 20 insertions(+), 19 deletions(-)
|
|
|
42a4d9 |
|
|
|
42a4d9 |
diff --git a/vgasrc/bochsvga.c b/vgasrc/bochsvga.c
|
|
|
42a4d9 |
index ec5d101..c5d1511 100644
|
|
|
42a4d9 |
--- a/vgasrc/bochsvga.c
|
|
|
42a4d9 |
+++ b/vgasrc/bochsvga.c
|
|
|
42a4d9 |
@@ -28,6 +28,25 @@ static struct bochsvga_mode
|
|
|
42a4d9 |
u16 mode;
|
|
|
42a4d9 |
struct vgamode_s info;
|
|
|
42a4d9 |
} bochsvga_modes[] VAR16 = {
|
|
|
42a4d9 |
+ /* 32 bpp BOCHS modes */
|
|
|
42a4d9 |
+ { 0x140, { MM_DIRECT, 320, 200, 32, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
+ { 0x141, { MM_DIRECT, 640, 400, 32, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
+ { 0x142, { MM_DIRECT, 640, 480, 32, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
+ { 0x143, { MM_DIRECT, 800, 600, 32, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
+ { 0x144, { MM_DIRECT, 1024, 768, 32, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
+ { 0x145, { MM_DIRECT, 1280, 1024, 32, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
+ { 0x147, { MM_DIRECT, 1600, 1200, 32, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
+ { 0x14c, { MM_DIRECT, 1152, 864, 32, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
+ { 0x177, { MM_DIRECT, 1280, 768, 32, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
+ { 0x17a, { MM_DIRECT, 1280, 800, 32, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
+ { 0x17d, { MM_DIRECT, 1280, 960, 32, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
+ { 0x180, { MM_DIRECT, 1440, 900, 32, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
+ { 0x183, { MM_DIRECT, 1400, 1050, 32, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
+ { 0x186, { MM_DIRECT, 1680, 1050, 32, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
+ { 0x189, { MM_DIRECT, 1920, 1200, 32, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
+ { 0x18c, { MM_DIRECT, 2560, 1600, 32, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
+ { 0x18f, { MM_DIRECT, 1280, 720, 32, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
+ { 0x192, { MM_DIRECT, 1920, 1080, 32, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
/* standard modes */
|
|
|
42a4d9 |
{ 0x100, { MM_PACKED, 640, 400, 8, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
{ 0x101, { MM_PACKED, 640, 480, 8, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
@@ -56,50 +75,32 @@ static struct bochsvga_mode
|
|
|
42a4d9 |
{ 0x11D, { MM_DIRECT, 1600, 1200, 15, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
{ 0x11E, { MM_DIRECT, 1600, 1200, 16, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
{ 0x11F, { MM_DIRECT, 1600, 1200, 24, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
- /* BOCHS modes */
|
|
|
42a4d9 |
- { 0x140, { MM_DIRECT, 320, 200, 32, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
- { 0x141, { MM_DIRECT, 640, 400, 32, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
- { 0x142, { MM_DIRECT, 640, 480, 32, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
- { 0x143, { MM_DIRECT, 800, 600, 32, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
- { 0x144, { MM_DIRECT, 1024, 768, 32, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
- { 0x145, { MM_DIRECT, 1280, 1024, 32, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
+ /* 8, 15, 16, and 24 bpp BOCHS modes */
|
|
|
42a4d9 |
{ 0x146, { MM_PACKED, 320, 200, 8, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
- { 0x147, { MM_DIRECT, 1600, 1200, 32, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
{ 0x148, { MM_PACKED, 1152, 864, 8, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
{ 0x149, { MM_DIRECT, 1152, 864, 15, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
{ 0x14a, { MM_DIRECT, 1152, 864, 16, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
{ 0x14b, { MM_DIRECT, 1152, 864, 24, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
- { 0x14c, { MM_DIRECT, 1152, 864, 32, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
{ 0x175, { MM_DIRECT, 1280, 768, 16, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
{ 0x176, { MM_DIRECT, 1280, 768, 24, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
- { 0x177, { MM_DIRECT, 1280, 768, 32, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
{ 0x178, { MM_DIRECT, 1280, 800, 16, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
{ 0x179, { MM_DIRECT, 1280, 800, 24, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
- { 0x17a, { MM_DIRECT, 1280, 800, 32, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
{ 0x17b, { MM_DIRECT, 1280, 960, 16, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
{ 0x17c, { MM_DIRECT, 1280, 960, 24, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
- { 0x17d, { MM_DIRECT, 1280, 960, 32, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
{ 0x17e, { MM_DIRECT, 1440, 900, 16, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
{ 0x17f, { MM_DIRECT, 1440, 900, 24, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
- { 0x180, { MM_DIRECT, 1440, 900, 32, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
{ 0x181, { MM_DIRECT, 1400, 1050, 16, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
{ 0x182, { MM_DIRECT, 1400, 1050, 24, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
- { 0x183, { MM_DIRECT, 1400, 1050, 32, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
{ 0x184, { MM_DIRECT, 1680, 1050, 16, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
{ 0x185, { MM_DIRECT, 1680, 1050, 24, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
- { 0x186, { MM_DIRECT, 1680, 1050, 32, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
{ 0x187, { MM_DIRECT, 1920, 1200, 16, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
{ 0x188, { MM_DIRECT, 1920, 1200, 24, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
- { 0x189, { MM_DIRECT, 1920, 1200, 32, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
{ 0x18a, { MM_DIRECT, 2560, 1600, 16, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
{ 0x18b, { MM_DIRECT, 2560, 1600, 24, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
- { 0x18c, { MM_DIRECT, 2560, 1600, 32, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
{ 0x18d, { MM_DIRECT, 1280, 720, 16, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
{ 0x18e, { MM_DIRECT, 1280, 720, 24, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
- { 0x18f, { MM_DIRECT, 1280, 720, 32, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
{ 0x190, { MM_DIRECT, 1920, 1080, 16, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
{ 0x191, { MM_DIRECT, 1920, 1080, 24, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
- { 0x192, { MM_DIRECT, 1920, 1080, 32, 8, 16, SEG_GRAPH } },
|
|
|
42a4d9 |
};
|
|
|
42a4d9 |
|
|
|
42a4d9 |
static int dispi_found VAR16 = 0;
|
|
|
42a4d9 |
--
|
|
|
42a4d9 |
1.8.3.1
|
|
|
42a4d9 |
|