Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

KVM: PPC: BookE: Improve irq inject tracepoint

When injecting an IRQ, we only document which IRQ priority (which translates
to IRQ type) gets injected. However, when reading traces you don't necessarily
have all the numbers in your head to know which IRQ really is meant.

This patch converts the IRQ number field to a symbolic name that is in sync
with the respective define. That way it's a lot easier for readers to figure
out what interrupt gets injected.

Signed-off-by: Alexander Graf <agraf@suse.de>

+45 -2
+45 -2
arch/powerpc/kvm/trace_booke.h
··· 151 151 __entry->pfn, __entry->flags) 152 152 ); 153 153 154 + #ifdef CONFIG_SPE_POSSIBLE 155 + #define kvm_trace_symbol_irqprio_spe \ 156 + {BOOKE_IRQPRIO_SPE_UNAVAIL, "SPE_UNAVAIL"}, \ 157 + {BOOKE_IRQPRIO_SPE_FP_DATA, "SPE_FP_DATA"}, \ 158 + {BOOKE_IRQPRIO_SPE_FP_ROUND, "SPE_FP_ROUND"}, 159 + #else 160 + #define kvm_trace_symbol_irqprio_spe 161 + #endif 162 + 163 + #ifdef CONFIG_PPC_E500MC 164 + #define kvm_trace_symbol_irqprio_e500mc \ 165 + {BOOKE_IRQPRIO_ALTIVEC_UNAVAIL, "ALTIVEC_UNAVAIL"}, \ 166 + {BOOKE_IRQPRIO_ALTIVEC_ASSIST, "ALTIVEC_ASSIST"}, 167 + #else 168 + #define kvm_trace_symbol_irqprio_e500mc 169 + #endif 170 + 171 + #define kvm_trace_symbol_irqprio \ 172 + kvm_trace_symbol_irqprio_spe \ 173 + kvm_trace_symbol_irqprio_e500mc \ 174 + {BOOKE_IRQPRIO_DATA_STORAGE, "DATA_STORAGE"}, \ 175 + {BOOKE_IRQPRIO_INST_STORAGE, "INST_STORAGE"}, \ 176 + {BOOKE_IRQPRIO_ALIGNMENT, "ALIGNMENT"}, \ 177 + {BOOKE_IRQPRIO_PROGRAM, "PROGRAM"}, \ 178 + {BOOKE_IRQPRIO_FP_UNAVAIL, "FP_UNAVAIL"}, \ 179 + {BOOKE_IRQPRIO_SYSCALL, "SYSCALL"}, \ 180 + {BOOKE_IRQPRIO_AP_UNAVAIL, "AP_UNAVAIL"}, \ 181 + {BOOKE_IRQPRIO_DTLB_MISS, "DTLB_MISS"}, \ 182 + {BOOKE_IRQPRIO_ITLB_MISS, "ITLB_MISS"}, \ 183 + {BOOKE_IRQPRIO_MACHINE_CHECK, "MACHINE_CHECK"}, \ 184 + {BOOKE_IRQPRIO_DEBUG, "DEBUG"}, \ 185 + {BOOKE_IRQPRIO_CRITICAL, "CRITICAL"}, \ 186 + {BOOKE_IRQPRIO_WATCHDOG, "WATCHDOG"}, \ 187 + {BOOKE_IRQPRIO_EXTERNAL, "EXTERNAL"}, \ 188 + {BOOKE_IRQPRIO_FIT, "FIT"}, \ 189 + {BOOKE_IRQPRIO_DECREMENTER, "DECREMENTER"}, \ 190 + {BOOKE_IRQPRIO_PERFORMANCE_MONITOR, "PERFORMANCE_MONITOR"}, \ 191 + {BOOKE_IRQPRIO_EXTERNAL_LEVEL, "EXTERNAL_LEVEL"}, \ 192 + {BOOKE_IRQPRIO_DBELL, "DBELL"}, \ 193 + {BOOKE_IRQPRIO_DBELL_CRIT, "DBELL_CRIT"} \ 194 + 154 195 TRACE_EVENT(kvm_booke_queue_irqprio, 155 196 TP_PROTO(struct kvm_vcpu *vcpu, unsigned int priority), 156 197 TP_ARGS(vcpu, priority), ··· 208 167 __entry->pending = vcpu->arch.pending_exceptions; 209 168 ), 210 169 211 - TP_printk("vcpu=%x prio=%x pending=%lx", 212 - __entry->cpu_nr, __entry->priority, __entry->pending) 170 + TP_printk("vcpu=%x prio=%s pending=%lx", 171 + __entry->cpu_nr, 172 + __print_symbolic(__entry->priority, kvm_trace_symbol_irqprio), 173 + __entry->pending) 213 174 ); 214 175 215 176 #endif