All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0 of 3] Add ability for KVM TRACE to work on other archs
@ 2008-06-20  4:19 ` Jerone Young
  0 siblings, 0 replies; 20+ messages in thread
From: Jerone Young @ 2008-06-20  4:19 UTC (permalink / raw)
  To: kvm; +Cc: kvm-ppc

This set of patches allows KVM TRACE to work on other architectures by moving definitions to common places and changing how variables in data structures are used.

Signed-off-by: Jerone Young <jyoung5@.us.ibm.com>

5 files changed, 66 insertions(+), 51 deletions(-)
include/asm-x86/kvm.h      |   22 ---------------------
include/asm-x86/kvm_host.h |   18 -----------------
include/linux/kvm.h        |   10 ++++++---
include/linux/kvm_host.h   |   45 ++++++++++++++++++++++++++++++++++++++++++++
virt/kvm/kvm_trace.c       |   22 +++++++++++++--------

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 0 of 3] Add ability for KVM TRACE to work on other archs
@ 2008-06-20  4:19 ` Jerone Young
  0 siblings, 0 replies; 20+ messages in thread
From: Jerone Young @ 2008-06-20  4:19 UTC (permalink / raw)
  To: kvm; +Cc: kvm-ppc

This set of patches allows KVM TRACE to work on other architectures by moving definitions to common places and changing how variables in data structures are used.

Signed-off-by: Jerone Young <jyoung5@.us.ibm.com>

5 files changed, 66 insertions(+), 51 deletions(-)
include/asm-x86/kvm.h      |   22 ---------------------
include/asm-x86/kvm_host.h |   18 -----------------
include/linux/kvm.h        |   10 ++++++---
include/linux/kvm_host.h   |   45 ++++++++++++++++++++++++++++++++++++++++++++
virt/kvm/kvm_trace.c       |   22 +++++++++++++--------

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 1 of 3] Remove use of bit fields in kvm trace structure
  2008-06-20  4:19 ` Jerone Young
@ 2008-06-20  4:19   ` Jerone Young
  -1 siblings, 0 replies; 20+ messages in thread
From: Jerone Young @ 2008-06-20  4:19 UTC (permalink / raw)
  To: kvm; +Cc: kvm-ppc

2 files changed, 21 insertions(+), 11 deletions(-)
include/linux/kvm.h  |   10 +++++++---
virt/kvm/kvm_trace.c |   22 ++++++++++++++--------


This patch fixes kvmtrace use on big endian systems. When using bit fields the compiler will lay data out in the wrong order expected when laid down into a file. This fixes it by using one variable instead of using bit fields.

Signed-off-by: Jerone Young <jyoung5@us.ibm.com>

