# US 9,519,803 B2 · Secure environment for graphics processing units

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

- Number: US 9,519,803 B2
- Document ID: US9519803B2
- Status: Granted
- Kind: B2
- Application number: 13/690,401
- Filed: 2012-11-30
- Published: 2014-06-05
- Granted: 2016-12-13
- Earliest claimed: 2012-11-30
- Assignees: Intel Corporation
- Applicants: Intel Corporation
- Inventors: Prashant Dewan; Uday R. Savagaonkar; David M. Durham; Paul S. Schmitz; Jason Martin; Michael Goldsmith; Ravi L. Sahita; Francis X. McKeen; Carlos Rozas; Balaji Vembu; Scott Janus; Geoffrey S. Strongin; Xiaozhu Kang; Karanvir S. Grewal; Siddhartha Chhabra; Alpha T. Narendra Trivedi
- Web page: https://patentgrep.com/patent/US9519803B2

## CPC

- G06F 21/64: Protecting data integrity, e.g. using checksums, certificates or signatures
- G06F 21/53: by executing in a restricted environment, e.g. sandbox or secure virtual machine
- G06F 21/56: Computer malware detection or handling, e.g. anti-virus arrangements
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

In accordance with some embodiments, a protected execution environment may be defined for a graphics processing unit. This framework not only protects the workloads from malware running on the graphics processing unit but also protects those workloads from malware running on the central processing unit. In addition, the trust framework may facilitate proof of secure execution by measuring the code and data structures used to execute the workload. If a part of the trusted computing base of this framework or protected execution environment is compromised, that part can be patched remotely and the patching can be proven remotely throughout attestation in some embodiments.

## Claims

### Claim 1

A method comprising:
creating a trusted framework for a processing graphics unit on a central processing unit using a first operating system by providing an enclave on the central processing unit to build a protected module on the processing graphics unit;
using a driver on the processing graphics unit to point the processing graphics unit to an entry point of the protected module;
executing said protected module on said processing graphics unit;
measuring code and data structures used to execute a workload running on the processing graphics unit:
determining whether a part of the processing graphics unit is compromised using measured code and data structures;
patching the compromised part remotely; and
proving the patching remotely through attestation.

### Claim 2 (depends on 1)

The method of claim 1 including enabling the enclave to communicate with the module via a cache in memory shared between said central processing unit and said processing graphics unit.

### Claim 3 (depends on 2)

The method of claim 2 including storing code and data used by said module in said cache.

### Claim 4 (depends on 3)

The method of claim 3 including creating said cache in memory inaccessible by the first operating system on said central processing unit.

### Claim 5 (depends on 1)

The method of claim 1 including executing an application on said central processing unit to launch said enclave.

### Claim 6 (depends on 5)

The method of claim 5 including using said enclave to convert module code to binary code.

### Claim 7 (depends on 1)

The method of claim 1 including verifying the workload in said enclave and loading code and data from said workload to create said module.

### Claim 8 (depends on 1)

The method of claim 1 including causing an untrusted kernel driver to execute enclave supplied code to invoke said module.

### Claim 9 (depends on 1)

The method of claim 1 including causing the module to write execution results to said enclave.

### Claim 10 (depends on 1)

The method of claim 1 including asserting correctness of the module to a remote party.

### Claim 11 (depends on 1)

The method of claim 1 including provisioning the module with secrets after distribution.

### Claim 12 (depends on 1)

The method of claim 1 including protecting the enclave from an untrusted central processing unit.

### Claim 13

One or more non-transitory computer readable media storing instructions executed by a central processing unit to perform a sequence comprising:
creating a trusted framework for a processing graphics unit on the central processing unit by providing an enclave on the central processing unit to build a protected module on the processing graphics unit;
using a driver on the processing graphics unit to point the processing graphics unit to an entry point of the protected module;
executing said protected module on said processing graphics unit;
measuring code and data structures used to execute a workload running on the processing graphics unit;
determining whether a part of the processing graphics unit is compromised using measured code and data structures;
patching the compromised part remotely; and
proving the patching remotely through attestation.

### Claim 14 (depends on 13)

The media of claim 13 further storing instructions to perform a sequence including enabling the enclave to communicate with the module via a cache in memory shared between said central processing unit and said processing graphics unit.

### Claim 15 (depends on 14)

The media of claim 14 further storing instructions to perform a sequence including storing code and data used by said module in said cache.

### Claim 16 (depends on 15)

The media of claim 15 further storing instructions to perform a sequence including creating said cache in memory inaccessible by an operating system on said central processing unit.

### Claim 17 (depends on 13)

The media of claim 13 further storing instructions to perform a sequence including verifying the workload in said enclave and loading code and data from said workload to create said module.

### Claim 18 (depends on 13)

The media of claim 13 further storing instructions to perform a sequence including causing an untrusted kernel driver to execute enclave supplied code to invoke said module.

### Claim 19 (depends on 13)

The media of claim 13 further storing instructions to perform a sequence including causing the module to write execution results to said enclave.

### Claim 20 (depends on 13)

The media of claim 13 further storing instructions to perform a sequence including asserting correctness of the module to a remote party.

### Claim 21 (depends on 13)

The media of claim 13 further storing instructions to perform a sequence including provisioning the module with secrets after distribution.

### Claim 22 (depends on 13)

The media of claim 13 further storing instructions to perform a sequence including protecting the enclave from an untrusted central processing unit.

### Claim 23

A computer comprising:
a processing graphics unit; and
a central processing unit coupled to said processing graphics unit using a first operating system to provide an enclave to build a protected module on the processing graphics unit using a trusted framework on the processing graphic unit,
using a driver on the central processing unit to point the processing graphics unit to an entry point of the protected module,
to execute said protected module on said processing graphics unit,
to measure code and data structures used to execute a workload running on the processing graphics unit,
to determine whether a part of the processing graphics unit is compromised using measured code and data structures,
to patch the compromised part remotely; and prove the patching remotely through attestation.

### Claim 24 (depends on 23)

The computer of claim 23 including a memory with a cache, said memory shared between processing graphics and central processing units, said enclave to communicate with the module via the cache.

### Claim 25 (depends on 23)

The computer of claim 23 including a battery.

### Claim 26 (depends on 23)

The computer of claim 23 including firmware and a module to update said firmware.
