aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/i915/i915_cmd_parser.c19
-rw-r--r--drivers/gpu/drm/i915/i915_dma.c3
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h1
-rw-r--r--include/uapi/drm/i915_drm.h1
4 files changed, 24 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_cmd_parser.c b/drivers/gpu/drm/i915/i915_cmd_parser.c
index a8f00dbc0dde..bae7c2f33692 100644
--- a/drivers/gpu/drm/i915/i915_cmd_parser.c
+++ b/drivers/gpu/drm/i915/i915_cmd_parser.c
@@ -896,3 +896,22 @@ int i915_parse_cmds(struct intel_ring_buffer *ring,
896 896
897 return ret; 897 return ret;
898} 898}
899
900/**
901 * i915_cmd_parser_get_version() - get the cmd parser version number
902 *
903 * The cmd parser maintains a simple increasing integer version number suitable
904 * for passing to userspace clients to determine what operations are permitted.
905 *
906 * Return: the current version number of the cmd parser
907 */
908int i915_cmd_parser_get_version(void)
909{
910 /*
911 * Command parser version history
912 *
913 * 1. Initial version. Checks batches and reports violations, but leaves
914 * hardware parsing enabled (so does not allow new use cases).
915 */
916 return 1;
917}
diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
index 96177eec0a0e..0b38f88c35f0 100644
--- a/drivers/gpu/drm/i915/i915_dma.c
+++ b/drivers/gpu/drm/i915/i915_dma.c
@@ -1017,6 +1017,9 @@ static int i915_getparam(struct drm_device *dev, void *data,
1017 case I915_PARAM_HAS_EXEC_HANDLE_LUT: 1017 case I915_PARAM_HAS_EXEC_HANDLE_LUT:
1018 value = 1; 1018 value = 1;
1019 break; 1019 break;
1020 case I915_PARAM_CMD_PARSER_VERSION:
1021 value = i915_cmd_parser_get_version();
1022 break;
1020 default: 1023 default:
1021 DRM_DEBUG("Unknown parameter %d\n", param->param); 1024 DRM_DEBUG("Unknown parameter %d\n", param->param);
1022 return -EINVAL; 1025 return -EINVAL;
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 8e1576cf6d63..0801e157a7ff 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -2385,6 +2385,7 @@ void i915_get_extra_instdone(struct drm_device *dev, uint32_t *instdone);
2385const char *i915_cache_level_str(int type); 2385const char *i915_cache_level_str(int type);
2386 2386
2387/* i915_cmd_parser.c */ 2387/* i915_cmd_parser.c */
2388int i915_cmd_parser_get_version(void);
2388void i915_cmd_parser_init_ring(struct intel_ring_buffer *ring); 2389void i915_cmd_parser_init_ring(struct intel_ring_buffer *ring);
2389bool i915_needs_cmd_parser(struct intel_ring_buffer *ring); 2390bool i915_needs_cmd_parser(struct intel_ring_buffer *ring);
2390int i915_parse_cmds(struct intel_ring_buffer *ring, 2391int i915_parse_cmds(struct intel_ring_buffer *ring,
diff --git a/include/uapi/drm/i915_drm.h b/include/uapi/drm/i915_drm.h
index 126bfaa8bb6b..8a3e4ef00c3d 100644
--- a/include/uapi/drm/i915_drm.h
+++ b/include/uapi/drm/i915_drm.h
@@ -337,6 +337,7 @@ typedef struct drm_i915_irq_wait {
337#define I915_PARAM_HAS_EXEC_NO_RELOC 25 337#define I915_PARAM_HAS_EXEC_NO_RELOC 25
338#define I915_PARAM_HAS_EXEC_HANDLE_LUT 26 338#define I915_PARAM_HAS_EXEC_HANDLE_LUT 26
339#define I915_PARAM_HAS_WT 27 339#define I915_PARAM_HAS_WT 27
340#define I915_PARAM_CMD_PARSER_VERSION 28
340 341
341typedef struct drm_i915_getparam { 342typedef struct drm_i915_getparam {
342 int param; 343 int param;