From c6386f1791cccf478997f47b36ff141f9359d6f3 Mon Sep 17 00:00:00 2001 From: Zhang Junyu Date: Sat, 28 Feb 2026 21:58:27 +0800 Subject: [PATCH] refine: Refine vm_exit --- crates/vm-core/src/arch.rs | 1 - crates/vm-core/src/arch/aarch64.rs | 3 ++- .../src/arch/{vm_exit/aarch64.rs => aarch64/vm_exit.rs} | 2 +- .../src/arch/{vm_exit/aarch64 => aarch64/vm_exit}/smc.rs | 2 +- crates/vm-core/src/arch/vm_exit.rs | 5 ----- crates/vm-core/src/arch/x86_64.rs | 3 ++- .../src/arch/{vm_exit/x86_64.rs => x86_64/vm_exit.rs} | 0 crates/vm-core/src/virt/hvp.rs | 4 ++-- crates/vm-core/src/virt/hvp/vcpu.rs | 2 +- crates/vm-core/src/virt/kvm/vcpu/arch/aarch64.rs | 2 +- crates/vm-core/src/virt/kvm/vcpu/arch/x86_64.rs | 2 +- 11 files changed, 11 insertions(+), 15 deletions(-) rename crates/vm-core/src/arch/{vm_exit/aarch64.rs => aarch64/vm_exit.rs} (98%) rename crates/vm-core/src/arch/{vm_exit/aarch64 => aarch64/vm_exit}/smc.rs (89%) delete mode 100644 crates/vm-core/src/arch/vm_exit.rs rename crates/vm-core/src/arch/{vm_exit/x86_64.rs => x86_64/vm_exit.rs} (100%) diff --git a/crates/vm-core/src/arch.rs b/crates/vm-core/src/arch.rs index dce4b9b..c71e64a 100644 --- a/crates/vm-core/src/arch.rs +++ b/crates/vm-core/src/arch.rs @@ -9,7 +9,6 @@ pub mod x86_64; pub mod irq; pub mod layout; pub mod vcpu; -pub mod vm_exit; pub trait Arch { type VmExitReason; diff --git a/crates/vm-core/src/arch/aarch64.rs b/crates/vm-core/src/arch/aarch64.rs index a497416..4ae9c3b 100644 --- a/crates/vm-core/src/arch/aarch64.rs +++ b/crates/vm-core/src/arch/aarch64.rs @@ -1,11 +1,12 @@ use crate::arch::Arch; use crate::arch::aarch64::layout::AArch64Layout; -use crate::arch::vm_exit::aarch64::VmExitReason; +use crate::arch::aarch64::vm_exit::VmExitReason; pub mod firmware; pub mod irq; pub mod layout; pub mod vcpu; +pub mod vm_exit; pub struct AArch64 { pub layout: AArch64Layout, diff --git a/crates/vm-core/src/arch/vm_exit/aarch64.rs b/crates/vm-core/src/arch/aarch64/vm_exit.rs similarity index 98% rename from crates/vm-core/src/arch/vm_exit/aarch64.rs rename to crates/vm-core/src/arch/aarch64/vm_exit.rs index 25e1338..ca26075 100644 --- a/crates/vm-core/src/arch/vm_exit/aarch64.rs +++ b/crates/vm-core/src/arch/aarch64/vm_exit.rs @@ -7,7 +7,7 @@ use crate::arch::aarch64::firmware::psci::Psci; use crate::arch::aarch64::vcpu::AArch64Vcpu; use crate::arch::aarch64::vcpu::reg::CoreRegister; use crate::arch::aarch64::vcpu::reg::SysRegister; -use crate::arch::vm_exit::aarch64::smc::handle_smc; +use crate::arch::aarch64::vm_exit::smc::handle_smc; use crate::device::vm_exit::DeviceVmExitHandler; pub mod smc; diff --git a/crates/vm-core/src/arch/vm_exit/aarch64/smc.rs b/crates/vm-core/src/arch/aarch64/vm_exit/smc.rs similarity index 89% rename from crates/vm-core/src/arch/vm_exit/aarch64/smc.rs rename to crates/vm-core/src/arch/aarch64/vm_exit/smc.rs index 0f1b8e4..c3561f5 100644 --- a/crates/vm-core/src/arch/vm_exit/aarch64/smc.rs +++ b/crates/vm-core/src/arch/aarch64/vm_exit/smc.rs @@ -3,7 +3,7 @@ use std::sync::Mutex; use crate::arch::aarch64::firmware::psci::Psci; use crate::arch::aarch64::vcpu::AArch64Vcpu; -use crate::arch::vm_exit::aarch64::Error; +use crate::arch::aarch64::vm_exit::Error; pub fn handle_smc(psci: Arc>, vcpu: &dyn AArch64Vcpu) -> Result<(), Error> { let psci = psci.lock().unwrap(); diff --git a/crates/vm-core/src/arch/vm_exit.rs b/crates/vm-core/src/arch/vm_exit.rs deleted file mode 100644 index 70048e0..0000000 --- a/crates/vm-core/src/arch/vm_exit.rs +++ /dev/null @@ -1,5 +0,0 @@ -#[cfg(target_arch = "aarch64")] -pub mod aarch64; - -#[cfg(target_arch = "x86_64")] -pub mod x86_64; diff --git a/crates/vm-core/src/arch/x86_64.rs b/crates/vm-core/src/arch/x86_64.rs index 20a350a..bac00db 100644 --- a/crates/vm-core/src/arch/x86_64.rs +++ b/crates/vm-core/src/arch/x86_64.rs @@ -1,9 +1,10 @@ use crate::arch::Arch; -use crate::arch::vm_exit::x86_64::VmExitReason; use crate::arch::x86_64::layout::X86_64Layout; +use crate::arch::x86_64::vm_exit::VmExitReason; pub mod layout; pub mod vcpu; +pub mod vm_exit; pub const BASE_ADDRESS: u64 = 0x0; diff --git a/crates/vm-core/src/arch/vm_exit/x86_64.rs b/crates/vm-core/src/arch/x86_64/vm_exit.rs similarity index 100% rename from crates/vm-core/src/arch/vm_exit/x86_64.rs rename to crates/vm-core/src/arch/x86_64/vm_exit.rs diff --git a/crates/vm-core/src/virt/hvp.rs b/crates/vm-core/src/virt/hvp.rs index 48e54b1..fa7a7bd 100644 --- a/crates/vm-core/src/virt/hvp.rs +++ b/crates/vm-core/src/virt/hvp.rs @@ -22,11 +22,11 @@ use crate::arch::aarch64::vcpu::reg::CoreRegister; use crate::arch::aarch64::vcpu::reg::SysRegister; use crate::arch::aarch64::vcpu::reg::cnthctl_el2::CnthctlEl2; use crate::arch::aarch64::vcpu::reg::sctlr_el1::SctlrEl1; +use crate::arch::aarch64::vm_exit::HandleVmExitResult; +use crate::arch::aarch64::vm_exit::handle_vm_exit; use crate::arch::irq::InterruptController; use crate::arch::layout::MemoryLayout; use crate::arch::vcpu::Vcpu; -use crate::arch::vm_exit::aarch64::HandleVmExitResult; -use crate::arch::vm_exit::aarch64::handle_vm_exit; use crate::device::mmio::MmioLayout; use crate::device::vm_exit::DeviceVmExitHandler; use crate::error::Error; diff --git a/crates/vm-core/src/virt/hvp/vcpu.rs b/crates/vm-core/src/virt/hvp/vcpu.rs index 6b7c58e..c602267 100644 --- a/crates/vm-core/src/virt/hvp/vcpu.rs +++ b/crates/vm-core/src/virt/hvp/vcpu.rs @@ -12,8 +12,8 @@ use crate::arch::aarch64::vcpu::reg::CoreRegister; use crate::arch::aarch64::vcpu::reg::SysRegister; use crate::arch::aarch64::vcpu::reg::esr_el2; use crate::arch::aarch64::vcpu::reg::esr_el2::EsrEl2; +use crate::arch::aarch64::vm_exit::VmExitReason; use crate::arch::vcpu::Vcpu; -use crate::arch::vm_exit::aarch64::VmExitReason; use crate::device::mmio::MmioLayout; enum HvpReg { diff --git a/crates/vm-core/src/virt/kvm/vcpu/arch/aarch64.rs b/crates/vm-core/src/virt/kvm/vcpu/arch/aarch64.rs index d7a468f..8752940 100644 --- a/crates/vm-core/src/virt/kvm/vcpu/arch/aarch64.rs +++ b/crates/vm-core/src/virt/kvm/vcpu/arch/aarch64.rs @@ -4,7 +4,7 @@ use crate::arch::aarch64::AArch64; use crate::arch::aarch64::vcpu::AArch64Vcpu; use crate::arch::aarch64::vcpu::reg::CoreRegister; use crate::arch::aarch64::vcpu::reg::SysRegister; -use crate::arch::vm_exit::aarch64::VmExitReason; +use crate::arch::aarch64::vm_exit::VmExitReason; use crate::device::mmio::MmioLayout; use crate::virt::Vcpu; use crate::virt::kvm::vcpu::KvmVcpu; diff --git a/crates/vm-core/src/virt/kvm/vcpu/arch/x86_64.rs b/crates/vm-core/src/virt/kvm/vcpu/arch/x86_64.rs index d8ed7c2..d806bda 100644 --- a/crates/vm-core/src/virt/kvm/vcpu/arch/x86_64.rs +++ b/crates/vm-core/src/virt/kvm/vcpu/arch/x86_64.rs @@ -1,9 +1,9 @@ use kvm_bindings::*; use kvm_ioctls::Kvm; -use crate::arch::vm_exit::x86_64::VmExitReason; use crate::arch::x86_64::X86_64; use crate::arch::x86_64::vcpu::X86Vcpu; +use crate::arch::x86_64::vm_exit::VmExitReason; use crate::virt::MmioLayout; use crate::virt::Vcpu; use crate::virt::kvm::vcpu::KvmVcpu;