aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXiao Guangrong <xiaoguangrong@cn.fujitsu.com>2010-11-01 04:58:43 -0400
committerAvi Kivity <avi@redhat.com>2011-01-12 04:28:56 -0500
commitc9b263d2be9c535b410f6617710534f798bf0ff0 (patch)
tree1ae7a644cb583bf3de163c07220083caecb14eed
parent2653503769ef9ae771509e1358a3da8de8d21709 (diff)
KVM: fix tracing kvm_try_async_get_page
Tracing 'async' and *pfn is useless, since 'async' is always true, and '*pfn' is always "fault_pfn' We can trace 'gva' and 'gfn' instead, it can help us to see the life-cycle of an async_pf Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
-rw-r--r--arch/x86/kvm/mmu.c2
-rw-r--r--include/trace/events/kvm.h12
2 files changed, 8 insertions, 6 deletions
diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
index 53509f5973db..272e30200030 100644
--- a/arch/x86/kvm/mmu.c
+++ b/arch/x86/kvm/mmu.c
@@ -2628,7 +2628,7 @@ static bool try_async_pf(struct kvm_vcpu *vcpu, bool no_apf, gfn_t gfn,
2628 put_page(pfn_to_page(*pfn)); 2628 put_page(pfn_to_page(*pfn));
2629 2629
2630 if (!no_apf && can_do_async_pf(vcpu)) { 2630 if (!no_apf && can_do_async_pf(vcpu)) {
2631 trace_kvm_try_async_get_page(async, *pfn); 2631 trace_kvm_try_async_get_page(gva, gfn);
2632 if (kvm_find_async_pf_gfn(vcpu, gfn)) { 2632 if (kvm_find_async_pf_gfn(vcpu, gfn)) {
2633 trace_kvm_async_pf_doublefault(gva, gfn); 2633 trace_kvm_async_pf_doublefault(gva, gfn);
2634 kvm_make_request(KVM_REQ_APF_HALT, vcpu); 2634 kvm_make_request(KVM_REQ_APF_HALT, vcpu);
diff --git a/include/trace/events/kvm.h b/include/trace/events/kvm.h
index c86f4e8e0bc9..d94d6c312ca1 100644
--- a/include/trace/events/kvm.h
+++ b/include/trace/events/kvm.h
@@ -218,18 +218,20 @@ TRACE_EVENT(kvm_age_page,
218#ifdef CONFIG_KVM_ASYNC_PF 218#ifdef CONFIG_KVM_ASYNC_PF
219TRACE_EVENT( 219TRACE_EVENT(
220 kvm_try_async_get_page, 220 kvm_try_async_get_page,
221 TP_PROTO(bool async, u64 pfn), 221 TP_PROTO(u64 gva, u64 gfn),
222 TP_ARGS(async, pfn), 222 TP_ARGS(gva, gfn),
223 223
224 TP_STRUCT__entry( 224 TP_STRUCT__entry(
225 __field(__u64, pfn) 225 __field(u64, gva)
226 __field(u64, gfn)
226 ), 227 ),
227 228
228 TP_fast_assign( 229 TP_fast_assign(
229 __entry->pfn = (!async) ? pfn : (u64)-1; 230 __entry->gva = gva;
231 __entry->gfn = gfn;
230 ), 232 ),
231 233
232 TP_printk("pfn %#llx", __entry->pfn) 234 TP_printk("gva = %#llx, gfn = %#llx", __entry->gva, __entry->gfn)
233); 235);
234 236
235TRACE_EVENT( 237TRACE_EVENT(