Blame SOURCES/0006-vgabios-Reorder-video-modes-to-work-around-a-Windows.patch

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