IP Library Granted Patent US 11,481,206
Granted Patent B2
US 11,481,206 · App. 16/532,277 · Granted Oct 25, 2022

Code update in system management mode

Inventors: Mallik Bulusu (Bellevue, WA); Muhammad A. Ahmed (Redmond, WA); Bryan D. Kelly (Carnation, WA); Ramakoti R. Bhimanadhuni (Bothell, WA); Pingfan Song (Newcastle, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F8/65G06F9/44589G06F9/45533G06F9/461G06F9/485G06F9/4812G06F2209/462
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,481,206
App. No.
16/532,277
Granted
Oct 25, 2022
Kind
B2
Abstract

A computing device is provided, including memory storing an instruction storage location. The computing device may further include a processor system including a plurality of processor threads. The processor system may suspend execution of one or more respective processor threads of the plurality of processor threads. The processor system may store one or more respective processor thread contexts of the one or more processor threads in the memory. The processor system may enter a system management mode (SMM). The processor system may determine that the instruction storage location includes a code update instruction. The processor system may perform a code update based on the code update instruction. The processor system may exit the SMM. The processor system may retrieve the one or more processor thread contexts from the memory and resume execution of the one or more processor threads without rebooting the computing device.

Claims (51)

1. A computing device comprising:

memory including a system management memory region; and

a processor system including a plurality of processor threads, wherein the processor system is configured to:

suspend execution of one or more processor threads of the plurality of processor threads;

store one or more respective processor thread contexts of the one or more processor threads in the memory;

enter a system management mode (SMM), wherein a monarch thread of the plurality of processor threads is designated when entering the SMM;

determine that the system management memory region includes a code update instruction at least in part by:

querying a lookup table indicating a respective location in the memory of each of a plurality of system management interrupt (SMI) handlers included in an SMI handler list, wherein each SMI handler of the SMI handler list includes respective SMI handler metadata, and wherein the respective SMI handler metadata includes a respective SMI reason indicating one or more predetermined conditions under which the SMI handler is configured to be executed;

determining, for each SMI handler, whether the respective SMI reason is satisfied based on the respective SMI handler metadata of the SMI handler; and

responsive to determining that the SMI reason is satisfied for a first subset of SMM threads and is not satisfied for a second subset of SMM threads, assigning the first subset of SMM threads to each SMI handler for which the SMI reason is satisfied, while not assigning the second subset of SMM threads to each SMI handler for which the SMI reason is not satisfied;

based on the assigned first subset of SMM threads and the unassigned second subset of SMM threads, perform a code update based on the code update instruction, wherein performing the code update includes:

modifying the SMI handler list with information about the assigned first subset of SMM threads; and

executing the plurality of SMI handlers in the modified SMI handler list, using the monarch thread and the one or more other allocated SMM threads;

exit the SMM;

retrieve the one or more processor thread contexts from the memory; and

resume execution of the one or more processor threads without rebooting the computing device.

2. The computing device of claim 1 , wherein the code update instruction is an instruction to:

add or remove a system management interrupt (SMI) handler;

reinitialize at least a part of a memory controller for the memory;

change a multithreading setting;

enable or disable a core of the processor system; or

modify a memory usage model.

3. The computing device of claim 1 , wherein the processor system is further configured to execute one or more virtual machines concurrently with the SMM.

4. The computing device of claim 1 , wherein the processor system is configured to modify the SMI handler list based on the code update instruction at least in part by adding, deleting, or overwriting one or more SMI handlers.

5. The computing device of claim 1 , wherein:

the SMI handler list includes an update query SMI handler; and

the processor system is configured to query the lookup table at least in part by executing the update query SMI handler.

6. The computing device of claim 1 , wherein the processor system is further configured to delete the code update instruction from the system management memory region subsequently to modifying the SMI handler list.

7. The computing device of claim 1 , wherein the processor system is configured to perform the code update in response to verifying a digital signature of the code update instruction.

8. A method for use with a computing device, the method comprising:

suspending execution of one or more processor threads of a plurality of processor threads executed by a processor system;

storing one or more respective processor thread contexts of the one or more processor threads in memory;

entering a system management mode (SMM), wherein a monarch thread of the plurality of processor threads is designated when entering the SMM;

determining that a system management memory region in the memory includes a code update instruction at least in part by:

querying a lookup table indicating a respective location in the memory of each of a plurality of system management interrupt (SMI) handlers included in an SMI handler list, wherein each SMI handler of the SMI handler list includes respective SMI handler metadata, and wherein the respective SMI handler metadata includes a respective SMI reason indicating one or more predetermined conditions under which the SMI handler is configured to be executed;

determining, for each SMI handler, whether the respective SMI reason is satisfied based on the respective SMI handler metadata of the SMI handler; and

responsive to determining that the SMI reason is satisfied for a first subset of SMM threads and is not satisfied for a second subset of SMM threads, assigning the first subset of SMM threads to each SMI handler for which the SMI reason is satisfied, while not assigning the second subset of SMM threads to each SMI handler for which the SMI reason is not satisfied;

based on the assigned first subset of SMM threads and the unassigned second subset of SMM threads, performing a code update based on the code update instruction, wherein performing the code update includes:

modifying the SMI handler list with information about the assigned first subset of SMM threads; and

executing the plurality of SMI handlers in the modified SMI handler list using the monarch thread and the one or more other allocated SMM threads;

exiting the SMM;

retrieving the one or more processor thread contexts from the memory; and

resuming execution of the one or more processor threads without rebooting the computing device.

9. The method of claim 8 , wherein the code update instruction is an instruction to:

add or remove a system management interrupt (SMI) handler;

reinitialize at least a part of the memory;

change a multithreading setting;

enable or disable a core of the processor system; or

modify a memory usage model.

10. The method of claim 8 , further comprising executing one or more virtual machines concurrently with the SMM.

11. The method of claim 8 , further comprising deleting the code update instruction from the system management memory region subsequently to modifying the SMI handler list.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 5, 2019
From: BULUSU, MALLIK; AHMED, MUHAMMAD A.; KELLY, BRYAN D.; BHIMANADHUNI, RAMAKOTI R.; SONG, PINGFAN
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 049962/0808 →
Continuity (2)
Provisional Application 62849092 · May 16, 2019
Related Publication 20200364041A1 · Nov 19, 2020