Intel-GFX Archive on 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 1/2] drm/i915: Get power refs in encoder->get_power_domain()
Date: Sun, 7 Apr 2019 14:55:14 +0300	[thread overview]
Message-ID: <20190407115514.GA17917@ideak-desk.fi.intel.com> (raw)
In-Reply-To: <155463726370.3198.12596401023290586495@skylake-alporthouse-com>

On Sun, Apr 07, 2019 at 12:41:08PM +0100, Chris Wilson wrote:
> Quoting Imre Deak (2019-04-07 11:25:37)
> > On Sat, Apr 06, 2019 at 05:05:53PM +0100, Chris Wilson wrote:
> > > Quoting Imre Deak (2019-04-05 16:36:56)
> > > > Push getting the reference for the encoders' power domains into the
> > > > encoder get_power_domain() hook instead of doing this from the caller.
> > > > This way the encoder can store away the corresponding wakerefs.
> > > > 
> > > > This fixes the DSI encoder disabling, which didn't release these
> > > > power references it acquired during HW state readout.
> > > 
> > > The io_wakeref is for the paired io_enable/io_disable.
> > > 
> > > get_encoder_power_domains() is the owner of these wakerefs, and they
> > > then belong to the atomic state from preparation through use to final
> > > release.
> > 
> > Yes, we have two cases:
> > 
> > 1. HW readout
> > 
> > encoder->get_power_domains() -> io_enable() -> takes wakerefs
> > encoder->disable() -> io_disable() -> releases wakerefs
> 
> However, get_power_domains is used for the atomic state wakerefs (as
> well?) and they have different much longer lifetimes.

It's only used during HW readout, if the encoder is active. Then we need
to take the wakerefs the same way encoder->enable() would take them,
since ->enable() won't be called. Then the refs taken by
->get_power_domains() will be held for long, until ->disable() is
called, so they have the same lifetime as in the ->enable()/->disable()
case.

> Clear io_wakerefs, and put a WARN_ON(io_wakeref[]) prior to filling it
> to convince me that it is being used to track a temporary wakeref.

Ok, I thought about it too just after you wrote. Yes, at that point
there should be no wakerefs stored there, which we should check for.
Will send v2.

> get_power_domains() and atomic needs to take responsibility for the
> overlapping set of powerwells imo.

->get_power_domains() is essentially the powerref acquisition part of the
encoder->get_hw_state(). We have a separate hook for it since the latter
one is also called during verification, where we don't want to take the
long time refs (they must have been acquired already by the modeset we
are verifying).

> -Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2019-04-07 11:55 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-05 15:36 [PATCH 1/2] drm/i915: Get power refs in encoder->get_power_domain() Imre Deak
2019-04-05 15:36 ` [PATCH 2/2] drm/i915/icl: Simplify release of encoder power refs Imre Deak
2019-04-05 17:37 ` ✓ Fi.CI.BAT: success for series starting with [1/2] drm/i915: Get power refs in encoder->get_power_domain() Patchwork
2019-04-06 15:53 ` ✗ Fi.CI.IGT: failure " Patchwork
2019-04-07 10:48   ` Imre Deak
2019-04-06 16:05 ` [PATCH 1/2] " Chris Wilson
2019-04-07 10:25   ` Imre Deak
2019-04-07 11:41     ` Chris Wilson
2019-04-07 11:55       ` Imre Deak [this message]
2019-04-07 12:06         ` Imre Deak
2019-04-07 12:41           ` Chris Wilson
2019-04-07 12:46 ` [PATCH v2 1/2] drm/i915: Get power refs in encoder->get_power_domains() Imre Deak
2019-04-07 13:04   ` Chris Wilson
2019-04-07 13:32 ` ✓ Fi.CI.BAT: success for series starting with [v2,1/2] drm/i915: Get power refs in encoder->get_power_domains() (rev2) Patchwork
2019-04-07 14:40 ` ✗ Fi.CI.IGT: failure " Patchwork
2019-04-08 15:40   ` 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=20190407115514.GA17917@ideak-desk.fi.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox