drm/i915: Disable execlists by default for gen8

Submitted by Chris Wilson on April 11, 2015, 8:41 a.m.

Details

Message ID 1428741697-2137-1-git-send-email-chris@chris-wilson.co.uk
State New
Headers show

Not browsing as part of any series.

Commit Message

Chris Wilson April 11, 2015, 8:41 a.m.
Bug reports are still coming in for late 4.0-rcX that indicate that
execlists causes GPU hangs following resume.

Fixes regression from
commit d7f621e50704306c348ccb192f17047f1499f9bc
Author: Oscar Mateo <oscar.mateo@intel.com>
Date:   Thu Jul 24 17:04:49 2014 +0100

    drm/i915/bdw: Enable Logical Ring Contexts (hence, Execlists)

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89308
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Oscar Mateo <oscar.mateo@intel.com>
Cc: Damien Lespiau <damien.lespiau@intel.com>
Cc: Nick Hoath <nicholas.hoath@intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Michel Thierry <michel.thierry@intel.com>
Cc: Arun Siluvery <arun.siluvery@linux.intel.com>
Cc: John Harrison <John.C.Harrison@Intel.com>
Cc: Thomas Daniel <thomas.daniel@intel.com>
Cc: stable@vger.linux.kernel
---
 drivers/gpu/drm/i915/intel_lrc.c | 6 ++++++
 1 file changed, 6 insertions(+)

Patch hide | download patch | download mbox

diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
index a3ad95b6ea51..1b289481a9b3 100644
--- a/drivers/gpu/drm/i915/intel_lrc.c
+++ b/drivers/gpu/drm/i915/intel_lrc.c
@@ -232,9 +232,15 @@  int intel_sanitize_enable_execlists(struct drm_device *dev, int enable_execlists
 	if (enable_execlists == 0)
 		return 0;
 
+#if 0
+	/* Disable execlists by default for 4.0, since we still have
+	 * issues upon resume in the wild, e.g.
+	 * https://bugs.freedesktop.org/show_bug.cgi?id=89308
+	 */
 	if (HAS_LOGICAL_RING_CONTEXTS(dev) && USES_PPGTT(dev) &&
 	    i915.use_mmio_flip >= 0)
 		return 1;
+#endif
 
 	return 0;
 }

Comments

Tested-By: Intel Graphics QA PRTS (Patch Regression Test System Contact: shuang.he@intel.com)
Task id: 6182
-------------------------------------Summary-------------------------------------
Platform          Delta          drm-intel-nightly          Series Applied
PNV                 -4              276/276              272/276
ILK                                  301/301              301/301
SNB                                  316/316              316/316
IVB                 -2              328/328              326/328
BYT                                  285/285              285/285
HSW                                  394/394              394/394
BDW                 -6              321/321              315/321
-------------------------------------Detailed-------------------------------------
Platform  Test                                drm-intel-nightly          Series Applied
 PNV  igt@gen3_render_linear_blits      FAIL(4)PASS(5)      FAIL(1)PASS(1)
 PNV  igt@gen3_render_mixed_blits      FAIL(5)PASS(4)      FAIL(2)
 PNV  igt@gen3_render_tiledx_blits      FAIL(5)PASS(5)      FAIL(2)
 PNV  igt@gen3_render_tiledy_blits      FAIL(4)PASS(5)      FAIL(1)PASS(1)
 IVB  igt@gem_pwrite_pread@uncached-copy-performance      DMESG_WARN(1)PASS(4)      DMESG_WARN(2)
