Skip to contentSkip to conversation

trace-cmd: Report unknown VMX exit reasons with code

PATCH In review Jan Kiszka 3 participants 4 messages Aug 11, 2013 – Jun 25, 2014 KVM

lore
Share & tools
lore

Jan Kiszka

author
#0 lore raw

PATCH 1/1 trace-cmd: Report unknown VMX exit reasons with code

From: Jan Kiszka <[email protected]>

Allows to parse the result even if the KVM plugin does not yet understand a specific exit code.

---
 plugin_kvm.c |   12 ++++++++----
 1 files changed, 8 insertions(+), 4 deletions(-)
plugin_kvm.c +8 -4
index 8a25cf1..59443e5 100644
@@ -240,9 +240,8 @@ static const char *find_exit_reason(unsigned isa, int val)
 	for (i = 0; strings[i].val >= 0; i++)
 		if (strings[i].val == val)
 			break;
-	if (strings[i].str)
-		return strings[i].str;
-	return "UNKNOWN";
+
+	return strings[i].str;
 }
 
 static int kvm_exit_handler(struct trace_seq *s, struct pevent_record *record,
@@ -251,6 +250,7 @@ static int kvm_exit_handler(struct trace_seq *s, struct pevent_record *record,
 	unsigned long long isa;
 	unsigned long long val;
 	unsigned long long info1 = 0, info2 = 0;
+	const char *reason;
 
 	if (pevent_get_field_val(s, event, "exit_reason", record, &val, 1) < 0)
 		return -1;
@@ -258,7 +258,11 @@ static int kvm_exit_handler(struct trace_seq *s, struct pevent_record *record,
 	if (pevent_get_field_val(s, event, "isa", record, &isa, 0) < 0)
 		isa = 1;
 
-	trace_seq_printf(s, "reason %s", find_exit_reason(isa, val));
+	reason = find_exit_reason(isa, val);
+	if (reason)
+		trace_seq_printf(s, "reason %s", reason);
+	else
+		trace_seq_printf(s, "reason UNKNOWN (%llu)", val);
 
 	pevent_print_num_field(s, " rip 0x%lx", event, "guest_rip", record, 1);
 
Signature · 1 line
1.7.3.4
author
#1 lore raw
Quoted 38 lines · Jan Kiszka

From: Jan Kiszka <[email protected]>

Allows to parse the result even if the KVM plugin does not yet understand a specific exit code.

---
 plugin_kvm.c |   12 ++++++++----
 1 files changed, 8 insertions(+), 4 deletions(-)
plugin_kvm.c +3 -3
index 8a25cf1..59443e5 100644
@@ -240,9 +240,8 @@ static const char *find_exit_reason(unsigned isa, int val)
 	for (i = 0; strings[i].val >= 0; i++)
 		if (strings[i].val == val)
 			break;
-	if (strings[i].str)
-		return strings[i].str;
-	return "UNKNOWN";
+
+	return strings[i].str;
 }
 
 static int kvm_exit_handler(struct trace_seq *s, struct pevent_record *record,
@@ -251,6 +250,7 @@ static int kvm_exit_handler(struct trace_seq *s, struct pevent_record *record,
 	unsigned long long isa;
 	unsigned long long val;
 	unsigned long long info1 = 0, info2 = 0;
+	const char *reason;
 
 	if (pevent_get_field_val(s, event, "exit_reason", record, &val, 1) < 0)
 		return -1;
@@ -258,7 +258,11 @@ static int kvm_exit_handler(struct trace_seq *s, struct pevent_record *record,
 	if (pevent_get_field_val(s, event, "isa", record, &isa, 0) < 0)
 		isa = 1;

plugin_kvm.c static int kvm_exit_handler(struct trace_seq *s, struct pevent_record *record, · line 268

Quoted 10 lines
plugin_kvm.c +5 -1
 
-	trace_seq_printf(s, "reason %s", find_exit_reason(isa, val));
+	reason = find_exit_reason(isa, val);
+	if (reason)
+		trace_seq_printf(s, "reason %s", reason);
+	else
+		trace_seq_printf(s, "reason UNKNOWN (%llu)", val);
 
 	pevent_print_num_field(s, " rip 0x%lx", event, "guest_rip", record, 1);
 

Ping. While my other patch of that time was merged, this one didn't make it yet. Any open issues?

Jan

#2 lore raw
Quoted 2 lines · On Fri, 04 Oct 2013 15:40:29 +0200 Jan Kiszka <[email protected]> wrote:

Ping. While my other patch of that time was merged, this one didn't make it yet. Any open issues?

Hmm, no. Not sure how I missed this one. Probably because it didn't have the 2/2 patch format and I thought there was only one patch?

I'll queue it up.

Thanks!

-- Steve

#3 lore raw

[tip:perf/core] tools lib traceevent: Report unknown VMX exit reasons with code

In reply to Jan Kiszka
tools lib traceevent: Report unknown VMX exit reasons with code
Commit-ID:  20d3cbd75ef17b96dfb4f5f1600c0278d330f5ca
Gitweb:     http://git.kernel.org/tip/20d3cbd75ef17b96dfb4f5f1600c0278d330f5ca
Author:     Jan Kiszka <[email protected]>
AuthorDate: Thu, 12 Jun 2014 22:10:03 -0400
Committer:  Jiri Olsa <[email protected]>
CommitDate: Thu, 19 Jun 2014 18:17:54 +0200

tools lib traceevent: Report unknown VMX exit reasons with code

Allows to parse the result even if the KVM plugin does not yet understand a specific exit code.

---
 tools/lib/traceevent/plugin_kvm.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)
tools/lib/traceevent/plugin_kvm.c +8 -4
index 9e0e8c6..3e61220 100644
@@ -240,9 +240,8 @@ static const char *find_exit_reason(unsigned isa, int val)
 	for (i = 0; strings[i].val >= 0; i++)
 		if (strings[i].val == val)
 			break;
-	if (strings[i].str)
-		return strings[i].str;
-	return "UNKNOWN";
+
+	return strings[i].str;
 }
 
 static int kvm_exit_handler(struct trace_seq *s, struct pevent_record *record,
@@ -251,6 +250,7 @@ static int kvm_exit_handler(struct trace_seq *s, struct pevent_record *record,
 	unsigned long long isa;
 	unsigned long long val;
 	unsigned long long info1 = 0, info2 = 0;
+	const char *reason;
 
 	if (pevent_get_field_val(s, event, "exit_reason", record, &val, 1) < 0)
 		return -1;
@@ -258,7 +258,11 @@ static int kvm_exit_handler(struct trace_seq *s, struct pevent_record *record,
 	if (pevent_get_field_val(s, event, "isa", record, &isa, 0) < 0)
 		isa = 1;
 
-	trace_seq_printf(s, "reason %s", find_exit_reason(isa, val));
+	reason = find_exit_reason(isa, val);
+	if (reason)
+		trace_seq_printf(s, "reason %s", reason);
+	else
+		trace_seq_printf(s, "reason UNKNOWN (%llu)", val);
 
 	pevent_print_num_field(s, " rip 0x%lx", event, "guest_rip", record, 1);