Skip to contentSkip to conversation

trace-cmd: add kvm_mmu_prepare_zap_page even and fix kvm_mmu_get_page event output in kvm plugin

PATCH In review Gleb Natapov 2 participants 6 messages Dec 27, 2012 – Jan 28, 2013 KVM

lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 trace-cmd: add kvm_mmu_prepare_zap_page even and fix kvm_mmu_get_page event output in kvm plugin

kvm_mmu_zap_page event was renamed to kvm_mmu_prepare_zap_page. Add new even, but leave the old one to parse older traces. Print out "created" field for kvm_mmu_get_page event.

plugin_kvm.c +10 -1
index 55812ef..9b376d8 100644
@@ -382,7 +382,7 @@ static int kvm_mmu_print_role(struct trace_seq *s, struct pevent_record *record,
 	} else
 		trace_seq_printf(s, "WORD: %08x", role.word);
 
-	pevent_print_num_field(s, " root %u",  event,
+	pevent_print_num_field(s, " root %u ",  event,
 			       "root_count", record, 1);
 
 	if (pevent_get_field_val(s, event, "unsync", record, &val, 1) < 0)
@@ -397,6 +397,11 @@ static int kvm_mmu_get_page_handler(struct trace_seq *s, struct pevent_record *r
 {
 	unsigned long long val;
 
+	if (pevent_get_field_val(s, event, "created", record, &val, 1) < 0)
+		return -1;
+
+	trace_seq_printf(s, "%s ", val ? "new" : "existing");
+
 	if (pevent_get_field_val(s, event, "gfn", record, &val, 1) < 0)
 		return -1;
 
@@ -433,5 +438,9 @@ int PEVENT_PLUGIN_LOADER(struct pevent *pevent)
 	pevent_register_event_handler(pevent, -1, "kvmmmu", "kvm_mmu_zap_page",
 				      kvm_mmu_print_role, NULL);
 
+	pevent_register_event_handler(pevent, -1, "kvmmmu",
+			"kvm_mmu_prepare_zap_page", kvm_mmu_print_role,
+			NULL);
+
 	return 0;
 }

--
Gleb.

#1 lore raw

Ping.

Quoted 41 lines · Gleb Natapov

kvm_mmu_zap_page event was renamed to kvm_mmu_prepare_zap_page. Add new even, but leave the old one to parse older traces. Print out "created" field for kvm_mmu_get_page event.

plugin_kvm.c +10 -2
index 55812ef..9b376d8 100644
@@ -382,7 +382,7 @@ static int kvm_mmu_print_role(struct trace_seq *s, struct pevent_record *record,
 	} else
 		trace_seq_printf(s, "WORD: %08x", role.word);
 
-	pevent_print_num_field(s, " root %u",  event,
+	pevent_print_num_field(s, " root %u ",  event,
 			       "root_count", record, 1);
 
 	if (pevent_get_field_val(s, event, "unsync", record, &val, 1) < 0)
@@ -397,6 +397,11 @@ static int kvm_mmu_get_page_handler(struct trace_seq *s, struct pevent_record *r
 {
 	unsigned long long val;
 
+	if (pevent_get_field_val(s, event, "created", record, &val, 1) < 0)
+		return -1;
+
+	trace_seq_printf(s, "%s ", val ? "new" : "existing");
+
 	if (pevent_get_field_val(s, event, "gfn", record, &val, 1) < 0)
 		return -1;
 
@@ -433,5 +438,9 @@ int PEVENT_PLUGIN_LOADER(struct pevent *pevent)
 	pevent_register_event_handler(pevent, -1, "kvmmmu", "kvm_mmu_zap_page",
 				      kvm_mmu_print_role, NULL);
 
+	pevent_register_event_handler(pevent, -1, "kvmmmu",
+			"kvm_mmu_prepare_zap_page", kvm_mmu_print_role,
+			NULL);
+
 	return 0;
 }
--
Quoted 5 lines

Gleb.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

--
Gleb.

#2 lore raw
Quoted 1 line · Gleb Natapov

Ping.

Please send email (especially patches) to my [email protected] account. I don't always read my RH email, except to skim it for RH related work.

I may miss a patch in my goodmis account, but I will periodically purge it (go through each email one by one and put them into special folders or delete them). A patch missed will eventually be hit there. But that's not the same for my RH account. A patch missed there, will never be seen again.

Note, I'm still in November of my "purge" so a December patch will probably take a week or two to see now ;-)

Anyway, I'll take a look at this patch and let you know.

Thanks,

-- Steve

Quoted 51 lines · Gleb Natapov
Quoted 41 lines

kvm_mmu_zap_page event was renamed to kvm_mmu_prepare_zap_page. Add new even, but leave the old one to parse older traces. Print out "created" field for kvm_mmu_get_page event.

plugin_kvm.c +10 -2
index 55812ef..9b376d8 100644
@@ -382,7 +382,7 @@ static int kvm_mmu_print_role(struct trace_seq *s, struct pevent_record *record,
 	} else
 		trace_seq_printf(s, "WORD: %08x", role.word);
 
-	pevent_print_num_field(s, " root %u",  event,
+	pevent_print_num_field(s, " root %u ",  event,
 			       "root_count", record, 1);
 
 	if (pevent_get_field_val(s, event, "unsync", record, &val, 1) < 0)
@@ -397,6 +397,11 @@ static int kvm_mmu_get_page_handler(struct trace_seq *s, struct pevent_record *r
 {
 	unsigned long long val;
 
+	if (pevent_get_field_val(s, event, "created", record, &val, 1) < 0)
+		return -1;
+
+	trace_seq_printf(s, "%s ", val ? "new" : "existing");
+
 	if (pevent_get_field_val(s, event, "gfn", record, &val, 1) < 0)
 		return -1;
 
@@ -433,5 +438,9 @@ int PEVENT_PLUGIN_LOADER(struct pevent *pevent)
 	pevent_register_event_handler(pevent, -1, "kvmmmu", "kvm_mmu_zap_page",
 				      kvm_mmu_print_role, NULL);
 
+	pevent_register_event_handler(pevent, -1, "kvmmmu",
+			"kvm_mmu_prepare_zap_page", kvm_mmu_print_role,
+			NULL);
+
 	return 0;
 }
--
Quoted 5 lines

Gleb.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

--
Gleb.

#3 lore raw
In reply to Gleb Natapov
Quoted 20 lines · Gleb Natapov

Ping.

Quoted 17 lines · Gleb Natapov

kvm_mmu_zap_page event was renamed to kvm_mmu_prepare_zap_page. Add new even, but leave the old one to parse older traces. Print out "created" field for kvm_mmu_get_page event.

plugin_kvm.c +1 -1
index 55812ef..9b376d8 100644
@@ -382,7 +382,7 @@ static int kvm_mmu_print_role(struct trace_seq *s, struct pevent_record *record,
 	} else
 		trace_seq_printf(s, "WORD: %08x", role.word);
 
-	pevent_print_num_field(s, " root %u",  event,
+	pevent_print_num_field(s, " root %u ",  event,
 			       "root_count", record, 1);
 
Quoted 6 lines

plugin_kvm.c static int kvm_mmu_get_page_handler(struct trace_seq *s, struct pevent_record *r · line 400

Quoted 6 lines
plugin_kvm.c +1 -0
 	if (pevent_get_field_val(s, event, "unsync", record, &val, 1) < 0)
@@ -397,6 +397,11 @@ static int kvm_mmu_get_page_handler(struct trace_seq *s, struct pevent_record *r
 {
 	unsigned long long val;
 
+	if (pevent_get_field_val(s, event, "created", record, &val, 1) < 0)

Is "created" a new field? Or is it something that has always been there but never displayed?

If it is new, then instead of returning '-1' if it's not found, could you just ignore it. I don't want old kernels to start breaking on new trace-cmd plugins.

Thanks,

-- Steve

Quoted 26 lines
Quoted 18 lines
plugin_kvm.c +8 -1
+		return -1;
+
+	trace_seq_printf(s, "%s ", val ? "new" : "existing");
+
 	if (pevent_get_field_val(s, event, "gfn", record, &val, 1) < 0)
 		return -1;
 
@@ -433,5 +438,9 @@ int PEVENT_PLUGIN_LOADER(struct pevent *pevent)
 	pevent_register_event_handler(pevent, -1, "kvmmmu", "kvm_mmu_zap_page",
 				      kvm_mmu_print_role, NULL);
 
+	pevent_register_event_handler(pevent, -1, "kvmmmu",
+			"kvm_mmu_prepare_zap_page", kvm_mmu_print_role,
+			NULL);
+
 	return 0;
 }
--
Quoted 5 lines

Gleb.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

--
Gleb.

#4 lore raw
Quoted 26 lines · Steven Rostedt
Quoted 25 lines · Gleb Natapov

Ping.

Quoted 22 lines · Gleb Natapov

kvm_mmu_zap_page event was renamed to kvm_mmu_prepare_zap_page. Add new even, but leave the old one to parse older traces. Print out "created" field for kvm_mmu_get_page event.

plugin_kvm.c +1 -1
index 55812ef..9b376d8 100644
@@ -382,7 +382,7 @@ static int kvm_mmu_print_role(struct trace_seq *s, struct pevent_record *record,
 	} else
 		trace_seq_printf(s, "WORD: %08x", role.word);
 
-	pevent_print_num_field(s, " root %u",  event,
+	pevent_print_num_field(s, " root %u ",  event,
 			       "root_count", record, 1);
 
 	if (pevent_get_field_val(s, event, "unsync", record, &val, 1) < 0)
@@ -397,6 +397,11 @@ static int kvm_mmu_get_page_handler(struct trace_seq *s, struct pevent_record *r
 {
 	unsigned long long val;
 
Quoted 5 lines
Quoted 1 line

plugin_kvm.c static int kvm_mmu_get_page_handler(struct trace_seq *s, struct pevent_record *r · line 400

Quoted 1 line
plugin_kvm.c +1 -0
+	if (pevent_get_field_val(s, event, "created", record, &val, 1) < 0)

Is "created" a new field? Or is it something that has always been there but never displayed?

Always been there, but for some reason, was not displayed.

Quoted 4 lines

If it is new, then instead of returning '-1' if it's not found, could you just ignore it. I don't want old kernels to start breaking on new trace-cmd plugins.

Quoted 31 lines

Thanks,

-- Steve

Quoted 26 lines
Quoted 18 lines
plugin_kvm.c +8 -1
+		return -1;
+
+	trace_seq_printf(s, "%s ", val ? "new" : "existing");
+
 	if (pevent_get_field_val(s, event, "gfn", record, &val, 1) < 0)
 		return -1;
 
@@ -433,5 +438,9 @@ int PEVENT_PLUGIN_LOADER(struct pevent *pevent)
 	pevent_register_event_handler(pevent, -1, "kvmmmu", "kvm_mmu_zap_page",
 				      kvm_mmu_print_role, NULL);
 
+	pevent_register_event_handler(pevent, -1, "kvmmmu",
+			"kvm_mmu_prepare_zap_page", kvm_mmu_print_role,
+			NULL);
+
 	return 0;
 }
--
Quoted 5 lines

Gleb.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

--
Gleb.

--
Gleb.

#5 lore raw
Quoted 4 lines · Gleb Natapov
Quoted 3 lines

Is "created" a new field? Or is it something that has always been there but never displayed?

Always been there, but for some reason, was not displayed.

OK, I'll apply it then. Thanks!

-- Steve

Quoted 6 lines
Quoted 6 lines

If it is new, then instead of returning '-1' if it's not found, could you just ignore it. I don't want old kernels to start breaking on new trace-cmd plugins.