aboutsummaryrefslogtreecommitdiff
path: root/CHANGELOG.md
diff options
context:
space:
mode:
Diffstat (limited to 'CHANGELOG.md')
-rw-r--r--CHANGELOG.md134
1 files changed, 134 insertions, 0 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..74f074a
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,134 @@
+# v0.9.0
+
+## Changed
+- Updated vm-memory from 0.11.0 to 0.12.0.
+
+# v0.8.0
+
+## Changed
+- Terminate iterating descriptor chains that are longer than 2^32 bytes.
+- Updated vm-memory from 0.10.0 to 0.11.0.
+- Updated virtio-bindings from 0.1.0 to 0.2.0.
+
+# v0.7.1
+
+## Fixed
+- Skip indirect descriptor address alignment check, the virtio spec has
+ no alignment requirement on this, see `2.6.5.3 Indirect Descriptors`
+ and `2.7.7 Indirect Flag: Scatter-Gather Support` in virtio 1.0.
+- Update the `add_desc_chains` mock function such that it works on big endian
+ hosts as well.
+- Check that the queue is ready for processing requests when calling the
+ iterator functions. For now the checks are limited to the avail address and
+ the ready fields, but should be extended in the future to account for other
+ fields that could signal an invalid queue. This behavior can be triggered
+ by doing a `reset` followed by a `pop_descriptor_chain`.
+
+# v0.7.0
+
+## Changed
+
+- Updated vmm-sys-util from 0.10.0 to 0.11.0.
+- Updated vm-memory from 0.9.0 to 0.10.0.
+
+# v0.6.1
+
+## Fixed
+- Return an error if the number of available descriptor chains exposed by the
+ driver exceeds the queue size. This way we avoid potential hanging and
+ Denial-of-Service in the VMM, that was possible before by iterating multiple
+ times over the same chains.
+
+# v0.6.0
+
+## Added
+- Derive `Eq` for structures that derive `PartialEq`.
+
+## Changed
+- Use `add_desc_chains` in tests
+- Update dependencies: `vm-memory` from `0.8.0` to `0.9.0` and `log` from `0.4.6` to `0.4.17`.
+- Upgrade to Rust 2021 edition.
+
+# v0.5.0
+
+## Added
+- Added getters and setters for the Virtio Queue fields.
+- Added the `state` method for retrieving the `QueueState` of a `Queue`.
+
+## Fixed
+- Validate the state of the Virtio Queue when restoring from state and return errors on invalid
+ input.
+
+## Removed
+- Removed the wrapper over the Virtio Queue that was wrapping the Guest Memory. VMMs can define
+ this wrapper if needed, but this is no longer provided as part of virtio-queue crate so that the
+ naming scheme can be simplified. As a consequence, a couple of functions now receive the
+ memory as a parameter (more details in the Changed section).
+- Removed `num_added` field from the `QueueState` because this is an implementation detail of
+ the notification suppression feature and thus should not be part of the state.
+- Removed `QueueGuard` and `lock_with_memory`.
+
+## Changed
+- `QueueState` is now renamed to `Queue`.
+- `QueueStateSync` is now renamed to `QueueSync`.
+- The `QueueState` structure now represents the state of the `Queue` without any implementation
+ details. This can be used for implementing save/restore.
+- Initializing a `Queue` now returns an error in case the `max_size` is invalid.
+- The `Queue` fields are now private and can be updated only through the dedicated setters.
+- The following Queue methods now receive the memory as a parameter: `iter`, `is_valid`,
+ `add_used`, `needs_notification`, `enable_notification`, `disable_notification`, `avail_idx`,
+ `used_idx`.
+- Use the constant definition from the `virtio-queue` crate.
+
+# v0.4.0
+
+## Fixed
+- [[#173]](https://github.com/rust-vmm/vm-virtio/pull/173) Fix potential division by zero in
+ iterator when the queue size is 0.
+
+## Changed
+- [[#162]](https://github.com/rust-vmm/vm-virtio/pull/162) Added error handling in the mock
+ interface and the ability to create multiple descriptor chains for testing in order to
+ support running fuzzing.
+- [[#174]](https://github.com/rust-vmm/vm-virtio/pull/174) Updated the `avail_idx` and `used_idx`
+ documentation to specify when these functions panic.
+
+
+# v0.3.0
+
+## Added
+- [[#148]](https://github.com/rust-vmm/vm-virtio/pull/148): `QueueStateOwnedT` trait that stands
+ for queue objects which are exclusively owned and accessed by a single thread of execution.
+- [[#148]](https://github.com/rust-vmm/vm-virtio/pull/148): Added the `pop_descriptor_chain`
+ method, which can be used to consume descriptor chains from the available ring without
+ using an iterator, to `QueueStateT` and `QueueGuard`. Also added `go_to_previous_position()`
+ to `QueueGuard`, which enables decrementing the next available index by one position, which
+ effectively undoes the consumption of a descriptor chain in some use cases.
+- [[#151]](https://github.com/rust-vmm/vm-virtio/pull/151): Added `MockSplitQueue::add_desc_chain()`,
+ which places a descriptor chain at the specified offset in the descriptor table.
+- [[#153]](https://github.com/rust-vmm/vm-virtio/pull/153): Added `QueueStateT::size()` to return
+ the size of the queue.
+
+## Changed
+- The minimum version of the `vm-memory` dependency is now `v0.8.0`
+- [[#161]](https://github.com/rust-vmm/vm-virtio/pull/161): Improve the efficiency of `needs_notification`
+
+## Removed
+- [[#153]](https://github.com/rust-vmm/vm-virtio/pull/153): `#[derive(Clone)]` for `QueueState`
+
+# v0.2.0
+
+## Added
+
+- *Testing Interface*: Added the possibility to initialize a mock descriptor
+ chain from a list of descriptors.
+- Added setters and getters for the queue fields required for extending the
+ `Queue` in VMMs.
+
+## Fixed
+
+- Apply the appropriate endianness conversion on `used_idx`.
+
+# v0.1.0
+
+This is the first release of the crate.