All of lore.kernel.org
 help / color / mirror / Atom feed
From: "John W. Linville" <linville@tuxdriver.com>
To: Adam Belay <ambx1@neo.rr.com>,
	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: Wed, 13 Jul 2005 13:34:21 -0400	[thread overview]
Message-ID: <20050713173417.GA21547@tuxdriver.com> (raw)
In-Reply-To: <20050712022855.GA3689@neo.rr.com>

[-- Attachment #1: Type: text/plain, Size: 2436 bytes --]

On Mon, Jul 11, 2005 at 10:28:55PM -0400, Adam Belay wrote:
> On Fri, Jul 08, 2005 at 02:34:56PM -0400, John W. Linville wrote:

> > 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?

I'm not sure I understand you...the kernel doesn't actually make the
assignments, relying on the BIOS to do so...am I wrong?

So, if the BIOS leaves a device in D3hot, it will loose it's
BIOS-assigned resources when it transitions to D0 in pci_enable_device.
The point of this patch is to restore those BAR assignments so that
the device's registers will be accessible to the driver.  The driver
remains blissfully unaware of the D3hot->D0 issue.

> >   * 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.
 
Currently pci_restore_state is only useful if there is a preceding
pci_save_state.  While this commonly occurs in the ->resume routines,
most drivers don't do any such thing (i.e. either save or restore) in
the ->probe routines.  This is likely because it only makes sense to
do so if you know about the D3hot->D0 issue; in that case, we would
be back to replicating code in any number of drivers.  I think we
agree that should be avoided.

> Also we need a way to restore specific PCI capabilities.

If you are asking for additional patches (or more changes to this one)
then you'll have to be more specific.  I don't know what you want here.

Thanks,

John
-- 
John W. Linville
linville@tuxdriver.com

[-- Attachment #2: Type: text/plain, Size: 0 bytes --]



WARNING: multiple messages have this Message-ID (diff)
From: "John W. Linville" <linville@tuxdriver.com>
To: Adam Belay <ambx1@neo.rr.com>,
	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: Wed, 13 Jul 2005 13:34:21 -0400	[thread overview]
Message-ID: <20050713173417.GA21547@tuxdriver.com> (raw)
In-Reply-To: <20050712022855.GA3689@neo.rr.com>

On Mon, Jul 11, 2005 at 10:28:55PM -0400, Adam Belay wrote:
> On Fri, Jul 08, 2005 at 02:34:56PM -0400, John W. Linville wrote:

> > 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?

I'm not sure I understand you...the kernel doesn't actually make the
assignments, relying on the BIOS to do so...am I wrong?

So, if the BIOS leaves a device in D3hot, it will loose it's
BIOS-assigned resources when it transitions to D0 in pci_enable_device.
The point of this patch is to restore those BAR assignments so that
the device's registers will be accessible to the driver.  The driver
remains blissfully unaware of the D3hot->D0 issue.

> >   * 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.
 
Currently pci_restore_state is only useful if there is a preceding
pci_save_state.  While this commonly occurs in the ->resume routines,
most drivers don't do any such thing (i.e. either save or restore) in
the ->probe routines.  This is likely because it only makes sense to
do so if you know about the D3hot->D0 issue; in that case, we would
be back to replicating code in any number of drivers.  I think we
agree that should be avoided.

> Also we need a way to restore specific PCI capabilities.

If you are asking for additional patches (or more changes to this one)
then you'll have to be more specific.  I don't know what you want here.

Thanks,

John
-- 
John W. Linville
linville@tuxdriver.com

  reply	other threads:[~2005-07-13 17:34 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] pci: restore BAR values in pci_enable_device John W. Linville
2005-07-01  2:26         ` 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 [this message]
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
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

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=20050713173417.GA21547@tuxdriver.com \
    --to=linville@tuxdriver.com \
    --cc=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=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 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.