diff --git a/include/linux/kvm.h b/include/linux/kvm.h
--- a/include/linux/kvm.h
+++ b/include/linux/kvm.h
@@ -311,9 +311,13 @@ struct kvm_s390_interrupt {
 
 /* This structure represents a single trace buffer record. */
 struct kvm_trace_rec {
-	__u32 event:28;
-	__u32 extra_u32:3;
-	__u32 cycle_in:1;
+	/* variable rec_val
+ 	 * is split into:
+ 	 * bits 0 - 27  -> event id
+ 	 * bits 28 -30  -> number of extra data args of size u32
+ 	 * bits 31      -> binary indicator for if tsc is in record
+ 	 */
+	__u32 rec_val;
 	__u32 pid;
 	__u32 vcpu_id;
 	union {
diff --git a/virt/kvm/kvm_trace.c b/virt/kvm/kvm_trace.c
--- a/virt/kvm/kvm_trace.c
+++ b/virt/kvm/kvm_trace.c
@@ -54,12 +54,15 @@ static void kvm_add_trace(void *probe_pr
 	struct kvm_trace *kt = kvm_trace;
 	struct kvm_trace_rec rec;
 	struct kvm_vcpu *vcpu;
-	int    i, extra, size;
+	int    i, size;
+	u32 extra;
 
 	if (unlikely(kt->trace_state != KVM_TRACE_STATE_RUNNING))
 		return;
+	
+	/* set event id */	
+	rec.rec_val	= 0x0fffffff & va_arg(*args, u32);
 
-	rec.event	= va_arg(*args, u32);
 	vcpu		= va_arg(*args, struct kvm_vcpu *);
 	rec.pid		= current->tgid;
 	rec.vcpu_id	= vcpu->vcpu_id;
@@ -67,21 +70,24 @@ static void kvm_add_trace(void *probe_pr
 	extra   	= va_arg(*args, u32);
 	WARN_ON(!(extra <= KVM_TRC_EXTRA_MAX));
 	extra 		= min_t(u32, extra, KVM_TRC_EXTRA_MAX);
-	rec.extra_u32   = extra;
 
-	rec.cycle_in 	= p->cycle_in;
+	/* set inidicator for tcs record */
+	rec.rec_val 	|= 0x80000000 & (p->cycle_in << 31);
+	
+	/* set extra data num */
+	rec.rec_val     |= 0x70000000 & (extra << 28);
 
-	if (rec.cycle_in) {
+	if (p->cycle_in) {
 		rec.u.cycle.cycle_u64 = get_cycles();
 
-		for (i = 0; i < rec.extra_u32; i++)
+		for (i = 0; i < extra; i++)
 			rec.u.cycle.extra_u32[i] = va_arg(*args, u32);
 	} else {
-		for (i = 0; i < rec.extra_u32; i++)
+		for (i = 0; i < extra; i++)
 			rec.u.nocycle.extra_u32[i] = va_arg(*args, u32);
 	}
 
-	size = calc_rec_size(rec.cycle_in, rec.extra_u32 * sizeof(u32));
+	size = calc_rec_size(p->cycle_in, extra * sizeof(u32));
 	relay_write(kt->rchan, &rec, size);
 }
 

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 1 of 3] Remove use of bit fields in kvm trace structure
@ 2008-06-20  4:19   ` Jerone Young
  0 siblings, 0 replies; 20+ messages in thread
From: Jerone Young @ 2008-06-20  4:19 UTC (permalink / raw)
  To: kvm; +Cc: kvm-ppc

2 files changed, 21 insertions(+), 11 deletions(-)
include/linux/kvm.h  |   10 +++++++---
virt/kvm/kvm_trace.c |   22 ++++++++++++++--------


This patch fixes kvmtrace use on big endian systems. When using bit fields the compiler will lay data out in the wrong order expected when laid down into a file. This fixes it by using one variable instead of using bit fields.

Signed-off-by: Jerone Young <jyoung5@us.ibm.com>

diff --git a/include/linux/kvm.h b/include/linux/kvm.h
--- a/include/linux/kvm.h
+++ b/include/linux/kvm.h
@@ -311,9 +311,13 @@ struct kvm_s390_interrupt {
 
 /* This structure represents a single trace buffer record. */
 struct kvm_trace_rec {
-	__u32 event:28;
-	__u32 extra_u32:3;
-	__u32 cycle_in:1;
+	/* variable rec_val
+ 	 * is split into:
+ 	 * bits 0 - 27  -> event id
+ 	 * bits 28 -30  -> number of extra data args of size u32
+ 	 * bits 31      -> binary indicator for if tsc is in record
+ 	 */
+	__u32 rec_val;
 	__u32 pid;
 	__u32 vcpu_id;
 	union {
diff --git a/virt/kvm/kvm_trace.c b/virt/kvm/kvm_trace.c
--- a/virt/kvm/kvm_trace.c
+++ b/virt/kvm/kvm_trace.c
@@ -54,12 +54,15 @@ static void kvm_add_trace(void *probe_pr
 	struct kvm_trace *kt = kvm_trace;
 	struct kvm_trace_rec rec;
 	struct kvm_vcpu *vcpu;
-	int    i, extra, size;
+	int    i, size;
+	u32 extra;
 
 	if (unlikely(kt->trace_state != KVM_TRACE_STATE_RUNNING))
 		return;
+	
+	/* set event id */	
+	rec.rec_val	= 0x0fffffff & va_arg(*args, u32);
 
-	rec.event	= va_arg(*args, u32);
 	vcpu		= va_arg(*args, struct kvm_vcpu *);
 	rec.pid		= current->tgid;
 	rec.vcpu_id	= vcpu->vcpu_id;
@@ -67,21 +70,24 @@ static void kvm_add_trace(void *probe_pr
 	extra   	= va_arg(*args, u32);
 	WARN_ON(!(extra <= KVM_TRC_EXTRA_MAX));
 	extra 		= min_t(u32, extra, KVM_TRC_EXTRA_MAX);
-	rec.extra_u32   = extra;
 
-	rec.cycle_in 	= p->cycle_in;
+	/* set inidicator for tcs record */
+	rec.rec_val 	|= 0x80000000 & (p->cycle_in << 31);
+	
+	/* set extra data num */
+	rec.rec_val     |= 0x70000000 & (extra << 28);
 
-	if (rec.cycle_in) {
+	if (p->cycle_in) {
 		rec.u.cycle.cycle_u64 = get_cycles();
 
-		for (i = 0; i < rec.extra_u32; i++)
+		for (i = 0; i < extra; i++)
 			rec.u.cycle.extra_u32[i] = va_arg(*args, u32);
 	} else {
-		for (i = 0; i < rec.extra_u32; i++)
+		for (i = 0; i < extra; i++)
 			rec.u.nocycle.extra_u32[i] = va_arg(*args, u32);
 	}
 
-	size = calc_rec_size(rec.cycle_in, rec.extra_u32 * sizeof(u32));
+	size = calc_rec_size(p->cycle_in, extra * sizeof(u32));
 	relay_write(kt->rchan, &rec, size);
 }
 

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 2 of 3] Move KVM TRACE DEFINITIONS to common header
  2008-06-20  4:19 ` Jerone Young
@ 2008-06-20  4:19   ` Jerone Young
  -1 siblings, 0 replies; 20+ messages in thread
From: Jerone Young @ 2008-06-20  4:19 UTC (permalink / raw)
  To: kvm; +Cc: kvm-ppc

3 files changed, 40 insertions(+), 40 deletions(-)
include/asm-x86/kvm.h      |   22 ----------------------
include/asm-x86/kvm_host.h |   18 ------------------
include/linux/kvm_host.h   |   40 ++++++++++++++++++++++++++++++++++++++++


This patch moves moves definitions required to use kvm trace from x86 specific kvm headers to common kvm headers.

Signed-off-by: Jerone Young <jyoung5@us.ibm.com>

diff --git a/include/asm-x86/kvm.h b/include/asm-x86/kvm.h
--- a/include/asm-x86/kvm.h
+++ b/include/asm-x86/kvm.h
@@ -208,26 +208,4 @@ struct kvm_pit_state {
 struct kvm_pit_state {
 	struct kvm_pit_channel_state channels[3];
 };
-
-#define KVM_TRC_INJ_VIRQ         (KVM_TRC_HANDLER + 0x02)
-#define KVM_TRC_REDELIVER_EVT    (KVM_TRC_HANDLER + 0x03)
-#define KVM_TRC_PEND_INTR        (KVM_TRC_HANDLER + 0x04)
-#define KVM_TRC_IO_READ          (KVM_TRC_HANDLER + 0x05)
-#define KVM_TRC_IO_WRITE         (KVM_TRC_HANDLER + 0x06)
-#define KVM_TRC_CR_READ          (KVM_TRC_HANDLER + 0x07)
-#define KVM_TRC_CR_WRITE         (KVM_TRC_HANDLER + 0x08)
-#define KVM_TRC_DR_READ          (KVM_TRC_HANDLER + 0x09)
-#define KVM_TRC_DR_WRITE         (KVM_TRC_HANDLER + 0x0A)
-#define KVM_TRC_MSR_READ         (KVM_TRC_HANDLER + 0x0B)
-#define KVM_TRC_MSR_WRITE        (KVM_TRC_HANDLER + 0x0C)
-#define KVM_TRC_CPUID            (KVM_TRC_HANDLER + 0x0D)
-#define KVM_TRC_INTR             (KVM_TRC_HANDLER + 0x0E)
-#define KVM_TRC_NMI              (KVM_TRC_HANDLER + 0x0F)
-#define KVM_TRC_VMMCALL          (KVM_TRC_HANDLER + 0x10)
-#define KVM_TRC_HLT              (KVM_TRC_HANDLER + 0x11)
-#define KVM_TRC_CLTS             (KVM_TRC_HANDLER + 0x12)
-#define KVM_TRC_LMSW             (KVM_TRC_HANDLER + 0x13)
-#define KVM_TRC_APIC_ACCESS      (KVM_TRC_HANDLER + 0x14)
-#define KVM_TRC_TDP_FAULT        (KVM_TRC_HANDLER + 0x15)
-
 #endif
diff --git a/include/asm-x86/kvm_host.h b/include/asm-x86/kvm_host.h
--- a/include/asm-x86/kvm_host.h
+++ b/include/asm-x86/kvm_host.h
@@ -683,24 +683,6 @@ enum {
 	TASK_SWITCH_GATE = 3,
 };
 
-#define KVMTRACE_5D(evt, vcpu, d1, d2, d3, d4, d5, name) \
-	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
-						vcpu, 5, d1, d2, d3, d4, d5)
-#define KVMTRACE_4D(evt, vcpu, d1, d2, d3, d4, name) \
-	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
-						vcpu, 4, d1, d2, d3, d4, 0)
-#define KVMTRACE_3D(evt, vcpu, d1, d2, d3, name) \
-	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
-						vcpu, 3, d1, d2, d3, 0, 0)
-#define KVMTRACE_2D(evt, vcpu, d1, d2, name) \
-	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
-						vcpu, 2, d1, d2, 0, 0, 0)
-#define KVMTRACE_1D(evt, vcpu, d1, name) \
-	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
-						vcpu, 1, d1, 0, 0, 0, 0)
-#define KVMTRACE_0D(evt, vcpu, name) \
-	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
-						vcpu, 0, 0, 0, 0, 0, 0)
 
 #ifdef CONFIG_64BIT
 #define KVM_EX_ENTRY ".quad"
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
--- a/include/linux/kvm_host.h
+++ b/include/linux/kvm_host.h
@@ -322,6 +322,46 @@ extern struct dentry *kvm_debugfs_dir;
 #ifdef CONFIG_KVM_TRACE
 int kvm_trace_ioctl(unsigned int ioctl, unsigned long arg);
 void kvm_trace_cleanup(void);
+
+#define KVMTRACE_5D(evt, vcpu, d1, d2, d3, d4, d5, name) \
+	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
+						vcpu, 5, d1, d2, d3, d4, d5)
+#define KVMTRACE_4D(evt, vcpu, d1, d2, d3, d4, name) \
+	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
+						vcpu, 4, d1, d2, d3, d4, 0)
+#define KVMTRACE_3D(evt, vcpu, d1, d2, d3, name) \
+	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
+						vcpu, 3, d1, d2, d3, 0, 0)
+#define KVMTRACE_2D(evt, vcpu, d1, d2, name) \
+	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
+						vcpu, 2, d1, d2, 0, 0, 0)
+#define KVMTRACE_1D(evt, vcpu, d1, name) \
+	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
+						vcpu, 1, d1, 0, 0, 0, 0)
+#define KVMTRACE_0D(evt, vcpu, name) \
+	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
+						vcpu, 0, 0, 0, 0, 0, 0)
+
+#define KVM_TRC_INJ_VIRQ         (KVM_TRC_HANDLER + 0x02)
+#define KVM_TRC_REDELIVER_EVT    (KVM_TRC_HANDLER + 0x03)
+#define KVM_TRC_PEND_INTR        (KVM_TRC_HANDLER + 0x04)
+#define KVM_TRC_IO_READ          (KVM_TRC_HANDLER + 0x05)
+#define KVM_TRC_IO_WRITE         (KVM_TRC_HANDLER + 0x06)
+#define KVM_TRC_CR_READ          (KVM_TRC_HANDLER + 0x07)
+#define KVM_TRC_CR_WRITE         (KVM_TRC_HANDLER + 0x08)
+#define KVM_TRC_DR_READ          (KVM_TRC_HANDLER + 0x09)
+#define KVM_TRC_DR_WRITE         (KVM_TRC_HANDLER + 0x0A)
+#define KVM_TRC_MSR_READ         (KVM_TRC_HANDLER + 0x0B)
+#define KVM_TRC_MSR_WRITE        (KVM_TRC_HANDLER + 0x0C)
+#define KVM_TRC_CPUID            (KVM_TRC_HANDLER + 0x0D)
+#define KVM_TRC_INTR             (KVM_TRC_HANDLER + 0x0E)
+#define KVM_TRC_NMI              (KVM_TRC_HANDLER + 0x0F)
+#define KVM_TRC_VMMCALL          (KVM_TRC_HANDLER + 0x10)
+#define KVM_TRC_HLT              (KVM_TRC_HANDLER + 0x11)
+#define KVM_TRC_CLTS             (KVM_TRC_HANDLER + 0x12)
+#define KVM_TRC_LMSW             (KVM_TRC_HANDLER + 0x13)
+#define KVM_TRC_APIC_ACCESS      (KVM_TRC_HANDLER + 0x14)
+#define KVM_TRC_TDP_FAULT        (KVM_TRC_HANDLER + 0x15)
 #else
 static inline
 int kvm_trace_ioctl(unsigned int ioctl, unsigned long arg)

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 2 of 3] Move KVM TRACE DEFINITIONS to common header
@ 2008-06-20  4:19   ` Jerone Young
  0 siblings, 0 replies; 20+ messages in thread
From: Jerone Young @ 2008-06-20  4:19 UTC (permalink / raw)
  To: kvm; +Cc: kvm-ppc

3 files changed, 40 insertions(+), 40 deletions(-)
include/asm-x86/kvm.h      |   22 ----------------------
include/asm-x86/kvm_host.h |   18 ------------------
include/linux/kvm_host.h   |   40 ++++++++++++++++++++++++++++++++++++++++


This patch moves moves definitions required to use kvm trace from x86 specific kvm headers to common kvm headers.

Signed-off-by: Jerone Young <jyoung5@us.ibm.com>

diff --git a/include/asm-x86/kvm.h b/include/asm-x86/kvm.h
--- a/include/asm-x86/kvm.h
+++ b/include/asm-x86/kvm.h
@@ -208,26 +208,4 @@ struct kvm_pit_state {
 struct kvm_pit_state {
 	struct kvm_pit_channel_state channels[3];
 };
-
-#define KVM_TRC_INJ_VIRQ         (KVM_TRC_HANDLER + 0x02)
-#define KVM_TRC_REDELIVER_EVT    (KVM_TRC_HANDLER + 0x03)
-#define KVM_TRC_PEND_INTR        (KVM_TRC_HANDLER + 0x04)
-#define KVM_TRC_IO_READ          (KVM_TRC_HANDLER + 0x05)
-#define KVM_TRC_IO_WRITE         (KVM_TRC_HANDLER + 0x06)
-#define KVM_TRC_CR_READ          (KVM_TRC_HANDLER + 0x07)
-#define KVM_TRC_CR_WRITE         (KVM_TRC_HANDLER + 0x08)
-#define KVM_TRC_DR_READ          (KVM_TRC_HANDLER + 0x09)
-#define KVM_TRC_DR_WRITE         (KVM_TRC_HANDLER + 0x0A)
-#define KVM_TRC_MSR_READ         (KVM_TRC_HANDLER + 0x0B)
-#define KVM_TRC_MSR_WRITE        (KVM_TRC_HANDLER + 0x0C)
-#define KVM_TRC_CPUID            (KVM_TRC_HANDLER + 0x0D)
-#define KVM_TRC_INTR             (KVM_TRC_HANDLER + 0x0E)
-#define KVM_TRC_NMI              (KVM_TRC_HANDLER + 0x0F)
-#define KVM_TRC_VMMCALL          (KVM_TRC_HANDLER + 0x10)
-#define KVM_TRC_HLT              (KVM_TRC_HANDLER + 0x11)
-#define KVM_TRC_CLTS             (KVM_TRC_HANDLER + 0x12)
-#define KVM_TRC_LMSW             (KVM_TRC_HANDLER + 0x13)
-#define KVM_TRC_APIC_ACCESS      (KVM_TRC_HANDLER + 0x14)
-#define KVM_TRC_TDP_FAULT        (KVM_TRC_HANDLER + 0x15)
-
 #endif
diff --git a/include/asm-x86/kvm_host.h b/include/asm-x86/kvm_host.h
--- a/include/asm-x86/kvm_host.h
+++ b/include/asm-x86/kvm_host.h
@@ -683,24 +683,6 @@ enum {
 	TASK_SWITCH_GATE = 3,
 };
 
-#define KVMTRACE_5D(evt, vcpu, d1, d2, d3, d4, d5, name) \
-	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
-						vcpu, 5, d1, d2, d3, d4, d5)
-#define KVMTRACE_4D(evt, vcpu, d1, d2, d3, d4, name) \
-	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
-						vcpu, 4, d1, d2, d3, d4, 0)
-#define KVMTRACE_3D(evt, vcpu, d1, d2, d3, name) \
-	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
-						vcpu, 3, d1, d2, d3, 0, 0)
-#define KVMTRACE_2D(evt, vcpu, d1, d2, name) \
-	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
-						vcpu, 2, d1, d2, 0, 0, 0)
-#define KVMTRACE_1D(evt, vcpu, d1, name) \
-	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
-						vcpu, 1, d1, 0, 0, 0, 0)
-#define KVMTRACE_0D(evt, vcpu, name) \
-	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
-						vcpu, 0, 0, 0, 0, 0, 0)
 
 #ifdef CONFIG_64BIT
 #define KVM_EX_ENTRY ".quad"
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
--- a/include/linux/kvm_host.h
+++ b/include/linux/kvm_host.h
@@ -322,6 +322,46 @@ extern struct dentry *kvm_debugfs_dir;
 #ifdef CONFIG_KVM_TRACE
 int kvm_trace_ioctl(unsigned int ioctl, unsigned long arg);
 void kvm_trace_cleanup(void);
