- use bus_dmamap_sync(9) when accessing DMA buffers.
- use readback after write to interrupt status register.
On ARM, writes to device registers are bufferable (not combining, uncacheable). Interrupt controller is typically tightly coupled to CPU complex, while devices control registers are on busses with high latency. Because of this, we can lost ordering of write that clears interrupt source in device interrupt status register and write that reenable interrupt in interrupt controller. Only readback of device interrupt status register can ensure correct write ordering.