# US 11,907,748 B2 · Secure graphics processing unit (GPU) virtualization using sandboxing

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,907,748 B2
- Document ID: US11907748B2
- Status: Granted
- Kind: B2
- Application number: 17/239,443
- Filed: 2021-04-23
- Published: 2022-10-27
- Granted: 2024-02-20
- Earliest claimed: 2021-04-23
- Assignees: VMware, Inc.
- Applicants: VMware LLC
- Inventors: Michael Banack; Mark Sheldon
- Web page: https://patentgrep.com/patent/US11907748B2

## CPC

- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 9/547: {Remote procedure calls [RPC]; Web services}
- G06T 1/20: Processor architectures; Processor configuration, e.g. pipelining
- G06F 9/45533: {Hypervisors; Virtual machine monitors}
- G06F 2009/45579: {I/O management, e.g. providing access to device drivers or storage}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL

## Abstract

Techniques for implementing secure GPU virtualization using sandboxing are provided. In one set of embodiments, a hypervisor of a host system can receive one or more first graphics/compute commands issued by a guest application running within a VM of the host system. The hypervisor can further communicate the one or more first graphics/compute commands to a sandboxed software process that is separate from the hypervisor. The sandboxed software process can then translate the one or more first graphics/compute commands into one or more second graphics/compute commands and issue the one or more second graphics/compute commands for execution on a physical GPU.

## Claims

### Claim 1

A method comprising:
receiving, by a hypervisor of a host system, one or more first graphics or compute commands issued by a guest application running within a virtual machine (VM) of the host system;
communicating, by the hypervisor, the one or more first graphics or compute commands to a sandboxed software process that is separate from the hypervisor;
translating, by the sandboxed software process, the one or more first graphics or compute commands into one or more second graphics or compute commands; and
issuing, by the sandboxed software process, one or more second graphics or compute commands for execution on a physical graphics processing unit (GPU).

### Claim 2 (depends on 1)

The method of claim 1 wherein the sandboxed software process runs on a host operating system (OS) of the host system.

### Claim 3 (depends on 2)

The method of claim 2 wherein the one or more second graphics or compute commands are calls to a host graphics or compute API (application programming interface) library of the host OS.

### Claim 4 (depends on 3)

The method of claim 3 wherein upon being issued, the one or more second graphics or compute commands are handled by a host GPU driver of the host system that implements the host graphics or compute API library.

### Claim 5 (depends on 1)

The method of claim 1 wherein the sandboxed software process runs within another VM of the host system.

### Claim 6 (depends on 1)

The method of claim 1 wherein the sandboxed software process runs within another VM of another host system.

### Claim 7 (depends on 1)

The method of claim 1 wherein communicating the one or more first graphics or compute commands to the sandboxed software process comprises:
writing the one or more first graphics or compute commands to a memory region shared by the hypervisor and the sandboxed software process; and
transmitting, via a control channel, a signal to the sandboxed software process indicating that the memory region includes command data to be consumed.

### Claim 8

A non-transitory computer readable storage medium having stored thereon instructions executable by a host system, the instructions embodying a method comprising:
receiving, by a hypervisor of the host system, one or more first graphics or compute commands issued by a guest application running within a virtual machine (VM) of the host system;
communicating, by the hypervisor, the one or more first graphics or compute commands to a sandboxed software process that is separate from the hypervisor;
translating, by the sandboxed software process, the one or more first graphics or compute commands into one or more second graphics or compute commands; and
issuing, by the sandboxed software process, one or more second graphics or compute commands for execution on a physical graphics processing unit (GPU).

### Claim 9 (depends on 8)

The non-transitory computer readable storage medium of claim 8 wherein the sandboxed software process runs on a host operating system (OS) of the host system.

### Claim 10 (depends on 9)

The non-transitory computer readable storage medium of claim 9 wherein the one or more second graphics or compute commands are calls to a host graphics or compute API (application programming interface) library of the host OS.

### Claim 11 (depends on 10)

The non-transitory computer readable storage medium of claim 10 wherein upon being issued, the one or more second graphics or compute commands are handled by a host GPU driver of the host system that implements the host graphics or compute API library.

### Claim 12 (depends on 8)

The non-transitory computer readable storage medium of claim 8 wherein the sandboxed software process runs within another VM of the host system.

### Claim 13 (depends on 8)

The non-transitory computer readable storage medium of claim 8 wherein the sandboxed software process runs within another VM of another host system.

### Claim 14 (depends on 8)

The non-transitory computer readable storage medium of claim 8 wherein communicating the one or more first graphics or compute commands to the sandboxed software process comprises:
writing the one or more first graphics or compute commands to a memory region shared by the hypervisor and the sandboxed software process; and
transmitting, via a control channel, a signal to the sandboxed software process indicating that the memory region includes command data to be consumed.

### Claim 15

A host system comprising:
a hypervisor; and
a non-transitory computer readable medium having stored thereon instructions that, when executed by the hypervisor, causes the hypervisor to:
receive one or more first graphics or compute commands issued by a guest application running within a virtual machine (VM) of the host system; and
communicate the one or more first graphics or compute commands to a sandboxed software process that is separate from the hypervisor,
wherein upon receiving the one or more first graphics or compute commands, the sandboxed software process translates the one or more first graphics or compute commands into one or more second graphics or compute commands and issues the one or more second graphics or compute commands for execution on a physical graphics processing unit (GPU).

### Claim 16 (depends on 15)

The host system of claim 15 wherein the sandboxed software process runs on a host operating system (OS) of the host system.

### Claim 17 (depends on 16)

The host system of claim 16 wherein the one or more second graphics or compute commands are calls to a host graphics or compute API (application programming interface) library of the host OS.

### Claim 18 (depends on 17)

The host system of claim 17 wherein upon being issued, the one or more second graphics or compute commands are handled by a host GPU driver of the host system that implements the host graphics or compute API library.

### Claim 19 (depends on 15)

The host system of claim 15 wherein the sandboxed software process runs within another VM of the host system.

### Claim 20 (depends on 15)

The host system of claim 15 wherein the sandboxed software process runs within another VM of another host system.

### Claim 21 (depends on 15)

The host system of claim 15 wherein the instructions that cause the hypervisor to communicate the one or more first graphics or compute commands to the sandboxed software process comprise instructions that cause the hypervisor to:
write the one or more first graphics or compute commands to a memory region shared by the hypervisor and the sandboxed software process; and
transmit, via a control channel, a signal to the sandboxed software process indicating that the memory region includes command data to be consumed.
