#[non_exhaustive]pub enum VmExit {
Show 19 variants
Hypercall {
nr: u64,
args: [u64; 6],
},
MmioRead {
addr: GuestPhysAddr,
width: AccessWidth,
reg: usize,
reg_width: AccessWidth,
signed_ext: bool,
},
MmioWrite {
addr: GuestPhysAddr,
width: AccessWidth,
data: u64,
},
SysRegRead {
addr: SysRegAddr,
reg: usize,
},
SysRegWrite {
addr: SysRegAddr,
value: u64,
},
IoRead {
port: Port,
width: AccessWidth,
},
IoWrite {
port: Port,
width: AccessWidth,
data: u64,
},
ExternalInterrupt {
vector: u64,
},
NestedPageFault {
addr: GuestPhysAddr,
access_flags: MappingFlags,
},
Halt,
Idle,
CpuUp {
target_cpu: u64,
entry_point: GuestPhysAddr,
arg: u64,
},
CpuDown {
_state: u64,
},
SystemDown,
Nothing,
PreemptionTimer,
InterruptEnd {
vector: Option<u8>,
},
FailEntry {
hardware_entry_failure_reason: u64,
},
SendIPI {
target_cpu: u64,
target_cpu_aux: u64,
send_to_all: bool,
send_to_self: bool,
vector: u64,
},
}Expand description
Legacy/common normalized VM event.
New AxVM architecture backends should expose their raw VM-exit type through
VmArchVcpuOps::Exit and handle it inside their axvm::arch module.
This enum remains for compatibility and as a transitional normalized event
shape for backends that have not split out an architecture-owned exit enum.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Hypercall
A guest instruction triggered a hypercall to the hypervisor.
MmioRead
The guest performed an MMIO read.
Fields
addr: GuestPhysAddrGuest physical address being read.
width: AccessWidthAccess width.
reg_width: AccessWidthDestination register width.
MmioWrite
The guest performed an MMIO write.
SysRegRead
The guest performed a system register read.
SysRegWrite
The guest performed a system register write.
IoRead
The guest performed an x86 port I/O read.
IoWrite
The guest performed an x86 port I/O write.
Fields
width: AccessWidthAccess width.
ExternalInterrupt
An external interrupt was delivered to the vCPU.
NestedPageFault
A nested page fault occurred during guest execution.
Fields
addr: GuestPhysAddrGuest physical address that caused the fault.
access_flags: MappingFlagsAccess type that caused the fault.
Halt
The guest halted.
Idle
The guest reached an idle instruction.
CpuUp
The guest requested secondary CPU startup.
Fields
entry_point: GuestPhysAddrSecondary entry point.
CpuDown
The guest powered down one vCPU.
SystemDown
The guest requested VM shutdown.
Nothing
No VMM action is required.
PreemptionTimer
Hardware virtualization preemption timer expired.
InterruptEnd
The guest completed interrupt service with EOI.
FailEntry
VM entry failed.
SendIPI
The guest requested an IPI.