+
+#define KVMTRACE_5D(evt, vcpu, d1, d2, d3, d4, d5, name) \
+	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
+						vcpu, 5, d1, d2, d3, d4, d5)
+#define KVMTRACE_4D(evt, vcpu, d1, d2, d3, d4, name) \
+	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
+						vcpu, 4, d1, d2, d3, d4, 0)
+#define KVMTRACE_3D(evt, vcpu, d1, d2, d3, name) \
+	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
+						vcpu, 3, d1, d2, d3, 0, 0)
+#define KVMTRACE_2D(evt, vcpu, d1, d2, name) \
+	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
+						vcpu, 2, d1, d2, 0, 0, 0)
+#define KVMTRACE_1D(evt, vcpu, d1, name) \
+	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
+						vcpu, 1, d1, 0, 0, 0, 0)
+#define KVMTRACE_0D(evt, vcpu, name) \
+	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
+						vcpu, 0, 0, 0, 0, 0, 0)
+
+#define KVM_TRC_INJ_VIRQ         (KVM_TRC_HANDLER + 0x02)
+#define KVM_TRC_REDELIVER_EVT    (KVM_TRC_HANDLER + 0x03)
+#define KVM_TRC_PEND_INTR        (KVM_TRC_HANDLER + 0x04)
+#define KVM_TRC_IO_READ          (KVM_TRC_HANDLER + 0x05)
+#define KVM_TRC_IO_WRITE         (KVM_TRC_HANDLER + 0x06)
+#define KVM_TRC_CR_READ          (KVM_TRC_HANDLER + 0x07)
+#define KVM_TRC_CR_WRITE         (KVM_TRC_HANDLER + 0x08)
+#define KVM_TRC_DR_READ          (KVM_TRC_HANDLER + 0x09)
+#define KVM_TRC_DR_WRITE         (KVM_TRC_HANDLER + 0x0A)
+#define KVM_TRC_MSR_READ         (KVM_TRC_HANDLER + 0x0B)
+#define KVM_TRC_MSR_WRITE        (KVM_TRC_HANDLER + 0x0C)
+#define KVM_TRC_CPUID            (KVM_TRC_HANDLER + 0x0D)
+#define KVM_TRC_INTR             (KVM_TRC_HANDLER + 0x0E)
+#define KVM_TRC_NMI              (KVM_TRC_HANDLER + 0x0F)
+#define KVM_TRC_VMMCALL          (KVM_TRC_HANDLER + 0x10)
+#define KVM_TRC_HLT              (KVM_TRC_HANDLER + 0x11)
+#define KVM_TRC_CLTS             (KVM_TRC_HANDLER + 0x12)
+#define KVM_TRC_LMSW             (KVM_TRC_HANDLER + 0x13)
+#define KVM_TRC_APIC_ACCESS      (KVM_TRC_HANDLER + 0x14)
+#define KVM_TRC_TDP_FAULT        (KVM_TRC_HANDLER + 0x15)
 #else
 static inline
 int kvm_trace_ioctl(unsigned int ioctl, unsigned long arg)

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 3 of 3] Add new KVM TRACE events
  2008-06-20  4:19 ` Jerone Young
@ 2008-06-20  4:19   ` Jerone Young
  -1 siblings, 0 replies; 20+ messages in thread
From: Jerone Young @ 2008-06-20  4:19 UTC (permalink / raw)
  To: kvm; +Cc: kvm-ppc

1 file changed, 5 insertions(+)
include/linux/kvm_host.h |    5 +++++


Add new kvm trace events.
	- context switch
	- TLB write
	- TLB invalidate
	- guest TLB write
	- shadow TLB write

Signed-off-by: Jerone Young <jyoung5@us.ibm.com>

diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
--- a/include/linux/kvm_host.h
+++ b/include/linux/kvm_host.h
@@ -362,6 +362,11 @@ void kvm_trace_cleanup(void);
 #define KVM_TRC_LMSW             (KVM_TRC_HANDLER + 0x13)
 #define KVM_TRC_APIC_ACCESS      (KVM_TRC_HANDLER + 0x14)
 #define KVM_TRC_TDP_FAULT        (KVM_TRC_HANDLER + 0x15)
+#define KVM_TRC_CONT_SWITCH      (KVM_TRC_HANDLER + 0x16) /* context switch */
+#define KVM_TRC_TLB_WRITE        (KVM_TRC_HANDLER + 0x17) /* TLB write */
+#define KVM_TRC_TLB_INVAL        (KVM_TRC_HANDLER + 0x18) /* TLB invalidate */
+#define KVM_TRC_GTLB_WRITE       (KVM_TRC_HANDLER + 0x19) /* guest TLB write */
+#define KVM_TRC_STLB_WRITE       (KVM_TRC_HANDLER + 0x20) /* shadow TLB write */
 #else
 static inline
 int kvm_trace_ioctl(unsigned int ioctl, unsigned long arg)

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 3 of 3] Add new KVM TRACE events
@ 2008-06-20  4:19   ` Jerone Young
  0 siblings, 0 replies; 20+ messages in thread
From: Jerone Young @ 2008-06-20  4:19 UTC (permalink / raw)
  To: kvm; +Cc: kvm-ppc

1 file changed, 5 insertions(+)
include/linux/kvm_host.h |    5 +++++


Add new kvm trace events.
	- context switch
	- TLB write
	- TLB invalidate
	- guest TLB write
	- shadow TLB write

Signed-off-by: Jerone Young <jyoung5@us.ibm.com>

diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
--- a/include/linux/kvm_host.h
+++ b/include/linux/kvm_host.h
@@ -362,6 +362,11 @@ void kvm_trace_cleanup(void);
 #define KVM_TRC_LMSW             (KVM_TRC_HANDLER + 0x13)
 #define KVM_TRC_APIC_ACCESS      (KVM_TRC_HANDLER + 0x14)
 #define KVM_TRC_TDP_FAULT        (KVM_TRC_HANDLER + 0x15)
+#define KVM_TRC_CONT_SWITCH      (KVM_TRC_HANDLER + 0x16) /* context switch */
+#define KVM_TRC_TLB_WRITE        (KVM_TRC_HANDLER + 0x17) /* TLB write */
+#define KVM_TRC_TLB_INVAL        (KVM_TRC_HANDLER + 0x18) /* TLB invalidate */
+#define KVM_TRC_GTLB_WRITE       (KVM_TRC_HANDLER + 0x19) /* guest TLB write */
+#define KVM_TRC_STLB_WRITE       (KVM_TRC_HANDLER + 0x20) /* shadow TLB write */
 #else
 static inline
 int kvm_trace_ioctl(unsigned int ioctl, unsigned long arg)

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 1 of 3] Remove use of bit fields in kvm trace structure
  2008-06-20  4:19   ` Jerone Young
@ 2008-06-20 16:59     ` Hollis Blanchard
  -1 siblings, 0 replies; 20+ messages in thread
From: Hollis Blanchard @ 2008-06-20 16:59 UTC (permalink / raw)
  To: Avi Kivity; +Cc: kvm, kvm-ppc, Liu, Eric E, Jerone Young

Slightly unconventional coding style, but Acked-by: Hollis Blanchard
<hollisb@us.ibm.com>

Eric, as I mentioned previously, bitfields cannot be used in portable
binary formats.

Avi, would you apply please?

-- 
Hollis Blanchard
IBM Linux Technology Center

On Thu, 2008-06-19 at 23:19 -0500, Jerone Young wrote:
> 2 files changed, 21 insertions(+), 11 deletions(-)
> include/linux/kvm.h  |   10 +++++++---
> virt/kvm/kvm_trace.c |   22 ++++++++++++++--------
> 
> 
> This patch fixes kvmtrace use on big endian systems. When using bit fields the compiler will lay data out in the wrong order expected when laid down into a file. This fixes it by using one variable instead of using bit fields.
> 
> Signed-off-by: Jerone Young <jyoung5@us.ibm.com>
> 
> diff --git a/include/linux/kvm.h b/include/linux/kvm.h
> --- a/include/linux/kvm.h
> +++ b/include/linux/kvm.h
> @@ -311,9 +311,13 @@ struct kvm_s390_interrupt {
> 
>  /* This structure represents a single trace buffer record. */
>  struct kvm_trace_rec {
> -	__u32 event:28;
> -	__u32 extra_u32:3;
> -	__u32 cycle_in:1;
> +	/* variable rec_val
> + 	 * is split into:
> + 	 * bits 0 - 27  -> event id
> + 	 * bits 28 -30  -> number of extra data args of size u32
> + 	 * bits 31      -> binary indicator for if tsc is in record
> + 	 */
> +	__u32 rec_val;
>  	__u32 pid;
>  	__u32 vcpu_id;
>  	union {
> diff --git a/virt/kvm/kvm_trace.c b/virt/kvm/kvm_trace.c
> --- a/virt/kvm/kvm_trace.c
> +++ b/virt/kvm/kvm_trace.c
> @@ -54,12 +54,15 @@ static void kvm_add_trace(void *probe_pr
>  	struct kvm_trace *kt = kvm_trace;
>  	struct kvm_trace_rec rec;
>  	struct kvm_vcpu *vcpu;
> -	int    i, extra, size;
> +	int    i, size;
> +	u32 extra;
> 
>  	if (unlikely(kt->trace_state != KVM_TRACE_STATE_RUNNING))
>  		return;
> +	
> +	/* set event id */	
> +	rec.rec_val	= 0x0fffffff & va_arg(*args, u32);
> 
> -	rec.event	= va_arg(*args, u32);
>  	vcpu		= va_arg(*args, struct kvm_vcpu *);
>  	rec.pid		= current->tgid;
>  	rec.vcpu_id	= vcpu->vcpu_id;
> @@ -67,21 +70,24 @@ static void kvm_add_trace(void *probe_pr
>  	extra   	= va_arg(*args, u32);
>  	WARN_ON(!(extra <= KVM_TRC_EXTRA_MAX));
>  	extra 		= min_t(u32, extra, KVM_TRC_EXTRA_MAX);
> -	rec.extra_u32   = extra;
> 
> -	rec.cycle_in 	= p->cycle_in;
> +	/* set inidicator for tcs record */
> +	rec.rec_val 	|= 0x80000000 & (p->cycle_in << 31);
> +	
> +	/* set extra data num */
> +	rec.rec_val     |= 0x70000000 & (extra << 28);
> 
> -	if (rec.cycle_in) {
> +	if (p->cycle_in) {
>  		rec.u.cycle.cycle_u64 = get_cycles();
> 
> -		for (i = 0; i < rec.extra_u32; i++)
> +		for (i = 0; i < extra; i++)
>  			rec.u.cycle.extra_u32[i] = va_arg(*args, u32);
>  	} else {
> -		for (i = 0; i < rec.extra_u32; i++)
> +		for (i = 0; i < extra; i++)
>  			rec.u.nocycle.extra_u32[i] = va_arg(*args, u32);
>  	}
> 
> -	size = calc_rec_size(rec.cycle_in, rec.extra_u32 * sizeof(u32));
> +	size = calc_rec_size(p->cycle_in, extra * sizeof(u32));
>  	relay_write(kt->rchan, &rec, size);
>  }
> 
> --
> To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 1 of 3] Remove use of bit fields in kvm trace structure
@ 2008-06-20 16:59     ` Hollis Blanchard
  0 siblings, 0 replies; 20+ messages in thread
