Cache boot-fail-wait to avoid romfile access after POST.
Memory allocated with malloc_tmp() can't be used after the POST phase. So, access boot-fail-wait in post phase and store it for the boot phase to use. This fixes the regression introduced by commit59d6ca52
. Signed-off-by: Kevin O'Connor <kevin@koconnor.net> Signed-off-by: Amos Kong <akong@redhat.com> (cherry picked from commit11a7234491
)
This commit is contained in:
parent
49b9c599b5
commit
d4f7d90f47
15
src/boot.c
15
src/boot.c
|
@ -228,6 +228,7 @@ int bootprio_find_usb(struct usbdevice_s *usbdev, int lun)
|
|||
* Boot setup
|
||||
****************************************************************/
|
||||
|
||||
static int BootRetryTime;
|
||||
static int CheckFloppySig = 1;
|
||||
|
||||
#define DEFAULT_PRIO 9999
|
||||
|
@ -264,6 +265,8 @@ boot_setup(void)
|
|||
}
|
||||
}
|
||||
|
||||
BootRetryTime = romfile_loadint("etc/boot-fail-wait", 60*1000);
|
||||
|
||||
loadBootOrder();
|
||||
}
|
||||
|
||||
|
@ -628,15 +631,15 @@ boot_rom(u32 vector)
|
|||
static void
|
||||
boot_fail(void)
|
||||
{
|
||||
u32 retrytime = romfile_loadint("etc/boot-fail-wait", 60*1000);
|
||||
if (retrytime == (u32)-1)
|
||||
if (BootRetryTime == (u32)-1)
|
||||
printf("No bootable device.\n");
|
||||
else
|
||||
printf("No bootable device. Retrying in %d seconds.\n", retrytime/1000);
|
||||
// Wait for 'retrytime' milliseconds and then reboot.
|
||||
u32 end = calc_future_timer(retrytime);
|
||||
printf("No bootable device. Retrying in %d seconds.\n"
|
||||
, BootRetryTime/1000);
|
||||
// Wait for 'BootRetryTime' milliseconds and then reboot.
|
||||
u32 end = calc_future_timer(BootRetryTime);
|
||||
for (;;) {
|
||||
if (retrytime != (u32)-1 && check_timer(end))
|
||||
if (BootRetryTime != (u32)-1 && check_timer(end))
|
||||
break;
|
||||
yield_toirq();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue