[RFC PATCH] PCI-E broken on PPC (regression)

Jesse Barnes jbarnes at virtuousgeek.org
Thu Jan 28 03:26:24 EST 2010


On Wed, 27 Jan 2010 13:10:56 +1100
Benjamin Herrenschmidt <benh at kernel.crashing.org> wrote:

> 
> > Cc'ing Ben for PPC.  Ben, should PPC use pci_scan_device when probing
> > its root busses?  Sounds like it just uses pci_device_add for each one
> > it finds instead?
> > 
> > If you don't actually need scanning (though what about hotplug?) we can
> > move the call to device_add instead...
> 
> Ok so I looked at the code and the problem goes way beyond root busses.
> 
> Basically, powerpc can use the code in arch/powerpc/kernel/pci_of_scan.c
> to "generate" the pci_dev without using config space probing or at least
> using as little of it as possible, using the firmware device-tree
> information instead.
> 
> This is also probably going to be moved to a more generic place and
> extended to be used optionally by other architectures.
> 
> I think sparc does something similar in fact in arch/sparc/kernel/pci.c
> (of_create_pci_dev()) though it would be logical to have sparc and
> powerpc share the same implementation here in the long run and I believe
> Grant Likely is working on it.
> 
> That means that potentially, pci_dev will be created on those archs for
> which pci_setup_device() is never called. Thus we need to be very
> careful when adding initializations there that at least we (myself and
> davem) are notified of that so we can mirror them in our code, or even
> better, if people doing so put them there too...
> 
> So as far as I can tell, we are missing that set_pcie_port_type(), so we
> need to add it to sparc and powerpc (and so make the function non-static
> in drivers/pci/probe.c). We are also missing the manipulation of
> dev->slot in fact, so that will need to be fixed too.
> 
> set_pcie_hotplug_bridge() might be something we want to add too, it's
> not totally clear yet due to possible issues with our firmwares.
> pci_fixup_device(pci_fixup_early,...) as well in fact.
> 
> I'll try do make ppc catch up with some of that see how it goes.

Thanks Ben.  Any refactoring we need to handle this stuff better is
fine with me too.  I guess on some platforms calling pci_setup_device
may cause problems with special platform devices?

-- 
Jesse Barnes, Intel Open Source Technology Center


More information about the Linuxppc-dev mailing list