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 05/10] drm/i915: add assert_rpm_wakelock_held helper
Date: Wed, 16 Dec 2015 14:54:43 +0200	[thread overview]
Message-ID: <1450270483.15887.9.camel@intel.com> (raw)
In-Reply-To: <20151216121112.GL6851@nuc-i3427.alporthouse.com>

On ke, 2015-12-16 at 12:11 +0000, Chris Wilson wrote:
> On Tue, Dec 15, 2015 at 08:10:33PM +0200, Imre Deak wrote:
> > As a preparation for follow-up patches add a new helper that checks
> > whether we hold an RPM reference, since this is what we want most
> > of
> > the cases. Atm this helper will only check for the HW suspended
> > state, a
> > follow-up patch will do the actual change to check the refcount
> > instead.
> > One exception is the forcewake release timer function, where it's
> > guaranteed that the HW is on even though the RPM refcount drops to
> > zero.
> > This guarantee is provided by flushing the timer in the runtime
> > suspend
> > handler. So leave the assert_device_not_suspended check in place
> > there.
> > 
> > Also rename assert_device_suspended for consistency and export
> > these
> > helpers as a preparation for the follow-up patches.
> > 
> > No functional change.
> > 
> > v3:
> > - change the assert warning message to be more meaningful (Chris)
> > 
> > Signed-off-by: Imre Deak <imre.deak@intel.com>
> > Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
> > ---
> >  drivers/gpu/drm/i915/intel_drv.h    | 14 ++++++++++++++
> >  drivers/gpu/drm/i915/intel_uncore.c | 20 +++++++-------------
> >  2 files changed, 21 insertions(+), 13 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/intel_drv.h
> > b/drivers/gpu/drm/i915/intel_drv.h
> > index 798463e..9837a25 100644
> > --- a/drivers/gpu/drm/i915/intel_drv.h
> > +++ b/drivers/gpu/drm/i915/intel_drv.h
> > @@ -1430,6 +1430,20 @@ void intel_display_power_get(struct
> > drm_i915_private *dev_priv,
> >  			     enum intel_display_power_domain
> > domain);
> >  void intel_display_power_put(struct drm_i915_private *dev_priv,
> >  			     enum intel_display_power_domain
> > domain);
> > +
> > +static inline void
> > +assert_rpm_device_not_suspended(struct drm_i915_private *dev_priv)
> > +{
> > +	WARN_ONCE(dev_priv->pm.suspended,
> > +		  "Device suspended during HW access\n");
> > +}
> 
> On irc, Joonas expressed a wish to see all errors during an igt run,
> i.e. something like
> 
> static inline void
> assert_rpm_device_not_suspended(struct drm_i915_private *dev_priv)
> {
> 	WARN(dev_priv->pm.suspended &&
> 	     atomic_inc_return(&dev_priv->pm.errors) < 0,
> 		  "Device suspended during HW access\n");
> }
> 
> with
> 
> static int
> i915_pm_errors_get(void *data, u64 *val)
> {
> 	struct drm_device *dev = data;
> 
> 	*val = atomic_read(&to_i915(dev)->pm.erors);
> 	return 0;
> }
> 
> static int
> i915_pm_errors_set(void *data, u64 val)
> {
> 	struct drm_device *dev = data;
> 
> 	atomic_set(&to_i915(dev)->pm.errors, val);
> 	return 0;
> }
> 
> DEFINE_SIMPLE_ATTRIBUTE(i915_pm_errors_fops,
>                         i915_pm_errors_get,
> 			i915_pm_errors_set,
> 			"0x%llx\n");
> 
> 
> Then users only see the first WARN (and not swamped when it does go
> wrong) and igt can echo INT_MIN >
> /sys/kernel/debug/dri/0/i915_pm_errors
> to generate a WARN for each failure (and can even do a quick check
> for
> any errors during a test by reading back i915_pm_errors).

Sounds good, we could use this also for other PM related error
reporting.

Are you ok to do this as a follow-up?

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

  reply	other threads:[~2015-12-16 12:54 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-15 18:10 [PATCH v4 00/10] drm/i915: improve the RPM device suspended assert Imre Deak
2015-12-15 18:10 ` [PATCH 01/10] drm/i915: clarify comment about mandatory RPM put/get during driver load/unload Imre Deak
2015-12-16 10:44   ` Joonas Lahtinen
2015-12-15 18:10 ` [PATCH 02/10] drm/i915: disable power well support on platforms without runtime PM support Imre Deak
2015-12-15 20:57   ` Ville Syrjälä
2015-12-15 22:55     ` Imre Deak
2015-12-16 11:12     ` Daniel Vetter
2015-12-16 13:21       ` Imre Deak
2015-12-16 17:31         ` Ville Syrjälä
2015-12-16 18:13           ` Imre Deak
2015-12-15 18:10 ` [PATCH 03/10] drm/i915: refactor RPM disabling due to RC6 being disabled Imre Deak
2015-12-16 10:54   ` Joonas Lahtinen
2015-12-16 11:01     ` Joonas Lahtinen
2015-12-15 18:10 ` [PATCH 04/10] drm/i915: remove HAS_RUNTIME_PM check from RPM get/put/assert helpers Imre Deak
2015-12-16 10:56   ` Joonas Lahtinen
2015-12-16 13:49   ` [PATCH 4.1/10] drm/i915: get a permanent RPM reference on platforms w/o RPM support Imre Deak
2015-12-16 13:53     ` [PATCH v2 " Imre Deak
2015-12-16 17:26       ` Ville Syrjälä
2015-12-16 18:22         ` Imre Deak
2015-12-17 11:44       ` [PATCH v3.1/10] " Imre Deak
2015-12-17 11:48   ` [PATCH v5 04/10] drm/i915: remove HAS_RUNTIME_PM check from RPM get/put/assert helpers Imre Deak
2015-12-17 12:46     ` Joonas Lahtinen
2015-12-15 18:10 ` [PATCH 05/10] drm/i915: add assert_rpm_wakelock_held helper Imre Deak
2015-12-16 12:11   ` Chris Wilson
2015-12-16 12:54     ` Imre Deak [this message]
2015-12-16 13:02       ` Chris Wilson
2015-12-16 13:39         ` Joonas Lahtinen
2015-12-16 13:43           ` Imre Deak
2015-12-15 18:10 ` [PATCH 06/10] drm/i915: use assert_rpm_wakelock_held instead of opencoding it Imre Deak
2015-12-15 18:10 ` [PATCH 07/10] drm/i915: add support for checking if we hold an RPM reference Imre Deak
2015-12-15 21:07   ` Chris Wilson
2015-12-15 22:52     ` Imre Deak
2015-12-16  0:14       ` Chris Wilson
2015-12-16  0:52   ` [PATCH v5 " Imre Deak
2015-12-15 18:10 ` [PATCH 08/10] drm/i915: check that we hold an RPM wakelock ref before we put it Imre Deak
2015-12-16 11:00   ` Joonas Lahtinen
2015-12-16 11:07     ` Chris Wilson
2015-12-16 12:49       ` Imre Deak
2015-12-15 18:10 ` [PATCH 09/10] drm/i915: add support for checking RPM atomic sections Imre Deak
2015-12-16 11:06   ` Joonas Lahtinen
2015-12-16 11:18   ` Daniel Vetter
2015-12-16 22:53     ` Imre Deak
2015-12-15 18:10 ` [PATCH 10/10] drm/i915: check that we are in an RPM atomic section in GGTT PTE updaters Imre Deak
2015-12-17 14:44 ` [PATCH v4 00/10] drm/i915: improve the RPM device suspended assert 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=1450270483.15887.9.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.