From cfb69c68d2b00ab781fffb1002c3198b28c49546 Mon Sep 17 00:00:00 2001 From: Demi Marie Obenour Date: Wed, 4 Feb 2026 09:45:36 -0500 Subject: [PATCH] virtio-devices: generic vhost-user: add D-Bus API Allow adding and removing generic vhost-user devices via D-Bus. Signed-off-by: Demi Marie Obenour --- vmm/src/api/dbus/mod.rs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/vmm/src/api/dbus/mod.rs b/vmm/src/api/dbus/mod.rs index 6f75fb5cd..ae39feb7d 100644 --- a/vmm/src/api/dbus/mod.rs +++ b/vmm/src/api/dbus/mod.rs @@ -22,10 +22,10 @@ use super::{ApiAction, ApiRequest}; #[cfg(all(target_arch = "x86_64", feature = "guest_debug"))] use crate::api::VmCoredump; use crate::api::{ - AddDisk, Body, VmAddDevice, VmAddFs, VmAddNet, VmAddPmem, VmAddUserDevice, VmAddVdpa, - VmAddVsock, VmBoot, VmCounters, VmCreate, VmDelete, VmInfo, VmPause, VmPowerButton, VmReboot, - VmReceiveMigration, VmRemoveDevice, VmResize, VmResizeZone, VmRestore, VmResume, - VmSendMigration, VmShutdown, VmSnapshot, VmmPing, VmmShutdown, + AddDisk, Body, VmAddDevice, VmAddFs, VmAddGenericVhostUser, VmAddNet, VmAddPmem, + VmAddUserDevice, VmAddVdpa, VmAddVsock, VmBoot, VmCounters, VmCreate, VmDelete, VmInfo, + VmPause, VmPowerButton, VmReboot, VmReceiveMigration, VmRemoveDevice, VmResize, VmResizeZone, + VmRestore, VmResume, VmSendMigration, VmShutdown, VmSnapshot, VmmPing, VmmShutdown, }; use crate::seccomp_filters::{Thread, get_seccomp_filter}; use crate::{Error as VmmError, NetConfig, Result as VmmResult, VmConfig}; @@ -144,6 +144,16 @@ impl DBusApi { self.vm_action(&VmAddFs, fs_config).await } + async fn vm_add_generic_vhost_user( + &self, + generic_vhost_user_config: String, + ) -> Result> { + let generic_vhost_user_config = + serde_json::from_str(&generic_vhost_user_config).map_err(api_error)?; + self.vm_action(&VmAddGenericVhostUser, generic_vhost_user_config) + .await + } + async fn vm_add_net(&self, net_config: String) -> Result> { let mut net_config: NetConfig = serde_json::from_str(&net_config).map_err(api_error)?; if net_config.fds.is_some() {