public inbox for intel-gfx@lists.freedesktop.org
 help / color / mirror / Atom feed
From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: arun.siluvery@linux.intel.com
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [RFC] Move BDW workarounds to ring init fn
Date: Mon, 28 Jul 2014 20:26:45 +0300	[thread overview]
Message-ID: <20140728172645.GO27580@intel.com> (raw)
In-Reply-To: <1406565106-27522-1-git-send-email-arun.siluvery@linux.intel.com>

On Mon, Jul 28, 2014 at 05:31:45PM +0100, arun.siluvery@linux.intel.com wrote:
> From: Arun Siluvery <arun.siluvery@linux.intel.com>
> 
> This patch moves BDW workarounds from init_clock_gating() to render ring
> init fn otherwise they are lost when gpu is reset.
> In case of execlists, some of the workarounds modify registers that are
> part of register state context which doesn't get initialized until
> init_clock_gating(); this results in default context with incorrect values
> as it is restored and saved before updated by workarounds.

I don't think it has to do with execlists. Many of the registers are
part of the context image even in ring buffer mode AFAIK.

> 
> Open issue:
> For Wa4x4STCOptimizationDisable, we set CACHE_MODE_1[6:6] = 1
> At the time when HW contexts are enabled after rings are initialized with
> default context this workaround is valid but followed by a context switch
> this is getting reset, please see below log snippet.

This is a bit weird. The default context should have restore inhibit==1
so it shouldn't clobber the CACHE_MODE_1 register. There was a specific magic
dance you're supposed to do when accessing such registers with mmio, but here
we do the write even before the first context switch.

Apparently there was some kind of problem with CACHE_MODE_0 on snb too:
 commit 3a69ddd6f872180b6f61fda87152b37202118fbc
 Author: Kenneth Graunke <kenneth@whitecape.org>
 Date:   Fri Apr 27 12:44:41 2012 -0700

    drm/i915: Set the Stencil Cache eviction policy to non-LRA mode.

but IIRC I wasn't able to reproduce it when I tried.

Maybe we need to delay these register writes until we've switched to the default
context?

> 
> ...
> [    5.978209] [drm:i915_pages_create_for_stolen] offset=0x0, size=8294400
> [    5.978213] [drm:intel_alloc_plane_obj] plane fb obj ffff8801472e0000
> [    5.978215] [drm:i915_gem_setup_global_gtt] reserving preallocated space: 0 + 7e9000
> [    5.978216] [drm:i915_gem_setup_global_gtt] clearing unused GTT space: [7e9000, fffff000]
> [    5.979613] [drm:i915_gem_init] CACHE_MODE_1: 0x00000180
> [    5.981372] [drm:gen8_ppgtt_init] Allocated 4 pages for page directories (0 wasted)
> [    5.981373] [drm:gen8_ppgtt_init] Allocated 2048 pages for page tables (0 wasted)
> [    5.981376] [drm:i915_gem_context_init] HW context support initialized
> [    5.981462] [drm:i915_gem_init_hw] CACHE_MODE_1: 0x00000180
> [    5.981467] [drm:i915_gem_init_rings] CACHE_MODE_1: 0x00000180
> [    5.981704] [drm:bdw_init_workarounds] CACHE_MODE_1: 0x000001C0
> [    5.981716] [drm:init_status_page] bsd ring hws offset: 0x0081e000
> [    5.981792] [drm:init_status_page] blitter ring hws offset: 0x0083f000
> [    5.981910] [drm:init_status_page] video enhancement ring hws offset: 0x00860000
> [    5.982001] [drm:i915_gem_init_hw] CACHE_MODE_1: 0x000001C0
> [    5.982104] [drm:i915_gem_context_enable] Switch render ring to default_context
> [    5.982106] [drm:i915_gem_render_state_init] render ring: Render state init
> [    5.982120] [drm:do_switch] render ring, CACHE_MODE_1: 0x000001C0, uninitialized: 1
> [    5.982121] [drm:i915_gem_context_enable] Switch bsd ring to default_context
> [    5.982122] [drm:do_switch] bsd ring, CACHE_MODE_1: 0x000001C0, uninitialized: 0
> [    5.982123] [drm:i915_gem_context_enable] Switch blitter ring to default_context
> [    5.982126] [drm:do_switch] blitter ring, CACHE_MODE_1: 0x000001C0, uninitialized: 0
> [    5.982126] [drm:i915_gem_context_enable] Switch video enhancement ring to default_context
> [    5.982128] [drm:do_switch] video enhancement ring, CACHE_MODE_1: 0x000001C0, uninitialized: 0
> [    5.982133] [drm:i915_gem_init] CACHE_MODE_1: 0x000001C0
> [    5.982258] [drm:intel_init_clock_gating]
> ...
> [   10.037019] [drm:do_switch] blitter ring, CACHE_MODE_1: 0x00000180, uninitialized: 0
> ...
> [   10.488145] [drm:do_switch] render ring, CACHE_MODE_1: 0x00000180, uninitialized: 0
> ...
> 
> I am currently testing this with an igt which triggers a gpu reset and compares
> WA register contents before and after reset but the test fails because of
> this register hence not sending it now.
> Please let me know how to keep this WA valid after a context switch.
> 
> 
> Arun Siluvery (1):
>   drm/i915/bdw: Initialize BDW workarounds in render ring init fn
> 
>  drivers/gpu/drm/i915/i915_debugfs.c     | 46 ++++++++++++++++++++++
>  drivers/gpu/drm/i915/intel_pm.c         | 59 ----------------------------
>  drivers/gpu/drm/i915/intel_ringbuffer.c | 68 +++++++++++++++++++++++++++++++++
>  3 files changed, 114 insertions(+), 59 deletions(-)
> 
> -- 
> 1.9.2
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Ville Syrjälä
Intel OTC

  parent reply	other threads:[~2014-07-28 17:26 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-28 16:31 [RFC] Move BDW workarounds to ring init fn arun.siluvery
2014-07-28 16:31 ` [RFC] drm/i915/bdw: Initialize BDW workarounds in render " arun.siluvery
2014-07-28 17:00   ` Ville Syrjälä
2014-07-28 19:22     ` Daniel Vetter
2014-07-28 20:41       ` Siluvery, Arun
2014-07-28 20:46     ` Siluvery, Arun
2014-07-29  9:56       ` Ville Syrjälä
2014-07-28 17:26 ` Ville Syrjälä [this message]
2014-07-29 22:27   ` [RFC] Move BDW workarounds to " Siluvery, Arun
2014-07-30  9:36     ` Ville Syrjälä

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140728172645.GO27580@intel.com \
    --to=ville.syrjala@linux.intel.com \
    --cc=arun.siluvery@linux.intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox