diff --git a/Cargo.lock b/Cargo.lock
index ec19e376921..523beae14c0 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -772,19 +772,20 @@ dependencies = [
[[package]]
name = "kvm-bindings"
-version = "0.7.0"
-source = "git+https://github.com/firecracker-microvm/kvm-bindings?tag=v0.7.0-2#60cc04e2658646516f4e763eca77fbfa1cf5ec1f"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a82e7e8725a39a0015e511a46cc1f7d90cecc180db1610c4d0d4339a9e48bd21"
dependencies = [
"serde",
- "serde-big-array",
"vmm-sys-util",
+ "zerocopy",
]
[[package]]
name = "kvm-ioctls"
-version = "0.16.0"
+version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9002dff009755414f22b962ec6ae6980b07d6d8b06e5297b1062019d72bd6a8c"
+checksum = "bedae2ca4a531bebe311abaf9691f5cc14eaa21475243caa2e39c43bb872947d"
dependencies = [
"bitflags 2.5.0",
"kvm-bindings",
@@ -1184,15 +1185,6 @@ dependencies = [
"serde_derive",
]
-[[package]]
-name = "serde-big-array"
-version = "0.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "11fc7cc2c76d73e0f27ee52abbd64eec84d46f370c88371120433196934e4b7f"
-dependencies = [
- "serde",
-]
-
[[package]]
name = "serde_derive"
version = "1.0.198"
diff --git a/Cargo.toml b/Cargo.toml
index 0ac71e19e0c..bc29988d5a3 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -28,6 +28,3 @@ panic = "abort"
[profile.release]
panic = "abort"
lto = true
-
-[patch.crates-io]
-kvm-bindings = { git = "https://github.com/firecracker-microvm/kvm-bindings", tag = "v0.7.0-2", features = ["fam-wrappers"] }
diff --git a/src/cpu-template-helper/Cargo.toml b/src/cpu-template-helper/Cargo.toml
index 619573dfde2..2c5b59afb0c 100644
--- a/src/cpu-template-helper/Cargo.toml
+++ b/src/cpu-template-helper/Cargo.toml
@@ -19,7 +19,7 @@ serde_json = "1.0.116"
thiserror = "1.0.59"
vmm = { path = "../vmm" }
-vmm-sys-util = "0.12.1"
+vmm-sys-util = { version = "0.12.1", features = ["with-serde"] }
[features]
tracing = ["log-instrument", "vmm/tracing"]
diff --git a/src/utils/Cargo.toml b/src/utils/Cargo.toml
index 6c7e7532071..992b068febe 100644
--- a/src/utils/Cargo.toml
+++ b/src/utils/Cargo.toml
@@ -16,7 +16,7 @@ log-instrument = { path = "../log-instrument", optional = true }
serde = { version = "1.0.198", features = ["derive"] }
thiserror = "1.0.59"
vm-memory = { version = "0.14.1", features = ["backend-mmap", "backend-bitmap"] }
-vmm-sys-util = "0.12.1"
+vmm-sys-util = { version = "0.12.1", features = ["with-serde"] }
[dev-dependencies]
serde_json = "1.0.116"
diff --git a/src/vmm/Cargo.toml b/src/vmm/Cargo.toml
index 246a4c518b0..46f4ec9533d 100644
--- a/src/vmm/Cargo.toml
+++ b/src/vmm/Cargo.toml
@@ -19,8 +19,8 @@ crc64 = "2.0.0"
derive_more = { version = "0.99.17", default-features = false, features = ["from", "display"] }
displaydoc = "0.2.4"
event-manager = "0.4.0"
-kvm-bindings = { version = "0.7.0", features = ["fam-wrappers"] }
-kvm-ioctls = "0.16.0"
+kvm-bindings = { version = "0.8.0", features = ["fam-wrappers", "serde"] }
+kvm-ioctls = "0.17.0"
lazy_static = "1.4.0"
libc = "0.2.117"
linux-loader = "0.11.0"
diff --git a/src/vmm/src/vstate/vcpu/mod.rs b/src/vmm/src/vstate/vcpu/mod.rs
index 231234ffe60..2ecb8db6521 100644
--- a/src/vmm/src/vstate/vcpu/mod.rs
+++ b/src/vmm/src/vstate/vcpu/mod.rs
@@ -74,7 +74,7 @@ pub struct VcpuConfig {
}
// Using this for easier explicit type-casting to help IDEs interpret the code.
-type VcpuCell = Cell