Browse Source

seabios package update

Signed-off-by: virtbuilder_pel7ppc64bebuilder0 <virtbuilder@powerel.org>
master
virtbuilder_pel7ppc64bebuilder0 6 years ago
parent
commit
845e865bd0
  1. 68
      SOURCES/0002-allow-1TB-of-RAM.patch
  2. 46
      SOURCES/0003-smbios-set-bios-vendor-version-fields-to-Seabios-0.5.patch
  3. 74
      SOURCES/0004-Workaround-for-a-win8.1-32-S4-resume-bug.patch
  4. 44
      SOURCES/0005-redhat-reserve-more-memory-on-fseg.patch
  5. 124
      SOURCES/0006-vgabios-Reorder-video-modes-to-work-around-a-Windows.patch
  6. 8
      SOURCES/config.base
  7. 1
      SOURCES/config.base-256k
  8. 73
      SOURCES/seabios-pci-fix-io-hints-capability-for-RedHat-PCI-bridges.patch
  9. 87
      SPECS/seabios.spec

68
SOURCES/0002-allow-1TB-of-RAM.patch

@ -0,0 +1,68 @@ @@ -0,0 +1,68 @@
From f14103535394ff9d803ec64dfd8b11dd753a45f1 Mon Sep 17 00:00:00 2001
From: Andrea Arcangeli <aarcange@redhat.com>
Date: Tue, 8 Oct 2013 17:07:23 +0200
Subject: allow >1TB of RAM

RH-Author: Andrea Arcangeli <aarcange@redhat.com>
Message-id: <1381252043-13480-2-git-send-email-aarcange@redhat.com>
Patchwork-id: 54785
O-Subject: [RHEL-7.0 seabios PATCH] allow >1TB of RAM
Bugzilla: 1016974
RH-Acked-by: Paolo Bonzini <pbonzini@redhat.com>
RH-Acked-by: Gleb Natapov <gleb@redhat.com>
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>

Receive bits 40-48 from qemu to setup e820 maps with more than 1TB of ram.

Signed-off-by: Andrea Arcangeli <aarcange@redhat.com>
---
src/cmos.h | 7 ++++---
src/post.c | 7 ++++---
2 files changed, 8 insertions(+), 6 deletions(-)

Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
(cherry picked from commit 4fee214c41b11b72b3427fda18e9eac1ee647746)
---
src/fw/paravirt.c | 7 ++++---
src/hw/rtc.h | 7 ++++---
2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/fw/paravirt.c b/src/fw/paravirt.c
index 9674ab8..2de1405 100644
--- a/src/fw/paravirt.c
+++ b/src/fw/paravirt.c
@@ -492,9 +492,10 @@ qemu_cfg_e820(void)
}
// Check for memory over 4Gig in cmos
- u64 high = ((rtc_read(CMOS_MEM_HIGHMEM_LOW) << 16)
- | ((u32)rtc_read(CMOS_MEM_HIGHMEM_MID) << 24)
- | ((u64)rtc_read(CMOS_MEM_HIGHMEM_HIGH) << 32));
+ u64 high = ((rtc_read(CMOS_MEM_HIGHMEM_16) << 16)
+ | ((u32)rtc_read(CMOS_MEM_HIGHMEM_24) << 24)
+ | ((u64)rtc_read(CMOS_MEM_HIGHMEM_32) << 32)
+ | ((u64)rtc_read(CMOS_MEM_HIGHMEM_40) << 40));
RamSizeOver4G = high;
e820_add(0x100000000ull, high, E820_RAM);
dprintf(1, "RamSizeOver4G: 0x%016llx [cmos]\n", RamSizeOver4G);
diff --git a/src/hw/rtc.h b/src/hw/rtc.h
index 252e73a..c4369f8 100644
--- a/src/hw/rtc.h
+++ b/src/hw/rtc.h
@@ -41,9 +41,10 @@
#define CMOS_BIOS_BOOTFLAG1 0x38
#define CMOS_BIOS_DISKTRANSFLAG 0x39
#define CMOS_BIOS_BOOTFLAG2 0x3d
-#define CMOS_MEM_HIGHMEM_LOW 0x5b
-#define CMOS_MEM_HIGHMEM_MID 0x5c
-#define CMOS_MEM_HIGHMEM_HIGH 0x5d
+#define CMOS_MEM_HIGHMEM_16 0x5b
+#define CMOS_MEM_HIGHMEM_24 0x5c
+#define CMOS_MEM_HIGHMEM_32 0x5d
+#define CMOS_MEM_HIGHMEM_40 0x5e
#define CMOS_BIOS_SMP_COUNT 0x5f
// RTC register flags
--
1.8.3.1

