[PATCH 0/3] virtio: Clean up scatterlists and use the DMA API

Cornelia Huck
Wed, 27 Aug 2014 07:54:11 -0000

On Tue, 26 Aug 2014 14:16:59 -0700
Andy Lutomirski <luto at amacapital.net> wrote:

> This fixes virtio on Xen guests as well as on any other platform 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.
>
> There are two outstanding issues.  virtio_net warns if DMA debugging
> is on because it does DMA from the stack.  (The warning is correct.)
> This also is likely to do something unpleasant to s390.

s/is likely to do something unpleasant to/breaks/

Sorry, this just won't work for s390, as Christian already explained.

> (Maintainers are cc'd -- I don't know what to do about it.)
>
> Andy Lutomirski (3):
>   virtio_ring: Remove sg_next indirection
>   virtio_ring: Use DMA APIs
>   virtio_pci: Use the DMA API for virtqueues
>
>  drivers/virtio/Kconfig       |   1 +
>  drivers/virtio/virtio_pci.c  |  25 ++++++--
>  drivers/virtio/virtio_ring.c | 150
++++++++++++++++++++++++++++++-------------
>  3 files changed, 125 insertions(+), 51 deletions(-)
>

Aren't you also changing some basic assumptions with the conversion to
DMA apis? virtqueues currently aren't accessed via dma (or it wouldn't
work on s390); if you want (say) virtio-pci to use dma, shouldn't that
be something that is negotiated between guest and host?