From a8a096b20c2032a66e663e01795208593a912f06 Mon Sep 17 00:00:00 2001
From: Ruoqing He <heruoqing@iscas.ac.cn>
Date: Thu, 13 Feb 2025 14:48:43 +0800
Subject: [PATCH] dragonball: Centralize RustVMM crates

Centralize all RustVMM crates to workspace.dependencies to prevent
having multiple versions of each RustVMM crate, which is error-prone and
inconsistent. With this setup, updates on RustVMM crates would be much
easier.

Signed-off-by: Ruoqing He <heruoqing@iscas.ac.cn>
---
 src/dragonball/Cargo.lock                    | 38 ++++++++------------
 src/dragonball/Cargo.toml                    | 34 +++++++++++++-----
 src/dragonball/dbs_acpi/Cargo.toml           |  2 +-
 src/dragonball/dbs_address_space/Cargo.toml  |  4 +--
 src/dragonball/dbs_arch/Cargo.toml           | 10 +++---
 src/dragonball/dbs_boot/Cargo.toml           | 10 +++---
 src/dragonball/dbs_interrupt/Cargo.toml      |  6 ++--
 src/dragonball/dbs_legacy_devices/Cargo.toml |  4 +--
 src/dragonball/dbs_pci/Cargo.toml            | 12 +++----
 src/dragonball/dbs_tdx/Cargo.toml            |  4 +--
 src/dragonball/dbs_utils/Cargo.toml          |  4 +--
 src/dragonball/dbs_virtio_devices/Cargo.toml | 14 ++++----
 12 files changed, 74 insertions(+), 68 deletions(-)

diff --git a/src/dragonball/Cargo.lock b/src/dragonball/Cargo.lock
index f94fe23a02..0e77680243 100644
--- a/src/dragonball/Cargo.lock
+++ b/src/dragonball/Cargo.lock
@@ -269,7 +269,7 @@ dependencies = [
 name = "dbs-acpi"
 version = "0.1.0"
 dependencies = [
- "vm-memory 0.9.0",
+ "vm-memory",
 ]
 
 [[package]]
@@ -281,7 +281,7 @@ dependencies = [
  "libc",
  "nix 0.23.2",
  "thiserror",
- "vm-memory 0.10.0",
+ "vm-memory",
  "vmm-sys-util",
 ]
 
@@ -301,7 +301,7 @@ dependencies = [
  "libc",
  "memoffset",
  "thiserror",
- "vm-memory 0.10.0",
+ "vm-memory",
  "vmm-sys-util",
 ]
 
@@ -318,7 +318,7 @@ dependencies = [
  "libc",
  "thiserror",
  "vm-fdt",
- "vm-memory 0.10.0",
+ "vm-memory",
 ]
 
 [[package]]
@@ -371,7 +371,7 @@ dependencies = [
  "thiserror",
  "vfio-bindings",
  "vfio-ioctls",
- "vm-memory 0.10.0",
+ "vm-memory",
 ]
 
 [[package]]
@@ -443,7 +443,7 @@ dependencies = [
  "vhost",
  "virtio-bindings",
  "virtio-queue",
- "vm-memory 0.10.0",
+ "vm-memory",
  "vmm-sys-util",
 ]
 
@@ -555,7 +555,7 @@ dependencies = [
  "vfio-bindings",
  "vfio-ioctls",
  "virtio-queue",
- "vm-memory 0.10.0",
+ "vm-memory",
  "vmm-sys-util",
 ]
 
@@ -684,7 +684,7 @@ dependencies = [
  "mio",
  "nix 0.24.3",
  "virtio-queue",
- "vm-memory 0.10.0",
+ "vm-memory",
  "vmm-sys-util",
 ]
 
@@ -1034,7 +1034,7 @@ version = "0.8.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b9259ddbfbb52cc918f6bbc60390004ddd0228cf1d85f402009ff2b3d95de83f"
 dependencies = [
- "vm-memory 0.10.0",
+ "vm-memory",
 ]
 
 [[package]]
@@ -1242,7 +1242,7 @@ dependencies = [
  "nydus-utils",
  "serde",
  "serde_json",
- "vm-memory 0.10.0",
+ "vm-memory",
 ]
 
 [[package]]
@@ -1271,7 +1271,7 @@ dependencies = [
  "tar",
  "tokio",
  "url",
- "vm-memory 0.10.0",
+ "vm-memory",
 ]
 
 [[package]]
@@ -2168,7 +2168,7 @@ dependencies = [
  "log",
  "thiserror",
  "vfio-bindings",
- "vm-memory 0.10.0",
+ "vm-memory",
  "vmm-sys-util",
 ]
 
@@ -2180,7 +2180,7 @@ checksum = "a6769e8dbf5276b4376439fbf36bb880d203bf614bf7ef444198edc24b5a9f35"
 dependencies = [
  "bitflags 1.3.2",
  "libc",
- "vm-memory 0.10.0",
+ "vm-memory",
  "vmm-sys-util",
 ]
 
@@ -2198,7 +2198,7 @@ checksum = "3ba81e2bcc21c0d2fc5e6683e79367e26ad219197423a498df801d79d5ba77bd"
 dependencies = [
  "log",
  "virtio-bindings",
- "vm-memory 0.10.0",
+ "vm-memory",
  "vmm-sys-util",
 ]
 
@@ -2208,16 +2208,6 @@ version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f43fb5a6bd1a7d423ad72802801036719b7546cf847a103f8fe4575f5b0d45a6"
 
-[[package]]
-name = "vm-memory"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "583f213899e8a5eea23d9c507252d4bed5bc88f0ecbe0783262f80034630744b"
-dependencies = [
- "libc",
- "winapi",
-]
-
 [[package]]
 name = "vm-memory"
 version = "0.10.0"
diff --git a/src/dragonball/Cargo.toml b/src/dragonball/Cargo.toml
index d9aca02ac4..fb15af4361 100644
--- a/src/dragonball/Cargo.toml
+++ b/src/dragonball/Cargo.toml
@@ -27,6 +27,22 @@ members = [
 ]
 resolver = "2"
 
+# Rust-VMM crates
+[workspace.dependencies]
+event-manager = "0.2.1"
+kvm-bindings = "0.6.0"
+kvm-ioctls = "0.12.0"
+linux-loader = "0.8.0"
+seccompiler = "0.2.0"
+vfio-bindings = "0.3.0"
+vfio-ioctls = "0.1.0"
+virtio-bindings = "0.1.0"
+virtio-queue = "0.7.0"
+vm-fdt = "0.2.0"
+vm-memory = "0.10.0"
+vm-superio = "0.5.0"
+vmm-sys-util = "0.11.0"
+
 [dependencies]
 anyhow = "1.0.32"
 arc-swap = "1.5.0"
@@ -45,16 +61,16 @@ dbs-virtio-devices = { path = "dbs_virtio_devices", optional = true, features =
 ] }
 dbs-pci = { path = "dbs_pci", optional = true }
 derivative = "2.2.0"
