IP Library Granted Patent US 11,656,916
Granted Patent B2
US 11,656,916 · App. 17/361,932 · Granted May 23, 2023

High-performance input-output devices supporting scalable virtualization

Inventors: Utkarsh Y. Kakaiya (Folsom, CA); Rajesh Sankaran (Portland, OR); Sanjay Kumar (Hillsboro, OR); Kun Tian (Shanghai, CN); Philip Lantz (Cornelius, OR)
Assignee: Intel Corporation
G06F9/5077G06F9/5038G06F15/76H04L51/226G06F15/17H04L61/59H04L67/2885H04T2001/2093
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,656,916
App. No.
17/361,932
Granted
May 23, 2023
Kind
B2
Abstract

Techniques for scalable virtualization of an Input/Output (I/O) device are described. An electronic device composes a virtual device comprising one or more assignable interface (AI) instances of a plurality of AI instances of a hosting function exposed by the I/O device. The electronic device emulates device resources of the I/O device via the virtual device. The electronic device intercepts a request from the guest pertaining to the virtual device, and determines whether the request from the guest is a fast-path operation to be passed directly to one of the one or more AI instances of the I/O device or a slow-path operation that is to be at least partially serviced via software executed by the electronic device. For a slow-path operation, the electronic device services the request at least partially via the software executed by the electronic device.

Claims (30)

1. An apparatus comprising:

a plurality of backend resources; and

one or more physical function base address registers (PF-BARs) to store one or more base addresses of one or more address ranges to be mapped to a plurality of memory-mapped input/output (MMIO) registers, including a first MMIO register to be accessed for a direct-path operation and a second MMIO register to be accessed for an intercepted-path operation; wherein hardware is to provide guest physical address to host physical address translation for the first MMIO register but not for the second MMIO register;

access for the direct-path operation is to be mapped by a virtual machine monitor (VMM) to an interface for a virtual device, the interface to be composed of one or more of the plurality of backend resources and to be identified by a process address-space identifier (PASID); and

access for the intercepted-path operation is to be intercepted by the VMM for emulation.

2. The apparatus of claim 1 , wherein the one or more PF-BARs includes a plurality of variable size PF-BARs.

3. The apparatus of claim 1 , wherein the one or more PF-BARs includes a plurality of non-contiguous PF-BARs.

4. The apparatus of claim 1 , wherein the one or more PF-BARs include at least one Peripheral Component Interconnect Express (PCIe) base address register.

5. The apparatus of claim 1 , wherein the access for the intercepted-path operation is to be intercepted by the VMM for emulation of a configuration space of the virtual device.

6. The apparatus of claim 1 , wherein the plurality of backend resources includes at least one of a transmission/reception (Tx/Rx) queue, a command queue, a Field Programmable Gate Array (FPGA) context, a set of one or more processing units, a Graphics Processing Unit (GPU) context, and a general-purpose computing on graphics processing unit (GPGPU) context.

7. A method comprising:

storing, in one or more physical function base address registers (PF-BARs), one or more base addresses of one or more address ranges to be mapped to a plurality of memory-mapped input/output (MMIO) registers, including a first MMIO register to be accessed for a direct-path operation and a second MMIO register to be accessed for an intercepted-path operation;

performing, by hardware, guest physical address to host physical address translation for the first MMIO register but not for the second MMIO register;

mapping, by a virtual machine monitor (VMM), access for the direct-path operation to an interface for a virtual device, the interface to be composed of one or more of a plurality of backend resources and to be identified by a process address-space identifier (PASID); and

intercepting, by the VMM, access for the intercepted-path operation for emulation.

8. The method of claim 7 , wherein the one or more PF-BARs includes a plurality of variable size PF-BARs.

9. The method of claim 7 , wherein the one or more PF-BARs includes a plurality of non-contiguous PF-BARs.

10. The method of claim 7 , wherein the one or more PF-BARs include at least one Peripheral Component Interconnect Express (PCIe) base address register.

11. The method of claim 7 , wherein the access for the intercepted-path operation is to be intercepted by the VMM for emulation of a configuration space of the virtual device.

12. The method of claim 7 , wherein the plurality of backend resources includes at least one of a transmission/reception (Tx/Rx) queue, a command queue, a Field Programmable Gate Array (FPGA) context, a set of one or more processing units, a Graphics Processing Unit (GPU) context, and a general-purpose computing on graphics processing unit (GPGPU) context.

13. A non-transitory machine-readable medium storing instructions, which when executed by a machine, cause the machine to perform a method comprising:

storing, in one or more physical function base address registers (PF-BARs), one or more base addresses of one or more address ranges to be mapped to a plurality of memory-mapped input/output (MMIO) registers, including a first MMIO register to be accessed for a direct-path operation and a second MMIO register to be accessed for an intercepted-path operation;

performing, by hardware, guest physical address to host physical address translation for the first MMIO register but not for the second MMIO register;

mapping, by a virtual machine monitor (VMM), access for the direct-path operation to an interface for a virtual device, the interface to be composed of one or more of a plurality of backend resources and to be identified by a process address-space identifier (PASID); and

intercepting, by the VMM, access for the intercepted-path operation for emulation.

14. The non-transitory machine-readable medium of claim 13 , wherein the one or more PF-BARs includes a plurality of variable size PF-BARs.

15. The non-transitory machine-readable medium of claim 13 , wherein the one or more PF-BARs includes a plurality of non-contiguous PF-BARs.

16. The non-transitory machine-readable medium of claim 13 , wherein the one or more PF-BARs include at least one Peripheral Component Interconnect Express (PCIe) base address register.

17. The non-transitory machine-readable medium of claim 13 , wherein the access for the intercepted-path operation is to be intercepted by the VMM for emulation of a configuration space of the virtual device.

18. The non-transitory machine-readable medium of claim 13 , wherein the plurality of backend resources includes at least one of a transmission/reception (Tx/Rx) queue, a command queue, a Field Programmable Gate Array (FPGA) context, a set of one or more processing units, a Graphics Processing Unit (GPU) context, and a general-purpose computing on graphics processing unit (GPGPU) context.

Continuity (3)
Continuation 16351396 · Mar 12, 2019
Continuation 15584979 · May 2, 2017
Related Publication 20220027207A1 · Jan 27, 2022
Cited By (3)
US 12,386,765 US 12,717,902 US 12,737,480