public inbox for intel-gfx@lists.freedesktop.org
 help / color / mirror / Atom feed
From: Imre Deak <imre.deak@intel.com>
To: Sagar Arun Kamble <sagar.a.kamble@intel.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>,
	intel-gfx@lists.freedesktop.org, shashidhar.hiremath@intel.com
Subject: Re: [PATCH 2/2] drm/i915/vlv: Set D3_hot for vlv during runtime_suspend
Date: Tue, 10 Jun 2014 20:51:20 +0300	[thread overview]
Message-ID: <1402422680.2882.22.camel@ideak-mobl> (raw)
In-Reply-To: <1402421727.3724.28.camel@sagar-desktop>

On Tue, 2014-06-10 at 23:05 +0530, Sagar Arun Kamble wrote:
> On Tue, 2014-06-10 at 15:43 +0300, Imre Deak wrote:
> > On Tue, 2014-06-10 at 00:27 +0530, sagar.a.kamble@intel.com wrote:
> > > From: Sagar Kamble <sagar.a.kamble@intel.com>
> > > 
> > > To do a platform wide S0i3 transition, Gfx is required to go
> > > to D3_hot state. pci_save_state and pci_restore_state needed to avoid ring
> > > hangs across D3_hot transitions.
> > > 
> > > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> (supporter:INTEL DRM DRIVERS...)
> > > Cc: Jani Nikula <jani.nikula@linux.intel.com> (supporter:INTEL DRM DRIVERS...)
> > > Signed-off-by: Sagar Kamble <sagar.a.kamble@intel.com>
> > > ---
> > >  drivers/gpu/drm/i915/i915_drv.c | 11 +++++++++++
> > >  1 file changed, 11 insertions(+)
> > > 
> > > diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> > > index 5a08c86..70bb456 100644
> > > --- a/drivers/gpu/drm/i915/i915_drv.c
> > > +++ b/drivers/gpu/drm/i915/i915_drv.c
> > > @@ -1412,6 +1412,11 @@ static int intel_runtime_suspend(struct device *device)
> > >  	 * via the suspend path.
> > >  	 */
> > >  	intel_opregion_notify_adapter(dev, PCI_D1);
> > > +	if (IS_VALLEYVIEW(dev)) {
> > > +		pci_save_state(pdev);
> > > +		pci_disable_device(pdev);
> > > +		pci_set_power_state(pdev, PCI_D3hot);
> > > +	}
> > >  
> > >  	DRM_DEBUG_KMS("Device suspended\n");
> > >  	return 0;
> > > @@ -1428,6 +1433,12 @@ static int intel_runtime_resume(struct device *device)
> > >  
> > >  	DRM_DEBUG_KMS("Resuming device\n");
> > >  
> > > +	if (IS_VALLEYVIEW(dev)) {
> > > +		pci_set_power_state(pdev, PCI_D0);
> > > +		pci_restore_state(pdev);
> > > +		pci_enable_device(pdev);
> > > +	}
> > 
> > Setting the proper Dx state and saving/restoring the PCI config space is
> > already done for us by the PCI runtime PM framework, see
> > pci_pm_runtime_suspend/resume(). 
> 
> Where exactly it calls pci_pm_set_powerstate to set D3_hot ?

It's
pci_pm_runtime_suspend()->pci_finish_runtime_suspend()->pci_set_power_state() .

> There seems to be bug in the pci driver in the suspend path. it is not
> saving the pci configuration space although code for same exists.
> pci driver checks if client driver has saved if not it will exit from
> suspend path.
> check the code snippet below:
> 
>         if (!pci_dev->state_saved && pci_dev->current_state != PCI_D0
>             && pci_dev->current_state != PCI_UNKNOWN) {
>                 WARN_ONCE(pci_dev->current_state != prev,
>                         "PCI PM: State of device not saved by %pF\n",
>                         pm->runtime_suspend);
>                 return 0;
>         }
> 
>         if (!pci_dev->state_saved) {
>                 pci_save_state(pci_dev);
>                 pci_finish_runtime_suspend(pci_dev);
>         }

I don't think this is a bug, but something the PCI framework requires
from drivers. That is if they set the power state to something else than
PCI_D0 or PCI_UNKNOWN they also have to save the state themselves.

I can't check this right now, but I haven't ever seen the above WARN and
by the look of it we are doing the right thing in the driver. That is
leave the power state in D0 and let the PCI framework handle the state
saving/power state transitioning.

--Imre

  reply	other threads:[~2014-06-10 17:51 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-09 18:57 [PATCH 0/2] Enabling D0i3 transition for Valleyview sagar.a.kamble
2014-06-09 18:57 ` [PATCH 1/2] drm/i915: do runtime_get/put during display well power gate/ungate sagar.a.kamble
2014-06-10 12:24   ` Imre Deak
2014-06-09 18:57 ` [PATCH 2/2] drm/i915/vlv: Set D3_hot for vlv during runtime_suspend sagar.a.kamble
2014-06-10 12:43   ` Imre Deak
2014-06-10 17:35     ` Sagar Arun Kamble
2014-06-10 17:51       ` Imre Deak [this message]
2014-06-11  8:23         ` Sagar Arun Kamble
2014-06-11 10:17           ` Daniel Vetter
2014-06-11 10:49             ` Sagar Arun Kamble

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=1402422680.2882.22.camel@ideak-mobl \
    --to=imre.deak@intel.com \
    --cc=daniel.vetter@ffwll.ch \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=sagar.a.kamble@intel.com \
    --cc=shashidhar.hiremath@intel.com \
    /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