import CS seabios-1.16.3-2.el9

This commit is contained in:
eabdullin 2024-03-28 11:48:04 +00:00
parent 944a71bd54
commit ec1e64678f
6 changed files with 163 additions and 13 deletions

2
.gitignore vendored
View File

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

View File

@ -1 +1 @@
867440b1737356f636da206229d347e98a3dc3c2 SOURCES/seabios-1.16.1.tar.gz
391d3e99a670bff295c4b4e8ccc02c87ce908018 SOURCES/seabios-1.16.3.tar.gz

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,21 +1,24 @@
Name: seabios
Version: 1.16.1
Release: 1%{?dist}
Version: 1.16.3
Release: 2%{?dist}
Summary: Open-source legacy BIOS implementation
License: LGPLv3
URL: https://www.coreboot.org/SeaBIOS
Source0: https://code.coreboot.org/p/seabios/downloads/get/seabios-1.16.1.tar.gz
Source0: https://code.coreboot.org/p/seabios/downloads/get/seabios-1.16.3.tar.gz
Source10: config.vga-cirrus
Source12: config.vga-qxl
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
@ -105,7 +108,7 @@ 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} \
vgabios.bin vgabios-${config}.bin out/vgabios.bin
@ -132,6 +135,20 @@ install -m 0644 binaries/vgabios*.bin $RPM_BUILD_ROOT%{_datadir}/seavgabios
%{_datadir}/seavgabios/vgabios*.bin
%changelog
* 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 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)
* Wed Dec 07 2022 Miroslav Rezanina <mrezanin@redhat.com> - 1.16.1-1
- Rebase to 1.16.1 [bz#2149280]
- Resolves: bz#2149280