diff --git a/hypervisor/src/cpu.rs b/hypervisor/src/cpu.rs index 60debceb9..f5cbe0e06 100644 --- a/hypervisor/src/cpu.rs +++ b/hypervisor/src/cpu.rs @@ -300,15 +300,9 @@ pub enum HypervisorCpuError { } #[derive(Debug)] -pub enum VmExit<'a> { - #[cfg(target_arch = "x86_64")] - IoOut(u16 /* port */, &'a [u8] /* data */), - #[cfg(target_arch = "x86_64")] - IoIn(u16 /* port */, &'a mut [u8] /* data */), +pub enum VmExit { #[cfg(target_arch = "x86_64")] IoapicEoi(u8 /* vector */), - MmioRead(u64 /* address */, &'a mut [u8]), - MmioWrite(u64 /* address */, &'a [u8]), Ignore, Reset, Shutdown, diff --git a/hypervisor/src/kvm/mod.rs b/hypervisor/src/kvm/mod.rs index 80c8530bc..2f201a974 100644 --- a/hypervisor/src/kvm/mod.rs +++ b/hypervisor/src/kvm/mod.rs @@ -1625,7 +1625,7 @@ impl cpu::Vcpu for KvmVcpu { .map_err(|e| cpu::HypervisorCpuError::RunVcpu(e.into())); } - Ok(cpu::VmExit::IoIn(addr, data)) + Ok(cpu::VmExit::Ignore) } #[cfg(target_arch = "x86_64")] VcpuExit::IoOut(addr, data) => { @@ -1636,7 +1636,7 @@ impl cpu::Vcpu for KvmVcpu { .map_err(|e| cpu::HypervisorCpuError::RunVcpu(e.into())); } - Ok(cpu::VmExit::IoOut(addr, data)) + Ok(cpu::VmExit::Ignore) } #[cfg(target_arch = "x86_64")] VcpuExit::IoapicEoi(vector) => Ok(cpu::VmExit::IoapicEoi(vector)), @@ -1669,7 +1669,7 @@ impl cpu::Vcpu for KvmVcpu { .map_err(|e| cpu::HypervisorCpuError::RunVcpu(e.into())); } - Ok(cpu::VmExit::MmioRead(addr, data)) + Ok(cpu::VmExit::Ignore) } VcpuExit::MmioWrite(addr, data) => { if let Some(vm_ops) = &self.vm_ops { @@ -1679,7 +1679,7 @@ impl cpu::Vcpu for KvmVcpu { .map_err(|e| cpu::HypervisorCpuError::RunVcpu(e.into())); } - Ok(cpu::VmExit::MmioWrite(addr, data)) + Ok(cpu::VmExit::Ignore) } VcpuExit::Hyperv => Ok(cpu::VmExit::Hyperv), #[cfg(feature = "tdx")] diff --git a/vmm/src/cpu.rs b/vmm/src/cpu.rs index 5cd8eddeb..a737a15f9 100644 --- a/vmm/src/cpu.rs +++ b/vmm/src/cpu.rs @@ -1147,15 +1147,6 @@ impl CpuManager { unreachable!("Couldn't get a mutable reference from Arc as there are multiple instances"); } } - _ => { - error!( - "VCPU generated error: {:?}", - Error::UnexpectedVmExit - ); - vcpu_run_interrupted.store(true, Ordering::SeqCst); - exit_evt.write(1).unwrap(); - break; - } }, Err(e) => { diff --git a/vmm/src/vm.rs b/vmm/src/vm.rs index 690967f5b..c462f80db 100644 --- a/vmm/src/vm.rs +++ b/vmm/src/vm.rs @@ -3246,17 +3246,11 @@ pub fn test_vm() { loop { match vcpu.run().expect("run failed") { - VmExit::IoOut(addr, data) => { - println!( - "IO out -- addr: {:#x} data [{:?}]", - addr, - str::from_utf8(data).unwrap() - ); - } VmExit::Reset => { println!("HLT"); break; } + VmExit::Ignore => {} r => panic!("unexpected exit reason: {r:?}"), } }