This commit is contained in:
@ -13,6 +13,7 @@ use crate::{
|
|||||||
intel::{
|
intel::{
|
||||||
auditor, controls, cpuid, ept,
|
auditor, controls, cpuid, ept,
|
||||||
msr::{self, ShadowMsr},
|
msr::{self, ShadowMsr},
|
||||||
|
qual::QualCr,
|
||||||
register::GuestRegisters,
|
register::GuestRegisters,
|
||||||
vmcs::{
|
vmcs::{
|
||||||
self,
|
self,
|
||||||
@ -77,7 +78,6 @@ impl IntelVCpu {
|
|||||||
self.step_next_inst()?;
|
self.step_next_inst()?;
|
||||||
}
|
}
|
||||||
VmxExitReason::CPUID => {
|
VmxExitReason::CPUID => {
|
||||||
info!("VM exit reason: CPUID");
|
|
||||||
cpuid::handle_cpuid_vmexit(self);
|
cpuid::handle_cpuid_vmexit(self);
|
||||||
self.step_next_inst()?;
|
self.step_next_inst()?;
|
||||||
}
|
}
|
||||||
@ -89,6 +89,14 @@ impl IntelVCpu {
|
|||||||
msr::ShadowMsr::handle_wrmsr_vmexit(self);
|
msr::ShadowMsr::handle_wrmsr_vmexit(self);
|
||||||
self.step_next_inst()?;
|
self.step_next_inst()?;
|
||||||
}
|
}
|
||||||
|
VmxExitReason::CONTROL_REGISTER_ACCESSES => {
|
||||||
|
let qual = vmread(vmcs::ro::EXIT_QUALIFICATION)?;
|
||||||
|
let qual = QualCr::from(qual);
|
||||||
|
|
||||||
|
super::cr::handle_cr_access(self, &qual)?;
|
||||||
|
|
||||||
|
self.step_next_inst()?;
|
||||||
|
}
|
||||||
VmxExitReason::EPT_VIOLATION => {
|
VmxExitReason::EPT_VIOLATION => {
|
||||||
let guest_address = vmread(vmcs::ro::GUEST_PHYSICAL_ADDR_FULL)?;
|
let guest_address = vmread(vmcs::ro::GUEST_PHYSICAL_ADDR_FULL)?;
|
||||||
info!("EPT Violation at guest address: {:#x}", guest_address);
|
info!("EPT Violation at guest address: {:#x}", guest_address);
|
||||||
|
Reference in New Issue
Block a user