{
        debug("%p %04x %08x\n", socket, reg, val);
        writel(val, socket->base + reg);
+       readl(socket->base + reg); /* avoid problems with PCI write posting */
 }
 
 static inline u8 config_readb(struct yenta_socket *socket, unsigned offset)
 {
        debug("%p %04x %02x\n", socket, reg, val);
        writeb(val, socket->base + 0x800 + reg);
+       readb(socket->base + 0x800 + reg); /* PCI write posting... */
 }
 
 static void exca_writew(struct yenta_socket *socket, unsigned reg, u16 val)
        debug("%p %04x %04x\n", socket, reg, val);
        writeb(val, socket->base + 0x800 + reg);
        writeb(val >> 8, socket->base + 0x800 + reg + 1);
+
+       /* PCI write posting... */
+       readb(socket->base + 0x800 + reg);
+       readb(socket->base + 0x800 + reg + 1);
 }
 
 /*