From ff14f69742b7ea34f86657cd412b33f47ad48a56 Mon Sep 17 00:00:00 2001 From: Masato Imai Date: Tue, 5 Aug 2025 13:33:52 +0000 Subject: [PATCH] wip --- nel_os_kernel/src/main.rs | 2 +- nel_os_kernel/src/vmm/x86_64/intel/controls.rs | 10 +++++----- nel_os_kernel/src/vmm/x86_64/intel/mod.rs | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/nel_os_kernel/src/main.rs b/nel_os_kernel/src/main.rs index dbb7aed..4465608 100644 --- a/nel_os_kernel/src/main.rs +++ b/nel_os_kernel/src/main.rs @@ -158,7 +158,7 @@ pub extern "sysv64" fn main(boot_info: &nel_os_common::BootInfo) { info!("Interrupts enabled"); let mut vcpu = vmm::get_vcpu(&mut bitmap_table).unwrap(); - vcpu.run(); + vcpu.run().unwrap(); info!("VCpu initialized"); diff --git a/nel_os_kernel/src/vmm/x86_64/intel/controls.rs b/nel_os_kernel/src/vmm/x86_64/intel/controls.rs index 061dc18..f403e6a 100644 --- a/nel_os_kernel/src/vmm/x86_64/intel/controls.rs +++ b/nel_os_kernel/src/vmm/x86_64/intel/controls.rs @@ -18,7 +18,7 @@ pub fn setup_exec_controls() -> Result<(), &'static str> { let mut pin_exec_ctrl = vmcs::controls::PinBasedVmExecutionControls::from(raw_pin_exec_ctrl); pin_exec_ctrl.set_external_interrupt_exiting(false); - pin_exec_ctrl.write(); + pin_exec_ctrl.write()?; let mut raw_primary_exec_ctrl = u32::from(vmcs::controls::PrimaryProcessorBasedVmExecutionControls::read()?); @@ -40,7 +40,7 @@ pub fn setup_exec_controls() -> Result<(), &'static str> { primary_exec_ctrl.set_unconditional_io(false); primary_exec_ctrl.set_use_io_bitmap(false); // TODO: true - primary_exec_ctrl.write(); + primary_exec_ctrl.write()?; let mut raw_secondary_exec_ctrl = u32::from(vmcs::controls::SecondaryProcessorBasedVmExecutionControls::read()?); @@ -59,7 +59,7 @@ pub fn setup_exec_controls() -> Result<(), &'static str> { secondary_exec_ctrl.set_unrestricted_guest(false); //TODO: true secondary_exec_ctrl.set_virtualize_apic_accesses(false); // TODO: true - secondary_exec_ctrl.write(); + secondary_exec_ctrl.write()?; vmwrite(0x6000, u64::MAX)?; vmwrite(0x6002, u64::MAX)?; @@ -84,7 +84,7 @@ pub fn setup_entry_controls() -> Result<(), &'static str> { entry_ctrl.set_load_ia32_efer(true); entry_ctrl.set_load_ia32_pat(true); - entry_ctrl.write(); + entry_ctrl.write()?; Ok(()) } @@ -108,7 +108,7 @@ pub fn setup_exit_controls() -> Result<(), &'static str> { exit_ctrl.set_load_ia32_efer(true); exit_ctrl.set_load_ia32_pat(true); - exit_ctrl.write(); + exit_ctrl.write()?; vmwrite(0x4004, 1u64 << 6)?; // EXCEPTION_BITMAP diff --git a/nel_os_kernel/src/vmm/x86_64/intel/mod.rs b/nel_os_kernel/src/vmm/x86_64/intel/mod.rs index 0965e03..eaf046e 100644 --- a/nel_os_kernel/src/vmm/x86_64/intel/mod.rs +++ b/nel_os_kernel/src/vmm/x86_64/intel/mod.rs @@ -25,7 +25,7 @@ impl IntelVCpu { fn activate(&mut self) -> Result<(), &'static str> { let revision_id = common::read_msr(0x480) as u32; self.vmcs.write_revision_id(revision_id); - self.vmcs.reset(); + self.vmcs.reset()?; controls::setup_exec_controls()?; controls::setup_entry_controls()?; controls::setup_exit_controls()?;