-kvm-bindings = "0.6.0"
-kvm-ioctls = "0.12.0"
+kvm-bindings = { workspace = true }
+kvm-ioctls = { workspace = true }
 lazy_static = "1.2"
 libc = "0.2.39"
-linux-loader = "0.8.0"
+linux-loader = {workspace = true}
 log = "0.4.14"
 nix = "0.24.2"
 procfs = "0.12.0"
 prometheus = { version = "0.13.0", features = ["process"] }
-seccompiler = "0.2.0"
+seccompiler = {workspace = true}
 serde = "1.0.27"
 serde_derive = "1.0.27"
 serde_json = "1.0.9"
@@ -62,13 +78,13 @@ slog = "2.5.2"
 slog-scope = "4.4.0"
 thiserror = "1"
 tracing = "0.1.37"
-vmm-sys-util = "0.11.0"
-virtio-queue = { version = "0.7.0", optional = true }
-vm-memory = { version = "0.10.0", features = ["backend-mmap"] }
+vmm-sys-util = {workspace = true}
+virtio-queue = { workspace = true, optional = true }
+vm-memory = { workspace = true, features = ["backend-mmap"] }
 crossbeam-channel = "0.5.6"
 fuse-backend-rs = "0.10.5"
-vfio-bindings = { version = "0.3.0", optional = true }
-vfio-ioctls = { version = "0.1.0", optional = true }
+vfio-bindings = { workspace = true, optional = true }
+vfio-ioctls = { workspace = true, optional = true }
 
 [dev-dependencies]
 slog-async = "2.7.0"
diff --git a/src/dragonball/dbs_acpi/Cargo.toml b/src/dragonball/dbs_acpi/Cargo.toml
index df5e7867a6..7551f36997 100644
--- a/src/dragonball/dbs_acpi/Cargo.toml
+++ b/src/dragonball/dbs_acpi/Cargo.toml
@@ -11,4 +11,4 @@ keywords = ["dragonball", "acpi", "vmm", "secure-sandbox"]
 readme = "README.md"
 
 [dependencies]
-vm-memory = "0.9.0"
\ No newline at end of file
+vm-memory = {workspace = true}
\ No newline at end of file
diff --git a/src/dragonball/dbs_address_space/Cargo.toml b/src/dragonball/dbs_address_space/Cargo.toml
index 2ebd84fe6d..8939d1f064 100644
--- a/src/dragonball/dbs_address_space/Cargo.toml
+++ b/src/dragonball/dbs_address_space/Cargo.toml
@@ -16,5 +16,5 @@ libc = "0.2.39"
 nix = "0.23.1"
 lazy_static = "1"
 thiserror = "1"
