IP Library Granted Patent US 11,789,821
Granted Patent B1
US 11,789,821 · App. 17/733,463 · Granted Oct 17, 2023

Out-of-band method to change boot firmware configuration

Inventors: Neeraj Ladkani (Bothell, WA); Kuo-Shu Huang (Woodinville, WA); James George Cavalaris (Kirkland, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F11/1417G06F9/44505G06F11/079G06F11/0772G06F11/0784
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,789,821
App. No.
17/733,463
Granted
Oct 17, 2023
Kind
B1
Abstract

A computer system includes a baseboard management controller (BMC) configured to manage values of a plurality of variables stored in a flash via firmware. Managing the values of the plurality of variables includes generating a capsule containing a request for reading a value of a variable among the plurality of variables or overwriting the value of the variable with a new value. The capsule is then sent to the firmware, causing the firmware to access the flash to read the value of the variable or overwrite the value of the variable with the new value, and cause the value or the new value to be transmitted to the BMC. In response to receiving the value or new value of the variable, the BMC passes the value or the new value of the variable to a second computer system over an out-of-band network.

Claims (54)

1. A computer system comprising:

one or more processors;

a baseboard management controller (BMC); and

one or more computer-readable hardware storage devices having stored thereon computer-executable instructions including firmware that are structured such that, when the computer-executable instructions are executed by the one or more processors, the BMC is configured to manage values of a plurality of variables stored in a flash via the firmware, managing the values of the plurality of variables via the firmware comprising:

generating a capsule containing a request for reading a value of a variable among the plurality of variables or overwriting the value of the variable with a new value;

sending the capsule to firmware, causing the firmware to:

access the flash to parse a firmware file system stored thereon to identify a partition in the firmware file system that stores the values of the plurality of variables;

read the value of the variable among the plurality of variables or overwrite the value of the variable with the new value; and

in response to reading or overwriting the value of the variable, cause the value or the new value of the variable to be transmitted to the BMC;

receiving the value or the new value of the variable from the firmware; and

passing the value or the new value of the variable to a second computer system over an out-of-band network.

2. The computer system of claim 1 , wherein the BMC is configured to support a capsule service that allows the BMC to read or update data stored in the flash via the firmware.

3. The computer system of claim 1 , wherein the BMC is configured to:

receive a request for reading or writing the value of the variable from the second computer system over the out-of-band network.

4. The computer system of claim 3 , wherein the request is received when the computer system is turned off or cannot start up.

5. The computer system of claim 4 , wherein the BMC is further configured to:

detect an error associated with hardware or firmware of the computer system, the error preventing the computer system from starting up; and

in response to detecting the error, send an error report to the second computer system over the out-of-band network.

6. The computer system of claim 5 , wherein the error report contains the value of the variable.

7. The computer system of claim 1 , wherein the variable is a boot firmware configuration variable.

8. The computer system of claim 1 , wherein the variable is a unified extensible firmware interface (UEFI) boot firmware configuration variable, or basic input/output system (BIOS) firmware configuration variable.

9. The computer system of claim 1 , wherein:

reading or overwriting the value of the variable is based on one or more parameters associated with the variable; and

the one or more parameters include at least one of a name, a globally unique identifier (GUID), an offset, a length, or the new value of the variable.

10. The computer system of claim 9 , wherein the BMC is configured to receive the one or more parameters associated with the variable from the second computer system.

11. A method implemented in firmware of a computer system for allowing a baseboard management controller (BMC) to manage values of a plurality of variables stored in a flash, the method comprising:

generating a capsule containing a request for reading a value of a variable among the plurality of variables or overwriting the value of the variable with a new value;

sending the capsule to firmware, causing the firmware to:

access the flash to parse a firmware file system stored thereon to identify a partition in the firmware file system that stores the values of the plurality of variables;

read the value of the variable among the plurality of variables or overwrite the value of the variable with the new value; and

in response to reading or overwriting the value of the variable, cause the value or the new value of the variable to be transmitted to the BMC;

receiving the value or the new value of the variable; and

passing the value or the new value of the variable to a second computer system over an out-of-band network.

12. The method of claim 11 , wherein the BMC is configured to support a capsule service that allows the BMC to read or update data stored in the flash via the firmware.

13. The method of claim 12 , wherein the method further comprises:

receiving a request for reading or writing the value of the variable from the second computer system over the out-of-band network.

14. The method of claim 13 , wherein the request is received when the computer system is turned off or cannot start up.

15. The method of claim 14 , wherein the method further comprises:

detecting an error associated with hardware or firmware of the computer system, the error preventing the computer system from starting up; and

in response to detecting the error, sending an error report to the second computer system over the out-of-band network.

16. The method of claim 15 , wherein the error report contains the value of the variable.

17. The method of claim 11 , wherein the variable is a boot firmware configuration variable.

18. The method of claim 11 , wherein the variable is a unified extensible firmware interface (UEFI) boot firmware configuration variable, or basic input/output system (BIOS) firmware configuration variable.

19. The method of claim 11 , wherein:

reading or overwriting the value of the variable is based on one or more parameters associated with the variable; and

the one or more parameters include at least one of a name, a globally unique identifier (GUID), an offset, a length, or the new value of the variable.

20. A computer program product comprising one or more hardware storage devices having stored thereon computer-executable firmware instructions that are structured such that, when the computer-executable firmware instructions are executed by one or more processors of a computer system, the computer-executable firmware instructions cause a baseboard management controller (BMC) of the computer system to perform at least:

generate a capsule containing a request for reading a value of a variable among a plurality of variables or overwriting the value of the variable with a new value, values of the plurality of variables being stored in a flash;

send the capsule to a firmware, causing the firmware to:

access the flash to parse a firmware file system stored thereon to identify a partition in the firmware file system that stores the values of the plurality of variables;

read the value of the variable among the plurality of variables or overwrite the value of the variable with the new value; and

in response to reading or overwriting the value of the variable, cause the value of the variable to be transmitted to the BMC;

receive the value or the new value of the variable from the firmware; and

pass the value or the new value of the variable to a second computer system over an out-of-band network.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 5, 2022
From: LADKANI, NEERAJ; HUANG, KUO-SHU; CAVALARIS, JAMES GEORGE
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 059833/0703 →
Cited By (1)
US 12,498,942