From: Hollis Blanchard @ 2008-06-20 16:59 UTC (permalink / raw)
  To: Avi Kivity; +Cc: kvm, kvm-ppc, Liu, Eric E, Jerone Young

Slightly unconventional coding style, but Acked-by: Hollis Blanchard
<hollisb@us.ibm.com>

Eric, as I mentioned previously, bitfields cannot be used in portable
binary formats.

Avi, would you apply please?

-- 
Hollis Blanchard
IBM Linux Technology Center

On Thu, 2008-06-19 at 23:19 -0500, Jerone Young wrote:
> 2 files changed, 21 insertions(+), 11 deletions(-)
> include/linux/kvm.h  |   10 +++++++---
> virt/kvm/kvm_trace.c |   22 ++++++++++++++--------
> 
> 
> This patch fixes kvmtrace use on big endian systems. When using bit fields the compiler will lay data out in the wrong order expected when laid down into a file. This fixes it by using one variable instead of using bit fields.
> 
> Signed-off-by: Jerone Young <jyoung5@us.ibm.com>
> 
> diff --git a/include/linux/kvm.h b/include/linux/kvm.h
> --- a/include/linux/kvm.h
> +++ b/include/linux/kvm.h
> @@ -311,9 +311,13 @@ struct kvm_s390_interrupt {
> 
>  /* This structure represents a single trace buffer record. */
>  struct kvm_trace_rec {
> -	__u32 event:28;
> -	__u32 extra_u32:3;
> -	__u32 cycle_in:1;
> +	/* variable rec_val
> + 	 * is split into:
> + 	 * bits 0 - 27  -> event id
> + 	 * bits 28 -30  -> number of extra data args of size u32
> + 	 * bits 31      -> binary indicator for if tsc is in record
> + 	 */
> +	__u32 rec_val;
>  	__u32 pid;
>  	__u32 vcpu_id;
>  	union {
> diff --git a/virt/kvm/kvm_trace.c b/virt/kvm/kvm_trace.c
> --- a/virt/kvm/kvm_trace.c
> +++ b/virt/kvm/kvm_trace.c
> @@ -54,12 +54,15 @@ static void kvm_add_trace(void *probe_pr
>  	struct kvm_trace *kt = kvm_trace;
>  	struct kvm_trace_rec rec;
>  	struct kvm_vcpu *vcpu;
> -	int    i, extra, size;
> +	int    i, size;
> +	u32 extra;
> 
>  	if (unlikely(kt->trace_state != KVM_TRACE_STATE_RUNNING))
>  		return;
> +	
> +	/* set event id */	
> +	rec.rec_val	= 0x0fffffff & va_arg(*args, u32);
> 
> -	rec.event	= va_arg(*args, u32);
>  	vcpu		= va_arg(*args, struct kvm_vcpu *);
>  	rec.pid		= current->tgid;
>  	rec.vcpu_id	= vcpu->vcpu_id;
> @@ -67,21 +70,24 @@ static void kvm_add_trace(void *probe_pr
>  	extra   	= va_arg(*args, u32);
>  	WARN_ON(!(extra <= KVM_TRC_EXTRA_MAX));
>  	extra 		= min_t(u32, extra, KVM_TRC_EXTRA_MAX);
> -	rec.extra_u32   = extra;
> 
> -	rec.cycle_in 	= p->cycle_in;
> +	/* set inidicator for tcs record */
> +	rec.rec_val 	|= 0x80000000 & (p->cycle_in << 31);
> +	
> +	/* set extra data num */
> +	rec.rec_val     |= 0x70000000 & (extra << 28);
> 
> -	if (rec.cycle_in) {
> +	if (p->cycle_in) {
>  		rec.u.cycle.cycle_u64 = get_cycles();
> 
> -		for (i = 0; i < rec.extra_u32; i++)
> +		for (i = 0; i < extra; i++)
>  			rec.u.cycle.extra_u32[i] = va_arg(*args, u32);
>  	} else {
> -		for (i = 0; i < rec.extra_u32; i++)
> +		for (i = 0; i < extra; i++)
>  			rec.u.nocycle.extra_u32[i] = va_arg(*args, u32);
>  	}
> 
> -	size = calc_rec_size(rec.cycle_in, rec.extra_u32 * sizeof(u32));
> +	size = calc_rec_size(p->cycle_in, extra * sizeof(u32));
>  	relay_write(kt->rchan, &rec, size);
>  }
> 
> --
> To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 1 of 3] Remove use of bit fields in kvm trace structure
  2008-06-20  4:19   ` Jerone Young
@ 2008-06-23  2:33     ` Avi Kivity
  -1 siblings, 0 replies; 20+ messages in thread
From: Avi Kivity @ 2008-06-23  2:33 UTC (permalink / raw)
  To: Jerone Young; +Cc: kvm, kvm-ppc

Jerone Young wrote:
>
> This patch fixes kvmtrace use on big endian systems. When using bit fields the compiler will lay data out in the wrong order expected when laid down into a file. This fixes it by using one variable instead of using bit fields.
>
> Signed-off-by: Jerone Young <jyoung5@us.ibm.com>
>
> diff --git a/include/linux/kvm.h b/include/linux/kvm.h
> --- a/include/linux/kvm.h
> +++ b/include/linux/kvm.h
> @@ -311,9 +311,13 @@ struct kvm_s390_interrupt {
>  
>  /* This structure represents a single trace buffer record. */
>  struct kvm_trace_rec {
> -	__u32 event:28;
> -	__u32 extra_u32:3;
> -	__u32 cycle_in:1;
> +	/* variable rec_val
> + 	 * is split into:
> + 	 * bits 0 - 27  -> event id
> + 	 * bits 28 -30  -> number of extra data args of size u32
> + 	 * bits 31      -> binary indicator for if tsc is in record
> + 	 */
> +	__u32 rec_val;
>   

Please use #defines for shifts and masks instead of open-coding.  These 
#defines would be part of the public interface.

-- 
Do not meddle in the internals of kernels, for they are subtle and quick to panic.


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 1 of 3] Remove use of bit fields in kvm trace structure
@ 2008-06-23  2:33     ` Avi Kivity
  0 siblings, 0 replies; 20+ messages in thread
From: Avi Kivity @ 2008-06-23  2:33 UTC (permalink / raw)
  To: Jerone Young; +Cc: kvm, kvm-ppc

Jerone Young wrote:
>
> This patch fixes kvmtrace use on big endian systems. When using bit fields the compiler will lay data out in the wrong order expected when laid down into a file. This fixes it by using one variable instead of using bit fields.
>
> Signed-off-by: Jerone Young <jyoung5@us.ibm.com>
>
> diff --git a/include/linux/kvm.h b/include/linux/kvm.h
> --- a/include/linux/kvm.h
> +++ b/include/linux/kvm.h
> @@ -311,9 +311,13 @@ struct kvm_s390_interrupt {
>  
>  /* This structure represents a single trace buffer record. */
>  struct kvm_trace_rec {
> -	__u32 event:28;
> -	__u32 extra_u32:3;
> -	__u32 cycle_in:1;
> +	/* variable rec_val
> + 	 * is split into:
> + 	 * bits 0 - 27  -> event id
> + 	 * bits 28 -30  -> number of extra data args of size u32
> + 	 * bits 31      -> binary indicator for if tsc is in record
> + 	 */
> +	__u32 rec_val;
>   

Please use #defines for shifts and masks instead of open-coding.  These 
#defines would be part of the public interface.

-- 
Do not meddle in the internals of kernels, for they are subtle and quick to panic.


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 2 of 3] Move KVM TRACE DEFINITIONS to common header
  2008-06-20  4:19   ` Jerone Young
@ 2008-06-29 11:50     ` Avi Kivity
  -1 siblings, 0 replies; 20+ messages in thread
From: Avi Kivity @ 2008-06-29 11:50 UTC (permalink / raw)
  To: Jerone Young; +Cc: kvm, kvm-ppc

Jerone Young wrote:
> 3 files changed, 40 insertions(+), 40 deletions(-)
> include/asm-x86/kvm.h      |   22 ----------------------
> include/asm-x86/kvm_host.h |   18 ------------------
> include/linux/kvm_host.h   |   40 ++++++++++++++++++++++++++++++++++++++++
>
>
> This patch moves moves definitions required to use kvm trace from x86 specific kvm headers to common kvm headers.
>
>   

I applied patch 1, but:

> 						vcpu, 0, 0, 0, 0, 0, 0)
>  
>  #ifdef CONFIG_64BIT
>  #define KVM_EX_ENTRY ".quad"
> diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
> --- a/include/linux/kvm_host.h
> +++ b/include/linux/kvm_host.h
> @@ -322,6 +322,46 @@ extern struct dentry *kvm_debugfs_dir;
>  #ifdef CONFIG_KVM_TRACE
>  int kvm_trace_ioctl(unsigned int ioctl, unsigned long arg);
>  void kvm_trace_cleanup(void);
> +#define KVM_TRC_INJ_VIRQ         (KVM_TRC_HANDLER + 0x02)
> +#define KVM_TRC_REDELIVER_EVT    (KVM_TRC_HANDLER + 0x03)
> +#define KVM_TRC_PEND_INTR        (KVM_TRC_HANDLER + 0x04)
> +#define KVM_TRC_IO_READ          (KVM_TRC_HANDLER + 0x05)
> +#define KVM_TRC_IO_WRITE         (KVM_TRC_HANDLER + 0x06)
> +#define KVM_TRC_CR_READ          (KVM_TRC_HANDLER + 0x07)
> +#define KVM_TRC_CR_WRITE         (KVM_TRC_HANDLER + 0x08)
> +#define KVM_TRC_DR_READ          (KVM_TRC_HANDLER + 0x09)
> +#define KVM_TRC_DR_WRITE         (KVM_TRC_HANDLER + 0x0A)
> +#define KVM_TRC_MSR_READ         (KVM_TRC_HANDLER + 0x0B)
> +#define KVM_TRC_MSR_WRITE        (KVM_TRC_HANDLER + 0x0C)
> +#define KVM_TRC_CPUID            (KVM_TRC_HANDLER + 0x0D)
> +#define KVM_TRC_INTR             (KVM_TRC_HANDLER + 0x0E)
> +#define KVM_TRC_NMI              (KVM_TRC_HANDLER + 0x0F)
> +#define KVM_TRC_VMMCALL          (KVM_TRC_HANDLER + 0x10)
> +#define KVM_TRC_HLT              (KVM_TRC_HANDLER + 0x11)
> +#define KVM_TRC_CLTS             (KVM_TRC_HANDLER + 0x12)
> +#define KVM_TRC_LMSW             (KVM_TRC_HANDLER + 0x13)
> +#define KVM_TRC_APIC_ACCESS      (KVM_TRC_HANDLER + 0x14)
> +#define KVM_TRC_TDP_FAULT        (KVM_TRC_HANDLER + 0x15)
>  #else
>  static inline
>  int kvm_trace_ioctl(unsigned int ioctl, unsigned long arg)
>   

This hides the defines from the public interface.  The KVM_TRC_* 
constants should be in kvm.h.


-- 
error compiling committee.c: too many arguments to function


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 2 of 3] Move KVM TRACE DEFINITIONS to common header
@ 2008-06-29 11:50     ` Avi Kivity
  0 siblings, 0 replies; 20+ messages in thread
From: Avi Kivity @ 2008-06-29 11:50 UTC (permalink / raw)
  To: Jerone Young; +Cc: kvm, kvm-ppc

Jerone Young wrote:
> 3 files changed, 40 insertions(+), 40 deletions(-)
> include/asm-x86/kvm.h      |   22 ----------------------
> include/asm-x86/kvm_host.h |   18 ------------------
> include/linux/kvm_host.h   |   40 ++++++++++++++++++++++++++++++++++++++++
>
>
> This patch moves moves definitions required to use kvm trace from x86 specific kvm headers to common kvm headers.
>
>   

I applied patch 1, but:

> 						vcpu, 0, 0, 0, 0, 0, 0)
>  
>  #ifdef CONFIG_64BIT
>  #define KVM_EX_ENTRY ".quad"
> diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
> --- a/include/linux/kvm_host.h
> +++ b/include/linux/kvm_host.h
> @@ -322,6 +322,46 @@ extern struct dentry *kvm_debugfs_dir;
>  #ifdef CONFIG_KVM_TRACE
>  int kvm_trace_ioctl(unsigned int ioctl, unsigned long arg);
>  void kvm_trace_cleanup(void);
> +#define KVM_TRC_INJ_VIRQ         (KVM_TRC_HANDLER + 0x02)
> +#define KVM_TRC_REDELIVER_EVT    (KVM_TRC_HANDLER + 0x03)
> +#define KVM_TRC_PEND_INTR        (KVM_TRC_HANDLER + 0x04)
> +#define KVM_TRC_IO_READ          (KVM_TRC_HANDLER + 0x05)
> +#define KVM_TRC_IO_WRITE         (KVM_TRC_HANDLER + 0x06)
> +#define KVM_TRC_CR_READ          (KVM_TRC_HANDLER + 0x07)
> +#define KVM_TRC_CR_WRITE         (KVM_TRC_HANDLER + 0x08)
> +#define KVM_TRC_DR_READ          (KVM_TRC_HANDLER + 0x09)
> +#define KVM_TRC_DR_WRITE         (KVM_TRC_HANDLER + 0x0A)
> +#define KVM_TRC_MSR_READ         (KVM_TRC_HANDLER + 0x0B)
> +#define KVM_TRC_MSR_WRITE        (KVM_TRC_HANDLER + 0x0C)
> +#define KVM_TRC_CPUID            (KVM_TRC_HANDLER + 0x0D)
> +#define KVM_TRC_INTR             (KVM_TRC_HANDLER + 0x0E)
> +#define KVM_TRC_NMI              (KVM_TRC_HANDLER + 0x0F)
> +#define KVM_TRC_VMMCALL          (KVM_TRC_HANDLER + 0x10)
> +#define KVM_TRC_HLT              (KVM_TRC_HANDLER + 0x11)
> +#define KVM_TRC_CLTS             (KVM_TRC_HANDLER + 0x12)
> +#define KVM_TRC_LMSW             (KVM_TRC_HANDLER + 0x13)
> +#define KVM_TRC_APIC_ACCESS      (KVM_TRC_HANDLER + 0x14)
> +#define KVM_TRC_TDP_FAULT        (KVM_TRC_HANDLER + 0x15)
>  #else
>  static inline
>  int kvm_trace_ioctl(unsigned int ioctl, unsigned long arg)
>   

This hides the defines from the public interface.  The KVM_TRC_* 
constants should be in kvm.h.


-- 
error compiling committee.c: too many arguments to function


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 2 of 3] Move KVM TRACE DEFINITIONS to common header
  2008-06-29 11:50     ` Avi Kivity
@ 2008-07-01 19:59       ` Hollis Blanchard
  -1 siblings, 0 replies; 20+ messages in thread
From: Hollis Blanchard @ 2008-07-01 19:59 UTC (permalink / raw)
  To: Avi Kivity; +Cc: Jerone Young, kvm, kvm-ppc

Move KVM trace definitions from x86 specific kvm headers to common kvm
headers to create a cross-architecture numbering scheme for trace
events. This means the kvmtrace_format userspace tool won't need to know
which architecture produced the log file being processed.

Signed-off-by: Jerone Young <jyoung5@us.ibm.com>
Signed-off-by: Hollis Blanchard <hollisb@us.ibm.com>

---

Avi, you said you already applied #1, and this is the revised #2. There
is no need to apply #3; I've combined those macro definitions with the
PowerPC-specific patches that use them.

diff --git a/include/asm-x86/kvm.h b/include/asm-x86/kvm.h
--- a/include/asm-x86/kvm.h
+++ b/include/asm-x86/kvm.h
@@ -208,26 +208,4 @@ struct kvm_pit_state {
 struct kvm_pit_state {
 	struct kvm_pit_channel_state channels[3];
 };
-
-#define KVM_TRC_INJ_VIRQ         (KVM_TRC_HANDLER + 0x02)
-#define KVM_TRC_REDELIVER_EVT    (KVM_TRC_HANDLER + 0x03)
-#define KVM_TRC_PEND_INTR        (KVM_TRC_HANDLER + 0x04)
-#define KVM_TRC_IO_READ          (KVM_TRC_HANDLER + 0x05)
-#define KVM_TRC_IO_WRITE         (KVM_TRC_HANDLER + 0x06)
-#define KVM_TRC_CR_READ          (KVM_TRC_HANDLER + 0x07)
-#define KVM_TRC_CR_WRITE         (KVM_TRC_HANDLER + 0x08)
-#define KVM_TRC_DR_READ          (KVM_TRC_HANDLER + 0x09)
-#define KVM_TRC_DR_WRITE         (KVM_TRC_HANDLER + 0x0A)
-#define KVM_TRC_MSR_READ         (KVM_TRC_HANDLER + 0x0B)
-#define KVM_TRC_MSR_WRITE        (KVM_TRC_HANDLER + 0x0C)
-#define KVM_TRC_CPUID            (KVM_TRC_HANDLER + 0x0D)
-#define KVM_TRC_INTR             (KVM_TRC_HANDLER + 0x0E)
-#define KVM_TRC_NMI              (KVM_TRC_HANDLER + 0x0F)
-#define KVM_TRC_VMMCALL          (KVM_TRC_HANDLER + 0x10)
-#define KVM_TRC_HLT              (KVM_TRC_HANDLER + 0x11)
-#define KVM_TRC_CLTS             (KVM_TRC_HANDLER + 0x12)
-#define KVM_TRC_LMSW             (KVM_TRC_HANDLER + 0x13)
-#define KVM_TRC_APIC_ACCESS      (KVM_TRC_HANDLER + 0x14)
-#define KVM_TRC_TDP_FAULT        (KVM_TRC_HANDLER + 0x15)
-
 #endif
diff --git a/include/asm-x86/kvm_host.h b/include/asm-x86/kvm_host.h
--- a/include/asm-x86/kvm_host.h
+++ b/include/asm-x86/kvm_host.h
@@ -685,24 +685,6 @@ enum {
 	TASK_SWITCH_GATE = 3,
 };
 
-#define KVMTRACE_5D(evt, vcpu, d1, d2, d3, d4, d5, name) \
-	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
-						vcpu, 5, d1, d2, d3, d4, d5)
-#define KVMTRACE_4D(evt, vcpu, d1, d2, d3, d4, name) \
-	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
-						vcpu, 4, d1, d2, d3, d4, 0)
-#define KVMTRACE_3D(evt, vcpu, d1, d2, d3, name) \
-	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
-						vcpu, 3, d1, d2, d3, 0, 0)
-#define KVMTRACE_2D(evt, vcpu, d1, d2, name) \
-	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
-						vcpu, 2, d1, d2, 0, 0, 0)
-#define KVMTRACE_1D(evt, vcpu, d1, name) \
-	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
-						vcpu, 1, d1, 0, 0, 0, 0)
-#define KVMTRACE_0D(evt, vcpu, name) \
-	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
-						vcpu, 0, 0, 0, 0, 0, 0)
 
 #ifdef CONFIG_64BIT
 #define KVM_EX_ENTRY ".quad"
