From: Jeff Garzik <jgarzik@pobox.com>
To: "John W. Linville" <linville@tuxdriver.com>
Cc: akpm@osdl.org, kaos@sgi.com, rmk+lkml@arm.linux.org.uk,
grundler@parisc-linux.org, matthew@wil.cx,
linux-pm@lists.osdl.org, linux-kernel@vger.kernel.org,
torvalds@osdl.org, ink@jurassic.park.msu.ru,
linux-pci@atrey.karlin.mff.cuni.cz, davem@davemloft.net
Subject: Re: [patch 2.6.14-rc1] pci: only call pci_restore_bars at boot
Date: Wed, 14 Sep 2005 11:08:12 -0400 [thread overview]
Message-ID: <43283CDC.3070603@pobox.com> (raw)
In-Reply-To: <09142005095242.32027@bilbo.tuxdriver.com>
John W. Linville wrote:
> Certain (SGI?) ia64 boxes object to having their PCI BARs
> restored unless absolutely necessary. This patch restricts calling
> pci_restore_bars from pci_set_power_state unless the current state
> is PCI_UNKNOWN, the actual (i.e. physical) state of the device is
> PCI_D3hot, and the device indicates that it will lose its configuration
> when transitioning to PCI_D0.
>
> Signed-off-by: John W. Linville <linville@tuxdriver.com>
> ---
> Many thanks to Keith Owens <kaos@sgi.com> for a) narrowing-down the
> problem; and, b) quickly testing the fix and reporting the results.
>
> drivers/pci/pci.c | 16 ++++++++++++----
> 1 files changed, 12 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
> --- a/drivers/pci/pci.c
> +++ b/drivers/pci/pci.c
> @@ -309,17 +309,25 @@ pci_set_power_state(struct pci_dev *dev,
>
> pci_read_config_word(dev, pm + PCI_PM_CTRL, &pmcsr);
>
> - /* If we're in D3, force entire word to 0.
> + /* If we're (effectively) in D3, force entire word to 0.
> * This doesn't affect PME_Status, disables PME_En, and
> * sets PowerState to 0.
> */
> - if (dev->current_state >= PCI_D3hot) {
> - if (!(pmcsr & PCI_PM_CTRL_NO_SOFT_RESET))
> + switch (dev->current_state) {
> + case PCI_UNKNOWN: /* Boot-up */
> + if ((pmcsr & PCI_PM_CTRL_STATE_MASK) == PCI_D3hot
> + && !(pmcsr & PCI_PM_CTRL_NO_SOFT_RESET))
> need_restore = 1;
> + /* Fall-through: force to D0 */
> + case PCI_D3hot:
> + case PCI_D3cold:
> + case PCI_POWER_ERROR:
> pmcsr = 0;
> - } else {
> + break;
> + default:
> pmcsr &= ~PCI_PM_CTRL_STATE_MASK;
> pmcsr |= state;
> + break;
This seems like it will break a lot of stuff that -does- need the BARs
restored when resuming from D3.
Jeff
WARNING: multiple messages have this Message-ID (diff)
From: Jeff Garzik <jgarzik@pobox.com>
To: "John W. Linville" <linville@tuxdriver.com>
Cc: linux-kernel@vger.kernel.org, linux-pci@atrey.karlin.mff.cuni.cz,
linux-pm@lists.osdl.org, torvalds@osdl.org, akpm@osdl.org,
ink@jurassic.park.msu.ru, kaos@sgi.com, greg@kroah.com,
davem@davemloft.net, rmk+lkml@arm.linux.org.uk, matthew@wil.cx,
grundler@parisc-linux.org, ambx1@neo.rr.com
Subject: Re: [patch 2.6.14-rc1] pci: only call pci_restore_bars at boot
Date: Wed, 14 Sep 2005 11:08:12 -0400 [thread overview]
Message-ID: <43283CDC.3070603@pobox.com> (raw)
In-Reply-To: <09142005095242.32027@bilbo.tuxdriver.com>
John W. Linville wrote:
> Certain (SGI?) ia64 boxes object to having their PCI BARs
> restored unless absolutely necessary. This patch restricts calling
> pci_restore_bars from pci_set_power_state unless the current state
> is PCI_UNKNOWN, the actual (i.e. physical) state of the device is
> PCI_D3hot, and the device indicates that it will lose its configuration
> when transitioning to PCI_D0.
>
> Signed-off-by: John W. Linville <linville@tuxdriver.com>
> ---
> Many thanks to Keith Owens <kaos@sgi.com> for a) narrowing-down the
> problem; and, b) quickly testing the fix and reporting the results.
>
> drivers/pci/pci.c | 16 ++++++++++++----
> 1 files changed, 12 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
> --- a/drivers/pci/pci.c
> +++ b/drivers/pci/pci.c
> @@ -309,17 +309,25 @@ pci_set_power_state(struct pci_dev *dev,
>
> pci_read_config_word(dev, pm + PCI_PM_CTRL, &pmcsr);
>
> - /* If we're in D3, force entire word to 0.
> + /* If we're (effectively) in D3, force entire word to 0.
> * This doesn't affect PME_Status, disables PME_En, and
> * sets PowerState to 0.
> */
> - if (dev->current_state >= PCI_D3hot) {
> - if (!(pmcsr & PCI_PM_CTRL_NO_SOFT_RESET))
> + switch (dev->current_state) {
> + case PCI_UNKNOWN: /* Boot-up */
> + if ((pmcsr & PCI_PM_CTRL_STATE_MASK) == PCI_D3hot
> + && !(pmcsr & PCI_PM_CTRL_NO_SOFT_RESET))
> need_restore = 1;
> + /* Fall-through: force to D0 */
> + case PCI_D3hot:
> + case PCI_D3cold:
> + case PCI_POWER_ERROR:
> pmcsr = 0;
> - } else {
> + break;
> + default:
> pmcsr &= ~PCI_PM_CTRL_STATE_MASK;
> pmcsr |= state;
> + break;
This seems like it will break a lot of stuff that -does- need the BARs
restored when resuming from D3.
Jeff
next prev parent reply other threads:[~2005-09-14 15:08 UTC|newest]
Thread overview: 90+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-06-23 19:14 [RFC] firmware leaves device in D3hot at boot John W. Linville
2005-06-23 19:14 ` John W. Linville
2005-06-24 2:28 ` John W. Linville
2005-06-24 2:28 ` John W. Linville
2005-06-30 17:10 ` Greg KH
2005-06-30 17:10 ` Greg KH
2005-07-01 1:41 ` John W. Linville
2005-07-01 1:41 ` John W. Linville
2005-07-01 2:26 ` [patch 2.6.12 (repost w/ corrected subject)] pci: restore BAR values in pci_enable_device_bars John W. Linville
2005-07-01 2:26 ` John W. Linville
2005-07-02 7:29 ` Grant Grundler
2005-07-02 7:29 ` Grant Grundler
2005-07-02 8:09 ` Russell King
2005-07-02 8:09 ` Russell King
2005-07-05 20:05 ` Matthew Wilcox
2005-07-05 20:05 ` Matthew Wilcox
2005-07-05 21:46 ` Russell King
2005-07-05 21:46 ` Russell King
2005-07-05 23:34 ` Ivan Kokshaysky
2005-07-05 23:34 ` Ivan Kokshaysky
2005-07-06 7:46 ` Russell King
2005-07-06 7:46 ` Russell King
2005-07-08 0:57 ` John W. Linville
2005-07-08 0:57 ` John W. Linville
2005-07-08 0:59 ` [patch 2.6.13-rc2] pci: restore BAR values in pci_set_power_state for D3hot->D0 John W. Linville
2005-07-08 0:59 ` John W. Linville
2005-07-08 3:43 ` [linux-pm] " david-b
2005-07-08 3:43 ` david-b
2005-07-08 12:37 ` John W. Linville
2005-07-08 12:37 ` [linux-pm] " John W. Linville
2005-07-08 3:11 ` [patch 2.6.12 (repost w/ corrected subject)] pci: restore BAR values in pci_enable_device_bars David S. Miller
2005-07-08 3:11 ` David S. Miller
2005-07-08 5:51 ` Ivan Kokshaysky
2005-07-08 5:51 ` Ivan Kokshaysky
2005-07-08 6:35 ` David S. Miller
2005-07-08 6:35 ` David S. Miller
2005-07-08 7:03 ` Ivan Kokshaysky
2005-07-08 7:03 ` Ivan Kokshaysky
2005-07-08 7:33 ` David S. Miller
2005-07-08 7:33 ` David S. Miller
2005-07-08 8:20 ` Ivan Kokshaysky
2005-07-08 8:20 ` Ivan Kokshaysky
2005-07-08 18:34 ` [patch 2.6.13-rc2] pci: restore BAR values from pci_set_power_state for D3hot->D0 John W. Linville
2005-07-08 18:34 ` John W. Linville
2005-07-08 19:08 ` David S. Miller
2005-07-08 19:08 ` David S. Miller
2005-07-10 17:53 ` Ivan Kokshaysky
2005-07-10 17:53 ` Ivan Kokshaysky
2005-07-11 12:48 ` Lennert Buytenhek
2005-07-11 12:48 ` Lennert Buytenhek
2005-07-11 13:15 ` John W. Linville
2005-07-11 13:15 ` John W. Linville
2005-07-11 13:19 ` [patch 2.6.13-rc2] PCI: Add symbol exports for pci_restore_bars John W. Linville
2005-07-11 13:19 ` John W. Linville
2005-07-11 17:18 ` Greg KH
2005-07-11 17:36 ` John W. Linville
2005-07-11 17:36 ` John W. Linville
2005-07-11 17:38 ` [patch 2.6.13-rc2] PCI: Add GPL symbol export " John W. Linville
2005-07-11 17:38 ` John W. Linville
2005-07-12 2:28 ` [patch 2.6.13-rc2] pci: restore BAR values from pci_set_power_state for D3hot->D0 Adam Belay
2005-07-12 2:28 ` Adam Belay
2005-07-13 17:34 ` John W. Linville
2005-07-13 17:34 ` John W. Linville
2005-07-26 23:49 ` Greg KH
2005-07-26 23:49 ` Greg KH
2005-07-27 1:36 ` John W. Linville
2005-07-27 1:36 ` John W. Linville
2005-07-27 14:12 ` John W. Linville
2005-07-27 14:12 ` John W. Linville
2005-07-27 14:19 ` [patch 2.6.13-rc3] pci: restore BAR values after D3hot->D0 for devices that need it John W. Linville
2005-07-27 14:19 ` John W. Linville
2005-07-31 19:36 ` Ralf Baechle
2005-07-31 19:36 ` Ralf Baechle
2005-08-02 17:31 ` Greg KH
2005-08-02 17:31 ` Greg KH
2005-08-02 16:41 ` Jesse Brandeburg
2005-09-14 13:52 ` [patch 2.6.14-rc1] pci: only call pci_restore_bars at boot John W. Linville
2005-09-14 13:52 ` John W. Linville
2005-09-14 15:08 ` Jeff Garzik [this message]
2005-09-14 15:08 ` Jeff Garzik
2005-09-14 16:26 ` David S. Miller
2005-09-14 16:47 ` John W. Linville
2005-09-14 16:47 ` John W. Linville
2005-09-14 18:22 ` Ivan Kokshaysky
2005-09-14 18:22 ` Ivan Kokshaysky
2005-07-05 17:46 ` [patch 2.6.12 (repost w/ corrected subject)] pci: restore BAR values in pci_enable_device_bars John W. Linville
2005-07-05 17:46 ` John W. Linville
2005-07-18 12:17 ` Grant Grundler
2005-07-01 2:26 ` [patch 2.6.12] pci: restore BAR values in pci_enable_device John W. Linville
2005-07-01 2:26 ` John W. Linville
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=43283CDC.3070603@pobox.com \
--to=jgarzik@pobox.com \
--cc=akpm@osdl.org \
--cc=davem@davemloft.net \
--cc=grundler@parisc-linux.org \
--cc=ink@jurassic.park.msu.ru \
--cc=kaos@sgi.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@atrey.karlin.mff.cuni.cz \
--cc=linux-pm@lists.osdl.org \
--cc=linville@tuxdriver.com \
--cc=matthew@wil.cx \
--cc=rmk+lkml@arm.linux.org.uk \
--cc=torvalds@osdl.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.