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

KVM: s390: more irq names for trace events

This patch adds names for missing irq types to the trace events.
In order to identify adapter irqs, the define is moved from
interrupt.c to the other basic irq defines in uapi/linux/kvm.h.

Acked-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>

authored by

David Hildenbrand and committed by
Christian Borntraeger
a37281b6 3f24ba15

+18 -8
+1 -2
arch/s390/kvm/interrupt.c
··· 30 30 #define IOINT_SCHID_MASK 0x0000ffff 31 31 #define IOINT_SSID_MASK 0x00030000 32 32 #define IOINT_CSSID_MASK 0x03fc0000 33 - #define IOINT_AI_MASK 0x04000000 34 33 #define PFAULT_INIT 0x0600 35 34 #define PFAULT_DONE 0x0680 36 35 #define VIRTIO_PARAM 0x0d00 ··· 1446 1447 inti->mchk.mcic = s390int->parm64; 1447 1448 break; 1448 1449 case KVM_S390_INT_IO_MIN...KVM_S390_INT_IO_MAX: 1449 - if (inti->type & IOINT_AI_MASK) 1450 + if (inti->type & KVM_S390_INT_IO_AI_MASK) 1450 1451 VM_EVENT(kvm, 5, "%s", "inject: I/O (AI)"); 1451 1452 else 1452 1453 VM_EVENT(kvm, 5, "inject: I/O css %x ss %x schid %04x",
+16 -6
arch/s390/kvm/trace-s390.h
··· 105 105 {KVM_S390_PROGRAM_INT, "program interrupt"}, \ 106 106 {KVM_S390_SIGP_SET_PREFIX, "sigp set prefix"}, \ 107 107 {KVM_S390_RESTART, "sigp restart"}, \ 108 + {KVM_S390_INT_PFAULT_INIT, "pfault init"}, \ 109 + {KVM_S390_INT_PFAULT_DONE, "pfault done"}, \ 110 + {KVM_S390_MCHK, "machine check"}, \ 111 + {KVM_S390_INT_CLOCK_COMP, "clock comparator"}, \ 112 + {KVM_S390_INT_CPU_TIMER, "cpu timer"}, \ 108 113 {KVM_S390_INT_VIRTIO, "virtio interrupt"}, \ 109 114 {KVM_S390_INT_SERVICE, "sclp interrupt"}, \ 110 115 {KVM_S390_INT_EMERGENCY, "sigp emergency"}, \ 111 116 {KVM_S390_INT_EXTERNAL_CALL, "sigp ext call"} 117 + 118 + #define get_irq_name(__type) \ 119 + (__type > KVM_S390_INT_IO_MAX ? \ 120 + __print_symbolic(__type, kvm_s390_int_type) : \ 121 + (__type & KVM_S390_INT_IO_AI_MASK ? \ 122 + "adapter I/O interrupt" : "subchannel I/O interrupt")) 112 123 113 124 TRACE_EVENT(kvm_s390_inject_vm, 114 125 TP_PROTO(__u64 type, __u32 parm, __u64 parm64, int who), ··· 142 131 TP_printk("inject%s: type:%x (%s) parm:%x parm64:%llx", 143 132 (__entry->who == 1) ? " (from kernel)" : 144 133 (__entry->who == 2) ? " (from user)" : "", 145 - __entry->inttype, 146 - __print_symbolic(__entry->inttype, kvm_s390_int_type), 134 + __entry->inttype, get_irq_name(__entry->inttype), 147 135 __entry->parm, __entry->parm64) 148 136 ); 149 137 ··· 166 156 167 157 TP_printk("inject (vcpu %d): type:%x (%s) parm:%x parm64:%llx", 168 158 __entry->id, __entry->inttype, 169 - __print_symbolic(__entry->inttype, kvm_s390_int_type), 170 - __entry->parm, __entry->parm64) 159 + get_irq_name(__entry->inttype), __entry->parm, 160 + __entry->parm64) 171 161 ); 172 162 173 163 /* ··· 194 184 TP_printk("deliver interrupt (vcpu %d): type:%x (%s) " \ 195 185 "data:%08llx %016llx", 196 186 __entry->id, __entry->inttype, 197 - __print_symbolic(__entry->inttype, kvm_s390_int_type), 198 - __entry->data0, __entry->data1) 187 + get_irq_name(__entry->inttype), __entry->data0, 188 + __entry->data1) 199 189 ); 200 190 201 191 /*
+1
include/uapi/linux/kvm.h
··· 482 482 ((ai) << 26)) 483 483 #define KVM_S390_INT_IO_MIN 0x00000000u 484 484 #define KVM_S390_INT_IO_MAX 0xfffdffffu 485 + #define KVM_S390_INT_IO_AI_MASK 0x04000000u 485 486 486 487 487 488 struct kvm_s390_interrupt {