Skip to content

Commit fe64817

Browse files
zulinx86ShadowCurse
authored andcommitted
Implement Serialize/Deserialize for kvm_xsave2
They weren't implemented when introduced. They are needed so that Xsave (i.e. FamStructWrapper<kvm_xsave2>) implements Serialize/Deserialize, which is needed for snapshot / live migration. Signed-off-by: Takahiro Itazuri <itazur@amazon.com>
1 parent 3a9c45e commit fe64817

File tree

3 files changed

+13
-3
lines changed

3 files changed

+13
-3
lines changed

kvm-bindings/CHANGELOG.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33

44
### Added
55

6+
- Implemented `Serialize` / `Deserialize` for `kvm_xsave2`.
7+
68
### Changed
79

810
### Removed
@@ -38,7 +40,7 @@
3840

3941
## [0.8.2]
4042

41-
### Changed
43+
### Changed
4244

4345
- Improve performance of bindings deserialization by \~5% by avoiding
4446
a temporary allocation.
@@ -55,7 +57,7 @@
5557
### Added
5658

5759
- An opt-in feature `serde` that enables [`serde`](https://serde.rs)-based
58-
(de)serialization of various bindings.
60+
(de)serialization of various bindings.
5961

6062
## [0.7.0]
6163

@@ -80,7 +82,7 @@
8082

8183
### Added
8284

83-
- Implement `PartialEq` for fam\_wrappers
85+
- Implement `PartialEq` for fam\_wrappers
8486

8587
## [0.5.0]
8688

kvm-bindings/src/x86_64/fam_wrappers.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,10 @@ pub type MsrList = FamStructWrapper<kvm_msr_list>;
9999
/// See also: [`Xsave`].
100100
#[repr(C)]
101101
#[derive(Debug, Default)]
102+
#[cfg_attr(
103+
feature = "serde",
104+
derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes)
105+
)]
102106
pub struct kvm_xsave2 {
103107
/// The length, in bytes, of the FAM in [`kvm_xsave`].
104108
///

kvm-bindings/src/x86_64/serialize.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use bindings::{
77
kvm_pit_channel_state, kvm_pit_state2, kvm_regs, kvm_segment, kvm_sregs, kvm_vcpu_events,
88
kvm_xcr, kvm_xcrs, kvm_xsave,
99
};
10+
use fam_wrappers::kvm_xsave2;
1011
use serde::{Deserialize, Deserializer, Serialize, Serializer};
1112
use zerocopy::{transmute, AsBytes, FromBytes, FromZeroes};
1213

@@ -29,6 +30,7 @@ serde_impls!(
2930
kvm_msrs,
3031
kvm_cpuid2,
3132
kvm_xsave,
33+
kvm_xsave2,
3234
kvm_irqchip
3335
);
3436

@@ -118,6 +120,7 @@ mod tests {
118120
is_serde::<kvm_pit_state2>();
119121
is_serde::<kvm_vcpu_events>();
120122
is_serde::<kvm_debugregs>();
123+
is_serde::<kvm_xsave2>();
121124
is_serde::<kvm_xcr>();
122125
is_serde::<kvm_xcrs>();
123126
is_serde::<kvm_irqchip>();
@@ -148,6 +151,7 @@ mod tests {
148151
is_serde_json::<kvm_pit_state2>();
149152
is_serde_json::<kvm_vcpu_events>();
150153
is_serde_json::<kvm_debugregs>();
154+
is_serde_json::<kvm_xsave2>();
151155
is_serde_json::<kvm_xcr>();
152156
is_serde_json::<kvm_xcrs>();
153157
is_serde_json::<kvm_irqchip>();

0 commit comments

Comments
 (0)