# HG changeset patch
# User Keir Fraser <keir@xxxxxxx>
# Date 1302789264 -3600
# Node ID 757460e1ec487a5c2b78e6f7d667db826fa5a4a0
# Parent 3f00c5faa12aed4d0993391f71b7f12cf92f0208
hvm, xentrace: Extend HVMTRACE_ND so that a modifier to the basic
event reason can be ORed into the trace record.
Signed-off-by: Keir Fraser <keir@xxxxxxx>
---
diff -r 3f00c5faa12a -r 757460e1ec48 xen/arch/x86/hvm/svm/svm.c
--- a/xen/arch/x86/hvm/svm/svm.c Wed Apr 13 16:10:26 2011 +0100
+++ b/xen/arch/x86/hvm/svm/svm.c Thu Apr 14 14:54:24 2011 +0100
@@ -1729,11 +1729,11 @@
}
if ( hvm_long_mode_enabled(v) )
- HVMTRACE_ND(VMEXIT64, 1/*cycles*/, 3, exit_reason,
+ HVMTRACE_ND(VMEXIT64, 0, 1/*cycles*/, 3, exit_reason,
(uint32_t)regs->eip, (uint32_t)((uint64_t)regs->eip >> 32),
0, 0, 0);
else
- HVMTRACE_ND(VMEXIT, 1/*cycles*/, 2, exit_reason,
+ HVMTRACE_ND(VMEXIT, 0, 1/*cycles*/, 2, exit_reason,
(uint32_t)regs->eip,
0, 0, 0, 0);
@@ -2014,7 +2014,7 @@
asmlinkage void svm_trace_vmentry(void)
{
- HVMTRACE_ND (VMENTRY, 1/*cycles*/, 0, 0, 0, 0, 0, 0, 0);
+ HVMTRACE_ND(VMENTRY, 0, 1/*cycles*/, 0, 0, 0, 0, 0, 0, 0);
}
/*
diff -r 3f00c5faa12a -r 757460e1ec48 xen/arch/x86/hvm/vmx/vmx.c
--- a/xen/arch/x86/hvm/vmx/vmx.c Wed Apr 13 16:10:26 2011 +0100
+++ b/xen/arch/x86/hvm/vmx/vmx.c Thu Apr 14 14:54:24 2011 +0100
@@ -2251,11 +2251,11 @@
exit_reason = __vmread(VM_EXIT_REASON);
if ( hvm_long_mode_enabled(v) )
- HVMTRACE_ND(VMEXIT64, 1/*cycles*/, 3, exit_reason,
+ HVMTRACE_ND(VMEXIT64, 0, 1/*cycles*/, 3, exit_reason,
(uint32_t)regs->eip, (uint32_t)((uint64_t)regs->eip >> 32),
0, 0, 0);
else
- HVMTRACE_ND(VMEXIT, 1/*cycles*/, 2, exit_reason,
+ HVMTRACE_ND(VMEXIT, 0, 1/*cycles*/, 2, exit_reason,
(uint32_t)regs->eip,
0, 0, 0, 0);
@@ -2699,7 +2699,7 @@
vpid_sync_all();
out:
- HVMTRACE_ND (VMENTRY, 1/*cycles*/, 0, 0, 0, 0, 0, 0, 0);
+ HVMTRACE_ND(VMENTRY, 0, 1/*cycles*/, 0, 0, 0, 0, 0, 0, 0);
}
/*
diff -r 3f00c5faa12a -r 757460e1ec48 xen/include/asm-x86/hvm/trace.h
--- a/xen/include/asm-x86/hvm/trace.h Wed Apr 13 16:10:26 2011 +0100
+++ b/xen/include/asm-x86/hvm/trace.h Thu Apr 14 14:54:24 2011 +0100
@@ -58,38 +58,38 @@
#define TRC_PAR_LONG(par) (par)
#endif
-#define HVMTRACE_ND(evt, cycles, count, d1, d2, d3, d4, d5, d6) \
- do { \
- if ( unlikely(tb_init_done) && DO_TRC_HVM_ ## evt ) \
- { \
- struct { \
- u32 d[6]; \
- } _d; \
- _d.d[0]=(d1); \
- _d.d[1]=(d2); \
- _d.d[2]=(d3); \
- _d.d[3]=(d4); \
- _d.d[4]=(d5); \
- _d.d[5]=(d6); \
- __trace_var(TRC_HVM_ ## evt, cycles, \
- sizeof(*_d.d) * count, &_d); \
- } \
+#define HVMTRACE_ND(evt, modifier, cycles, count, d1, d2, d3, d4, d5, d6) \
+ do { \
+ if ( unlikely(tb_init_done) && DO_TRC_HVM_ ## evt ) \
+ { \
+ struct { \
+ u32 d[6]; \
+ } _d; \
+ _d.d[0]=(d1); \
+ _d.d[1]=(d2); \
+ _d.d[2]=(d3); \
+ _d.d[3]=(d4); \
+ _d.d[4]=(d5); \
+ _d.d[5]=(d6); \
+ __trace_var(TRC_HVM_ ## evt | (modifier), cycles, \
+ sizeof(*_d.d) * count, &_d); \
+ } \
} while(0)
#define HVMTRACE_6D(evt, d1, d2, d3, d4, d5, d6) \
- HVMTRACE_ND(evt, 0, 6, d1, d2, d3, d4, d5, d6)
+ HVMTRACE_ND(evt, 0, 0, 6, d1, d2, d3, d4, d5, d6)
#define HVMTRACE_5D(evt, d1, d2, d3, d4, d5) \
- HVMTRACE_ND(evt, 0, 5, d1, d2, d3, d4, d5, 0)
-#define HVMTRACE_4D(evt, d1, d2, d3, d4) \
- HVMTRACE_ND(evt, 0, 4, d1, d2, d3, d4, 0, 0)
-#define HVMTRACE_3D(evt, d1, d2, d3) \
- HVMTRACE_ND(evt, 0, 3, d1, d2, d3, 0, 0, 0)
-#define HVMTRACE_2D(evt, d1, d2) \
- HVMTRACE_ND(evt, 0, 2, d1, d2, 0, 0, 0, 0)
-#define HVMTRACE_1D(evt, d1) \
- HVMTRACE_ND(evt, 0, 1, d1, 0, 0, 0, 0, 0)
-#define HVMTRACE_0D(evt) \
- HVMTRACE_ND(evt, 0, 0, 0, 0, 0, 0, 0, 0)
+ HVMTRACE_ND(evt, 0, 0, 5, d1, d2, d3, d4, d5, 0)
+#define HVMTRACE_4D(evt, d1, d2, d3, d4) \
+ HVMTRACE_ND(evt, 0, 0, 4, d1, d2, d3, d4, 0, 0)
+#define HVMTRACE_3D(evt, d1, d2, d3) \
+ HVMTRACE_ND(evt, 0, 0, 3, d1, d2, d3, 0, 0, 0)
+#define HVMTRACE_2D(evt, d1, d2) \
+ HVMTRACE_ND(evt, 0, 0, 2, d1, d2, 0, 0, 0, 0)
+#define HVMTRACE_1D(evt, d1) \
+ HVMTRACE_ND(evt, 0, 0, 1, d1, 0, 0, 0, 0, 0)
+#define HVMTRACE_0D(evt) \
+ HVMTRACE_ND(evt, 0, 0, 0, 0, 0, 0, 0, 0, 0)
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|