Error message

xillybus: Kernel lacks DMA sync methods.


The full message reads:

xillybus: Kernel lacks DMA sync methods. Workaround applied, but it may result in an immediate kernel panic. It is recommended to apply an adequate patch to the relevant kernel/dma.c, or upgrade to a kernel version supporting this natively.

This message is issued when the kernel does nothing on calls to dma_sync_single_for_cpu() and dma_sync_single_for_device(). These two functions invalidate the cache, so that DMA works properly. Simple embedded processors, such as Microblaze (as opposed to x86) need this cache invalidation, which is why not supporting these two functions will cause the driver to fail.

The driver works this problem around by unmapping and remapping the DMA memory segments. This works properly on Microblaze, but it's still a problematic solution.


Recommended action

The correct way to solve this problem is to make sure that the methods are indeed supported. This can be done by applying a patch to dma.c, or use a kernel version which has this issue resolved, if such exists.