-vmm-sys-util = "0.11.0"
-vm-memory = { version = "0.10", features = ["backend-mmap", "backend-atomic"] }
+vmm-sys-util = {workspace = true}
+vm-memory = { workspace = true, features = ["backend-mmap", "backend-atomic"] }
diff --git a/src/dragonball/dbs_arch/Cargo.toml b/src/dragonball/dbs_arch/Cargo.toml
index 79b2957fc6..28f4a8b581 100644
--- a/src/dragonball/dbs_arch/Cargo.toml
+++ b/src/dragonball/dbs_arch/Cargo.toml
@@ -12,15 +12,15 @@ readme = "README.md"
 
 [dependencies]
 memoffset = "0.6"
-kvm-bindings = { version = "0.6.0", features = ["fam-wrappers"] }
-kvm-ioctls = "0.12.0"
+kvm-bindings = { workspace = true, features = ["fam-wrappers"] }
+kvm-ioctls = {workspace = true}
 thiserror = "1"
-vm-memory = { version = "0.10" }
-vmm-sys-util = "0.11.0"
+vm-memory = { workspace = true }
+vmm-sys-util = {workspace = true}
 libc = ">=0.2.39"
 
 [dev-dependencies]
-vm-memory = { version = "0.10", features = ["backend-mmap"] }
+vm-memory = { workspace = true, features = ["backend-mmap"] }
 
 [package.metadata.docs.rs]
 all-features = true
diff --git a/src/dragonball/dbs_boot/Cargo.toml b/src/dragonball/dbs_boot/Cargo.toml
index 1ecac64210..8320e693ba 100644
--- a/src/dragonball/dbs_boot/Cargo.toml
+++ b/src/dragonball/dbs_boot/Cargo.toml
@@ -12,15 +12,15 @@ readme = "README.md"
 
 [dependencies]
 dbs-arch = { path = "../dbs_arch" }
-kvm-bindings = { version = "0.6.0", features = ["fam-wrappers"] }
-kvm-ioctls = "0.12.0"
+kvm-bindings = { workspace = true, features = ["fam-wrappers"] }
+kvm-ioctls = {workspace = true}
 lazy_static = "1"
 libc = "0.2.39"
 thiserror = "1"
-vm-memory = "0.10.0"
-vm-fdt = "0.2.0"
+vm-memory = {workspace = true}
+vm-fdt = {workspace= true}
 
 [dev-dependencies]
-vm-memory = { version = "0.10.0", features = ["backend-mmap"] }
+vm-memory = { workspace = true, features = ["backend-mmap"] }
 device_tree = ">=1.1.0"
 dbs-device = { path = "../dbs_device" }
diff --git a/src/dragonball/dbs_interrupt/Cargo.toml b/src/dragonball/dbs_interrupt/Cargo.toml
index 20d5d46e47..2d7c1e8839 100644
--- a/src/dragonball/dbs_interrupt/Cargo.toml
+++ b/src/dragonball/dbs_interrupt/Cargo.toml
@@ -13,10 +13,10 @@ readme = "README.md"
 [dependencies]
 dbs-device = { path = "../dbs_device" }
 dbs-arch = { path = "../dbs_arch" }
-kvm-bindings = { version = "0.6.0", optional = true }
-kvm-ioctls = { version = "0.12.0", optional = true }
+kvm-bindings = { workspace = true, optional = true }
+kvm-ioctls = { workspace = true, optional = true }
 libc = "0.2"
-vmm-sys-util = "0.11.0"
+vmm-sys-util = {workspace = true}
 
 [features]
 default = ["legacy-irq", "msi-irq"]
diff --git a/src/dragonball/dbs_legacy_devices/Cargo.toml b/src/dragonball/dbs_legacy_devices/Cargo.toml
index 8655783f7d..b719b63a01 100644
--- a/src/dragonball/dbs_legacy_devices/Cargo.toml
+++ b/src/dragonball/dbs_legacy_devices/Cargo.toml
@@ -16,8 +16,8 @@ dbs-utils = { path = "../dbs_utils" }
 libc = "0.2.39"
 log = "0.4.14"
 serde = { version = "1.0.27", features = ["derive", "rc"] }
-vm-superio = "0.5.0"
-vmm-sys-util = "0.11.0"
+vm-superio = {workspace = true}
+vmm-sys-util = {workspace = true}
 
 [dev-dependencies]
 libc = "0.2.39"
