Add a config option for fast device init (i.e. skip non-bootable
devices). This optimization breaks boot in some rare configurations,
specifically in case the boot loader needs access to secondary disks.
Signed-off-by: Gerd Hoffmann <kraxel(a)redhat.com>
---
src/boot.c | 2 ++
src/Kconfig | 10 ++++++++++
2 files changed, 12 insertions(+)
diff --git a/src/boot.c b/src/boot.c
index 1effd802ce06..771d2382e38f 100644
--- a/src/boot.c
+++ b/src/boot.c
@@ -299,6 +299,8 @@ u8 …
[View More]is_bootprio_strict(void)
{
static int prio_halt = -2;
+ if (!CONFIG_BOOT_FAST_INIT)
+ return 0;
if (prio_halt == -2)
prio_halt = find_prio("HALT");
return prio_halt >= 0;
diff --git a/src/Kconfig b/src/Kconfig
index 3a8ffa15fded..6b750a41b42c 100644
--- a/src/Kconfig
+++ b/src/Kconfig
@@ -72,6 +72,16 @@ endchoice
help
Support controlling of the boot order via the fw_cfg/CBFS
"bootorder" file.
+ config BOOT_FAST_INIT
+ depends on BOOTORDER
+ bool "Fast boot device init"
+ default y
+ help
+ Skip initialization for devices without bootindex. Speeds
+ up boot and reduced memory footprint, but may cause boot
+ problems in case the bootloader needs access to secondary
+ disks.
+
config HOST_BIOS_GEOMETRY
depends on BOOT
bool "Boot device bios geometry override"
--
2.30.2
[View Less]
Hello,
I am experiencing problems with effective breakpoint setting at particular
addresses while debugging Seabios with GNU GDB. The problem is that placing
a breakpoint at an address (i.e.) *0xc3a8a, which belongs to vgabios
region, and specifying an ignore count say 5 should make the gdb stop at it
after it hits 5 times the address (on the 6th hit), but it never does - it
seems to ignore the "ignore count" and stop on the next crossing instead.
The same happens with some other addresses, …
[View More]like 0xf732a. What's more - the
output of "info b" command shows that ignore counter is not updated after a
hit. I suppose the reason for this misbehavior might be that those
addresses belong to regions that are read only - the 0xc3a8a is a vga rom
address and the 0xf732a lies somewhere in the rodata section. But if that
was the case, hardware breakpoints could work, but neither those can. This
is the example session showing the problem:
$ ./qemu-system-x86_64 -s -S -singlestep -machine type=q35 -m 4096 -bios
~/Pobrane/seabios_1.14.0.orig/seabios-1.14.0/out/bios.bin
$ $ gdb -q
(gdb) target remote localhost:1234
Remote debugging using localhost:1234
warning: No executable has been specified and target does not support
determining executable automatically. Try using the "file" command.
0x000000000000fff0 in ?? ()
(gdb) b *0xf732a
Breakpoint 1 at 0xf732a
(gdb) ignore 1 5
Will ignore next 5 crossings of breakpoint 1.
(gdb) c
Continuing.
Program received signal SIGTRAP, Trace/breakpoint trap.
0x000000000000732a in ?? ()
(gdb) info b
Num Type Disp Enb Address What
1 breakpoint keep y 0x00000000000f732a
ignore next 5 hits
(gdb) c
Continuing.
Program received signal SIGTRAP, Trace/breakpoint trap.
0x000000000000732a in ?? ()
(gdb) info b
Num Type Disp Enb Address What
1 breakpoint keep y 0x00000000000f732a
ignore next 5 hits
I am using qemu 5.2.0, GNU gdb (Ubuntu 9.2-0ubuntu2) 9.2, and SeaBIOS 1.14.0
Is it possible to set a bp on any of the mentioned addresses so that their
ignore counters are taken into account ?
[View Less]
There are plenty of coreboot platforms whose MPTABLE size is just
slightly larger than the current uneven limit of 600 bytes, which
prevents these important tables from being copied. For example, G505S
has 628 bytes and A88XM-E has 740 bytes. I propose 768 bytes as a new
saner default for MPTABLE size, to replace the current uneven limit of
600. SMBIOS size should be bumped the similar way as well.
Signed-off-by: Mike Banon <mikebdp2 at gmail.com>
---
diff --git a/src/config.h b/src/…
[View More]config.h
index 93c8dbc..71333f8 100644
--- a/src/config.h
+++ b/src/config.h
@@ -21,9 +21,9 @@
// 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
-#define BUILD_MAX_SMBIOS_FSEG 600
+#define BUILD_MAX_SMBIOS_FSEG 768
// Maximum number of bytes the mptable may be and still be copied to f-segment
-#define BUILD_MAX_MPTABLE_FSEG 600
+#define BUILD_MAX_MPTABLE_FSEG 768
#define BUILD_MODEL_ID 0xFC
#define BUILD_SUBMODEL_ID 0x00
[View Less]