(dmesg patch applied)drm:i915_hangcheck_elapsed[i915]]*ERROR*Hangcheck_timer_elapsed...blitter_ring_idle@Hangcheck timer elapsed... blitter ring idle
*IVB  igt@gem_storedw_batches_loop@normal      PASS(2)      DMESG_WARN(1)PASS(1)
(dmesg patch applied)drm:i915_hangcheck_elapsed[i915]]*ERROR*Hangcheck_timer_elapsed...blitter_ring_idle@Hangcheck timer elapsed... blitter ring idle
*BDW  igt@gem_evict_everything@forked-interruptible      PASS(2)      TIMEOUT(2)
*BDW  igt@gem_evict_everything@forked-normal      PASS(2)      TIMEOUT(2)
*BDW  igt@gem_ringfill@render      PASS(2)      TIMEOUT(1)
*BDW  igt@gem_ringfill@render-interruptible      PASS(2)      TIMEOUT(1)
*BDW  igt@gem_ring_sync_copy@sync-render-blitter-read-write      PASS(2)      FAIL(1)
*BDW  igt@gem_ring_sync_copy@sync-render-blitter-write-read      PASS(2)      FAIL(1)
Note: You need to pay more attention to line start with '*'
On 04/11/2015 01:41 AM, Chris Wilson wrote:
> Bug reports are still coming in for late 4.0-rcX that indicate that
> execlists causes GPU hangs following resume.
> 
> Fixes regression from
> commit d7f621e50704306c348ccb192f17047f1499f9bc
> Author: Oscar Mateo <oscar.mateo@intel.com>
> Date:   Thu Jul 24 17:04:49 2014 +0100
> 
>     drm/i915/bdw: Enable Logical Ring Contexts (hence, Execlists)
> 
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89308
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
> Cc: Oscar Mateo <oscar.mateo@intel.com>
> Cc: Damien Lespiau <damien.lespiau@intel.com>
> Cc: Nick Hoath <nicholas.hoath@intel.com>
> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> Cc: Michel Thierry <michel.thierry@intel.com>
> Cc: Arun Siluvery <arun.siluvery@linux.intel.com>
> Cc: John Harrison <John.C.Harrison@Intel.com>
> Cc: Thomas Daniel <thomas.daniel@intel.com>
> Cc: stable@vger.linux.kernel
> ---
>  drivers/gpu/drm/i915/intel_lrc.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
> index a3ad95b6ea51..1b289481a9b3 100644
> --- a/drivers/gpu/drm/i915/intel_lrc.c
> +++ b/drivers/gpu/drm/i915/intel_lrc.c
> @@ -232,9 +232,15 @@ int intel_sanitize_enable_execlists(struct drm_device *dev, int enable_execlists
>  	if (enable_execlists == 0)
>  		return 0;
>  
> +#if 0
> +	/* Disable execlists by default for 4.0, since we still have
> +	 * issues upon resume in the wild, e.g.
> +	 * https://bugs.freedesktop.org/show_bug.cgi?id=89308
> +	 */
>  	if (HAS_LOGICAL_RING_CONTEXTS(dev) && USES_PPGTT(dev) &&
>  	    i915.use_mmio_flip >= 0)
>  		return 1;
> +#endif
>  
>  	return 0;
>  }
> 

But disabling execlists introduces its own problems, right?  Or was that
just with semaphores enabled, which we don't have right now?

Either way, we should root cause this one since it may be hiding on
gen9+ too...  any takers?

Jesse
On Sat, Apr 11, 2015 at 09:41:37AM +0100, Chris Wilson wrote:
> Bug reports are still coming in for late 4.0-rcX that indicate that
> execlists causes GPU hangs following resume.
> 
> Fixes regression from
> commit d7f621e50704306c348ccb192f17047f1499f9bc
> Author: Oscar Mateo <oscar.mateo@intel.com>
> Date:   Thu Jul 24 17:04:49 2014 +0100
> 
>     drm/i915/bdw: Enable Logical Ring Contexts (hence, Execlists)
> 
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89308

Ping?

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89915

Bugs are still being reported where execlists is the culprit in 4.0.6.
We have no advantages for execlists in 4.0, only performance and
stability regressions, so what was the justification for keeping it
enabled?
-Chris
On 7/7/2015 9:33 AM, Chris Wilson wrote:
> On Sat, Apr 11, 2015 at 09:41:37AM +0100, Chris Wilson wrote:
>> Bug reports are still coming in for late 4.0-rcX that indicate that
>> execlists causes GPU hangs following resume.
>>
>> Fixes regression from
>> commit d7f621e50704306c348ccb192f17047f1499f9bc
>> Author: Oscar Mateo <oscar.mateo@intel.com>
>> Date:   Thu Jul 24 17:04:49 2014 +0100
>>
>>      drm/i915/bdw: Enable Logical Ring Contexts (hence, Execlists)
>>
>> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89308
>
> Ping?
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89915
>
> Bugs are still being reported where execlists is the culprit in 4.0.6.
> We have no advantages for execlists in 4.0, only performance and
> stability regressions, so what was the justification for keeping it
> enabled?
> -Chris
>
Hi,

I still think it's the same problem fixed by Peter 
(http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=364aece01a2dd748fc36a1e8bf52ef639b0857bd).
The issue was a race between enabling the interrupts and completing the 
first batchbuffer, that's probably why we only saw it in chv, but it's 
the same code bdw uses.

v4.0.6 didn't get the fix,
http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tree/drivers/gpu/drm/i915/i915_drv.c?id=v4.0.6

Only v4.0.7:
http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tree/drivers/gpu/drm/i915/i915_drv.c?id=v4.0.7

-Michel