linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH RFC v5 00/13] vhost: ring format independence
@ 2020-06-07 14:11 Michael S. Tsirkin
  2020-06-07 14:11 ` [PATCH RFC v5 01/13] vhost: option to fetch descriptors through an independent struct Michael S. Tsirkin
                   ` (12 more replies)
  0 siblings, 13 replies; 21+ messages in thread
From: Michael S. Tsirkin @ 2020-06-07 14:11 UTC (permalink / raw)
  To: linux-kernel; +Cc: kvm, virtualization, netdev, Jason Wang, eperezma


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 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 (13):
  vhost: option to fetch descriptors through an independent struct
  vhost: use batched version by default
  vhost: batching fetches
  vhost: cleanup fetch_buf return code handling
  vhost/net: pass net specific struct pointer
  vhost: reorder functions
  vhost: format-independent API for used buffers
  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 | 380 +++++++++++++++++++++++++++---------------
 drivers/vhost/vhost.h |  44 +++--
 drivers/vhost/vsock.c |  30 ++--
 6 files changed, 441 insertions(+), 282 deletions(-)

-- 
MST


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

end of thread, other threads:[~2020-06-08 16:26 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-07 14:11 [PATCH RFC v5 00/13] vhost: ring format independence Michael S. Tsirkin
2020-06-07 14:11 ` [PATCH RFC v5 01/13] vhost: option to fetch descriptors through an independent struct Michael S. Tsirkin
2020-06-07 14:11 ` [PATCH RFC v5 02/13] vhost: use batched version by default Michael S. Tsirkin
2020-06-07 14:11 ` [PATCH RFC v5 03/13] vhost: batching fetches Michael S. Tsirkin
2020-06-07 14:11 ` [PATCH RFC v5 04/13] vhost: cleanup fetch_buf return code handling Michael S. Tsirkin
2020-06-07 14:11 ` [PATCH RFC v5 05/13] vhost/net: pass net specific struct pointer Michael S. Tsirkin
2020-06-07 14:11 ` [PATCH RFC v5 06/13] vhost: reorder functions Michael S. Tsirkin
2020-06-07 14:11 ` [PATCH RFC v5 07/13] vhost: format-independent API for used buffers Michael S. Tsirkin
2020-06-07 14:11 ` [PATCH RFC v5 08/13] vhost/net: convert to new API: heads->bufs Michael S. Tsirkin
2020-06-07 14:11 ` [PATCH RFC v5 09/13] vhost/net: avoid iov length math Michael S. Tsirkin
2020-06-07 14:11 ` [PATCH RFC v5 10/13] vhost/test: convert to the buf API Michael S. Tsirkin
2020-06-07 14:11 ` [PATCH RFC v5 11/13] vhost/scsi: switch to buf APIs Michael S. Tsirkin
2020-06-08  9:57   ` Stefan Hajnoczi
2020-06-07 14:11 ` [PATCH RFC v5 12/13] vhost/vsock: switch to the buf API Michael S. Tsirkin
2020-06-08  9:57   ` Stefan Hajnoczi
2020-06-08 10:17   ` Stefano Garzarella
2020-06-08 13:30     ` Michael S. Tsirkin
2020-06-08 16:26       ` Stefano Garzarella
2020-06-07 14:11 ` [PATCH RFC v5 13/13] vhost: drop head based APIs Michael S. Tsirkin
2020-06-08  3:57   ` Jason Wang
2020-06-08  6:45     ` 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).