diff options
author | David Hildenbrand <dahi@linux.vnet.ibm.com> | 2015-09-23 03:45:50 -0400 |
---|---|---|
committer | Christian Borntraeger <borntraeger@de.ibm.com> | 2015-11-30 06:47:09 -0500 |
commit | 2c1bb2be986c56848ce92ba41ba32fc62ab3165f (patch) | |
tree | d993b44cd371b29a40f9b521fbe9cdafc225e1d7 /arch/s390/kvm/interrupt.c | |
parent | fe0edcb7311e80a349ad5f2b15f2d91a5606ed7f (diff) |
KVM: s390: fast path for sca_ext_call_pending
If CPUSTAT_ECALL_PEND isn't set, we can't have an external call pending,
so we can directly avoid taking the lock.
Acked-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.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/s390/kvm/interrupt.c b/arch/s390/kvm/interrupt.c index 831c9ac728ec..62ec925aa196 100644 --- a/arch/s390/kvm/interrupt.c +++ b/arch/s390/kvm/interrupt.c | |||
@@ -39,6 +39,9 @@ static int sca_ext_call_pending(struct kvm_vcpu *vcpu, int *src_id) | |||
39 | { | 39 | { |
40 | int c, scn; | 40 | int c, scn; |
41 | 41 | ||
42 | if (!(atomic_read(&vcpu->arch.sie_block->cpuflags) & CPUSTAT_ECALL_PEND)) | ||
43 | return 0; | ||
44 | |||
42 | read_lock(&vcpu->kvm->arch.sca_lock); | 45 | read_lock(&vcpu->kvm->arch.sca_lock); |
43 | if (vcpu->kvm->arch.use_esca) { | 46 | if (vcpu->kvm->arch.use_esca) { |
44 | struct esca_block *sca = vcpu->kvm->arch.sca; | 47 | struct esca_block *sca = vcpu->kvm->arch.sca; |
@@ -60,8 +63,7 @@ static int sca_ext_call_pending(struct kvm_vcpu *vcpu, int *src_id) | |||
60 | if (src_id) | 63 | if (src_id) |
61 | *src_id = scn; | 64 | *src_id = scn; |
62 | 65 | ||
63 | return c && atomic_read(&vcpu->arch.sie_block->cpuflags) & | 66 | return c; |
64 | CPUSTAT_ECALL_PEND; | ||
65 | } | 67 | } |
66 | 68 | ||
67 | static int sca_inject_ext_call(struct kvm_vcpu *vcpu, int src_id) | 69 | static int sca_inject_ext_call(struct kvm_vcpu *vcpu, int src_id) |