diff --git a/src/dragonball/dbs_pci/Cargo.toml b/src/dragonball/dbs_pci/Cargo.toml
index 70aa2a0be1..26aa2aad52 100644
--- a/src/dragonball/dbs_pci/Cargo.toml
+++ b/src/dragonball/dbs_pci/Cargo.toml
@@ -23,16 +23,16 @@ dbs-interrupt = { path = "../dbs_interrupt", features = [
 ] }
 downcast-rs = "1.2.0"
 byteorder = "1.4.3"
-vm-memory = "0.10.0"
-kvm-ioctls = "0.12.0"
-kvm-bindings = "0.6.0"
-vfio-ioctls = "0.1.0"
-vfio-bindings = "0.3.0"
+vm-memory = {workspace = true}
+kvm-ioctls = {workspace = true}
+kvm-bindings = {workspace = true}
+vfio-ioctls = {workspace = true}
+vfio-bindings = {workspace = true}
 libc = "0.2.39"
 
 [dev-dependencies]
 dbs-arch = { path = "../dbs_arch" }
-kvm-ioctls = "0.12.0"
+kvm-ioctls = {workspace = true}
 
 [lints.rust]
 unexpected_cfgs = { level = "warn", check-cfg = [
diff --git a/src/dragonball/dbs_tdx/Cargo.toml b/src/dragonball/dbs_tdx/Cargo.toml
index 2643c6e485..a94fe42f9d 100644
--- a/src/dragonball/dbs_tdx/Cargo.toml
+++ b/src/dragonball/dbs_tdx/Cargo.toml
@@ -12,8 +12,8 @@ readme = "README.md"
 
 [dependencies]
 thiserror = "1.0"
-kvm-bindings = { version = "0.6.0", features = ["fam-wrappers"] }
-vmm-sys-util = "0.11.0"
+kvm-bindings = { workspace = true, features = ["fam-wrappers"] }
+vmm-sys-util = {workspace = true}
 
 [dev-dependencies]
 serde_json = "1.0.9"
diff --git a/src/dragonball/dbs_utils/Cargo.toml b/src/dragonball/dbs_utils/Cargo.toml
index ae2267ffc2..aa8a7da62d 100644
--- a/src/dragonball/dbs_utils/Cargo.toml
+++ b/src/dragonball/dbs_utils/Cargo.toml
@@ -12,13 +12,13 @@ readme = "README.md"
 
 [dependencies]
 anyhow = "1.0"
-event-manager = { version = "0.2.1", features = [ "remote_endpoint" ] }
+event-manager = { workspace = true, features = [ "remote_endpoint" ] }
 libc = "0.2.39"
 log = "0.4.14"
 serde = { version = "1.0.27", features = ["derive", "rc"] }
 thiserror = "1.0"
 timerfd = "1.0"
-vmm-sys-util = "0.11.0"
+vmm-sys-util = {workspace = true}
 
 [dev-dependencies]
 serde_json = "1.0.9"
diff --git a/src/dragonball/dbs_virtio_devices/Cargo.toml b/src/dragonball/dbs_virtio_devices/Cargo.toml
index 5f53804463..c30af0960b 100644
--- a/src/dragonball/dbs_virtio_devices/Cargo.toml
+++ b/src/dragonball/dbs_virtio_devices/Cargo.toml
@@ -24,8 +24,8 @@ dbs-boot = { path = "../dbs_boot" }
 epoll = ">=4.3.1, <4.3.2"
 io-uring = "0.5.2"
 fuse-backend-rs = { version = "0.10.5", optional = true }
-kvm-bindings = "0.6.0"
-kvm-ioctls = "0.12.0"
+kvm-bindings = { workspace = true}
+kvm-ioctls = {workspace = true}
 libc = "0.2.119"
 log = "0.4.14"
 nix = "0.24.3"
@@ -37,16 +37,16 @@ serde = "1.0.27"
 serde_json = "1.0.9"
 thiserror = "1"
 threadpool = "1"
-virtio-bindings = "0.1.0"
-virtio-queue = "0.7.0"
-vmm-sys-util = "0.11.0"
-vm-memory = { version = "0.10.0", features = ["backend-mmap"] }
+virtio-bindings = {workspace = true}
+virtio-queue = {workspace = true}
+vmm-sys-util = {workspace = true}
+vm-memory = { workspace = true, features = ["backend-mmap"] }
 sendfd = "0.4.3"
 vhost-rs = { version = "0.6.1", package = "vhost", optional = true }
 timerfd = "1.0"
 
 [dev-dependencies]
-vm-memory = { version = "0.10.0", features = [
+vm-memory = { workspace = true, features = [
     "backend-mmap",
     "backend-atomic",
 ] }