IP Library Granted Patent US 8,196,144
Granted Patent B2
US 8,196,144 · App. 12/699,894 · Granted Jun 5, 2012

System and method for accelerating input/output access operation on a virtual machine

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 8,196,144
App. No.
12/699,894
Granted
Jun 5, 2012
Kind
B2
Abstract

A system and method for accelerating input/output (IO) access operation on a virtual machine, The method comprises providing a smart IO device that includes an unrestricted command queue (CQ) and a plurality of restricted CQs and allowing a guest domain to directly configure and control IO resources through a respective restricted CQ, the IO resources allocated to the guest domain. In preferred embodiments, the allocation of IO resources to each guest domain is performed by a privileged virtual switching element. In some embodiments, the smart IO device is a HCA and the privileged virtual switching element is a Hypervisor.

Claims (32)

1. A method for accelerating input/output (IO) access operation on a virtual machine running on a host computer that has IO resources, comprising the steps of:

a. providing a smart IO device that includes an unrestricted command queue, a plurality of restricted command queues, each restricted command queue for configuring and controlling only a respective portion of the IO resources of the host computer, and a corresponding plurality of data queues separate from the restricted command queues;

b. by a hypervisor, allocating the respective portion of the IO resources of one of the restricted command queues to a guest domain through the unrestricted command queue, and

c. allowing the guest domain to directly configure and control the respective portion of the IO resources of the one restricted command queue through the one restricted command queue;

wherein the step of allowing each guest domain to directly configure and control IO resources includes using a privileged virtual switching element to perform the allocation of IO resources through the unrestricted command queue and to export each restricted command queue to a respective guest domain;

wherein the using a privileged virtual switching element to perform the allocation of IO resources includes using the privileged virtual switching element to allocate a particular address space to the respective guest domain, the address space being one of many supported by the smart IO device; and

wherein the allocation of the particular address space to a respective guest domain includes using the allocated address space to translate a guest physical address into a hardware (HW) physical address.

2. The method of claim 1 , wherein the exporting is performed during an event selected from the group consisting of booting the guest domain and hot plugging while the guest domain is running.

3. The method of claim 1 , wherein the using a privileged virtual switching element includes using a hypervisor.

4. A method for accelerating input/output (I/O) access operation on a virtual machine running on a host computer that has IO resources, comprising the steps of:

a. in a smart IO device, providing a plurality of restricted command queues, each restricted command queue for configuring and controlling only a respective portion of the IO resources of the host computer, each restricted command queue associated with a respective guest domain and a separate respective data queue; and

b. using a hypervisor, allocating IO resources to each restricted command queue, whereby each guest domain may directly configure and control the respectively allocated IO resources of its associated restricted command queue while being isolated and protected from other guest domains;

wherein the step of allocating partial IO resources to each restricted command queue includes, for each guest domain, configuring a respective translation table located in the smart IO device through its respective restricted command queue;

wherein the configuring a respective translation table includes configuring a table that translates a guest domain physical address into a hardware (HW) physical address, thereby enabling to enforce allocation of physical memory for IO accesses; and

wherein the step of allocating partial IO resources to each restricted command queue includes, by the hypervisor, for each guest domain:

i. allocating a physical address for the virtual machine,

ii. providing the guest domain with a virtual physical address space,

iii. setting up the respective smart IO device translation table operative to translate from the virtual physical address to the HW physical address.

5. The method of claim 4 , wherein the providing a plurality of restricted command queues, each associated with a respective guest domain is performed by the hypervisor.

6. The method of claim 4 , wherein the allocation of physical memory for IO accesses includes reallocation of physical memory between guest domains.

7. A method for accelerating input/output (IO) access operation on a virtual machine running on a host computer that has IO resources, comprising the steps of:

a. providing a smart IO device that includes an unrestricted command queue and a plurality of restricted command queues, each restricted command queue for configuring and controlling only a respective portion of IO resources of the host computer;

b. by a hypervisor, allocating the respective portion of the IO resources of one of the restricted command queues to a guest domain through the unrestricted command queue, and

c. allowing the guest domain to directly configure and control the respective portion of the IO resources of the one restricted command queue through the one restricted command queue;

wherein the step of allowing each guest domain to directly configure and control IO resources includes using a privileged virtual switching element to perform the allocation of IO resources through the unrestricted command queue and to export each restricted command queue to a respective guest domain;

wherein the using a privileged virtual switching element to perform the allocation of IO resources includes using the privileged virtual switching element to allocate a particular address space to the respective guest domain, the address space being one of many supported by the smart IO device;

wherein the allocation of the particular address space to a respective guest domain includes using the allocated address space to translate a guest physical address into a hardware (HW) physical address; and

wherein the allocation includes: by the privileged virtual switching element:

i. booting a guest domain;

ii. checking the HCA for additional restricted command queue support capability and existence of data resources to be associated with a specific command queue,

iii. if such data resources are found, allocating respective data resources to each restricted command queue, and

iv. initializing the respective data resources.

Assignments (2)
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 37900/0720 Recorded Jul 13, 2018
From: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
To: MELLANOX TECHNOLOGIES, LTD.
Reel/Frame 046542/0792 →
PATENT SECURITY AGREEMENT Recorded Feb 24, 2016
From: MELLANOX TECHNOLOGIES, LTD.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 037900/0720 →