Re: Can I/OAT DMA engineer access PCI MMIO space

From: Dan Williams
Date: Tue May 03 2011 - 17:20:31 EST


On 5/2/2011 7:21 PM, ååæ wrote:

I try to use ioatdam to copy data from system memory to pci MMIO space:
If dst points to a memory space, the operation would pass.
But if dst points to a pci MMIO space, it failed with kernel oops.
It seems the code:
BUG_ON(is_ioat_bug(chanerr));
in drivers/dma/ioat/dma_v3.c, line 365 cause the oops.
Is there anyway to access pci MMIO space using ioat?
The datasheet says that ioat supports MMIO access.
Did you map the IO memory in kernel using ioremap and friends first?

yes, I had used 'ioremap_nocache' to map the IO memory and I can use
memcpy to copy data to this region. The async_tx should have been
correctly configured as
I can use aync_memcpy to copy data between different system memory address.


ioremap maps mmio space for the cpu not bus mastering devices. You need to program the physical address into the descriptor.

--
Dan
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/