From: Daniel Vetter <daniel@ffwll.ch>
To: Imre Deak <imre.deak@intel.com>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH v2 3/4] drm/i915: make assert_device_not_suspended more precise
Date: Wed, 18 Nov 2015 16:47:10 +0100 [thread overview]
Message-ID: <20151118154710.GD20799@phenom.ffwll.local> (raw)
In-Reply-To: <1447859463.14073.18.camel@intel.com>
On Wed, Nov 18, 2015 at 05:11:03PM +0200, Imre Deak wrote:
> On ke, 2015-11-18 at 16:01 +0100, Daniel Vetter wrote:
> > On Wed, Nov 18, 2015 at 04:58:46PM +0200, Imre Deak wrote:
> > > On ke, 2015-11-18 at 16:44 +0200, Imre Deak wrote:
> > > > On ke, 2015-11-18 at 15:37 +0100, Daniel Vetter wrote:
> > > > > On Mon, Nov 09, 2015 at 09:13:45PM +0200, Imre Deak wrote:
> > > > > > Atm, we assert that the device is not suspended after the point
> > > > > > when the
> > > > > > HW is truly put to a suspended state. This is fine, but we can
> > > > > > catch
> > > > > > more problems if we check the RPM refcount. After that one drops
> > > > > > to
> > > > > > zero
> > > > > > we shouldn't access the HW any more, although the actual suspend
> > > > > > may be
> > > > > > delayed. The only complication is that we want to avoid asserts
> > > > > > while
> > > > > > the suspend handler itself is running, so add a flag to handle
> > > > > > this
> > > > > > case.
> > > > >
> > > > > Why do we want to avoid asserts firing while we go through the
> > > > > suspend
> > > > > handler? Calling assert_device_not_suspended from within rpm
> > > > > suspend/resume code sounds like a bug. Where/why does this happen?
> > > >
> > > > Yea, disable_rpm_asserts() is misnamed. Should be
> > > > disable_rpm_wakelock_asserts(). Will change that in the next
> > > > iteration.
> > >
> > > Ok, misunderstood your question. assert_device_not_suspended() is
> > > called during runtime suspend since we're accessing the HW until the
> > > point we set dev_priv->pm.suspended = true. Atm this wouldn't trigger a
> > > WARN, since assert_device_not_suspended() only checks pm.suspended and
> > > that will check out fine, but once we start to check HW accesses
> > > against the actual RPM refcount we want to disable the asserts on those
> > > in the handlers, since there the refcount is zero. Hence disabling it
> > > explicitly around the handlers, but we would still keep checking
> > > pm.suspended.
> >
> > That seems like we're mixing up 2 asserts:
> > - assert_device_not_suspended: To be used in runtime_suspend code.
> > - assert_holding_rpm_wakelock (or whatever, I'm bad at names): check the
> > count.
>
> We call this assert (atm assert_device_not_suspended()) from low level
> register access helpers, so we can't distinguish between calling one or
> the other assert depending on whether we are on the rpm suspend path or
> not. What this patch does is to switch all the places where call
> assert_device_not_suspended() to assert_rpm_wakelock_held(), since that
> one provides a bigger coverage. Since this change will also affect the
> low level reg access functions which are called during rpm suspend, we
> need to disable part of the assert that checks for the refcount which
> is known to be zero there.
>
> Otherwise assert_rpm_wakelock_held() also includes
> assert_device_not_suspended(), since that should be true in all other
> cases.
Ok, that makes sense. Should be in the commit message ;-)
Instead of cooking our own, what about checking
pci_dev->base.power.runtim_status == PM_SUSPENDING plus a comment?
-Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2015-11-18 15:47 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-09 18:20 [PATCH 0/4] drm/i915: improve the RPM device suspended assert Imre Deak
2015-11-09 18:20 ` [PATCH 1/4] drm/i915: export assert_device_not_suspended Imre Deak
2015-11-09 18:30 ` Ville Syrjälä
2015-11-09 18:43 ` Imre Deak
2015-11-09 20:52 ` Chris Wilson
2015-11-09 18:20 ` [PATCH 2/4] drm/i915: use assert_device_not_suspended instead of opencoding it Imre Deak
2015-11-09 21:04 ` Chris Wilson
2015-11-09 18:20 ` [PATCH 3/4] drm/i915: make assert_device_not_suspended more precise Imre Deak
2015-11-09 19:13 ` [PATCH v2 " Imre Deak
2015-11-09 21:44 ` Chris Wilson
2015-11-10 9:47 ` Imre Deak
2015-11-18 14:37 ` Daniel Vetter
2015-11-18 14:44 ` Imre Deak
2015-11-18 14:58 ` Imre Deak
2015-11-18 15:01 ` Daniel Vetter
2015-11-18 15:11 ` Imre Deak
2015-11-18 15:47 ` Daniel Vetter [this message]
2015-11-18 16:09 ` Imre Deak
2015-11-09 18:20 ` [PATCH 4/4] drm/i915: add assert_device_not_suspended to GGTT PTE updaters Imre Deak
2015-11-09 18:37 ` Ville Syrjälä
2015-11-09 18:48 ` Imre Deak
2015-11-09 19:14 ` [PATCH v2 " Imre Deak
2015-11-09 21:11 ` Chris Wilson
2015-11-09 21:24 ` Imre Deak
2015-11-09 21:29 ` 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=20151118154710.GD20799@phenom.ffwll.local \
--to=daniel@ffwll.ch \
--cc=imre.deak@intel.com \
--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.