Firmware store for updates in an information handling system
This disclosure describes systems and methods for performing an update or multiple updates to firmware on an information handling system in a single reboot cycle. According to some aspects of the disclosure, firmware updates may be stored in a boot partition. During reboot, an information handling system may determine whether a firmware update is present in the boot partition, and when a firmware update is present performing the update. According to some aspects of the disclosure, performing the update may include creating a firmware update hand-off block (HOB), which may correspond to the firmware update and identify where the update is stored in the boot partition.
1 . A method, comprising:
determining, by an information handling system, at least two firmware updates are present in a boot partition of a storage device at reboot;
executing, by the information handling system, the at least two firmware updates present in the boot partition, wherein executing the at least two firmware updates comprises:
creating a firmware update hand-off block indicating a memory location of the at least two firmware updates during pre-EFI initialization during the reboot, wherein the firmware update hand-off block comprises, for each of the at least two firmware updates, an indicator of a globally unique identifier (GUID) offset and a capsule payload such that a second capsule payload is arranged sequentially after a first capsule payload at a second GUID offset;
and passing the firmware update hand-off block (HOB) from the pre-EFI initialization to a driver execution environment (DXE) foundation.
2 . The method of claim 1 , wherein determining the at least two firmware updates are present in the boot partition comprises reading the boot partition without initializing queues or enabling a controller of the storage device.
3 . The method of claim 2 , wherein the boot partition comprises a non-volatile memory express (NVMe) boot partition and executing the at least two firmware updates comprises reading the at least two firmware updates from a continuous block of data via NVMe properties.
4 . The method of claim 1 , wherein the at least two firmware updates comprises a basic input output system (BIOS) recovery image.
5 . An information handling system, comprising:
a memory;
a processor coupled to the memory, wherein the processor is configured to perform steps comprising:
determining, by an information handling system, whether at least is two firmware updates are present in a boot partition of a storage device at reboot;
when the at least two firmware updates are present in the boot partition, executing, by the information handling system, the at least two firmware updates, wherein executing the at least two firmware updates comprises:
creating a firmware update hand-off block indicating a memory location of the at least two firmware updates during pre-EFI initialization during the reboot, wherein the hand-off block comprises, for each of the at least two firmware updates, an indicator of a globally unique identifier (GUID) offset and a capsule payload such that a second capsule payload is arranged sequentially after a first capsule payload at a second GUID offset; and
passing the firmware update hand-off block (HOB) from the pre-EFI initialization to a driver execution environment (DXE) foundation.
6 . The information handling system of claim 5 , wherein determining whether the at least two firmware updates are present comprises reading the boot partition without initializing queues or enabling a controller of the storage device.
7 . The information handling system of claim 6 , wherein the boot partition comprises a non-volatile memory express (NVMe) boot partition and executing the at least two firmware updates comprises reading the at least two firmware updates from a continuous block of data via NVMe properties.
8 . The information handling system of claim 5 , wherein the at least two firmware updates comprises a basic input output system (BIOS) recovery image.
9 . A computer program product, comprising:
a non-transitory computer readable medium comprising code for performing steps comprising:
determining, by an information handling system, whether at least two firmware updates are present in a boot partition of a storage device at reboot;
when the at least two firmware updates are present in the boot partition, executing, by the information handling system, the at least two firmware updates, wherein executing the at least two firmware updates comprises; and
creating a firmware update hand-off block indicating a memory location of the at least two firmware updates during pre-EFI initialization during the reboot, wherein the hand-off block comprises, for each of the at least two firmware updates, an indicator of a globally unique identifier (GUID) offset and a capsule payload such that a second capsule payload is arranged sequentially after a first capsule payload at a second GUID offset;
passing the firmware update hand-off block (HOB) from the pre-EFI initialization to a driver execution environment (DXE) foundation.
10 . The computer program product of claim 9 , wherein determining whether the at least two firmware updates are present comprises reading the boot partition without initializing queues or enabling a controller of the storage device.
11 . The computer program product of claim 10 , wherein the boot partition comprises non-volatile memory express (NVMe) boot partition and executing the at least two firmware updates comprises reading the at least two firmware updates from a continuous block of data via NVMe properties.