diff options
-rw-r--r-- | arch/s390/kvm/interrupt.c | 3 | ||||
-rw-r--r-- | arch/s390/kvm/trace-s390.h | 22 | ||||
-rw-r--r-- | include/uapi/linux/kvm.h | 1 |
3 files changed, 18 insertions, 8 deletions
diff --git a/arch/s390/kvm/interrupt.c b/arch/s390/kvm/interrupt.c index 6c98fb61d154..a5781404b83f 100644 --- a/arch/s390/kvm/interrupt.c +++ b/arch/s390/kvm/interrupt.c | |||
@@ -30,7 +30,6 @@ | |||
30 | #define IOINT_SCHID_MASK 0x0000ffff | 30 | #define IOINT_SCHID_MASK 0x0000ffff |
31 | #define IOINT_SSID_MASK 0x00030000 | 31 | #define IOINT_SSID_MASK 0x00030000 |
32 | #define IOINT_CSSID_MASK 0x03fc0000 | 32 | #define IOINT_CSSID_MASK 0x03fc0000 |
33 | #define IOINT_AI_MASK 0x04000000 | ||
34 | #define PFAULT_INIT 0x0600 | 33 | #define PFAULT_INIT 0x0600 |
35 | #define PFAULT_DONE 0x0680 | 34 | #define PFAULT_DONE 0x0680 |
36 | #define VIRTIO_PARAM 0x0d00 | 35 | #define VIRTIO_PARAM 0x0d00 |
@@ -1447,7 +1446,7 @@ int kvm_s390_inject_vm(struct kvm *kvm, | |||
1447 | inti->mchk.mcic = s390int->parm64; | 1446 | inti->mchk.mcic = s390int->parm64; |
1448 | break; | 1447 | break; |
1449 | case KVM_S390_INT_IO_MIN...KVM_S390_INT_IO_MAX: | 1448 | case KVM_S390_INT_IO_MIN...KVM_S390_INT_IO_MAX: |
1450 | if (inti->type & IOINT_AI_MASK) | 1449 | if (inti->type & KVM_S390_INT_IO_AI_MASK) |
1451 | VM_EVENT(kvm, 5, "%s", "inject: I/O (AI)"); | 1450 | VM_EVENT(kvm, 5, "%s", "inject: I/O (AI)"); |
1452 | else | 1451 | else |
1453 | VM_EVENT(kvm, 5, "inject: I/O css %x ss %x schid %04x", | 1452 | VM_EVENT(kvm, 5, "inject: I/O css %x ss %x schid %04x", |
diff --git a/arch/s390/kvm/trace-s390.h b/arch/s390/kvm/trace-s390.h index 4f373c50c264..cc1d6c68356f 100644 --- a/arch/s390/kvm/trace-s390.h +++ b/arch/s390/kvm/trace-s390.h | |||
@@ -105,11 +105,22 @@ TRACE_EVENT(kvm_s390_vcpu_start_stop, | |||
105 | {KVM_S390_PROGRAM_INT, "program interrupt"}, \ | 105 | {KVM_S390_PROGRAM_INT, "program interrupt"}, \ |
106 | {KVM_S390_SIGP_SET_PREFIX, "sigp set prefix"}, \ | 106 | {KVM_S390_SIGP_SET_PREFIX, "sigp set prefix"}, \ |
107 | {KVM_S390_RESTART, "sigp restart"}, \ | 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 | {KVM_S390_INT_VIRTIO, "virtio interrupt"}, \ | 113 | {KVM_S390_INT_VIRTIO, "virtio interrupt"}, \ |
109 | {KVM_S390_INT_SERVICE, "sclp interrupt"}, \ | 114 | {KVM_S390_INT_SERVICE, "sclp interrupt"}, \ |
110 | {KVM_S390_INT_EMERGENCY, "sigp emergency"}, \ | 115 | {KVM_S390_INT_EMERGENCY, "sigp emergency"}, \ |
111 | {KVM_S390_INT_EXTERNAL_CALL, "sigp ext call"} | 116 | {KVM_S390_INT_EXTERNAL_CALL, "sigp ext call"} |
112 | 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")) | ||
123 | |||
113 | TRACE_EVENT(kvm_s390_inject_vm, | 124 | TRACE_EVENT(kvm_s390_inject_vm, |
114 | TP_PROTO(__u64 type, __u32 parm, __u64 parm64, int who), | 125 | TP_PROTO(__u64 type, __u32 parm, __u64 parm64, int who), |
115 | TP_ARGS(type, parm, parm64, who), | 126 | TP_ARGS(type, parm, parm64, who), |
@@ -131,8 +142,7 @@ TRACE_EVENT(kvm_s390_inject_vm, | |||
131 | TP_printk("inject%s: type:%x (%s) parm:%x parm64:%llx", | 142 | TP_printk("inject%s: type:%x (%s) parm:%x parm64:%llx", |
132 | (__entry->who == 1) ? " (from kernel)" : | 143 | (__entry->who == 1) ? " (from kernel)" : |
133 | (__entry->who == 2) ? " (from user)" : "", | 144 | (__entry->who == 2) ? " (from user)" : "", |
134 | __entry->inttype, | 145 | __entry->inttype, get_irq_name(__entry->inttype), |
135 | __print_symbolic(__entry->inttype, kvm_s390_int_type), | ||
136 | __entry->parm, __entry->parm64) | 146 | __entry->parm, __entry->parm64) |
137 | ); | 147 | ); |
138 | 148 | ||
@@ -156,8 +166,8 @@ TRACE_EVENT(kvm_s390_inject_vcpu, | |||
156 | 166 | ||
157 | TP_printk("inject (vcpu %d): type:%x (%s) parm:%x parm64:%llx", | 167 | TP_printk("inject (vcpu %d): type:%x (%s) parm:%x parm64:%llx", |
158 | __entry->id, __entry->inttype, | 168 | __entry->id, __entry->inttype, |
159 | __print_symbolic(__entry->inttype, kvm_s390_int_type), | 169 | get_irq_name(__entry->inttype), __entry->parm, |
160 | __entry->parm, __entry->parm64) | 170 | __entry->parm64) |
161 | ); | 171 | ); |
162 | 172 | ||
163 | /* | 173 | /* |
@@ -184,8 +194,8 @@ TRACE_EVENT(kvm_s390_deliver_interrupt, | |||
184 | TP_printk("deliver interrupt (vcpu %d): type:%x (%s) " \ | 194 | TP_printk("deliver interrupt (vcpu %d): type:%x (%s) " \ |
185 | "data:%08llx %016llx", | 195 | "data:%08llx %016llx", |
186 | __entry->id, __entry->inttype, | 196 | __entry->id, __entry->inttype, |
187 | __print_symbolic(__entry->inttype, kvm_s390_int_type), | 197 | get_irq_name(__entry->inttype), __entry->data0, |
188 | __entry->data0, __entry->data1) | 198 | __entry->data1) |
189 | ); | 199 | ); |
190 | 200 | ||
191 | /* | 201 | /* |
diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h index 9ef19ebd9df4..0d831f94f8a8 100644 --- a/include/uapi/linux/kvm.h +++ b/include/uapi/linux/kvm.h | |||
@@ -482,6 +482,7 @@ struct kvm_s390_psw { | |||
482 | ((ai) << 26)) | 482 | ((ai) << 26)) |
483 | #define KVM_S390_INT_IO_MIN 0x00000000u | 483 | #define KVM_S390_INT_IO_MIN 0x00000000u |
484 | #define KVM_S390_INT_IO_MAX 0xfffdffffu | 484 | #define KVM_S390_INT_IO_MAX 0xfffdffffu |
485 | #define KVM_S390_INT_IO_AI_MASK 0x04000000u | ||
485 | 486 | ||
486 | 487 | ||
487 | struct kvm_s390_interrupt { | 488 | struct kvm_s390_interrupt { |