On Tue, Oct 24, 2006 at 04:36:32PM -0600, Matthew Wilcox wrote: > On Tue, Oct 24, 2006 at 02:51:30PM -0700, Roland Dreier wrote: > > > I think the right way to fix this is to ensure mmio write ordering in > > > the pci_write_config_*() implementations. Like this. > > > > I'm happy to fix this in the PCI core and not force drivers to worry > > about this. > > > > John, can you confirm that this patch fixes the issue for you? > Hang on. I wasn't thinking clearly. mmiowb() only ensures the write > has got as far as the shub. There's no way to fix this in the pci core What about shifting the requirement down to the platform? Ie on ia64 it would seem that inb/outb already solve this problem via mf.a. All platforms that support inb/outb correctly must have a synchronizing primitive for outb.. > This is only really a problem for setup (when we program the BARs), so > it seems silly to enforce an ordering at any other time. Reluctantly, I > must disagree with Jeff -- drivers need to fix this. I'm not sure that can work either. The PCI-X spec is very clear, you must wait for a non-posted completion if you care about order. Doing a config read in the driver as a surrogate flush is not good enough in the general case. Like you say, a pci bridge is free to reorder all in flight non-posted operations. Jason - To unsubscribe from this list: send the line "unsubscribe linux-ia64" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
![]() |