I am in need of a local DMA engine to xfer data to and from system memory and a PCIe card (BAR) access. The development card is a Xilinx and has no bus master DMA engine on board and for the sake of this information request will not have one for our very specific use.
Does the 8237 DMA engine that was in the original PCs still available in some sort where it can be used within Linux to DMA data around from memory <--> memory or memory <--> PCIe?
I am looking at an older Linux kernel book and they are referring to the DMA and DAC (64bit) for PCI. I have always used the bus-master DMA on board the PCI cards to perform the DMA functionality. Do the current CPUs still have the concept of a local DMA engine on the host-side of the bus? Or has that been mostly deprecated from the PC?
I saw this article and now wonder if concept of local DMA engine is now only available on specific XEON processsors since most DMA transactions seem to only exist on the PCIe device itself.
I also was looking at the IOMMU, would this be an alternative for local DMA mem<-->mem, mem<-->PCIe?
The article https://software.intel.com/en-us/articles/fast-memcpy-using-spdk-and-ioat-dma-engine looks like it should be relevant to recent processors....
It is challenging to keep up with the marketing names and code words, but the product brief for the "Intel Xeon Scalable Platform" lists "Intel QuickData Technology (CBDMA)" as supported in all Xeon Scalable processor models.
There are lots of references to CBDMA in the "Intel Xeon Processor Scalable Memory Family Uncore Performance Monitoring Guide" (document 336274-001, July 2017), which is currently available at https://www.intel.com/content/www/us/en/processors/xeon/scalable/xeon-scalable-uncore-performance-monitoring-manual.html
I have no idea which bits of software interact with the various bits of hardware in this area -- hopefully the first reference above will be useful...