46
SOURCES/0003-smbios-set-bios-vendor-version-fields-to-Seabios-0.5.patch

@ -0,0 +1,46 @@ @@ -0,0 +1,46 @@
From dc14406bae91025709995342c1297d4e2c325498 Mon Sep 17 00:00:00 2001
From: Gerd Hoffmann <kraxel@redhat.com>
Date: Mon, 28 Jul 2014 12:14:11 +0200
Subject: smbios: set bios vendor/version fields to Seabios/0.5.1

Message-id: <1406549651-26021-2-git-send-email-kraxel@redhat.com>
Patchwork-id: 60264
O-Subject: [RHEL-7.1 seabios PATCH 1/1] smbios: set bios vendor/version fields to Seabios/0.5.1
Bugzilla: 1123299
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
RH-Acked-by: Paolo Bonzini <pbonzini@redhat.com>

Mimic rhel6/seabios commit 1389643dad35a63362cd7d8357693f01175ef473.
Affects all 6.x and 7.0 machine types.

Note: 7.1+ machine types will switch over to the new-style smbios
handling in qemu 2.1 + seabios 1.7.5 (and ovmf), where seabios will
fill in the actual version information instead of the bogous 0.5.1
which we are using here for backward compatibility reasons.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
(cherry picked from commit bf361def4623ac1942512f255e5c1450970b5092)
---
src/fw/smbios.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/fw/smbios.c b/src/fw/smbios.c
index f3b5ad9..2770ff7 100644
--- a/src/fw/smbios.c
+++ b/src/fw/smbios.c
@@ -174,8 +174,8 @@ smbios_init_type_0(void *start)
p->header.length = sizeof(struct smbios_type_0);
p->header.handle = 0;
- load_str_field_with_default(0, vendor_str, BUILD_APPNAME);
- load_str_field_with_default(0, bios_version_str, BUILD_APPNAME);
+ load_str_field_with_default(0, vendor_str, "Seabios");
+ load_str_field_with_default(0, bios_version_str, "0.5.1");
p->bios_starting_address_segment = 0xe800;
--
1.8.3.1

74
SOURCES/0004-Workaround-for-a-win8.1-32-S4-resume-bug.patch

@ -0,0 +1,74 @@ @@ -0,0 +1,74 @@
From 0c1e0d59ceb3c4c8909d7a7b6e62d19c7ad81bef Mon Sep 17 00:00:00 2001
From: Radim Krcmar <rkrcmar@redhat.com>
Date: Mon, 10 Mar 2014 15:14:27 +0100
Subject: Workaround for a win8.1-32 S4 resume bug
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

RH-Author: Radim Krcmar <rkrcmar@redhat.com>
Message-id: <1394464467-23560-1-git-send-email-rkrcmar@redhat.com>
Patchwork-id: 58069
O-Subject: [RHEL7.0 seabios PATCH] Workaround for a win8.1-32 S4 resume bug
Bugzilla: 1050775
RH-Acked-by: Paolo Bonzini <pbonzini@redhat.com>
RH-Acked-by: Gerd Hoffmann <kraxel@redhat.com>
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>

bug: https://bugzilla.redhat.com/show_bug.cgi?id=1050775
brew: http://brewweb.devel.redhat.com/brew/taskinfo?taskID=7176174
This patch has no upstream equivalent.

