Compare commits

...

No commits in common. "c8-stream-rhel" and "c9-beta" have entirely different histories.

22 changed files with 276 additions and 891 deletions

2
.gitignore vendored
View File

@ -1 +1 @@
SOURCES/seabios-1.16.0.tar.gz
SOURCES/seabios-1.16.3.tar.gz

View File

@ -1 +1 @@
0cc6b21cfbafa1f9f158c9aca1ab9f5174ebede2 SOURCES/seabios-1.16.0.tar.gz
391d3e99a670bff295c4b4e8ccc02c87ce908018 SOURCES/seabios-1.16.3.tar.gz

View File

@ -1,71 +0,0 @@
From d659d62b9c094acea66f6f7506877f210a9dd182 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
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
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(-)
(cherry picked from commit 0dea1df1f9b9a64bd9e71dd1a7b4c6cc9962afa0)
Signed-off-by: Paweł Poławski <ppolawsk@redhat.com>
---
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 fba4e52d..090d6555 100644
--- a/src/fw/paravirt.c
+++ b/src/fw/paravirt.c
@@ -516,9 +516,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 252e73a4..c4369f81 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
--
2.31.1

View File

@ -1,50 +0,0 @@
From daf5bb8573c22dc133b4f7a8a07a174dbb30a2c5 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
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
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>
(cherry picked from commit cc21704fcfbc62af6789e1362eb05a2dc2b56cbf)
Signed-off-by: Paweł Poławski <ppolawsk@redhat.com>
---
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 730b6898..cb6fc03f 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;
--
2.31.1

View File

@ -1,67 +0,0 @@
From 0182f348c6bc7cb676cb52941cbb0b220639c4e0 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>
(cherry picked from commit 8629f200084ce1aab31d193280d34b5fb16e543f)
Signed-off-by: Paweł Poławski <ppolawsk@redhat.com>
---
src/clock.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/src/clock.c b/src/clock.c
index e44e1120..298a7229 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();
}
--
2.31.1

View File

@ -1,20 +0,0 @@
CONFIG_XEN=n
CONFIG_ESP_SCSI=n
CONFIG_LSI_SCSI=n
CONFIG_USB_OHCI=n
CONFIG_BOOTSPLASH=n
CONFIG_MEGASAS=n
CONFIG_PVSCSI=n
CONFIG_ROM_SIZE=128
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

View File

@ -1,3 +1,4 @@
# for qemu machine types 2.0 + newer
CONFIG_QEMU=y
CONFIG_ROM_SIZE=256
CONFIG_ATA_DMA=n

View File

@ -1,6 +0,0 @@
CONFIG_BUILD_VGABIOS=y
CONFIG_VGA_BOCHS=y
CONFIG_VGA_PCI=y
CONFIG_OVERRIDE_PCI_ID=y
CONFIG_VGA_VID=0x1b36
CONFIG_VGA_DID=0x0100

View File

@ -0,0 +1,87 @@
From cc55079665ad515d663da022317e649679a7621f Mon Sep 17 00:00:00 2001
From: Gerd Hoffmann <kraxel@redhat.com>
Date: Wed, 3 May 2023 10:31:23 +0200
Subject: [PATCH 1/2] add hwerr_printf function for threads
RH-Author: Gerd Hoffmann <None>
RH-MergeRequest: 6: log error message to screen when booting with (unsupported) 4k sectors
RH-Jira: RHEL-7110
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
RH-Commit: [1/2] 37f3d1b45b289e4efb18817c265be2bff2606ebb (kraxel.rh/centos-src-seabios)
Printing to the screen from threads doesn't work, because that involves
a switch to real mode for using int10h services.
Add a string buffer and hwerr_printf() helper functions to store error
messages. Print the buffer later, after device initialization, from main
thread in case it is not empty.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
src/output.c | 17 +++++++++++++++++
src/output.h | 5 +++++
src/post.c | 4 ++++
3 files changed, 26 insertions(+)
diff --git a/src/output.c b/src/output.c
index 0184444c..8c9d6b8f 100644
--- a/src/output.c
+++ b/src/output.c
@@ -419,6 +419,23 @@ snprintf(char *str, size_t size, const char *fmt, ...)
return end - str;
}
+char hwerror_str[512];
+struct snprintfinfo hwerror_info = {
+ .info = { putc_str },
+ .str = hwerror_str,
+ .end = hwerror_str + sizeof(hwerror_str) - 1,
+};
+
+void
+hwerr_printf(const char *fmt, ...)
+{
+ ASSERT32FLAT();
+ va_list args;
+ va_start(args, fmt);
+ bvprintf(&hwerror_info.info, fmt, args);
+ va_end(args);
+}
+
// Build a formatted string - malloc'ing the memory.
char *
znprintf(size_t size, const char *fmt, ...)
diff --git a/src/output.h b/src/output.h
index 14288cf5..4548d2d4 100644
--- a/src/output.h
+++ b/src/output.h
@@ -16,6 +16,11 @@ char * znprintf(size_t size, const char *fmt, ...)
__attribute__ ((format (printf, 2, 3)));
void __dprintf(const char *fmt, ...)
__attribute__ ((format (printf, 1, 2)));
+
+extern char hwerror_str[512];
+void hwerr_printf(const char *fmt, ...)
+ __attribute__ ((format (printf, 1, 2)));
+
struct bregs;
void __debug_enter(struct bregs *regs, const char *fname);
void __debug_isr(const char *fname);
diff --git a/src/post.c b/src/post.c
index f93106a1..3e85da43 100644
--- a/src/post.c
+++ b/src/post.c
@@ -216,6 +216,10 @@ maininit(void)
device_hardware_setup();
wait_threads();
}
+ if (hwerror_str[0])
+ printf("\n"
+ "hardware setup errors:\n"
+ "%s", hwerror_str);
// Run option roms
optionrom_setup();
--
2.39.3

View File

