All of lore.kernel.org
 help / color / mirror / Atom feed
* [virtio] [PATCH v10 00/13] packed ring layout spec
@ 2018-03-09 21:23 Michael S. Tsirkin
  2018-03-09 21:23 ` [virtio] [PATCH v10 01/13] introduction: document bitfield notation Michael S. Tsirkin
                   ` (12 more replies)
  0 siblings, 13 replies; 25+ messages in thread
From: Michael S. Tsirkin @ 2018-03-09 21:23 UTC (permalink / raw)
  To: virtio, virtio-dev
  Cc: Cornelia Huck, Halil Pasic, Tiwei Bie, Stefan Hajnoczi, Dhanoa, Kully

This is a proposal to implement an alternative ring layout.  The
idea is to have a r/w descriptor in a ring structure, replacing
the used and available ring, index and descriptor buffer.

This is more efficient and easier for devices to implement than
the 1.0 layout.

Additionally, a new feature flag is proposed that makes devices
promise to process descriptors in-order. With this feature
drivers can also be made simpler and more efficient.

Discussion and performance analysis of this is in Michael
Tsirkin's kvm forum 2016 and 2017 presentations.

Fixes: https://github.com/oasis-tcs/virtio-spec/issues/3

---

This revision addresses review comments on v9.

Thanks a lot to all reviewers of earlier revisions!

I plan to start voting on this shortly.

A compiled version can
be found under https://github.com/oasis-tcs/virtio-docs.git

See

virtio-v1.1-packed-wd10-diff.pdf  virtio-v1.1-packed-wd10.pdf

for redline and clean versions, respectively.

If you are interested in changes from v9, that's in

virtio-v1.1-packed-w09-to-wd10-diff.pdf

in the same directory.

Note: please do not try to edit the pdf and post comments
in the edited file. Please post comments in a text
format, as pdfs are not archived with the list.

TODO: support for actual passthrough devices will likely
require more new features, such as requirement for
stronger memory barriers.


Changes since v9:
- corrected pseudo-code to work correctly without IN_ORDER
  (since that's what the accompanying text says).
- new bit-field notation
- update format for the event suppression structure
- prefix packed ring structures with pvirtq_ for consistency
  and to avoid confusion with the split ring structures
- deferred NOTIFICATION_DATA patches - will post separately,
  they need more review by s390 editor, and proof of
  concept code is not ready yet (needs host kernel support).

Note: should this proposal be accepted and approved, one or more
      claims disclosed to the TC admin and listed on the Virtio TC
      IPR page https://github.com/oasis-tcs/virtio-admin/blob/master/IPR.md
      might become Essential Claims.


Michael S. Tsirkin (13):
  introduction: document bitfield notation
  content: move 1.0 queue format out to a separate section
  content: move ring text out to a separate file
  content: move virtqueue operation description
  content: len -> used length, used ring -> vq
  content: generalize transport ring part naming
  content: generalize rest of text
  split-ring: generalize text
  split-ring: typo: aligment
  packed virtqueues: more efficient virtqueue layout
  content: in-order buffer use
  packed-ring: add in order support
  split-ring: in order feature

 conformance.tex  |   5 +-
 content.tex      | 808 ++++++++-----------------------------------------------
 introduction.tex |  41 +++
 packed-ring.tex  | 714 ++++++++++++++++++++++++++++++++++++++++++++++++
 split-ring.tex   | 689 +++++++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 1563 insertions(+), 694 deletions(-)
 create mode 100644 packed-ring.tex
 create mode 100644 split-ring.tex

-- 
MST


---------------------------------------------------------------------
To unsubscribe from this mail list, you must leave the OASIS TC that 
generates this mail.  Follow this link to all your TCs in OASIS at:
https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php 


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

end of thread, other threads:[~2018-04-05  7:18 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-03-09 21:23 [virtio] [PATCH v10 00/13] packed ring layout spec Michael S. Tsirkin
2018-03-09 21:23 ` [virtio] [PATCH v10 01/13] introduction: document bitfield notation Michael S. Tsirkin
2018-03-09 21:23 ` [virtio] [PATCH v10 02/13] content: move 1.0 queue format out to a separate section Michael S. Tsirkin
2018-03-09 21:23 ` [virtio] [PATCH v10 03/13] content: move ring text out to a separate file Michael S. Tsirkin
2018-03-09 21:23 ` [virtio] [PATCH v10 04/13] content: move virtqueue operation description Michael S. Tsirkin
2018-03-09 21:23 ` [virtio] [PATCH v10 05/13] content: len -> used length, used ring -> vq Michael S. Tsirkin
2018-03-09 21:23 ` [virtio] [PATCH v10 07/13] content: generalize rest of text Michael S. Tsirkin
2018-03-09 21:23 ` [virtio] [PATCH v10 06/13] content: generalize transport ring part naming Michael S. Tsirkin
2018-03-09 21:23 ` [virtio] [PATCH v10 08/13] split-ring: generalize text Michael S. Tsirkin
2018-03-09 21:23 ` [virtio] [PATCH v10 10/13] packed virtqueues: more efficient virtqueue layout Michael S. Tsirkin
2018-03-09 21:23 ` [virtio] [PATCH v10 09/13] split-ring: typo: aligment Michael S. Tsirkin
2018-03-09 21:23 ` [virtio] [PATCH v10 11/13] content: in-order buffer use Michael S. Tsirkin
2018-03-09 21:23 ` [virtio] [PATCH v10 12/13] packed-ring: add in order support Michael S. Tsirkin
2018-03-09 21:23 ` [virtio] [PATCH v10 13/13] split-ring: in order feature Michael S. Tsirkin
2018-03-28  8:23   ` [virtio-dev] " Lars Ganrot
2018-03-28 14:38     ` [virtio] " Michael S. Tsirkin
2018-03-28 16:12       ` Lars Ganrot
2018-03-29 14:42         ` [virtio] " Michael S. Tsirkin
2018-03-29 18:23           ` Lars Ganrot
2018-03-29 19:12             ` [virtio] " Michael S. Tsirkin
2018-04-03  7:19               ` Lars Ganrot
2018-04-03 11:47                 ` [virtio] " Michael S. Tsirkin
2018-04-04 15:03                   ` Lars Ganrot
2018-04-04 16:07                     ` [virtio] " Michael S. Tsirkin
2018-04-05  7:18                       ` Lars Ganrot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.