Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions crates/vm-core/src/cpu/vm_exit.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
use thiserror::Error;

#[cfg(target_arch = "aarch64")]
use crate::arch::aarch64::vcpu::AArch64Vcpu;

#[derive(Error, Debug)]
pub enum VmExitHandlerError {
#[error("no device found for port 0x{0:#x}")]
Expand Down Expand Up @@ -37,5 +34,8 @@ pub trait VmExit: Send + Sync {
fn in_mmio_region(&self, addr: u64) -> bool;

#[cfg(target_arch = "aarch64")]
fn call_smc(&self, vcpu: &mut dyn AArch64Vcpu) -> Result<(), VmExitHandlerError>;
fn call_smc(
&self,
vcpu: &mut dyn crate::arch::aarch64::vcpu::AArch64Vcpu,
) -> Result<(), VmExitHandlerError>;
}
5 changes: 1 addition & 4 deletions crates/vm-core/src/monitor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,6 @@ pub enum MonitorError {
#[error("{0}")]
Serde(#[from] serde_json::Error),

#[error("Unknown cmd {0}")]
UnknownCmd(String),

#[error("unknown subcommand {0:?}")]
UnknownSubcommand(Vec<String>),

Expand All @@ -23,6 +20,6 @@ pub enum MonitorError {
}

#[async_trait]
pub trait MonitorCommand: Send + Sync {
pub trait MonitorCommandOps: Send + Sync {
async fn handle_command(&self, subcommands: &[&str]) -> Result<String, MonitorError>;
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use std::sync::Mutex;

use async_trait::async_trait;
use serde::Serialize;
use vm_core::monitor::MonitorCommand;
use vm_core::monitor::MonitorCommandOps;
use vm_core::monitor::MonitorError;
use vm_virtio::transport::VirtioDev;

Expand All @@ -27,7 +27,7 @@ impl VirtioBalloonMonitor {
}

#[async_trait]
impl MonitorCommand for VirtioBalloonMonitor {
impl MonitorCommandOps for VirtioBalloonMonitor {
async fn handle_command(&self, subcommands: &[&str]) -> Result<String, MonitorError> {
match *subcommands {
["info"] => {
Expand Down
3 changes: 0 additions & 3 deletions crates/vm-vmm/src/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,6 @@ pub enum Error {
#[error("Failed to setup with bootloader, error: {0}")]
Bootloader(#[from] vm_bootloader::boot_loader::Error),

#[error("gdb_stub failed, error: {0}")]
GdbStub(String),

#[error("monitor error: {0}")]
Monitor(#[from] MonitorError),
}
Expand Down
2 changes: 1 addition & 1 deletion crates/vm-vmm/src/firmware.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
#[allow(warnings)]
#[cfg(target_arch = "x86_64")]
pub mod bios;
pub(crate) mod bios;
4 changes: 2 additions & 2 deletions crates/vm-vmm/src/service.rs
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
pub mod gdbstub;
pub mod monitor;
pub(crate) mod gdbstub;
pub(crate) mod monitor;
6 changes: 3 additions & 3 deletions crates/vm-vmm/src/service/monitor/builder.rs
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
use std::collections::HashMap;

use vm_core::monitor::MonitorCommand;
use vm_core::monitor::MonitorCommandOps;
use vm_core::monitor::MonitorError;

#[derive(Default)]
pub struct MonitorServerBuilder {
pub components: HashMap<String, Box<dyn MonitorCommand>>,
pub components: HashMap<String, Box<dyn MonitorCommandOps>>,
}

impl MonitorServerBuilder {
pub fn register_command_handler(
&mut self,
name: &str,
handler: Box<dyn MonitorCommand>,
handler: Box<dyn MonitorCommandOps>,
) -> Result<(), MonitorError> {
let name = name.to_string();

Expand Down
14 changes: 7 additions & 7 deletions crates/vm-vmm/src/vm.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ use vm_core::arch::x86_64::layout::RAM_BASE;
use vm_core::cpu::vcpu_manager::VcpuManager;
use vm_core::device::mmio::layout::MmioLayout;
use vm_core::device_manager::DeviceManager;
use vm_core::monitor::MonitorCommand;
use vm_core::monitor::MonitorCommandOps;
use vm_core::virtualization::hypervisor::Hypervisor;
use vm_core::virtualization::vm::HypervisorVm;
use vm_core::virtualization::vm::SetUserMemoryRegionFlags;
Expand All @@ -47,7 +47,7 @@ use crate::vmm::handler::VmmCommand;

pub mod config;

pub(crate) mod vm_exit_handler;
mod vm_exit_handler;

const PAGE_SIZE: usize = 4 << 10;

Expand All @@ -58,7 +58,7 @@ pub struct Vm {
_irq_chip: Arc<dyn InterruptController>,
_device_manager: Arc<DeviceManager>,
gdb_stub: Option<VmGdbStubConnector>,
monitor_handlers: HashMap<String, Box<dyn MonitorCommand>>,
monitor_handlers: HashMap<String, Box<dyn MonitorCommandOps>>,
_vm_config: VmConfig,
#[cfg(target_arch = "aarch64")]
start_pc: u64,
Expand Down Expand Up @@ -113,11 +113,11 @@ impl Vm {
vcpu_manager: vcpu_manager.clone(),
};

let vm_exit_handler = Arc::new(VmExitHandler {
device_manager: device_manager.clone(),
let vm_exit_handler = Arc::new(VmExitHandler::new(
device_manager.clone(),
#[cfg(target_arch = "aarch64")]
psci,
});
));

{
let mut vcpu_manager = vcpu_manager.lock().await;
Expand Down Expand Up @@ -180,7 +180,7 @@ impl Vm {
self.memory_address_space.as_ref()
}

pub fn monitor_handlers(&self) -> &HashMap<String, Box<dyn MonitorCommand>> {
pub fn monitor_handlers(&self) -> &HashMap<String, Box<dyn MonitorCommandOps>> {
&self.monitor_handlers
}

Expand Down
17 changes: 15 additions & 2 deletions crates/vm-vmm/src/vm/vm_exit_handler.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,22 @@ use vm_core::cpu::vm_exit::VmExitHandlerError;
use vm_core::device_manager::DeviceManager;

pub struct VmExitHandler {
pub device_manager: Arc<DeviceManager>,
device_manager: Arc<DeviceManager>,
#[cfg(target_arch = "aarch64")]
pub psci: Psci02,
psci: Psci02,
}

impl VmExitHandler {
pub fn new(
device_manager: Arc<DeviceManager>,
#[cfg(target_arch = "aarch64")] psci: Psci02,
) -> Self {
VmExitHandler {
device_manager,
#[cfg(target_arch = "aarch64")]
psci,
}
}
}

impl VmExit for VmExitHandler {
Expand Down
2 changes: 1 addition & 1 deletion crates/vm-vmm/src/vmm.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ use crate::vm::Vm;
use crate::vm::config::VmConfig;
use crate::vmm::handler::VmmCommand;

pub mod handler;
pub(crate) mod handler;

mod service;

Expand Down
Loading