ARM: Kirkwood: Update PCI-E fixup
Subsystems (2)
PATCH 1/1 ARM: Kirkwood: Update PCI-E fixup
- The code relies on rc_pci_fixup being called, which only happens when CONFIG_PCI_QUIRKS is enabled, so add that to Kconfig. Omitting this causes a booting failure with a non-obvious cause.
- Update rc_pci_fixup to set the class properly, copying the more modern style from other places
- Correct the rc_pci_fixup comment
--- arch/arm/Kconfig | 1 + arch/arm/mach-kirkwood/pcie.c | 9 ++++++--- 2 files changed, 7 insertions(+), 3 deletions(-)
Another cleanup.. It took a fair while to figure out that things were not working properly because PCI_QUIRKS was not set :|
arch/arm/Kconfig +1 -0
@@ -547,6 +547,7 @@ config ARCH_KIRKWOOD select CPU_FEROCEON select GENERIC_CLOCKEVENTS select PCI + select PCI_QUIRKS select PLAT_ORION_LEGACY help Support for the following Marvell Kirkwood series SoCs:
arch/arm/mach-kirkwood/pcie.c +6 -3
@@ -207,14 +207,17 @@ static int __init kirkwood_pcie_setup(int nr, struct pci_sys_data *sys)return 1 ; } +/* The root complex has a hardwired class of PCI_CLASS_MEMORY_OTHER, when it +is operating as a root complex this needs to be switched to +PCI_CLASS_BRIDGE_HOST or Linux will errantly try to process the BAR's on +the device. Decoding setup is handled by the orion code. */ static void __devinit rc_pci_fixup (struct pci_dev *dev) { -/* -* Prevent enumeration of root complex. -*/ if (dev->bus->parent ==NULL && dev->devfn ==0 ) {int i; + dev->class &=0xff ; + dev->class |=PCI_CLASS_BRIDGE_HOST <<8 ;for (i =0 ; i <DEVICE_COUNT_RESOURCE ; i++) { dev->resource[i].start =0 ; dev->resource[i].end =0 ;
Signature · 1 line
1.7.4.1
PATCH 1/1 ARM: Kirkwood: Update PCI-E fixup
Dear Jason Gunthorpe,
arch/arm/mach-kirkwood/pcie.c static int __init kirkwood_pcie_setup(int nr, struct pci_sys_data *sys) · line 213
Quoted 4 lines · Jason Gunthorpe
arch/arm/mach-kirkwood/pcie.c +4
-0+/* The root complex has a hardwired class of PCI_CLASS_MEMORY_OTHER, when it +is operating as a root complex this needs to be switched to +PCI_CLASS_BRIDGE_HOST or Linux will errantly try to process the BAR's on +the device. Decoding setup is handled by the orion code. */
Sorry for this unique silly review comment, but this comment does not comply with the kernel CodingStyle for multicomments. It should be:
/*
* Blabla.
* Blibli.
*/
Thanks,
Thomas
Signature · 4 lines
Thomas Petazzoni, Free Electrons Kernel, drivers, real-time and embedded Linux development, consulting, training and support. http://free-electrons.com
PATCH 1/1 ARM: Kirkwood: Update PCI-E fixup
Quoted 11 lines · Thomas Petazzoni
Dear Jason Gunthorpe,
arch/arm/mach-kirkwood/pcie.c static int __init kirkwood_pcie_setup(int nr, struct pci_sys_data *sys) · line 213
Quoted 4 lines · Jason Gunthorpe
arch/arm/mach-kirkwood/pcie.c +4
-0+/* The root complex has a hardwired class of PCI_CLASS_MEMORY_OTHER, when it +is operating as a root complex this needs to be switched to +PCI_CLASS_BRIDGE_HOST or Linux will errantly try to process the BAR's on +the device. Decoding setup is handled by the orion code. */ Sorry for this unique silly review comment, but this comment does not comply with the kernel CodingStyle for multicomments. It should be:
Ok! Though I'm surprised checkpatch didn't complain?
Jason
PATCH 1/1 ARM: Kirkwood: Update PCI-E fixup
Quoted 10 lines · Jason Gunthorpe
Quoted 9 lines · Thomas Petazzoni
Dear Jason Gunthorpe,
Quoted 4 lines · Jason Gunthorpe
arch/arm/mach-kirkwood/pcie.c +4
-0+/* The root complex has a hardwired class of PCI_CLASS_MEMORY_OTHER, when it +is operating as a root complex this needs to be switched to +PCI_CLASS_BRIDGE_HOST or Linux will errantly try to process the BAR's on +the device. Decoding setup is handled by the orion code. */
Quoted 4 lines
Quoted 2 lines
Sorry for this unique silly review comment, but this comment does not comply with the kernel CodingStyle for multicomments. It should be:
Ok! Though I'm surprised checkpatch didn't complain?
I'll fix this up as I'm merging it in the next few minutes.
thx,
Jason.