Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add packed ring layout support #3

Closed
mstsirkin opened this issue Mar 9, 2018 · 2 comments
Closed

add packed ring layout support #3

mstsirkin opened this issue Mar 9, 2018 · 2 comments
Labels
virtio-v1.1-cs01 Fixed in previous specification release.

Comments

@mstsirkin
Copy link
Contributor

mstsirkin commented Mar 9, 2018

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.

Proposal: https://lists.oasis-open.org/archives/virtio/201803/msg00041.html

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.

@mstsirkin mstsirkin added the virtio-v1.1-cs01 Fixed in previous specification release. label Mar 9, 2018
@mstsirkin
Copy link
Contributor Author

mstsirkin commented Mar 9, 2018

BALLOT CREATED AT URL: https://www.oasis-open.org/committees/ballot.php?id=3177

mstsirkin added a commit that referenced this issue Mar 20, 2018
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Approved-by: https://www.oasis-open.org/apps/org/workgroup/virtio/ballot.php?id=3177
Fixes: #3
mstsirkin added a commit that referenced this issue Mar 20, 2018
Will be easier to manage this way.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Approved-by: https://www.oasis-open.org/apps/org/workgroup/virtio/ballot.php?id=3177
Fixes: #3
mstsirkin added a commit that referenced this issue Mar 20, 2018
virtqueue operation description is specific to the virtqueue
format. Move it out to split-ring.tex and update all
references.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Approved-by: https://www.oasis-open.org/apps/org/workgroup/virtio/ballot.php?id=3177
Fixes: #3
mstsirkin added a commit that referenced this issue Mar 20, 2018
Document buffer used len and use that terminology everywhere in the
generic section.

Further, drop the 'used ring' terminology and just say virtqueue.

Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Approved-by: https://www.oasis-open.org/apps/org/workgroup/virtio/ballot.php?id=3177
Fixes: #3
mstsirkin added a commit that referenced this issue Mar 20, 2018
Replace descriptor table/available ring/used ring
with descriptor area/driver area/device area
in all transports.

Document what's in which area.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Approved-by: https://www.oasis-open.org/apps/org/workgroup/virtio/ballot.php?id=3177
Fixes: #3
mstsirkin added a commit that referenced this issue Mar 20, 2018
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Approved-by: https://www.oasis-open.org/apps/org/workgroup/virtio/ballot.php?id=3177
Fixes: #3
mstsirkin added a commit that referenced this issue Mar 20, 2018
Update generic text to talk about available/used buffers, not rings.
Move some split-ring specific text to the correct section.

Update conformance section with link to the new conformance clause.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Approved-by: https://www.oasis-open.org/apps/org/workgroup/virtio/ballot.php?id=3177
Fixes: #3
mstsirkin added a commit that referenced this issue Mar 20, 2018
Performance analysis of this is in my kvm forum 2016 presentation.  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 also easier for devices to implement than the 1.0 layout.
Several more enhancements will be necessary to actually make this
efficient for devices to use.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Cornelia Huck <cohuck@redhat.com>
Approved-by: https://www.oasis-open.org/apps/org/workgroup/virtio/ballot.php?id=3177
Fixes: #3
mstsirkin added a commit that referenced this issue Mar 20, 2018
Using descriptors in-order is sometimes beneficial.  Add an option for
that - per-format detail allowing more optimizations will be added by
follow-up patches.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Approved-by: https://www.oasis-open.org/apps/org/workgroup/virtio/ballot.php?id=3177
Fixes: #3
mstsirkin added a commit that referenced this issue Mar 20, 2018
Support in-order requests for packed rings.
This allows selective write-out of used descriptors.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Approved-by: https://www.oasis-open.org/apps/org/workgroup/virtio/ballot.php?id=3177
Fixes: #3
mstsirkin added a commit that referenced this issue Mar 20, 2018
For a split ring, require that drivers use descriptors in order too.
This allows devices to skip reading the available ring.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Approved-by: https://www.oasis-open.org/apps/org/workgroup/virtio/ballot.php?id=3177
Fixes: #3
@mstsirkin
Copy link
Contributor Author

Resolved-by: commit ad89d36

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
virtio-v1.1-cs01 Fixed in previous specification release.
Projects
None yet
Development

No branches or pull requests

1 participant