Define a proper trace event for KVM_IRQ_LINE for ARM and use this for all interrupt injection, CPU or VGIC. Signed-off-by: Christoffer Dall <c.dall@xxxxxxxxxxxxxxxxxxxxxx> --- arch/arm/kvm/arm.c | 4 ++-- arch/arm/kvm/trace.h | 25 +++++++++++++++++++++++++ arch/arm/kvm/vgic.c | 1 - 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/arch/arm/kvm/arm.c b/arch/arm/kvm/arm.c index b296834..7f0d5af 100644 --- a/arch/arm/kvm/arm.c +++ b/arch/arm/kvm/arm.c @@ -707,8 +707,6 @@ static int vcpu_interrupt_line(struct kvm_vcpu *vcpu, int number, bool level) bool set; unsigned long *ptr; - trace_kvm_set_irq(number, level, 0); - if (number == KVM_ARM_IRQ_CPU_IRQ) bit_index = ffs(HCR_VI) - 1; else /* KVM_ARM_IRQ_CPU_FIQ */ @@ -748,6 +746,8 @@ int kvm_vm_ioctl_irq_line(struct kvm *kvm, struct kvm_irq_level *irq_level) vcpu_idx = (irq >> KVM_ARM_IRQ_VCPU_SHIFT) & KVM_ARM_IRQ_VCPU_MASK; irq_num = (irq >> KVM_ARM_IRQ_NUM_SHIFT) & KVM_ARM_IRQ_NUM_MASK; + trace_kvm_irq_line(irq_type, vcpu_idx, irq_num, irq_level->level); + if (irq_type == KVM_ARM_IRQ_TYPE_CPU || irq_type == KVM_ARM_IRQ_TYPE_PPI) { if (vcpu_idx >= nrcpus) diff --git a/arch/arm/kvm/trace.h b/arch/arm/kvm/trace.h index a46f2b1..b371138 100644 --- a/arch/arm/kvm/trace.h +++ b/arch/arm/kvm/trace.h @@ -67,6 +67,31 @@ TRACE_EVENT(kvm_guest_fault, __entry->hsr, __entry->ipa) ); +TRACE_EVENT(kvm_irq_line, + TP_PROTO(unsigned int type, int vcpu_idx, int irq_num, int level), + TP_ARGS(type, vcpu_idx, irq_num, level), + + TP_STRUCT__entry( + __field( unsigned int, type ) + __field( int, vcpu_idx ) + __field( int, irq_num ) + __field( int, level ) + ), + + TP_fast_assign( + __entry->type = type; + __entry->vcpu_idx = vcpu_idx; + __entry->irq_num = irq_num; + __entry->level = level; + ), + + TP_printk("Inject %s interrupt (%d), vcpu->idx: %d, num: %d, level: %d", + (__entry->type == KVM_ARM_IRQ_TYPE_CPU) ? "CPU" : + (__entry->type == KVM_ARM_IRQ_TYPE_PPI) ? "VGIC PPI" : + (__entry->type == KVM_ARM_IRQ_TYPE_SPI) ? "VGIC SPI" : "UNKNOWN", + __entry->type, __entry->vcpu_idx, __entry->irq_num, __entry->level) +); + TRACE_EVENT(kvm_mmio_emulate, TP_PROTO(unsigned long vcpu_pc, unsigned long instr, unsigned long cpsr), diff --git a/arch/arm/kvm/vgic.c b/arch/arm/kvm/vgic.c index 3da7a44..27f8e81 100644 --- a/arch/arm/kvm/vgic.c +++ b/arch/arm/kvm/vgic.c @@ -874,7 +874,6 @@ int kvm_vgic_inject_irq(struct kvm *kvm, int cpuid, unsigned int irq_num, unsigned long flags; bool updated_state = false; - kvm_debug("Inject IRQ%d\n", irq_num); spin_lock_irqsave(&dist->lock, flags); is_edge = vgic_irq_is_edge(dist, irq_num); state = vgic_bitmap_get_irq_val(&dist->irq_state, cpuid, irq_num); -- 1.7.9.5 _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/cucslists/listinfo/kvmarm