All of lore.kernel.org
 help / color / mirror / Atom feed
From: Imre Deak <imre.deak@intel.com>
To: Chris Wilson <chris@chris-wilson.co.uk>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH v3 4/7] drm/i915: add support for checking if we hold an RPM reference
Date: Thu, 12 Nov 2015 19:50:09 +0200	[thread overview]
Message-ID: <1447350609.6396.52.camel@intel.com> (raw)
In-Reply-To: <20151112170420.GL6247@nuc-i3427.alporthouse.com>

On to, 2015-11-12 at 17:04 +0000, Chris Wilson wrote:
> On Thu, Nov 12, 2015 at 06:40:18PM +0200, Imre Deak wrote:
> > diff --git a/drivers/gpu/drm/i915/i915_irq.c
> > b/drivers/gpu/drm/i915/i915_irq.c
> > index 825114a..ee3ef69 100644
> > --- a/drivers/gpu/drm/i915/i915_irq.c
> > +++ b/drivers/gpu/drm/i915/i915_irq.c
> > @@ -2962,6 +2962,9 @@ static void i915_hangcheck_elapsed(struct
> > work_struct *work)
> >  	if (!i915.enable_hangcheck)
> >  		return;
> >  
> > +	assert_rpm_device_not_suspended(dev_priv);
> > +	disable_rpm_asserts(dev_priv);
> > +
> >  	for_each_ring(ring, dev_priv, i) {
> >  		u64 acthd;
> >  		u32 seqno;
> > @@ -3053,13 +3056,18 @@ static void i915_hangcheck_elapsed(struct
> > work_struct *work)
> >  		}
> >  	}
> >  
> > -	if (rings_hung)
> > -		return i915_handle_error(dev, true, "Ring hung");
> > +	if (rings_hung) {
> > +		i915_handle_error(dev, true, "Ring hung");
> > +		goto out;
> > +	}
> >  
> >  	if (busy_count)
> >  		/* Reset timer case chip hangs without another
> > request
> >  		 * being added */
> >  		i915_queue_hangcheck(dev);
> > +
> > +out:
> > +	enable_rpm_asserts(dev_priv);
> 
> Nice catch!

It triggered the new assert easily just before going to runtime
suspend..

> Since the rpm wakelock here is covered by
> intel_mark_busy/intel_mark_idle(), we should be able to do something
> like:
> 
> if (!intel_runtime_pm_tryget()
> 	return;
> 
> where intel_runtime_pm_tryget does something like
> atomic_inc_unless_zero().
> 
> Is something like that possible?

Yea, I could add this, but I'd like to better understand the need, see
below.

> As it stands since we don't actually cancel the hangcheck when we
drop
> the rpm wakelock in intel_mark_idle() it can very well come to pass
> that
> we execute this whilst the device is asleep. However, if the device
> is
> alseep, we now that we are no longer executing.

But how could this run while asleep, since we flush the work in the
runtime suspend handler before turning off the HW? But even if it can't
run your idea would be clearer imo..

--Imre
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2015-11-12 17:50 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-12 16:40 [PATCH v3 0/7] drm/i915: improve the RPM device suspended assert Imre Deak
2015-11-12 16:40 ` [PATCH v3 1/7] drm/i915: remove HAS_RUNTIME_PM check from RPM get/put/assert helpers Imre Deak
2015-11-12 22:54   ` Chris Wilson
2015-11-12 16:40 ` [PATCH v3 2/7] drm/i915: add assert_rpm_wakelock_held helper Imre Deak
2015-11-12 22:56   ` Chris Wilson
2015-11-12 16:40 ` [PATCH v3 3/7] drm/i915: use assert_rpm_wakelock_held instead of opencoding it Imre Deak
2015-11-12 22:58   ` Chris Wilson
2015-11-12 16:40 ` [PATCH v3 4/7] drm/i915: add support for checking if we hold an RPM reference Imre Deak
2015-11-12 17:04   ` Chris Wilson
2015-11-12 17:50     ` Imre Deak [this message]
2015-11-12 20:41       ` Chris Wilson
2015-11-12 20:49         ` Imre Deak
2015-11-12 22:27           ` Chris Wilson
2015-11-12 23:03   ` Chris Wilson
2015-11-12 16:40 ` [PATCH v3 5/7] drm/i915: sanitize the asserts in the RPM get/put helpers Imre Deak
2015-11-12 23:06   ` Chris Wilson
2015-11-13 13:52   ` [PATCH v4 5/7] drm/i915: check that we hold an RPM wakelock ref before we put it Imre Deak
2015-11-12 16:40 ` [PATCH v3 6/7] drm/i915: add support for checking RPM atomic sections Imre Deak
2015-11-13 14:08   ` [PATCH v4 " Imre Deak
2015-11-12 16:40 ` [PATCH v3 7/7] drm/i915: check that we are in an RPM atomic section in GGTT PTE updaters Imre Deak
2015-11-12 23:09   ` Chris Wilson
2015-11-13  8:52 ` [PATCH v3 0/7] drm/i915: improve the RPM device suspended assert Jani Nikula
2015-11-13 14:23   ` Imre Deak

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=1447350609.6396.52.camel@intel.com \
    --to=imre.deak@intel.com \
    --cc=chris@chris-wilson.co.uk \
    --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.