IP Library › Granted Patent US 11,385,903
Granted Patent B2
US 11,385,903 · App. 16/874,276 · Granted Jul 12, 2022

Firmware update patch

Inventors: Daini Xie (Redmond, WA); Thirupathaiah Annapureddy (Redmond, WA); Mallik Bulusu (Bellevue, WA); Muhammad Ashfaq Ahmed (Redmond, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F9/4406G06F8/654G06F9/4411G06F9/544G06F21/572G06F21/64G06F2221/0751
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,385,903
App. No.
16/874,276
Filed
May 14, 2020
Granted
Jul 12, 2022
Kind
B2
Art Unit
2187
USPC
713/2
Abstract

A computing system is provided, including a processor and memory storing instructions that, when executed, cause the processor to store a firmware update patch in a runtime buffer included in the memory. The runtime buffer may be accessible by firmware and an operating system of the computing system. The processor may perform a first verification check on the firmware update patch. When the firmware update patch passes the first verification check, the processor may copy the firmware update patch to a system management random access memory (SMRAM) buffer included in the memory. The SMRAM buffer may be accessible by the firmware and inaccessible by the operating system. The processor may perform a second verification check on the copy of the firmware update patch. When the copy of the firmware update patch passes the second verification check, the processor may execute the copy of the firmware update patch.

Claims (64)

1. A computing system comprising:

a processor; and

memory storing instructions that, when executed, cause the processor to:

store a firmware update patch in a runtime buffer included in the memory, wherein the runtime buffer is accessible by firmware and an operating system of the computing system, the firmware update patch being an update to a driver having a primary globally unique identifier (GUID);

perform a first verification check on the firmware update patch stored in the runtime buffer;

when the firmware update patch passes the first verification check, copy the firmware update patch to a system management random access memory (SMRAM) buffer included in the memory, wherein the SMRAM buffer is accessible by the firmware and inaccessible by the operating system;

perform a second verification check on the copy of the firmware update patch stored in the SMRAM buffer;

assign a staging GUID to the copy of the firmware update patch stored in the SMRAM buffer;

when the copy of the firmware update patch passes the second verification check, execute the copy of the firmware update patch to update the driver and reassign the primary GUID to the updated driver.

2. The computing system of claim 1 , wherein the firmware update patch is a Unified Extensible Framework Interface (UEFI) runtime patch (URP) capsule including a firmware volume, a URP capsule manifest header, a platform public key, and a patch signature.

3. The computing system of claim 2 , wherein:

the first verification check is performed on at least the platform public key; and

the second verification check is performed on at least a copy of the platform public key included in the copy of the firmware update patch.

4. The computing system of claim 2 , wherein:

the first verification check is performed on at least the patch signature; and

the second verification check is performed on at least a copy of the patch signature included in the copy of the firmware update patch.

5. The computing system of claim 1 , wherein the memory further stores instructions that, when executed, cause the processor to store a firmware patch version indicator in the memory.

6. The computing system of claim 5 , wherein:

the first verification check is further performed on the firmware patch version indicator; and

the instructions, when executed, cause the processor to determine that the firmware update patch passes the first verification check at least in part by determining that a firmware version indicated by the firmware patch version indicator is more recent than a currently installed firmware version.

7. The computing system of claim 1 , wherein:

at least one of the first verification check and the second verification check includes a determination of an available capacity of the SMRAM buffer; and

the instructions, when executed, cause the processor to determine that the firmware update patch passes the at least one of the first verification check and the second verification check at least in part by determining that the available capacity of the SMRAM buffer is larger than a file size of the firmware update patch.

8. The computing system of claim 1 , wherein the firmware update patch is an update to a system management mode (SMM) driver having the primary globally unique identifier (GUID).

9. The computing system of claim 8 , wherein:

the first verification check, the copying of the firmware update patch to the SMRAM buffer, and the second verification check are performed at an SMM core; and

the memory further stores instructions that, when executed, cause the processor to execute an SMM helper configured to apply the copy of the firmware update patch to the SMM core to obtain an updated SMM core.

10. The computing system of claim 9 , wherein the SMM helper is configured to:

assign the staging GUID to the copy of the firmware update patch stored in the SMRAM buffer; and

subsequently to applying the copy of the firmware update patch to the SMM core, reassign the primary GUID to the updated SMM core.

11. The computing system of claim 1 , wherein the copy of the firmware update patch is executed in a runtime system management mode (SMM) without rebooting the computing system.

12. A method for use with a computing system, the method comprising:

storing a firmware update patch in a runtime buffer included in memory, wherein the runtime buffer is accessible by firmware and an operating system of the computing system, the firmware update patch being an update to a driver having a primary globally unique identifier (GUID);

performing a first verification check on the firmware update patch stored in the runtime buffer;

when the firmware update patch passes the first verification check, copying the firmware update patch to a system management random access memory (SMRAM) buffer included in the memory, wherein the SMRAM buffer is accessible by the firmware and inaccessible by the operating system;

performing a second verification check on the copy of the firmware update patch stored in the SMRAM buffer; and

assigning a staging GUID to the copy of the firmware update patch stored in the SMRAM buffer;

when the copy of the firmware update patch passes the second verification check, executing the copy of the firmware update patch to update the driver and reassign the primary GUID to the updated driver.

13. The method of claim 12 , wherein the firmware update patch is a Unified Extensible Framework Interface (UEFI) runtime patch (URP) capsule including a firmware volume, a URP capsule manifest header, a platform public key, and a patch signature.

14. The method of claim 13 , wherein:

the first verification check is performed on at least the platform public key; and

the second verification check is performed on at least a copy of the platform public key included in the copy of the firmware update patch.

15. The method of claim 13 , wherein:

the first verification check is performed on at least the patch signature; and

the second verification check is performed on at least a copy of the patch signature included in the copy of the firmware update patch.

16. The method of claim 12 , further comprising storing a firmware patch version indicator in the memory, wherein:

the first verification check is further performed on the firmware patch version indicator; and

determining that the firmware update patch passes the first verification check includes determining that a firmware version indicated by the firmware patch version indicator is more recent than a currently installed firmware version.

17. The method of claim 12 , wherein the firmware update patch is an update to a system management mode (SMM) driver having the primary globally unique identifier (GUID).

18. The method of claim 17 , wherein:

the first verification check, the copying of the firmware update patch to the SMRAM buffer, and the second verification check are performed at an SMM core; and

the method further comprises executing an SMM helper configured to apply the copy of the firmware update patch to the SMM core to obtain an updated SMM core.

19. The method of claim 18 , wherein executing the SMM helper includes:

assigning the staging GUID to the copy of the firmware update patch stored in the SMRAM buffer; and

subsequently to applying the copy of the firmware update patch to the SMM core, reassigning the primary GUID to the updated SMM core.

20. A computing system comprising:

a processor; and

memory storing instructions that, when executed, cause the processor to:

store a firmware update patch in a runtime buffer included in the memory, wherein the runtime buffer is accessible by firmware and an operating system of the computing system;

at a system management mode (SMM) core having a primary globally unique identifier (GUID), copy the firmware update patch to a system management random access memory (SMRAM) buffer included in the memory, wherein the SMRAM buffer is accessible by the firmware and inaccessible by the operating system; and

execute the copy of the firmware update patch, wherein executing the copy of the firmware update patch includes, at an SMM helper:

assigning a staging GUID to the copy of the firmware update patch stored in the SMRAM buffer;

applying the copy of the firmware update patch to the SMM core to obtain an updated SMM core; and

reassigning the primary GUID to the updated SMM core.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 17, 2020
From: XIE, DAINI; ANNAPUREDDY, THIRUPATHAIAH; BULUSU, MALLIK; AHMED, MUHAMMAD ASHFAQ
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 054394/0628 →
Continuity (2)
Provisional Application 62970030 · Feb 4, 2020
Related Publication 20210240489A1 · Aug 5, 2021
Cited By (2)
US 12,279,020 US 12,461,735