Re: [PATCH v5 0/3] virtio: Use the DMA API when appropriate

Konrad Rzeszutek Wilk
2014-09-19T18:25:47Z

On Tue, Sep 16, 2014 at 10:22:25PM -0700, Andy Lutomirski wrote:
> 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.

I can do 'Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>'
but not sure through whom this patch should go through?

>
> 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.
>
> Applies to net-next.
>
> Changes from v4:
> - Rebased onto net-next.
> - Dropped the sg end mark changes from virtio_net, as that issue
> is solved differently in net-next.
> - virtio_pci does not use the DMA API on powerpc, for reasons that
> are explained in a detailed comment in virtio_ring.
>
> Changes from v3:
> - virtio_pci only asks virtio_ring to use the DMA API if
> !PCI_DMA_BUS_IS_PHYS.
> - Reduce tools/virtio breakage. It's now merely as broken as before
> instead of being even more broken.
> - Drop the sg_next changes -- Rusty's version is better.
>
> 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 (3):
> virtio_ring: Support DMA APIs if requested
> virtio_pci: Use the DMA API for virtqueues when possible
> virtio_net: Stop doing DMA from the stack
>
> drivers/lguest/lguest_device.c | 3 +-
> drivers/misc/mic/card/mic_virtio.c | 2 +-
> drivers/net/virtio_net.c | 53 ++++++---
> 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 | 91 ++++++++++++++--
> drivers/virtio/virtio_ring.c | 194 +++++++++++++++++++++++++++------
> include/linux/virtio_ring.h | 1 +
> tools/virtio/linux/dma-mapping.h | 17 +++
> tools/virtio/linux/virtio.h | 1 +
> tools/virtio/virtio_test.c | 2 +-
> tools/virtio/vringh_test.c | 3 +-
> 14 files changed, 314 insertions(+), 68 deletions(-)
> create mode 100644 tools/virtio/linux/dma-mapping.h
>
> --
> 1.9.3
>