On 2019-05-22 8:38 p.m., Grant Grundler wrote: > While PCI bus type is the same, most problems with device drivers are > at DMA Coherency/Memory ordering level. C3600 has PA8600 processor > and you might learn more about PA-8600 processor, Astro (IOMMU), and > Elroy (PCI host controller) from > https://www.openpa.net/systems/hp-visualize_b1000_c3000_c3600.html > > If you can try some experiments, start adding mb() calls after the > driver adds or removes an IO request from any list or queue. That's an interesting comment. On a UP kernel, mb() is currently just a compiler memory barrier. On a SMP kernel, mb() generates a "sync" instruction. We also use "ldcw" as a barrier in spinlocks. I'm thinking dma_rmb() and dma_wmb() may need to be stronger. Is "sync" or "syncdma" a better choice for these defines? Cheers, Dave -- John David Anglin dave.anglin@xxxxxxxx