diff --git a/SOURCES/seabios-vgabios-Reorder-video-modes-to-work-around-a-Windows.patch b/SOURCES/seabios-vgabios-Reorder-video-modes-to-work-around-a-Windows.patch new file mode 100644 index 0000000..96f5a86 --- /dev/null +++ b/SOURCES/seabios-vgabios-Reorder-video-modes-to-work-around-a-Windows.patch @@ -0,0 +1,124 @@ +From d4b8b97fab7f66875dfc212a7e18f16436d79340 Mon Sep 17 00:00:00 2001 +From: Ladi Prosek +Date: Mon, 31 Oct 2016 19:33:05 +0100 +Subject: [PATCH] vgabios: Reorder video modes to work around a Windows bug + +RH-Author: Ladi Prosek +Message-id: <1477924385-6169-1-git-send-email-lprosek@redhat.com> +Patchwork-id: 72677 +O-Subject: [RHEL-7.4/7.3.z seabios PATCH] vgabios: Reorder video modes to work around a Windows bug +Bugzilla: 1392028 +RH-Acked-by: Laszlo Ersek +RH-Acked-by: Gerd Hoffmann +RH-Acked-by: vrozenfe + +Windows Server 2016 and Windows 10 RS1 come with a bug in its blue screen +of death rendering logic which prevents it from generating crash dumps. + +The bug does not manifest if Windows sees a suitable 32 bpp video mode +before a suitable 24 bpp video mode in the list of modes returned from +vgabios. This commit moves all 32 bpp modes to the front of the list to +make sure that this is always the case. + +Upstream patch: +https://www.coreboot.org/pipermail/seabios/2016-October/010963.html + +There are valid concerns upstream about the breaking nature of the fix +but for the limited set of operating systems supported by RHEL/RHEV we +can easily verify that they are unaffected. So as things stand now, this +is a downstream-only patch which will be reverted in the near future; +the exact time will depend on Windows 10 RS2 schedule and other factors. +The goal is to make sure that our customers running Windows 10 VMs can +generate crash dumps. + +Signed-off-by: Ladi Prosek +Signed-off-by: Miroslav Rezanina +--- + vgasrc/bochsvga.c | 39 ++++++++++++++++++++------------------- + 1 file changed, 20 insertions(+), 19 deletions(-) + +diff --git a/vgasrc/bochsvga.c b/vgasrc/bochsvga.c +index aa82fc5..a43a21f 100644 +--- a/vgasrc/bochsvga.c ++++ b/vgasrc/bochsvga.c +@@ -27,6 +27,25 @@ static struct bochsvga_mode + u16 mode; + struct vgamode_s info; + } bochsvga_modes[] VAR16 = { ++ /* 32 bpp BOCHS modes */ ++ { 0x140, { MM_DIRECT, 320, 200, 32, 8, 16, SEG_GRAPH } }, ++ { 0x141, { MM_DIRECT, 640, 400, 32, 8, 16, SEG_GRAPH } }, ++ { 0x142, { MM_DIRECT, 640, 480, 32, 8, 16, SEG_GRAPH } }, ++ { 0x143, { MM_DIRECT, 800, 600, 32, 8, 16, SEG_GRAPH } }, ++ { 0x144, { MM_DIRECT, 1024, 768, 32, 8, 16, SEG_GRAPH } }, ++ { 0x145, { MM_DIRECT, 1280, 1024, 32, 8, 16, SEG_GRAPH } }, ++ { 0x147, { MM_DIRECT, 1600, 1200, 32, 8, 16, SEG_GRAPH } }, ++ { 0x14c, { MM_DIRECT, 1152, 864, 32, 8, 16, SEG_GRAPH } }, ++ { 0x177, { MM_DIRECT, 1280, 768, 32, 8, 16, SEG_GRAPH } }, ++ { 0x17a, { MM_DIRECT, 1280, 800, 32, 8, 16, SEG_GRAPH } }, ++ { 0x17d, { MM_DIRECT, 1280, 960, 32, 8, 16, SEG_GRAPH } }, ++ { 0x180, { MM_DIRECT, 1440, 900, 32, 8, 16, SEG_GRAPH } }, ++ { 0x183, { MM_DIRECT, 1400, 1050, 32, 8, 16, SEG_GRAPH } }, ++ { 0x186, { MM_DIRECT, 1680, 1050, 32, 8, 16, SEG_GRAPH } }, ++ { 0x189, { MM_DIRECT, 1920, 1200, 32, 8, 16, SEG_GRAPH } }, ++ { 0x18c, { MM_DIRECT, 2560, 1600, 32, 8, 16, SEG_GRAPH } }, ++ { 0x18f, { MM_DIRECT, 1280, 720, 32, 8, 16, SEG_GRAPH } }, ++ { 0x192, { MM_DIRECT, 1920, 1080, 32, 8, 16, SEG_GRAPH } }, + /* standard modes */ + { 0x100, { MM_PACKED, 640, 400, 8, 8, 16, SEG_GRAPH } }, + { 0x101, { MM_PACKED, 640, 480, 8, 8, 16, SEG_GRAPH } }, +@@ -55,50 +74,32 @@ static struct bochsvga_mode + { 0x11D, { MM_DIRECT, 1600, 1200, 15, 8, 16, SEG_GRAPH } }, + { 0x11E, { MM_DIRECT, 1600, 1200, 16, 8, 16, SEG_GRAPH } }, + { 0x11F, { MM_DIRECT, 1600, 1200, 24, 8, 16, SEG_GRAPH } }, +- /* BOCHS modes */ +- { 0x140, { MM_DIRECT, 320, 200, 32, 8, 16, SEG_GRAPH } }, +- { 0x141, { MM_DIRECT, 640, 400, 32, 8, 16, SEG_GRAPH } }, +- { 0x142, { MM_DIRECT, 640, 480, 32, 8, 16, SEG_GRAPH } }, +- { 0x143, { MM_DIRECT, 800, 600, 32, 8, 16, SEG_GRAPH } }, +- { 0x144, { MM_DIRECT, 1024, 768, 32, 8, 16, SEG_GRAPH } }, +- { 0x145, { MM_DIRECT, 1280, 1024, 32, 8, 16, SEG_GRAPH } }, ++ /* 8, 15, 16, and 24 bpp BOCHS modes */ + { 0x146, { MM_PACKED, 320, 200, 8, 8, 16, SEG_GRAPH } }, +- { 0x147, { MM_DIRECT, 1600, 1200, 32, 8, 16, SEG_GRAPH } }, + { 0x148, { MM_PACKED, 1152, 864, 8, 8, 16, SEG_GRAPH } }, + { 0x149, { MM_DIRECT, 1152, 864, 15, 8, 16, SEG_GRAPH } }, + { 0x14a, { MM_DIRECT, 1152, 864, 16, 8, 16, SEG_GRAPH } }, + { 0x14b, { MM_DIRECT, 1152, 864, 24, 8, 16, SEG_GRAPH } }, +- { 0x14c, { MM_DIRECT, 1152, 864, 32, 8, 16, SEG_GRAPH } }, + { 0x175, { MM_DIRECT, 1280, 768, 16, 8, 16, SEG_GRAPH } }, + { 0x176, { MM_DIRECT, 1280, 768, 24, 8, 16, SEG_GRAPH } }, +- { 0x177, { MM_DIRECT, 1280, 768, 32, 8, 16, SEG_GRAPH } }, + { 0x178, { MM_DIRECT, 1280, 800, 16, 8, 16, SEG_GRAPH } }, + { 0x179, { MM_DIRECT, 1280, 800, 24, 8, 16, SEG_GRAPH } }, +- { 0x17a, { MM_DIRECT, 1280, 800, 32, 8, 16, SEG_GRAPH } }, + { 0x17b, { MM_DIRECT, 1280, 960, 16, 8, 16, SEG_GRAPH } }, + { 0x17c, { MM_DIRECT, 1280, 960, 24, 8, 16, SEG_GRAPH } }, +- { 0x17d, { MM_DIRECT, 1280, 960, 32, 8, 16, SEG_GRAPH } }, + { 0x17e, { MM_DIRECT, 1440, 900, 16, 8, 16, SEG_GRAPH } }, + { 0x17f, { MM_DIRECT, 1440, 900, 24, 8, 16, SEG_GRAPH } }, +- { 0x180, { MM_DIRECT, 1440, 900, 32, 8, 16, SEG_GRAPH } }, + { 0x181, { MM_DIRECT, 1400, 1050, 16, 8, 16, SEG_GRAPH } }, + { 0x182, { MM_DIRECT, 1400, 1050, 24, 8, 16, SEG_GRAPH } }, +- { 0x183, { MM_DIRECT, 1400, 1050, 32, 8, 16, SEG_GRAPH } }, + { 0x184, { MM_DIRECT, 1680, 1050, 16, 8, 16, SEG_GRAPH } }, + { 0x185, { MM_DIRECT, 1680, 1050, 24, 8, 16, SEG_GRAPH } }, +- { 0x186, { MM_DIRECT, 1680, 1050, 32, 8, 16, SEG_GRAPH } }, + { 0x187, { MM_DIRECT, 1920, 1200, 16, 8, 16, SEG_GRAPH } }, + { 0x188, { MM_DIRECT, 1920, 1200, 24, 8, 16, SEG_GRAPH } }, +- { 0x189, { MM_DIRECT, 1920, 1200, 32, 8, 16, SEG_GRAPH } }, + { 0x18a, { MM_DIRECT, 2560, 1600, 16, 8, 16, SEG_GRAPH } }, + { 0x18b, { MM_DIRECT, 2560, 1600, 24, 8, 16, SEG_GRAPH } }, +- { 0x18c, { MM_DIRECT, 2560, 1600, 32, 8, 16, SEG_GRAPH } }, + { 0x18d, { MM_DIRECT, 1280, 720, 16, 8, 16, SEG_GRAPH } }, + { 0x18e, { MM_DIRECT, 1280, 720, 24, 8, 16, SEG_GRAPH } }, +- { 0x18f, { MM_DIRECT, 1280, 720, 32, 8, 16, SEG_GRAPH } }, + { 0x190, { MM_DIRECT, 1920, 1080, 16, 8, 16, SEG_GRAPH } }, + { 0x191, { MM_DIRECT, 1920, 1080, 24, 8, 16, SEG_GRAPH } }, +- { 0x192, { MM_DIRECT, 1920, 1080, 32, 8, 16, SEG_GRAPH } }, + }; + + static int dispi_found VAR16 = 0; +-- +1.8.3.1 + diff --git a/SPECS/seabios.spec b/SPECS/seabios.spec index ebf33a7..5103c72 100644 --- a/SPECS/seabios.spec +++ b/SPECS/seabios.spec @@ -1,6 +1,6 @@ Name: seabios Version: 1.9.1 -Release: 5%{?dist} +Release: 5%{?dist}.1 Summary: Open-source legacy BIOS implementation Group: Applications/Emulators @@ -29,6 +29,8 @@ Patch5: seabios-fw-pci-add-Q35-S3-support.patch Patch6: seabios-redhat-reserve-more-memory-on-fseg.patch # For bz#1373154 - Guest fails boot up with ivshmem-plain and virtio-pci device Patch7: seabios-pci-don-t-map-virtio-1.0-storage-devices-above-4G.patch +# For bz#1392028 - [virtio-win][svvp][ws2016] cannot generate dump file when using nmi on ws2016 and win10-32/64 +Patch8: seabios-vgabios-Reorder-video-modes-to-work-around-a-Windows.patch BuildRequires: python iasl ExclusiveArch: x86_64 %{power64} @@ -85,6 +87,7 @@ SeaVGABIOS is an open-source VGABIOS implementation. %patch5 -p1 %patch6 -p1 %patch7 -p1 +%patch8 -p1 # Store version to be used @@ -139,6 +142,11 @@ install -m 0644 binaries/vgabios*.bin $RPM_BUILD_ROOT%{_datadir}/seavgabios %endif %changelog +* Tue Nov 29 2016 Miroslav Rezanina - 1.9.1-5.el7_3.1 +- seabios-vgabios-Reorder-video-modes-to-work-around-a-Windows.patch [bz#1392028] +- Resolves: bz#1392028 + ([virtio-win][svvp][ws2016] cannot generate dump file when using nmi on ws2016 and win10-32/64) + * Thu Sep 15 2016 Miroslav Rezanina - 1.9.1-5.el7 - seabios-pci-don-t-map-virtio-1.0-storage-devices-above-4G.patch [bz#1373154] - Resolves: bz#1373154