From dd8457f9196fef0ec6af3daaa386fa2caf4eb6c9 Mon Sep 17 00:00:00 2001 From: IrvingMg Date: Wed, 24 Dec 2025 10:58:44 +0100 Subject: [PATCH] Remove duplicate GVA-to-GPA translation in sw breakpoint functions Signed-off-by: IrvingMg --- .../src/hypervisor/hyperlight_vm.rs | 22 ++++++++----------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/src/hyperlight_host/src/hypervisor/hyperlight_vm.rs b/src/hyperlight_host/src/hypervisor/hyperlight_vm.rs index 9cc01135f..c836d3d80 100644 --- a/src/hyperlight_host/src/hypervisor/hyperlight_vm.rs +++ b/src/hyperlight_host/src/hypervisor/hyperlight_vm.rs @@ -1039,41 +1039,37 @@ mod debug { // Must be idempotent! fn add_sw_breakpoint( &mut self, - addr: u64, + gva: u64, mem_access: &DebugMemoryAccess, ) -> crate::Result<()> { - let addr = self.vm.translate_gva(addr)?; - // Check if breakpoint already exists - if self.sw_breakpoints.contains_key(&addr) { + if self.sw_breakpoints.contains_key(&gva) { return Ok(()); } // Write breakpoint OP code to write to guest memory let mut save_data = [0; SW_BP_SIZE]; - self.read_addrs(addr, &mut save_data[..], mem_access)?; - self.write_addrs(addr, &SW_BP, mem_access)?; + self.read_addrs(gva, &mut save_data[..], mem_access)?; + self.write_addrs(gva, &SW_BP, mem_access)?; // Save guest memory to restore when breakpoint is removed - self.sw_breakpoints.insert(addr, save_data[0]); + self.sw_breakpoints.insert(gva, save_data[0]); Ok(()) } fn remove_sw_breakpoint( &mut self, - addr: u64, + gva: u64, mem_access: &DebugMemoryAccess, ) -> crate::Result<()> { - let addr = self.vm.translate_gva(addr)?; - - if let Some(saved_data) = self.sw_breakpoints.remove(&addr) { + if let Some(saved_data) = self.sw_breakpoints.remove(&gva) { // Restore saved data to the guest's memory - self.write_addrs(addr, &[saved_data], mem_access)?; + self.write_addrs(gva, &[saved_data], mem_access)?; Ok(()) } else { - Err(new_error!("The address: {:?} is not a sw breakpoint", addr)) + Err(new_error!("The address: {:?} is not a sw breakpoint", gva)) } } }