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

Make vhost-user more compatible with new qemu versions #1369

Merged
merged 3 commits into from
Sep 12, 2018

Conversation

takikawa
Copy link
Contributor

This should address issue #1103 about using snabb with newer versions of qemu. I encountered the problem myself while testing an app, and got it working with qemu version 2.8.1 with these changes.

The main change is adding support for VHOST_USER_F_PROTOCOL_FEATURES to allow queries for protocol extensions. Right now the app just reports not supporting any extensions (supporting extensions is a TODO for the future) and ignores requests to set extensions. It also adds support for VHOST_USER_SET_VRING_ENABLE which seems to be needed once VHOST_USER_F_PROTOCOL_FEATURES is supported.

There's also a minor commit that makes it easier to tell when you've used the wrong link names.

takikawa added 3 commits July 24, 2018 09:41
This is needed for interop with newer qemu versions
Add a stub for VHOST_USER_GET_QUEUE_NUM and a method
for VHOST_USER_SET_VRING_ENABLE.
@lukego
Copy link
Member

lukego commented Jul 25, 2018

Awesome!

@lukego
Copy link
Member

lukego commented Jul 30, 2018

I'm running a CI job now to regression test this patch with 13 different QEMU versions from 2.1 to 3.0rc. I'll pull it onto next once that's looking good.

lukego added a commit that referenced this pull request Jul 31, 2018
@lukego
Copy link
Member

lukego commented Jul 31, 2018

The CI report looks good. It did compatibility tests on a matrix of QEMU and DPDK (in guest) versions and the success coverage is much better with this branch than with master.

Here is the graph of test success rate by QEMU and DPDK version combination followed by some explanatory notes.

download

The top panel (lukego-optimize) is this code and the bottom panel (master) is the baseline. There seems to be a specific issue with QEMU 2.7.1 and a few DPDK versions but that's not a major concern for us. There are also a couple of cases where <100% success was observed but I suspect these were spurious timeouts rather than anything systematic.

Great stuff! I merged this onto my integration branch at #1372 now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants