add trace points in irqchip code
PATCH v2 1/1 add trace points in irqchip code
Add tracepoint in msi/ioapic/pic set_irq() functions, in IPI sending and in the point where IRQ is placed into apic's IRR.
Signed-off-by Gleb Natapov <[email protected]>
---
The difference from previous version are:
int -> bool for coalesced parameter.
no "=" in output.
addr in msi irq trace is u64 now.
arch/x86/kvm/i8259.c +3 -0
@@ -30,6 +30,7 @@#include "irq.h" #include <linux/kvm_host.h> +#include "trace.h" static void pic_lock(struct kvm_pic *s) __acquires(&s->lock)
@@ -190,6 +191,8 @@ int kvm_pic_set_irq(void *opaque, int irq, int level)if (irq >=0 && irq <PIC_NUM_PINS ) { ret =pic_set_irq1 (&s->pics[irq >>3 ], irq &7 , level);pic_update_irq (s); +trace_kvm_pic_set_irq (irq >>3 , irq &7 , s->pics[irq >>3 ].elcr, + s->pics[irq >>3 ].imr, ret ==0 ); }pic_unlock (s);
arch/x86/kvm/lapic.c +4 -0
@@ -375,6 +375,8 @@ static int __apic_accept_irq(struct kvm_lapic *apic, int delivery_mode,break ; result = !apic_test_and_set_irr (vector, apic); +trace_kvm_apic_accept_irq (vcpu->vcpu_id, delivery_mode, + trig_mode, vector, result);if (!result) {if (trig_mode) apic_debug("level trig mode repeatedly for "
@@ -493,6 +495,8 @@ static void apic_send_ipi(struct kvm_lapic *apic)else irq.dest_id =GET_APIC_DEST_FIELD (icr_high); +trace_kvm_apic_ipi (icr_low, irq.dest_id); + apic_debug("icr_high 0x%x, icr_low 0x%x, " "short_hand 0x%x, dest 0x%x, trig_mode 0x%x, level 0x%x, " "dest_mode 0x%x, delivery_mode 0x%x, vector 0x%x\n",
arch/x86/kvm/trace.h +85 -0
91 lines not on this page · raw message
include/trace/events/kvm.h +56 -0
62 lines not on this page · raw message
virt/kvm/ioapic.c +2 -0
@@ -36,6 +36,7 @@#include <asm/processor.h> #include <asm/page.h> #include <asm/current.h> +#include <trace/events/kvm.h> #include "ioapic.h" #include "lapic.h"
@@ -193,6 +194,7 @@ int kvm_ioapic_set_irq(struct kvm_ioapic *ioapic, int irq, int level) (!edge && !entry.fields.remote_irr)) ret =ioapic_service (ioapic, irq); } +trace_kvm_ioapic_set_irq (entry.bits, irq, ret ==0 ); }return ret; }
virt/kvm/irq_comm.c +2 -0
@@ -100,6 +100,8 @@ static int kvm_set_msi(struct kvm_kernel_irq_routing_entry *e, {struct kvm_lapic_irq irq; +trace_kvm_msi_set_irq (e->msi.address_lo, e->msi.data); + irq.dest_id = (e->msi.address_lo &MSI_ADDR_DEST_ID_MASK ) >>MSI_ADDR_DEST_ID_SHIFT ; irq.vector = (e->msi.data &
--
Gleb.
Avi Kivity
AppliedQuoted 4 lines · Gleb Natapov
Add tracepoint in msi/ioapic/pic
set_irq()functions, in IPI sending and in the point where IRQ is placed into apic's IRR.
Applied, thanks.
Signature · 1 line
error compiling committee.c: too many arguments to function