aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/kvm/interrupt.c
diff options
context:
space:
mode:
authorDavid Hildenbrand <dahi@linux.vnet.ibm.com>2014-11-20 07:49:32 -0500
committerChristian Borntraeger <borntraeger@de.ibm.com>2015-10-13 09:50:34 -0400
commit66933b78e3204057bfc26343afcd0d463c0e8e55 (patch)
tree8d25fc3ce831d7cea11af5d8e73f7ebc94eec258 /arch/s390/kvm/interrupt.c
parent4d32ad6becf0baf09f38707f0aff42c0f4367a99 (diff)
KVM: s390: simplify in-kernel program irq injection
The main reason to keep program injection in kernel separated until now was that we were able to do some checking, if really only the owning thread injects program interrupts (via waitqueue_active(li->wq)). This BUG_ON was never triggered and the chances of really hitting it, if another thread injected a program irq to another vcpu, were very small. Let's drop this check and turn kvm_s390_inject_program_int() and kvm_s390_inject_prog_irq() into simple inline functions that makes use of kvm_s390_inject_vcpu(). __must_check can be dropped as they are implicitely given by kvm_s390_inject_vcpu(), to avoid ugly long function prototypes. Reviewed-by: Jens Freimann <jfrei@linux.vnet.ibm.com> Acked-by: Cornelia Huck <cornelia.huck@de.ibm.com> Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com> Signed-off-by: David Hildenbrand <dahi@linux.vnet.ibm.com> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Diffstat (limited to 'arch/s390/kvm/interrupt.c')
-rw-r--r--arch/s390/kvm/interrupt.c28
1 files changed, 0 insertions, 28 deletions
diff --git a/arch/s390/kvm/interrupt.c b/arch/s390/kvm/interrupt.c
index 10a0e8beb9e1..f603bacf6ac9 100644
--- a/arch/s390/kvm/interrupt.c
+++ b/arch/s390/kvm/interrupt.c
@@ -977,34 +977,6 @@ static int __inject_prog(struct kvm_vcpu *vcpu, struct kvm_s390_irq *irq)
977 return 0; 977 return 0;
978} 978}
979 979
980int kvm_s390_inject_program_int(struct kvm_vcpu *vcpu, u16 code)
981{
982 struct kvm_s390_local_interrupt *li = &vcpu->arch.local_int;
983 struct kvm_s390_irq irq;
984
985 spin_lock(&li->lock);
986 irq.u.pgm.code = code;
987 __inject_prog(vcpu, &irq);
988 BUG_ON(waitqueue_active(li->wq));
989 spin_unlock(&li->lock);
990 return 0;
991}
992
993int kvm_s390_inject_prog_irq(struct kvm_vcpu *vcpu,
994 struct kvm_s390_pgm_info *pgm_info)
995{
996 struct kvm_s390_local_interrupt *li = &vcpu->arch.local_int;
997 struct kvm_s390_irq irq;
998 int rc;
999
1000 spin_lock(&li->lock);
1001 irq.u.pgm = *pgm_info;
1002 rc = __inject_prog(vcpu, &irq);
1003 BUG_ON(waitqueue_active(li->wq));
1004 spin_unlock(&li->lock);
1005 return rc;
1006}
1007
1008static int __inject_pfault_init(struct kvm_vcpu *vcpu, struct kvm_s390_irq *irq) 980static int __inject_pfault_init(struct kvm_vcpu *vcpu, struct kvm_s390_irq *irq)
1009{ 981{
1010 struct kvm_s390_local_interrupt *li = &vcpu->arch.local_int; 982 struct kvm_s390_local_interrupt *li = &vcpu->arch.local_int;