# Changelog # v0.8.0 ## Changed - Added a `reset_evt` to the `I8042Device` type to retrieve the underlying reset event object. - Added three methods to `Serial` to retrieve the `Write` output object. - Derived the `Copy` trait for `RtcState` and other auxiliary types. - Updated vmm-sys-util dependency to 0.12.1 # v0.7.0 ## Changed - Update vmm-sys-util dependency to 0.11.0. - Switched to specifying dependencies using caret requirements instead of comparision requirements. # v0.6.0 ## Added - Added `SerialState`, and support for saving and restoring the state of the `Serial` device ([#73](https://github.com/rust-vmm/vm-superio/pull/73)). - Added the `Debug` derive to the exported structures ([#75](https://github.com/rust-vmm/vm-superio/pull/75)). ## Fixed - Fixed `enqueue_raw_bytes` for the corner case when 0 bytes were sent, and the fifo was full ([#77](https://github.com/rust-vmm/vm-superio/pull/77)). # v0.5.0 ## Added - Added `RtcState`, and support for saving and restoring the state of the `Rtc` device. This support is useful for snapshot use cases, such as live migration ([#65](https://github.com/rust-vmm/vm-superio/pull/65)). ## Fixed - Fixed potential overflow in the `Rtc` implementation caused by an invalid offset ([#65](https://github.com/rust-vmm/vm-superio/pull/65)). # v0.4.0 ## Added - Added `in_buffer_empty` to SerialEvents trait. This helps with handling the registration of I/O events related to the serial input ([#63](https://github.com/rust-vmm/vm-superio/pull/63)). ## Changed - Changed `RTC` to `Rtc` and `RTCEvents` to `RtcEvents` as part of the Rust version update to 1.52.1 ([#57](https://github.com/rust-vmm/vm-superio/pull/57)). # v0.3.0 ## Fixed - Fixed implementation of Data Register (DR) which caused the guest time to be in the year 1970 ([#47](https://github.com/rust-vmm/vm-superio/issues/47)). # v0.2.0 ## Added - Added emulation support for an i8042 controller that only handles the CPU reset ([#11](https://github.com/rust-vmm/vm-superio/pull/11)). - Added `SerialEvents` trait, which can be implemented by a backend that wants to keep track of serial events using metrics, logs etc ([#5](https://github.com/rust-vmm/vm-superio/issues/5)). - Added a threat model to the serial console documentation ([#16](https://github.com/rust-vmm/vm-superio/issues/16)). - Added emulation support for an ARM PL031 Real Time Clock ([#22](https://github.com/rust-vmm/vm-superio/issues/22)), and the `RTCEvents` trait, used for keeping track of RTC events ([#34](https://github.com/rust-vmm/vm-superio/issues/34)). - Added an implementation for `Arc` for both serial console and RTC device ([#40](https://github.com/rust-vmm/vm-superio/pull/40)). - Added methods for retrieving a reference to the events object for both serial console and RTC device ([#40](https://github.com/rust-vmm/vm-superio/pull/40)). ## Changed - Changed the notification mechanism from EventFd to the Trigger abstraction for both serial console and i8042 ([#7](https://github.com/rust-vmm/vm-superio/issues/7)). ## Fixed - Limited the maximum number of bytes allowed at a time, when enqueuing input for serial, to 64 (FIFO_SIZE) to avoid memory pressure ([#17](https://github.com/rust-vmm/vm-superio/issues/17)). - Fixed possible indefinite blocking of the serial driver by always sending the THR Empty interrupt to it when trying to write to the device ([#23](https://github.com/rust-vmm/vm-superio/issues/23)). # v0.1.0 This is the first `vm-superio` release. The `vm-superio` crate provides emulation for legacy devices. For now, it offers this support only for the Linux serial console.