This fixes virtio on Xen guests as well as on any other platform that uses virtio_pci on which physical addresses don't match bus addresses. This can be tested with: virtme-run --xen xen --kimg arch/x86/boot/bzImage --console using virtme from here: https://git.kernel.org/cgit/utils/kernel/virtme/virtme.git Without these patches, the guest hangs forever. With these patches, everything works. This should be safe on all platforms that I'm aware of. That doesn't mean that there isn't anything that I missed. Patches 4 and 5 are optional cleanups. I strongly encourage the virtio maintainers to apply patch 4, since it should be a very minor speedup as well as a cleanup, and patch 4 is critical fix if patch 5 is applied. Patch 5 is last for ease of reversion in case it causes problems. It is not necessary for DMA mappings to work, and it does not fix any bugs that I know of. It's just a cleanup. Thanks to everyone for putting up with the development of this series. Hopefully it'll be the end of DMA issues in virtio. :) Changes from v2: - Reordered patches. - Fixed a virtio_net OOPS. Changes from v1: - Using the DMA API is optional now. It would be nice to improve the DMA API to the point that it could be used unconditionally, but s390 proves that we're not there yet. - Includes patch 4, which fixes DMA debugging warnings from virtio_net. Andy Lutomirski (5): virtio_ring: Support DMA APIs if requested virtio_pci: Use the DMA API for virtqueues virtio_net: Stop doing DMA from the stack virtio_net: Don't set the end flag on reusable sg entries virtio_ring: Remove sg_next indirection drivers/lguest/lguest_device.c | 3 +- drivers/misc/mic/card/mic_virtio.c | 2 +- drivers/net/virtio_net.c | 59 ++++++--- drivers/remoteproc/remoteproc_virtio.c | 4 +- drivers/s390/kvm/kvm_virtio.c | 2 +- drivers/s390/kvm/virtio_ccw.c | 4 +- drivers/virtio/virtio_mmio.c | 5 +- drivers/virtio/virtio_pci.c | 35 ++++-- drivers/virtio/virtio_ring.c | 219 ++++++++++++++++++++++++++------- include/linux/virtio_ring.h | 1 + tools/virtio/linux/virtio.h | 1 + tools/virtio/virtio_test.c | 2 +- tools/virtio/vringh_test.c | 3 +- 13 files changed, 256 insertions(+), 84 deletions(-) -- 1.9.3 _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/virtualization