You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit b23fc1c
Browse filesBrowse the repository at this point in the historyBrowse files
The patch implements shared layout and ownership model for virtq based
host and guest communication. This is a preparation work for replacing
stack based IO with virtq, in the meantime function calls and logging
use the legacy transport. Actual takeover, buffer mappings, guest
allocated pools and retained buffer snapshots are separate stages.
- queue configurations and a shared scratch arena for rings and buffer
pools.
- `SlotPool` allocation,
- stateful chain I/O,
- shared message framing,
- guest queue initialization,
- canonical ring state validation
---------
Signed-off-by: Tomasz Andrzejak <andreiltd@gmail.com>
Copy file name to clipboardExpand all lines: CHANGELOG.md
+23-1Lines changed: 23 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,9 +5,15 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
5
5
## [Prerelease] - Unreleased
6
6
7
7
### Added
8
+
* Add per-direction virtqueue configuration and account its allocations in
9
+
scratch sizing.
10
+
* Shared virtqueue framing with a 12-byte `MsgHeader` and external byte values.
11
+
* Producer batch completion without notification and segmented payload
12
+
extraction without flattening.
8
13
9
14
### Changed
10
-
* Support overriding the guest log level when building or restoring initialized snapshots. Persisted snapshots use ABI version 3 and must be regenerated.
15
+
* Support overriding the guest log level when building or restoring initialized
16
+
snapshots.
11
17
*`Snapshot::save` now writes the guest memory blob sparsely, skipping all-zero
12
18
blocks instead of writing them. A guest memory image is mostly untouched
13
19
pages, so this cuts the bytes actually written by roughly the proportion of
@@ -22,10 +28,26 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
22
28
level is `OFF`. `hyperlight_guest_tracing::is_trace_enabled` reports whether
23
29
the configured level is above `OFF` rather than whether the tracing state was
24
30
allocated.
31
+
***Breaking:** Virtqueue rings and pools occupy host-owned scratch before page
32
+
tables. Snapshots use ABI 4 and config schema v2. Existing snapshots must be
33
+
regenerated.
34
+
* Host virtqueue access uses checked copies and atomics across mapped scratch.
35
+
Snapshot admission checks geometry, canonical ring state, and H2G buffer shape.
36
+
Consumers validate descriptors and payload accesses during use.
37
+
* Virtqueue producers use concrete `SlotPool` allocation and `BufferLease`
Copy file name to clipboardExpand all lines: fuzz/README.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,7 +10,7 @@ which evaluates to the following command `cargo +nightly fuzz run fuzz_host_prin
10
10
11
11
As per Microsoft's Offensive Research & Security Engineering (MORSE) team, all host exposed functions that receive or interact with guest data must be continuously fuzzed for, at least, 500 million fuzz test cases without any crashes. Because `cargo-fuzz` doesn't support setting a maximum number of iterations; instead, we use the `--max_total_time` flag to set a maximum time to run the fuzzer. We have a GitHub action (acting like a CRON job) that runs the fuzzers for 24 hours every week.
12
12
13
-
Currently, we fuzz the parameters and return type to a hardcoded `PrintOutput` guest function, the `HostPrint` host function, and the packed virtqueue ring parser. We plan to add more fuzzers in the future.
13
+
Currently, we fuzz the parameters and return type to a hardcoded `PrintOutput` guest function, the `HostPrint` host function, the packed virtqueue ring parser, and canonical ring image validation. We plan to add more fuzzers in the future.
0 commit comments