Symptom: DMA passes single-ID tests. Fails with multiple outstanding IDs and width converter between master and interconnect. Data corruption ~0.5% under stress.
Leading hypotheses: Bridge ID remap or sub-burst response reorder — responses matched to wrong upstream transaction.
Log every request/response with upstream ID, downstream ID, address, beat.
Check same-ID response order — any inversion is protocol violation.
If same-ID legal, check cross-ID order assumptions in software.
Inspect bridge: ID map table, outstanding tracking depth, response FIFO.
Reproduce with 2 outstanding reads to same address, different IDs.
Add scoreboard at bridge boundary with full ID+port key.
Assuming strict global ordering.
Debugging data channel without response order log.
Single-ID regression only after fix.
Symptom: After Linux kernel upgrade, network driver sees corrupt RX descriptors. Hardware unchanged.
Kernel may have changed DMA mapping attribute (coherent vs streaming).
Check dma_alloc_coherent vs dma_map_single — cache maintenance differs.
Verify barrier in driver between descriptor write and doorbell.
Compare driver descriptor ring setup old vs new kernel.
Blaming hardware when driver removed a necessary barrier.