seabios to boot only from selected devices.
If user choose first boot device from menu, then seabios will try all
the devices, even some of them are not selected.
Signed-off-by: Amos Kong <address@hidden>
---
Resend for CCing seabios maillist.
---
src/boot.c | 13 ++++++++-----
1 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/src/boot.c b/src/boot.c
index 3ca7960..ee810ac 100644
--- a/src/boot.c
+++ b/src/boot.c
@@ -424,6 +424,10 @@ interactive_bootmenu(void)
maxmenu++;
printf("%d. %s\n", maxmenu
, strtcpy(desc, pos->description, ARRAY_SIZE(desc)));
+ /* If user chooses first boot device from menu, we will treat
+ all the devices as selected. */
+ if (pos->priority == DEFAULT_PRIO)
+ pos->priority = DEFAULT_PRIO - 1;
pos = pos->next;
}
@@ -490,7 +494,10 @@ boot_prep(void)
// Map drives and populate BEV list
struct bootentry_s *pos = BootList;
- while (pos) {
+
+ /* The priority of un-selected device is not changed,
+ we only boot from user selected devices. */
+ while (pos && pos->priority != DEFAULT_PRIO) {
switch (pos->type) {
case IPL_TYPE_BCV:
call_bcv(pos->vector.seg, pos->vector.offset);
@@ -513,10 +520,6 @@ boot_prep(void)
}
pos = pos->next;
}
-
- // If nothing added a floppy/hd boot - add it manually.
- add_bev(IPL_TYPE_FLOPPY, 0);
- add_bev(IPL_TYPE_HARDDISK, 0);
}
--
1.7.1