When a 32 bit version of windows 8.1 resumes from suspend, it writes 1
into 0x72 in the early boot because it didn't expect a NULL pointer.
0x72 is lower offset byte of 0x1c interrupt entry, so we jump into a
middle of other function if this interrupt is triggered.

Because 0x1c is only triggered from our handle_08, we detect if our
default value (function that does only iret) has its lower offset byte
overwritten and skip it in that case.
(Windows never sets own callback there, so we always detect this bug
correctly, as seabios doesn't use it either
Other sources shouldn't incorrectly overwrite it or use seabios code,
but it is quite ok even if the guest did this on purpose.)

The reason Windows uses NULL pointer is still unknown, but this bug is
blocking WHQL certification, so we have to work around it in 7.0.

Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
---
(It is either a Windows bug that is going to be solved on their side,
or we will find a better solution after consulting what went wrong.
Happens on RHEL6 too.)

src/clock.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)

Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
(cherry picked from commit aa1c26538deecfd820b7da9b3be09ebc20b7fef9)
---
src/clock.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/clock.c b/src/clock.c
index e44e112..298a722 100644
--- a/src/clock.c
+++ b/src/clock.c
@@ -309,7 +309,13 @@ handle_08(void)
struct bregs br;
memset(&br, 0, sizeof(br));
br.flags = F_IF;
- call16_int(0x1c, &br);
+ struct segoff_s isr1c = GET_IVT(0x1c);
+ // hardcoded address of entry_iret_official with lower segment byte
+ // overwritten by 1
+ if (isr1c.seg == ((SEG_BIOS & ~0xff) | 0x1) && isr1c.offset == 0xff53)
+ dprintf(1, "Worked around win8.1-32 S4 resume bug\n");
+ else
+ call16_int(0x1c, &br);
pic_eoi1();
}
--
1.8.3.1

44
SOURCES/0005-redhat-reserve-more-memory-on-fseg.patch

@ -0,0 +1,44 @@ @@ -0,0 +1,44 @@
From cd088ce3bc68a6986637c0cd77b94ebff729b89b Mon Sep 17 00:00:00 2001
From: Gerd Hoffmann <kraxel@redhat.com>
Date: Tue, 19 Apr 2016 11:27:50 +0200
Subject: redhat: reserve more memory on fseg

RH-Author: Gerd Hoffmann <kraxel@redhat.com>
Message-id: <1461065271-22039-2-git-send-email-kraxel@redhat.com>
Patchwork-id: 70213
O-Subject: [RHEL-7.1 seabios PATCH 1/2] redhat: reserve more memory on fseg
Bugzilla: 1327060
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
RH-Acked-by: Marcel Apfelbaum <marcel@redhat.com>
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>

seabios 1.7.5 has about 8k free space in fseg.

configure 1.9.1 to keep the same amout space in fseg, so the amout of
disks we are able to handle stays roughly the same. ahci + scsi are
slightly below the 1.7.5 numbers but stay above the documented limits.
virtio-block numbers are higher than the 1.7.5 numbers.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
(cherry picked from commit 0561b82b0470679505d62f49eec83adb01eec0ab)
---
scripts/layoutrom.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/layoutrom.py b/scripts/layoutrom.py
index 6616721..71841aa 100755
--- a/scripts/layoutrom.py
+++ b/scripts/layoutrom.py
@@ -66,7 +66,7 @@ BUILD_BIOS_SIZE = 0x10000
BUILD_ROM_START = 0xc0000
BUILD_LOWRAM_END = 0xa0000
# Space to reserve in f-segment for dynamic allocations
-BUILD_MIN_BIOSTABLE = 2048
+BUILD_MIN_BIOSTABLE = 8192
# Layout the 16bit code. This ensures sections with fixed offset
# requirements are placed in the correct location. It also places the
--
1.8.3.1

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

