aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/s390/kvm/interrupt.c3
-rw-r--r--arch/s390/kvm/trace-s390.h22
-rw-r--r--include/uapi/linux/kvm.h1
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
113TRACE_EVENT(kvm_s390_inject_vm, 124TRACE_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
487struct kvm_s390_interrupt { 488struct kvm_s390_interrupt {