@ -0,0 +1,52 @@
From 93138b258a2c77ec1df8768bac0853595cc869ca Mon Sep 17 00:00:00 2001
From: Gerd Hoffmann <kraxel@redhat.com>
Date: Wed, 3 May 2023 10:36:32 +0200
Subject: [PATCH 2/2] display error message for blocksizes != 512
RH-Author: Gerd Hoffmann <None>
RH-MergeRequest: 6: log error message to screen when booting with (unsupported) 4k sectors
RH-Jira: RHEL-7110
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
RH-Commit: [2/2] f4cdc59a968ed2cb795d0b7c357522423a16f4a2 (kraxel.rh/centos-src-seabios)
This actually happens in case users try to use 4k sectors with seabios.
Printing the error to the screen instead of only the debug log helps
users to figure why their guest doesn't boot.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
src/hw/blockcmd.c | 2 +-
src/hw/virtio-blk.c | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/hw/blockcmd.c b/src/hw/blockcmd.c
index 6b6fea97..ff88680b 100644
--- a/src/hw/blockcmd.c
+++ b/src/hw/blockcmd.c
@@ -336,7 +336,7 @@ scsi_drive_setup(struct drive_s *drive, const char *s, int prio)
// 64-bit LBA anyway.
drive->blksize = be32_to_cpu(capdata.blksize);
if (drive->blksize != DISK_SECTOR_SIZE) {
- dprintf(1, "%s: unsupported block size %d\n", s, drive->blksize);
+ hwerr_printf("%s: unsupported block size %d\n", s, drive->blksize);
return -1;
}
drive->sectors = (u64)be32_to_cpu(capdata.sectors) + 1;
diff --git a/src/hw/virtio-blk.c b/src/hw/virtio-blk.c
index 137a2c3c..1d6f7d4b 100644
--- a/src/hw/virtio-blk.c
+++ b/src/hw/virtio-blk.c
@@ -193,8 +193,8 @@ init_virtio_blk(void *data)
vdrive->drive.blksize = DISK_SECTOR_SIZE;
}
if (vdrive->drive.blksize != DISK_SECTOR_SIZE) {
- dprintf(1, "virtio-blk %pP block size %d is unsupported\n",
- pci, vdrive->drive.blksize);
+ hwerr_printf("virtio-blk %pP block size %d is unsupported\n",
+ pci, vdrive->drive.blksize);
goto fail;
}
dprintf(3, "virtio-blk %pP blksize=%d sectors=%u size_max=%u "
--
2.39.3

View File

@ -1,72 +0,0 @@
From 93ba763d219be90b088b15a5fc585ff7f051e424 Mon Sep 17 00:00:00 2001
From: Gerd Hoffmann <kraxel@redhat.com>
Date: Mon, 25 Apr 2022 09:25:31 +0200
Subject: [PATCH 2/2] malloc: use large ZoneHigh when there is enough memory
RH-Author: Paolo Bonzini <pbonzini@redhat.com>
RH-MergeRequest: 9: malloc: use large ZoneHigh when there is enough memory
RH-Bugzilla: 2227373
RH-Acked-by: Thomas Huth <thuth@redhat.com>
RH-Acked-by: Oliver Steffen <osteffen@redhat.com>
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
RH-Acked-by: Jon Maloy <jmaloy@redhat.com>
RH-Commit: [2/2] aa6072543a124ad152199d5263c590cb95609d81
In case there is enough memory installed use a large ZoneHigh.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
(cherry picked from commit dc88f9b72df52b22c35b127b80c487e0b6fca4af)
---
src/config.h | 3 ++-
src/malloc.c | 14 +++++++++-----
2 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/src/config.h b/src/config.h
index 93c8dbc2..9abe355b 100644
--- a/src/config.h
+++ b/src/config.h
@@ -17,7 +17,8 @@
// Maximum number of map entries in the e820 map
#define BUILD_MAX_E820 32
// Space to reserve in high-memory for tables
-#define BUILD_MAX_HIGHTABLE (256*1024)
+#define BUILD_MIN_HIGHTABLE (256*1024)
+#define BUILD_MAX_HIGHTABLE (16*1024*1024)
// Largest supported externaly facing drive id
#define BUILD_MAX_EXTDRIVE 16
// Number of bytes the smbios may be and still live in the f-segment
diff --git a/src/malloc.c b/src/malloc.c
index ecd8c9ac..da840980 100644
--- a/src/malloc.c
+++ b/src/malloc.c
@@ -423,7 +423,7 @@ malloc_preinit(void)
// Populate temp high ram
u32 highram_start = 0;
- u32 highram_size = BUILD_MAX_HIGHTABLE;
+ u32 highram_size = 0;
int i;
for (i=e820_count-1; i>=0; i--) {
struct e820entry *en = &e820_list[i];
@@ -434,10 +434,14 @@ malloc_preinit(void)
continue;
u32 s = en->start, e = end;
if (!highram_start) {
- u32 newe = ALIGN_DOWN(e - highram_size, MALLOC_MIN_ALIGN);
- if (newe <= e && newe >= s) {
- highram_start = newe;
- e = newe;
+ u32 new_max = ALIGN_DOWN(e - BUILD_MAX_HIGHTABLE, MALLOC_MIN_ALIGN);
+ u32 new_min = ALIGN_DOWN(e - BUILD_MIN_HIGHTABLE, MALLOC_MIN_ALIGN);
+ if (new_max <= e && new_max >= s + BUILD_MAX_HIGHTABLE) {
+ highram_start = e = new_max;
+ highram_size = BUILD_MAX_HIGHTABLE;
+ } else if (new_min <= e && new_min >= s) {
+ highram_start = e = new_min;
+ highram_size = BUILD_MIN_HIGHTABLE;
}
}
alloc_add(&ZoneTmpHigh, s, e);
--
2.37.3

View File

@ -1,71 +0,0 @@
From 2be730cc469be472bc3e3967690a83f1327e9fc1 Mon Sep 17 00:00:00 2001
From: Gerd Hoffmann <kraxel@redhat.com>
Date: Mon, 25 Apr 2022 09:20:02 +0200
Subject: [PATCH 1/2] malloc: use variable for ZoneHigh size
RH-Author: Paolo Bonzini <pbonzini@redhat.com>
RH-MergeRequest: 9: malloc: use large ZoneHigh when there is enough memory
RH-Bugzilla: 2227373
RH-Acked-by: Thomas Huth <thuth@redhat.com>
RH-Acked-by: Oliver Steffen <osteffen@redhat.com>
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
RH-Acked-by: Jon Maloy <jmaloy@redhat.com>
RH-Commit: [1/2] 9e60f2104cc297ed4e78b92c5e5e11e11395bfc3
Use the variable highram_size instead of the BUILD_MAX_HIGHTABLE #define
for the ZoneHigh size. Initialize the new variable with the old #define,
so behavior does not change.
This allows to easily adjust the ZoneHigh size at runtime in a followup
patch.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
(cherry picked from commit 3b91e8e9fe93d5ff7edf17f984c401f9e6ba55fe)
---
src/malloc.c | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/src/malloc.c b/src/malloc.c
index 3733855c..ecd8c9ac 100644
--- a/src/malloc.c
+++ b/src/malloc.c
@@ -422,7 +422,8 @@ malloc_preinit(void)
e820_add(BUILD_BIOS_ADDR, BUILD_BIOS_SIZE, E820_RESERVED);
// Populate temp high ram
- u32 highram = 0;
+ u32 highram_start = 0;
+ u32 highram_size = BUILD_MAX_HIGHTABLE;
int i;
for (i=e820_count-1; i>=0; i--) {
struct e820entry *en = &e820_list[i];
@@ -432,10 +433,10 @@ malloc_preinit(void)
if (en->type != E820_RAM || end > 0xffffffff)
continue;
u32 s = en->start, e = end;
- if (!highram) {
- u32 newe = ALIGN_DOWN(e - BUILD_MAX_HIGHTABLE, MALLOC_MIN_ALIGN);
+ if (!highram_start) {
+ u32 newe = ALIGN_DOWN(e - highram_size, MALLOC_MIN_ALIGN);
if (newe <= e && newe >= s) {
- highram = newe;
+ highram_start = newe;
e = newe;
}
}
@@ -444,9 +445,9 @@ malloc_preinit(void)
// Populate regions
alloc_add(&ZoneTmpLow, BUILD_STACK_ADDR, BUILD_EBDA_MINIMUM);
- if (highram) {
- alloc_add(&ZoneHigh, highram, highram + BUILD_MAX_HIGHTABLE);
- e820_add(highram, BUILD_MAX_HIGHTABLE, E820_RESERVED);
+ if (highram_start) {
+ alloc_add(&ZoneHigh, highram_start, highram_start + highram_size);
+ e820_add(highram_start, highram_size, E820_RESERVED);
}
}
--
2.37.3

View File

@ -1,174 +0,0 @@
From a35645ca4985b8fdd4f4d8c4d87ae05001061c53 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Volker=20R=C3=BCmelin?= <vr_qemu@t-online.de>
Date: Sat, 2 Apr 2022 20:28:38 +0200
Subject: [PATCH 2/3] pci: refactor the pci_config_*() functions
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
RH-Author: Gerd Hoffmann <kraxel@redhat.com>
RH-MergeRequest: 7: pci: fix reset for q35 and tcg
RH-Commit: [1/2] 7607f8f3296435a2884902f650ce060c6be07bd1
RH-Bugzilla: 2083884
RH-Acked-by: Pawel Polawski <ppolawsk@redhat.com>
RH-Acked-by: Oliver Steffen <osteffen@redhat.com>
RH-Acked-by: Igor Mammedov <imammedo@redhat.com>
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
Split out the Standard PCI Configuration Access Mechanism
pci_ioconfig_*() functions from the pci_config_*() functions.
The standard PCI CAM functions will be used in the next patch.
Reviewed-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
(cherry picked from commit d24f42b0d819ea473ae05b2f955b822d0126d901)
---
src/hw/pci.c | 54 ++++++++++++++++++++++++++++++++++++++++------------
src/hw/pci.h | 12 +++++++++++-
2 files changed, 53 insertions(+), 13 deletions(-)
diff --git a/src/hw/pci.c b/src/hw/pci.c
index 3df1dae4..f13cbdea 100644
--- a/src/hw/pci.c
+++ b/src/hw/pci.c
@@ -26,63 +26,93 @@ static u32 ioconfig_cmd(u16 bdf, u32 addr)
return 0x80000000 | (bdf << 8) | (addr & 0xfc);
}
+void pci_ioconfig_writel(u16 bdf, u32 addr, u32 val)
+{
+ outl(ioconfig_cmd(bdf, addr), PORT_PCI_CMD);
+ outl(val, PORT_PCI_DATA);
+}
+
void pci_config_writel(u16 bdf, u32 addr, u32 val)
{
if (!MODESEGMENT && mmconfig) {
writel(mmconfig_addr(bdf, addr), val);
} else {
- outl(ioconfig_cmd(bdf, addr), PORT_PCI_CMD);
- outl(val, PORT_PCI_DATA);
+ pci_ioconfig_writel(bdf, addr, val);
}
}
+void pci_ioconfig_writew(u16 bdf, u32 addr, u16 val)
+{
+ outl(ioconfig_cmd(bdf, addr), PORT_PCI_CMD);
+ outw(val, PORT_PCI_DATA + (addr & 2));
+}
+
void pci_config_writew(u16 bdf, u32 addr, u16 val)
{
if (!MODESEGMENT && mmconfig) {
writew(mmconfig_addr(bdf, addr), val);
} else {
- outl(ioconfig_cmd(bdf, addr), PORT_PCI_CMD);
- outw(val, PORT_PCI_DATA + (addr & 2));
+ pci_ioconfig_writew(bdf, addr, val);
}
}
+void pci_ioconfig_writeb(u16 bdf, u32 addr, u8 val)
+{
+ outl(ioconfig_cmd(bdf, addr), PORT_PCI_CMD);
+ outb(val, PORT_PCI_DATA + (addr & 3));
+}
+
void pci_config_writeb(u16 bdf, u32 addr, u8 val)
{
if (!MODESEGMENT && mmconfig) {
writeb(mmconfig_addr(bdf, addr), val);
} else {
- outl(ioconfig_cmd(bdf, addr), PORT_PCI_CMD);
- outb(val, PORT_PCI_DATA + (addr & 3));
+ pci_ioconfig_writeb(bdf, addr, val);
}
}
+u32 pci_ioconfig_readl(u16 bdf, u32 addr)
+{
+ outl(ioconfig_cmd(bdf, addr), PORT_PCI_CMD);
+ return inl(PORT_PCI_DATA);
+}
+
u32 pci_config_readl(u16 bdf, u32 addr)
{
if (!MODESEGMENT && mmconfig) {
return readl(mmconfig_addr(bdf, addr));
} else {
- outl(ioconfig_cmd(bdf, addr), PORT_PCI_CMD);
- return inl(PORT_PCI_DATA);
+ return pci_ioconfig_readl(bdf, addr);
}
}
+u16 pci_ioconfig_readw(u16 bdf, u32 addr)
+{
+ outl(ioconfig_cmd(bdf, addr), PORT_PCI_CMD);
+ return inw(PORT_PCI_DATA + (addr & 2));
+}
+
u16 pci_config_readw(u16 bdf, u32 addr)
{
if (!MODESEGMENT && mmconfig) {
return readw(mmconfig_addr(bdf, addr));
} else {
- outl(ioconfig_cmd(bdf, addr), PORT_PCI_CMD);
- return inw(PORT_PCI_DATA + (addr & 2));
+ return pci_ioconfig_readw(bdf, addr);
}
}
+u8 pci_ioconfig_readb(u16 bdf, u32 addr)
+{
+ outl(ioconfig_cmd(bdf, addr), PORT_PCI_CMD);
+ return inb(PORT_PCI_DATA + (addr & 3));
+}
+
u8 pci_config_readb(u16 bdf, u32 addr)
{
if (!MODESEGMENT && mmconfig) {
return readb(mmconfig_addr(bdf, addr));
} else {
- outl(ioconfig_cmd(bdf, addr), PORT_PCI_CMD);
- return inb(PORT_PCI_DATA + (addr & 3));
+ return pci_ioconfig_readb(bdf, addr);
}
}
diff --git a/src/hw/pci.h b/src/hw/pci.h
index 01c51f70..ee6acafc 100644
--- a/src/hw/pci.h
+++ b/src/hw/pci.h
@@ -32,6 +32,15 @@ static inline u16 pci_bus_devfn_to_bdf(int bus, u16 devfn) {
; BDF >= 0 \
; BDF=pci_next(BDF, (BUS)))
+// standard PCI configration access mechanism
+void pci_ioconfig_writel(u16 bdf, u32 addr, u32 val);
+void pci_ioconfig_writew(u16 bdf, u32 addr, u16 val);
+void pci_ioconfig_writeb(u16 bdf, u32 addr, u8 val);
+u32 pci_ioconfig_readl(u16 bdf, u32 addr);
+u16 pci_ioconfig_readw(u16 bdf, u32 addr);
+u8 pci_ioconfig_readb(u16 bdf, u32 addr);
+
+// PCI configuration access using either PCI CAM or PCIe ECAM
void pci_config_writel(u16 bdf, u32 addr, u32 val);
void pci_config_writew(u16 bdf, u32 addr, u16 val);
void pci_config_writeb(u16 bdf, u32 addr, u8 val);
@@ -39,9 +48,10 @@ u32 pci_config_readl(u16 bdf, u32 addr);
u16 pci_config_readw(u16 bdf, u32 addr);
u8 pci_config_readb(u16 bdf, u32 addr);
void pci_config_maskw(u16 bdf, u32 addr, u16 off, u16 on);
-void pci_enable_mmconfig(u64 addr, const char *name);
u8 pci_find_capability(u16 bdf, u8 cap_id, u8 cap);
int pci_next(int bdf, int bus);
+
+void pci_enable_mmconfig(u64 addr, const char *name);
int pci_probe_host(void);
void pci_reboot(void);
--
2.35.3

View File

@ -1,159 +0,0 @@
From a7e5f1d8f1f874434f8b3e6d6eac784d5e3e3971 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Volker=20R=C3=BCmelin?= <vr_qemu@t-online.de>
Date: Sat, 2 Apr 2022 20:28:39 +0200
Subject: [PATCH 3/3] reset: force standard PCI configuration access
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
RH-Author: Gerd Hoffmann <kraxel@redhat.com>
RH-MergeRequest: 7: pci: fix reset for q35 and tcg
RH-Commit: [2/2] 693fbb9148c81f344dc9f64e7a36e51b42ee1a95
RH-Bugzilla: 2083884
RH-Acked-by: Pawel Polawski <ppolawsk@redhat.com>
RH-Acked-by: Oliver Steffen <osteffen@redhat.com>
RH-Acked-by: Igor Mammedov <imammedo@redhat.com>
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
After a reset of a QEMU -machine q35 guest, the PCI Express
Enhanced Configuration Mechanism is disabled and the variable
mmconfig no longer matches the configuration register PCIEXBAR
of the Q35 chipset. Until the variable mmconfig is reset to 0,
all pci_config_*() functions no longer work.
The variable mmconfig is located in one of the read-only C-F
segments. To reset it the pci_config_*() functions are needed,
but they do not work.
Replace all pci_config_*() calls with Standard PCI Configuration
Mechanism pci_ioconfig_*() calls until mmconfig is overwritten
with 0 by a fresh copy of the BIOS.
This fixes
In resume (status=0)
In 32bit resume
Attempting a hard reboot
Unable to unlock ram - bridge not found
and a reset loop with QEMU -accel tcg.
Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
(cherry picked from commit 01774004c7f7fdc9c1e8f1715f70d3b913f8d491)
---
src/fw/shadow.c | 14 +++++++-------
src/hw/pci.c | 27 +++++++++++++++++++++++++++
src/hw/pci.h | 6 ++++++
3 files changed, 40 insertions(+), 7 deletions(-)
diff --git a/src/fw/shadow.c b/src/fw/shadow.c
index 4c627a8f..8930616e 100644
--- a/src/fw/shadow.c
+++ b/src/fw/shadow.c
@@ -32,8 +32,8 @@ __make_bios_writable_intel(u16 bdf, u32 pam0)
{
// Read in current PAM settings from pci config space
union pamdata_u pamdata;
- pamdata.data32[0] = pci_config_readl(bdf, ALIGN_DOWN(pam0, 4));
- pamdata.data32[1] = pci_config_readl(bdf, ALIGN_DOWN(pam0, 4) + 4);
+ pamdata.data32[0] = pci_ioconfig_readl(bdf, ALIGN_DOWN(pam0, 4));
+ pamdata.data32[1] = pci_ioconfig_readl(bdf, ALIGN_DOWN(pam0, 4) + 4);
u8 *pam = &pamdata.data8[pam0 & 0x03];
// Make ram from 0xc0000-0xf0000 writable
@@ -46,8 +46,8 @@ __make_bios_writable_intel(u16 bdf, u32 pam0)
pam[0] = 0x30;
// Write PAM settings back to pci config space
- pci_config_writel(bdf, ALIGN_DOWN(pam0, 4), pamdata.data32[0]);
- pci_config_writel(bdf, ALIGN_DOWN(pam0, 4) + 4, pamdata.data32[1]);
+ pci_ioconfig_writel(bdf, ALIGN_DOWN(pam0, 4), pamdata.data32[0]);
+ pci_ioconfig_writel(bdf, ALIGN_DOWN(pam0, 4) + 4, pamdata.data32[1]);
if (!ram_present)
// Copy bios.
@@ -59,7 +59,7 @@ __make_bios_writable_intel(u16 bdf, u32 pam0)
static void
make_bios_writable_intel(u16 bdf, u32 pam0)
{
- int reg = pci_config_readb(bdf, pam0);
+ int reg = pci_ioconfig_readb(bdf, pam0);
if (!(reg & 0x10)) {
// QEMU doesn't fully implement the piix shadow capabilities -
// if ram isn't backing the bios segment when shadowing is
@@ -125,8 +125,8 @@ make_bios_writable(void)
// At this point, statically allocated variables can't be written,
// so do this search manually.
int bdf;
- foreachbdf(bdf, 0) {
- u32 vendev = pci_config_readl(bdf, PCI_VENDOR_ID);
+ pci_ioconfig_foreachbdf(bdf, 0) {
+ u32 vendev = pci_ioconfig_readl(bdf, PCI_VENDOR_ID);
u16 vendor = vendev & 0xffff, device = vendev >> 16;
if (vendor == PCI_VENDOR_ID_INTEL
&& device == PCI_DEVICE_ID_INTEL_82441) {
diff --git a/src/hw/pci.c b/src/hw/pci.c
index f13cbdea..8eda84b2 100644
--- a/src/hw/pci.c
+++ b/src/hw/pci.c
@@ -157,6 +157,33 @@ u8 pci_find_capability(u16 bdf, u8 cap_id, u8 cap)
return 0;
}
+// Helper function for pci_ioconfig_foreachbdf() macro - return next device
+int pci_ioconfig_next(int bdf, int bus)
+{
+ if (pci_bdf_to_fn(bdf) == 0
+ && (pci_ioconfig_readb(bdf, PCI_HEADER_TYPE) & 0x80) == 0)
+ // Last found device wasn't a multi-function device - skip to
+ // the next device.
+ bdf += 8;
+ else
+ bdf += 1;
+
+ for (;;) {
+ if (pci_bdf_to_bus(bdf) != bus)
+ return -1;
+
+ u16 v = pci_ioconfig_readw(bdf, PCI_VENDOR_ID);
+ if (v != 0x0000 && v != 0xffff)
+ // Device is present.
+ return bdf;
+
+ if (pci_bdf_to_fn(bdf) == 0)
+ bdf += 8;
+ else
+ bdf += 1;
+ }
+}
+
// Helper function for foreachbdf() macro - return next device
int
pci_next(int bdf, int bus)
diff --git a/src/hw/pci.h b/src/hw/pci.h
index ee6acafc..b2f5baf4 100644
--- a/src/hw/pci.h
+++ b/src/hw/pci.h
@@ -27,6 +27,11 @@ static inline u16 pci_bus_devfn_to_bdf(int bus, u16 devfn) {
return (bus << 8) | devfn;
}
+#define pci_ioconfig_foreachbdf(BDF, BUS) \
+ for (BDF=pci_ioconfig_next(pci_bus_devfn_to_bdf((BUS), 0)-1, (BUS)) \
+ ; BDF >= 0 \
+ ; BDF=pci_ioconfig_next(BDF, (BUS)))
+
#define foreachbdf(BDF, BUS) \
for (BDF=pci_next(pci_bus_devfn_to_bdf((BUS), 0)-1, (BUS)) \
; BDF >= 0 \
@@ -39,6 +44,7 @@ void pci_ioconfig_writeb(u16 bdf, u32 addr, u8 val);
u32 pci_ioconfig_readl(u16 bdf, u32 addr);
u16 pci_ioconfig_readw(u16 bdf, u32 addr);
u8 pci_ioconfig_readb(u16 bdf, u32 addr);
+int pci_ioconfig_next(int bdf, int bus);
// PCI configuration access using either PCI CAM or PCIe ECAM
void pci_config_writel(u16 bdf, u32 addr, u32 val);
--
2.35.3

View File

@ -1,40 +0,0 @@
From 27b924ad88b53c1bff736d144b90ce655087d1a5 Mon Sep 17 00:00:00 2001
From: Gerd Hoffmann <kraxel@redhat.com>
Date: Fri, 29 Oct 2021 11:19:10 +0200
Subject: [PATCH 1/3] shortcut skip-unbootable-disks optimitation
RH-Author: Gerd Hoffmann <kraxel@redhat.com>
RH-MergeRequest: 6: shortcut skip-unbootable-disks optimitation
RH-Commit: [1/1] 95008c119b45b4a360caa4a7733420d72aec99cb
RH-Bugzilla: 2073012
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
RH-Acked-by: Oliver Steffen <osteffen@redhat.com>
RH-Acked-by: Pawel Polawski <ppolawsk@redhat.com>
---
src/boot.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/boot.c b/src/boot.c
index 1effd802..b18e7788 100644
--- a/src/boot.c
+++ b/src/boot.c
@@ -297,11 +297,16 @@ find_prio(const char *glob)
u8 is_bootprio_strict(void)
{
+#if 0
static int prio_halt = -2;
if (prio_halt == -2)
prio_halt = find_prio("HALT");
return prio_halt >= 0;
+#else
+ // force initializing all disks
+ return 0;
+#endif
}
int bootprio_find_pci_device(struct pci_device *pci)
--
2.35.3

View File

@ -1,42 +0,0 @@
From 88e527d9fbbbe8d05e45f6db8a151d22e7f973d3 Mon Sep 17 00:00:00 2001
From: Gerd Hoffmann <kraxel@redhat.com>
Date: Thu, 30 Jun 2022 17:28:40 +0200
Subject: [PATCH] virtio-blk: use larger default request size
RH-Author: Gerd Hoffmann <kraxel@redhat.com>
RH-MergeRequest: 8: virtio-blk: use larger default request size
RH-Commit: [1/1] df68a35a0d02fb91f61eca9e9342ae5f13f99803
RH-Bugzilla: 2101787
RH-Acked-by: Oliver Steffen <osteffen@redhat.com>
RH-Acked-by: Pawel Polawski <ppolawsk@redhat.com>
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
Bump default from 8 to 64 blocks. Using 8 by default leads
to requests being splitted on qemu, which slows down boot.
Some (temporary) debug logging added showed that almost all
requests on a standard fedora install are less than 64 blocks,
so that should bring us back to 1.15 performance levels.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
(cherry picked from commit 46de2eec93bffa0706e6229c0da2919763c8eb04)
---
src/hw/virtio-blk.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/hw/virtio-blk.c b/src/hw/virtio-blk.c
index 929ba887..9b4a05a4 100644
--- a/src/hw/virtio-blk.c
+++ b/src/hw/virtio-blk.c
@@ -95,7 +95,7 @@ virtio_blk_op(struct disk_op_s *op, int write)
blk_num_max = (u16)max_io_size / vdrive->drive.blksize;
else
/* default blk_num_max if hardware doesnot advise a proper value */
- blk_num_max = 8;
+ blk_num_max = 64;
if (op->count <= blk_num_max) {
virtio_blk_op_one_segment(vdrive, write, sg);
--
2.31.1

View File

@ -1,42 +1,30 @@
Name: seabios
Version: 1.16.0
Release: 4%{?dist}
Version: 1.16.3
Release: 2%{?dist}
Summary: Open-source legacy BIOS implementation
Group: Applications/Emulators
License: LGPLv3
URL: https://www.coreboot.org/SeaBIOS
Source0: https://code.coreboot.org/p/seabios/downloads/get/seabios-1.16.0.tar.gz
Source0: https://code.coreboot.org/p/seabios/downloads/get/seabios-1.16.3.tar.gz
Source10: config.vga.cirrus
Source11: config.vga.qxl
Source12: config.vga.stdvga
Source13: config.vga.virtio
Source14: config.vga.ramfb
Source15: config.vga.bochs-display
Source20: config.seabios-128k
Source21: config.seabios-256k
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#2073012 - Guest whose os is installed multiple disks but boot partition is installed on single disk can't boot into OS on RHEL 8 [rhel-8.7.0]
Patch5: seabios-shortcut-skip-unbootable-disks-optimitation.patch
# For bz#2083884 - qemu reboot problem with seabios 1.16.0
Patch6: seabios-pci-refactor-the-pci_config_-functions.patch
# For bz#2083884 - qemu reboot problem with seabios 1.16.0
Patch7: seabios-reset-force-standard-PCI-configuration-access.patch
# For bz#2101787 - [rhel.8.7] Loading a kernel/initrd is sometimes very slow
Patch8: seabios-virtio-blk-use-larger-default-request-size.patch
# For bz#2227373 - "No bootable device" with OS boot disk interface VirtIO-SCSI and with more than 9 VirtIO disks.
Patch9: seabios-malloc-use-variable-for-ZoneHigh-size.patch
# For bz#2227373 - "No bootable device" with OS boot disk interface VirtIO-SCSI and with more than 9 VirtIO disks.
Patch10: seabios-malloc-use-large-ZoneHigh-when-there-is-enough-memor.patch
Source10: config.vga-cirrus
Source13: config.vga-stdvga
Source18: config.seabios-256k
Source19: config.vga-virtio
Source20: config.vga-ramfb
Source21: config.vga-bochs-display
# For RHEL-7110 - [seabios] Can't boot from a disk with 4K sector size
Patch1: seabios-add-hwerr_printf-function-for-threads.patch
# For RHEL-7110 - [seabios] Can't boot from a disk with 4K sector size
Patch2: seabios-display-error-message-for-blocksizes-512.patch
BuildRequires: make
BuildRequires: gcc
BuildRequires: python3 iasl
ExclusiveArch: x86_64 %{power64}
ExclusiveArch: x86_64
Requires: %{name}-bin = %{version}-%{release}
Requires: seavgabios-bin = %{version}-%{release}
@ -77,7 +65,6 @@ that a typical x86 proprietary BIOS implements.
%package -n seavgabios-bin
Summary: Seavgabios for x86
Buildarch: noarch
Obsoletes: vgabios < 0.6c-10
%description -n seavgabios-bin
SeaVGABIOS is an open-source VGABIOS implementation.
@ -85,44 +72,45 @@ SeaVGABIOS is an open-source VGABIOS implementation.
%prep
%setup -q
%patch0002 -p1
%patch0003 -p1
%patch0004 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch10 -p1
%autopatch -p1
%build
%ifarch x86_64
%define _lto_cflags %{nil}
export CFLAGS="$RPM_OPT_FLAGS"
mkdir binaries
build_bios() {
make PYTHON=%{__python3} clean distclean
cp $1 .config
echo "CONFIG_TCGBIOS=n" >> .config
echo "CONFIG_DEBUG_LEVEL=%{debug_level}" >> .config
make PYTHON=%{__python3} oldnoconfig V=1 EXTRAVERSION="-%release"
make PYTHON=%{__python3} \
V=1 \
$4 \
make V=1 \
EXTRAVERSION="-%{release}" \
PYTHON=%{__python3} \
%if 0%{?cross:1}
HOSTCC=gcc \
CC=x86_64-linux-gnu-gcc \
AS=x86_64-linux-gnu-as \
LD=x86_64-linux-gnu-ld \
OBJCOPY=x86_64-linux-gnu-objcopy \
OBJDUMP=x86_64-linux-gnu-objdump \
STRIP=x86_64-linux-gnu-strip \
%endif
$4
cp out/$2 binaries/$3
}
# seabios
build_bios %{_sourcedir}/config.seabios-128k bios.bin bios.bin
build_bios %{_sourcedir}/config.seabios-256k bios.bin bios-256k.bin
# seavgabios
%global vgaconfigs cirrus qxl stdvga virtio ramfb bochs-display
%global vgaconfigs cirrus stdvga virtio ramfb bochs-display
for config in %{vgaconfigs}; do
build_bios %{_sourcedir}/config.vga.${config} \
build_bios %{_sourcedir}/config.vga-${config} \
vgabios.bin vgabios-${config}.bin out/vgabios.bin
done
@ -130,7 +118,6 @@ done
%install
mkdir -p $RPM_BUILD_ROOT%{_datadir}/seabios
mkdir -p $RPM_BUILD_ROOT%{_datadir}/seavgabios
install -m 0644 binaries/bios.bin $RPM_BUILD_ROOT%{_datadir}/seabios/bios.bin
install -m 0644 binaries/bios-256k.bin $RPM_BUILD_ROOT%{_datadir}/seabios/bios-256k.bin
install -m 0644 binaries/vgabios*.bin $RPM_BUILD_ROOT%{_datadir}/seavgabios
@ -147,95 +134,125 @@ install -m 0644 binaries/vgabios*.bin $RPM_BUILD_ROOT%{_datadir}/seavgabios
%dir %{_datadir}/seavgabios/
%{_datadir}/seavgabios/vgabios*.bin
# endif for %ifarch x86_64 {power64}
%endif
%changelog
* Thu Aug 03 2023 Jon Maloy <jmaloy@redhat.com> - 1.16.0-4
- seabios-malloc-use-variable-for-ZoneHigh-size.patch [bz#2227373]
- seabios-malloc-use-large-ZoneHigh-when-there-is-enough-memor.patch [bz#2227373]
- Resolves: bz#2227373
("No bootable device" with OS boot disk interface VirtIO-SCSI and with more than 9 VirtIO disks.)
* Wed Jan 10 2024 Miroslav Rezanina <mrezanin@redhat.com> - 1.16.3-2
- seabios-add-hwerr_printf-function-for-threads.patch [RHEL-7110]
- seabios-display-error-message-for-blocksizes-512.patch [RHEL-7110]
- Resolves: RHEL-7110
([seabios] Can't boot from a disk with 4K sector size)
* Wed Jul 27 2022 Miroslav Rezanina <mrezanin@redhat.com> - 1.16.0-3
- seabios-virtio-blk-use-larger-default-request-size.patch [bz#2101787]
- Resolves: bz#2101787
([rhel.8.7] Loading a kernel/initrd is sometimes very slow)
* Wed Dec 13 2023 Miroslav Rezanina <mrezanin@redhat.com> - 1.16.3-1
- Rebase to 1.16.3 [RHEL-19239]
- Removed vgabios-qxl.bin [RHEL-383]
- Resolves: RHEL-19239
(Rebase seabios to 1.16.3)
- Resolves: RHEL-383
(remove vgabios-qxl.bin from seavgabios in rhel9)
* Mon May 30 2022 Jon Maloy <jmaloy@redhat.com> - 1.16.0-2
- seabios-shortcut-skip-unbootable-disks-optimitation.patch [bz#2073012]
- seabios-pci-refactor-the-pci_config_-functions.patch [bz#2083884]
- seabios-reset-force-standard-PCI-configuration-access.patch [bz#2083884]
- Resolves: bz#2073012
(Guest whose os is installed multiple disks but boot partition is installed on single disk can't boot into OS on RHEL 8 [rhel-8.7.0])
- Resolves: bz#2083884
* Wed Dec 07 2022 Miroslav Rezanina <mrezanin@redhat.com> - 1.16.1-1
- Rebase to 1.16.1 [bz#2149280]
- Resolves: bz#2149280
(rebase seabios to 1.16.1)
* Mon Jul 25 2022 Miroslav Rezanina <mrezanin@redhat.com> - 1.16.0-4
- seabios-virtio-blk-use-larger-default-request-size.patch [bz#2108555]
- Resolves: bz#2108555
([rhel.9.1] Loading a kernel/initrd is sometimes very slow)
* Thu May 26 2022 Miroslav Rezanina <mrezanin@redhat.com> - 1.16.0-3
- seabios-pci-refactor-the-pci_config_-functions.patch [bz#2086407]
- seabios-reset-force-standard-PCI-configuration-access.patch [bz#2086407]
- Resolves: bz#2086407
(qemu reboot problem with seabios 1.16.0)
* Tue Apr 26 2022 Paweł Poławski <ppolawsk@redhat.com> - 1.16.0-1
- Rebase to upstream 1.16 tag [bz#2066828]
- Resolves: bz#2066828
* Tue May 10 2022 Miroslav Rezanina <mrezanin@redhat.com> - 1.16.0-2
- seabios-malloc-use-variable-for-ZoneHigh-size.patch [bz#2004662]
- seabios-malloc-use-large-ZoneHigh-when-there-is-enough-memor.patch [bz#2004662]
- Resolves: bz#2004662
(RFE: "Unable to allocate resource at romfile_loader_allocate:87" when running very large VMs)
* Thu Apr 21 2022 Paweł Poławski <ppolawsk@redhat.com> - 1.16.0-1
- Rebase to upstream 1.16.0 release [bz#2066826]
- Resolves: bz#2066826
(rebase seabios to 1.16 release)
* Thu Dec 16 2021 Jon Maloy <jmaloy@redhat.com> - 1.15.0-1.el8
- Rebase to 1.15 (bz#2018392)
- Resolves: bz#2018392
* Fri Dec 17 2021 Miroslav Rezanina <mrezanin@redhat.com> - 1.15.0-1
- Rebase to seabios to 1.15.0 [bz#2018393]
- 0003-pci-let-firmware-reserve-IO-for-pcie-pci-bridge.patch [bz#2001732]
- 0004-pci-reserve-resources-for-pcie-pci-bridge-to-fix-reg.patch [bz#2001732]
- Resolves: bz#2018393
([rebase] update seabios to nov '21 release)
- Resolves: bz#2001732
([virtual network][qemu-6.1.0-1] Fail to hotplug nic with rtl8139 driver)
* Thu Dec 16 2021 Jon Maloy <jmaloy@redhat.com> - 1.15.0-1.el8
- pci-reserve-resources-for-pcie-pci-bridge-to-fix-reg.patch [bz#2001921]
- pci: let firmware reserve IO for pcie-pci-bridge.patch [bz#2001921]
- Resolves: bz#2001921
* Wed Sep 15 2021 Miroslav Rezanina <mrezanin@redhat.com> - 1.14.0-7
- seabios-Drop-fedora-bits-they-are-not-tested-and-currently-f.patch [bz#2004169]
- seabios-Disable-TPM-support.patch [bz#2004169]
- Resolves: bz#2004169
(seabios implements and/or uses the deprecated SHA-1 algorithm by default)
* Tue Aug 11 2020 Miroslav Rezanina <mrezanin@redhat.com> - 1.14.0-1.el8
- Rebase to 1.14 (bz#1809772)
- Resolves: bz#1809772
(rebase seabios for RHEL AV-8.3.0)
* Tue Aug 10 2021 Mohan Boddu <mboddu@redhat.com> - 1.14.0-6
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688
* Tue Jan 21 2020 Miroslav Rezanina <mrezanin@redhat.com> - 1.13.0-1.el8
- Rebase to 1.13 (bz#1793377)
- Resolves: bz#1793377
(rebase seabios to 1.13)
* Mon Jun 28 2021 Miroslav Rezanina <mrezanin@redhat.com> - 1.14.0-5
- seabios-Disable-power-support.patch [bz#1951027]
- Resolves: bz#1951027
(SeaBios no longer needed for ppc64)
* Tue Aug 20 2019 Danilo Cesar Lemes de Paula <ddepaula@redhat.com> - 1.12.0-5.el8
- seabios-add-get_keystroke_full-helper.patch [bz#1693031]
- seabios-bootmenu-add-support-for-more-than-9-entries.patch [bz#1693031]
- Resolves: bz#1693031
(On systems with more than 10 available boot devices, keys are uninintuitive)
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 1.14.0-4
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
* Fri Aug 02 2019 Danilo Cesar Lemes de Paula <ddepaula@redhat.com> - 1.12.0-4.el8
- seabios-tpm-Check-for-TPM-related-ACPI-tables-before-attempt.patch [bz#1705212]
- seabios-usb-ehci-Clear-pipe-token-on-pipe-reallocate.patch [bz#1705212]
- Resolves: bz#1705212
(Backport 1.12.1 patches to RHEL-AV 8.1.0)
* Wed Feb 10 2021 Miroslav Rezanina <mrezanin@redhat.com> - 1.14.0-3
- Update to include in RHEL 9 compose
- Resolves: rhbz#1926095
(qemu-kvm not available for ppc64le)
* Tue Jul 09 2019 Miroslav Rezanina <mrezanin@redhat.com> - 1.12.0-3.el8
- seabios-rh-add-configs-for-ramfb-and-bochs-display.patch [bz#1724098]
- Resolves: bz#1724098
(enable device: bochs-display (seabios))
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.14.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Mon Jan 21 2019 Miroslav Rezanina <mrezanin@redhat.com> - 1.12.0-1.el8
- Rebase to 1.12.0 [bz#1666134]
- Resolves: bz#1666134
(Rebase seabios for RHEL-AV release in virt:8.0.0 stream)
* Tue Nov 24 2020 Cole Robinson <aintdiscole@gmail.com> - 1.14.0-1
- Update to 1.14.0
* Fri Dec 07 2018 Danilo C. L. de Paula <ddepaula@redhat.com> - 1.11.1-3.el8
- Resolves: bz#1613465
(Fix seabios package)
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Fri Aug 24 2018 Danilo C. L. de Paula <ddepaula@redhat.com> - 1.11.1-2.el8
- Resolves: bz#1607349
(Serial Graphics Adapter show error seabios version)
* Thu Jan 30 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Thu Jul 12 2018 Danilo C. L. de Paula <ddepaula@redhat.com> - 1.11.1-1.el8
- Rebasing seabios 1.11.1
* Mon Dec 09 2019 Cole Robinson <aintdiscole@gmail.com> - 1.13.0-1
- Update to 1.13.0
* Mon May 21 2018 Danilo C. L. de Paula <ddepaula@redhat.com> - 1.11.0-2.el8
- Syncronizing exploded tree with dist-git
* Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.12.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Mon Nov 20 2017 Danilo C. L. de Paula <ddepaula@redhat.com> - 1.11.0-1.el8
- Creating RHEL-8.0 initial branch based on 1.11.0
- Resolves: bz#1515300
- (Prepare seabios for RHEL-8.0)
* Thu Jul 11 2019 Cole Robinson <aintdiscole@gmail.com> - 1.12.1-2
- Add config.vga-ati from qemu 4.1
* Wed Mar 27 2019 Cole Robinson <aintdiscole@gmail.com> - 1.12.1-1
- Update to 1.12.1 for qemu 4.0
* Sat Feb 02 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.12.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Sat Nov 17 2018 Cole Robinson <crobinso@redhat.com> - 1.12.0-1
- Rebase to version 1.12.0 for qemu-3.1.0
* Tue Jul 24 2018 Cole Robinson <crobinso@redhat.com> - 1.11.2-1
- Rebased to version 1.11.2
- Add BuildRequires: gcc (bz #1606326)
* Sat Jul 14 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.11.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Thu Mar 22 2018 Cole Robinson <crobinso@redhat.com> - 1.11.1-1
- Rebased to version 1.11.1
* Mon Mar 19 2018 Paolo Bonzini <pbonzini@redhat.com> - 1.11.0-2
- Build with Python 3
* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.11.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Fri Nov 17 2017 Paolo Bonzini <pbonzini@redhat.com> - 1.11.0-1
- Rebased to version 1.11.0