diff --git a/include/linux/kvm.h b/include/linux/kvm.h
--- a/include/linux/kvm.h
+++ b/include/linux/kvm.h
@@ -450,4 +450,25 @@ struct kvm_trace_rec {
 #define KVM_GET_MP_STATE          _IOR(KVMIO,  0x98, struct kvm_mp_state)
 #define KVM_SET_MP_STATE          _IOW(KVMIO,  0x99, struct kvm_mp_state)
 
+#define KVM_TRC_INJ_VIRQ         (KVM_TRC_HANDLER + 0x02)
+#define KVM_TRC_REDELIVER_EVT    (KVM_TRC_HANDLER + 0x03)
+#define KVM_TRC_PEND_INTR        (KVM_TRC_HANDLER + 0x04)
+#define KVM_TRC_IO_READ          (KVM_TRC_HANDLER + 0x05)
+#define KVM_TRC_IO_WRITE         (KVM_TRC_HANDLER + 0x06)
+#define KVM_TRC_CR_READ          (KVM_TRC_HANDLER + 0x07)
+#define KVM_TRC_CR_WRITE         (KVM_TRC_HANDLER + 0x08)
+#define KVM_TRC_DR_READ          (KVM_TRC_HANDLER + 0x09)
+#define KVM_TRC_DR_WRITE         (KVM_TRC_HANDLER + 0x0A)
+#define KVM_TRC_MSR_READ         (KVM_TRC_HANDLER + 0x0B)
+#define KVM_TRC_MSR_WRITE        (KVM_TRC_HANDLER + 0x0C)
+#define KVM_TRC_CPUID            (KVM_TRC_HANDLER + 0x0D)
+#define KVM_TRC_INTR             (KVM_TRC_HANDLER + 0x0E)
+#define KVM_TRC_NMI              (KVM_TRC_HANDLER + 0x0F)
+#define KVM_TRC_VMMCALL          (KVM_TRC_HANDLER + 0x10)
+#define KVM_TRC_HLT              (KVM_TRC_HANDLER + 0x11)
+#define KVM_TRC_CLTS             (KVM_TRC_HANDLER + 0x12)
+#define KVM_TRC_LMSW             (KVM_TRC_HANDLER + 0x13)
+#define KVM_TRC_APIC_ACCESS      (KVM_TRC_HANDLER + 0x14)
+#define KVM_TRC_TDP_FAULT        (KVM_TRC_HANDLER + 0x15)
+
 #endif
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
--- a/include/linux/kvm_host.h
+++ b/include/linux/kvm_host.h
@@ -322,6 +322,26 @@ extern struct dentry *kvm_debugfs_dir;
 #ifdef CONFIG_KVM_TRACE
 int kvm_trace_ioctl(unsigned int ioctl, unsigned long arg);
 void kvm_trace_cleanup(void);
+
+#define KVMTRACE_5D(evt, vcpu, d1, d2, d3, d4, d5, name) \
+	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
+						vcpu, 5, d1, d2, d3, d4, d5)
+#define KVMTRACE_4D(evt, vcpu, d1, d2, d3, d4, name) \
+	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
+						vcpu, 4, d1, d2, d3, d4, 0)
+#define KVMTRACE_3D(evt, vcpu, d1, d2, d3, name) \
+	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
+						vcpu, 3, d1, d2, d3, 0, 0)
+#define KVMTRACE_2D(evt, vcpu, d1, d2, name) \
+	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
+						vcpu, 2, d1, d2, 0, 0, 0)
+#define KVMTRACE_1D(evt, vcpu, d1, name) \
+	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
+						vcpu, 1, d1, 0, 0, 0, 0)
+#define KVMTRACE_0D(evt, vcpu, name) \
+	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
+						vcpu, 0, 0, 0, 0, 0, 0)
+
 #else
 static inline
 int kvm_trace_ioctl(unsigned int ioctl, unsigned long arg)

