diff --git a/Cargo.lock b/Cargo.lock
index 859151deee9..4543674013e 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -767,6 +767,15 @@ version = "2.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167"
+[[package]]
+name = "memfd"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2cffa4ad52c6f791f4f8b15f0c05f9824b2ced1160e88cc393d64fff9a8ac64"
+dependencies = [
+ "rustix 0.38.17",
+]
+
[[package]]
name = "micro_http"
version = "0.1.0"
@@ -1412,6 +1421,7 @@ dependencies = [
"libc",
"linux-loader",
"log",
+ "memfd",
"micro_http",
"proptest",
"seccompiler",
@@ -1427,6 +1437,7 @@ dependencies = [
"versionize_derive",
"vm-allocator",
"vm-fdt",
+ "vm-memory",
"vm-superio",
]
diff --git a/src/utils/src/lib.rs b/src/utils/src/lib.rs
index cf8cd4fdb54..2747cd32fef 100644
--- a/src/utils/src/lib.rs
+++ b/src/utils/src/lib.rs
@@ -19,7 +19,6 @@ pub mod signal;
pub mod sm;
pub mod time;
pub mod validators;
-pub mod vm_memory;
use std::num::Wrapping;
use std::result::Result;
diff --git a/src/utils/src/vm_memory.rs b/src/utils/src/vm_memory.rs
deleted file mode 100644
index e02c5084764..00000000000
--- a/src/utils/src/vm_memory.rs
+++ /dev/null
@@ -1,862 +0,0 @@
-// Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-// SPDX-License-Identifier: Apache-2.0
-//
-// Portions Copyright 2017 The Chromium OS Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the THIRD-PARTY file.
-
-use std::fmt::Debug;
-use std::io::{Error as IoError, ErrorKind};
-use std::os::unix::io::AsRawFd;
-
-pub use vm_memory::bitmap::{AtomicBitmap, Bitmap, BitmapSlice, BS};
-use vm_memory::mmap::{check_file_offset, NewBitmap};
-pub use vm_memory::mmap::{MmapRegionBuilder, MmapRegionError};
-pub use vm_memory::{
- address, Address, ByteValued, Bytes, Error, FileOffset, GuestAddress, GuestMemory,
- GuestMemoryError, GuestMemoryRegion, GuestUsize, MemoryRegionAddress, MmapRegion,
- VolatileMemory, VolatileMemoryError, VolatileSlice,
-};
-
-use crate::u64_to_usize;
-
-pub type GuestMemoryMmap = vm_memory::GuestMemoryMmap