public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Adam Belay <ambx1@neo.rr.com>
To: "John W. Linville" <linville@tuxdriver.com>
Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>,
	linux-pm@lists.osdl.org, linux-kernel@vger.kernel.org,
	greg@kroah.com, grundler@parisc-linux.org,
	linux-pci@atrey.karlin.mff.cuni.cz, rmk+lkml@arm.linux.org.uk,
	matthew@wil.cx, "David S. Miller" <davem@davemloft.net>
Subject: Re: [patch 2.6.13-rc2] pci: restore BAR values from pci_set_power_state for D3hot->D0
Date: Mon, 11 Jul 2005 22:28:55 -0400	[thread overview]
Message-ID: <20050712022855.GA3689@neo.rr.com> (raw)
In-Reply-To: <20050708183452.GB13445@tuxdriver.com>

On Fri, Jul 08, 2005 at 02:34:56PM -0400, John W. Linville wrote:
> Some PCI devices lose all configuration (including BARs) when
> transitioning from D3hot->D0.  This leaves such a device in an
> inaccessible state.  The patch below causes the BARs to be restored
> when enabling such a device, so that its driver will be able to
> access it.
> 
> Signed-off-by: John W. Linville <linville@tuxdriver.com>
> ---
> Some firmware leaves devices in D3hot after a (re)boot.  Most drivers
> call pci_enable_device very early, so devices left in D3hot that lose
> configuration during the D3hot->D0 transition will be inaccessible to
> their drivers.

Also, I think there is a possibility of only enabling boot devices for ACPI
S4.  However, for the reboot case, we're not restoring anything.  Instead new
resource assignments are being made.  Doesn't the PCI subsystem already
handle this?

> 
> Drivers could be modified to account for this, but it would
> be difficult to know which drivers need modification.  This is
> especially true since often many devices are covered by the same
> driver.  It likely would be necessary to replicate code across dozens
> of drivers.

Agreed.

> 
> The patch below should trigger only when transitioning from D3hot->D0
> (or at boot), and only for devices that have the "no soft reset" bit
> cleared in the PM control register.  I believe it is safe to include as
> part of the PCI infrastructure.


>   * pci_set_power_state - Set the power state of a PCI device
>   * @dev: PCI device to be suspended
>   * @state: PCI power state (D0, D1, D2, D3hot, D3cold) we're entering
> @@ -239,7 +270,7 @@ pci_find_parent_resource(const struct pc
>  int
>  pci_set_power_state(struct pci_dev *dev, pci_power_t state)
>  {

Couldn't this be in pci_restore_state() instead?  I was thinking it would
(in part) replace the ugly dword reads we have now.  They include many
registers we don't need to touch.  I wonder if we'll need pci_save_state()
at all or if we can derive all the information from the pci_dev.  I'll have
to look into it further.

Also we need a way to restore specific PCI capabilities.

Thanks,
Adam

  parent reply	other threads:[~2005-07-12  2:36 UTC|newest]

Thread overview: 47+ 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-24  2:28 ` John W. Linville
2005-06-30 17:10   ` Greg KH
2005-07-01  1:41     ` John W. Linville
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       ` [patch 2.6.12 (repost w/ corrected subject)] pci: restore BAR values in pci_enable_device_bars John W. Linville
2005-07-02  7:29         ` Grant Grundler
2005-07-02  8:09           ` Russell King
2005-07-05 20:05             ` Matthew Wilcox
2005-07-05 21:46               ` Russell King
2005-07-05 23:34                 ` Ivan Kokshaysky
2005-07-06  7:46                   ` Russell King
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  3:43                       ` [linux-pm] " david-b
2005-07-08 12:37                         ` 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  5:51                       ` Ivan Kokshaysky
2005-07-08  6:35                         ` David S. Miller
2005-07-08  7:03                           ` Ivan Kokshaysky
2005-07-08  7:33                             ` David S. Miller
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 19:08                                   ` David S. Miller
2005-07-10 17:53                                   ` Ivan Kokshaysky
2005-07-11 12:48                                   ` Lennert Buytenhek
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 17:18                                         ` Greg KH
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-12  2:28                                   ` Adam Belay [this message]
2005-07-13 17:34                                     ` [patch 2.6.13-rc2] pci: restore BAR values from pci_set_power_state for D3hot->D0 John W. Linville
2005-07-26 23:49                                   ` Greg KH
2005-07-27  1:36                                     ` 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-31 19:36                                           ` Ralf Baechle
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 15:08                                             ` Jeff Garzik
2005-09-14 16:26                                               ` David S. Miller
2005-09-14 16:47                                                 ` John W. Linville
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-18 12:17             ` Grant Grundler

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=20050712022855.GA3689@neo.rr.com \
    --to=ambx1@neo.rr.com \
    --cc=davem@davemloft.net \
    --cc=greg@kroah.com \
    --cc=grundler@parisc-linux.org \
    --cc=ink@jurassic.park.msu.ru \
    --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 \
    /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