Re: [PATCH 02/17] drm/i915: Warn if stealing power sequencer from an active eDP port

Daniel Vetter
2014-10-28T08:34:29Z

On Tue, Oct 28, 2014 at 10:14:54AM +0200, Ville Syrjälä wrote:
> On Tue, Oct 28, 2014 at 09:10:13AM +0100, Daniel Vetter wrote:
> > On Thu, Oct 16, 2014 at 09:27:28PM +0300, ville.syrjala@linux.intel.com wrote:
> > > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > >
> > > eDP ports need the power seqeuncer whenever the port is active. Warn if
> > > we accidentally steal the power sequener from an active eDP port. This
> > > should not happen unless there's a bug somewhere else, but it's best to
> > > scream loudly if it happens to help with debugging.
> > >
> > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > ---
> > > drivers/gpu/drm/i915/intel_dp.c | 4 ++++
> > > 1 file changed, 4 insertions(+)
> > >
> > > diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> > > index de919e9..7ac5c47 100644
> > > --- a/drivers/gpu/drm/i915/intel_dp.c
> > > +++ b/drivers/gpu/drm/i915/intel_dp.c
> > > @@ -2606,6 +2606,10 @@ static void vlv_steal_power_sequencer(struct drm_device *dev,
> > > DRM_DEBUG_KMS("stealing pipe %c power sequencer from port %c\n",
> > > pipe_name(pipe), port_name(port));
> > >
> > > + WARN(encoder->connectors_active,
> >
> > This only checks for the pipe actually running, i.e. dpms on. But I guess
> > we actually want to check for logically enabled (i.e. no matter the dpms
> > state) to make sure we can always transition from dpms off to on again.
> > That should check for encoder->base.crtc instead.
>
> We can allow stealing the power sequencer whenever the port is not
> running. When the port gets re-enabled the power seqeuencer gets
> stolen back.

Hm, but how does this work if we run out of power sequencers? Generally
dpms on isn't allowed to fail, so if there's any shared resources we need
to keep them reserved.

Or am I super-dense again?
-Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch