* [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.