From: Andy Lutomirski <luto@amacapital.net>
To: Rusty Russell <rusty@rustcorp.com.au>,
"Michael S. Tsirkin" <mst@redhat.com>
Cc: linux-s390@vger.kernel.org,
Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
virtualization@lists.linux-foundation.org,
Christian Borntraeger <borntraeger@de.ibm.com>,
Paolo Bonzini <pbonzini@redhat.com>,
linux390@de.ibm.com, Andy Lutomirski <luto@amacapital.net>
Subject: [PATCH v4 0/4] virtio: Clean up scatterlists and use the DMA API
Date: Mon, 1 Sep 2014 10:39:31 -0700 [thread overview]
Message-ID: <cover.1409593066.git.luto@amacapital.net> (raw)
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.
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 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 (4):
virtio_ring: Support DMA APIs if requested
virtio_pci: Use the DMA API for virtqueues
virtio_net: Don't set the end flag on reusable sg entries
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 | 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 | 41 ++++++--
drivers/virtio/virtio_ring.c | 187 +++++++++++++++++++++++++++++----
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, 268 insertions(+), 63 deletions(-)
create mode 100644 tools/virtio/linux/dma-mapping.h
--
1.9.3
next reply other threads:[~2014-09-01 17:39 UTC|newest]
Thread overview: 76+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-01 17:39 Andy Lutomirski [this message]
2014-09-01 17:39 ` [PATCH v4 1/4] virtio_ring: Support DMA APIs if requested Andy Lutomirski
2014-09-01 17:39 ` [PATCH v4 2/4] virtio_pci: Use the DMA API for virtqueues Andy Lutomirski
2014-09-01 17:39 ` [PATCH v4 3/4] virtio_net: Don't set the end flag on reusable sg entries Andy Lutomirski
2014-09-01 17:39 ` [PATCH v4 4/4] virtio_net: Stop doing DMA from the stack Andy Lutomirski
2014-09-01 22:16 ` [PATCH v4 0/4] virtio: Clean up scatterlists and use the DMA API Benjamin Herrenschmidt
2014-09-02 5:55 ` Andy Lutomirski
2014-09-02 20:53 ` Benjamin Herrenschmidt
2014-09-02 20:56 ` Konrad Rzeszutek Wilk
2014-09-02 21:08 ` Benjamin Herrenschmidt
2014-09-02 21:37 ` Andy Lutomirski
2014-09-02 22:10 ` Benjamin Herrenschmidt
2014-09-02 23:11 ` Andy Lutomirski
2014-09-02 23:20 ` Benjamin Herrenschmidt
2014-09-02 23:42 ` Andy Lutomirski
2014-09-03 0:25 ` Benjamin Herrenschmidt
2014-09-03 0:32 ` Andy Lutomirski
2014-09-03 0:43 ` Benjamin Herrenschmidt
2014-09-04 2:03 ` Andy Lutomirski
2014-09-03 7:47 ` Paolo Bonzini
2014-09-03 7:52 ` Andy Lutomirski
2014-09-03 8:01 ` Paolo Bonzini
2014-09-03 8:05 ` Benjamin Herrenschmidt
2014-09-03 12:11 ` Paolo Bonzini
2014-09-03 15:07 ` Andy Lutomirski
2014-09-03 15:11 ` Paolo Bonzini
2014-09-03 16:39 ` Michael S. Tsirkin
2014-09-03 20:38 ` Andy Lutomirski
2014-09-03 7:43 ` Paolo Bonzini
2014-09-03 6:42 ` Rusty Russell
2014-09-03 7:50 ` Andy Lutomirski
2014-09-05 2:31 ` Rusty Russell
2014-09-05 2:57 ` Andy Lutomirski
2014-09-05 5:20 ` Benjamin Herrenschmidt
2014-09-05 7:33 ` Christian Borntraeger
2014-09-10 15:36 ` Christopher Covington
2014-09-10 16:15 ` Andy Lutomirski
2014-09-05 5:16 ` Benjamin Herrenschmidt
2014-09-14 8:58 ` Michael S. Tsirkin
2014-09-03 12:51 ` Michael S. Tsirkin
2014-09-05 2:32 ` Rusty Russell
2014-09-05 3:06 ` Andy Lutomirski
2014-09-02 21:10 ` Michael S. Tsirkin
2014-09-02 21:49 ` Andy Lutomirski
-- strict thread matches above, loose matches on Subject: below --
2015-07-28 1:08 Andy Lutomirski
2015-07-28 7:05 ` Christian Borntraeger
2015-07-28 8:16 ` Paolo Bonzini
2015-07-28 10:12 ` Benjamin Herrenschmidt
2015-07-28 12:46 ` Paolo Bonzini
2015-07-28 13:06 ` Michael S. Tsirkin
2015-07-28 13:11 ` Jan Kiszka
2015-07-28 16:11 ` Andy Lutomirski
2015-07-28 16:44 ` Jan Kiszka
2015-07-28 17:10 ` Andy Lutomirski
2015-07-28 17:17 ` Jan Kiszka
2015-07-28 18:22 ` Andy Lutomirski
2015-07-28 19:06 ` Jan Kiszka
2015-07-28 19:24 ` Andy Lutomirski
2015-07-28 19:33 ` Jan Kiszka
2015-07-28 21:16 ` Andy Lutomirski
2015-07-28 22:43 ` Andy Lutomirski
2015-07-28 23:21 ` Benjamin Herrenschmidt
2015-07-28 23:33 ` Andy Lutomirski
2015-07-29 0:36 ` Benjamin Herrenschmidt
2015-07-29 0:47 ` Andy Lutomirski
2015-07-29 0:54 ` Benjamin Herrenschmidt
2015-07-29 8:17 ` Paolo Bonzini
2015-07-29 8:20 ` Jan Kiszka
2015-07-29 9:21 ` Benjamin Herrenschmidt
2015-07-29 8:07 ` Jan Kiszka
2015-07-28 16:36 ` Paolo Bonzini
2015-07-28 16:42 ` Jan Kiszka
2015-07-28 17:15 ` Paolo Bonzini
2015-07-28 17:19 ` Jan Kiszka
2015-07-28 17:31 ` Paolo Bonzini
2015-07-28 13:08 ` Michael S. Tsirkin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cover.1409593066.git.luto@amacapital.net \
--to=luto@amacapital.net \
--cc=benh@kernel.crashing.org \
--cc=borntraeger@de.ibm.com \
--cc=konrad.wilk@oracle.com \
--cc=linux-s390@vger.kernel.org \
--cc=linux390@de.ibm.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=rusty@rustcorp.com.au \
--cc=virtualization@lists.linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).