On 04/10/17 17:31, Stefano Stabellini wrote: > I think the reason is that, as you can see, if (dev && dev->dma_ops), > dev->dma_ops is returned, while before this changes, xen_dma_ops was > returned on Xen on ARM. > > Unfortunately DMA cannot work properly without using the appropriate > xen_dma_ops. See drivers/xen/swiotlb-xen.c and arch/arm/xen/mm.c for > more details. (The problem is easy to spot, but I wasn't CC'ed on the > patch.) > > I don't know how to solve this problem without introducing some sort of > if (xen()) in include/linux/dma-mapping.h. Sorry but I don't have access to an ARM development system. Does your comment apply to dev == NULL only, dev != NULL only or perhaps to both? If your comment applies to dev != NULL only, can you check whether adding something like set_dma_ops(dev, get_arch_dma_ops(NULL)) to the appropriate ARM arch_setup_dma_ops() function is sufficient? Thanks, Bart.