All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chris Wilson <chris@chris-wilson.co.uk>
To: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 3/3] drm/i915: Update primary planes after a GPU reset
Date: Fri, 15 Feb 2013 23:47:52 +0000	[thread overview]
Message-ID: <20130215234752.GA18708@cantiga.alporthouse.com> (raw)
In-Reply-To: <20130215165603.GE9135@intel.com>

On Fri, Feb 15, 2013 at 06:56:03PM +0200, Ville Syrjälä wrote:
> On Fri, Feb 15, 2013 at 03:28:33PM +0000, Chris Wilson wrote:
> > On Fri, Feb 15, 2013 at 05:07:46PM +0200, ville.syrjala@linux.intel.com wrote:
> > > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > 
> > > GPU reset will drop all flips that are still in the ring. So after the
> > > reset, call update_plane() for all CRTCs to make sure the primary
> > > planes are scanning out from the correct buffer.
> > > 
> > > The base address update will also generate a FLIP_DONE interrupt, which
> > > will complete any pending flips. That means user space will get its
> > > page flip events and won't get stuck waiting for them.
> > 
> > Not for all generations.
> 
> Hmm OK those seem to be the ones with the pending flip status bit
> (Gen4 and older?).

Yes. Also notably the ones unlikely to survive the GPU reset :)

> But can someone explain why on those platforms we also check the
> vblank interrupt status bit before handling the page flip interrupt?

For those generations, we are meant to detect the transition of pending
flip status from 1 -> 0. That transition of course doesn't generate an
interrupt (rather it stops generating one), so the nearest I could come
up with was in anticipating the vblank after we saw the pending flip
status was close enough. In the case of a pending vblank raising an
interrupt just as the pending flip status is asserted, shouldn't MSI
prevent the pending flip from being asserted as we process the IIR for
the vblank. Of course not all of those chipsets even have MSI. I'm not
even sure if we can close that race.

> Also wtf is i965_irq_handler doing? Based on the code it seems to be
> expecting the pending flip interrupt to happen when the CS executes the
> instruction, and then it'll finish the page flip from the following
> vblank irq. BSpec doesn't agree, and still maintains that the page flip
> interrupt will be generated when the flip really completes. Even if the
> hardware would work the way the code suggests, the code is racy if the
> ISR is delayed a bit and ends up handling the previous vblank interrupt
> and the following flip pending interrupt at the same time. We'd really
> need to check the live flip pending status from the ISR to make it
> work right.

Just be sure that you are reading the bspec for the original gen4 that
has not been clobbered by later refinements. If it stands that we can
trust the flip done interrupt for gen4, then that simplifies that
routine greatly. And could even close the mystery pageflipping is broken
on gen4 bugs.
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre

  reply	other threads:[~2013-02-15 23:48 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-02-15 15:07 [PATCH 0/3] drm/i915: More page flip vs. reset improvements ville.syrjala
2013-02-15 15:07 ` [PATCH v2 1/3] drm/i915: Wake up pending_flip_queue as part of reset handling ville.syrjala
2013-02-15 23:53   ` Chris Wilson
2013-02-18  9:58     ` Ville Syrjälä
2013-02-18 12:41       ` Ville Syrjälä
2013-02-18 15:31         ` Ville Syrjälä
2013-02-18 16:39           ` Daniel Vetter
2013-02-15 15:07 ` [PATCH v2 2/3] drm/i915: Really wait for pending flips when panning ville.syrjala
2013-02-15 15:07 ` [PATCH 3/3] drm/i915: Update primary planes after a GPU reset ville.syrjala
2013-02-15 15:28   ` Chris Wilson
2013-02-15 16:56     ` Ville Syrjälä
2013-02-15 23:47       ` Chris Wilson [this message]
2013-02-18 10:15         ` Ville Syrjälä
2013-02-18 10:47           ` Chris Wilson
2013-02-18 11:50             ` Ville Syrjälä
2013-02-18 12:08               ` Chris Wilson

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=20130215234752.GA18708@cantiga.alporthouse.com \
    --to=chris@chris-wilson.co.uk \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=ville.syrjala@linux.intel.com \
    /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.