pci_pcie_cap invalid on AER/EEH enabled PPC?
benh at kernel.crashing.org
Wed Jul 6 12:47:27 EST 2011
On Tue, 2011-07-05 at 17:14 -0700, Richard A Lary wrote:
> I applied the debug patches mentioned above along with the lpfc patch
> to linux 3.0-rc6 kernel.
> The debug patches show that pci_dev members "is_pcie, pci_cap and pcie_type" are
> now all being set to correct values now that 'of_create_pci_dev()' calls
> 'set_pcie_port_type()'. I was not able to determine when this patch went in.
git is good for that :-)
Author: Benjamin Herrenschmidt <benh at kernel.crashing.org> 2010-01-27 04:10:03
Committer: Benjamin Herrenschmidt <benh at kernel.crashing.org> 2010-01-29 16:51:10
Parent: 4406c56d0a4da7a37b9180abeaece6cd00bcc874 (Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6)
Child: 26b4a0ca46985ae9586c194f7859f3838b1230f8 (powerpc/pci: Add missing hookup to pci_slot)
Branches: many (38)
powerpc/pci: Add calls to set_pcie_port_type() and set_pcie_hotplug_bridge()
We are missing these when building the pci_dev from scratch off
the Open Firmware device-tree
Signed-off-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
Acked-by: Jesse Barnes <jbarnes at virtuousgeek.org>
We should probably backport it to .32-stable. Any volunteer ?
You might also want to consider for backport:
> My tests show that lpfc driver now recovers from injected PCIe bus errors
> using test the 'if (pci_is_pcie(pdev))' for PCIe adapter type.
> I did not apply the test patch which changed the location of
> set_pcie_port_type(dev) in of_create_pci_dev(). I can apply and test
> this change if you think it is necessary?
No I think we call it in the right place, which mirrors
pci_setup_device(), that is before the early quirk.
> Based upon these results, I will ACK the change to the lpfc driver for
> "[PATCH 03/19] lpfc: remove unnecessary read of PCI_CAP_ID_EXP".
> I suspect that other drivers which are modified to use 'if (pci_is_pcie(pdev))'
> will work on Power PC as well, but I did not test any drivers other than lpfc.
More information about the Linuxppc-dev