@ -0,0 +1,124 @@ @@ -0,0 +1,124 @@
From 4d08ebd4f8dc19dfc36495473b34c34d53650632 Mon Sep 17 00:00:00 2001
From: Ladi Prosek <lprosek@redhat.com>
Date: Mon, 31 Oct 2016 19:33:05 +0100
Subject: vgabios: Reorder video modes to work around a Windows bug

RH-Author: Ladi Prosek <lprosek@redhat.com>
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 <lersek@redhat.com>
RH-Acked-by: Gerd Hoffmann <kraxel@redhat.com>
RH-Acked-by: vrozenfe <vrozenfe@redhat.com>

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 <lprosek@redhat.com>
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
---
vgasrc/bochsvga.c | 39 ++++++++++++++++++++-------------------
1 file changed, 20 insertions(+), 19 deletions(-)

diff --git a/vgasrc/bochsvga.c b/vgasrc/bochsvga.c
index ec5d101..c5d1511 100644
--- a/vgasrc/bochsvga.c
+++ b/vgasrc/bochsvga.c
@@ -28,6 +28,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 } },
@@ -56,50 +75,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

8
SOURCES/config.base

@ -10,3 +10,11 @@ CONFIG_USB_OHCI=n @@ -10,3 +10,11 @@ CONFIG_USB_OHCI=n
CONFIG_USB_XHCI=n
CONFIG_USB_UAS=n
CONFIG_TCGBIOS=n
CONFIG_USE_SMM=n
CONFIG_NVME=n
CONFIG_VGAHOOKS=n
CONFIG_NVME=n
CONFIG_VGAHOOKS=n
CONFIG_SERCON=n
CONFIG_SDCARD=n
CONFIG_MPT_SCSI=n

1
SOURCES/config.base-256k

@ -5,3 +5,4 @@ CONFIG_USB_OHCI=n @@ -5,3 +5,4 @@ CONFIG_USB_OHCI=n
CONFIG_BOOTSPLASH=n
CONFIG_MEGASAS=n
CONFIG_ROM_SIZE=256
CONFIG_USE_SMM=n

73
SOURCES/seabios-pci-fix-io-hints-capability-for-RedHat-PCI-bridges.patch

@ -0,0 +1,73 @@ @@ -0,0 +1,73 @@
From c449d0540e5f990d2710812cc4b4c35699ffd82e Mon Sep 17 00:00:00 2001
From: Marcel Apfelbaum <marcel@redhat.com>
Date: Wed, 17 Jan 2018 20:13:10 +0100
Subject: [PATCH] pci: fix 'io hints' capability for RedHat PCI bridges

RH-Author: Marcel Apfelbaum <marcel@redhat.com>
Message-id: <20180117201310.18787-1-marcel@redhat.com>
Patchwork-id: 78658
O-Subject: [RHEL-7.5 seabios PATCH] pci: fix 'io hints' capability for RedHat PCI bridges
Bugzilla: 1523166
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
RH-Acked-by: Gerd Hoffmann <kraxel@redhat.com>
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>

Commit ec6cb17f (pci: enable RedHat PCI bridges to reserve additional
resources on PCI init)
added a new vendor specific PCI capability for RedHat PCI bridges
allowing them to reserve additional buses and/or IO/MEM space.

When adding the IO hints PCI capability to the pcie-root-port
without specifying a value for bus reservation, the subordinate bus
computation is wrong and the guest kernel gets messed up.

Fix it by returning to prev code if the value for bus
reservation is not set.

Removed also a wrong debug print "PCI: invalid QEMU resource reserve
cap offset" which appears if the 'IO hints' capability is not present.

Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Marcel Apfelbaum <marcel@redhat.com>
(cherry picked from commit 14d91c353e19b7085fdbb7b2dcc43f3355665670)
Signed-off-by: Marcel Apfelbaum <marcel@redhat.com>
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
---
src/fw/pciinit.c | 14 +++++---------
1 file changed, 5 insertions(+), 9 deletions(-)

