From: Grant Grundler <grundler@parisc-linux.org>
To: "John W. Linville" <linville@tuxdriver.com>
Cc: Grant Grundler <grundler@parisc-linux.org>,
linux-pci@atrey.karlin.mff.cuni.cz,
linux-pm <linux-pm@lists.osdl.org>,
linux-kernel@vger.kernel.org, Greg KH <greg@kroah.com>,
Adam Belay <ambx1@neo.rr.com>,
Russell King <rmk+lkml@arm.linux.org.uk>
Subject: Re: [patch 2.6.12 (repost w/ corrected subject)] pci: restore BAR values in pci_enable_device_bars
Date: Mon, 18 Jul 2005 06:17:44 -0600 [thread overview]
Message-ID: <20050718121744.GD8775@colo.lackof.org> (raw)
In-Reply-To: <20050705174617.GB21933@tuxdriver.com>
On Tue, Jul 05, 2005 at 01:46:20PM -0400, John W. Linville wrote:
> On Sat, Jul 02, 2005 at 01:29:54AM -0600, Grant Grundler wrote:
> > On Thu, Jun 30, 2005 at 10:26:37PM -0400, John W. Linville wrote:
>
> > > + /* Some devices lose PCI config header data during D3hot->D0
> >
> > Can you name some of those devices here?
> > I just want to know what sort of devices need to be tested
> > if this code changes in the future.
>
> I don't really have a list. The devices that brought this issue to
> my attention are a 3c905B and a 3c556B, both covered by the 3c59x
> driver.
John,
apologies for the late reply - been offline the past two weeks on holiday.
Just listing the two devices in a comment would be sufficient.
> According to section 5.4.1 of the "PCI BUS POWER MANAGEMENT INTERFACE
> SPECIFICATION, REV. 1.2", a device transitioning from D3hot to D0
> _may_ perform an internal reset, thereby going to "D0 Uninitialized"
> rather than "D0 Initialized".
Including the above paragraph in a comment would be a good thing.
I don't know if this spec is publicly available. But even if it is,
typically only a handful of people will be familiar enough with it
to know where to look in it.
> Since this behaviour is ratified by
> the spec, I think we need to accomodate it.
Yes - sounds reasonable to me too.
> A bit in the PMCSR register indicates how a device will behave in
> this regard. We could have a test to only execute the BAR restoration
> for those devices that seem to need it. I left that out because it
> seemed to add needless complexity. In the meantime the patch has
> gotten bigger and more complex, so maybe that code doesn't make it
> any worse. Do you want me to add that?
I think I'd keep it simpler until someone proves we need it.
I've read the rest of the thread and don't recall any such proof.
>
> >
> > > + transition. Since some firmware leaves devices in D3hot
> > > + state at boot, this information needs to be restored.
> >
> > Again, which firmware?
> > Examples are good since it makes it possible to track down
> > the offending devices for testing.
>
> The Thinkpad T21 does this. I don't know of any others specifically,
> but it seems like something laptop BIOSes would be likely to do.
That's fine - just listing the Thinkpad T21 in a comment is helpful.
If you happen to know the firmware version too, that would be even better.
> > The following chunk looks like it will have issues with 64-bit BARs:
>
> As RMK pointed-out, this code is inspired by setup-res.c; specifically
> that in pci_update_resource. I'd prefer not to blaze any new trails
> regarding 64-bit BAR support ATM... :-)
After thinking about this more, I'm convinced it's broken if a 64-bit BAR
is present on the PCI device. It doesn't matter if the MMIO value is
greater than 4GB or not. The problem is pci_dev->resource[i] does NOT
map 1:1 with PCI_BASE_ADDRESS_0+(i*4).
> So, is the current patch acceptable?
I don't think so. 64-bit BARs are just too common today.
One solution is to use a seperate variable to track the offset into
PCI config space. ie use "i" to walk through pci_dev->resource[]
and add "unsigned int pcibar_offset" to keep track of 32 vs 64-bit BARs.
> Or shall I add the check for the "no soft reset" bit in the PMCSR register?
I don't see why that's necessary.
thanks,
grant
next prev parent reply other threads:[~2005-07-18 12:13 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 (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 ` [patch 2.6.13-rc2] pci: restore BAR values from pci_set_power_state for D3hot->D0 Adam Belay
2005-07-13 17:34 ` 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 [this message]
2005-07-01 2:26 ` [patch 2.6.12] pci: restore BAR values in pci_enable_device 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=20050718121744.GD8775@colo.lackof.org \
--to=grundler@parisc-linux.org \
--cc=ambx1@neo.rr.com \
--cc=greg@kroah.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=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