aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/kvm
diff options
context:
space:
mode:
authorJens Freimann <jfrei@linux.vnet.ibm.com>2014-11-11 14:57:06 -0500
committerChristian Borntraeger <borntraeger@de.ibm.com>2015-03-31 15:07:30 -0400
commit47b43c52ee4b0425449d1b2b1eedca7f6b7a578a (patch)
tree70342ba800b1cd61ed55059d12e873c706d822ba /arch/s390/kvm
parentb4aec92567f3146167cbc262c686ff73730aa4ca (diff)
KVM: s390: add ioctl to inject local interrupts
We have introduced struct kvm_s390_irq a while ago which allows to inject all kinds of interrupts as defined in the Principles of Operation. Add ioctl to inject interrupts with the extended struct kvm_s390_irq Signed-off-by: Jens Freimann <jfrei@linux.vnet.ibm.com> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com> Acked-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Diffstat (limited to 'arch/s390/kvm')
-rw-r--r--arch/s390/kvm/kvm-s390.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c
index dbc9ca34d9da..8bc25d405edf 100644
--- a/arch/s390/kvm/kvm-s390.c
+++ b/arch/s390/kvm/kvm-s390.c
@@ -177,6 +177,7 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
177 case KVM_CAP_S390_IRQCHIP: 177 case KVM_CAP_S390_IRQCHIP:
178 case KVM_CAP_VM_ATTRIBUTES: 178 case KVM_CAP_VM_ATTRIBUTES:
179 case KVM_CAP_MP_STATE: 179 case KVM_CAP_MP_STATE:
180 case KVM_CAP_S390_INJECT_IRQ:
180 case KVM_CAP_S390_USER_SIGP: 181 case KVM_CAP_S390_USER_SIGP:
181 case KVM_CAP_S390_USER_STSI: 182 case KVM_CAP_S390_USER_STSI:
182 case KVM_CAP_S390_SKEYS: 183 case KVM_CAP_S390_SKEYS:
@@ -2391,6 +2392,15 @@ long kvm_arch_vcpu_ioctl(struct file *filp,
2391 long r; 2392 long r;
2392 2393
2393 switch (ioctl) { 2394 switch (ioctl) {
2395 case KVM_S390_IRQ: {
2396 struct kvm_s390_irq s390irq;
2397
2398 r = -EFAULT;
2399 if (copy_from_user(&s390irq, argp, sizeof(s390irq)))
2400 break;
2401 r = kvm_s390_inject_vcpu(vcpu, &s390irq);
2402 break;
2403 }
2394 case KVM_S390_INTERRUPT: { 2404 case KVM_S390_INTERRUPT: {
2395 struct kvm_s390_interrupt s390int; 2405 struct kvm_s390_interrupt s390int;
2396 struct kvm_s390_irq s390irq; 2406 struct kvm_s390_irq s390irq;