-
Notifications
You must be signed in to change notification settings - Fork 80
Accept VIRTIO_F_VERSION_1 if offered
#196
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
Conversation
|
@qwandor CI for aarch64 succeeded but the logs show the vsock server panicked and because it was in the shell's background, the CI did not fail: |
a834f9d to
1ddff95
Compare
qwandor
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good, but I'm not sure why the tests are hanging.
|
The test failures do seem legitimate, I can reproduce it locally. Running |
|
I guess the |
|
By removing the version 1 feature bit from Network's supported_features, the tests don't block. I'm looking into it to see if it's a qemu bug. |
7e69932 to
91b6876
Compare
|
The bug was that |
91b6876 to
6d19ea2
Compare
Size of header struct depends on whether we're using legacy VIRTIO or in legacy case, if MRG_RXBUF feature was negotiated. This is a problem because in many places we rely on the header size which was hardcoded. Encode whether we're using the legacy layout and decide on runtime which header struct layout to use. If using legacy header, the missing fields are filled with zeros. This is hidden from the API user. Signed-off-by: Manos Pitsidianakis <[email protected]>
Currently, when we initialize a device, we do not conform to section 6.1 of the VIRTIO spec. It says: > 6.1 Driver Requirements: Reserved Feature Bits > A driver MUST accept VIRTIO_F_VERSION_1 if it is offered. To fix conformance, check for presence of the VIRTIO_F_VERSION_1 and accept it if it's offered, always. Signed-off-by: Manos Pitsidianakis <[email protected]>
6d19ea2 to
97f5982
Compare
Currently, when we initialize a device, we do not conform to section 6.1 of the VIRTIO spec.
It says:
To fix conformance, check for presence of the VIRTIO_F_VERSION_1 and accept it if it's offered, always.
This is because not only the requirement is a
MUSTbut also a device may fail to operate if it's not accepted:This bug was encountered in COQOS hypervisor which failed with: