All of lore.kernel.org
 help / color / mirror / Atom feed
From: Imre Deak <imre.deak@intel.com>
To: Daniel Vetter <daniel@ffwll.ch>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH v4] drm/i915: get a runtime PM ref for the deferred GPU reset work
Date: Wed, 23 Apr 2014 10:52:10 +0300	[thread overview]
Message-ID: <1398239530.2947.8.camel@ideak-mobl> (raw)
In-Reply-To: <20140423070731.GR10722@phenom.ffwll.local>

On Wed, 2014-04-23 at 09:07 +0200, Daniel Vetter wrote:
> On Wed, Apr 23, 2014 at 01:13:40AM +0300, Imre Deak wrote:
> > Atm we can end up in the GPU reset deferred work in D3 state if the last
> > runtime PM reference is dropped between detecting a hang/scheduling the
> > work and executing the work. At least one such case I could trigger is
> > the simulated reset via the i915_wedged debugfs entry. Fix this by
> > getting an RPM reference around accessing the HW in the reset work.
> > 
> > v2:
> > - Instead of getting/putting the RPM reference in the reset work itself,
> >   get it already before scheduling the work. By this we also prevent
> >   going to D3 before the work gets to run, in addition to making sure
> >   that we run the work itself in D0. (Ville, Daniel)
> > v3:
> > - fix inverted logic fail when putting the RPM ref on behalf of a
> >   cancelled GPU reset work (Ville)
> > v4:
> > - Taking the RPM ref in the interrupt handler isn't really needed b/c
> >   it's already guaranteed that we hold an RPM ref until the end of the
> >   reset work in all cases we care about. So take the ref in the reset
> >   work (for cases like i915_wedged_set). (Daniel)
> > 
> > Signed-off-by: Imre Deak <imre.deak@intel.com>
> > ---
> >  drivers/gpu/drm/i915/i915_irq.c | 10 ++++++++++
> >  1 file changed, 10 insertions(+)
> > 
> > diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
> > index a651d0d..0e47111 100644
> > --- a/drivers/gpu/drm/i915/i915_irq.c
> > +++ b/drivers/gpu/drm/i915/i915_irq.c
> > @@ -2175,6 +2175,14 @@ static void i915_error_work_func(struct work_struct *work)
> >  				   reset_event);
> >  
> >  		/*
> > +		 * In most cases it's guaranteed that we get here with an RPM
> > +		 * reference held, for example because there is a pending GPU
> > +		 * request that won't finish until the reset is done. This
> > +		 * isn't the case at least when we get here by doing a
> > +		 * simulated reset via debugs, so get an RPM reference.
> 
>                                       ^debugfs
> 
> Also maybe "..., so get a RPM reference just to quiet the warnings."

Do you mean it's not a problem to perform the reset in D3 state other
than getting warnings?

--Imre

> -Daniel
> 
> > +		 */
> > +		intel_runtime_pm_get(dev_priv);
> > +		/*
> >  		 * All state reset _must_ be completed before we update the
> >  		 * reset counter, for otherwise waiters might miss the reset
> >  		 * pending state and not properly drop locks, resulting in
> > @@ -2184,6 +2192,8 @@ static void i915_error_work_func(struct work_struct *work)
> >  
> >  		intel_display_handle_reset(dev);
> >  
> > +		intel_runtime_pm_put(dev_priv);
> > +
> >  		if (ret == 0) {
> >  			/*
> >  			 * After all the gem state is reset, increment the reset
> > -- 
> > 1.8.4
> > 
> > _______________________________________________
> > Intel-gfx mailing list
> > Intel-gfx@lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/intel-gfx
> 

  reply	other threads:[~2014-04-23  7:52 UTC|newest]

Thread overview: 85+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-14 17:24 [PATCH v2 00/25] vlv: add support for RPM Imre Deak
2014-04-14 17:24 ` [PATCH v2 01/25] drm/i915: vlv: clean up GTLC wake control/status register macros Imre Deak
2014-04-24 21:04   ` Rodrigo Vivi
2014-04-14 17:24 ` [PATCH v2 02/25] drm/i915: vlv: clear master interrupt flag when disabling interrupts Imre Deak
2014-04-14 17:24 ` [PATCH v2 03/25] drm/i915: vlv: add RC6 residency counters Imre Deak
2014-04-14 17:24 ` [PATCH v2 04/25] drm/i915: fix the RC6 status debug print Imre Deak
2014-04-14 17:24 ` [PATCH v2 05/25] drm/i915: remove the i915_dpio debugfs entry Imre Deak
2014-04-14 17:24 ` [PATCH v2 06/25] drm/i915: get a runtime PM ref for debugfs entries where needed Imre Deak
2014-04-14 17:24 ` [PATCH v2 07/25] drm/i915: move getting struct_mutex lower in the callstack during GPU reset Imre Deak
2014-04-14 17:24 ` [PATCH v2 08/25] drm/i915: get a runtime PM ref for the deferred GT powersave enabling Imre Deak
2014-04-25  7:59   ` Daniel Vetter
2014-04-25  8:14     ` Imre Deak
2014-04-25  9:09       ` Daniel Vetter
2014-04-25  8:01   ` Daniel Vetter
2014-04-14 17:24 ` [PATCH v2 09/25] drm/i915: get a runtime PM ref for the deferred GPU reset work Imre Deak
2014-04-16 12:11   ` Ville Syrjälä
2014-04-18 12:47   ` [PATCH v3] " Imre Deak
2014-04-22 19:38     ` Daniel Vetter
2014-04-22 20:34       ` Imre Deak
2014-04-22 21:05         ` Daniel Vetter
2014-04-22 22:13     ` [PATCH v4] " Imre Deak
2014-04-23  7:07       ` Daniel Vetter
2014-04-23  7:52         ` Imre Deak [this message]
2014-04-25  8:00           ` Daniel Vetter
2014-04-14 17:24 ` [PATCH v2 10/25] drm/i915: gen2: move error capture of IER to its correct place Imre Deak
2014-04-16 12:22   ` Ville Syrjälä
2014-04-16 12:57     ` Imre Deak
2014-04-24 21:06       ` Rodrigo Vivi
2014-04-14 17:24 ` [PATCH v2 11/25] drm/i915: add missing error capturing of the PIPESTAT reg Imre Deak
2014-04-16 12:17   ` Ville Syrjälä
2014-04-18 11:44     ` Imre Deak
2014-04-18 12:55   ` [PATCH v3 " Imre Deak
2014-04-23  7:53     ` Ville Syrjälä
2014-04-14 17:24 ` [PATCH v2 12/25] drm/i915: vlv: check port power domain instead of only D0 for eDP VDD on Imre Deak
2014-04-14 17:24 ` [PATCH v2 13/25] drm/i915: fix unbalanced GT powersave enable / disable calls Imre Deak
2014-04-14 17:24 ` [PATCH v2 14/25] drm/i915: sanitize enable_rc6 option Imre Deak
2014-04-16 12:28   ` Ville Syrjälä
2014-04-16 12:37     ` Imre Deak
2014-04-18 13:01   ` [PATCH v3 " Imre Deak
2014-04-23  7:58     ` Ville Syrjälä
2014-04-14 17:24 ` [PATCH v2 15/25] drm/i915: disable runtime PM if RC6 is disabled Imre Deak
2014-04-14 17:24 ` [PATCH v2 16/25] drm/i915: make runtime PM interrupt enable/disable platform independent Imre Deak
2014-04-14 17:24 ` [PATCH v2 17/25] drm/i915: factor out gen6_update_ring_freq Imre Deak
2014-04-16 17:31   ` Ville Syrjälä
2014-04-18 13:16   ` [PATCH v3 " Imre Deak
2014-04-23  7:59     ` Ville Syrjälä
2014-04-14 17:24 ` [PATCH v2 18/25] drm/i915: make runtime PM swizzling/ring_freq init platform independent Imre Deak
2014-04-14 17:24 ` [PATCH v2 19/25] drm/i915: reinit GT power save during resume Imre Deak
2014-04-16 17:46   ` Ville Syrjälä
2014-04-18 10:51     ` Imre Deak
2014-04-22 17:21   ` [PATCH v3 " Imre Deak
2014-04-23  8:06     ` Ville Syrjälä
2014-04-14 17:24 ` [PATCH v2 20/25] drm/i915: vlv: setup RPS min/max frequencies once during init time Imre Deak
2014-04-14 17:24 ` [PATCH v2 21/25] drm/i915: vlv: factor out vlv_force_gfx_clock Imre Deak
2014-04-16 17:49   ` Ville Syrjälä
2014-04-18 13:35   ` [PATCH v3 21/25] drm/i915: vlv: factor out vlv_force_gfx_clock and check for pending force-off Imre Deak
2014-04-23  8:11     ` Ville Syrjälä
2014-04-14 17:24 ` [PATCH v2 22/25] drm/i915: vlv: increase timeout when forcing on the GFX clock Imre Deak
2014-04-25 14:04   ` Daniel Vetter
2014-04-14 17:24 ` [PATCH v2 23/25] drm/i915: add various missing GTI/Gunit register definitions Imre Deak
2014-04-24 21:17   ` Rodrigo Vivi
2014-04-24 21:49     ` Imre Deak
2014-04-30 14:32   ` Ville Syrjälä
2014-05-05 11:43     ` Imre Deak
2014-05-05 12:13   ` [PATCH v3 " Imre Deak
2014-05-05 12:21     ` Ville Syrjälä
2014-04-14 17:24 ` [PATCH v2 24/25] drm/i915: propagate the error code from runtime PM callbacks Imre Deak
2014-04-15 13:39   ` [PATCH v3 " Imre Deak
2014-04-30 18:05     ` Ville Syrjälä
2014-04-30 18:53       ` Imre Deak
2014-05-05 12:44         ` Ville Syrjälä
2014-05-05 13:18           ` Imre Deak
2014-04-14 17:24 ` [PATCH v2 25/25] drm/i915: vlv: add runtime PM support Imre Deak
2014-04-16 12:39   ` Ville Syrjälä
2014-04-16 14:53   ` Daniel Vetter
2014-04-16 16:01     ` Imre Deak
2014-04-22 17:28   ` [PATCH v3 " Imre Deak
2014-04-22 22:09     ` [PATCH v4] drm/i915: get a runtime PM ref for the deferred GPU reset work Imre Deak
2014-04-24 21:02       ` Rodrigo Vivi
2014-04-30 17:35     ` [PATCH v3 25/25] drm/i915: vlv: add runtime PM support Ville Syrjälä
2014-05-05  9:33       ` Daniel Vetter
2014-05-05 12:19     ` [PATCH v4 " Imre Deak
2014-04-14 17:41 ` [PATCH v2 26/25] drm/i915: vlv: enable runtime PM Imre Deak
2014-05-06 19:39   ` Daniel Vetter
2014-04-17 11:00 ` [PATCH v2 00/25] vlv: add support for RPM 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=1398239530.2947.8.camel@ideak-mobl \
    --to=imre.deak@intel.com \
    --cc=daniel@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.