From 401cc95a38a44953410b4d3c1750c4f20c73cf31 Mon Sep 17 00:00:00 2001 From: Babis Chalios Date: Wed, 8 Nov 2023 13:54:00 +0000 Subject: [PATCH 1/7] serde: substitute versionize with serde We have decided to use serde instead of versionize for Firecracker snapshots. This commit replaces all versionize-related derives and manual implementations for the equivalent serde counterparts. Signed-off-by: Babis Chalios --- Cargo.toml | 7 +- src/arm64/bindings.rs | 261 ++++++++++++------------ src/lib.rs | 4 +- src/x86_64/bindings.rs | 453 ++++++++++++++++++----------------------- 4 files changed, 333 insertions(+), 392 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 399b543..631b642 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,6 +16,7 @@ rustdoc-args = ["--cfg", "docsrs"] fam-wrappers = ["vmm-sys-util"] [dependencies] -versionize = "0.2.0" -versionize_derive = "0.1.6" -vmm-sys-util = { version = "0.12.1", optional = true } +vmm-sys-util = { version = "0.12.1", optional = true, features = ["with-serde"] } + +serde = { version = "1.0.136", features = ["derive"] } +serde-big-array = "0.5.1" diff --git a/src/arm64/bindings.rs b/src/arm64/bindings.rs index 5fc72de..9e2323e 100644 --- a/src/arm64/bindings.rs +++ b/src/arm64/bindings.rs @@ -1,7 +1,7 @@ /* automatically generated by rust-bindgen 0.64.0 */ -use versionize::{VersionMap, Versionize, VersionizeResult}; -use versionize_derive::Versionize; +use serde::{Deserialize, Serialize}; +use serde_big_array::BigArray; #[repr(C)] #[derive(Default)] @@ -855,7 +855,7 @@ pub type __u32 = ::std::os::raw::c_uint; pub type __s64 = ::std::os::raw::c_longlong; pub type __u64 = ::std::os::raw::c_ulonglong; #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct __kernel_fd_set { pub fds_bits: [::std::os::raw::c_ulong; 16usize], } @@ -907,7 +907,7 @@ pub type __kernel_size_t = __kernel_ulong_t; pub type __kernel_ssize_t = __kernel_long_t; pub type __kernel_ptrdiff_t = __kernel_long_t; #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct __kernel_fsid_t { pub val: [::std::os::raw::c_int; 2usize], } @@ -957,7 +957,7 @@ pub type __sum16 = __u16; pub type __wsum = __u32; pub type __poll_t = ::std::os::raw::c_uint; #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct user_pt_regs { pub regs: [__u64; 31usize], pub sp: __u64, @@ -1021,7 +1021,7 @@ fn bindgen_test_layout_user_pt_regs() { } #[repr(C)] #[repr(align(16))] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct user_fpsimd_state { pub vregs: [__uint128_t; 32usize], pub fpsr: __u32, @@ -1084,14 +1084,14 @@ fn bindgen_test_layout_user_fpsimd_state() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct user_hwdebug_state { pub dbg_info: __u32, pub pad: __u32, pub dbg_regs: [user_hwdebug_state__bindgen_ty_1; 16usize], } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct user_hwdebug_state__bindgen_ty_1 { pub addr: __u64, pub ctrl: __u32, @@ -1192,7 +1192,7 @@ fn bindgen_test_layout_user_hwdebug_state() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct user_sve_header { pub size: __u32, pub max_size: __u32, @@ -1277,7 +1277,7 @@ fn bindgen_test_layout_user_sve_header() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct user_pac_mask { pub data_mask: __u64, pub insn_mask: __u64, @@ -1319,7 +1319,7 @@ fn bindgen_test_layout_user_pac_mask() { } #[repr(C)] #[repr(align(16))] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct user_pac_address_keys { pub apiakey: __uint128_t, pub apibkey: __uint128_t, @@ -1384,7 +1384,7 @@ fn bindgen_test_layout_user_pac_address_keys() { } #[repr(C)] #[repr(align(16))] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct user_pac_generic_keys { pub apgakey: __uint128_t, } @@ -1415,7 +1415,7 @@ fn bindgen_test_layout_user_pac_generic_keys() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct user_za_header { pub size: __u32, pub max_size: __u32, @@ -1501,7 +1501,7 @@ fn bindgen_test_layout_user_za_header() { } #[repr(C)] #[repr(align(16))] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_regs { pub regs: user_pt_regs, pub sp_el1: __u64, @@ -1576,7 +1576,7 @@ fn bindgen_test_layout_kvm_regs() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_vcpu_init { pub target: __u32, pub features: [__u32; 7usize], @@ -1649,7 +1649,7 @@ fn bindgen_test_layout_kvm_fpu() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_guest_debug_arch { pub dbg_bcr: [__u64; 16usize], pub dbg_bvr: [__u64; 16usize], @@ -1712,7 +1712,7 @@ fn bindgen_test_layout_kvm_guest_debug_arch() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_debug_exit_arch { pub hsr: __u32, pub hsr_high: __u32, @@ -1764,7 +1764,7 @@ fn bindgen_test_layout_kvm_debug_exit_arch() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_sync_regs { pub device_irq_level: __u64, } @@ -1794,7 +1794,7 @@ fn bindgen_test_layout_kvm_sync_regs() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_pmu_event_filter { pub base_event: __u16, pub nevents: __u16, @@ -1857,13 +1857,13 @@ fn bindgen_test_layout_kvm_pmu_event_filter() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_vcpu_events { pub exception: kvm_vcpu_events__bindgen_ty_1, pub reserved: [__u32; 12usize], } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_vcpu_events__bindgen_ty_1 { pub serror_pending: __u8, pub serror_has_esr: __u8, @@ -1973,7 +1973,7 @@ fn bindgen_test_layout_kvm_vcpu_events() { ); } #[repr(C)] -#[derive(Debug, Copy, Clone, PartialEq)] +#[derive(Debug, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_arm_copy_mte_tags { pub guest_ipa: __u64, pub length: __u64, @@ -2064,7 +2064,7 @@ pub const KVM_REG_ARM_VENDOR_HYP_BIT_FUNC_FEAT: _bindgen_ty_3 = 0; pub const KVM_REG_ARM_VENDOR_HYP_BIT_PTP: _bindgen_ty_3 = 1; pub type _bindgen_ty_3 = ::std::os::raw::c_uint; #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_user_trace_setup { pub buf_size: __u32, pub buf_nr: __u32, @@ -2105,7 +2105,7 @@ fn bindgen_test_layout_kvm_user_trace_setup() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_breakpoint { pub enabled: __u32, pub padding: __u32, @@ -2157,7 +2157,7 @@ fn bindgen_test_layout_kvm_breakpoint() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_debug_guest { pub enabled: __u32, pub pad: __u32, @@ -2220,7 +2220,7 @@ fn bindgen_test_layout_kvm_debug_guest() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_userspace_memory_region { pub slot: __u32, pub flags: __u32, @@ -2515,7 +2515,7 @@ impl ::std::fmt::Debug for kvm_irqchip { } } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_pit_config { pub flags: __u32, pub pad: [__u32; 15usize], @@ -2556,7 +2556,7 @@ fn bindgen_test_layout_kvm_pit_config() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_skeys { pub start_gfn: __u64, pub count: __u64, @@ -2779,7 +2779,7 @@ pub union kvm_hyperv_exit__bindgen_ty_1 { pub syndbg: kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3, } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1 { pub msr: __u32, pub pad2: __u32, @@ -2860,7 +2860,7 @@ fn bindgen_test_layout_kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_2 { pub input: __u64, pub result: __u64, @@ -2919,7 +2919,7 @@ fn bindgen_test_layout_kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_2() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3 { pub msr: __u32, pub pad2: __u32, @@ -3156,7 +3156,7 @@ pub union kvm_xen_exit__bindgen_ty_1 { pub hcall: kvm_xen_exit__bindgen_ty_1__bindgen_ty_1, } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_xen_exit__bindgen_ty_1__bindgen_ty_1 { pub longmode: __u32, pub cpl: __u32, @@ -3380,7 +3380,7 @@ pub union kvm_run__bindgen_ty_1 { pub padding: [::std::os::raw::c_char; 256usize], } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_1 { pub hardware_exit_reason: __u64, } @@ -3414,7 +3414,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_1() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_2 { pub hardware_entry_failure_reason: __u64, pub cpu: __u32, @@ -3461,7 +3461,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_2() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_3 { pub exception: __u32, pub error_code: __u32, @@ -3506,7 +3506,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_3() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_4 { pub direction: __u8, pub size: __u8, @@ -3584,7 +3584,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_4() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_5 { pub arch: kvm_debug_exit_arch, } @@ -3618,7 +3618,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_5() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_6 { pub phys_addr: __u64, pub data: [__u8; 8usize], @@ -3685,7 +3685,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_6() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_7 { pub nr: __u64, pub args: [__u64; 6usize], @@ -3763,7 +3763,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_7() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_8 { pub rip: __u64, pub is_write: __u32, @@ -3819,7 +3819,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_8() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_9 { pub icptcode: __u8, pub ipa: __u16, @@ -3875,7 +3875,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_9() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_10 { pub trans_exc_code: __u64, pub pgm_code: __u32, @@ -3923,7 +3923,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_10() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_11 { pub dcrn: __u32, pub data: __u32, @@ -3982,7 +3982,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_11() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_12 { pub suberror: __u32, pub ndata: __u32, @@ -4041,7 +4041,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_12() { ); } #[repr(C)] -#[derive(Copy, Clone)] +#[derive(Copy, Clone, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_13 { pub suberror: __u32, pub ndata: __u32, @@ -4054,7 +4054,7 @@ pub union kvm_run__bindgen_ty_1__bindgen_ty_13__bindgen_ty_1 { pub __bindgen_anon_1: kvm_run__bindgen_ty_1__bindgen_ty_13__bindgen_ty_1__bindgen_ty_1, } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_13__bindgen_ty_1__bindgen_ty_1 { pub insn_size: __u8, pub insn_bytes: [__u8; 15usize], @@ -4205,7 +4205,7 @@ impl ::std::fmt::Debug for kvm_run__bindgen_ty_1__bindgen_ty_13 { } } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_14 { pub gprs: [__u64; 32usize], } @@ -4242,7 +4242,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_14() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_15 { pub nr: __u64, pub ret: __u64, @@ -4301,7 +4301,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_15() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_16 { pub subchannel_id: __u16, pub subchannel_nr: __u16, @@ -4393,7 +4393,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_16() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_17 { pub epr: __u32, } @@ -4430,7 +4430,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_17() { ); } #[repr(C)] -#[derive(Copy, Clone)] +#[derive(Copy, Clone, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_18 { pub type_: __u32, pub ndata: __u32, @@ -4558,7 +4558,7 @@ impl ::std::fmt::Debug for kvm_run__bindgen_ty_1__bindgen_ty_18 { } } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_19 { pub addr: __u64, pub ar: __u8, @@ -4650,7 +4650,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_19() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_20 { pub vector: __u8, } @@ -4687,7 +4687,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_20() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_21 { pub esr_iss: __u64, pub fault_ipa: __u64, @@ -4735,7 +4735,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_21() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_22 { pub error: __u8, pub pad: [__u8; 7usize], @@ -4816,7 +4816,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_22() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_23 { pub extension_id: ::std::os::raw::c_ulong, pub function_id: ::std::os::raw::c_ulong, @@ -4886,7 +4886,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_23() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_24 { pub csr_num: ::std::os::raw::c_ulong, pub new_value: ::std::os::raw::c_ulong, @@ -4956,7 +4956,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_24() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_25 { pub flags: __u32, } @@ -5839,7 +5839,7 @@ impl ::std::fmt::Debug for kvm_coalesced_mmio_ring { } } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_translation { pub linear_address: __u64, pub physical_address: __u64, @@ -5941,7 +5941,7 @@ pub union kvm_s390_mem_op__bindgen_ty_1 { pub reserved: [__u8; 32usize], } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_mem_op__bindgen_ty_1__bindgen_ty_1 { pub ar: __u8, pub key: __u8, @@ -6118,7 +6118,7 @@ impl ::std::fmt::Debug for kvm_s390_mem_op { } } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_interrupt { pub irq: __u32, } @@ -6431,7 +6431,7 @@ fn bindgen_test_layout_kvm_signal_mask() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_tpr_access_ctl { pub enabled: __u32, pub flags: __u32, @@ -6483,7 +6483,7 @@ fn bindgen_test_layout_kvm_tpr_access_ctl() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_vapic_addr { pub vapic_addr: __u64, } @@ -6513,7 +6513,7 @@ fn bindgen_test_layout_kvm_vapic_addr() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_mp_state { pub mp_state: __u32, } @@ -6543,7 +6543,7 @@ fn bindgen_test_layout_kvm_mp_state() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_psw { pub mask: __u64, pub addr: __u64, @@ -6584,7 +6584,7 @@ fn bindgen_test_layout_kvm_s390_psw() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_interrupt { pub type_: __u32, pub parm: __u32, @@ -6636,7 +6636,7 @@ fn bindgen_test_layout_kvm_s390_interrupt() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_io_info { pub subchannel_id: __u16, pub subchannel_nr: __u16, @@ -6699,7 +6699,7 @@ fn bindgen_test_layout_kvm_s390_io_info() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_ext_info { pub ext_params: __u32, pub pad: __u32, @@ -6751,7 +6751,7 @@ fn bindgen_test_layout_kvm_s390_ext_info() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_pgm_info { pub trans_exc_code: __u64, pub mon_code: __u64, @@ -6913,7 +6913,7 @@ fn bindgen_test_layout_kvm_s390_pgm_info() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_prefix_info { pub address: __u32, } @@ -6943,7 +6943,7 @@ fn bindgen_test_layout_kvm_s390_prefix_info() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_extcall_info { pub code: __u16, } @@ -6974,7 +6974,7 @@ fn bindgen_test_layout_kvm_s390_extcall_info() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_emerg_info { pub code: __u16, } @@ -7004,7 +7004,7 @@ fn bindgen_test_layout_kvm_s390_emerg_info() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_stop_info { pub flags: __u32, } @@ -7034,7 +7034,7 @@ fn bindgen_test_layout_kvm_s390_stop_info() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_mchk_info { pub cr14: __u64, pub mcic: __u64, @@ -7311,7 +7311,7 @@ impl ::std::fmt::Debug for kvm_s390_irq { } } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_irq_state { pub buf: __u64, pub flags: __u32, @@ -7374,7 +7374,7 @@ fn bindgen_test_layout_kvm_s390_irq_state() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_guest_debug { pub control: __u32, pub pad: __u32, @@ -7433,13 +7433,14 @@ pub const kvm_ioeventfd_flag_nr_fast_mmio: _bindgen_ty_4 = 4; pub const kvm_ioeventfd_flag_nr_max: _bindgen_ty_4 = 5; pub type _bindgen_ty_4 = ::std::os::raw::c_uint; #[repr(C)] -#[derive(Debug, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_ioeventfd { pub datamatch: __u64, pub addr: __u64, pub len: __u32, pub fd: __s32, pub flags: __u32, + #[serde(with = "BigArray")] pub pad: [__u8; 36usize], } #[test] @@ -7527,11 +7528,12 @@ impl Default for kvm_ioeventfd { } } #[repr(C)] -#[derive(Debug, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_enable_cap { pub cap: __u32, pub flags: __u32, pub args: [__u64; 4usize], + #[serde(with = "BigArray")] pub pad: [__u8; 64usize], } #[test] @@ -7599,10 +7601,11 @@ impl Default for kvm_enable_cap { } } #[repr(C)] -#[derive(Debug, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_ppc_pvinfo { pub flags: __u32, pub hcall: [__u32; 4usize], + #[serde(with = "BigArray")] pub pad: [__u8; 108usize], } #[test] @@ -7660,7 +7663,7 @@ impl Default for kvm_ppc_pvinfo { } } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_ppc_one_page_size { pub page_shift: __u32, pub pte_enc: __u32, @@ -7702,7 +7705,7 @@ fn bindgen_test_layout_kvm_ppc_one_page_size() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_ppc_one_seg_page_size { pub page_shift: __u32, pub slb_enc: __u32, @@ -7755,7 +7758,7 @@ fn bindgen_test_layout_kvm_ppc_one_seg_page_size() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_ppc_smmu_info { pub flags: __u64, pub slb_size: __u32, @@ -7829,7 +7832,7 @@ fn bindgen_test_layout_kvm_ppc_smmu_info() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_ppc_resize_hpt { pub flags: __u64, pub shift: __u32, @@ -7881,7 +7884,7 @@ fn bindgen_test_layout_kvm_ppc_resize_hpt() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_irq_routing_irqchip { pub irqchip: __u32, pub pin: __u32, @@ -8049,7 +8052,7 @@ impl ::std::fmt::Debug for kvm_irq_routing_msi { } } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_irq_routing_s390_adapter { pub ind_addr: __u64, pub summary_addr: __u64, @@ -8124,7 +8127,7 @@ fn bindgen_test_layout_kvm_irq_routing_s390_adapter() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_irq_routing_hv_sint { pub vcpu: __u32, pub sint: __u32, @@ -8166,7 +8169,7 @@ fn bindgen_test_layout_kvm_irq_routing_hv_sint() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_irq_routing_xen_evtchn { pub port: __u32, pub vcpu: __u32, @@ -8484,7 +8487,7 @@ impl ::std::fmt::Debug for kvm_irq_routing { } } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_irqfd { pub fd: __u32, pub gsi: __u32, @@ -8558,7 +8561,7 @@ fn bindgen_test_layout_kvm_irqfd() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_clock_data { pub clock: __u64, pub flags: __u32, @@ -8643,7 +8646,7 @@ fn bindgen_test_layout_kvm_clock_data() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_config_tlb { pub params: __u64, pub array: __u64, @@ -8706,7 +8709,7 @@ fn bindgen_test_layout_kvm_config_tlb() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_dirty_tlb { pub bitmap: __u64, pub num_dirty: __u32, @@ -8788,7 +8791,7 @@ fn bindgen_test_layout_kvm_reg_list() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_one_reg { pub id: __u64, pub addr: __u64, @@ -8829,7 +8832,7 @@ fn bindgen_test_layout_kvm_one_reg() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_msi { pub address_lo: __u32, pub address_hi: __u32, @@ -8914,7 +8917,7 @@ fn bindgen_test_layout_kvm_msi() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_arm_device_addr { pub id: __u64, pub addr: __u64, @@ -8955,7 +8958,7 @@ fn bindgen_test_layout_kvm_arm_device_addr() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_create_device { pub type_: __u32, pub fd: __u32, @@ -9007,7 +9010,7 @@ fn bindgen_test_layout_kvm_create_device() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_device_attr { pub flags: __u32, pub group: __u32, @@ -9082,7 +9085,7 @@ pub const kvm_device_type_KVM_DEV_TYPE_ARM_PV_TIME: kvm_device_type = 10; pub const kvm_device_type_KVM_DEV_TYPE_MAX: kvm_device_type = 11; pub type kvm_device_type = ::std::os::raw::c_uint; #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_vfio_spapr_tce { pub groupfd: __s32, pub tablefd: __s32, @@ -9123,7 +9126,7 @@ fn bindgen_test_layout_kvm_vfio_spapr_tce() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_ucas_mapping { pub user_addr: __u64, pub vcpu_addr: __u64, @@ -9176,7 +9179,7 @@ fn bindgen_test_layout_kvm_s390_ucas_mapping() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_enc_region { pub addr: __u64, pub size: __u64, @@ -9217,7 +9220,7 @@ fn bindgen_test_layout_kvm_enc_region() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_pv_sec_parm { pub origin: __u64, pub length: __u64, @@ -9258,7 +9261,7 @@ fn bindgen_test_layout_kvm_s390_pv_sec_parm() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_pv_unp { pub addr: __u64, pub size: __u64, @@ -9315,7 +9318,7 @@ pub const pv_cmd_dmp_id_KVM_PV_DUMP_COMPLETE: pv_cmd_dmp_id = 2; pub const pv_cmd_dmp_id_KVM_PV_DUMP_CPU: pv_cmd_dmp_id = 3; pub type pv_cmd_dmp_id = ::std::os::raw::c_uint; #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_pv_dmp { pub subcmd: __u64, pub buff_addr: __u64, @@ -9392,7 +9395,7 @@ pub const pv_cmd_info_id_KVM_PV_INFO_VM: pv_cmd_info_id = 0; pub const pv_cmd_info_id_KVM_PV_INFO_DUMP: pv_cmd_info_id = 1; pub type pv_cmd_info_id = ::std::os::raw::c_uint; #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_pv_info_dump { pub dump_cpu_buffer_len: __u64, pub dump_config_mem_buffer_per_1m: __u64, @@ -9447,7 +9450,7 @@ fn bindgen_test_layout_kvm_s390_pv_info_dump() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_pv_info_vm { pub inst_calls_list: [__u64; 4usize], pub max_cpus: __u64, @@ -9521,7 +9524,7 @@ fn bindgen_test_layout_kvm_s390_pv_info_vm() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_pv_info_header { pub id: __u32, pub len_max: __u32, @@ -9702,7 +9705,7 @@ pub const pv_cmd_id_KVM_PV_ASYNC_CLEANUP_PREPARE: pv_cmd_id = 9; pub const pv_cmd_id_KVM_PV_ASYNC_CLEANUP_PERFORM: pv_cmd_id = 10; pub type pv_cmd_id = ::std::os::raw::c_uint; #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_pv_cmd { pub cmd: __u32, pub rc: __u16, @@ -9805,7 +9808,7 @@ pub union kvm_xen_hvm_attr__bindgen_ty_1 { pub pad: [__u64; 8usize], } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_1 { pub gfn: __u64, } @@ -9857,7 +9860,7 @@ pub union kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 { pub padding: [__u32; 4usize], } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1__bindgen_ty_1 { pub port: __u32, pub vcpu: __u32, @@ -9921,7 +9924,7 @@ fn bindgen_test_layout_kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_ ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1__bindgen_ty_2 { pub port: __u32, pub fd: __s32, @@ -10300,7 +10303,7 @@ pub union kvm_xen_vcpu_attr__bindgen_ty_1 { pub vector: __u8, } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_xen_vcpu_attr__bindgen_ty_1__bindgen_ty_1 { pub state: __u64, pub state_entry_time: __u64, @@ -10392,7 +10395,7 @@ fn bindgen_test_layout_kvm_xen_vcpu_attr__bindgen_ty_1__bindgen_ty_1() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_xen_vcpu_attr__bindgen_ty_1__bindgen_ty_2 { pub port: __u32, pub priority: __u32, @@ -10628,7 +10631,7 @@ pub const sev_cmd_id_KVM_SEV_SEND_CANCEL: sev_cmd_id = 21; pub const sev_cmd_id_KVM_SEV_NR_MAX: sev_cmd_id = 22; pub type sev_cmd_id = ::std::os::raw::c_uint; #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_sev_cmd { pub id: __u32, pub data: __u64, @@ -10691,7 +10694,7 @@ fn bindgen_test_layout_kvm_sev_cmd() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_sev_launch_start { pub handle: __u32, pub policy: __u32, @@ -10776,7 +10779,7 @@ fn bindgen_test_layout_kvm_sev_launch_start() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_sev_launch_update_data { pub uaddr: __u64, pub len: __u32, @@ -10818,7 +10821,7 @@ fn bindgen_test_layout_kvm_sev_launch_update_data() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_sev_launch_secret { pub hdr_uaddr: __u64, pub hdr_len: __u32, @@ -10904,7 +10907,7 @@ fn bindgen_test_layout_kvm_sev_launch_secret() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_sev_launch_measure { pub uaddr: __u64, pub len: __u32, @@ -10946,7 +10949,7 @@ fn bindgen_test_layout_kvm_sev_launch_measure() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_sev_guest_status { pub handle: __u32, pub policy: __u32, @@ -10998,7 +11001,7 @@ fn bindgen_test_layout_kvm_sev_guest_status() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_sev_dbg { pub src_uaddr: __u64, pub dst_uaddr: __u64, @@ -11050,7 +11053,7 @@ fn bindgen_test_layout_kvm_sev_dbg() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_sev_attestation_report { pub mnonce: [__u8; 16usize], pub uaddr: __u64, @@ -11103,7 +11106,7 @@ fn bindgen_test_layout_kvm_sev_attestation_report() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_sev_send_start { pub policy: __u32, pub pdh_cert_uaddr: __u64, @@ -11221,7 +11224,7 @@ fn bindgen_test_layout_kvm_sev_send_start() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_sev_send_update_data { pub hdr_uaddr: __u64, pub hdr_len: __u32, @@ -11307,7 +11310,7 @@ fn bindgen_test_layout_kvm_sev_send_update_data() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_sev_receive_start { pub handle: __u32, pub policy: __u32, @@ -11393,7 +11396,7 @@ fn bindgen_test_layout_kvm_sev_receive_start() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_sev_receive_update_data { pub hdr_uaddr: __u64, pub hdr_len: __u32, @@ -11739,7 +11742,7 @@ impl ::std::fmt::Debug for kvm_assigned_irq { } } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_assigned_msix_nr { pub assigned_dev_id: __u32, pub entry_nr: __u16, @@ -11791,7 +11794,7 @@ fn bindgen_test_layout_kvm_assigned_msix_nr() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_assigned_msix_entry { pub assigned_dev_id: __u32, pub gsi: __u32, @@ -11855,7 +11858,7 @@ fn bindgen_test_layout_kvm_assigned_msix_entry() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_hyperv_eventfd { pub conn_id: __u32, pub fd: __s32, @@ -11918,7 +11921,7 @@ fn bindgen_test_layout_kvm_hyperv_eventfd() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_dirty_gfn { pub flags: __u32, pub slot: __u32, @@ -11971,7 +11974,7 @@ fn bindgen_test_layout_kvm_dirty_gfn() { } #[doc = " struct kvm_stats_header - Header of per vm/vcpu binary statistics data.\n @flags: Some extra information for header, always 0 for now.\n @name_size: The size in bytes of the memory which contains statistics\n name string including trailing '\\0'. The memory is allocated\n at the send of statistics descriptor.\n @num_desc: The number of statistics the vm or vcpu has.\n @id_offset: The offset of the vm/vcpu stats' id string in the file pointed\n by vm/vcpu stats fd.\n @desc_offset: The offset of the vm/vcpu stats' descriptor block in the file\n pointd by vm/vcpu stats fd.\n @data_offset: The offset of the vm/vcpu stats' data block in the file\n pointed by vm/vcpu stats fd.\n\n This is the header userspace needs to read from stats fd before any other\n readings. It is used by userspace to discover all the information about the\n vm/vcpu's binary statistics.\n Userspace reads this header from the start of the vm/vcpu's stats fd."] #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_stats_header { pub flags: __u32, pub name_size: __u32, @@ -12156,7 +12159,7 @@ pub union kvm_s390_zpci_op__bindgen_ty_1 { pub reserved: [__u64; 8usize], } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_zpci_op__bindgen_ty_1__bindgen_ty_1 { pub ibv: __u64, pub sb: __u64, diff --git a/src/lib.rs b/src/lib.rs index 2b805a9..a465cb6 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -12,8 +12,8 @@ #[cfg(feature = "fam-wrappers")] extern crate vmm_sys_util; -extern crate versionize; -extern crate versionize_derive; +extern crate serde; +extern crate serde_big_array; #[cfg(target_arch = "x86_64")] mod x86_64; diff --git a/src/x86_64/bindings.rs b/src/x86_64/bindings.rs index d545a21..211f6f1 100644 --- a/src/x86_64/bindings.rs +++ b/src/x86_64/bindings.rs @@ -1,10 +1,12 @@ /* automatically generated by rust-bindgen 0.64.0 */ -use versionize::{VersionMap, Versionize, VersionizeResult}; -use versionize_derive::Versionize; +use serde::{Deserialize, Serialize}; +use serde_big_array::BigArray; #[repr(C)] -#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] +#[derive( + Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize, Deserialize, +)] pub struct __BindgenBitfieldUnit { storage: Storage, } @@ -14,35 +16,6 @@ impl __BindgenBitfieldUnit { Self { storage } } } -// Implementing Versionize by hand due to some weird errors when trying to derive (most likely -// because versionize_derive does not support structs with generics at this point). -impl Versionize for __BindgenBitfieldUnit -where - Storage: AsRef<[u8]> + AsMut<[u8]> + Versionize, -{ - fn serialize( - &self, - writer: &mut W, - version_map: &VersionMap, - app_version: u16, - ) -> VersionizeResult<()> { - Versionize::serialize(&self.storage, writer, version_map, app_version) - } - - fn deserialize( - reader: &mut R, - version_map: &VersionMap, - app_version: u16, - ) -> VersionizeResult { - let storage = Versionize::deserialize(reader, version_map, app_version)?; - - Ok(__BindgenBitfieldUnit { storage }) - } - - fn version() -> u16 { - 1 - } -} impl __BindgenBitfieldUnit where Storage: AsRef<[u8]> + AsMut<[u8]>, @@ -113,7 +86,7 @@ where } } #[repr(C)] -#[derive(Default)] +#[derive(Default, Serialize, Deserialize)] pub struct __IncompleteArrayField(::std::marker::PhantomData, [T; 0]); impl __IncompleteArrayField { #[inline] @@ -185,31 +158,7 @@ impl ::std::cmp::PartialEq for __BindgenUnionField { } } impl ::std::cmp::Eq for __BindgenUnionField {} -impl Versionize for __IncompleteArrayField { - #[inline] - fn serialize( - &self, - _writer: &mut W, - _version_map: &VersionMap, - _app_version: u16, - ) -> VersionizeResult<()> { - Ok(()) - } - #[inline] - fn deserialize( - _reader: &mut R, - _version_map: &VersionMap, - _app_version: u16, - ) -> VersionizeResult { - Ok(Self::new()) - } - - // Not used. - fn version() -> u16 { - 1 - } -} pub const __BITS_PER_LONG: u32 = 64; pub const __FD_SETSIZE: u32 = 1024; pub const _IOC_NRBITS: u32 = 8; @@ -833,7 +782,7 @@ pub type __u32 = ::std::os::raw::c_uint; pub type __s64 = ::std::os::raw::c_longlong; pub type __u64 = ::std::os::raw::c_ulonglong; #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct __kernel_fd_set { pub fds_bits: [::std::os::raw::c_ulong; 16usize], } @@ -885,7 +834,7 @@ pub type __kernel_size_t = __kernel_ulong_t; pub type __kernel_ssize_t = __kernel_long_t; pub type __kernel_ptrdiff_t = __kernel_long_t; #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct __kernel_fsid_t { pub val: [::std::os::raw::c_int; 2usize], } @@ -935,7 +884,7 @@ pub type __sum16 = __u16; pub type __wsum = __u32; pub type __poll_t = ::std::os::raw::c_uint; #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_pic_state { pub last_irr: __u8, pub irr: __u8, @@ -1130,7 +1079,7 @@ fn bindgen_test_layout_kvm_pic_state() { ); } #[repr(C)] -#[derive(Copy, Clone, Versionize)] +#[derive(Copy, Clone, Serialize, Deserialize)] pub struct kvm_ioapic_state { pub base_address: __u64, pub ioregsel: __u32, @@ -1139,45 +1088,39 @@ pub struct kvm_ioapic_state { pub pad: __u32, pub redirtbl: [kvm_ioapic_state__bindgen_ty_1; 24usize], } + #[repr(C)] #[derive(Copy, Clone)] pub union kvm_ioapic_state__bindgen_ty_1 { pub bits: __u64, pub fields: kvm_ioapic_state__bindgen_ty_1__bindgen_ty_1, } -// Manual implementation of `Versionize` since `versionize_derive` doesn't support unions -// anymore. What we're doing here is equivalent to the old autogenerated implementation, namely -// we're creating a bitwise serialization of the object. -impl Versionize for kvm_ioapic_state__bindgen_ty_1 { - fn serialize( - &self, - writer: &mut W, - version_map: &VersionMap, - app_version: u16, - ) -> VersionizeResult<()> { - // Safe because this is a POD object and we're only using the read result to serialize - // the underlying bytes. + +impl Serialize for kvm_ioapic_state__bindgen_ty_1 { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + // SAFETY: Safe because this is a POD object and we're only using the read result to + // serialize the underlying bytes. let bits = unsafe { self.bits }; assert_eq!(std::mem::size_of_val(&bits), std::mem::size_of::()); - Versionize::serialize(&bits, writer, version_map, app_version) + serializer.serialize_u64(bits) } +} - fn deserialize( - reader: &mut R, - version_map: &VersionMap, - app_version: u16, - ) -> VersionizeResult { - let bits: __u64 = Versionize::deserialize(reader, version_map, app_version)?; +impl<'de> Deserialize<'de> for kvm_ioapic_state__bindgen_ty_1 { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let bits: __u64 = Deserialize::deserialize(deserializer)?; assert_eq!(std::mem::size_of_val(&bits), std::mem::size_of::()); Ok(Self { bits }) } - - fn version() -> u16 { - 1 - } } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_ioapic_state__bindgen_ty_1__bindgen_ty_1 { pub vector: __u8, pub _bitfield_align_1: [u8; 0], @@ -1513,7 +1456,7 @@ impl ::std::fmt::Debug for kvm_ioapic_state { } } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_regs { pub rax: __u64, pub rbx: __u64, @@ -1730,8 +1673,9 @@ fn bindgen_test_layout_kvm_regs() { ); } #[repr(C)] -#[derive(Debug, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_lapic_state { + #[serde(with = "BigArray")] pub regs: [::std::os::raw::c_char; 1024usize], } #[test] @@ -1769,7 +1713,7 @@ impl Default for kvm_lapic_state { } } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_segment { pub base: __u64, pub limit: __u32, @@ -1931,7 +1875,7 @@ fn bindgen_test_layout_kvm_segment() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_dtable { pub base: __u64, pub limit: __u16, @@ -1983,7 +1927,7 @@ fn bindgen_test_layout_kvm_dtable() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_sregs { pub cs: kvm_segment, pub ds: kvm_segment, @@ -2200,7 +2144,7 @@ fn bindgen_test_layout_kvm_sregs() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_sregs2 { pub cs: kvm_segment, pub ds: kvm_segment, @@ -2568,7 +2512,7 @@ fn bindgen_test_layout_kvm_fpu() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_msr_entry { pub index: __u32, pub reserved: __u32, @@ -2620,7 +2564,7 @@ fn bindgen_test_layout_kvm_msr_entry() { ); } #[repr(C)] -#[derive(Debug, Default, Versionize)] +#[derive(Debug, Default, Serialize, Deserialize)] pub struct kvm_msrs { pub nmsrs: __u32, pub pad: __u32, @@ -2672,7 +2616,7 @@ fn bindgen_test_layout_kvm_msrs() { ); } #[repr(C)] -#[derive(Debug, Default, Versionize)] +#[derive(Debug, Default, Serialize, Deserialize)] pub struct kvm_msr_list { pub nmsrs: __u32, pub indices: __IncompleteArrayField<__u32>, @@ -2835,7 +2779,7 @@ impl Default for kvm_msr_filter { } } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_cpuid_entry { pub function: __u32, pub eax: __u32, @@ -2920,7 +2864,7 @@ fn bindgen_test_layout_kvm_cpuid_entry() { ); } #[repr(C)] -#[derive(Debug, Default, Versionize)] +#[derive(Debug, Default, Serialize, Deserialize)] pub struct kvm_cpuid { pub nent: __u32, pub padding: __u32, @@ -2972,7 +2916,7 @@ fn bindgen_test_layout_kvm_cpuid() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_cpuid_entry2 { pub function: __u32, pub index: __u32, @@ -3079,7 +3023,7 @@ fn bindgen_test_layout_kvm_cpuid_entry2() { ); } #[repr(C)] -#[derive(Debug, Default, Versionize)] +#[derive(Debug, Default, Serialize, Deserialize)] pub struct kvm_cpuid2 { pub nent: __u32, pub padding: __u32, @@ -3131,7 +3075,7 @@ fn bindgen_test_layout_kvm_cpuid2() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_pit_channel_state { pub count: __u32, pub latched_count: __u16, @@ -3294,7 +3238,7 @@ fn bindgen_test_layout_kvm_pit_channel_state() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_debug_exit_arch { pub exception: __u32, pub pad: __u32, @@ -3368,7 +3312,7 @@ fn bindgen_test_layout_kvm_debug_exit_arch() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_guest_debug_arch { pub debugreg: [__u64; 8usize], } @@ -3398,7 +3342,7 @@ fn bindgen_test_layout_kvm_guest_debug_arch() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_pit_state { pub channels: [kvm_pit_channel_state; 3usize], } @@ -3428,7 +3372,7 @@ fn bindgen_test_layout_kvm_pit_state() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_pit_state2 { pub channels: [kvm_pit_channel_state; 3usize], pub flags: __u32, @@ -3480,7 +3424,7 @@ fn bindgen_test_layout_kvm_pit_state2() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_reinject_control { pub pit_reinject: __u8, pub reserved: [__u8; 31usize], @@ -3521,7 +3465,7 @@ fn bindgen_test_layout_kvm_reinject_control() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_vcpu_events { pub exception: kvm_vcpu_events__bindgen_ty_1, pub interrupt: kvm_vcpu_events__bindgen_ty_2, @@ -3535,7 +3479,7 @@ pub struct kvm_vcpu_events { pub exception_payload: __u64, } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_vcpu_events__bindgen_ty_1 { pub injected: __u8, pub nr: __u8, @@ -3610,7 +3554,7 @@ fn bindgen_test_layout_kvm_vcpu_events__bindgen_ty_1() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_vcpu_events__bindgen_ty_2 { pub injected: __u8, pub nr: __u8, @@ -3674,7 +3618,7 @@ fn bindgen_test_layout_kvm_vcpu_events__bindgen_ty_2() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_vcpu_events__bindgen_ty_3 { pub injected: __u8, pub pending: __u8, @@ -3738,7 +3682,7 @@ fn bindgen_test_layout_kvm_vcpu_events__bindgen_ty_3() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_vcpu_events__bindgen_ty_4 { pub smm: __u8, pub pending: __u8, @@ -3802,7 +3746,7 @@ fn bindgen_test_layout_kvm_vcpu_events__bindgen_ty_4() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_vcpu_events__bindgen_ty_5 { pub pending: __u8, } @@ -3948,7 +3892,7 @@ fn bindgen_test_layout_kvm_vcpu_events() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_debugregs { pub db: [__u64; 4usize], pub dr6: __u64, @@ -4022,8 +3966,9 @@ fn bindgen_test_layout_kvm_debugregs() { ); } #[repr(C)] -#[derive(Debug, Versionize)] +#[derive(Debug, Copy, PartialEq, Serialize, Deserialize)] pub struct kvm_xsave { + #[serde(with = "BigArray")] pub region: [__u32; 1024usize], pub extra: __IncompleteArrayField<__u32>, } @@ -4080,7 +4025,7 @@ impl Default for kvm_xsave { } } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_xcr { pub xcr: __u32, pub reserved: __u32, @@ -4132,7 +4077,7 @@ fn bindgen_test_layout_kvm_xcr() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_xcrs { pub nr_xcrs: __u32, pub flags: __u32, @@ -4195,7 +4140,7 @@ fn bindgen_test_layout_kvm_xcrs() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_sync_regs { pub regs: kvm_regs, pub sregs: kvm_sregs, @@ -4247,7 +4192,7 @@ fn bindgen_test_layout_kvm_sync_regs() { ); } #[repr(C)] -#[derive(Debug, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_vmx_nested_state_data { pub vmcs12: [__u8; 4096usize], pub shadow_vmcs12: [__u8; 4096usize], @@ -4298,7 +4243,7 @@ impl Default for kvm_vmx_nested_state_data { } } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_vmx_nested_state_hdr { pub vmxon_pa: __u64, pub vmcs12_pa: __u64, @@ -4308,7 +4253,7 @@ pub struct kvm_vmx_nested_state_hdr { pub preemption_timer_deadline: __u64, } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_vmx_nested_state_hdr__bindgen_ty_1 { pub flags: __u16, } @@ -4421,7 +4366,7 @@ fn bindgen_test_layout_kvm_vmx_nested_state_hdr() { ); } #[repr(C)] -#[derive(Debug, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_svm_nested_state_data { pub vmcb12: [__u8; 4096usize], } @@ -4461,7 +4406,7 @@ impl Default for kvm_svm_nested_state_data { } } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_svm_nested_state_hdr { pub vmcb_pa: __u64, } @@ -4706,7 +4651,7 @@ impl ::std::fmt::Debug for kvm_nested_state { } } #[repr(C)] -#[derive(Debug, Default, Versionize)] +#[derive(Debug, Default, Serialize, Deserialize)] pub struct kvm_pmu_event_filter { pub action: __u32, pub nevents: __u32, @@ -4791,7 +4736,7 @@ fn bindgen_test_layout_kvm_pmu_event_filter() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_user_trace_setup { pub buf_size: __u32, pub buf_nr: __u32, @@ -4832,7 +4777,7 @@ fn bindgen_test_layout_kvm_user_trace_setup() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_breakpoint { pub enabled: __u32, pub padding: __u32, @@ -4884,7 +4829,7 @@ fn bindgen_test_layout_kvm_breakpoint() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_debug_guest { pub enabled: __u32, pub pad: __u32, @@ -4947,7 +4892,7 @@ fn bindgen_test_layout_kvm_debug_guest() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_userspace_memory_region { pub slot: __u32, pub flags: __u32, @@ -5127,7 +5072,7 @@ impl ::std::fmt::Debug for kvm_irq_level { } } #[repr(C)] -#[derive(Copy, Clone, Versionize)] +#[derive(Copy, Clone, Serialize, Deserialize)] pub struct kvm_irqchip { pub chip_id: __u32, pub pad: __u32, @@ -5141,11 +5086,12 @@ pub union kvm_irqchip__bindgen_ty_1 { pub ioapic: kvm_ioapic_state, } -// Helper struct for the manual `Versionize` implementation below. This makes things easier, +// Helper struct for the manual `Serialize, Deserialize` implementation below. This makes things easier, // because there's no default way of serializing larger arrays. #[repr(transparent)] -#[derive(Versionize)] +#[derive(Serialize, Deserialize)] struct kvm_irqchip__bindgen_ty_1_dummy { + #[serde(with = "BigArray")] dummy: [::std::os::raw::c_char; 512usize], } @@ -5155,37 +5101,28 @@ impl kvm_irqchip__bindgen_ty_1_dummy { } } -// Manual implementation of `Versionize` since `versionize_derive` doesn't support unions -// anymore. What we're doing here is equivalent to the old autogenerated implementation, namely -// we're creating a bitwise serialization of the object. -impl Versionize for kvm_irqchip__bindgen_ty_1 { - fn serialize( - &self, - writer: &mut W, - version_map: &VersionMap, - app_version: u16, - ) -> VersionizeResult<()> { - // Safe because this is a POD struct and we're only using the read result to serialize - // the underlying bytes. +impl Serialize for kvm_irqchip__bindgen_ty_1 { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + // SAFETY: Safe because this is a POD struct and we're only using the read result to + // serialize the underlying bytes. let dummy = kvm_irqchip__bindgen_ty_1_dummy::new(unsafe { self.dummy }); assert_eq!(std::mem::size_of_val(&dummy), std::mem::size_of::()); - Versionize::serialize(&dummy, writer, version_map, app_version) + dummy.serialize(serializer) } +} - fn deserialize( - reader: &mut R, - version_map: &VersionMap, - app_version: u16, - ) -> VersionizeResult { - let dummy: kvm_irqchip__bindgen_ty_1_dummy = - Versionize::deserialize(reader, version_map, app_version)?; +impl<'de> Deserialize<'de> for kvm_irqchip__bindgen_ty_1 { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let dummy: kvm_irqchip__bindgen_ty_1_dummy = Deserialize::deserialize(deserializer)?; assert_eq!(std::mem::size_of_val(&dummy), std::mem::size_of::()); Ok(Self { dummy: dummy.dummy }) } - - fn version() -> u16 { - 1 - } } #[test] fn bindgen_test_layout_kvm_irqchip__bindgen_ty_1() { @@ -5311,7 +5248,7 @@ impl ::std::fmt::Debug for kvm_irqchip { } } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_pit_config { pub flags: __u32, pub pad: [__u32; 15usize], @@ -5352,7 +5289,7 @@ fn bindgen_test_layout_kvm_pit_config() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_skeys { pub start_gfn: __u64, pub count: __u64, @@ -5575,7 +5512,7 @@ pub union kvm_hyperv_exit__bindgen_ty_1 { pub syndbg: kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3, } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1 { pub msr: __u32, pub pad2: __u32, @@ -5656,7 +5593,7 @@ fn bindgen_test_layout_kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_2 { pub input: __u64, pub result: __u64, @@ -5715,7 +5652,7 @@ fn bindgen_test_layout_kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_2() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3 { pub msr: __u32, pub pad2: __u32, @@ -5952,7 +5889,7 @@ pub union kvm_xen_exit__bindgen_ty_1 { pub hcall: kvm_xen_exit__bindgen_ty_1__bindgen_ty_1, } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_xen_exit__bindgen_ty_1__bindgen_ty_1 { pub longmode: __u32, pub cpl: __u32, @@ -6176,7 +6113,7 @@ pub union kvm_run__bindgen_ty_1 { pub padding: [::std::os::raw::c_char; 256usize], } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_1 { pub hardware_exit_reason: __u64, } @@ -6210,7 +6147,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_1() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_2 { pub hardware_entry_failure_reason: __u64, pub cpu: __u32, @@ -6257,7 +6194,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_2() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_3 { pub exception: __u32, pub error_code: __u32, @@ -6302,7 +6239,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_3() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_4 { pub direction: __u8, pub size: __u8, @@ -6380,7 +6317,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_4() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_5 { pub arch: kvm_debug_exit_arch, } @@ -6414,7 +6351,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_5() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_6 { pub phys_addr: __u64, pub data: [__u8; 8usize], @@ -6481,7 +6418,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_6() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_7 { pub nr: __u64, pub args: [__u64; 6usize], @@ -6559,7 +6496,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_7() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_8 { pub rip: __u64, pub is_write: __u32, @@ -6615,7 +6552,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_8() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_9 { pub icptcode: __u8, pub ipa: __u16, @@ -6671,7 +6608,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_9() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_10 { pub trans_exc_code: __u64, pub pgm_code: __u32, @@ -6719,7 +6656,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_10() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_11 { pub dcrn: __u32, pub data: __u32, @@ -6778,7 +6715,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_11() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_12 { pub suberror: __u32, pub ndata: __u32, @@ -6850,7 +6787,7 @@ pub union kvm_run__bindgen_ty_1__bindgen_ty_13__bindgen_ty_1 { pub __bindgen_anon_1: kvm_run__bindgen_ty_1__bindgen_ty_13__bindgen_ty_1__bindgen_ty_1, } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_13__bindgen_ty_1__bindgen_ty_1 { pub insn_size: __u8, pub insn_bytes: [__u8; 15usize], @@ -7001,7 +6938,7 @@ impl ::std::fmt::Debug for kvm_run__bindgen_ty_1__bindgen_ty_13 { } } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_14 { pub gprs: [__u64; 32usize], } @@ -7038,7 +6975,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_14() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_15 { pub nr: __u64, pub ret: __u64, @@ -7097,7 +7034,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_15() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_16 { pub subchannel_id: __u16, pub subchannel_nr: __u16, @@ -7189,7 +7126,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_16() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_17 { pub epr: __u32, } @@ -7354,7 +7291,7 @@ impl ::std::fmt::Debug for kvm_run__bindgen_ty_1__bindgen_ty_18 { } } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_19 { pub addr: __u64, pub ar: __u8, @@ -7446,7 +7383,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_19() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_20 { pub vector: __u8, } @@ -7483,7 +7420,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_20() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_21 { pub esr_iss: __u64, pub fault_ipa: __u64, @@ -7531,7 +7468,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_21() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_22 { pub error: __u8, pub pad: [__u8; 7usize], @@ -7612,7 +7549,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_22() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_23 { pub extension_id: ::std::os::raw::c_ulong, pub function_id: ::std::os::raw::c_ulong, @@ -7682,7 +7619,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_23() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_24 { pub csr_num: ::std::os::raw::c_ulong, pub new_value: ::std::os::raw::c_ulong, @@ -7752,7 +7689,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_24() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_25 { pub flags: __u32, } @@ -8635,7 +8572,7 @@ impl ::std::fmt::Debug for kvm_coalesced_mmio_ring { } } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_translation { pub linear_address: __u64, pub physical_address: __u64, @@ -8737,7 +8674,7 @@ pub union kvm_s390_mem_op__bindgen_ty_1 { pub reserved: [__u8; 32usize], } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_mem_op__bindgen_ty_1__bindgen_ty_1 { pub ar: __u8, pub key: __u8, @@ -8914,7 +8851,7 @@ impl ::std::fmt::Debug for kvm_s390_mem_op { } } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_interrupt { pub irq: __u32, } @@ -9186,7 +9123,7 @@ impl ::std::fmt::Debug for kvm_clear_dirty_log { } } #[repr(C)] -#[derive(Debug, Default, Versionize)] +#[derive(Debug, Default, Serialize, Deserialize)] pub struct kvm_signal_mask { pub len: __u32, pub sigset: __IncompleteArrayField<__u8>, @@ -9227,7 +9164,7 @@ fn bindgen_test_layout_kvm_signal_mask() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_tpr_access_ctl { pub enabled: __u32, pub flags: __u32, @@ -9279,7 +9216,7 @@ fn bindgen_test_layout_kvm_tpr_access_ctl() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_vapic_addr { pub vapic_addr: __u64, } @@ -9309,7 +9246,7 @@ fn bindgen_test_layout_kvm_vapic_addr() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_mp_state { pub mp_state: __u32, } @@ -9339,7 +9276,7 @@ fn bindgen_test_layout_kvm_mp_state() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_psw { pub mask: __u64, pub addr: __u64, @@ -9380,7 +9317,7 @@ fn bindgen_test_layout_kvm_s390_psw() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_interrupt { pub type_: __u32, pub parm: __u32, @@ -9432,7 +9369,7 @@ fn bindgen_test_layout_kvm_s390_interrupt() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_io_info { pub subchannel_id: __u16, pub subchannel_nr: __u16, @@ -9495,7 +9432,7 @@ fn bindgen_test_layout_kvm_s390_io_info() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_ext_info { pub ext_params: __u32, pub pad: __u32, @@ -9547,7 +9484,7 @@ fn bindgen_test_layout_kvm_s390_ext_info() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_pgm_info { pub trans_exc_code: __u64, pub mon_code: __u64, @@ -9709,7 +9646,7 @@ fn bindgen_test_layout_kvm_s390_pgm_info() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_prefix_info { pub address: __u32, } @@ -9739,7 +9676,7 @@ fn bindgen_test_layout_kvm_s390_prefix_info() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_extcall_info { pub code: __u16, } @@ -9770,7 +9707,7 @@ fn bindgen_test_layout_kvm_s390_extcall_info() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_emerg_info { pub code: __u16, } @@ -9800,7 +9737,7 @@ fn bindgen_test_layout_kvm_s390_emerg_info() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_stop_info { pub flags: __u32, } @@ -9830,7 +9767,7 @@ fn bindgen_test_layout_kvm_s390_stop_info() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_mchk_info { pub cr14: __u64, pub mcic: __u64, @@ -10107,7 +10044,7 @@ impl ::std::fmt::Debug for kvm_s390_irq { } } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_irq_state { pub buf: __u64, pub flags: __u32, @@ -10170,7 +10107,7 @@ fn bindgen_test_layout_kvm_s390_irq_state() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_guest_debug { pub control: __u32, pub pad: __u32, @@ -10229,7 +10166,7 @@ pub const kvm_ioeventfd_flag_nr_fast_mmio: _bindgen_ty_1 = 4; pub const kvm_ioeventfd_flag_nr_max: _bindgen_ty_1 = 5; pub type _bindgen_ty_1 = ::std::os::raw::c_uint; #[repr(C)] -#[derive(Debug, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_ioeventfd { pub datamatch: __u64, pub addr: __u64, @@ -10323,7 +10260,7 @@ impl Default for kvm_ioeventfd { } } #[repr(C)] -#[derive(Debug, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_enable_cap { pub cap: __u32, pub flags: __u32, @@ -10395,7 +10332,7 @@ impl Default for kvm_enable_cap { } } #[repr(C)] -#[derive(Debug, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_ppc_pvinfo { pub flags: __u32, pub hcall: [__u32; 4usize], @@ -10456,7 +10393,7 @@ impl Default for kvm_ppc_pvinfo { } } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_ppc_one_page_size { pub page_shift: __u32, pub pte_enc: __u32, @@ -10498,7 +10435,7 @@ fn bindgen_test_layout_kvm_ppc_one_page_size() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_ppc_one_seg_page_size { pub page_shift: __u32, pub slb_enc: __u32, @@ -10551,7 +10488,7 @@ fn bindgen_test_layout_kvm_ppc_one_seg_page_size() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_ppc_smmu_info { pub flags: __u64, pub slb_size: __u32, @@ -10625,7 +10562,7 @@ fn bindgen_test_layout_kvm_ppc_smmu_info() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_ppc_resize_hpt { pub flags: __u64, pub shift: __u32, @@ -10677,7 +10614,7 @@ fn bindgen_test_layout_kvm_ppc_resize_hpt() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_irq_routing_irqchip { pub irqchip: __u32, pub pin: __u32, @@ -10845,7 +10782,7 @@ impl ::std::fmt::Debug for kvm_irq_routing_msi { } } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_irq_routing_s390_adapter { pub ind_addr: __u64, pub summary_addr: __u64, @@ -10920,7 +10857,7 @@ fn bindgen_test_layout_kvm_irq_routing_s390_adapter() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_irq_routing_hv_sint { pub vcpu: __u32, pub sint: __u32, @@ -10962,7 +10899,7 @@ fn bindgen_test_layout_kvm_irq_routing_hv_sint() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_irq_routing_xen_evtchn { pub port: __u32, pub vcpu: __u32, @@ -11280,7 +11217,7 @@ impl ::std::fmt::Debug for kvm_irq_routing { } } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_x86_mce { pub status: __u64, pub addr: __u64, @@ -11376,7 +11313,7 @@ fn bindgen_test_layout_kvm_x86_mce() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_xen_hvm_config { pub flags: __u32, pub msr: __u32, @@ -11472,7 +11409,7 @@ fn bindgen_test_layout_kvm_xen_hvm_config() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_irqfd { pub fd: __u32, pub gsi: __u32, @@ -11546,7 +11483,7 @@ fn bindgen_test_layout_kvm_irqfd() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_clock_data { pub clock: __u64, pub flags: __u32, @@ -11631,7 +11568,7 @@ fn bindgen_test_layout_kvm_clock_data() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_config_tlb { pub params: __u64, pub array: __u64, @@ -11694,7 +11631,7 @@ fn bindgen_test_layout_kvm_config_tlb() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_dirty_tlb { pub bitmap: __u64, pub num_dirty: __u32, @@ -11735,7 +11672,7 @@ fn bindgen_test_layout_kvm_dirty_tlb() { ); } #[repr(C)] -#[derive(Debug, Default, Versionize)] +#[derive(Debug, Default, Serialize, Deserialize)] pub struct kvm_reg_list { pub n: __u64, pub reg: __IncompleteArrayField<__u64>, @@ -11776,7 +11713,7 @@ fn bindgen_test_layout_kvm_reg_list() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_one_reg { pub id: __u64, pub addr: __u64, @@ -11817,7 +11754,7 @@ fn bindgen_test_layout_kvm_one_reg() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_msi { pub address_lo: __u32, pub address_hi: __u32, @@ -11902,7 +11839,7 @@ fn bindgen_test_layout_kvm_msi() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_arm_device_addr { pub id: __u64, pub addr: __u64, @@ -11943,7 +11880,7 @@ fn bindgen_test_layout_kvm_arm_device_addr() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_create_device { pub type_: __u32, pub fd: __u32, @@ -11995,7 +11932,7 @@ fn bindgen_test_layout_kvm_create_device() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_device_attr { pub flags: __u32, pub group: __u32, @@ -12070,7 +12007,7 @@ pub const kvm_device_type_KVM_DEV_TYPE_ARM_PV_TIME: kvm_device_type = 10; pub const kvm_device_type_KVM_DEV_TYPE_MAX: kvm_device_type = 11; pub type kvm_device_type = ::std::os::raw::c_uint; #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_vfio_spapr_tce { pub groupfd: __s32, pub tablefd: __s32, @@ -12111,7 +12048,7 @@ fn bindgen_test_layout_kvm_vfio_spapr_tce() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_ucas_mapping { pub user_addr: __u64, pub vcpu_addr: __u64, @@ -12164,7 +12101,7 @@ fn bindgen_test_layout_kvm_s390_ucas_mapping() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_enc_region { pub addr: __u64, pub size: __u64, @@ -12205,7 +12142,7 @@ fn bindgen_test_layout_kvm_enc_region() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_pv_sec_parm { pub origin: __u64, pub length: __u64, @@ -12246,7 +12183,7 @@ fn bindgen_test_layout_kvm_s390_pv_sec_parm() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_pv_unp { pub addr: __u64, pub size: __u64, @@ -12303,7 +12240,7 @@ pub const pv_cmd_dmp_id_KVM_PV_DUMP_COMPLETE: pv_cmd_dmp_id = 2; pub const pv_cmd_dmp_id_KVM_PV_DUMP_CPU: pv_cmd_dmp_id = 3; pub type pv_cmd_dmp_id = ::std::os::raw::c_uint; #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_pv_dmp { pub subcmd: __u64, pub buff_addr: __u64, @@ -12380,7 +12317,7 @@ pub const pv_cmd_info_id_KVM_PV_INFO_VM: pv_cmd_info_id = 0; pub const pv_cmd_info_id_KVM_PV_INFO_DUMP: pv_cmd_info_id = 1; pub type pv_cmd_info_id = ::std::os::raw::c_uint; #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_pv_info_dump { pub dump_cpu_buffer_len: __u64, pub dump_config_mem_buffer_per_1m: __u64, @@ -12435,7 +12372,7 @@ fn bindgen_test_layout_kvm_s390_pv_info_dump() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_pv_info_vm { pub inst_calls_list: [__u64; 4usize], pub max_cpus: __u64, @@ -12509,7 +12446,7 @@ fn bindgen_test_layout_kvm_s390_pv_info_vm() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_pv_info_header { pub id: __u32, pub len_max: __u32, @@ -12690,7 +12627,7 @@ pub const pv_cmd_id_KVM_PV_ASYNC_CLEANUP_PREPARE: pv_cmd_id = 9; pub const pv_cmd_id_KVM_PV_ASYNC_CLEANUP_PERFORM: pv_cmd_id = 10; pub type pv_cmd_id = ::std::os::raw::c_uint; #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_pv_cmd { pub cmd: __u32, pub rc: __u16, @@ -12793,7 +12730,7 @@ pub union kvm_xen_hvm_attr__bindgen_ty_1 { pub pad: [__u64; 8usize], } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_1 { pub gfn: __u64, } @@ -12845,7 +12782,7 @@ pub union kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 { pub padding: [__u32; 4usize], } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1__bindgen_ty_1 { pub port: __u32, pub vcpu: __u32, @@ -12909,7 +12846,7 @@ fn bindgen_test_layout_kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_ ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1__bindgen_ty_2 { pub port: __u32, pub fd: __s32, @@ -13288,7 +13225,7 @@ pub union kvm_xen_vcpu_attr__bindgen_ty_1 { pub vector: __u8, } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_xen_vcpu_attr__bindgen_ty_1__bindgen_ty_1 { pub state: __u64, pub state_entry_time: __u64, @@ -13380,7 +13317,7 @@ fn bindgen_test_layout_kvm_xen_vcpu_attr__bindgen_ty_1__bindgen_ty_1() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_xen_vcpu_attr__bindgen_ty_1__bindgen_ty_2 { pub port: __u32, pub priority: __u32, @@ -13616,7 +13553,7 @@ pub const sev_cmd_id_KVM_SEV_SEND_CANCEL: sev_cmd_id = 21; pub const sev_cmd_id_KVM_SEV_NR_MAX: sev_cmd_id = 22; pub type sev_cmd_id = ::std::os::raw::c_uint; #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_sev_cmd { pub id: __u32, pub data: __u64, @@ -13679,7 +13616,7 @@ fn bindgen_test_layout_kvm_sev_cmd() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_sev_launch_start { pub handle: __u32, pub policy: __u32, @@ -13764,7 +13701,7 @@ fn bindgen_test_layout_kvm_sev_launch_start() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_sev_launch_update_data { pub uaddr: __u64, pub len: __u32, @@ -13806,7 +13743,7 @@ fn bindgen_test_layout_kvm_sev_launch_update_data() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_sev_launch_secret { pub hdr_uaddr: __u64, pub hdr_len: __u32, @@ -13892,7 +13829,7 @@ fn bindgen_test_layout_kvm_sev_launch_secret() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_sev_launch_measure { pub uaddr: __u64, pub len: __u32, @@ -13934,7 +13871,7 @@ fn bindgen_test_layout_kvm_sev_launch_measure() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_sev_guest_status { pub handle: __u32, pub policy: __u32, @@ -13986,7 +13923,7 @@ fn bindgen_test_layout_kvm_sev_guest_status() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_sev_dbg { pub src_uaddr: __u64, pub dst_uaddr: __u64, @@ -14038,7 +13975,7 @@ fn bindgen_test_layout_kvm_sev_dbg() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_sev_attestation_report { pub mnonce: [__u8; 16usize], pub uaddr: __u64, @@ -14091,7 +14028,7 @@ fn bindgen_test_layout_kvm_sev_attestation_report() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_sev_send_start { pub policy: __u32, pub pdh_cert_uaddr: __u64, @@ -14209,7 +14146,7 @@ fn bindgen_test_layout_kvm_sev_send_start() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_sev_send_update_data { pub hdr_uaddr: __u64, pub hdr_len: __u32, @@ -14295,7 +14232,7 @@ fn bindgen_test_layout_kvm_sev_send_update_data() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_sev_receive_start { pub handle: __u32, pub policy: __u32, @@ -14381,7 +14318,7 @@ fn bindgen_test_layout_kvm_sev_receive_start() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_sev_receive_update_data { pub hdr_uaddr: __u64, pub hdr_len: __u32, @@ -14727,7 +14664,7 @@ impl ::std::fmt::Debug for kvm_assigned_irq { } } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_assigned_msix_nr { pub assigned_dev_id: __u32, pub entry_nr: __u16, @@ -14779,7 +14716,7 @@ fn bindgen_test_layout_kvm_assigned_msix_nr() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_assigned_msix_entry { pub assigned_dev_id: __u32, pub gsi: __u32, @@ -14843,7 +14780,7 @@ fn bindgen_test_layout_kvm_assigned_msix_entry() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_hyperv_eventfd { pub conn_id: __u32, pub fd: __s32, @@ -14906,7 +14843,7 @@ fn bindgen_test_layout_kvm_hyperv_eventfd() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_dirty_gfn { pub flags: __u32, pub slot: __u32, @@ -14959,7 +14896,7 @@ fn bindgen_test_layout_kvm_dirty_gfn() { } #[doc = " struct kvm_stats_header - Header of per vm/vcpu binary statistics data.\n @flags: Some extra information for header, always 0 for now.\n @name_size: The size in bytes of the memory which contains statistics\n name string including trailing '\\0'. The memory is allocated\n at the send of statistics descriptor.\n @num_desc: The number of statistics the vm or vcpu has.\n @id_offset: The offset of the vm/vcpu stats' id string in the file pointed\n by vm/vcpu stats fd.\n @desc_offset: The offset of the vm/vcpu stats' descriptor block in the file\n pointd by vm/vcpu stats fd.\n @data_offset: The offset of the vm/vcpu stats' data block in the file\n pointed by vm/vcpu stats fd.\n\n This is the header userspace needs to read from stats fd before any other\n readings. It is used by userspace to discover all the information about the\n vm/vcpu's binary statistics.\n Userspace reads this header from the start of the vm/vcpu's stats fd."] #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_stats_header { pub flags: __u32, pub name_size: __u32, @@ -15045,7 +14982,7 @@ fn bindgen_test_layout_kvm_stats_header() { } #[doc = " struct kvm_stats_desc - Descriptor of a KVM statistics.\n @flags: Annotations of the stats, like type, unit, etc.\n @exponent: Used together with @flags to determine the unit.\n @size: The number of data items for this stats.\n Every data item is of type __u64.\n @offset: The offset of the stats to the start of stat structure in\n structure kvm or kvm_vcpu.\n @bucket_size: A parameter value used for histogram stats. It is only used\n\t\tfor linear histogram stats, specifying the size of the bucket;\n @name: The name string for the stats. Its size is indicated by the\n &kvm_stats_header->name_size."] #[repr(C)] -#[derive(Debug, Default, Versionize)] +#[derive(Debug, Default, Serialize, Deserialize)] pub struct kvm_stats_desc { pub flags: __u32, pub exponent: __s16, @@ -15144,7 +15081,7 @@ pub union kvm_s390_zpci_op__bindgen_ty_1 { pub reserved: [__u64; 8usize], } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Versionize)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_s390_zpci_op__bindgen_ty_1__bindgen_ty_1 { pub ibv: __u64, pub sb: __u64, From e1ff3e7419057bb44d9e80fcf7d5d766392f5dfa Mon Sep 17 00:00:00 2001 From: Babis Chalios Date: Fri, 10 Nov 2023 09:25:23 +0000 Subject: [PATCH 2/7] test: exclude bindings.rs from coverage bindgen auto-generates tests but doesn't put them into #[cfg(test)] modules, and since rustfmt formats assertions across multiple lines, llvm-cov complains that the negative branch of the assertion is not covered. Co-authored-by: Patrick Roy Signed-off-by: Babis Chalios --- coverage_config_aarch64.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/coverage_config_aarch64.json b/coverage_config_aarch64.json index 54fd8ea..a5595be 100644 --- a/coverage_config_aarch64.json +++ b/coverage_config_aarch64.json @@ -1,5 +1,5 @@ { - "coverage_score": 60.9, - "exclude_path": "", + "coverage_score": 100.0, + "exclude_path": ".*bindings\\.rs", "crate_features": "fam-wrappers" } From 0922d76986e6579de36474c336c4c016decbd79b Mon Sep 17 00:00:00 2001 From: Babis Chalios Date: Tue, 9 Jan 2024 13:36:55 +0000 Subject: [PATCH 3/7] TBS: patching new types Signed-off-by: Babis Chalios --- src/arm64/bindings.rs | 18 +++++++++--------- src/x86_64/bindings.rs | 8 +++++++- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/arm64/bindings.rs b/src/arm64/bindings.rs index 9e2323e..4e7267b 100644 --- a/src/arm64/bindings.rs +++ b/src/arm64/bindings.rs @@ -2400,14 +2400,14 @@ impl ::std::fmt::Debug for kvm_irq_level { } } #[repr(C)] -#[derive(Copy, Clone)] +#[derive(Copy, Clone, Serialize, Deserialize)] pub struct kvm_irqchip { pub chip_id: __u32, pub pad: __u32, pub chip: kvm_irqchip__bindgen_ty_1, } #[repr(C)] -#[derive(Copy, Clone)] +#[derive(Copy, Clone, Serialize, Deserialize)] pub union kvm_irqchip__bindgen_ty_1 { pub dummy: [::std::os::raw::c_char; 512usize], } @@ -2631,7 +2631,7 @@ fn bindgen_test_layout_kvm_s390_skeys() { } #[doc = " kvm_s390_cmma_log - Used for CMMA migration.\n\n Used both for input and output.\n\n @start_gfn: Guest page number to start from.\n @count: Size of the result buffer.\n @flags: Control operation mode via KVM_S390_CMMA_* flags\n @remaining: Used with KVM_S390_GET_CMMA_BITS. Indicates how many dirty\n pages are still remaining.\n @mask: Used with KVM_S390_SET_CMMA_BITS. Bitmap of bits to actually set\n in the PGSTE.\n @values: Pointer to the values buffer.\n\n Used in KVM_S390_{G,S}ET_CMMA_BITS ioctls."] #[repr(C)] -#[derive(Copy, Clone)] +#[derive(Copy, Clone, Serialize, Deserialize)] pub struct kvm_s390_cmma_log { pub start_gfn: __u64, pub count: __u32, @@ -2640,7 +2640,7 @@ pub struct kvm_s390_cmma_log { pub values: __u64, } #[repr(C)] -#[derive(Copy, Clone)] +#[derive(Copy, Clone, Serialize, Deserialize)] pub union kvm_s390_cmma_log__bindgen_ty_1 { pub remaining: __u64, pub mask: __u64, @@ -2765,14 +2765,14 @@ impl ::std::fmt::Debug for kvm_s390_cmma_log { } } #[repr(C)] -#[derive(Copy, Clone)] +#[derive(Copy, Clone, Serialize, Deserialize)] pub struct kvm_hyperv_exit { pub type_: __u32, pub pad1: __u32, pub u: kvm_hyperv_exit__bindgen_ty_1, } #[repr(C)] -#[derive(Copy, Clone)] +#[derive(Copy, Clone, Serialize, Deserialize)] pub union kvm_hyperv_exit__bindgen_ty_1 { pub synic: kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1, pub hcall: kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_2, @@ -3145,13 +3145,13 @@ impl ::std::fmt::Debug for kvm_hyperv_exit { } } #[repr(C)] -#[derive(Copy, Clone)] +#[derive(Copy, Clone, Serialize, Deserialize)] pub struct kvm_xen_exit { pub type_: __u32, pub u: kvm_xen_exit__bindgen_ty_1, } #[repr(C)] -#[derive(Copy, Clone)] +#[derive(Copy, Clone, Serialize, Deserialize)] pub union kvm_xen_exit__bindgen_ty_1 { pub hcall: kvm_xen_exit__bindgen_ty_1__bindgen_ty_1, } @@ -3330,7 +3330,7 @@ impl ::std::fmt::Debug for kvm_xen_exit { } } #[repr(C)] -#[derive(Copy, Clone)] +#[derive(Copy, Clone, Serialize, Deserialize)] pub struct kvm_run { pub request_interrupt_window: __u8, pub immediate_exit: __u8, diff --git a/src/x86_64/bindings.rs b/src/x86_64/bindings.rs index 211f6f1..1a61bf6 100644 --- a/src/x86_64/bindings.rs +++ b/src/x86_64/bindings.rs @@ -3966,7 +3966,7 @@ fn bindgen_test_layout_kvm_debugregs() { ); } #[repr(C)] -#[derive(Debug, Copy, PartialEq, Serialize, Deserialize)] +#[derive(Debug, Serialize, Deserialize)] pub struct kvm_xsave { #[serde(with = "BigArray")] pub region: [__u32; 1024usize], @@ -4194,7 +4194,9 @@ fn bindgen_test_layout_kvm_sync_regs() { #[repr(C)] #[derive(Debug, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_vmx_nested_state_data { + #[serde(with = "BigArray")] pub vmcs12: [__u8; 4096usize], + #[serde(with = "BigArray")] pub shadow_vmcs12: [__u8; 4096usize], } #[test] @@ -4368,6 +4370,7 @@ fn bindgen_test_layout_kvm_vmx_nested_state_hdr() { #[repr(C)] #[derive(Debug, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_svm_nested_state_data { + #[serde(with = "BigArray")] pub vmcb12: [__u8; 4096usize], } #[test] @@ -10173,6 +10176,7 @@ pub struct kvm_ioeventfd { pub len: __u32, pub fd: __s32, pub flags: __u32, + #[serde(with = "BigArray")] pub pad: [__u8; 36usize], } #[test] @@ -10265,6 +10269,7 @@ pub struct kvm_enable_cap { pub cap: __u32, pub flags: __u32, pub args: [__u64; 4usize], + #[serde(with = "BigArray")] pub pad: [__u8; 64usize], } #[test] @@ -10336,6 +10341,7 @@ impl Default for kvm_enable_cap { pub struct kvm_ppc_pvinfo { pub flags: __u32, pub hcall: [__u32; 4usize], + #[serde(with = "BigArray")] pub pad: [__u8; 108usize], } #[test] From e81c0d011091291645f7a7bc0ddbcc968cd6b9f5 Mon Sep 17 00:00:00 2001 From: Babis Chalios Date: Tue, 9 Jan 2024 14:21:22 +0000 Subject: [PATCH 4/7] TBS: fixex arm64 Signed-off-by: Babis Chalios --- Cargo.toml | 1 + src/arm64/bindings.rs | 18 +++++++++--------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 631b642..0cfc530 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,6 +7,7 @@ repository = "https://github.com/rust-vmm/kvm-bindings" readme = "README.md" keywords = ["kvm"] license = "Apache-2.0" +edition = "2021" [package.metadata.docs.rs] all-features = true diff --git a/src/arm64/bindings.rs b/src/arm64/bindings.rs index 4e7267b..b85b6ac 100644 --- a/src/arm64/bindings.rs +++ b/src/arm64/bindings.rs @@ -1857,7 +1857,7 @@ fn bindgen_test_layout_kvm_pmu_event_filter() { ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_vcpu_events { pub exception: kvm_vcpu_events__bindgen_ty_1, pub reserved: [__u32; 12usize], @@ -1973,7 +1973,7 @@ fn bindgen_test_layout_kvm_vcpu_events() { ); } #[repr(C)] -#[derive(Debug, Copy, Clone, PartialEq, Serialize, Deserialize)] +#[derive(Debug, Copy, Clone, PartialEq)] pub struct kvm_arm_copy_mte_tags { pub guest_ipa: __u64, pub length: __u64, @@ -2407,7 +2407,7 @@ pub struct kvm_irqchip { pub chip: kvm_irqchip__bindgen_ty_1, } #[repr(C)] -#[derive(Copy, Clone, Serialize, Deserialize)] +#[derive(Copy, Clone)] pub union kvm_irqchip__bindgen_ty_1 { pub dummy: [::std::os::raw::c_char; 512usize], } @@ -2640,7 +2640,7 @@ pub struct kvm_s390_cmma_log { pub values: __u64, } #[repr(C)] -#[derive(Copy, Clone, Serialize, Deserialize)] +#[derive(Copy, Clone)] pub union kvm_s390_cmma_log__bindgen_ty_1 { pub remaining: __u64, pub mask: __u64, @@ -2772,14 +2772,14 @@ pub struct kvm_hyperv_exit { pub u: kvm_hyperv_exit__bindgen_ty_1, } #[repr(C)] -#[derive(Copy, Clone, Serialize, Deserialize)] +#[derive(Copy, Clone)] pub union kvm_hyperv_exit__bindgen_ty_1 { pub synic: kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1, pub hcall: kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_2, pub syndbg: kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3, } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1 { pub msr: __u32, pub pad2: __u32, @@ -3151,12 +3151,12 @@ pub struct kvm_xen_exit { pub u: kvm_xen_exit__bindgen_ty_1, } #[repr(C)] -#[derive(Copy, Clone, Serialize, Deserialize)] +#[derive(Copy, Clone)] pub union kvm_xen_exit__bindgen_ty_1 { pub hcall: kvm_xen_exit__bindgen_ty_1__bindgen_ty_1, } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_xen_exit__bindgen_ty_1__bindgen_ty_1 { pub longmode: __u32, pub cpl: __u32, @@ -3330,7 +3330,7 @@ impl ::std::fmt::Debug for kvm_xen_exit { } } #[repr(C)] -#[derive(Copy, Clone, Serialize, Deserialize)] +#[derive(Copy, Clone)] pub struct kvm_run { pub request_interrupt_window: __u8, pub immediate_exit: __u8, From 1f6978288d9cded86312846517b917e70a6526e3 Mon Sep 17 00:00:00 2001 From: Babis Chalios Date: Tue, 9 Jan 2024 14:29:12 +0000 Subject: [PATCH 5/7] TBS more arm64 fixes Signed-off-by: Babis Chalios --- src/arm64/bindings.rs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/arm64/bindings.rs b/src/arm64/bindings.rs index b85b6ac..75a56ad 100644 --- a/src/arm64/bindings.rs +++ b/src/arm64/bindings.rs @@ -2400,7 +2400,7 @@ impl ::std::fmt::Debug for kvm_irq_level { } } #[repr(C)] -#[derive(Copy, Clone, Serialize, Deserialize)] +#[derive(Copy, Clone)] pub struct kvm_irqchip { pub chip_id: __u32, pub pad: __u32, @@ -2631,7 +2631,7 @@ fn bindgen_test_layout_kvm_s390_skeys() { } #[doc = " kvm_s390_cmma_log - Used for CMMA migration.\n\n Used both for input and output.\n\n @start_gfn: Guest page number to start from.\n @count: Size of the result buffer.\n @flags: Control operation mode via KVM_S390_CMMA_* flags\n @remaining: Used with KVM_S390_GET_CMMA_BITS. Indicates how many dirty\n pages are still remaining.\n @mask: Used with KVM_S390_SET_CMMA_BITS. Bitmap of bits to actually set\n in the PGSTE.\n @values: Pointer to the values buffer.\n\n Used in KVM_S390_{G,S}ET_CMMA_BITS ioctls."] #[repr(C)] -#[derive(Copy, Clone, Serialize, Deserialize)] +#[derive(Copy, Clone)] pub struct kvm_s390_cmma_log { pub start_gfn: __u64, pub count: __u32, @@ -2765,7 +2765,7 @@ impl ::std::fmt::Debug for kvm_s390_cmma_log { } } #[repr(C)] -#[derive(Copy, Clone, Serialize, Deserialize)] +#[derive(Copy, Clone)] pub struct kvm_hyperv_exit { pub type_: __u32, pub pad1: __u32, @@ -2779,7 +2779,7 @@ pub union kvm_hyperv_exit__bindgen_ty_1 { pub syndbg: kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3, } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] +#[derive(Debug, Default, Copy, Clone, PartialEq, Serialize, Deserialize)] pub struct kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1 { pub msr: __u32, pub pad2: __u32, @@ -3145,7 +3145,7 @@ impl ::std::fmt::Debug for kvm_hyperv_exit { } } #[repr(C)] -#[derive(Copy, Clone, Serialize, Deserialize)] +#[derive(Copy, Clone)] pub struct kvm_xen_exit { pub type_: __u32, pub u: kvm_xen_exit__bindgen_ty_1, @@ -4041,7 +4041,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_12() { ); } #[repr(C)] -#[derive(Copy, Clone, Serialize, Deserialize)] +#[derive(Copy, Clone)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_13 { pub suberror: __u32, pub ndata: __u32, @@ -4430,7 +4430,7 @@ fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_17() { ); } #[repr(C)] -#[derive(Copy, Clone, Serialize, Deserialize)] +#[derive(Copy, Clone)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_18 { pub type_: __u32, pub ndata: __u32, From 2b64eaa1d5c1a37a796d010d0e7895f4d2f19516 Mon Sep 17 00:00:00 2001 From: Babis Chalios Date: Tue, 9 Jan 2024 14:37:16 +0000 Subject: [PATCH 6/7] TBS more arm64 fixes Signed-off-by: Babis Chalios --- src/arm64/fam_wrappers.rs | 2 +- src/x86_64/fam_wrappers.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/arm64/fam_wrappers.rs b/src/arm64/fam_wrappers.rs index 6a26609..e52568b 100644 --- a/src/arm64/fam_wrappers.rs +++ b/src/arm64/fam_wrappers.rs @@ -3,7 +3,7 @@ use vmm_sys_util::fam::{FamStruct, FamStructWrapper}; -use arm64::bindings::*; +use crate::arm64::bindings::*; // There is no constant in the kernel as far as the maximum number // of registers on arm, but KVM_GET_REG_LIST usually returns around 450. diff --git a/src/x86_64/fam_wrappers.rs b/src/x86_64/fam_wrappers.rs index 032879d..9ee9619 100644 --- a/src/x86_64/fam_wrappers.rs +++ b/src/x86_64/fam_wrappers.rs @@ -3,7 +3,7 @@ use vmm_sys_util::fam::{FamStruct, FamStructWrapper}; -use x86_64::bindings::*; +use crate::x86_64::bindings::*; /// Maximum number of CPUID entries that can be returned by a call to KVM ioctls. /// From adf8ee49ef76b2d584f39854239903aa769062f8 Mon Sep 17 00:00:00 2001 From: Babis Chalios Date: Tue, 9 Jan 2024 14:48:39 +0000 Subject: [PATCH 7/7] TBS: fix x86 tests Signed-off-by: Babis Chalios --- src/x86_64/fam_wrappers.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/x86_64/fam_wrappers.rs b/src/x86_64/fam_wrappers.rs index 9ee9619..ab94433 100644 --- a/src/x86_64/fam_wrappers.rs +++ b/src/x86_64/fam_wrappers.rs @@ -97,7 +97,7 @@ pub type MsrList = FamStructWrapper; #[cfg(test)] mod tests { use super::{CpuId, MsrList, Msrs}; - use x86_64::bindings::kvm_cpuid_entry2; + use crate::x86_64::bindings::kvm_cpuid_entry2; #[test] fn test_cpuid_eq() {