]> xenbits.xensource.com Git - xen.git/commitdiff
x86/vm_event: add response flag to reset vmtrace buffer
authorTamas K Lengyel <tamas.lengyel@intel.com>
Sat, 30 Jan 2021 13:36:37 +0000 (08:36 -0500)
committerAndrew Cooper <andrew.cooper3@citrix.com>
Fri, 5 Feb 2021 17:37:28 +0000 (17:37 +0000)
Allow resetting the vmtrace buffer in response to a vm_event. This can be used
to optimize a use-case where detecting a looped vmtrace buffer is important.

Signed-off-by: Tamas K Lengyel <tamas.lengyel@intel.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
Release-Acked-by: Ian Jackson <iwj@xenproject.org>
xen/arch/x86/vm_event.c
xen/common/vm_event.c
xen/include/asm-arm/vm_event.h
xen/include/asm-x86/vm_event.h
xen/include/public/vm_event.h

index 36272e9316976fd16b494a2396bae228b264dce4..8f73a73e2e5941ef45943c1655d53ab5187a9a24 100644 (file)
@@ -300,6 +300,13 @@ void vm_event_emulate_check(struct vcpu *v, vm_event_response_t *rsp)
     };
 }
 
+void vm_event_reset_vmtrace(struct vcpu *v)
+{
+#ifdef CONFIG_HVM
+    hvm_vmtrace_reset(v);
+#endif
+}
+
 /*
  * Local variables:
  * mode: C
index 127f2d58f15251fefaa500f6e7a737eacd5fa6f7..44d542f23e0eadc12acb1814aef970a70690764d 100644 (file)
@@ -424,6 +424,9 @@ static int vm_event_resume(struct domain *d, struct vm_event_domain *ved)
             if ( rsp.flags & VM_EVENT_FLAG_GET_NEXT_INTERRUPT )
                 vm_event_monitor_next_interrupt(v);
 
+            if ( rsp.flags & VM_EVENT_FLAG_RESET_VMTRACE )
+                vm_event_reset_vmtrace(v);
+
             if ( rsp.flags & VM_EVENT_FLAG_VCPU_PAUSED )
                 vm_event_vcpu_unpause(v);
         }
index 14d1d341cc799bc12244a3017b4f525cc8d8da90..abe7db1970cab6e102ae670f6ea15d7ddd7023e1 100644 (file)
@@ -58,4 +58,10 @@ void vm_event_sync_event(struct vcpu *v, bool value)
     /* Not supported on ARM. */
 }
 
+static inline
+void vm_event_reset_vmtrace(struct vcpu *v)
+{
+    /* Not supported on ARM. */
+}
+
 #endif /* __ASM_ARM_VM_EVENT_H__ */
index 785e741fba256c6f39d8296748ec642c6659d923..0756124075231d0b7aa9e1a0367b756033750d72 100644 (file)
@@ -54,4 +54,6 @@ void vm_event_emulate_check(struct vcpu *v, vm_event_response_t *rsp);
 
 void vm_event_sync_event(struct vcpu *v, bool value);
 
+void vm_event_reset_vmtrace(struct vcpu *v);
+
 #endif /* __ASM_X86_VM_EVENT_H__ */
index 147dc3ea73f194da67a1ec22beca128b01036b32..36135ba4f1f0e6bf1a7acc6fa074f46d22c6670d 100644 (file)
  * Set if the event comes from a nested VM and thus npt_base is valid.
  */
 #define VM_EVENT_FLAG_NESTED_P2M         (1 << 12)
+/*
+ * Reset the vmtrace buffer (if vmtrace is enabled)
+ */
+#define VM_EVENT_FLAG_RESET_VMTRACE      (1 << 13)
 
 /*
  * Reasons for the vm event request