From: "Michael S. Tsirkin" <mst@redhat.com>
To: linux-kernel@vger.kernel.org
Cc: kvm@vger.kernel.org, virtualization@lists.linux-foundation.org,
netdev@vger.kernel.org, Jason Wang <jasowang@redhat.com>,
eperezma@redhat.com
Subject: [PATCH RFC v7 00/14] vhost: ring format independence
Date: Wed, 10 Jun 2020 07:35:44 -0400 [thread overview]
Message-ID: <20200610113515.1497099-1-mst@redhat.com> (raw)
This intentionally leaves "fixup" changes separate - hopefully
that is enough to fix vhost-net crashes reported here,
but it helps me keep track of what changed.
I will naturally squash them later when we are done.
This adds infrastructure required for supporting
multiple ring formats.
The idea is as follows: we convert descriptors to an
independent format first, and process that converting to
iov later.
Used ring is similar: we fetch into an independent struct first,
convert that to IOV later.
The point is that we have a tight loop that fetches
descriptors, which is good for cache utilization.
This will also allow all kind of batching tricks -
e.g. it seems possible to keep SMAP disabled while
we are fetching multiple descriptors.
For used descriptors, this allows keeping track of the buffer length
without need to rescan IOV.
This seems to perform exactly the same as the original
code based on a microbenchmark.
Lightly tested.
More testing would be very much appreciated.
changes from v6:
- fixes some bugs introduced in v6 and v5
changes from v5:
- addressed comments by Jason: squashed API changes, fixed up discard
changes from v4:
- added used descriptor format independence
- addressed comments by jason
- fixed a crash detected by the lkp robot.
changes from v3:
- fixed error handling in case of indirect descriptors
- add BUG_ON to detect buffer overflow in case of bugs
in response to comment by Jason Wang
- minor code tweaks
Changes from v2:
- fixed indirect descriptor batching
reported by Jason Wang
Changes from v1:
- typo fixes
Michael S. Tsirkin (14):
vhost: option to fetch descriptors through an independent struct
fixup! vhost: option to fetch descriptors through an independent
struct
vhost: use batched get_vq_desc version
vhost/net: pass net specific struct pointer
vhost: reorder functions
vhost: format-independent API for used buffers
fixup! vhost: format-independent API for used buffers
fixup! vhost: use batched get_vq_desc version
vhost/net: convert to new API: heads->bufs
vhost/net: avoid iov length math
vhost/test: convert to the buf API
vhost/scsi: switch to buf APIs
vhost/vsock: switch to the buf API
vhost: drop head based APIs
drivers/vhost/net.c | 174 +++++++++----------
drivers/vhost/scsi.c | 73 ++++----
drivers/vhost/test.c | 22 +--
drivers/vhost/vhost.c | 378 +++++++++++++++++++++++++++---------------
drivers/vhost/vhost.h | 44 +++--
drivers/vhost/vsock.c | 30 ++--
6 files changed, 439 insertions(+), 282 deletions(-)
--
MST
next reply other threads:[~2020-06-10 11:35 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-10 11:35 Michael S. Tsirkin [this message]
2020-06-10 11:35 ` [PATCH RFC v7 01/14] vhost: option to fetch descriptors through an independent struct Michael S. Tsirkin
2020-06-10 11:35 ` [PATCH RFC v7 02/14] fixup! " Michael S. Tsirkin
2020-06-10 14:00 ` Eugenio Pérez
2020-06-10 11:36 ` [PATCH RFC v7 03/14] vhost: use batched get_vq_desc version Michael S. Tsirkin
2020-06-10 12:37 ` Eugenio Perez Martin
2020-06-10 15:13 ` Michael S. Tsirkin
2020-06-10 16:18 ` Eugenio Perez Martin
2020-06-11 11:30 ` Michael S. Tsirkin
2020-06-15 16:05 ` Eugenio Pérez
2020-06-16 15:23 ` Eugenio Perez Martin
2020-06-16 22:08 ` Michael S. Tsirkin
2020-06-10 14:29 ` Eugenio Pérez
2020-06-10 15:08 ` Michael S. Tsirkin
2020-06-10 15:12 ` Eugenio Perez Martin
2020-06-10 11:36 ` [PATCH RFC v7 04/14] vhost/net: pass net specific struct pointer Michael S. Tsirkin
2020-06-10 15:13 ` Eugenio Pérez
2020-06-10 11:36 ` [PATCH RFC v7 05/14] vhost: reorder functions Michael S. Tsirkin
2020-06-10 11:36 ` [PATCH RFC v7 06/14] vhost: format-independent API for used buffers Michael S. Tsirkin
2020-06-10 11:36 ` [PATCH RFC v7 07/14] fixup! " Michael S. Tsirkin
2020-06-10 11:36 ` [PATCH RFC v7 08/14] fixup! vhost: use batched get_vq_desc version Michael S. Tsirkin
2020-06-10 11:36 ` [PATCH RFC v7 09/14] vhost/net: convert to new API: heads->bufs Michael S. Tsirkin
2020-06-10 11:36 ` [PATCH RFC v7 10/14] vhost/net: avoid iov length math Michael S. Tsirkin
2020-06-10 11:36 ` [PATCH RFC v7 11/14] vhost/test: convert to the buf API Michael S. Tsirkin
2020-06-10 11:36 ` [PATCH RFC v7 12/14] vhost/scsi: switch to buf APIs Michael S. Tsirkin
2020-06-10 11:36 ` [PATCH RFC v7 13/14] vhost/vsock: switch to the buf API Michael S. Tsirkin
2020-06-10 11:36 ` [PATCH RFC v7 14/14] vhost: drop head based APIs 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=20200610113515.1497099-1-mst@redhat.com \
--to=mst@redhat.com \
--cc=eperezma@redhat.com \
--cc=jasowang@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--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).