Dynamic device virtualization for use by guest user processes based on observed behaviors of native device drivers
US-2024134667-A1 · Apr 25, 2024 · US
US10310879B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-10310879-B2 |
| Application number | US-201113270082-A |
| Country | US |
| Kind code | B2 |
| Filing date | Oct 10, 2011 |
| Priority date | Oct 10, 2011 |
| Publication date | Jun 4, 2019 |
| Grant date | Jun 4, 2019 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
An embodiment of the invention sets forth a primary processing unit, a secondary processing unit coupled to the primary processing unit and accessible via a plurality of channels and a plurality of guest virtual machines executing on the primary processing unit. Each guest virtual machine includes a driver associated with the secondary processing unit, and a privileged virtual machine executing on the primary processing unit and configured to allocate a different set of channels of the plurality of channels to each of the drivers included in the guest virtual machines, where a first set of channels allocated to a first driver enables the first driver to access the secondary processing unit without conflicting with any of the other and with minimal performance overhead by directly accessing the secondary processing unit channels.
Opening claim text (preview).
What is claimed is: 1. A computer system, comprising: a primary processing unit; a secondary processing unit that is coupled to the primary processing unit and accessible via a plurality of channels; a plurality of guest virtual machines executing on the primary processing unit, wherein each guest virtual machine includes a driver associated with the secondary processing unit; and a privileged virtual machine executing on the primary processing unit and configured to allocate a different set of channels included in the plurality of channels to each of the drivers included in the plurality of guest virtual machines, wherein a first set of channels included in the plurality of channels allocated to a first driver included in a first guest virtual machine enables the first driver to directly access the secondary processing unit without conflicting with and being protected from any of the other drivers included in the plurality of guest virtual machines, and wherein the first driver accesses the second processing unit by writing commands to a command buffer and communicating addresses of the commands to the secondary processing unit via the first set of channels. 2. The computer system of claim 1 , wherein each guest virtual machine includes a proxy resource manager configured to communicate with the privileged virtual machine via remote procedure calls. 3. The computer system of claim 2 , wherein the first guest virtual machine includes a first proxy resource manager configured to: transmit a request to the privileged virtual machine to set up access to the secondary processing unit for the first driver, and receive a communication from the privileged virtual machine that the first set of channels has been allocated to the first driver, wherein the privileged virtual machine maps one or more control registers associated with the first set of channels into a portion of a memory space accessible by the first driver, wherein each control register is associated with a different channel in the first set of channels, and each channel in the first set of channels is populated with commands based on the contents of the associated control register associated with the channel. 4. The computer system of claim 3 , wherein the first driver accesses the second processing unit by further populating a control register associated with a first channel included in the first set of channels with at least a first memory address associated with the command buffer. 5. The computer system of claim 2 , wherein the privileged virtual machine includes an emulation software module that is configured to emulate a portion of the secondary processing unit, and the proxy resource manager is configured to: route a request to access the portion of the second processing unit from the first driver to the emulation software module, and transmit data from the emulation software module to the first driver in response to the request. 6. The computer system of claim 2 , wherein the privileged virtual machine includes an emulation software module that is notified each time an event is raised by the second processing unit, and a first proxy resource manager is configured to: route a request to register for a first event that is to be raised by the second processing unit to the emulation software module, and transmit a notification from the emulation software module to the first driver when the first event is raised by the second processing unit. 7. The computer system of claim 2 , wherein the privileged virtual machine includes an emulation software module that is notified by the second processing unit each time a fault associated with any of the channels included in the plurality of channels occurs. 8. The computer system of claim 7 , wherein a first proxy resource manager is configured to receive a notification from the emulation software module when a fault associated with a first channel included in the first set of channels occurs and to transmit the notification to the first driver. 9. The computer system of claim 1 , further comprising a display, wherein each of the guest virtual machines includes a display driver configured to render display frames onto the display. 10. The computer system of claim 9 , wherein the privileged virtual machine includes an emulation software module that is configured to trap a display command transmitted by a first display driver included within the first guest virtual machine that pertains to rendering a first display frame onto the display. 11. The computer system of claim 10 , wherein the emulation software module is further configured to translate the display command into a different display command for rendering the first display frame in a portion of the display allocated to the first guest virtual machine. 12. The computer system of claim 1 , wherein the privileged virtual machine is configured to de-allocate the first set of channels from the first driver when the first guest virtual machine is terminated. 13. A method for configuring a virtual machine executing on a primary processing unit to access a secondary processing unit, the method comprising: receiving a first request from a driver residing within the virtual machine to set up access to the secondary processing unit; transmitting a second request to a hardware resource manager to set up access to the secondary processing unit for the driver; receiving a communication from the hardware resource manager that a first channel providing access to the secondary processing unit has been allocated to the driver; and notifying the driver that the driver can transmit one or more commands directly to the secondary processing unit via the first channel, wherein the driver writes commands to a command buffer and communicates addresses of the commands to the secondary processing unit via the first channel. 14. The method of claim 13 , further comprising mapping a set of control registers associated with the first channel into a portion of a memory space accessible by the driver. 15. The method of claim 14 , wherein the driver notifies a control register associated with the first channel that the one or more commands are stored in the command buffer, wherein the one or more commands stored in the command buffer are transmitted to the second processing unit via the first channel in response to the notification. 16. The method of claim 13 , further comprising trapping a first display command transmitted by a display driver executing within the virtual machine for rendering a display frame onto a display, and translating the first display command into a second display command for rendering the display frame in a portion of the display allocated to the virtual machine. 17. A non-transitory computer readable medium for storing instructions that, when executed by a processor, cause the processor to configure a virtual machine executing on a primary processing unit to access a secondary processing unit, by performing the steps of: receiving a first request from a driver residing within the virtual machine to set up access to the secondary processing unit; transmitting a second request to a hardware resource manager to set up access to the secondary processing unit for the driver; receiving a communication from the hardware resource manager that a first channel providing access to the secondary processing unit has been allocated to the driver; and notifying the driver that the driver can transmit one or more commands directly to the secondary processing unit via the first channel, wherein the driver writes commands to a c
Para-virtualisation, i.e. guest operating system has to be modified · CPC title
I/O management, e.g. providing access to device drivers or storage · CPC title
Hypervisor-specific management and integration aspects · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.