diff --git a/src/fw/pciinit.c b/src/fw/pciinit.c
index 7f0e439..3a2f747 100644
--- a/src/fw/pciinit.c
+++ b/src/fw/pciinit.c
@@ -540,8 +540,6 @@ static u8 pci_find_resource_reserve_capability(u16 bdf)
dprintf(1, "PCI: QEMU resource reserve cap length %d is invalid\n",
cap_len);
}
- } else {
- dprintf(1, "PCI: invalid QEMU resource reserve cap offset\n");
}
return cap;
} else {
@@ -619,13 +617,11 @@ pci_bios_init_bus_rec(int bus, u8 *pci_bus)
res_bus);
res_bus = 0;
}
- }
- if (secbus + res_bus > *pci_bus) {
- dprintf(1, "PCI: QEMU resource reserve cap: bus = %u\n",
- res_bus);
- res_bus = secbus + res_bus;
- } else {
- res_bus = *pci_bus;
+ if (secbus + res_bus > *pci_bus) {
+ dprintf(1, "PCI: QEMU resource reserve cap: bus = %u\n",
+ res_bus);
+ res_bus = secbus + res_bus;
+ }
}
}
dprintf(1, "PCI: subordinate bus = 0x%x -> 0x%x\n",
--
1.8.3.1

87
SPECS/seabios.spec

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
Name: seabios
Version: 1.9.1
Release: 5%{?dist}
Version: 1.11.0
Release: 2%{?dist}
Summary: Open-source legacy BIOS implementation

Group: Applications/Emulators
@ -8,7 +8,7 @@ License: LGPLv3 @@ -8,7 +8,7 @@ License: LGPLv3
URL: http://www.coreboot.org/SeaBIOS


Source0: http://code.coreboot.org/p/seabios/downloads/get/%{name}-%{version}.tar.gz
Source0: https://code.coreboot.org/p/seabios/downloads/get/seabios-1.11.0.tar.gz

Source10: config.vga.cirrus
Source11: config.vga.isavga
@ -23,12 +23,10 @@ Source17: config.vga.virtio @@ -23,12 +23,10 @@ Source17: config.vga.virtio
Patch0002: 0002-allow-1TB-of-RAM.patch
Patch0003: 0003-smbios-set-bios-vendor-version-fields-to-Seabios-0.5.patch
Patch0004: 0004-Workaround-for-a-win8.1-32-S4-resume-bug.patch
# For bz#1185721 - win7 guest (boot with q35) show dark screen after do S3
Patch5: seabios-fw-pci-add-Q35-S3-support.patch
# For bz#1327060 - [Seabios]Limited boot number supported for SCSI/SATA
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
Patch0005: 0005-redhat-reserve-more-memory-on-fseg.patch
Patch0006: 0006-vgabios-Reorder-video-modes-to-work-around-a-Windows.patch
# For bz#1523166 - [Q35] guest kernel panic when boot with 9 nics
Patch7: seabios-pci-fix-io-hints-capability-for-RedHat-PCI-bridges.patch
BuildRequires: python iasl
ExclusiveArch: x86_64 %{power64}

@ -82,18 +80,13 @@ SeaVGABIOS is an open-source VGABIOS implementation. @@ -82,18 +80,13 @@ SeaVGABIOS is an open-source VGABIOS implementation.
%patch0002 -p1
%patch0003 -p1
%patch0004 -p1
%patch5 -p1
%patch6 -p1
%patch0005 -p1
%patch0006 -p1
%patch7 -p1

# Store version to be used

%build
%ifarch x86_64
export CFLAGS="$RPM_OPT_FLAGS"
%endif
%ifarch ppc64 ppc64le
export CFLAGS="$RPM_OPT_FLAGS"
export CROSS="x86_64-linux-gnu-"
%endif
mkdir binaries
@ -142,8 +135,68 @@ install -m 0644 binaries/vgabios*.bin $RPM_BUILD_ROOT%{_datadir}/seavgabios @@ -142,8 +135,68 @@ install -m 0644 binaries/vgabios*.bin $RPM_BUILD_ROOT%{_datadir}/seavgabios
%dir %{_datadir}/seavgabios/
%{_datadir}/seavgabios/vgabios*.bin


%changelog
* Tue Jan 30 2018 Miroslav Rezanina <mrezanin@redhat.com> - 1.11.0-2.el7
- seabios-pci-fix-io-hints-capability-for-RedHat-PCI-bridges.patch [bz#1523166]
- Resolves: bz#1523166
([Q35] guest kernel panic when boot with 9 nics)

* Wed Nov 15 2017 Miroslav Rezanina <mrezanin@redhat.com> - 1.11.0-1.el7
- Rebase to 1.11.0 [bz#1470751]
- Resolves: bz#1470751
(Rebase seabios for RHEL-7.5)

* Fri Oct 20 2017 Miroslav Rezanina <mrezanin@redhat.com> - 1.10.2-5.el7
- seabios-boot-Rename-drive_g-to-drive.patch [bz#1452603]
- seabios-disk-Don-t-require-the-struct-drive_s-to-be-in-the-f.patch [bz#1452603]
- seabios-block-Rename-disk_op_s-drive_gf-to-drive_fl.patch [bz#1452603]
- seabios-virtio-Allocate-drive_s-storage-in-low-memory.patch [bz#1452603]
- Resolves: bz#1452603
(can't bootup from image when attached multi-virtio-scsi disks with multi-luns)

* Thu Sep 28 2017 Wainer dos Santos Moschetta <wainersm@redhat.com> - 1.10.2-4.el7
- seabios-virtio-IOMMU-support.patch [bz#1463163, bz#1467811]
- Resolves: bz#1463163
(Guest OS will down when disk enable the IOMMU for Virtio)
- Resolves: bz#1467811
(Guest OS will down when disk enable the IOMMU for virtio-scsi)

* Fri May 12 2017 Miroslav Rezanina <mrezanin@redhat.com> - 1.10.2-3.el7
- seabios-blockcmd-accept-only-disks-and-CD-ROMs.patch [bz#1020622]
- seabios-blockcmd-generic-SCSI-luns-enumeration.patch [bz#1020622]
- seabios-virtio-scsi-enumerate-luns-with-REPORT-LUNS.patch [bz#1020622]
- seabios-usb-uas-enumerate-luns-with-REPORT-LUNS.patch [bz#1020622]
- Resolves: bz#1020622
(seabios fail to recognize virtio-scsi device if specify LUN not 0)

* Thu Mar 30 2017 Miroslav Rezanina <mrezanin@redhat.com> - 1.10.2-2.el7
- seabios-resume-Don-t-attempt-to-use-generic-reboot-mechanism.patch [bz#1428347]
- Resolves: bz#1428347
(reboot hangs on rhel6 machine types (~1/20 times))

* Fri Mar 10 2017 Miroslav Rezanina <mrezanin@redhta.com> - 1.10.2-1.el7
- Rebase to 1.10.2 [bz#1392821]
- Resolves: bz#1392821
(Rebase seabios to 1.10.1)

* Fri Feb 03 2017 Miroslav Rezanina <mrezanin@redhat.com> - 1.10.1-2.el7
- seabios-smm-disable-by-default.patch [bz#1378006]
- seabios-ahci-Set-upper-32-bit-registers-to-zero.patch [bz#1418320]
- Resolves: bz#1378006
(guest paused on target host sometimes when do migration during guest boot)
- Resolves: bz#1418320
(Seabios does not fully reset AHCI adapters)

* Tue Jan 10 2017 Miroslav Rezanina <mrezanin@redhat.com> - 1.10.1-1.el7
- Rebase to seabios 1.10.1 [bz#1392821]
- Resolves: bz#1392821
(Rebase seabios to 1.10.1)

* Tue Nov 29 2016 Miroslav Rezanina <mrezanin@redhat.com> - 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 <mrezanin@redhat.com> - 1.9.1-5.el7
- seabios-pci-don-t-map-virtio-1.0-storage-devices-above-4G.patch [bz#1373154]
- Resolves: bz#1373154

Loading…
Cancel
Save