Compare commits
6 Commits
imports/c8
...
c8-stream-
Author | SHA1 | Date |
---|---|---|
eabdullin | cdd115c697 | |
CentOS Sources | 94f4f45b88 | |
CentOS Sources | 6ce4fe9c65 | |
CentOS Sources | 6f569c6590 | |
CentOS Sources | eb748e97b9 | |
CentOS Sources | 00cdff0c72 |
|
@ -1 +1 @@
|
|||
SOURCES/seabios-1.11.1.tar.gz
|
||||
SOURCES/seabios-1.16.0.tar.gz
|
||||
|
|
|
@ -1 +1 @@
|
|||
b0ead7ce2bd4b267a48e713ae3888a21ee287bf1 SOURCES/seabios-1.11.1.tar.gz
|
||||
0cc6b21cfbafa1f9f158c9aca1ab9f5174ebede2 SOURCES/seabios-1.16.0.tar.gz
|
||||
|
|
|
@ -1,7 +1,10 @@
|
|||
From d5d95a6501682b870a8981f0ad129fa345bbda74 Mon Sep 17 00:00:00 2001
|
||||
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>
|
||||
|
@ -20,18 +23,18 @@ Signed-off-by: Andrea Arcangeli <aarcange@redhat.com>
|
|||
src/post.c | 7 ++++---
|
||||
2 files changed, 8 insertions(+), 6 deletions(-)
|
||||
|
||||
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||
(cherry picked from commit 4fee214c41b11b72b3427fda18e9eac1ee647746)
|
||||
(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 0770c47..0804d57 100644
|
||||
index fba4e52d..090d6555 100644
|
||||
--- a/src/fw/paravirt.c
|
||||
+++ b/src/fw/paravirt.c
|
||||
@@ -492,9 +492,10 @@ qemu_cfg_e820(void)
|
||||
@@ -516,9 +516,10 @@ qemu_cfg_e820(void)
|
||||
}
|
||||
|
||||
// Check for memory over 4Gig in cmos
|
||||
|
@ -46,7 +49,7 @@ index 0770c47..0804d57 100644
|
|||
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
|
||||
index 252e73a4..c4369f81 100644
|
||||
--- a/src/hw/rtc.h
|
||||
+++ b/src/hw/rtc.h
|
||||
@@ -41,9 +41,10 @@
|
||||
|
@ -64,5 +67,5 @@ index 252e73a..c4369f8 100644
|
|||
|
||||
// RTC register flags
|
||||
--
|
||||
1.8.3.1
|
||||
2.31.1
|
||||
|
||||
|
|
|
@ -1,7 +1,10 @@
|
|||
From 60858d89551b29bcfe595f60f9cb518e55a915fe Mon Sep 17 00:00:00 2001
|
||||
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
|
||||
|
@ -20,14 +23,15 @@ 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)
|
||||
|
||||
(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 f3b5ad9..2770ff7 100644
|
||||
index 730b6898..cb6fc03f 100644
|
||||
--- a/src/fw/smbios.c
|
||||
+++ b/src/fw/smbios.c
|
||||
@@ -174,8 +174,8 @@ smbios_init_type_0(void *start)
|
||||
|
@ -42,5 +46,5 @@ index f3b5ad9..2770ff7 100644
|
|||
p->bios_starting_address_segment = 0xe800;
|
||||
|
||||
--
|
||||
1.8.3.1
|
||||
2.31.1
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 1dfb44fecec3070163d66047815f3cbebabfceb6 Mon Sep 17 00:00:00 2001
|
||||
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
|
||||
|
@ -36,12 +36,15 @@ 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 e44e112..298a722 100644
|
||||
index e44e1120..298a7229 100644
|
||||
--- a/src/clock.c
|
||||
+++ b/src/clock.c
|
||||
@@ -309,7 +309,13 @@ handle_08(void)
|
||||
|
@ -60,5 +63,5 @@ index e44e112..298a722 100644
|
|||
pic_eoi1();
|
||||
}
|
||||
--
|
||||
1.8.3.1
|
||||
2.31.1
|
||||
|
||||
|
|
|
@ -1,44 +0,0 @@
|
|||
From 0a9f331cc723d5dfefb16022366d40db9491d555 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
|
||||
|
|
@ -1,124 +0,0 @@
|
|||
From 53b64698cdcba24ebcea482523196eb1e64c65aa 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
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
CONFIG_BUILD_VGABIOS=y
|
||||
CONFIG_DISPLAY_BOCHS=y
|
||||
CONFIG_VGA_PCI=y
|
|
@ -0,0 +1,3 @@
|
|||
CONFIG_BUILD_VGABIOS=y
|
||||
CONFIG_VGA_RAMFB=y
|
||||
CONFIG_VGA_PCI=n
|
|
@ -0,0 +1,72 @@
|
|||
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
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
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
|
||||
|
|
@ -0,0 +1,174 @@
|
|||
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
|
||||
|
|
@ -0,0 +1,159 @@
|
|||
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
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
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
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
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
|
||||
|
|
@ -1,18 +1,20 @@
|
|||
Name: seabios
|
||||
Version: 1.11.1
|
||||
Release: 3%{?dist}
|
||||
Version: 1.16.0
|
||||
Release: 4%{?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.11.1.tar.gz
|
||||
Source0: https://code.coreboot.org/p/seabios/downloads/get/seabios-1.16.0.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
|
||||
|
@ -20,8 +22,18 @@ 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
|
||||
Patch0005: 0005-redhat-reserve-more-memory-on-fseg.patch
|
||||
Patch0006: 0006-vgabios-Reorder-video-modes-to-work-around-a-Windows.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
|
||||
|
||||
BuildRequires: python3 iasl
|
||||
ExclusiveArch: x86_64 %{power64}
|
||||
|
@ -76,8 +88,12 @@ SeaVGABIOS is an open-source VGABIOS implementation.
|
|||
%patch0002 -p1
|
||||
%patch0003 -p1
|
||||
%patch0004 -p1
|
||||
%patch0005 -p1
|
||||
%patch0006 -p1
|
||||
%patch5 -p1
|
||||
%patch6 -p1
|
||||
%patch7 -p1
|
||||
%patch8 -p1
|
||||
%patch9 -p1
|
||||
%patch10 -p1
|
||||
|
||||
%build
|
||||
%ifarch x86_64
|
||||
|
@ -104,7 +120,7 @@ build_bios %{_sourcedir}/config.seabios-256k bios.bin bios-256k.bin
|
|||
|
||||
|
||||
# seavgabios
|
||||
%global vgaconfigs cirrus qxl stdvga virtio
|
||||
%global vgaconfigs cirrus qxl stdvga virtio ramfb bochs-display
|
||||
for config in %{vgaconfigs}; do
|
||||
build_bios %{_sourcedir}/config.vga.${config} \
|
||||
vgabios.bin vgabios-${config}.bin out/vgabios.bin
|
||||
|
@ -136,6 +152,72 @@ install -m 0644 binaries/vgabios*.bin $RPM_BUILD_ROOT%{_datadir}/seavgabios
|
|||
|
||||
|
||||
%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 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)
|
||||
|
||||
* 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
|
||||
(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
|
||||
(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
|
||||
|
||||
* 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
|
||||
|
||||
* 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 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)
|
||||
|
||||
* 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 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)
|
||||
|
||||
* 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))
|
||||
|
||||
* 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)
|
||||
|
||||
* Fri Dec 07 2018 Danilo C. L. de Paula <ddepaula@redhat.com> - 1.11.1-3.el8
|
||||
- Resolves: bz#1613465
|
||||
(Fix seabios package)
|
||||
|
|
Loading…
Reference in New Issue