IP Library Granted Patent US 11,803,445
Granted Patent B2
US 11,803,445 · App. 17/577,714 · Granted Oct 31, 2023

Boot failure protection on smartNICs and other computing devices

Inventors: Andrei Warkentin (South Elgin, IL); Jared McNeill (Quispamsis, CA); Sunil Kotian (San Jose, CA); Alexander Fainkichen (Southborough, MA); Shruthi Hiriyuru (Medford, MA)
Assignee: VMWARE, INC.
G06F11/1417G06F9/45541G06F11/0757G06F11/1441G06F11/1484
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,803,445
App. No.
17/577,714
Granted
Oct 31, 2023
Kind
B2
Abstract

Boot failure protection on smartNICs and other computing devices is described. During a power-on stage of a booting process for a computing device, a boot loading environment is directed to install an application programming interface (API) able to be invoked to control operation of a hardware-implemented watchdog. During an operating system loading stage of the booting process, the application programming interface is invoked to enable the hardware-implemented watchdog. During an operating system hand-off stage of the booting process, a last watchdog refresh of the hardware-implemented watchdog is performed, and execution of the boot loading environment is handed off to a kernel boot loader of an operating system. The application programming interface may not be accessible after the hand off to the kernel boot loader.

Claims (59)

1. A system for boot failure protection, comprising:

at least one computing device comprising a hardware-implemented watchdog and at least one hardware processor; and

program instructions stored in memory and executable by the at least one computing device that, when executed by the at least one hardware processor, direct the at least one computing device to:

during a power-on stage of a booting process for the at least one computing device, direct a boot loading environment to install an application programming interface (API) able to be invoked to control operation of the hardware-implemented watchdog, wherein the API comprises a first portion code configured to control operation of the hardware-implemented watchdog based on a type of the at least one computing device, a second portion code configured to control operation of another hardware-implemented watchdog based on other types of computing devices, and the first portion of code and the second portion of code are included in a single image of a bare-metal hypervisor executable on the at least one computing device;

during an operating system loading stage of the booting process, invoke the application programming interface to enable the hardware-implemented watchdog; and

during an operating system hand-off stage of the booting process, perform a last watchdog refresh of the hardware-implemented watchdog and hand off execution of the boot loading environment to a kernel boot loader of an operating system, wherein the application programming interface is not accessible after the hand off to the kernel boot loader.

2. The system of claim 1 , wherein the at least one computing device is further directed to:

invoke the application programming interface through an application programming interface call to perform at least one of: enable the hardware-implemented watchdog; disable the hardware-implemented watchdog; access a type of the hardware-implemented watchdog; access a physical memory address for the hardware-implemented watchdog; identify a minimum countdown period in which the hardware-implemented watchdog is capable of being configured; and identify a maximum countdown period in which the hardware-implemented watchdog is capable of being configured.

3. The system of claim 1 , wherein:

the booting process comprises loading operating system components into random-access memory (RAM) of the at least one computing device;

the boot loading environment is a Unified Extensible Firmware Interface (UEFI) boot loading environment; and

the application programming interface is installed by storing a driver in a directory that directs the UEFI boot loading environment to install the driver during the power-on stage of the booting of the at least one computing device.

4. The system of claim 1 , wherein the boot loading environment is a Unified Extensible Firmware Interface (UEFI) boot loading environment.

5. The system of claim 1 , wherein the at least one computing device is further directed to execute a first stage boot loader, the first stage boot loader being a UEFI applicable executed in the UEFI boot loading environment; and

wherein the first stage boot loader invokes the application programming interface to enable the hardware-implemented watchdog.

6. The system of claim 1 , wherein:

the at least one computing device is at least one smart network interface card (smartNIC); and

the program instructions are at least a portion of firmware of the at least one computing device stored in non-volatile memory.

7. The system of claim 1 , wherein:

the hardware-implemented watchdog is configured to send a reset signal when a first predetermined amount of time elapses without receipt of a first refresh signal;

the reset signal directs the at least one computing device to enter into a safe mode or perform a device reset; and

the hardware-implemented watchdog is initialized using a second predetermined amount of time, the second predetermined amount of time being greater than the first predetermined amount of time.

8. A computer-implemented method for boot failure protection, comprising:

during a power-on stage of a booting process for at least one computing device, installing, by a boot loading environment, an application programming interface (API) able to be invoked to control operation of a hardware-implemented watchdog of the at least one computing device, wherein the API comprises a first portion code configured to control operation of the hardware-implemented watchdog based on a type of the at least one computing device, a second portion code configured to control operation of another hardware-implemented watchdog based on other types of computing devices, and the first portion of code and the second portion of code are included in a single image of a bare-metal hypervisor executable on the at least one computing device;

during an operating system loading stage of the booting process, invoking, by a first stage boot loader, the application programming interface to enable the hardware-implemented watchdog; and

during an operating system hand-off stage of the booting process, performing, by the boot loading environment, a last watchdog refresh of the hardware-implemented watchdog and hand off execution of the boot loading environment to a kernel boot loader of an operating system, wherein the application programming interface is not accessible after the hand off to the kernel boot loader.

