mirror of
https://github.com/ipxe/ipxe
synced 2025-12-13 07:20:47 +03:00
[efi] Hold off watchdog timer while running
UEFI platforms may provide a watchdog timer, which will reboot the machine if an operating system takes more than five minutes to load. This can cause long-lived iPXE downloads (or interactive shell sessions) to unexpectedly reboot. Fix by resetting the watchdog timer every ten seconds while the iPXE main processing loop continues to run. Reported-by: Bradley B Williams <bradleybwilliams@swbell.net> Reported-by: John Clark <john.r.clark.3@gmail.com> Reported-by: wdriever@gmail.com Reported-by: Charlie Beima <cbeima@indiana.edu> Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
31
src/include/ipxe/efi/efi_watchdog.h
Normal file
31
src/include/ipxe/efi/efi_watchdog.h
Normal file
@@ -0,0 +1,31 @@
|
||||
#ifndef _IPXE_EFI_WATCHDOG_H
|
||||
#define _IPXE_EFI_WATCHDOG_H
|
||||
|
||||
/** @file
|
||||
*
|
||||
* EFI watchdog holdoff timer
|
||||
*/
|
||||
|
||||
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
||||
|
||||
extern struct retry_timer efi_watchdog;
|
||||
|
||||
/**
|
||||
* Start EFI watchdog holdoff timer
|
||||
*
|
||||
*/
|
||||
static inline void efi_watchdog_start ( void ) {
|
||||
|
||||
start_timer_nodelay ( &efi_watchdog );
|
||||
}
|
||||
|
||||
/**
|
||||
* Stop EFI watchdog holdoff timer
|
||||
*
|
||||
*/
|
||||
static inline void efi_watchdog_stop ( void ) {
|
||||
|
||||
stop_timer ( &efi_watchdog );
|
||||
}
|
||||
|
||||
#endif /* _IPXE_EFI_WATCHDOG_H */
|
||||
@@ -330,6 +330,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
||||
#define ERRFILE_efi_wrap ( ERRFILE_OTHER | 0x00460000 )
|
||||
#define ERRFILE_vmbus ( ERRFILE_OTHER | 0x00470000 )
|
||||
#define ERRFILE_efi_time ( ERRFILE_OTHER | 0x00480000 )
|
||||
#define ERRFILE_efi_watchdog ( ERRFILE_OTHER | 0x00490000 )
|
||||
|
||||
/** @} */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user