From: Matthew Wilcox <matthew@wil.cx>
To: Prarit Bhargava <prarit@redhat.com>
Cc: Don Dutile <ddutile@redhat.com>,
Bjorn Helgaas <bhelgaas@google.com>,
James Paradis <jparadis@redhat.com>,
linux-pci@vger.kernel.org, mstowe@redhat.com,
matthew wilcox <matthew.wilcox@linux.intel.com>,
jbarnes@virtuousgeek.org
Subject: Re: [PATCH] pci: Workaround Stratus broken PCIE hierarchy
Date: Mon, 14 Nov 2011 11:14:19 -0700 [thread overview]
Message-ID: <20111114181418.GE4387@parisc-linux.org> (raw)
In-Reply-To: <4EC12962.2040105@redhat.com>
On Mon, Nov 14, 2011 at 09:44:50AM -0500, Prarit Bhargava wrote:
> On 11/11/2011 03:35 PM, Don Dutile wrote:
> We should make it work automatically, either with
> >> some sort of machine-dependent quirk, or (preferably) with a change to
> >> the generic algorithm so it can handle these "broken" topologies along
> >> with all the correct ones.
>
> The problem is when I'm examining "this" PCIE bridge I have no knowledge of the remaining hierarchy below it. In order to find the broken topology we need to do a two pass enumeration (NO.) or minimally query all possible devices immediately connected to it. If we do that then what is the purpose of the only_one_child() check?
We have enough information to do this quirk.
pci_scan_slot calls pci_scan_single_device() for the devfn 0.
We can look at the device we found and quirk the parent device.
Something like this ...
int pci_scan_slot(struct pci_bus *bus, int devfn)
[...]
dev = pci_scan_single_device(bus, devfn);
if (!dev)
return 0;
if (!dev->is_added)
nr++;
+ /* Quirk to fix NEC/Stratus broken PCIe topologies */
+ if ((dev->pcie_type == PCI_EXP_TYPE_DOWNSTREAM) &&
+ (bus->self->pcie_type == PCI_EXP_TYPE_DOWNSTREAM))
+ bus->self->pcie_type = PCI_EXP_TYPE_UPSTREAM;
if (pci_ari_enabled(bus))
next_fn = next_ari_fn;
[...]
As an aside, I'm quite shocked that this patch has been in the kernel
for almost two years and this is the first time anybody's tested it on
one of these systems.
--
Matthew Wilcox Intel Open Source Technology Centre
"Bill, look, we understand that you're interested in selling us this
operating system, but compare it to ours. We can't possibly take such
a retrograde step."
next prev parent reply other threads:[~2011-11-14 18:14 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-10 14:00 [PATCH] pci: Workaround Stratus broken PCIE hierarchy Prarit Bhargava
2011-11-10 14:31 ` Matthew Wilcox
2011-11-10 16:50 ` Don Dutile
2011-11-11 17:41 ` James Paradis
2011-11-11 19:13 ` Don Dutile
2011-11-11 20:29 ` Bjorn Helgaas
2011-11-11 20:35 ` Don Dutile
2011-11-14 14:44 ` Prarit Bhargava
2011-11-14 18:14 ` Matthew Wilcox [this message]
2011-11-14 19:50 ` Prarit Bhargava
2011-11-15 20:16 ` Matthew Wilcox
2011-11-15 15:56 ` Prarit Bhargava
2011-11-15 16:08 ` Rolf Eike Beer
2011-11-15 18:14 ` Bjorn Helgaas
2011-11-15 18:25 ` Prarit Bhargava
2011-11-15 21:08 ` James Paradis
2011-11-15 21:52 ` Myron Stowe
2011-11-15 22:14 ` James Paradis
2011-11-15 20:15 ` Matthew Wilcox
2011-11-16 16:53 ` Prarit Bhargava
2011-11-17 0:18 ` Prarit Bhargava
2011-11-15 21:53 ` James Paradis
2011-11-15 22:27 ` James Paradis
2011-11-15 23:07 ` Don Dutile
-- strict thread matches above, loose matches on Subject: below --
2012-04-25 17:56 Prarit Bhargava
2012-04-25 23:35 ` Bjorn Helgaas
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=20111114181418.GE4387@parisc-linux.org \
--to=matthew@wil.cx \
--cc=bhelgaas@google.com \
--cc=ddutile@redhat.com \
--cc=jbarnes@virtuousgeek.org \
--cc=jparadis@redhat.com \
--cc=linux-pci@vger.kernel.org \
--cc=matthew.wilcox@linux.intel.com \
--cc=mstowe@redhat.com \
--cc=prarit@redhat.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 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.