WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] Enhance HVM xentrace:

# HG changeset patch
# User kfraser@xxxxxxxxxxxxxxxxxxxxx
# Node ID 6f3c40ee248856b84053adb9f6edfc5d31955684
# Parent  9febecbeaeb0aa9bd51ee654a7179fbcb49df343
Enhance HVM xentrace:
1) VMX xentrace data are store in current vcpu instead physical CPU.
2) Log PIO data in xentrace.

Signed-off-by: Xin Li <xin.b.li@xxxxxxxxx>
---
 xen/arch/x86/hvm/io.c             |    1 +
 xen/arch/x86/hvm/vmx/vmx.c        |   19 ++++++++++---------
 xen/include/asm-x86/hvm/support.h |    3 +++
 xen/include/asm-x86/hvm/vcpu.h    |    2 ++
 4 files changed, 16 insertions(+), 9 deletions(-)

diff -r 9febecbeaeb0 -r 6f3c40ee2488 xen/arch/x86/hvm/io.c
--- a/xen/arch/x86/hvm/io.c     Tue Nov 07 10:46:03 2006 +0000
+++ b/xen/arch/x86/hvm/io.c     Tue Nov 07 10:48:48 2006 +0000
@@ -406,6 +406,7 @@ static void hvm_pio_assist(struct cpu_us
             printk("Error: %s unknown port size\n", __FUNCTION__);
             domain_crash_synchronous();
         }
+        TRACE_VMEXIT(3, regs->eax);
     }
 }
 
diff -r 9febecbeaeb0 -r 6f3c40ee2488 xen/arch/x86/hvm/vmx/vmx.c
--- a/xen/arch/x86/hvm/vmx/vmx.c        Tue Nov 07 10:46:03 2006 +0000
+++ b/xen/arch/x86/hvm/vmx/vmx.c        Tue Nov 07 10:48:48 2006 +0000
@@ -47,9 +47,6 @@
 #include <asm/hvm/vlapic.h>
 #include <asm/x86_emulate.h>
 
-static DEFINE_PER_CPU(unsigned long, trace_values[5]);
-#define TRACE_VMEXIT(index,value) this_cpu(trace_values)[index]=value
-
 static void vmx_ctxt_switch_from(struct vcpu *v);
 static void vmx_ctxt_switch_to(struct vcpu *v);
 
@@ -1051,7 +1048,7 @@ static void vmx_io_instruction(unsigned 
     else
         port = regs->edx & 0xffff;
 
-    TRACE_VMEXIT(1,port);
+    TRACE_VMEXIT(1, port);
 
     size = (exit_qualification & 7) + 1;
     dir = test_bit(3, &exit_qualification); /* direction */
@@ -1114,6 +1111,9 @@ static void vmx_io_instruction(unsigned 
     } else {
         if ( port == 0xe9 && dir == IOREQ_WRITE && size == 1 )
             hvm_print_line(current, regs->eax); /* guest debug output */
+
+        if ( dir == IOREQ_WRITE )
+            TRACE_VMEXIT(2, regs->eax);
 
         regs->eip += inst_len;
         send_pio_req(port, 1, size, regs->eax, dir, df, 0);
@@ -2317,12 +2317,13 @@ asmlinkage void vmx_vmexit_handler(struc
 
 asmlinkage void vmx_trace_vmentry(void)
 {
+    struct vcpu *v = current;
     TRACE_5D(TRC_VMX_VMENTRY + current->vcpu_id,
-             this_cpu(trace_values)[0],
-             this_cpu(trace_values)[1],
-             this_cpu(trace_values)[2],
-             this_cpu(trace_values)[3],
-             this_cpu(trace_values)[4]);
+             v->arch.hvm_vcpu.hvm_trace_values[0],
+             v->arch.hvm_vcpu.hvm_trace_values[1],
+             v->arch.hvm_vcpu.hvm_trace_values[2],
+             v->arch.hvm_vcpu.hvm_trace_values[3],
+             v->arch.hvm_vcpu.hvm_trace_values[4]);
 
     TRACE_VMEXIT(0, 0);
     TRACE_VMEXIT(1, 0);
diff -r 9febecbeaeb0 -r 6f3c40ee2488 xen/include/asm-x86/hvm/support.h
--- a/xen/include/asm-x86/hvm/support.h Tue Nov 07 10:46:03 2006 +0000
+++ b/xen/include/asm-x86/hvm/support.h Tue Nov 07 10:48:48 2006 +0000
@@ -125,6 +125,9 @@ extern unsigned int opt_hvm_debug_level;
         domain_crash_synchronous();                             \
     } while (0)
 
+#define TRACE_VMEXIT(index, value)                              \
+    current->arch.hvm_vcpu.hvm_trace_values[index] = (value)
+
 extern int hvm_enabled;
 
 int hvm_copy_to_guest_phys(paddr_t paddr, void *buf, int size);
diff -r 9febecbeaeb0 -r 6f3c40ee2488 xen/include/asm-x86/hvm/vcpu.h
--- a/xen/include/asm-x86/hvm/vcpu.h    Tue Nov 07 10:46:03 2006 +0000
+++ b/xen/include/asm-x86/hvm/vcpu.h    Tue Nov 07 10:48:48 2006 +0000
@@ -47,6 +47,8 @@ struct hvm_vcpu {
     /* hlt ins emulation wakeup timer */
     struct timer        hlt_timer;
 
+    unsigned long       hvm_trace_values[5];
+
     union {
         struct arch_vmx_struct vmx;
         struct arch_svm_struct svm;

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] Enhance HVM xentrace:, Xen patchbot-unstable <=