diff options
author | Jens Freimann <jfrei@linux.vnet.ibm.com> | 2014-11-11 14:57:06 -0500 |
---|---|---|
committer | Christian Borntraeger <borntraeger@de.ibm.com> | 2015-03-31 15:07:30 -0400 |
commit | 47b43c52ee4b0425449d1b2b1eedca7f6b7a578a (patch) | |
tree | 70342ba800b1cd61ed55059d12e873c706d822ba /arch/s390/kvm | |
parent | b4aec92567f3146167cbc262c686ff73730aa4ca (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.c | 10 |
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; |