]> xenbits.xensource.com Git - xen.git/commitdiff
x86/monitor: allow fast-singlestepping without enabling singlestep monitor
authorPetr Beneš <w1benny@gmail.com>
Sun, 14 Apr 2024 18:21:14 +0000 (18:21 +0000)
committerAndrew Cooper <andrew.cooper3@citrix.com>
Tue, 23 Apr 2024 21:49:01 +0000 (22:49 +0100)
Reorder the condition checks within the HVM_MONITOR_SINGLESTEP_BREAKPOINT
case to enable fast singlestepping independently of the singlestep monitor
being enabled. Previously, fast singlestepping required the singlestep
monitor to be explicitly enabled through xc_monitor_singlestep, even though
it operates entirely within Xen and does not generate external events.

Signed-off-by: Petr Beneš <w1benny@gmail.com>
Acked-by: Tamas K Lengyel <tamas@tklengyel.com>
xen/arch/x86/hvm/monitor.c

index 4f500beaf587abbdbe17238373202c6620c96b7c..2a8ff07ec94648e9cc44c33c9942f996168fa48d 100644 (file)
@@ -178,8 +178,6 @@ int hvm_monitor_debug(unsigned long rip, enum hvm_monitor_debug_type type,
         break;
 
     case HVM_MONITOR_SINGLESTEP_BREAKPOINT:
-        if ( !ad->monitor.singlestep_enabled )
-            return 0;
         if ( curr->arch.hvm.fast_single_step.enabled )
         {
             p2m_altp2m_check(curr, curr->arch.hvm.fast_single_step.p2midx);
@@ -188,6 +186,8 @@ int hvm_monitor_debug(unsigned long rip, enum hvm_monitor_debug_type type,
             curr->arch.hvm.fast_single_step.p2midx = 0;
             return 0;
         }
+        if ( !ad->monitor.singlestep_enabled )
+            return 0;
         req.reason = VM_EVENT_REASON_SINGLESTEP;
         req.u.singlestep.gfn = gfn_of_rip(rip);
         sync = true;