Good idea!+ /* dummy read to flush PCI write */This is going to choke some hardware, I guarantee.
+ readb(addr);
You always want to make sure your flush is of the same size at the write. Reading a byte from an address that the hardware defines as "32-bit writes only" can get ugly real quick ;-)
also reading back addr might not be the best choice in case some
registers have side effects on reading, it's probably better to read
back an address that is known to be ok to read (like the vendor ID
field)