add CR handler
Some checks failed
Check / Build ISO (nightly-2025-04-27) (push) Failing after 44s

This commit is contained in:
Masato Imai
2025-08-22 09:07:00 +00:00
parent 4a44cdea8d
commit fc93be3043

View File

@ -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);