From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: Bjorn Helgaas <bhelgaas@google.com>, Huang Ying <ying.huang@intel.com>
Cc: linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org,
linux-pm@vger.kernel.org, Eric Biederman <ebiederm@xmission.com>,
kexec@lists.infradead.org
Subject: Re: [RFC 1/3] PCI/PM: Fix kexec for D3cold and bridge suspending
Date: Thu, 20 Sep 2012 21:20:31 +0200 [thread overview]
Message-ID: <201209202120.32029.rjw@sisk.pl> (raw)
In-Reply-To: <CAErSpo5fVbN2vD5Omc7dGJFWUccYZoCOVRF4YmXPe2Oxm81u5g@mail.gmail.com>
On Monday, September 17, 2012, Bjorn Helgaas wrote:
> +cc Eric and kexec list
>
> On Mon, Sep 17, 2012 at 2:54 AM, Huang Ying <ying.huang@intel.com> wrote:
> > If PCI devices are put into D3cold before kexec, because the
> > configuration registers of PCI devices in D3cold are not accessible.
> >
> > And if PCI bridges are put into low power state before kexec,
> > configuration registers of PCI devices underneath the PCI bridges are
> > not accessible too.
> >
> > These will make some PCI devices can not be scanned after kexec, so
> > resume the PCI devices in D3cold or PCI bridges in low power state
> > before kexec.
>
> Don't we need to resume the device even without the kexec issue? And
> even if it's in D1 or D2?
>
> It looks to me like pci_msi_shutdown() (and probably drv->shutdown())
> depend on the device being in D0.
We should in theory, but we didn't do any power management of PCI bridges
before, so this is the first time we have a problem with it.
So I'd say, yeah, let's resume if current_state is between D1 and D3cold
inclusive and the kexec comment is not very helpful (the problem is not
kexec-specific in general).
Speaking of kexec, it might consider using the hibernation device freeze
instead of device shutdown (which the kexec jump feature does). I've seen
reports of problems that would be solved this way most likely.
Thanks,
Rafael
> > Signed-off-by: Huang Ying <ying.huang@intel.com>
> > ---
> > drivers/pci/pci-driver.c | 4 ++++
> > 1 file changed, 4 insertions(+)
> >
> > --- a/drivers/pci/pci-driver.c
> > +++ b/drivers/pci/pci-driver.c
> > @@ -421,6 +421,10 @@ static void pci_device_shutdown(struct d
> > struct pci_dev *pci_dev = to_pci_dev(dev);
> > struct pci_driver *drv = pci_dev->driver;
> >
> > + /* Resume bridges and devices in D3cold for kexec to work properly */
> > + if (pci_dev->current_state == PCI_D3cold || pci_dev->subordinate)
> > + pm_runtime_resume(dev);
> > +
> > if (drv && drv->shutdown)
> > drv->shutdown(pci_dev);
> > pci_msi_shutdown(pci_dev);
>
>
next prev parent reply other threads:[~2012-09-20 19:20 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-17 8:54 [RFC 0/3] PCI/PM: RTD3 fixes/changes for 3.7 Huang Ying
2012-09-17 8:54 ` [RFC 1/3] PCI/PM: Fix kexec for D3cold and bridge suspending Huang Ying
2012-09-17 20:54 ` Bjorn Helgaas
2012-09-20 7:38 ` Eric W. Biederman
2012-09-20 8:19 ` Huang Ying
2012-09-20 8:27 ` Eric W. Biederman
2012-09-20 19:20 ` Rafael J. Wysocki [this message]
2012-09-21 0:28 ` Huang Ying
2012-09-21 19:30 ` Rafael J. Wysocki
2012-09-17 8:54 ` [RFC 2/3] PCI/PM: Make PCI devices notified when its power resource turned on Huang Ying
2012-09-20 19:33 ` Rafael J. Wysocki
2012-09-17 8:54 ` [RFC 3/3] PCI/PM: Disable PME poll for PCIe devices Huang Ying
2012-09-20 19:31 ` Rafael J. Wysocki
2012-09-20 19:39 ` Matthew Garrett
2012-09-21 1:50 ` Huang Ying
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=201209202120.32029.rjw@sisk.pl \
--to=rjw@sisk.pl \
--cc=bhelgaas@google.com \
--cc=ebiederm@xmission.com \
--cc=kexec@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=ying.huang@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;
as well as URLs for NNTP newsgroup(s).