3 Replies Latest reply on May 11, 2015 4:43 PM by joe_intel

    ioatdma: help and/or additional documentation


      I have an Intel Xeon E5-2667 v3 and am working with the Linux ioatdma driver (device IDs 0x2f20..0x2f27).

      The only Intel documentation I’ve found are the Xeon E5 v3 datasheets (vols 1 & 2). Vol 2 has the register layout, but no operational description, descriptor formats, etc.


      I'm trying to use the DMA engine to transfer from PCIe memory (non-prefetchable) to system memory, but the PCIe address gets reported as an invalid source address (chanerr::dma_trans_saddr_err). The data that gets written appears to be stale data in the ioatdma internal (64 byte?) DMA buffers.

      If I swap the addresses, i.e., write to PCIe, everything works fine.


      At this point I have to assume ioatdma is sending a read request that gets a bad completion of some kind (bad status or poisoned?). Not sure how to chase this down further within chip. Or other variation I can try -- seems like the primary ioatdma use case is memcpy between 2 system memory locations.

      (I'm trying to work this from the PCIe endpoint as well.)