From: Yang Zhong Add a trace point for changing the guest virtual timer, similar to the hv timer case. Co-developed-by: Yang Zhong Signed-off-by: Yang Zhong Co-developed-by: Isaku Yamahata Signed-off-by: Isaku Yamahata --- arch/x86/kvm/lapic.c | 5 +++++ arch/x86/kvm/trace.h | 16 ++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c index 080245f6dac1..837f446eea41 100644 --- a/arch/x86/kvm/lapic.c +++ b/arch/x86/kvm/lapic.c @@ -1848,6 +1848,9 @@ static void cancel_apic_virt_timer(struct kvm_lapic *apic) kvm_x86_call(cancel_apic_virt_timer)(vcpu); apic->lapic_timer.apic_virt_timer_in_use = false; + + trace_kvm_apic_virt_timer_state(vcpu->vcpu_id, + apic->lapic_timer.apic_virt_timer_in_use); } static void apic_cancel_apic_virt_timer(struct kvm_lapic *apic) @@ -1876,6 +1879,8 @@ static void apic_set_apic_virt_timer(struct kvm_lapic *apic) kvm_x86_call(set_apic_virt_timer)(vcpu, vector); kvm_x86_call(set_guest_tsc_deadline_virt)(vcpu, ktimer->tscdeadline); ktimer->apic_virt_timer_in_use = true; + + trace_kvm_apic_virt_timer_state(vcpu->vcpu_id, ktimer->apic_virt_timer_in_use); } static bool kvm_can_use_apic_virt_timer(struct kvm_vcpu *vcpu) diff --git a/arch/x86/kvm/trace.h b/arch/x86/kvm/trace.h index e79bc9cb7162..649d06f87619 100644 --- a/arch/x86/kvm/trace.h +++ b/arch/x86/kvm/trace.h @@ -1649,6 +1649,22 @@ TRACE_EVENT(kvm_hv_timer_state, __entry->hv_timer_in_use) ); +TRACE_EVENT(kvm_apic_virt_timer_state, + TP_PROTO(unsigned int vcpu_id, unsigned int apic_virt_timer_in_use), + TP_ARGS(vcpu_id, apic_virt_timer_in_use), + TP_STRUCT__entry( + __field(unsigned int, vcpu_id) + __field(unsigned int, apic_virt_timer_in_use) + ), + TP_fast_assign( + __entry->vcpu_id = vcpu_id; + __entry->apic_virt_timer_in_use = apic_virt_timer_in_use; + ), + TP_printk("vcpu_id %x apic_virt_timer %x", + __entry->vcpu_id, + __entry->apic_virt_timer_in_use) +); + /* * Tracepoint for kvm_hv_flush_tlb. */ -- 2.45.2