-- 
Hollis Blanchard
IBM Linux Technology Center


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 2 of 3] Move KVM TRACE DEFINITIONS to common header
@ 2008-07-01 19:59       ` Hollis Blanchard
  0 siblings, 0 replies; 20+ messages in thread
From: Hollis Blanchard @ 2008-07-01 19:59 UTC (permalink / raw)
  To: Avi Kivity; +Cc: Jerone Young, kvm, kvm-ppc

Move KVM trace definitions from x86 specific kvm headers to common kvm
headers to create a cross-architecture numbering scheme for trace
events. This means the kvmtrace_format userspace tool won't need to know
which architecture produced the log file being processed.

Signed-off-by: Jerone Young <jyoung5@us.ibm.com>
Signed-off-by: Hollis Blanchard <hollisb@us.ibm.com>

---

Avi, you said you already applied #1, and this is the revised #2. There
is no need to apply #3; I've combined those macro definitions with the
PowerPC-specific patches that use them.

diff --git a/include/asm-x86/kvm.h b/include/asm-x86/kvm.h
--- a/include/asm-x86/kvm.h
+++ b/include/asm-x86/kvm.h
@@ -208,26 +208,4 @@ struct kvm_pit_state {
 struct kvm_pit_state {
 	struct kvm_pit_channel_state channels[3];
 };
-
-#define KVM_TRC_INJ_VIRQ         (KVM_TRC_HANDLER + 0x02)
-#define KVM_TRC_REDELIVER_EVT    (KVM_TRC_HANDLER + 0x03)
-#define KVM_TRC_PEND_INTR        (KVM_TRC_HANDLER + 0x04)
-#define KVM_TRC_IO_READ          (KVM_TRC_HANDLER + 0x05)
-#define KVM_TRC_IO_WRITE         (KVM_TRC_HANDLER + 0x06)
-#define KVM_TRC_CR_READ          (KVM_TRC_HANDLER + 0x07)
-#define KVM_TRC_CR_WRITE         (KVM_TRC_HANDLER + 0x08)
-#define KVM_TRC_DR_READ          (KVM_TRC_HANDLER + 0x09)
-#define KVM_TRC_DR_WRITE         (KVM_TRC_HANDLER + 0x0A)
-#define KVM_TRC_MSR_READ         (KVM_TRC_HANDLER + 0x0B)
-#define KVM_TRC_MSR_WRITE        (KVM_TRC_HANDLER + 0x0C)
-#define KVM_TRC_CPUID            (KVM_TRC_HANDLER + 0x0D)
-#define KVM_TRC_INTR             (KVM_TRC_HANDLER + 0x0E)
-#define KVM_TRC_NMI              (KVM_TRC_HANDLER + 0x0F)
-#define KVM_TRC_VMMCALL          (KVM_TRC_HANDLER + 0x10)
-#define KVM_TRC_HLT              (KVM_TRC_HANDLER + 0x11)
-#define KVM_TRC_CLTS             (KVM_TRC_HANDLER + 0x12)
-#define KVM_TRC_LMSW             (KVM_TRC_HANDLER + 0x13)
-#define KVM_TRC_APIC_ACCESS      (KVM_TRC_HANDLER + 0x14)
-#define KVM_TRC_TDP_FAULT        (KVM_TRC_HANDLER + 0x15)
-
 #endif
diff --git a/include/asm-x86/kvm_host.h b/include/asm-x86/kvm_host.h
--- a/include/asm-x86/kvm_host.h
+++ b/include/asm-x86/kvm_host.h
@@ -685,24 +685,6 @@ enum {
 	TASK_SWITCH_GATE = 3,
 };
 
-#define KVMTRACE_5D(evt, vcpu, d1, d2, d3, d4, d5, name) \
-	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
-						vcpu, 5, d1, d2, d3, d4, d5)
-#define KVMTRACE_4D(evt, vcpu, d1, d2, d3, d4, name) \
-	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
-						vcpu, 4, d1, d2, d3, d4, 0)
-#define KVMTRACE_3D(evt, vcpu, d1, d2, d3, name) \
-	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
-						vcpu, 3, d1, d2, d3, 0, 0)
-#define KVMTRACE_2D(evt, vcpu, d1, d2, name) \
-	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
-						vcpu, 2, d1, d2, 0, 0, 0)
-#define KVMTRACE_1D(evt, vcpu, d1, name) \
-	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
-						vcpu, 1, d1, 0, 0, 0, 0)
-#define KVMTRACE_0D(evt, vcpu, name) \
-	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
-						vcpu, 0, 0, 0, 0, 0, 0)
 
 #ifdef CONFIG_64BIT
 #define KVM_EX_ENTRY ".quad"
diff --git a/include/linux/kvm.h b/include/linux/kvm.h
--- a/include/linux/kvm.h
+++ b/include/linux/kvm.h
@@ -450,4 +450,25 @@ struct kvm_trace_rec {
 #define KVM_GET_MP_STATE          _IOR(KVMIO,  0x98, struct kvm_mp_state)
 #define KVM_SET_MP_STATE          _IOW(KVMIO,  0x99, struct kvm_mp_state)
 
+#define KVM_TRC_INJ_VIRQ         (KVM_TRC_HANDLER + 0x02)
+#define KVM_TRC_REDELIVER_EVT    (KVM_TRC_HANDLER + 0x03)
+#define KVM_TRC_PEND_INTR        (KVM_TRC_HANDLER + 0x04)
+#define KVM_TRC_IO_READ          (KVM_TRC_HANDLER + 0x05)
+#define KVM_TRC_IO_WRITE         (KVM_TRC_HANDLER + 0x06)
+#define KVM_TRC_CR_READ          (KVM_TRC_HANDLER + 0x07)
+#define KVM_TRC_CR_WRITE         (KVM_TRC_HANDLER + 0x08)
+#define KVM_TRC_DR_READ          (KVM_TRC_HANDLER + 0x09)
+#define KVM_TRC_DR_WRITE         (KVM_TRC_HANDLER + 0x0A)
+#define KVM_TRC_MSR_READ         (KVM_TRC_HANDLER + 0x0B)
+#define KVM_TRC_MSR_WRITE        (KVM_TRC_HANDLER + 0x0C)
+#define KVM_TRC_CPUID            (KVM_TRC_HANDLER + 0x0D)
+#define KVM_TRC_INTR             (KVM_TRC_HANDLER + 0x0E)
+#define KVM_TRC_NMI              (KVM_TRC_HANDLER + 0x0F)
+#define KVM_TRC_VMMCALL          (KVM_TRC_HANDLER + 0x10)
+#define KVM_TRC_HLT              (KVM_TRC_HANDLER + 0x11)
+#define KVM_TRC_CLTS             (KVM_TRC_HANDLER + 0x12)
+#define KVM_TRC_LMSW             (KVM_TRC_HANDLER + 0x13)
+#define KVM_TRC_APIC_ACCESS      (KVM_TRC_HANDLER + 0x14)
+#define KVM_TRC_TDP_FAULT        (KVM_TRC_HANDLER + 0x15)
+
 #endif
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
--- a/include/linux/kvm_host.h
+++ b/include/linux/kvm_host.h
@@ -322,6 +322,26 @@ extern struct dentry *kvm_debugfs_dir;
 #ifdef CONFIG_KVM_TRACE
 int kvm_trace_ioctl(unsigned int ioctl, unsigned long arg);
 void kvm_trace_cleanup(void);
+
+#define KVMTRACE_5D(evt, vcpu, d1, d2, d3, d4, d5, name) \
+	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
+						vcpu, 5, d1, d2, d3, d4, d5)
+#define KVMTRACE_4D(evt, vcpu, d1, d2, d3, d4, name) \
+	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
+						vcpu, 4, d1, d2, d3, d4, 0)
+#define KVMTRACE_3D(evt, vcpu, d1, d2, d3, name) \
+	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
+						vcpu, 3, d1, d2, d3, 0, 0)
+#define KVMTRACE_2D(evt, vcpu, d1, d2, name) \
+	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
+						vcpu, 2, d1, d2, 0, 0, 0)
+#define KVMTRACE_1D(evt, vcpu, d1, name) \
+	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
+						vcpu, 1, d1, 0, 0, 0, 0)
+#define KVMTRACE_0D(evt, vcpu, name) \
+	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
+						vcpu, 0, 0, 0, 0, 0, 0)
+
 #else
 static inline
 int kvm_trace_ioctl(unsigned int ioctl, unsigned long arg)

-- 
Hollis Blanchard
IBM Linux Technology Center


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 2 of 3] [v2] Move KVM TRACE DEFINITIONS to common header
  2008-07-01 19:59       ` Hollis Blanchard
