[PATCH] powerpc/pci: fix PCI-e devices rescan issue on powerpc platform
Chen Yuanquan-B41889
B41889 at freescale.com
Wed Apr 3 15:08:36 EST 2013
On 04/02/2013 11:10 PM, Benjamin Herrenschmidt wrote:
> On Tue, 2013-04-02 at 19:26 +0800, Yuanquan Chen wrote:
>> So we move the DMA & IRQ initialization code from pcibios_setup_devices() and
>> construct a new function pcibios_enable_device. We call this function in
>> pcibios_enable_device, which will be called by PCI-e rescan code. At the
>> meanwhile, we avoid the the impact on cardbus. I also validate this patch with
>> silicon's PCIe-sata which encounters the IRQ issue.
> My worry is that this delays the setup of the IRQ and DMA to very late in
> the process, possibly after the quirks have been run, which can be
> problematic. We have platform hooks that might try to "fixup" specific
> IRQ issues on some platforms (especially macs) which I worry might fail
> if delayed that way (I may be wrong, I don't have a specific case in mind,
> but I would feel better if we kept setting up these things earlier).
>
> Cheers,
> Ben.
>
Hi Ben,
I have checked all the quirk functions which are declared in kernel
arch/powerpc
with command :
grep DECLARE_PCI_FIXUP_ `find arch/powerpc/ *.[hc]`
All the quirk function are defined as DECLARE_PCI_FIXUP_EARLY ,
DECLARE_PCI_FIXUP_HEADER
and DECLARE_PCI_FIXUP_FINAL, except quirk_uli5229() in
arch/powerpc/platforms/fsl_uli1575.c, which is
defined both as DECLARE_PCI_FIXUP_HEADER and DECLARE_PCI_FIXUP_RESUME.
So the quirk_uli5229()
will also be called with PCI pm module. The quirk functions defined as
xxx_FINAL, HEADER and EARLY,
will be called in the path:
pci_scan_child_bus()->pci_scan_slot()->pci_scan_single_device()->pci_scan_device()->pci_setup_device()
->pci_device_add()
the pci_scan_slot() is called earlier than pcibios_fixup_bus() even for
the first scan of PCI-e bus, so the quirk
functions on powerpc platform is called before the DMA & IRQ fixup. So
in reality, the delay of DMA & IRQ fixup
won't affect anything.
Regards,
Yuanquan
>
>
>
More information about the Linuxppc-dev
mailing list