-
Notifications
You must be signed in to change notification settings - Fork 103
verify add_used operation using guestmemory stubs #346
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
base: main
Are you sure you want to change the base?
Conversation
@roypat Hi Patrick, thanks |
959d811
to
7113f45
Compare
Add the verify_spec_2_7_7_2() proof to verify that the implementation of queue satisfies 2.7.7.2 requirement. The proof relies on whether the EVENT_IDX feature has been negotiated. Conversely with `test_needs_notification()` test, this proof `tests` for all possible values of the queue structure. Signed-off-by: Matias Ezequiel Vara Larsen <[email protected]> Signed-off-by: Siddharth Priya <[email protected]>
Add the verify_spec_2_7_7_2() proof to verify that the implementation of queue satisfies 2.7.7.2 requirement. The proof relies on whether the EVENT_IDX feature has been negotiated. Conversely with `test_needs_notification()` test, this proof `tests` for all possible values of the queue structure. Signed-off-by: Matias Ezequiel Vara Larsen <[email protected]>
GuestMemory trait brings in Bytes trait and therefore hardcodes impl for write_obj and store methods. This does not work well with Kani which now has to process these methods symbolically. The solution is to provide NOP impl for these methods. My current solution is to use kani stub macro to replace these methods by local stubs. Another solution can be to provide the proof writer a way to construct GuestMemory such that they can stub out methods as needed. Signed-off-by: Siddharth Priya <[email protected]>
25784f9
to
96d3228
Compare
Signed-off-by: Siddharth Priya <[email protected]>
96d3228
to
89e9614
Compare
} else { | ||
assert_eq!(queue.next_used, used_idx); | ||
|
||
// Ideally, here we would want to actually read the relevant values from memory and |
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.
I think this comment is true in firecraker but is it still valid in the rust-vmm implementation?
Summary of the PR
We need to stub out or provide fake implementation for
GuestMemory
read/write operations since they are too expensive forkani
to execute as-is.This problem was faces by
firekracker
also and solved by using a fake impl (link).in
vmm-virtio
GuestMemory is hardcoded to use the default impl (link) so it is not easy to fake it. There are a few options i see.Bytes
trait forGuestMemory
for kani - needs changes tovm-memory
cratevm-virtio
functions useGuestMemory
in production andFakeGuestMemory
in kani - needs changes tovm-virtio
to conditionally compile and use the rightGuestMemory
This PR provides the third option. However, 1 or 2 maybe a better engineering solution. Looking for inputs.
Requirements
Before submitting your PR, please make sure you addressed the following
requirements:
git commit -s
), and the commit message has max 60 characters for thesummary and max 75 characters for each description line.
test.
Release" section of CHANGELOG.md (if no such section exists, please create one).
unsafe
code is properly documented.