qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCHv2 00/14] virtio-net: iovec handling cleanup
@ 2012-09-25 11:12 Michael S. Tsirkin
  2012-09-25 11:12 ` [Qemu-devel] [PATCHv2 01/14] virtio-net: track host/guest header length Michael S. Tsirkin
                   ` (13 more replies)
  0 siblings, 14 replies; 15+ messages in thread
From: Michael S. Tsirkin @ 2012-09-25 11:12 UTC (permalink / raw)
  To: qemu-devel, Jason Wang, Anthony Liguori, stefanha, aurelien

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.

Changes from v1: address Anthony's comments
    patches 3,5,8: rename iov_cpy -> iov_copy
    patches 3,4 move hunk that landed in a wrong patch by mistake
    patch 4: move evil cast around so it's localized better

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 | 180 +++++++++++++++++++++++++++++++-------------------------
 hw/virtio.c     |   2 +-
 iov.c           |  25 +++++++-
 iov.h           |  11 +++-
 5 files changed, 134 insertions(+), 97 deletions(-)

-- 
MST

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2012-09-25 11:54 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-25 11:12 [Qemu-devel] [PATCHv2 00/14] virtio-net: iovec handling cleanup Michael S. Tsirkin
2012-09-25 11:12 ` [Qemu-devel] [PATCHv2 01/14] virtio-net: track host/guest header length Michael S. Tsirkin
2012-09-25 11:12 ` [Qemu-devel] [PATCHv2 02/14] iov: add const annotation Michael S. Tsirkin
2012-09-25 11:12 ` [Qemu-devel] [PATCHv2 03/14] iov: add iov_cpy Michael S. Tsirkin
2012-09-25 11:12 ` [Qemu-devel] [PATCHv2 04/14] virtio-net: avoid sg copy Michael S. Tsirkin
2012-09-25 11:12 ` [Qemu-devel] [PATCHv2 05/14] virtio-net: use safe iov operations for rx Michael S. Tsirkin
2012-09-25 11:12 ` [Qemu-devel] [PATCHv2 06/14] virtio-net: refactor receive_hdr Michael S. Tsirkin
2012-09-25 11:12 ` [Qemu-devel] [PATCHv2 07/14] virtio-net: first s/g is always at start of buf Michael S. Tsirkin
2012-09-25 11:12 ` [Qemu-devel] [PATCHv2 08/14] virtio-net: switch tx to safe iov functions Michael S. Tsirkin
2012-09-25 11:12 ` [Qemu-devel] [PATCHv2 09/14] virtio-net: simplify rx code Michael S. Tsirkin
2012-09-25 11:12 ` [Qemu-devel] [PATCHv2 10/14] virtio: don't mark unaccessed memory as dirty Michael S. Tsirkin
2012-09-25 11:12 ` [Qemu-devel] [PATCHv2 11/14] virtio-net: fix used len for tx Michael S. Tsirkin
2012-09-25 11:12 ` [Qemu-devel] [PATCHv2 12/14] virtio-net: minor code simplification Michael S. Tsirkin
2012-09-25 11:12 ` [Qemu-devel] [PATCHv2 13/14] virtio-net: test peer header support at init time Michael S. Tsirkin
2012-09-25 11:13 ` [Qemu-devel] [PATCHv2 14/14] virtio-net: enable mrg buf header in tap on linux Michael S. Tsirkin

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).