IP Library › Granted Patent US 10,282,192
Granted Patent B1
US 10,282,192 · App. 15/946,566 · Granted May 7, 2019

Updating device code through a bus

Inventors: Hani Ayoub (Majd al-Krum, IL); Nafea Bshara (San Jose, CA); Matthew Shawn Wilson (Bainbridge Island, WA); Clint Joseph Sbisa (Seattle, WA); Barak Wasserstrom (Mitzpe Aviv, IL); Brian William Barrett (Seattle, WA); Ronen Shitrit (Kiryat Ata, IL); Anthony Nicholas Liguori (Bainbridge Island, WA)
Assignee: Amazon Technologies, Inc.
G06F8/65G06F13/4282
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 10,282,192
App. No.
15/946,566
Granted
May 7, 2019
Kind
B1
Abstract

Techniques for updating code of a device may be described. In an example, bus may connect the device to a management entity. The device may run a first version of the code. A second version of the code may be available from memory. The device may access the second version from the memory, stop running the first version of the code, and start running the second version of the code without restarting the management entity or the device.

Claims (55)

1. A device, comprising:

a processing entity; and

a memory storing computer-readable instructions that, upon execution with the processing entity, cause the device to:

run a first version of code, the first version stored in a first memory block of the device;

receive, over a bus, a request from a management entity to update the first version of the code to a second version of the code;

read the second version of the code from a second memory block of the device; and

without a restart of the device:

stop running the first version of the code from the first memory block,

start running the second version of the code using a sub-routine of the second version and using state data of the first version from a third memory block of the device, and

based on the running of the second version, update the state data in the third memory block and add variable values to a fourth memory block of the device.

2. The device of claim 1 , wherein the second memory block is mapped to a reserved memory block of the management entity based on a map associated with the bus.

3. The device of claim 2 , wherein the computer-readable instructions, upon execution with the processing entity, further cause the device to access the second memory block based on the request from the management entity, wherein the second memory block is accessed based on an address translation between the second memory block and the reserved memory block of the management entity, and wherein the address translation is based on the map.

4. The device of claim 1 , wherein the second memory block is mapped to another memory block on a network location that is accessible to the management entity.

5. The device of claim 1 , wherein the start running the second version of the code from the memory of the device comprises:

copying the second version of the code from the second memory block to a fifth memory block of the device; and

using the second version from the fifth memory block to execute the code.

6. The device of claim 1 , wherein the start running the second version of the code from the memory of the device comprises:

executing the second version of the code from the second memory block.

7. The device of claim 6 , wherein the start running the second version of the code from the memory of the device further comprises:

allocating the first memory block to receiving a next version of the code.

8. The device of claim 1 , wherein the computer-readable instructions, upon execution with the processing entity, further cause the device to copy a chunk of the second version from the second memory block to a fifth memory block of the device prior to the stop running the first version of the code.

9. The device of claim 8 , wherein the computer-readable instructions, upon execution with the processing entity, further cause the device to:

switch to a higher and independent privilege mode in the processing entity prior to copying a next chunk of the second version; and

copy the next chunk of the second version from the second memory block to the fifth memory block based on an interrupt being handled.

10. The device of claim 1 , wherein the second memory block comprises a first portion and a second portion, wherein the first portion comprises the second version of the code, and wherein the computer-readable instructions, upon execution with the processing entity, further cause the device to:

store update information indicating a progress of a switch from the first version of the code to the second version of the code, wherein the second portion is accessible to the management entity.

11. The device of claim 1 , wherein the second memory block is mapped to a block of a memory of the management entity, and wherein the request from the management entity indicates that the second version of the code is available from a buffer of the block of the memory of the management entity.

12. The device of claim 11 , wherein the buffer comprises update information, and wherein the request from the management entity instructs the device to access the update information and determine that the second version of the code is available based on the update information.

13. A computer-implemented method, comprising:

running a first version of code, the first version stored in a first memory block of a device that is communicatively coupled with a management entity over a bus;

receiving, over the bus, a request from the management entity to update the first version of the code to a second version of the code;

reading the second version of the code from a second memory block of the device; and

without a restart of the device:

stopping the running of the first version of the code from the first memory block,

starting running the second version of the code using a sub-routine of the second version and using state data of the first version from a third memory block of the device, and

based on the running of the second version, updating the state data in the third memory block and adding variable values to a fourth memory block of the device.

14. The computer-implemented method of claim 13 , further comprising copying the second version of the code from the second memory block to a fifth memory block of the device, wherein the second version of the code is run from the fifth memory block.

15. The computer-implemented method of claim 14 , wherein copying the second version of the code from the second memory block to a fifth memory block of the device comprises:

copying a first portion of the second version of the code to the fifth memory block;

detecting an interrupt;

handling the interrupt; and

copying a second portion of the second version of the code to the fifth memory block after the interrupt is handled.

16. The computer-implemented method of claim 15 , further comprising: determining a size of the first portion of the second version of the code prior to the copying of the first portion, wherein the size is determined based on a speed of update of the code.

17. A system, comprising:

a device with a device memory storing computer-readable instructions, wherein the device, based on executing the computer-readable instructions, performs operations comprising:

running a first version of code, the first version stored in a first memory block of the device;

receiving, over a bus, a request from a management entity to update the first version of the code to a second version of the code;

reading the second version of the code from a second memory block of the device; and

without a restart of the device:

stopping the running of the first version of the code from the first memory block,

starting running the second version of the code using a sub-routine of the second version and using state data of the first version from a third memory block of the device, and

based on the running of the second version, updating the state data in the third memory block and adding variable values to a fourth memory block of the device.

18. The system of claim 17 , wherein the request from the management entity comprises a read transaction or a write transaction associated with a predefined location, wherein the predefined location indicates a portion of the second memory block, and wherein the portion comprises update information about the second version of the code.

19. The system of claim 17 , wherein the state data stored in the third memory block of the device does not change between stopping running the first version and starting running the second version.

20. The system of claim 17 , wherein the bus is a peripheral component interconnect express (PCIe) bus, and wherein the code is firmware.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 5, 2018
From: AYOUB, HANI; BSHARA, NAFEA; WILSON, MATTHEW SHAWN; SBISA, CLINT JOSEPH; WASSERSTROM, BARAK; BARRETT, BRIAN WILLIAM; SHITRIT, RONEN; LIGUORI, ANTHONY NICHOLAS
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 045452/0465 →
Continuity (1)
Continuation 14983459 · Dec 29, 2015
Cited By (2)
US 12,547,561 US 12,675,299