linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Please revert 928bea964827d7824b548c1f8e06eccbbc4d0d7d
@ 2013-09-27  8:28 Benjamin Herrenschmidt
  2013-09-27 16:01 ` Yinghai Lu
  0 siblings, 1 reply; 24+ messages in thread
From: Benjamin Herrenschmidt @ 2013-09-27  8:28 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Yinghai Lu, Bjorn Helgaas, linux-pci, linuxppc-dev,
	Linux Kernel list

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.



^ permalink raw reply	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2013-11-05 23:26 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-09-27  8:28 Please revert 928bea964827d7824b548c1f8e06eccbbc4d0d7d Benjamin Herrenschmidt
2013-09-27 16:01 ` 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

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).