IP Library Granted Patent US 10,521,365
Granted Patent B2
US 10,521,365 · App. 14/872,964 · Granted Dec 31, 2019

Emulated endpoint configuration

Inventors: Nafea Bshara (San Jose, CA); Adi Habusha (Moshav Alonei Abba, IL); Guy Nakibly (Kedumim, IL); Georgy Machulsky (San Jose, CA)
Assignee: Amazon Technologies, Inc.
G06F13/105G06F9/5077G06F13/24G06F13/4282G06F2213/0026G06F2213/0058
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,521,365
App. No.
14/872,964
Granted
Dec 31, 2019
Kind
B2
Abstract

Techniques for emulating a configuration space by a peripheral device may include receiving a configuration access request, determining that the configuration access request is for a configuration space other than a native configuration space of the peripheral device, and retrieving an emulated configuration from an emulated configuration space. The configuration access request can then be serviced by using the emulated configuration.

Claims (45)

1. A method for emulating a peripheral component interconnect (PCI) configuration space in a PCI device, the method comprising:

receiving, by a PCI core of the PCI device, a PCI configuration access request from a PCI root complex, wherein the PCI device is capable of being connected to and disconnected from a host computing system having a host processor, and wherein the PCI device includes a local processor, an emulated configuration space that is part of the PCI device, and a non-emulated native configuration space having a native configuration register associated with functionalities common to multiple peripheral devices;

sending, by the PCI core to a configuration management module of the PCI device, the PCI configuration access request;

determining, by the configuration management module of the PCI device, that the PCI configuration access request is for the emulated configuration space instead of the non-emulated native configuration space;

sending, by the configuration management module to an emulation module that is part of the PCI device, an interrupt request associated with the PCI configuration access request;

in response to the interrupt request, executing, by the emulation module of the PCI device, configuration space emulation software to retrieve an emulated configuration from the emulated configuration space of the PCI device; and

servicing the PCI configuration access request using the emulated configuration.

2. The method of claim 1 , wherein servicing the PCI configuration access request includes sending, to the PCI root complex, the emulated configuration when the PCI configuration access request is a configuration read request.

3. The method of claim 2 , wherein servicing the PCI configuration access request further includes modifying the emulated configuration.

4. The method of claim 1 , wherein servicing the PCI configuration access request includes updating the emulated configuration when the PCI configuration access request is a configuration write request.

5. The method of claim 1 , wherein the emulated configuration space includes emulated configurations for a plurality of PCI devices.

6. The method of claim 1 , wherein the emulated configuration space is stored in a DRAM.

7. The method of claim 1 , wherein the emulated configuration space is stored in a persistent memory.

8. The method of claim 1 , wherein the configuration space emulation software is executed in an isolated environment.

9. A peripheral device comprising:

a local processor;

an emulation component;

a bus interface core including a non-emulated native configuration space having a native configuration register associated with functionalities common to multiple peripheral devices; and

a configuration management component coupled to the bus interface core, the configuration management component configured to:

receive a configuration access request from the bus interface core;

determine whether the configuration access request is for the non-emulated native configuration space or for an emulated configuration space that is part of the peripheral device;

request the emulation component of the peripheral device to retrieve an emulated configuration from the emulated configuration space in response to determining that the configuration access request is for the emulated configuration space; and

service the configuration access request using the emulated configuration,

wherein the peripheral device is capable of being connected to and disconnected from a host computing system having a host processor.

10. The peripheral device of claim 9 , wherein the emulated configuration space includes emulated configurations for a plurality of peripheral devices.

11. The peripheral device of claim 9 , wherein the emulated configuration represents a physical function resource.

12. The peripheral device of claim 9 , wherein the emulated configuration represents a virtual function resource.

13. The peripheral device of claim 9 , wherein the emulated configuration is retrieved via execution of configuration emulation software running in an isolated environment.

14. The peripheral device of claim 9 , wherein the configuration management component includes a status register to track progress of the configuration access request, and wherein the status register is updated after completion of servicing the configuration access request.

15. The peripheral device of claim 9 , wherein the emulation component is coupled to a DRAM, and wherein the emulated configuration space is stored in the DRAM.

16. The peripheral device of claim 9 , wherein the emulation component is coupled to a persistent memory, and wherein the emulated configuration space is stored in the persistent memory.

17. The peripheral device of claim 9 , wherein the emulated configuration space is stored as a text file.

18. The peripheral device of claim 9 , wherein at least one of the emulation component, the bus interface core, and the configuration management component comprise an electronic circuit.

19. The peripheral device of claim 9 , wherein the peripheral device is implemented using a system-on-chip (SoC), an application-specific integrated circuit (ASIC), or a field-programmable gate array (FPGA).

20. A method for emulating a configuration space by a peripheral device, the method comprising:

receiving, by the peripheral device, a configuration access request, wherein the peripheral device is capable of being connected to and disconnected from a host computing system having a host processor, and wherein the peripheral device includes a local processor, an emulated configuration space that is part of the peripheral device, and a non-emulated native configuration space having a native configuration register associated with functionalities common to multiple peripheral devices;

determining, by the peripheral device, whether the configuration access request is for the non-emulated native configuration space or for the emulated configuration space;

determining, by the peripheral device, that the configuration access request is for the emulated configuration space;

retrieving, by the peripheral device, an emulated configuration from the emulated configuration space; and

servicing, by the peripheral device, the configuration access request using the emulated configuration.

21. The method of claim 20 , wherein the emulated configuration space includes emulated configurations for a plurality of peripheral device functions.

22. The method of claim 20 , wherein the emulated configuration represents a physical function resource.

23. The method of claim 20 , wherein the emulated configuration represents a virtual function resource.

24. The method of claim 20 , wherein servicing the configuration access request includes providing the emulated configuration to a source of the configuration access request.

25. The method of claim 20 , wherein servicing the configuration access request includes updating the emulated configuration.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 11, 2016
From: BSHARA, NAFEA; HABUSHA, ADI; NAKIBLY, GUY; MACHULSKY, GEORGY
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 039987/0699 →
Continuity (2)
Provisional Application 62059914 · Oct 5, 2014
Related Publication 20160098365A1 · Apr 7, 2016
Cited By (2)
US 12,282,380 US 12,657,137