IP Library › Granted Patent US 7,752,360
Granted Patent B2
US 7,752,360 · App. 11/749,639 · Granted Jul 6, 2010

Method and system to map virtual PCIe I/O devices and resources to a standard I/O bus

Assignee: Nuova Systems, Inc.
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 7,752,360
App. No.
11/749,639
Granted
Jul 6, 2010
Kind
B2
Abstract

A method and system to map virtual I/O devices and resources to a standard I/O bus is provided. The system, in one example embodiment, comprises a virtual device detector, a resource allocator, and an activation module. The virtual device detector may be configured to detect an indication of a virtual Peripheral Component Interconnect Express (PCIe) device having an associated template. The resource allocator may allocate, based on the template, a plurality of resources required for the virtual PCIe device from a pool of available resources. The activation module may generate a set of entries in a resource mapping table, the set of entries corresponding to the allocated resources and defining the virtual PCIe device.

Claims (49)

1. A system comprising:

a virtual device detector to detect a virtual Peripheral Component Interconnect Express (PCIe) device;

a resource allocator to allocate, from a pool of available resources, a plurality of resources to the virtual PCIe device, the resource allocator being implemented in a module comprising hardware;

an activation module, to generate a set of entries in a resource mapping table, the set of entries corresponding to the allocated plurality of resources, the set of entries to define the virtual PCIe device; and

a device address mapper to map the virtual PCIe device to a resource address of an allocated resource of the plurality of resources by using:

a base address register (BAR) match table to store a base address of the virtual PCIe device;

the resource mapping table to store the set of entries, an entry of the set of entries including a scaling field; and

a variable address scaling (VAS) module to determine the resource address of the allocated resource based on the scaling field.

2. The system of claim 1 , wherein the scaling field is at least one of:

a mask size to preserve an address bit;

a shift amount to specify a number of bit positions; or

a shift direction to specify rightward or leftward bit shift.

3. The system of claim 2 , wherein the virtual PCIe device is a virtual Network Interface Card (vNIC).

4. The system of claim 1 , wherein the device address mapper is to:

receive a PCIe address that matches the base address of the virtual PCIe device; and

provide the resource address of the allocated resource.

5. The system of claim 4 , wherein the virtual PCIe device is to provide I/O memory mapping unit (IOMMU) control interface.

6. The system of claim 1 , wherein the pool of available resources comprises a plurality of direct memory access (DMA) transmit queues.

7. The system of claim 1 , wherein the virtual PCIe device is presented to a host server as a physical PCIe device associated with a particular BAR in a configuration space presented to the host system.

8. The system of claim 7 , wherein the BAR match table is a fully associative BAR match table to cache the particular BAR, the particular BAR being stored in a direct mapped storage structure.

9. The system of claim 7 , wherein the set of entries in the resource mapping table corresponds to the particular BAR in the configuration space presented to the host system.

10. The system of claim 1 , wherein the entry in the set of entries in the resource mapping table is to indicate a target control register in a physical address space associated with an adaptor to maintain the virtual PCIe device.

11. The system of claim 1 , wherein the resource allocator is to allocate the plurality of resources to the virtual PCIe device such that the allocated resources are for exclusive use by the virtual PCIe device.

12. A method comprising:

detecting a virtual Peripheral Component Interconnect Express (PCIe) device;

allocating, from a pool of available resources, a plurality of resources to the virtual PCIe device, the allocating being performed by a module comprising hardware;

generating a set of entries in a resource mapping table, the set of entries corresponding to the allocated plurality of resources, the set of entries to define the virtual PCIe device; and

mapping the virtual PCIe device to a resource address of an allocated resource of the plurality of resources by using:

a base address register (BAR) match table to store a base address of the virtual PCIe device;

the resource mapping table to store the set of entries, an entry of the set of entries including a scaling field; and

a variable address scaling (VAS) module to determine the resource address of the allocated resource based on the scaling field.

13. The method of claim 12 , wherein the scaling field is at least one of:

a mask size to preserve an address bit;

a shift amount to specify a number of bit positions; or

a shift direction to specify rightward or leftward bit shift.

14. The method of claim 12 , wherein the virtual PCIe device is a virtual Network Interface Card (vNIC).

15. The method of claim 12 , further comprising:

receiving a PCIe address that matches the base address of the virtual PCIe device; and

providing the resource address of the allocated resource.

16. The method of claim 15 , wherein the virtual PCIe device is to provide I/O memory mapping unit (IOMMU) control interface.

17. The method of claim 12 , wherein the pool of available resources comprises a plurality of direct memory access (DMA) transmit queues.

18. The method of claim 12 , comprising presenting the virtual PCIe device to a host server as a physical PCIe device associated with a particular BAR in a configuration space presented to the host system.

19. The method of claim 18 , including:

storing the particular BAR in the BAR match table; and wherein

the BAR match table is a direct mapped storage structure; and

the BAR match table is a fully associative BAR match table.

20. The method of claim 18 , wherein the set of entries in the resource mapping table corresponds to the particular BAR in the configuration space presented to the host system.

21. The method of claim 12 , wherein the entry in the set of entries in the resource mapping table is to indicate a target control register in a physical address space associated with an adaptor to maintain the virtual PCIe device.

22. The method of claim 12 , wherein the allocating of the plurality of resources comprises allocating the plurality of resources such that the allocated resources are for exclusive use by the virtual PCIe device.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 2, 2011
From: NUOVA SYSTEMS, INC.
To: CISCO TECHNOLOGY, INC.
Reel/Frame 027165/0432 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 12, 2007
From: GALLES, MICHAEL
To: NUOVA SYSTEMS, INC.
Reel/Frame 019553/0778 →
Continuity (1)
Related Publication 20080288661A1 · Nov 20, 2008