All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chris Wilson <chris@chris-wilson.co.uk>
To: Intel Graphics Development <intel-gfx@lists.freedesktop.org>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Subject: Re: [PATCH] drm/i915: fix forcewake related hangs on snb
Date: Thu, 26 Jul 2012 15:50:02 +0100	[thread overview]
Message-ID: <1343314207_3006@CP5-2952> (raw)
In-Reply-To: <1343312690-27527-1-git-send-email-daniel.vetter@ffwll.ch>

On Thu, 26 Jul 2012 16:24:50 +0200, Daniel Vetter <daniel.vetter@ffwll.ch> wrote:
> ... by adding seemingly redudant posting reads.
> 
> This little dragon lair exploded the first time around when we've
> refactored the code a bit to use the common wait_for_atomic_us in
> "drm/i915: Group the GT routines together in both code and vtable",
> which caused QA to file fdo bug #51738.
> 
> Chris Wilson entertained a few approaches to fixing #51738: Replacing
> the udelay(1) with the previously-used udelay(10) (or any other
> "sufficiently larger" delay), adding a posting read, or ditching the
> delay completely and using cpu_relax. We went with the cpu_relax and
> "915: Workaround hang with BSD and forcewake on SandyBridge". Which
> blew up in fdo bug #52424, but adding the posting read while still
> using cpu_relax seems to also fix that, it looks like the
> posting read is the important ingriedient to fix these rc6 related
> hangs on snb.
> 
> Popular theories as to why this is like it is include:
> - A herd of pink elephants got royally angered somehow.
> 
> - The gpu has internally different functional units and judging by the
>   register offsets, the forcewake request register and the forcewake
>   ack registers are _not_ in the same functional unit (or at least
>   aren't reached through the same routes). Hence the posting read
>   syncs up with the wrong block and gets the entire gpu confused.
> 
> - ...
> 
> As a minimal ducttape fix for 3.6, let's just put these posting reads
> into place again. We can try fancier approaches (like adding back the
> cpu_relax instead of the udelay) in -next.
> 
> This (re-)fixes a regression introduced in
> 
> commit 990bbdadabaa51828e475eda86ee5720a4910cc3
> Author: Chris Wilson <chris@chris-wilson.co.uk>
> Date:   Mon Jul 2 11:51:02 2012 -0300
> 
>     drm/i915: Group the GT routines together in both code and vtable
> 
> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=52424
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=51738u
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>

No change on IVB, fixes the dummy_reloc_loop hang on SNB.

Tested-by: Chris Wilson <chris@chris-wilson.co.uk>

udelay() is winning the award for most popular function. Almost, it got
pipped at the last second by read_hpet() on earlier chipsets.
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre

  reply	other threads:[~2012-07-26 14:50 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-26 14:24 [PATCH] drm/i915: fix forcewake related hangs on snb Daniel Vetter
2012-07-26 14:50 ` Chris Wilson [this message]
2012-07-26 16:53   ` Daniel Vetter

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=1343314207_3006@CP5-2952 \
    --to=chris@chris-wilson.co.uk \
    --cc=daniel.vetter@ffwll.ch \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.