I am working with some hardware that has a "feature" that I'd like some advice on how to handle. The PCI bridge has a read-ahead buffer between the PCI bus and system memory - used by PCI bus masters. The buffer can only be invalidated from software. An example of the problem it causes is an ethernet device is kicked off to go through its ring buffers. The first one has a flag saying there is no data, so it stops. The kernel then puts data in the buffer, toggles the flag, and kicks off the ethernet device again. The old value of the flag is still in the read-ahead buffer so the device stops again. The fix is obviously to invalidate the read-ahead buffer before kicking off the device. The question is, how to do this in a generic way? I don't want to modify the driver for every PCI device that might be used. The only other way seems to be to add the buffer invalidation code to outb() etc. (and hope that no driver wants to use memory mapped registers). Is this "feature" common? Is there existing code I can look at? Suggestions very welcome. Thanks, Phil