From 6c4849d1af5707d8941cf23e4ed4be96d14bd248 Mon Sep 17 00:00:00 2001 From: Masato Imai Date: Thu, 8 May 2025 05:49:04 +0000 Subject: [PATCH] WIP --- src/vmm/vcpu.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/vmm/vcpu.rs b/src/vmm/vcpu.rs index 41eb630..12837f0 100644 --- a/src/vmm/vcpu.rs +++ b/src/vmm/vcpu.rs @@ -6,7 +6,7 @@ use x86::{ msr::{rdmsr, IA32_EFER, IA32_FS_BASE}, vmx::{vmcs, VmFail}, }; -use x86_64::VirtAddr; +use x86_64::{registers::control::Cr4Flags, VirtAddr}; use crate::{ info, @@ -220,6 +220,7 @@ impl VCpu { primary_exec_ctrl.0 &= (reserved_bits >> 32) as u32; primary_exec_ctrl.set_hlt(false); primary_exec_ctrl.set_activate_secondary_controls(true); + primary_exec_ctrl.set_use_tpr_shadow(true); primary_exec_ctrl.write(); @@ -356,7 +357,10 @@ impl VCpu { & !Cr0::CR0_ENABLE_PAGING; vmwrite(vmcs::guest::CR0, cr0.bits() as u64)?; vmwrite(vmcs::guest::CR3, cr3())?; - vmwrite(vmcs::guest::CR4, cr4().bits() as u64)?; + vmwrite( + vmcs::guest::CR4, + vmread(vmcs::guest::CR4)? | Cr4Flags::VIRTUAL_MACHINE_EXTENSIONS.bits(), + )?; vmwrite(vmcs::guest::CS_BASE, 0)?; vmwrite(vmcs::guest::SS_BASE, 0)?;