@ 2008-07-01 21:23         ` Hollis Blanchard
  -1 siblings, 0 replies; 20+ messages in thread
From: Hollis Blanchard @ 2008-07-01 21:23 UTC (permalink / raw)
  To: Avi Kivity; +Cc: Jerone Young, kvm, kvm-ppc

Move KVM trace definitions from x86 specific kvm headers to common kvm
headers to create a cross-architecture numbering scheme for trace
events. This means the kvmtrace_format userspace tool won't need to know
which architecture produced the log file being processed.

Signed-off-by: Jerone Young <jyoung5@us.ibm.com>
Signed-off-by: Hollis Blanchard <hollisb@us.ibm.com>

---

The previous versions of this patch would not build when
CONFIG_KVM_TRACE was not enabled. Please use this patch instead.

diff --git a/include/asm-x86/kvm.h b/include/asm-x86/kvm.h
--- a/include/asm-x86/kvm.h
+++ b/include/asm-x86/kvm.h
@@ -208,26 +208,4 @@ struct kvm_pit_state {
 struct kvm_pit_state {
 	struct kvm_pit_channel_state channels[3];
 };
-
-#define KVM_TRC_INJ_VIRQ         (KVM_TRC_HANDLER + 0x02)
-#define KVM_TRC_REDELIVER_EVT    (KVM_TRC_HANDLER + 0x03)
-#define KVM_TRC_PEND_INTR        (KVM_TRC_HANDLER + 0x04)
-#define KVM_TRC_IO_READ          (KVM_TRC_HANDLER + 0x05)
-#define KVM_TRC_IO_WRITE         (KVM_TRC_HANDLER + 0x06)
-#define KVM_TRC_CR_READ          (KVM_TRC_HANDLER + 0x07)
-#define KVM_TRC_CR_WRITE         (KVM_TRC_HANDLER + 0x08)
-#define KVM_TRC_DR_READ          (KVM_TRC_HANDLER + 0x09)
-#define KVM_TRC_DR_WRITE         (KVM_TRC_HANDLER + 0x0A)
-#define KVM_TRC_MSR_READ         (KVM_TRC_HANDLER + 0x0B)
-#define KVM_TRC_MSR_WRITE        (KVM_TRC_HANDLER + 0x0C)
-#define KVM_TRC_CPUID            (KVM_TRC_HANDLER + 0x0D)
-#define KVM_TRC_INTR             (KVM_TRC_HANDLER + 0x0E)
-#define KVM_TRC_NMI              (KVM_TRC_HANDLER + 0x0F)
-#define KVM_TRC_VMMCALL          (KVM_TRC_HANDLER + 0x10)
-#define KVM_TRC_HLT              (KVM_TRC_HANDLER + 0x11)
-#define KVM_TRC_CLTS             (KVM_TRC_HANDLER + 0x12)
-#define KVM_TRC_LMSW             (KVM_TRC_HANDLER + 0x13)
-#define KVM_TRC_APIC_ACCESS      (KVM_TRC_HANDLER + 0x14)
-#define KVM_TRC_TDP_FAULT        (KVM_TRC_HANDLER + 0x15)
-
 #endif
diff --git a/include/asm-x86/kvm_host.h b/include/asm-x86/kvm_host.h
--- a/include/asm-x86/kvm_host.h
+++ b/include/asm-x86/kvm_host.h
@@ -685,24 +685,6 @@ enum {
 	TASK_SWITCH_GATE = 3,
 };
 
-#define KVMTRACE_5D(evt, vcpu, d1, d2, d3, d4, d5, name) \
-	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
-						vcpu, 5, d1, d2, d3, d4, d5)
-#define KVMTRACE_4D(evt, vcpu, d1, d2, d3, d4, name) \
-	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
-						vcpu, 4, d1, d2, d3, d4, 0)
-#define KVMTRACE_3D(evt, vcpu, d1, d2, d3, name) \
-	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
-						vcpu, 3, d1, d2, d3, 0, 0)
-#define KVMTRACE_2D(evt, vcpu, d1, d2, name) \
-	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
-						vcpu, 2, d1, d2, 0, 0, 0)
-#define KVMTRACE_1D(evt, vcpu, d1, name) \
-	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
-						vcpu, 1, d1, 0, 0, 0, 0)
-#define KVMTRACE_0D(evt, vcpu, name) \
-	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
-						vcpu, 0, 0, 0, 0, 0, 0)
 
 #ifdef CONFIG_64BIT
 #define KVM_EX_ENTRY ".quad"
diff --git a/include/linux/kvm.h b/include/linux/kvm.h
--- a/include/linux/kvm.h
+++ b/include/linux/kvm.h
@@ -450,4 +450,25 @@ struct kvm_trace_rec {
 #define KVM_GET_MP_STATE          _IOR(KVMIO,  0x98, struct kvm_mp_state)
 #define KVM_SET_MP_STATE          _IOW(KVMIO,  0x99, struct kvm_mp_state)
 
+#define KVM_TRC_INJ_VIRQ         (KVM_TRC_HANDLER + 0x02)
+#define KVM_TRC_REDELIVER_EVT    (KVM_TRC_HANDLER + 0x03)
+#define KVM_TRC_PEND_INTR        (KVM_TRC_HANDLER + 0x04)
+#define KVM_TRC_IO_READ          (KVM_TRC_HANDLER + 0x05)
+#define KVM_TRC_IO_WRITE         (KVM_TRC_HANDLER + 0x06)
+#define KVM_TRC_CR_READ          (KVM_TRC_HANDLER + 0x07)
+#define KVM_TRC_CR_WRITE         (KVM_TRC_HANDLER + 0x08)
+#define KVM_TRC_DR_READ          (KVM_TRC_HANDLER + 0x09)
+#define KVM_TRC_DR_WRITE         (KVM_TRC_HANDLER + 0x0A)
+#define KVM_TRC_MSR_READ         (KVM_TRC_HANDLER + 0x0B)
+#define KVM_TRC_MSR_WRITE        (KVM_TRC_HANDLER + 0x0C)
+#define KVM_TRC_CPUID            (KVM_TRC_HANDLER + 0x0D)
+#define KVM_TRC_INTR             (KVM_TRC_HANDLER + 0x0E)
+#define KVM_TRC_NMI              (KVM_TRC_HANDLER + 0x0F)
+#define KVM_TRC_VMMCALL          (KVM_TRC_HANDLER + 0x10)
+#define KVM_TRC_HLT              (KVM_TRC_HANDLER + 0x11)
+#define KVM_TRC_CLTS             (KVM_TRC_HANDLER + 0x12)
+#define KVM_TRC_LMSW             (KVM_TRC_HANDLER + 0x13)
+#define KVM_TRC_APIC_ACCESS      (KVM_TRC_HANDLER + 0x14)
+#define KVM_TRC_TDP_FAULT        (KVM_TRC_HANDLER + 0x15)
+
 #endif
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
--- a/include/linux/kvm_host.h
+++ b/include/linux/kvm_host.h
@@ -319,6 +319,25 @@ extern struct kvm_stats_debugfs_item deb
 extern struct kvm_stats_debugfs_item debugfs_entries[];
 extern struct dentry *kvm_debugfs_dir;
 
+#define KVMTRACE_5D(evt, vcpu, d1, d2, d3, d4, d5, name) \
+	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
+						vcpu, 5, d1, d2, d3, d4, d5)
+#define KVMTRACE_4D(evt, vcpu, d1, d2, d3, d4, name) \
+	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
+						vcpu, 4, d1, d2, d3, d4, 0)
+#define KVMTRACE_3D(evt, vcpu, d1, d2, d3, name) \
+	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
+						vcpu, 3, d1, d2, d3, 0, 0)
+#define KVMTRACE_2D(evt, vcpu, d1, d2, name) \
+	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
+						vcpu, 2, d1, d2, 0, 0, 0)
+#define KVMTRACE_1D(evt, vcpu, d1, name) \
+	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
+						vcpu, 1, d1, 0, 0, 0, 0)
+#define KVMTRACE_0D(evt, vcpu, name) \
+	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
+						vcpu, 0, 0, 0, 0, 0, 0)
+
 #ifdef CONFIG_KVM_TRACE
 int kvm_trace_ioctl(unsigned int ioctl, unsigned long arg);
 void kvm_trace_cleanup(void);
-- 
Hollis Blanchard
IBM Linux Technology Center


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 2 of 3] [v2] Move KVM TRACE DEFINITIONS to common header
@ 2008-07-01 21:23         ` Hollis Blanchard
  0 siblings, 0 replies; 20+ messages in thread
From: Hollis Blanchard @ 2008-07-01 21:23 UTC (permalink / raw)
  To: Avi Kivity; +Cc: Jerone Young, kvm, kvm-ppc

Move KVM trace definitions from x86 specific kvm headers to common kvm
headers to create a cross-architecture numbering scheme for trace
events. This means the kvmtrace_format userspace tool won't need to know
which architecture produced the log file being processed.

Signed-off-by: Jerone Young <jyoung5@us.ibm.com>
Signed-off-by: Hollis Blanchard <hollisb@us.ibm.com>

---

