aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLucas De Marchi <lucas.demarchi@intel.com>2018-08-03 19:24:43 -0400
committerChris Wilson <chris@chris-wilson.co.uk>2018-08-06 12:19:51 -0400
commit08e3e21a24d23db6a4adca90f7cb40d69e09d35c (patch)
tree85a7c076add186d7d34e9ad68648c12a087b0236
parent48928d4b5d6243296a95d60edd2dcbc8e39512b7 (diff)
drm/i915: kill resource streamer support
After disabling resource streamer on ICL (due to it actually not existing there), I got feedback that there have been some experimental patches for mesa to use RS years ago, but nothing ever landed or shipped because there was no performance improvement. This removes it from kernel keeping the uapi defines around for compatibility. v2: - re-add the inadvertent removal of CTX_CTRL_INHIBIT_SYN_CTX_SWITCH - don't bother trying to document removed params on uapi header: applications should know that from the query. (from Chris) v3: - disable CTX_CTRL_RS_CTX_ENABLE istead of removing it - reword commit message after Daniele confirmed no performance regression on his machine - reword commit message to make clear RS is being removed due to never been used v4: - move I915_EXEC_RESOURCE_STREAMER to __I915_EXEC_ILLEGAL_FLAGS so the check on ioctl() is made much earlier by i915_gem_check_execbuffer() (suggested by Tvrtko) Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Acked-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Link: https://patchwork.freedesktop.org/patch/msgid/20180803232443.17193-1-lucas.demarchi@intel.com
-rw-r--r--drivers/gpu/drm/i915/i915_drv.c2
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h2
-rw-r--r--drivers/gpu/drm/i915/i915_gem_execbuffer.c18
-rw-r--r--drivers/gpu/drm/i915/i915_pci.c4
-rw-r--r--drivers/gpu/drm/i915/intel_device_info.h1
-rw-r--r--drivers/gpu/drm/i915/intel_lrc.c10
-rw-r--r--drivers/gpu/drm/i915/intel_ringbuffer.c4
-rw-r--r--drivers/gpu/drm/i915/intel_ringbuffer.h1
8 files changed, 9 insertions, 33 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 64e0ea4bef67..3857e7963fc5 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -373,7 +373,7 @@ static int i915_getparam_ioctl(struct drm_device *dev, void *data,
373 value = 2; 373 value = 2;
374 break; 374 break;
375 case I915_PARAM_HAS_RESOURCE_STREAMER: 375 case I915_PARAM_HAS_RESOURCE_STREAMER:
376 value = HAS_RESOURCE_STREAMER(dev_priv); 376 value = 0;
377 break; 377 break;
378 case I915_PARAM_HAS_POOLED_EU: 378 case I915_PARAM_HAS_POOLED_EU:
379 value = HAS_POOLED_EU(dev_priv); 379 value = HAS_POOLED_EU(dev_priv);
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 4aca5344863d..657f46e0cae9 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -2610,8 +2610,6 @@ intel_info(const struct drm_i915_private *dev_priv)
2610#define USES_GUC_SUBMISSION(dev_priv) intel_uc_is_using_guc_submission() 2610#define USES_GUC_SUBMISSION(dev_priv) intel_uc_is_using_guc_submission()
2611#define USES_HUC(dev_priv) intel_uc_is_using_huc() 2611#define USES_HUC(dev_priv) intel_uc_is_using_huc()
2612 2612
2613#define HAS_RESOURCE_STREAMER(dev_priv) ((dev_priv)->info.has_resource_streamer)
2614
2615#define HAS_POOLED_EU(dev_priv) ((dev_priv)->info.has_pooled_eu) 2613#define HAS_POOLED_EU(dev_priv) ((dev_priv)->info.has_pooled_eu)
2616 2614
2617#define INTEL_PCH_DEVICE_ID_MASK 0xff80 2615#define INTEL_PCH_DEVICE_ID_MASK 0xff80
diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
index 1932bc227942..a926d7d47183 100644
--- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
@@ -64,7 +64,9 @@ enum {
64#define BATCH_OFFSET_BIAS (256*1024) 64#define BATCH_OFFSET_BIAS (256*1024)
65 65
66#define __I915_EXEC_ILLEGAL_FLAGS \ 66#define __I915_EXEC_ILLEGAL_FLAGS \
67 (__I915_EXEC_UNKNOWN_FLAGS | I915_EXEC_CONSTANTS_MASK) 67 (__I915_EXEC_UNKNOWN_FLAGS | \
68 I915_EXEC_CONSTANTS_MASK | \
69 I915_EXEC_RESOURCE_STREAMER)
68 70
69/* Catch emission of unexpected errors for CI! */ 71/* Catch emission of unexpected errors for CI! */
70#if IS_ENABLED(CONFIG_DRM_I915_DEBUG_GEM) 72#if IS_ENABLED(CONFIG_DRM_I915_DEBUG_GEM)
@@ -2221,20 +2223,6 @@ i915_gem_do_execbuffer(struct drm_device *dev,
2221 if (!eb.engine) 2223 if (!eb.engine)
2222 return -EINVAL; 2224 return -EINVAL;
2223 2225
2224 if (args->flags & I915_EXEC_RESOURCE_STREAMER) {
2225 if (!HAS_RESOURCE_STREAMER(eb.i915)) {
2226 DRM_DEBUG("RS is only allowed for Haswell and Gen8 - Gen10\n");
2227 return -EINVAL;
2228 }
2229 if (eb.engine->id != RCS) {
2230 DRM_DEBUG("RS is not available on %s\n",
2231 eb.engine->name);
2232 return -EINVAL;
2233 }
2234
2235 eb.batch_flags |= I915_DISPATCH_RS;
2236 }
2237
2238 if (args->flags & I915_EXEC_FENCE_IN) { 2226 if (args->flags & I915_EXEC_FENCE_IN) {
2239 in_fence = sync_file_get_fence(lower_32_bits(args->rsvd2)); 2227 in_fence = sync_file_get_fence(lower_32_bits(args->rsvd2));
2240 if (!in_fence) 2228 if (!in_fence)
diff --git a/drivers/gpu/drm/i915/i915_pci.c b/drivers/gpu/drm/i915/i915_pci.c
index 8a9a9009db62..e931b48369dd 100644
--- a/drivers/gpu/drm/i915/i915_pci.c
+++ b/drivers/gpu/drm/i915/i915_pci.c
@@ -368,7 +368,6 @@ static const struct intel_device_info intel_valleyview_info = {
368 .has_ddi = 1, \ 368 .has_ddi = 1, \
369 .has_fpga_dbg = 1, \ 369 .has_fpga_dbg = 1, \
370 .has_psr = 1, \ 370 .has_psr = 1, \
371 .has_resource_streamer = 1, \
372 .has_dp_mst = 1, \ 371 .has_dp_mst = 1, \
373 .has_rc6p = 0 /* RC6p removed-by HSW */, \ 372 .has_rc6p = 0 /* RC6p removed-by HSW */, \
374 .has_runtime_pm = 1 373 .has_runtime_pm = 1
@@ -441,7 +440,6 @@ static const struct intel_device_info intel_cherryview_info = {
441 .ring_mask = RENDER_RING | BSD_RING | BLT_RING | VEBOX_RING, 440 .ring_mask = RENDER_RING | BSD_RING | BLT_RING | VEBOX_RING,
442 .has_64bit_reloc = 1, 441 .has_64bit_reloc = 1,
443 .has_runtime_pm = 1, 442 .has_runtime_pm = 1,
444 .has_resource_streamer = 1,
445 .has_rc6 = 1, 443 .has_rc6 = 1,
446 .has_logical_ring_contexts = 1, 444 .has_logical_ring_contexts = 1,
447 .has_gmch_display = 1, 445 .has_gmch_display = 1,
@@ -515,7 +513,6 @@ static const struct intel_device_info intel_skylake_gt4_info = {
515 .has_runtime_pm = 1, \ 513 .has_runtime_pm = 1, \
516 .has_pooled_eu = 0, \ 514 .has_pooled_eu = 0, \
517 .has_csr = 1, \ 515 .has_csr = 1, \
518 .has_resource_streamer = 1, \
519 .has_rc6 = 1, \ 516 .has_rc6 = 1, \
520 .has_dp_mst = 1, \ 517 .has_dp_mst = 1, \
521 .has_logical_ring_contexts = 1, \ 518 .has_logical_ring_contexts = 1, \
@@ -604,7 +601,6 @@ static const struct intel_device_info intel_cannonlake_info = {
604 GEN(11), \ 601 GEN(11), \
605 .ddb_size = 2048, \ 602 .ddb_size = 2048, \
606 .has_csr = 0, \ 603 .has_csr = 0, \
607 .has_resource_streamer = 0, \
608 .has_logical_ring_elsq = 1 604 .has_logical_ring_elsq = 1
609 605
610static const struct intel_device_info intel_icelake_11_info = { 606static const struct intel_device_info intel_icelake_11_info = {
diff --git a/drivers/gpu/drm/i915/intel_device_info.h b/drivers/gpu/drm/i915/intel_device_info.h
index 07e8364d1a8c..6eecd64734d5 100644
--- a/drivers/gpu/drm/i915/intel_device_info.h
+++ b/drivers/gpu/drm/i915/intel_device_info.h
@@ -103,7 +103,6 @@ enum intel_platform {
103 func(has_psr); \ 103 func(has_psr); \
104 func(has_rc6); \ 104 func(has_rc6); \
105 func(has_rc6p); \ 105 func(has_rc6p); \
106 func(has_resource_streamer); \
107 func(has_runtime_pm); \ 106 func(has_runtime_pm); \
108 func(has_snoop); \ 107 func(has_snoop); \
109 func(has_coherent_ggtt); \ 108 func(has_coherent_ggtt); \
diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
index b0be180c6294..e5385dbfcdda 100644
--- a/drivers/gpu/drm/i915/intel_lrc.c
+++ b/drivers/gpu/drm/i915/intel_lrc.c
@@ -2065,8 +2065,7 @@ static int gen8_emit_bb_start(struct i915_request *rq,
2065 2065
2066 /* FIXME(BDW): Address space and security selectors. */ 2066 /* FIXME(BDW): Address space and security selectors. */
2067 *cs++ = MI_BATCH_BUFFER_START_GEN8 | 2067 *cs++ = MI_BATCH_BUFFER_START_GEN8 |
2068 (flags & I915_DISPATCH_SECURE ? 0 : BIT(8)) | 2068 (flags & I915_DISPATCH_SECURE ? 0 : BIT(8));
2069 (flags & I915_DISPATCH_RS ? MI_BATCH_RESOURCE_STREAMER : 0);
2070 *cs++ = lower_32_bits(offset); 2069 *cs++ = lower_32_bits(offset);
2071 *cs++ = upper_32_bits(offset); 2070 *cs++ = upper_32_bits(offset);
2072 2071
@@ -2584,10 +2583,9 @@ static void execlists_init_reg_state(u32 *regs,
2584 2583
2585 CTX_REG(regs, CTX_CONTEXT_CONTROL, RING_CONTEXT_CONTROL(engine), 2584 CTX_REG(regs, CTX_CONTEXT_CONTROL, RING_CONTEXT_CONTROL(engine),
2586 _MASKED_BIT_DISABLE(CTX_CTRL_ENGINE_CTX_RESTORE_INHIBIT | 2585 _MASKED_BIT_DISABLE(CTX_CTRL_ENGINE_CTX_RESTORE_INHIBIT |
2587 CTX_CTRL_ENGINE_CTX_SAVE_INHIBIT) | 2586 CTX_CTRL_ENGINE_CTX_SAVE_INHIBIT |
2588 _MASKED_BIT_ENABLE(CTX_CTRL_INHIBIT_SYN_CTX_SWITCH | 2587 CTX_CTRL_RS_CTX_ENABLE) |
2589 (HAS_RESOURCE_STREAMER(dev_priv) ? 2588 _MASKED_BIT_ENABLE(CTX_CTRL_INHIBIT_SYN_CTX_SWITCH));
2590 CTX_CTRL_RS_CTX_ENABLE : 0)));
2591 CTX_REG(regs, CTX_RING_HEAD, RING_HEAD(base), 0); 2589 CTX_REG(regs, CTX_RING_HEAD, RING_HEAD(base), 0);
2592 CTX_REG(regs, CTX_RING_TAIL, RING_TAIL(base), 0); 2590 CTX_REG(regs, CTX_RING_TAIL, RING_TAIL(base), 0);
2593 CTX_REG(regs, CTX_RING_BUFFER_START, RING_START(base), 0); 2591 CTX_REG(regs, CTX_RING_BUFFER_START, RING_START(base), 0);
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index 80a8b6e57374..8003cef767ba 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -1980,9 +1980,7 @@ hsw_emit_bb_start(struct i915_request *rq,
1980 return PTR_ERR(cs); 1980 return PTR_ERR(cs);
1981 1981
1982 *cs++ = MI_BATCH_BUFFER_START | (dispatch_flags & I915_DISPATCH_SECURE ? 1982 *cs++ = MI_BATCH_BUFFER_START | (dispatch_flags & I915_DISPATCH_SECURE ?
1983 0 : MI_BATCH_PPGTT_HSW | MI_BATCH_NON_SECURE_HSW) | 1983 0 : MI_BATCH_PPGTT_HSW | MI_BATCH_NON_SECURE_HSW);
1984 (dispatch_flags & I915_DISPATCH_RS ?
1985 MI_BATCH_RESOURCE_STREAMER : 0);
1986 /* bit0-7 is the length on GEN6+ */ 1984 /* bit0-7 is the length on GEN6+ */
1987 *cs++ = offset; 1985 *cs++ = offset;
1988 intel_ring_advance(rq, cs); 1986 intel_ring_advance(rq, cs);
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.h b/drivers/gpu/drm/i915/intel_ringbuffer.h
index 57f3787ed6ec..8837079cb8b3 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.h
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.h
@@ -474,7 +474,6 @@ struct intel_engine_cs {
474 unsigned int dispatch_flags); 474 unsigned int dispatch_flags);
475#define I915_DISPATCH_SECURE BIT(0) 475#define I915_DISPATCH_SECURE BIT(0)
476#define I915_DISPATCH_PINNED BIT(1) 476#define I915_DISPATCH_PINNED BIT(1)
477#define I915_DISPATCH_RS BIT(2)
478 void (*emit_breadcrumb)(struct i915_request *rq, u32 *cs); 477 void (*emit_breadcrumb)(struct i915_request *rq, u32 *cs);
479 int emit_breadcrumb_sz; 478 int emit_breadcrumb_sz;
480 479