9. The computer-implemented method of claim 8 , further comprising performing at least one of:

invoking the application programming interface through an application programming interface call to perform at least one of: enable the hardware-implemented watchdog; disabling the hardware-implemented watchdog; access a type of the hardware-implemented watchdog; accessing a physical memory address for the hardware-implemented watchdog; identifying a minimum countdown period in which the hardware-implemented watchdog is capable of being configured; and identifying a maximum countdown period in which the hardware-implemented watchdog is capable of being configured.

10. The computer-implemented method of claim 8 , wherein:

the booting process comprises loading operating system components into random-access memory (RAM) of the at least one computing device;

the boot loading environment is a Unified Extensible Firmware Interface (UEFI) boot loading environment; and

the computer-implemented method further comprises installing the application programming interface by storing a driver in a directory that directs the UEFI boot loading environment to install the driver during the power-on stage of the booting of the at least one computing device.

11. The computer-implemented method of claim 8 , the boot loading environment is a Unified Extensible Firmware Interface (UEFI) boot loading environment.

12. The computer-implemented method of claim 8 , wherein the first stage boot loader is a UEFI applicable executed in the UEFI boot loading environment.

13. The computer-implemented method of claim 8 , wherein:

the at least one computing device is at least one smart network interface card (smartNIC); and

the computer-implemented method is performed via execution of program instructions are at least a portion of firmware of the at least one computing device stored in non-volatile memory.

14. The computer-implemented method of claim 8 , wherein:

the hardware-implemented watchdog is configured to send a reset signal when a first predetermined amount of time elapses without receipt of a first refresh signal;

the reset signal directs the at least one computing device to enter into a safe mode or perform a device reset; and

the hardware-implemented watchdog is initialized using a second predetermined amount of time, the second predetermined amount of time being greater than the first predetermined amount of time.

15. A non-transitory computer-readable medium having program instructions stored thereon executable by at least one computing device having at least one hardware processor that, when executed by the at least one computing device, direct the at least one computing device to:

during a power-on stage of a booting process for the at least one computing device, direct a boot loading environment to install an application programming interface (API) able to be invoked to control operation of a hardware-implemented watchdog;

during an operating system loading stage of the booting process, invoke the application programming interface to enable the hardware-implemented watchdog, wherein the hardware-implemented watchdog is configured to send a reset signal when a first predetermined amount of time elapses without receipt of a first refresh signal, the reset signal directs the at least one computing device to enter into a safe mode or perform a device reset, and the hardware-implemented watchdog is initialized using a second predetermined amount of time, the second predetermined amount of time being greater than the first predetermined amount of time; and

during an operating system hand-off stage of the booting process, perform a last watchdog refresh of the hardware-implemented watchdog and hand off execution of the boot loading environment to a kernel boot loader of an operating system, wherein the application programming interface is not accessible after the hand off to the kernel boot loader.

16. The non-transitory computer-readable medium of claim 15 , wherein the at least one computing device is further directed to:

invoke the application programming interface through an application programming interface call to perform at least one of: enable the hardware-implemented watchdog; disable the hardware-implemented watchdog; access a type of the hardware-implemented watchdog; access a physical memory address for the hardware-implemented watchdog; identify a minimum countdown period in which the hardware-implemented watchdog is capable of being configured; and identify a maximum countdown period in which the hardware-implemented watchdog is capable of being configured.

17. The non-transitory computer-readable medium of claim 15 , wherein:

the booting process comprises loading operating system components into random-access memory (RAM) of the at least one computing device;

the boot loading environment is a Unified Extensible Firmware Interface (UEFI) boot loading environment; and

the application programming interface is installed by storing a driver in a directory that directs the UEFI boot loading environment to install the driver during the power-on stage of the booting of the at least one computing device.

18. The non-transitory computer-readable medium of claim 15 , wherein:

the application programming interface comprises a first portion code configured to control operation of the hardware-implemented watchdog based on a type of the at least one computing device;

the application programming interface comprises a second portion code configured to control operation of another hardware-implemented watchdog based on other types of computing devices;

the first portion of code and the second portion of code are included in a single image of a bare-metal hypervisor executable on the at least one computing device;

the at least one computing device is at least one smart network interface card (smartNIC); and

the program instructions are at least a portion of firmware of the at least one computing device stored in non-volatile memory.

19. The non-transitory computer-readable medium of claim 15 , wherein the at least one computing device is further directed to execute a first stage boot loader, the first stage boot loader being a UEFI applicable executed in the UEFI boot loading environment; wherein the first stage boot loader invokes the application programming interface to enable the hardware-implemented watchdog.

20. The non-transitory computer-readable medium of claim 15 , wherein the application programming interface is installed by storing a driver in a directory that directs the boot loading environment to install the driver during the power-on stage of the booting of the at least one computing device.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0395 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 18, 2022
From: WARKENTIN, ANDREI; MCNEILL, JARED; KOTIAN, SUNIL; FAINKICHEN, ALEXANDER; HIRIYURU, SHRUTHI
To: VMWARE, INC.
Reel/Frame 058678/0655 →
Continuity (1)
Related Publication 20230229558A1 · Jul 20, 2023