Patent ID: 8196144

Claim:
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.