aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/i915_reg.h
diff options
context:
space:
mode:
authorBrad Volkin <bradley.d.volkin@intel.com>2014-02-18 13:15:46 -0500
committerDaniel Vetter <daniel.vetter@ffwll.ch>2014-03-07 16:37:00 -0500
commit351e3db2b3631556607d0d94fa26df8e2e0d0fd8 (patch)
tree5aff6460da0f3ac6973e0185ee04764871c60a1b /drivers/gpu/drm/i915/i915_reg.h
parent4c914c0c7c787b8f730128a8cdcca9c50b0784ab (diff)
drm/i915: Implement command buffer parsing logic
The command parser scans batch buffers submitted via execbuffer ioctls before the driver submits them to hardware. At a high level, it looks for several things: 1) Commands which are explicitly defined as privileged or which should only be used by the kernel driver. The parser generally rejects such commands, with the provision that it may allow some from the drm master process. 2) Commands which access registers. To support correct/enhanced userspace functionality, particularly certain OpenGL extensions, the parser provides a whitelist of registers which userspace may safely access (for both normal and drm master processes). 3) Commands which access privileged memory (i.e. GGTT, HWS page, etc). The parser always rejects such commands. See the overview comment in the source for more details. This patch only implements the logic. Subsequent patches will build the tables that drive the parser. v2: Don't set the secure bit if the parser succeeds Fail harder during init Makefile cleanup Kerneldoc cleanup Clarify module param description Convert ints to bools in a few places Move client/subclient defs to i915_reg.h Remove the bits_count field OTC-Tracker: AXIA-4631 Change-Id: I50b98c71c6655893291c78a2d1b8954577b37a30 Signed-off-by: Brad Volkin <bradley.d.volkin@intel.com> Reviewed-by: Jani Nikula <jani.nikula@intel.com> [danvet: Appease checkpatch.] Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_reg.h')
-rw-r--r--drivers/gpu/drm/i915/i915_reg.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index b719385c4511..146609ab42bb 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -175,6 +175,18 @@
175#define VGA_CR_DATA_CGA 0x3d5 175#define VGA_CR_DATA_CGA 0x3d5
176 176
177/* 177/*
178 * Instruction field definitions used by the command parser
179 */
180#define INSTR_CLIENT_SHIFT 29
181#define INSTR_CLIENT_MASK 0xE0000000
182#define INSTR_MI_CLIENT 0x0
183#define INSTR_BC_CLIENT 0x2
184#define INSTR_RC_CLIENT 0x3
185#define INSTR_SUBCLIENT_SHIFT 27
186#define INSTR_SUBCLIENT_MASK 0x18000000
187#define INSTR_MEDIA_SUBCLIENT 0x2
188
189/*
178 * Memory interface instructions used by the kernel 190 * Memory interface instructions used by the kernel
179 */ 191 */
180#define MI_INSTR(opcode, flags) (((opcode) << 23) | (flags)) 192#define MI_INSTR(opcode, flags) (((opcode) << 23) | (flags))