The previous versions of this patch would not build when
CONFIG_KVM_TRACE was not enabled. Please use this patch instead.

diff --git a/include/asm-x86/kvm.h b/include/asm-x86/kvm.h
--- a/include/asm-x86/kvm.h
+++ b/include/asm-x86/kvm.h
@@ -208,26 +208,4 @@ struct kvm_pit_state {
 struct kvm_pit_state {
 	struct kvm_pit_channel_state channels[3];
 };
-
-#define KVM_TRC_INJ_VIRQ         (KVM_TRC_HANDLER + 0x02)
-#define KVM_TRC_REDELIVER_EVT    (KVM_TRC_HANDLER + 0x03)
-#define KVM_TRC_PEND_INTR        (KVM_TRC_HANDLER + 0x04)
-#define KVM_TRC_IO_READ          (KVM_TRC_HANDLER + 0x05)
-#define KVM_TRC_IO_WRITE         (KVM_TRC_HANDLER + 0x06)
-#define KVM_TRC_CR_READ          (KVM_TRC_HANDLER + 0x07)
-#define KVM_TRC_CR_WRITE         (KVM_TRC_HANDLER + 0x08)
-#define KVM_TRC_DR_READ          (KVM_TRC_HANDLER + 0x09)
-#define KVM_TRC_DR_WRITE         (KVM_TRC_HANDLER + 0x0A)
-#define KVM_TRC_MSR_READ         (KVM_TRC_HANDLER + 0x0B)
-#define KVM_TRC_MSR_WRITE        (KVM_TRC_HANDLER + 0x0C)
-#define KVM_TRC_CPUID            (KVM_TRC_HANDLER + 0x0D)
-#define KVM_TRC_INTR             (KVM_TRC_HANDLER + 0x0E)
-#define KVM_TRC_NMI              (KVM_TRC_HANDLER + 0x0F)
-#define KVM_TRC_VMMCALL          (KVM_TRC_HANDLER + 0x10)
-#define KVM_TRC_HLT              (KVM_TRC_HANDLER + 0x11)
-#define KVM_TRC_CLTS             (KVM_TRC_HANDLER + 0x12)
-#define KVM_TRC_LMSW             (KVM_TRC_HANDLER + 0x13)
-#define KVM_TRC_APIC_ACCESS      (KVM_TRC_HANDLER + 0x14)
-#define KVM_TRC_TDP_FAULT        (KVM_TRC_HANDLER + 0x15)
-
 #endif
diff --git a/include/asm-x86/kvm_host.h b/include/asm-x86/kvm_host.h
--- a/include/asm-x86/kvm_host.h
+++ b/include/asm-x86/kvm_host.h
@@ -685,24 +685,6 @@ enum {
 	TASK_SWITCH_GATE = 3,
 };
 
-#define KVMTRACE_5D(evt, vcpu, d1, d2, d3, d4, d5, name) \
-	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
-						vcpu, 5, d1, d2, d3, d4, d5)
-#define KVMTRACE_4D(evt, vcpu, d1, d2, d3, d4, name) \
-	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
-						vcpu, 4, d1, d2, d3, d4, 0)
-#define KVMTRACE_3D(evt, vcpu, d1, d2, d3, name) \
-	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
-						vcpu, 3, d1, d2, d3, 0, 0)
-#define KVMTRACE_2D(evt, vcpu, d1, d2, name) \
-	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
-						vcpu, 2, d1, d2, 0, 0, 0)
-#define KVMTRACE_1D(evt, vcpu, d1, name) \
-	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
-						vcpu, 1, d1, 0, 0, 0, 0)
-#define KVMTRACE_0D(evt, vcpu, name) \
-	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
-						vcpu, 0, 0, 0, 0, 0, 0)
 
 #ifdef CONFIG_64BIT
 #define KVM_EX_ENTRY ".quad"
diff --git a/include/linux/kvm.h b/include/linux/kvm.h
--- a/include/linux/kvm.h
+++ b/include/linux/kvm.h
@@ -450,4 +450,25 @@ struct kvm_trace_rec {
 #define KVM_GET_MP_STATE          _IOR(KVMIO,  0x98, struct kvm_mp_state)
 #define KVM_SET_MP_STATE          _IOW(KVMIO,  0x99, struct kvm_mp_state)
 
+#define KVM_TRC_INJ_VIRQ         (KVM_TRC_HANDLER + 0x02)
+#define KVM_TRC_REDELIVER_EVT    (KVM_TRC_HANDLER + 0x03)
+#define KVM_TRC_PEND_INTR        (KVM_TRC_HANDLER + 0x04)
+#define KVM_TRC_IO_READ          (KVM_TRC_HANDLER + 0x05)
+#define KVM_TRC_IO_WRITE         (KVM_TRC_HANDLER + 0x06)
+#define KVM_TRC_CR_READ          (KVM_TRC_HANDLER + 0x07)
+#define KVM_TRC_CR_WRITE         (KVM_TRC_HANDLER + 0x08)
+#define KVM_TRC_DR_READ          (KVM_TRC_HANDLER + 0x09)
+#define KVM_TRC_DR_WRITE         (KVM_TRC_HANDLER + 0x0A)
+#define KVM_TRC_MSR_READ         (KVM_TRC_HANDLER + 0x0B)
+#define KVM_TRC_MSR_WRITE        (KVM_TRC_HANDLER + 0x0C)
+#define KVM_TRC_CPUID            (KVM_TRC_HANDLER + 0x0D)
+#define KVM_TRC_INTR             (KVM_TRC_HANDLER + 0x0E)
+#define KVM_TRC_NMI              (KVM_TRC_HANDLER + 0x0F)
+#define KVM_TRC_VMMCALL          (KVM_TRC_HANDLER + 0x10)
+#define KVM_TRC_HLT              (KVM_TRC_HANDLER + 0x11)
+#define KVM_TRC_CLTS             (KVM_TRC_HANDLER + 0x12)
+#define KVM_TRC_LMSW             (KVM_TRC_HANDLER + 0x13)
+#define KVM_TRC_APIC_ACCESS      (KVM_TRC_HANDLER + 0x14)
+#define KVM_TRC_TDP_FAULT        (KVM_TRC_HANDLER + 0x15)
+
 #endif
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
--- a/include/linux/kvm_host.h
+++ b/include/linux/kvm_host.h
@@ -319,6 +319,25 @@ extern struct kvm_stats_debugfs_item deb
 extern struct kvm_stats_debugfs_item debugfs_entries[];
 extern struct dentry *kvm_debugfs_dir;
 
+#define KVMTRACE_5D(evt, vcpu, d1, d2, d3, d4, d5, name) \
+	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
+						vcpu, 5, d1, d2, d3, d4, d5)
+#define KVMTRACE_4D(evt, vcpu, d1, d2, d3, d4, name) \
+	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
+						vcpu, 4, d1, d2, d3, d4, 0)
+#define KVMTRACE_3D(evt, vcpu, d1, d2, d3, name) \
+	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
+						vcpu, 3, d1, d2, d3, 0, 0)
+#define KVMTRACE_2D(evt, vcpu, d1, d2, name) \
+	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
+						vcpu, 2, d1, d2, 0, 0, 0)
+#define KVMTRACE_1D(evt, vcpu, d1, name) \
+	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
+						vcpu, 1, d1, 0, 0, 0, 0)
+#define KVMTRACE_0D(evt, vcpu, name) \
+	trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \
+						vcpu, 0, 0, 0, 0, 0, 0)
+
 #ifdef CONFIG_KVM_TRACE
 int kvm_trace_ioctl(unsigned int ioctl, unsigned long arg);
 void kvm_trace_cleanup(void);
-- 
Hollis Blanchard
IBM Linux Technology Center


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 2 of 3] [v2] Move KVM TRACE DEFINITIONS to common header
  2008-07-01 21:23         ` Hollis Blanchard
@ 2008-07-05  9:35           ` Avi Kivity
  -1 siblings, 0 replies; 20+ messages in thread
From: Avi Kivity @ 2008-07-05  9:35 UTC (permalink / raw)
  To: Hollis Blanchard; +Cc: Jerone Young, kvm, kvm-ppc

Hollis Blanchard wrote:
> Move KVM trace definitions from x86 specific kvm headers to common kvm
> headers to create a cross-architecture numbering scheme for trace
> events. This means the kvmtrace_format userspace tool won't need to know
> which architecture produced the log file being processed.
>
>   

Applied, thanks.

-- 
I have a truly marvellous patch that fixes the bug which this
signature is too narrow to contain.


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 2 of 3] [v2] Move KVM TRACE DEFINITIONS to common header
@ 2008-07-05  9:35           ` Avi Kivity
  0 siblings, 0 replies; 20+ messages in thread
From: Avi Kivity @ 2008-07-05  9:35 UTC (permalink / raw)
  To: Hollis Blanchard; +Cc: Jerone Young, kvm, kvm-ppc

Hollis Blanchard wrote:
> Move KVM trace definitions from x86 specific kvm headers to common kvm
> headers to create a cross-architecture numbering scheme for trace
> events. This means the kvmtrace_format userspace tool won't need to know
> which architecture produced the log file being processed.
>
>   

Applied, thanks.

-- 
I have a truly marvellous patch that fixes the bug which this
signature is too narrow to contain.


^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2008-07-05  9:35 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-06-20  4:19 [PATCH 0 of 3] Add ability for KVM TRACE to work on other archs Jerone Young
2008-06-20  4:19 ` Jerone Young
2008-06-20  4:19 ` [PATCH 1 of 3] Remove use of bit fields in kvm trace structure Jerone Young
2008-06-20  4:19   ` Jerone Young
2008-06-20 16:59   ` Hollis Blanchard
2008-06-20 16:59     ` Hollis Blanchard
2008-06-23  2:33   ` Avi Kivity
2008-06-23  2:33     ` Avi Kivity
2008-06-20  4:19 ` [PATCH 2 of 3] Move KVM TRACE DEFINITIONS to common header Jerone Young
2008-06-20  4:19   ` Jerone Young
2008-06-29 11:50   ` Avi Kivity
2008-06-29 11:50     ` Avi Kivity
2008-07-01 19:59     ` Hollis Blanchard
2008-07-01 19:59       ` Hollis Blanchard
2008-07-01 21:23       ` [PATCH 2 of 3] [v2] " Hollis Blanchard
2008-07-01 21:23         ` Hollis Blanchard
2008-07-05  9:35         ` Avi Kivity
2008-07-05  9:35           ` Avi Kivity
2008-06-20  4:19 ` [PATCH 3 of 3] Add new KVM TRACE events Jerone Young
2008-06-20  4:19   ` Jerone Young

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.