Quick aic7xxx bug hunt...

Jeff Garzik (jgarzik@mandrakesoft.com)
Mon, 23 Sep 2002 17:27:39 -0400


Justin T. Gibbs wrote:
> On some motherboards with some chipsets, you can get these messages if
> another busmaster (say an IDE drive or a sound card) is hogging the bus.
> Usually this is with a VIA chipset. Its not clear why the aic7xxx_old
> driver would behave differently other than it disables memory write
> and invalidate PCI transactions on this chip. The new driver doesn't
> need that work around.

Justin,

One thing I notice is at least one PCI posting bug. When using MMIO
(write[bwlq] under Linux), you _must_ use a read[bwlq] to flush the
write to PCI, if you wish to ensure the write posts at a certain point
in the code.

Here is the example PCI posting bug, in ahc_clear_critical_section:
> ahc_outb(ahc, HCNTRL, ahc->unpause);
> do {
> ahc_delay(200);
> } while (!ahc_is_paused(ahc));

As you can see, there is no read before the udelay(), which is very
wrong on modern CPUs with write posting... that's definitely a driver
bug that will bite you on modern x86 motherboards [and is totally broken
on ia64 and other platforms].

Please let me know if you have further questions on PCI write posting...

Jeff

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/