IP Library › Granted Patent US 9,898,274
Granted Patent B2
US 9,898,274 · App. 14/987,074 · Granted Feb 20, 2018

Replacing an accelerator firmware image without operating system reboot

Inventors: Andre L. Albot (Austin, TX); Vishal C. Aslot (Austin, TX); Thomas V. Burks, III (Cedar Park, TX); John D. Dietel (Rochester, MN)
Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
G06F8/65G06F12/10G06F12/109G06F13/1668G06F13/24G06F13/4282G06F2212/657G06F2213/2424
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 9,898,274
App. No.
14/987,074
Granted
Feb 20, 2018
Kind
B2
Abstract

The present disclosure relates to updating a firmware image on a coherent hardware accelerator concurrently with executing operations on the coherent hardware accelerator. According to one embodiment, while executing accelerator-enabled operations on the coherent hardware accelerator, a system stores a firmware update package in a local memory on the coherent hardware accelerator. Once the firmware update package is stored in local memory on the coherent hardware accelerator, the system restarting the coherent hardware accelerator by pausing the execution of at least a first operation initiated on the coherent hardware accelerator and applying the firmware update package to the firmware image on the coherent hardware accelerator. Once the firmware update package is applied to the coherent hardware accelerator, the system resumes the operation on the coherent hardware accelerator.

Claims (43)

1. A computer-implemented method for updating a firmware image on a coherent hardware accelerator concurrently with executing operations on the coherent hardware accelerator, the computer-implemented method comprising:

while executing a set of operations on the coherent hardware accelerator, storing a firmware update package in a local memory on the coherent hardware accelerator;

restarting the coherent hardware accelerator by:

pausing the execution of at least a first operation initiated on the coherent hardware accelerator, and

applying the firmware update package to the firmware image on the coherent hardware accelerator; and

while resuming the paused operation on the coherent hardware accelerator, querying a configuration of the updated coherent hardware accelerator and making the configuration available to an operating system for discovery and use in one or more subsequent operations.

2. The computer-implemented method of claim 1 , wherein the set of operations comprises input/output (I/O) operations or instruction execution using one or more virtual memory addresses of the system memory.

3. The computer-implemented method of claim 1 , wherein pausing the first operation executing on the coherent hardware accelerator comprises saving at least one of:

one or more interrupt source numbers identifying the paused operation;

a range of memory mapped input/output (I/O) (MMIO) addresses associated with the paused operation;

a program counter associated with an instruction most recently executed by the paused operation; or

a most recently executed I/O command associated with the paused operation.

4. The computer-implemented method of claim 3 , wherein resuming the paused operation comprises restoring at least one of the one or more interrupt source numbers, the range of MMIO addresses associated with the operation, the program counter associated with an instruction most recently executed by the operation, or the most recently executed I/O command associated with the operation.

5. The computer-implemented method of claim 1 , further comprising:

after pausing the first operation executing on the coherent hardware accelerator, resuming the paused operation using a software algorithm executing on a processor other than the hardware accelerator.

6. The computer-implemented method of claim 1 , wherein the set of operations executing on the coherent hardware accelerator is paused in response to detecting a timeout condition relative to an expected response time from the coherent hardware accelerator when the set of operations attempts to transmit a command to the coherent hardware accelerator.

7. The computer-implemented method of claim 1 , wherein the set of operations executing on the coherent hardware accelerator is paused in response to detecting a reserved value when the set of operations queries the coherent hardware accelerator for a state of the coherent hardware accelerator.

8. The computer-implemented method of claim 1 , wherein the first operation is included in the set, wherein the set of operations comprises a set of accelerator-enabled operations, wherein pausing the first operation executing on the coherent hardware accelerator comprises saving at least one of:

one or more interrupt source numbers identifying the paused operation;

a range of memory mapped input/output (I/O) (MMIO) addresses associated with the paused operation;

a program counter associated with an instruction most recently executed by the paused operation; or

a most recently executed I/O command associated with the paused operation.

9. The computer-implemented method of claim 8 , wherein pausing the first operation executing on the coherent hardware accelerator comprises saving, in respective instances, each of:

the one or more interrupt source numbers identifying the paused operation;

the range of memory mapped input/output (I/O) (MMIO) addresses associated with the paused operation;

the program counter associated with the instruction most recently executed by the paused operation; and

the most recently executed I/O command associated with the paused operation.

10. The computer-implemented method of claim 9 , wherein resuming the paused operation comprises restoring: at least one of the one or more interrupt source numbers, the range of MMIO addresses associated with the paused operation, the program counter associated with an instruction most recently executed by the operation, or the most recently executed I/O command associated with the operation.

11. The computer-implemented method of claim 10 , wherein resuming the paused operation comprises restoring: at least one of the one or more interrupt source numbers, the range of MMIO addresses associated with the paused operation, the program counter associated with an instruction most recently executed by the operation, and the most recently executed I/O command associated with the operation.

12. The computer-implemented method of claim 11 , wherein the function further comprises:

after pausing the operation executing on the coherent hardware accelerator, resuming the paused operation using a software algorithm executing on a processor other than the hardware accelerator.

13. The computer-implemented method of claim 12 , wherein the set of operations executing on the coherent hardware accelerator is paused in response to at least one of:

detecting a timeout condition when the set of operations attempts to transmit a command to the coherent hardware accelerator; or

detecting a reserved value when the set of operations queries the coherent hardware accelerator for a state of the coherent hardware accelerator.

14. The computer-implemented method of claim 13 , wherein the set of operations executing on the coherent hardware accelerator is paused in response to, in respective instances, each of:

detecting the timeout condition when the set of operations attempts to transmit the command to the coherent hardware accelerator; and

detecting the reserved value when the set of operations queries the coherent hardware accelerator for the state of the coherent hardware accelerator.

15. The computer-implemented method of claim 14 , wherein the software algorithm executes on one or more computer processors executing the computer-readable program code, wherein the set of operations includes the one or more subsequent operations.

16. The computer-implemented method of claim 1 , wherein the set of operations comprises a set of accelerator-enabled operations.

17. The computer-implemented method of claim 1 , wherein pausing the first operation executing on the coherent hardware accelerator comprises saving one or more interrupt source numbers identifying the paused operation.

18. The computer-implemented method of claim 1 , wherein pausing the first operation executing on the coherent hardware accelerator comprises saving a range of memory mapped input/output (I/O) (MMIO) addresses associated with the paused operation.

19. The computer-implemented method of claim 1 , wherein pausing the first operation executing on the coherent hardware accelerator comprises saving a program counter associated with an instruction most recently executed by the paused operation.

20. The computer-implemented method of claim 1 , wherein pausing the first operation executing on the coherent hardware accelerator comprises saving a most recently executed I/O command associated with the paused operation.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 4, 2016
From: ALBOT, ANDRE L.; ASLOT, VISHAL C.; BURKS, THOMAS V., III; DIETAL, JOHN D.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 037401/0344 →
Continuity (2)
Continuation 14925768 · Oct 28, 2015
Related Publication 20170123780A1 · May 4, 2017