[Intel-gfx] [PATCH 6/6] DRAFT: drm/i915: do adapter power state notification on PC8+ enable/disable

Paulo Zanoni przanoni at gmail.com
Fri Aug 23 21:41:57 CEST 2013


2013/8/23 Kristen Carlson Accardi <kristen.c.accardi at intel.com>:
> On Fri, 23 Aug 2013 13:44:17 -0300
> Paulo Zanoni <przanoni at gmail.com> wrote:
>
>> 2013/8/23 Jani Nikula <jani.nikula at intel.com>:
>>
>> /* Please insert explanation on why we need this and what changes if
>> we do this. */
>>
>> I applied your patches and booted them. I got into PC8, did the PC8
>> test suite and nothing changed. I really don't know what to expect
>> from this series and/or how to check what's improving. Also, see
>> below:
>>
>
> So this is one of these things that will have no visible impact on
> i915, but will impact other parts of the system.  So I think the only
> way to test it is by throwing it on the SIP board and checking the
> power level of the components this impacts (Audio, thermal, KBC/EC,
> LPT).  And without the code which does the actual PCI D3 request from
> i915, nothing will happen.

I was told we could try to verify this by reading PCI config register
0xd4, but for me it's always 0x0, which means we're probably not
really getting into D3.

> Is it possible to get a patch which finds
> some very obvious place to put the controller into D3 so we can check
> to see if the opregion notifies are doing what they are supposed to?

http://cgit.freedesktop.org/~pzanoni/linux/?h=d3-wip

My check using the PCI config register 0xd4 suggests we're probably
not really enabling D3 :(

>
>>
>> > Signed-off-by: Jani Nikula <jani.nikula at intel.com>
>> > ---
>> >  drivers/gpu/drm/i915/intel_display.c |    4 ++++
>> >  1 file changed, 4 insertions(+)
>> >
>> > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
>> > index a6df68e..7ed2248 100644
>> > --- a/drivers/gpu/drm/i915/intel_display.c
>> > +++ b/drivers/gpu/drm/i915/intel_display.c
>> > @@ -6093,6 +6093,8 @@ void hsw_enable_pc8_work(struct work_struct *__work)
>> >         lpt_disable_clkout_dp(dev);
>> >         hsw_pc8_disable_interrupts(dev);
>> >         hsw_disable_lcpll(dev_priv, true, true);
>> > +
>> > +       intel_opregion_notify_adapter(dev, PCI_D1);
>>
>> Why D1? Shouldn't this be D3? I think that's what people having been
>> asking us to implement.
>>
>> On the doc that explains "adapter power state notification", my
>> understanding is that it suggests that we should call this _before_ we
>> go into the lower states and the other chunk should be called _after_
>> we're at the higher power states. So perhaps we should call
>> intel_opregion_notify_adapter before hsw_disable_lcpll, and, on the
>> chunk below, after hsw_restore_lcpll? But this is not 100% clear, I
>> may be wrong.
>>
>> By the way, I modified your patch to implement the suggestions above,
>> and got the same results: no noticeable difference, everything still
>> works. No news is good news?
>>
>>
>> >  }
>> >
>> >  static void __hsw_enable_package_c8(struct drm_i915_private *dev_priv)
>> > @@ -6126,6 +6128,8 @@ static void __hsw_disable_package_c8(struct drm_i915_private *dev_priv)
>> >         if (!dev_priv->pc8.enabled)
>> >                 return;
>> >
>> > +       intel_opregion_notify_adapter(dev, PCI_D0);
>> > +
>> >         DRM_DEBUG_KMS("Disabling package C8+\n");
>> >
>> >         hsw_restore_lcpll(dev_priv);
>> > --
>> > 1.7.9.5
>> >
>>
>>
>>
>



-- 
Paulo Zanoni



More information about the Intel-gfx mailing list