From: Robert Hancock <hancockr@shaw.ca>
To: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Cc: Greg KH <gregkh@suse.de>, Matthew Wilcox <matthew@wil.cx>,
Shaohua Li <shaohua.li@intel.com>,
lkml <linux-kernel@vger.kernel.org>,
linux-pci <linux-pci@atrey.karlin.mff.cuni.cz>,
Andrew Morton <akpm@linux-foundation.org>,
Jesse Barnes <jbarnes@virtuousgeek.org>
Subject: Re: [PATCH]PCI:disable resource decode in PCI BAR detection
Date: Sun, 16 Sep 2007 11:34:35 -0600 [thread overview]
Message-ID: <46ED692B.3010004@shaw.ca> (raw)
In-Reply-To: <20070916151355.A18508@jurassic.park.msu.ru>
Ivan Kokshaysky wrote:
> On Fri, Sep 14, 2007 at 05:53:58PM -0600, Robert Hancock wrote:
>> In the first one, Linus talks about a USB controller whose SMM code
>> chokes on the BAR being disabled. That explanation seems odd to me. If
>> it chokes on the BAR disabled, how doesn't it choke on the BAR being
>> moved to a different location, which is unavoidable during probing?
>
> Here is an article with detailed explanation of that USB issue:
>
> http://support.microsoft.com/kb/250635
>
> The most interesting fact there is that windows *does not* clear
> PCI_COMMAND_MEMORY bits during PCI bus enumeration, so BIOS writers
> have to rely on that. Yet another reason why your patch is unsafe.
Windows 98 doesn't, it says. That doesn't say anything about what newer
versions of Windows are doing (like Vista, which is the first to
actually use MMCONFIG).
>
>> Also, I think we do USB handoff from the BIOS much earlier than we used
>> to, which likely prevents these issues.
>
> I don't think so. This can only be done in USB driver, which cannot run
> before PCI device discovery.
Check the code. We have a quirk to handle this, in
drivers/usb/host/pci-quirks.c
>
>> In the second one, he mentions that "So the secondary rule to "don't
>> turnoff MEM or IO accesses" is "never allocate real PCI BAR resources at
>> the top of memory". Well, unfortunately, the second one isn't possible
>> to meet given that we have boards with the MMCONFIG up there, so
>> disabling the decode is the only thing we can do. That whole discussion
>> was also based on the fact that it wasn't necessary to solve problems.
>> This is no longer a theoretical problem. We now have real problems that
>> we need this in order to solve.
>
> I have suggested a *practical* solution that disables the decode only
> when it's unavoidable. If it's not sufficient for some machines, it
> can be extended quite easily.
>
>>> No, it's impossible for several reasons. Most obvious one is that a PCI-E
>>> bridge does isolate stuff quite nicely.
>> It's not impossible at all. In fact I'm quite sure (Jesse can confirm)
>> that in the case of the board he was using, it was an add-in graphics
>> card where he saw this problem.
>
> Again, it's impossible with AGP or PCI-E cards, which are always separated
> from the root bus by AGP or PCI-E bridge. The bridge does decode in the
> first place, so when you write the BAR with all ones, you move it outside
> the bridge decoding window. Address collision isn't possible in this
> case in principle.
And yet, something was clearly happening to cause this. Jesse, what were
the bridge decode windows (shown in lspci -v) on one of those boards
that was having issues?
>
>> The fact is that in the case of MMCONFIG overlap with PCI BARs, which
>> one takes priority is completely undefined. In the case of this Intel
>> chipset, clearly the PCI Express device connected to the northbridge had
>> higher decode priority than the MMCONFIG aperture.
>
> Another possible solution is not to use mmconfig for bar sizing at all,
> if it's *that* broken. It would be more complicated though, since it
> probably requires changes to all architectures.
It's not broken at all, it just requires that we not do silly things
like stick enabled decode regions over top of the aperture.
--
Robert Hancock Saskatoon, SK, Canada
To email, remove "nospam" from hancockr@nospamshaw.ca
Home Page: http://www.roberthancock.com/
next prev parent reply other threads:[~2007-09-16 17:35 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <fa.ggBqx6W3i6hfs6jdfg64oXKSxW8@ifi.uio.no>
[not found] ` <fa.o5cJ0O7pLVWRzUiVPDEZL6nKqA8@ifi.uio.no>
[not found] ` <fa.tyYt4GOpTOmJTUbzsxpiCAObJPQ@ifi.uio.no>
[not found] ` <fa.13eJumylqINOxOaoEj9cthw0d0M@ifi.uio.no>
[not found] ` <fa.tAIuIM02CoL+ixB11n9Fmcqyz9M@ifi.uio.no>
[not found] ` <fa.pxFYhTaUz2NVN7Vux7b5xVRrKTw@ifi.uio.no>
2007-09-14 3:32 ` [PATCH]PCI:disable resource decode in PCI BAR detection Robert Hancock
2007-09-14 11:14 ` Ivan Kokshaysky
2007-09-14 11:33 ` Ivan Kokshaysky
2007-09-14 14:30 ` Robert Hancock
2007-09-14 15:29 ` Ivan Kokshaysky
2007-09-14 23:53 ` Robert Hancock
2007-09-15 5:55 ` Yinghai Lu
2007-09-16 11:13 ` Ivan Kokshaysky
2007-09-16 17:34 ` Robert Hancock [this message]
2007-09-17 9:20 ` Ivan Kokshaysky
2007-09-16 19:52 ` Matthew Wilcox
2007-09-17 9:31 ` Ivan Kokshaysky
2007-09-17 14:30 ` Robert Hancock
2007-09-17 1:21 ` Shaohua Li
2007-09-18 9:53 ` Ivan Kokshaysky
2007-09-19 21:34 ` Jesse Barnes
2007-09-16 20:06 ` Benjamin Herrenschmidt
2007-09-16 23:37 ` Robert Hancock
2007-09-17 0:21 ` Benjamin Herrenschmidt
[not found] ` <fa.0Edi0qLTdvqVnuoDAebaTVz1jEM@ifi.uio.no>
[not found] ` <fa.sq+NimBnzGB2syLmvcIGOvDkixI@ifi.uio.no>
[not found] ` <fa.G9DPndNUxuPi5LrUTOL4uPFshnc@ifi.uio.no>
2007-09-26 23:01 ` Robert Hancock
2007-09-27 0:40 ` Benjamin Herrenschmidt
2007-09-27 2:14 ` Matthew Wilcox
[not found] <fa.+WRenB38novq157RnGPLoU4q2XI@ifi.uio.no>
[not found] ` <fa.mM7Va6Nlsaduo/AF4MkeurSBTbs@ifi.uio.no>
[not found] ` <fa.Ff0IMhMYWp7NYEdjO0AftHzVOh4@ifi.uio.no>
[not found] ` <fa.d9zBdhHd9gKcJbtwrYguusbECo4@ifi.uio.no>
[not found] ` <fa.TLO57rS9iV7zhomQxJbV9gjbxx8@ifi.uio.no>
[not found] ` <fa.lPg6OSzX+f6jdXK1ZF0rlIhZok4@ifi.uio.no>
2007-09-15 20:24 ` Robert Hancock
2007-09-13 6:21 Shaohua Li
2007-09-13 7:31 ` Matthew Wilcox
2007-09-13 7:24 ` Shaohua Li
2007-09-13 7:55 ` Matthew Wilcox
2007-09-13 9:53 ` Greg KH
2007-09-13 11:16 ` Ivan Kokshaysky
2007-09-13 12:00 ` Greg KH
2007-09-16 20:01 ` Benjamin Herrenschmidt
2007-09-17 10:22 ` Ivan Kokshaysky
2007-09-17 20:30 ` Benjamin Herrenschmidt
2007-09-18 9:54 ` Ivan Kokshaysky
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=46ED692B.3010004@shaw.ca \
--to=hancockr@shaw.ca \
--cc=akpm@linux-foundation.org \
--cc=gregkh@suse.de \
--cc=ink@jurassic.park.msu.ru \
--cc=jbarnes@virtuousgeek.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@atrey.karlin.mff.cuni.cz \
--cc=matthew@wil.cx \
--cc=shaohua.li@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).