The UEFI specification states a watchdog should be armed for 5 minutes.
Stop this from resetting a system when in efiboot.

Index: amd64/stand/efiboot/efiboot.c
===================================================================
RCS file: /cvs/src/sys/arch/amd64/stand/efiboot/efiboot.c,v
retrieving revision 1.28
diff -u -p -r1.28 efiboot.c
--- amd64/stand/efiboot/efiboot.c       25 Nov 2017 19:02:07 -0000      1.28
+++ amd64/stand/efiboot/efiboot.c       11 Feb 2018 05:25:11 -0000
@@ -81,6 +81,9 @@ efi_main(EFI_HANDLE image, EFI_SYSTEM_TA
        RS = ST->RuntimeServices;
        IH = image;
 
+       /* disable reset by watchdog after 5 minutes */
+       EFI_CALL(BS->SetWatchdogTimer, 0, 0, 0, NULL);
+
        efi_video_init();
        efi_heap_init();
 
Index: armv7/stand/efiboot/efiboot.c
===================================================================
RCS file: /cvs/src/sys/arch/armv7/stand/efiboot/efiboot.c,v
retrieving revision 1.19
diff -u -p -r1.19 efiboot.c
--- armv7/stand/efiboot/efiboot.c       21 Aug 2017 20:05:32 -0000      1.19
+++ armv7/stand/efiboot/efiboot.c       11 Feb 2018 05:25:11 -0000
@@ -71,6 +71,9 @@ efi_main(EFI_HANDLE image, EFI_SYSTEM_TA
        BS = ST->BootServices;
        IH = image;
 
+       /* disable reset by watchdog after 5 minutes */
+       EFI_CALL(BS->SetWatchdogTimer, 0, 0, 0, NULL);
+
        status = EFI_CALL(BS->HandleProtocol, image, &imgp_guid,
            (void **)&imgp);
        if (status == EFI_SUCCESS)
Index: arm64/stand/efiboot/efiboot.c
===================================================================
RCS file: /cvs/src/sys/arch/arm64/stand/efiboot/efiboot.c,v
retrieving revision 1.15
diff -u -p -r1.15 efiboot.c
--- arm64/stand/efiboot/efiboot.c       6 Feb 2018 20:35:21 -0000       1.15
+++ arm64/stand/efiboot/efiboot.c       11 Feb 2018 05:25:12 -0000
@@ -74,6 +74,9 @@ efi_main(EFI_HANDLE image, EFI_SYSTEM_TA
        BS = ST->BootServices;
        IH = image;
 
+       /* disable reset by watchdog after 5 minutes */
+       EFI_CALL(BS->SetWatchdogTimer, 0, 0, 0, NULL);
+
        status = EFI_CALL(BS->HandleProtocol, image, &imgp_guid,
            (void **)&imgp);
        if (status == EFI_SUCCESS)

Reply via email to