On Fri, 2014-04-11 at 14:15 -0700, Simon Ustimenko wrote: > Hello, > > we've been playing around with the I/OAT DMA, trying to make it copy > from main memory to the MMIO, and we're facing troubles (incomplete > transfers, kernel oops). > > Surprisingly, we have no problems with the DMA in the opposite direction. On the Xeon platform memory -> MMIO is supported, MMIO to memory and between MMIO is not. Not that you want to read from PCIe anyhow as the performance is bad. PCIe Writes are posted and reads are not. You can take a look at the NTB driver drivers/ntb/ in its usage of the IOATDMA transfer from mem -> mmio as an example. What kind of kernel oops are you hitting? And you have no issues using the CPU to copy the data to those regions? > The spec says memory->MMIO is supported, whereas MMIO->memory is not > (http://www.intel.com/content/dam/www/public/us/en/documents/datasheets/xeon-c5500-c3500-datasheet-vol-1.pdf): > > > 4.2.1.6.1 Supported Features > > The following features are supported by the DMA engine: > > * Data transfer between two system memory locations, or from system > memory to MMIO. > > > > 4.2.1.6.2 Unsupported Features > > The following features are not supported by the DMA controller: > > * DMA data transfer from I/O subsystem to local system memory, and > I/O to I/O subsystems are not supported. > > Can it be that the spec has it reversed? Could anyone confirm it is > working? Any projects are known to use it? > Or is it just us, doing it wrong? > > Regards, > Simon > -- > To unsubscribe from this list: send the line "unsubscribe dmaengine" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html ��.n��������+%������w��{.n��������)�)��jg��������ݢj����G�������j:+v���w�m������w�������h�����٥