From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Yinghai Lu <yinghai@kernel.org>,
Bjorn Helgaas <bhelgaas@google.com>,
linux-pci@vger.kernel.org,
linuxppc-dev <linuxppc-dev@lists.ozlabs.org>,
Linux Kernel list <linux-kernel@vger.kernel.org>
Subject: Please revert 928bea964827d7824b548c1f8e06eccbbc4d0d7d
Date: Fri, 27 Sep 2013 18:28:39 +1000 [thread overview]
Message-ID: <1380270519.27811.10.camel@pasglop> (raw)
Hi Linus, Yinghai !
Please consider reverting:
928bea964827d7824b548c1f8e06eccbbc4d0d7d
PCI: Delay enabling bridges until they're needed
(I'd suggest to revert now and maybe merge a better patch later)
This breaks PCI on the PowerPC "powernv" platform (which is booted via
kexec) and probably x86 as well under similar circumstances. It will
basically break PCIe if the bus master bit of the bridge isn't set at
boot (by the firmware for example, or because kexec'ing cleared it).
The reason is that the PCIe port driver will call pci_enable_device() on
the bridge (on everything under the sun actually), which will marked the
device enabled (but will not do a set_master).
Because of that, pci_enable_bridge() later on (called as a result of the
child device driver doing pci_enable_device) will see the bridge as
already enabled and will not call pci_set_master() on it.
Now, this could probably be fixed by simply doing pci_set_master() in
the PCIe port driver, but I find the whole logic very fragile (anything
that "enables" the bridge without setting master or for some reason
clears master will forever fail to re-enable it).
Maybe a better option is to unconditionally do pci_set_mater() in
pci_enable_bridge(), ie, move the call to before the enabled test.
However I am not too happy with that either. My experience with bridges
is that if bus master isn't set, they will also fail to report AER
errors and other similar upstream transactions. We might want to get
these reported properly even if no downstream device got successfully
enabled.
So I think the premises of the patches are flawed, at least on PCI
express, and we should stick to always enabling bridges (at least the
bus master bit on them).
Cheers,
Ben.
next reply other threads:[~2013-09-27 8:28 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-27 8:28 Benjamin Herrenschmidt [this message]
2013-09-27 16:01 ` Please revert 928bea964827d7824b548c1f8e06eccbbc4d0d7d Yinghai Lu
2013-09-27 17:10 ` Linus Torvalds
2013-09-27 21:46 ` Benjamin Herrenschmidt
2013-09-27 21:54 ` Yinghai Lu
2013-09-27 22:00 ` Benjamin Herrenschmidt
2013-09-27 22:38 ` Benjamin Herrenschmidt
2013-09-27 22:56 ` Yinghai Lu
2013-09-27 23:19 ` Benjamin Herrenschmidt
2013-09-27 23:44 ` Yinghai Lu
2013-09-28 3:05 ` Benjamin Herrenschmidt
2013-09-28 20:13 ` [PATCH] PCI: Workaround missing pci_set_master in pci drivers Yinghai Lu
2013-09-29 22:41 ` Theodore Ts'o
2013-09-29 22:46 ` Linus Torvalds
2013-09-29 22:57 ` Theodore Ts'o
2013-10-03 22:06 ` Bjorn Helgaas
2013-10-03 23:35 ` Yinghai Lu
2013-10-04 15:55 ` Bjorn Helgaas
2013-11-04 12:44 ` Paul Bolle
2013-11-05 23:26 ` Bjorn Helgaas
2013-09-28 20:14 ` Please revert 928bea964827d7824b548c1f8e06eccbbc4d0d7d Yinghai Lu
2013-09-29 0:40 ` Rafael J. Wysocki
2013-09-27 17:44 ` Yinghai Lu
2013-09-27 22:15 ` Benjamin Herrenschmidt
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=1380270519.27811.10.camel@pasglop \
--to=benh@kernel.crashing.org \
--cc=bhelgaas@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=torvalds@linux-foundation.org \
--cc=yinghai@kernel.org \
/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).