Commit a37281b6 authored by David Hildenbrand's avatar David Hildenbrand Committed by Christian Borntraeger

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: default avatarCornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: default avatarDavid Hildenbrand <dahi@linux.vnet.ibm.com>
Signed-off-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
parent 3f24ba15
...@@ -30,7 +30,6 @@ ...@@ -30,7 +30,6 @@
#define IOINT_SCHID_MASK 0x0000ffff #define IOINT_SCHID_MASK 0x0000ffff
#define IOINT_SSID_MASK 0x00030000 #define IOINT_SSID_MASK 0x00030000
#define IOINT_CSSID_MASK 0x03fc0000 #define IOINT_CSSID_MASK 0x03fc0000
#define IOINT_AI_MASK 0x04000000
#define PFAULT_INIT 0x0600 #define PFAULT_INIT 0x0600
#define PFAULT_DONE 0x0680 #define PFAULT_DONE 0x0680
#define VIRTIO_PARAM 0x0d00 #define VIRTIO_PARAM 0x0d00
...@@ -1447,7 +1446,7 @@ int kvm_s390_inject_vm(struct kvm *kvm, ...@@ -1447,7 +1446,7 @@ int kvm_s390_inject_vm(struct kvm *kvm,
inti->mchk.mcic = s390int->parm64; inti->mchk.mcic = s390int->parm64;
break; break;
case KVM_S390_INT_IO_MIN...KVM_S390_INT_IO_MAX: case KVM_S390_INT_IO_MIN...KVM_S390_INT_IO_MAX:
if (inti->type & IOINT_AI_MASK) if (inti->type & KVM_S390_INT_IO_AI_MASK)
VM_EVENT(kvm, 5, "%s", "inject: I/O (AI)"); VM_EVENT(kvm, 5, "%s", "inject: I/O (AI)");
else else
VM_EVENT(kvm, 5, "inject: I/O css %x ss %x schid %04x", VM_EVENT(kvm, 5, "inject: I/O css %x ss %x schid %04x",
......
...@@ -105,11 +105,22 @@ TRACE_EVENT(kvm_s390_vcpu_start_stop, ...@@ -105,11 +105,22 @@ TRACE_EVENT(kvm_s390_vcpu_start_stop,
{KVM_S390_PROGRAM_INT, "program interrupt"}, \ {KVM_S390_PROGRAM_INT, "program interrupt"}, \
{KVM_S390_SIGP_SET_PREFIX, "sigp set prefix"}, \ {KVM_S390_SIGP_SET_PREFIX, "sigp set prefix"}, \
{KVM_S390_RESTART, "sigp restart"}, \ {KVM_S390_RESTART, "sigp restart"}, \
{KVM_S390_INT_PFAULT_INIT, "pfault init"}, \
{KVM_S390_INT_PFAULT_DONE, "pfault done"}, \
{KVM_S390_MCHK, "machine check"}, \
{KVM_S390_INT_CLOCK_COMP, "clock comparator"}, \
{KVM_S390_INT_CPU_TIMER, "cpu timer"}, \
{KVM_S390_INT_VIRTIO, "virtio interrupt"}, \ {KVM_S390_INT_VIRTIO, "virtio interrupt"}, \
{KVM_S390_INT_SERVICE, "sclp interrupt"}, \ {KVM_S390_INT_SERVICE, "sclp interrupt"}, \
{KVM_S390_INT_EMERGENCY, "sigp emergency"}, \ {KVM_S390_INT_EMERGENCY, "sigp emergency"}, \
{KVM_S390_INT_EXTERNAL_CALL, "sigp ext call"} {KVM_S390_INT_EXTERNAL_CALL, "sigp ext call"}
#define get_irq_name(__type) \
(__type > KVM_S390_INT_IO_MAX ? \
__print_symbolic(__type, kvm_s390_int_type) : \
(__type & KVM_S390_INT_IO_AI_MASK ? \
"adapter I/O interrupt" : "subchannel I/O interrupt"))
TRACE_EVENT(kvm_s390_inject_vm, TRACE_EVENT(kvm_s390_inject_vm,
TP_PROTO(__u64 type, __u32 parm, __u64 parm64, int who), TP_PROTO(__u64 type, __u32 parm, __u64 parm64, int who),
TP_ARGS(type, parm, parm64, who), TP_ARGS(type, parm, parm64, who),
...@@ -131,8 +142,7 @@ TRACE_EVENT(kvm_s390_inject_vm, ...@@ -131,8 +142,7 @@ TRACE_EVENT(kvm_s390_inject_vm,
TP_printk("inject%s: type:%x (%s) parm:%x parm64:%llx", TP_printk("inject%s: type:%x (%s) parm:%x parm64:%llx",
(__entry->who == 1) ? " (from kernel)" : (__entry->who == 1) ? " (from kernel)" :
(__entry->who == 2) ? " (from user)" : "", (__entry->who == 2) ? " (from user)" : "",
__entry->inttype, __entry->inttype, get_irq_name(__entry->inttype),
__print_symbolic(__entry->inttype, kvm_s390_int_type),
__entry->parm, __entry->parm64) __entry->parm, __entry->parm64)
); );
...@@ -156,8 +166,8 @@ TRACE_EVENT(kvm_s390_inject_vcpu, ...@@ -156,8 +166,8 @@ TRACE_EVENT(kvm_s390_inject_vcpu,
TP_printk("inject (vcpu %d): type:%x (%s) parm:%x parm64:%llx", TP_printk("inject (vcpu %d): type:%x (%s) parm:%x parm64:%llx",
__entry->id, __entry->inttype, __entry->id, __entry->inttype,
__print_symbolic(__entry->inttype, kvm_s390_int_type), get_irq_name(__entry->inttype), __entry->parm,
__entry->parm, __entry->parm64) __entry->parm64)
); );
/* /*
...@@ -184,8 +194,8 @@ TRACE_EVENT(kvm_s390_deliver_interrupt, ...@@ -184,8 +194,8 @@ TRACE_EVENT(kvm_s390_deliver_interrupt,
TP_printk("deliver interrupt (vcpu %d): type:%x (%s) " \ TP_printk("deliver interrupt (vcpu %d): type:%x (%s) " \
"data:%08llx %016llx", "data:%08llx %016llx",
__entry->id, __entry->inttype, __entry->id, __entry->inttype,
__print_symbolic(__entry->inttype, kvm_s390_int_type), get_irq_name(__entry->inttype), __entry->data0,
__entry->data0, __entry->data1) __entry->data1)
); );
/* /*
......
...@@ -482,6 +482,7 @@ struct kvm_s390_psw { ...@@ -482,6 +482,7 @@ struct kvm_s390_psw {
((ai) << 26)) ((ai) << 26))
#define KVM_S390_INT_IO_MIN 0x00000000u #define KVM_S390_INT_IO_MIN 0x00000000u
#define KVM_S390_INT_IO_MAX 0xfffdffffu #define KVM_S390_INT_IO_MAX 0xfffdffffu
#define KVM_S390_INT_IO_AI_MASK 0x04000000u
struct kvm_s390_interrupt { struct kvm_s390_interrupt {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment