IP Library Granted Patent US 8,970,603
Granted Patent B2
US 8,970,603 · App. 12/895,668 · Granted Mar 3, 2015

Dynamic virtual device failure recovery

Inventors: Bradley Stephen Post (San Francisco, CA); Varadharajan Ponnappan (Sunnyvale, CA); Pareekshit Singh (Sunnyvale, CA); Vladimir Pavlov (San Jose, CA)
Assignee: Microsoft Technology Licensing, LLC
G06T15/005G06F9/45558G06F2009/45579
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,970,603
App. No.
12/895,668
Granted
Mar 3, 2015
Kind
B2
Abstract

Exemplary techniques for recovering from a graphics processor reset are herein disclosed. In an exemplary embodiment, a 3D graphics service manager 404 can detect that a graphics processing unit reset and can restart a rendering process configured to render 3D graphics for a virtual machine and cause a graphics buffer to be established between the rendering process and the virtual machine. In addition to the foregoing, other aspects are described in the detailed description, claims, and figures.

Claims (59)

1. A computer system configured to recover from a graphics processor reset, comprising:

a processor;

a 3D graphics processing unit; and

a memory in communication with at least the processor when the computer system is operational, the memory having stored thereon computer readable instructions that upon execution cause the processor to:

establish a communication channel between a virtualization platform and a virtual machine operating on the same computer system;

detect that a rendering process configured to render graphics for the virtual machine on the 3D graphics processing unit terminated;

restart the rendering process;

send, via the communication channel, a signal indicating that the rendering process is being restarted to a virtual device driver executing in the virtual machine; and

establish a graphics buffer between the virtual device driver executing in the virtual machine and the restarted rendering process.

2. The computer system of claim 1 , wherein the computer readable instructions further comprise computer readable instructions that upon execution cause the processor to:

resend graphics data to render a full frame via the graphics buffer.

3. The computer system of claim 1 , wherein the computer readable instructions that upon execution cause the processor to restart the rendering process further comprise computer readable instructions that upon execution cause the processor to:

restart the rendering process in response to determining that the virtual machine was not conducting a denial of service attack before the rendering process terminated.

4. The computer system of claim 1 , wherein the computer readable instructions that upon execution cause the processor to restart the rendering process further comprise computer readable instructions that upon execution cause the processor to:

restart the rendering process in response to determining that an average latency of direct memory access transactions initiated by the virtual device driver before the rendering process terminated is less than a threshold.

5. The computer system of claim 1 , wherein the computer readable instructions that upon execution cause the processor to restart the rendering process further comprise computer readable instructions that upon execution cause the processor to:

restart the rendering process in response to determining that an amount of time the 3D graphics processing unit takes to respond to commands before the rendering process terminated is less than a threshold.

6. The computer system of claim 1 , wherein the computer readable instructions that upon execution cause the processor to restart the rendering process further comprise computer readable instructions that upon execution cause the processor to:

restart the rendering process in response to determining that an estimated amount of available graphics memory controlled by the 3D graphics processing unit before the rendering process terminated is greater than a threshold.

7. The computer system of claim 1 , wherein the computer readable instructions that upon execution cause the processor to restart the rendering process further comprise computer readable instructions that upon execution cause the processor to:

restart the rendering process and assign the rendering process to render on a second 3D graphics processing unit.

8. A computer-readable storage device including computer readable instructions for recovering from a 3D graphics processing unit reset, the computer-readable storage medium comprising instructions that upon execution by a processor cause the processor to:

establish a communication channel between a host operating system and a virtual machine;

run a rendering process in the host operating system, wherein the rendering process is configured to render graphics for the virtual machine on a 3D graphics processing unit;

detect that the rendering process terminated;

restart the rendering process;

send, via the communication channel, a message indicating that the rendering process was restarted;

establish, by a virtual device driver in the virtual machine, a graphics buffer in a range of guest memory; and

send, via the communication channel, 3D graphics data to the restarted rendering process.

9. The computer-readable storage device of claim 8 , wherein the computer readable instructions that upon execution cause the processor to:

resend graphics data to render a full frame via the graphics buffer.

10. The computer readable storage device of claim 8 , wherein the computer readable instructions that upon execution cause the processor to restart the rendering process further comprise computer readable instructions that upon execution cause the processor to:

restart the rendering process in response to determining that the virtual machine was not conducting a denial of service attack before the rendering process terminated.

11. The computer-readable storage device of claim 8 , wherein the computer readable instructions that upon execution cause the processor to restart the rendering process further comprise computer readable instructions that upon execution cause the processor to:

restart the rendering process in response to determining that an amount of time the 3D graphics processing unit takes to respond to commands before the rendering process terminated is less than a threshold.

12. The computer-readable storage device of claim 8 , wherein the computer readable instructions that upon execution cause the processor to restart the rendering process further comprise computer readable instructions that upon execution cause the processor to:

restart the rendering process in response to determining that an amount of available graphics memory controlled by the 3D graphics processing unit before the rendering process terminated is greater than a threshold.

13. The computer-readable storage device of claim 8 , wherein the computer readable instructions that upon execution cause the processor to restart the rendering process further comprise computer readable instructions that upon execution cause the processor to:

restart the rendering process and assign the rendering process to render on a second 3D graphics processing unit.

14. A method for recovering from a 3D graphics processing unit reset, comprising:

establishing, by virtualization platform, a communication channel between the virtualization platform and a virtual machine;

running, by the virtualization platform, a rendering process configured to render graphics for the virtual machine on a 3 D graphics processing unit;

detecting, by the virtualization platform, that the rendering process terminated;

restarting, by the virtualization platform, the rendering process;

sending, via the communication channel, a message indicating that the rendering process was restarted to the virtual machine;

establishing, by a virtual device driver executing within the virtual machine, a graphics buffer in a range of guest memory; and

sending, via the graphics buffer, 3D graphics data to the restarted rendering process.

15. The method of claim 14 , further comprising:

restarting the rendering process in response to determining that the virtual machine was not conducting a denial of service attack before the rendering process terminated.

16. The method of claim 14 , further comprising:

restarting the rendering process in response to determining that an amount of time the 3D graphics processing unit takes to respond to commands before the rendering process terminated is less than a threshold.

17. The method of claim 14 , further comprising:

restarting the rendering process in response to determining that an amount of available graphics memory controlled by the 3D graphics processing unit is greater than a threshold.

18. The method of claim 14 , further comprising:

restarting the rendering process and assign the rendering process to render on a second 3D graphics processing unit.

19. The method of claim 14 , further comprising:

restarting the rendering process in response to determining that an average latency of direct memory access transactions initiated by the virtual device driver before the rendering process terminated is less than a threshold.

20. The method of claim 14 , further comprising:

resending a frame of graphics data via the graphics buffer.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034544/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 10, 2010
From: POST, BRADLEY STEPHEN; PONNAPPAN, VARADHARAJAN; SINGH, PAREEKSHIT; PAVLOV, VLADIMIR
To: MICROSOFT CORPORATION
Reel/Frame 025346/0127 →
Continuity (1)
Related Publication 20120081355A1 · Apr 5, 2012