IP Library › Granted Patent US 9,633,230
Granted Patent B2
US 9,633,230 · App. 13/649,798 · Granted Apr 25, 2017

Hardware assist for privilege access violation checks

Inventors: Hema C. Nalluri (Hyderabad, IN); Aditya Navale (Folsom, CA); Murali Ramadoss (Folsom, CA)
Assignee: Intel Corporation
G06F21/74G06F21/84G06T15/005
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 9,633,230
App. No.
13/649,798
Granted
Apr 25, 2017
Kind
B2
Abstract

Techniques are disclosed for processing rendering engine workload of a graphics system in a secure fashion, wherein at least some security processing of the workload is offloaded from software-based security parsing to hardware-based security parsing. In some embodiments, commands from a given application are received by a user-mode driver (UMD), which is configured to generate a command buffer delineated into privileged and/or non-privileged command sections. The delineated command buffer can then be passed by the UMD to a kernel-mode driver (KMD), which is configured to parse and validate only privileged buffer sections, but to issue all other batch buffers with a privilege indicator set to non-privileged. A graphics processing unit (GPU) can receive the privilege-designated batch buffers from the KMD, and is configured to disallow execution of any privileged command from a non-privileged batch buffer, while any privileged commands from privileged batch buffers are unrestricted by the GPU.

Claims (42)

1. One or more non-transitory machine readable mediums encoded with instructions that when executed by one or more processors cause a process to be carrier out, the process comprising:

receive a command buffer having one or more sections, each command buffer section having a command and designating whether that command is privileged or non-privileged, and each command buffer section designating a command as non-privileged further designates an offset to a next section of the command buffer;

selectively parse and validate one or more of the command buffer sections, wherein parsing a command from a command buffer section designating that command as non-privileged is by-passed using the corresponding offset; and

issue batch buffers to a graphics processing unit (GPU), each batch buffer having a command from the command buffer and designating whether that command is privileged or non-privileged, thereby allowing the GPU to disallow execution of any privileged command from a non-privileged batch buffer.

2. The one or more machine readable mediums of claim 1 , wherein prior to receiving the command buffer, the process further comprises:

generate the command buffer.

3. The one or more machine readable mediums of claim 1 , wherein each batch buffer further designates that batch buffer as privileged if any of the one or more commands associated with that batch buffer is privileged.

4. The one or more machine readable mediums of claim 1 , wherein only commands of command buffer sections designated as privileged are parsed and validated, prior to issuing commands from those privileged sections in a batch buffer to the GPU.

5. The one or more machine readable mediums of claim 4 , wherein all commands from a non-privileged command buffer section are issued to the GPU in a batch buffer without parsing or validation.

6. The one or more machine readable mediums of claim 1 , wherein any privileged commands from privileged batch buffers are unrestricted with respect to subsequent processing at the GPU.

7. A media processing system comprising the one or more machine readable mediums of claim 1 .

8. A mobile computing system comprising the media processing system of claim 7 .

9. A system-on-chip comprising the one or more machine readable mediums of claim 1 .

10. One or more non-transitory machine readable mediums encoded with instructions that when executed by one or more processors cause a process to be carried out, the process comprising:

generate a command buffer having one or more buffer sections, each command buffer section having a command and designating whether that command is privileged or non-privileged, and each command buffer section designated as non-privileged further designates an offset to a next section of the command buffer; and

issuing the command buffer to a kernel-mode driver (KMD), thereby allowing the KMD to use the offset to by-pass parsing commands from corresponding non-privileged command buffer sections.

11. The one or more machine readable mediums of claim 10 , wherein the offset allows the KMD to by-pass parsing commands from that non-privileged command buffer section offset to a next section of the command buffer.

12. The one or more machine readable mediums of claim 10 , wherein the command buffer allows the KMD to issue, without parsing or validation, commands from a non-privileged command buffer section to a graphics processing unit (GPU) in a batch buffer.

13. The one or more machine readable mediums of claim 10 , wherein any privileged commands from privileged batch buffers are unrestricted with respect to subsequent processing at the GPU.

14. A media processing system comprising the one or more machine readable mediums of claim 10 .

15. A mobile computing device comprising the one or more machine readable mediums of claim 10 .

16. A graphical processor unit (GPU) comprising:

logic configured to fetch a next command from a batch buffer in response to receiving a batch buffer start command, wherein the batch buffer includes one or more commands and designates those commands as either privileged or non-privileged, and if any of the one or more commands is privileged, then the batch buffer is designated as privileged;

logic to execute the next command in response to determining the next command is privileged and the batch buffer is privileged; and

logic to disallow execution of the next command in response to determining the next command is privileged and the batch buffer is not privileged, wherein the logic to disallow execution of the next command in response to determining the next command is privileged and the batch buffer is not privileged includes logic to at least one of convert the next command to a NOOP and set an error interrupt.

17. The GPU of claim 16 , further comprising:

logic to execute the next command in response to determining the next command is not privileged.

18. The GPU of claim 16 , further comprising:

logic to terminate processing of the batch buffer in response to determining that the next command is a batch buffer end (BBE) command.

19. The GPU of claim 18 , wherein the logic to terminate processing of the batch buffer in response to determining that the next command is a BBE command is further to continue processing commands of the batch buffer until the BBE command is encountered.

20. The GPU of claim 16 , where the logic to disallow execution of the next command in response to determining the next command is privileged and the batch buffer is not privileged includes logic to convert the next command to a NOOP.

21. The GPU of claim 16 , where the logic to disallow execution of the next command in response to determining the next command is privileged and the batch buffer is not privileged includes logic to set an error interrupt.

22. A graphics card comprising the GPU of claim 16 .

23. A system comprising the graphics card of claim 22 , and further comprising at least one of a user-mode driver (UMD) and a kernel-mode driver (KMD), wherein:

the UMD includes one or more non-transitory machine readable mediums encoded with instructions that when executed by one or more processors cause a process to be carried out, the process comprising:

generate a command buffer having one or more buffer sections, each command buffer section having a command and designating whether that

command is privileged or non-privileged, and each command buffer section designated as non-privileged further designates an offset to a next section of the command buffer; and

issuing the command buffer for further processing; and

the KMD includes one or more non-transitory machine readable mediums encoded with instructions that when executed by one or more processors cause a process to be carried out, the process comprising:

receive the command buffer;

selectively parse and validate one or more of the command buffer sections, wherein parsing a command from a command buffer section designating that command as non-privileged is by-passed using the corresponding offset; and

issue batch buffers to the GPU.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 12, 2012
From: NALLURI, HEMA C.; NAVALE, ADITYA; RAMADOSS, MURALI
To: INTEL CORPORATION
Reel/Frame 029279/0924 →
Continuity (1)
Related Publication 20140104287A1 · Apr 17, 2014