From: "Michael S. Tsirkin" <mst@redhat.com>
To: qemu-devel@nongnu.org, Jason Wang <jasowang@redhat.com>,
Anthony Liguori <anthony@codemonkey.ws>,
stefanha@linux.vnet.ibm.com, aurelien@aurel32.net
Subject: [Qemu-devel] [PATCH 00/14] virtio-net: iovec handling cleanup
Date: Tue, 25 Sep 2012 01:04:26 +0200 [thread overview]
Message-ID: <cover.1348527749.git.mst@redhat.com> (raw)
virtio net is using lots of manual mangling of iovecs;
I don't see any obvious crashes but it does look scary since guest can
manipulate iovecs. This patchset changes it to use iov_* functions
which are safer.
On a recent linux kernel, new code will actually do less
iovec processing because it is able to utilize
support for mergeable buffer header size added in
tun/tap in linux 2.6.35 - though I was unable to measure any
speed difference.
This also removes the restriction on buffer layout, aligning qemu with
recent versions of virtio spec which imply that device should be
prepared to handle e.g. virtio net header inline with the packet data in
the same buffer.
Tsted on x86 kvm only for now, would appreciate cross-endianness etc
testing/reports. This is also why I split this to so many small patches
to make bisect easier in case of problems.
Michael S. Tsirkin (14):
virtio-net: track host/guest header length
iov: add const annotation
iov: add iov_cpy
virtio-net: avoid sg copy
virtio-net: use safe iov operations for rx
virtio-net: refactor receive_hdr
virtio-net: first s/g is always at start of buf
virtio-net: switch tx to safe iov functions
virtio-net: simplify rx code
virtio: don't mark unaccessed memory as dirty
virtio-net: fix used len for tx
virtio-net: minor code simplification
virtio-net: test peer header support at init time
virtio-net: enable mrg buf header in tap on linux
hw/vhost_net.c | 13 -----
hw/virtio-net.c | 177 +++++++++++++++++++++++++++++++-------------------------
hw/virtio.c | 2 +-
iov.c | 25 +++++++-
iov.h | 11 +++-
5 files changed, 132 insertions(+), 96 deletions(-)
--
MST
next reply other threads:[~2012-09-24 23:03 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-24 23:04 Michael S. Tsirkin [this message]
2012-09-24 23:04 ` [Qemu-devel] [PATCH 01/14] virtio-net: track host/guest header length Michael S. Tsirkin
2012-09-24 23:04 ` [Qemu-devel] [PATCH 02/14] iov: add const annotation Michael S. Tsirkin
2012-09-24 23:04 ` [Qemu-devel] [PATCH 03/14] iov: add iov_cpy Michael S. Tsirkin
2012-09-25 0:34 ` Anthony Liguori
2012-09-25 0:45 ` Michael S. Tsirkin
2012-09-24 23:04 ` [Qemu-devel] [PATCH 04/14] virtio-net: avoid sg copy Michael S. Tsirkin
2012-09-25 0:37 ` Anthony Liguori
2012-09-25 0:44 ` Michael S. Tsirkin
2012-09-24 23:04 ` [Qemu-devel] [PATCH 05/14] virtio-net: use safe iov operations for rx Michael S. Tsirkin
2012-09-25 0:38 ` Anthony Liguori
2012-09-24 23:04 ` [Qemu-devel] [PATCH 06/14] virtio-net: refactor receive_hdr Michael S. Tsirkin
2012-09-25 0:39 ` Anthony Liguori
2012-09-24 23:04 ` [Qemu-devel] [PATCH 07/14] virtio-net: first s/g is always at start of buf Michael S. Tsirkin
2012-09-25 0:39 ` Anthony Liguori
2012-09-24 23:04 ` [Qemu-devel] [PATCH 08/14] virtio-net: switch tx to safe iov functions Michael S. Tsirkin
2012-09-24 23:04 ` [Qemu-devel] [PATCH 09/14] virtio-net: simplify rx code Michael S. Tsirkin
2012-09-24 23:04 ` [Qemu-devel] [PATCH 10/14] virtio: don't mark unaccessed memory as dirty Michael S. Tsirkin
2012-09-24 23:05 ` [Qemu-devel] [PATCH 11/14] virtio-net: fix used len for tx Michael S. Tsirkin
2012-09-25 6:15 ` Jason Wang
2012-09-25 7:20 ` Michael S. Tsirkin
2012-09-24 23:05 ` [Qemu-devel] [PATCH 12/14] virtio-net: minor code simplification Michael S. Tsirkin
2012-09-24 23:05 ` [Qemu-devel] [PATCH 13/14] virtio-net: test peer header support at init time Michael S. Tsirkin
2012-09-24 23:05 ` [Qemu-devel] [PATCH 14/14] virtio-net: enable mrg buf header in tap on linux 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.1348527749.git.mst@redhat.com \
--to=mst@redhat.com \
--cc=anthony@codemonkey.ws \
--cc=aurelien@aurel32.net \
--cc=jasowang@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@linux.vnet.ibm.com \
/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).