On Thu, Jan 31, 2013 at 03:30:41PM +0100, Thomas Petazzoni wrote: > Dear Russell King - ARM Linux, > > On Wed, 30 Jan 2013 15:46:02 +0000, Russell King - ARM Linux wrote: > > > +resource_size_t pcibios_window_alignment(struct pci_bus *bus, > > + unsigned long type) > > +{ > > + struct pci_sys_data *sys = bus->sysdata; > > + > > + /* Ignore downstream buses */ > > + if (!bus->parent) { > > + if (type & IORESOURCE_MEM) > > + return sys->win_align_mem; > > + if (type & IORESOURCE_IO) > > + return sys->win_align_io; > > + } > > + return 1; > > +} > > + > > Unfortunately, this doesn't work as is for me: the if (!bus->parent) > prevents the thing from being effective. Here my lspci output: > > # /usr/sbin/lspci > 00:00.0 Host bridge: Marvell Technology Group Ltd. Device 102d > 00:01.0 PCI bridge: Marvell Technology Group Ltd. Device 1092 > 00:02.0 PCI bridge: Marvell Technology Group Ltd. Device 1092 > 00:03.0 PCI bridge: Marvell Technology Group Ltd. Device 1092 > 00:04.0 PCI bridge: Marvell Technology Group Ltd. Device 1092 > 00:05.0 PCI bridge: Marvell Technology Group Ltd. Device 1092 > 00:06.0 PCI bridge: Marvell Technology Group Ltd. Device 1092 > 03:00.0 SCSI storage controller: Marvell Technology Group Ltd. 88SX7042 PCI-e 4-port SATA-II (rev 02) > 05:00.0 Ethernet controller: Intel Corporation 82572EI Gigabit Ethernet Controller (Copper) (rev 06) > > And the function pcibios_window_alignment() only gets called for bus 1, > 2, 3, 4, 5, 6 and never for bus 0. That's the exact reverse of what I'd expect: the child buses should have a non-NULL parent pointer. Hmm. Try changing that for !bus->self - that should make it effective only on the host bridge. But... hang on... /* * Returns true if the pci bus is root (behind host-pci bridge), * false otherwise */ static inline bool pci_is_root_bus(struct pci_bus *pbus) { return !(pbus->parent); } So the original test _is_ correct, and should only be triggered for the _root_ bus, that being bus 0 in the above case. But... wait a moment, what are you saying? Which bridges need this fixup? The Marvell PCI-to-PCI bridges or the host bridge? -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html