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
The Fifo Control Register (FCR) is not emulated; there is no support yet for
34
46
directly controlling the FIFOs (which, in this implementation, are always
@@ -108,6 +120,30 @@ writes on the Bus at the address where the device resides.
108
120
|1 |A malicious guest writes invalid values in the Load Register to cause overflows on subsequent reads of the Data Register. |The arithmetic operations in the RTC are checked for overflows. When such a situation occurs, the state of the device is reset. |
109
121
|2 |A malicious guest performs reads and writes from invalid offsets (that do not correspond to the RTC registers) to cause crashes or to get access to data. |Reads and writes of invalid offsets are denied by the emulation, and an `invalid_read/write` event is called. These events can be implemented by VMMs, and extend them to generate alarms (and for example stop the execution of the malicious guest). |
110
122
123
+
## Save/restore state support
124
+
125
+
This support is offered for now only for the `Rtc` device, by the following
126
+
abstractions:
127
+
-`RtcState` -> which keeps the hardware state of the `Rtc`;
128
+
-`RtcStateSer` -> which can be used by customers who need an `RtcState` that
129
+
is also `(De)Serialize` and/or `Versionize`. If the customers want a
130
+
different state than the upstream one, then they can implement `From` (or
131
+
similar mechanisms) in their products to convert the upstream state to the
132
+
desired product state.
133
+
134
+
A detailed design document for the save/restore state support in rust-vmm can
135
+
be found [here](https://github.com/rust-vmm/community/pull/118/files).
136
+
137
+
### Compatibility between `vm-superio` and `vm-superio-ser` versions
138
+
139
+
Each time there's a change in a state from `vm-superio`, that change needs to
140
+
be propagated in the corresponding state from `vm-superio-ser`. To keep the
141
+
compatibility between the release versions of these two crates, once we have a
142
+
new release of `vm-superio` that implied a change in `vm-superio-ser`, we need
143
+
to have a new release of `vm-superio-ser` as well.
144
+
Therefore, the `vm-superio-ser` crate has an exact version of `vm-superio` as
0 commit comments