diff options
author | Wanpeng Li <wanpengli@tencent.com> | 2019-07-18 07:39:07 -0400 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2019-07-20 03:00:45 -0400 |
commit | d984740944308a310f9d33df774e2304fc1e6959 (patch) | |
tree | 8def7ada49176186e3c3b819abad51bdb6f42f47 /arch/s390/kvm | |
parent | d73eb57b80b98ae147e4e6a7d9877c2ba175f972 (diff) |
KVM: s390: Use kvm_vcpu_wake_up in kvm_s390_vcpu_wakeup
Use kvm_vcpu_wake_up() in kvm_s390_vcpu_wakeup().
Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Radim Krčmář <rkrcmar@redhat.com>
Cc: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Wanpeng Li <wanpengli@tencent.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'arch/s390/kvm')
-rw-r--r-- | arch/s390/kvm/interrupt.c | 23 |
1 files changed, 3 insertions, 20 deletions
diff --git a/arch/s390/kvm/interrupt.c b/arch/s390/kvm/interrupt.c index 26f8bf4a22a7..b5fd6e85657c 100644 --- a/arch/s390/kvm/interrupt.c +++ b/arch/s390/kvm/interrupt.c | |||
@@ -1224,28 +1224,11 @@ no_timer: | |||
1224 | 1224 | ||
1225 | void kvm_s390_vcpu_wakeup(struct kvm_vcpu *vcpu) | 1225 | void kvm_s390_vcpu_wakeup(struct kvm_vcpu *vcpu) |
1226 | { | 1226 | { |
1227 | /* | ||
1228 | * We cannot move this into the if, as the CPU might be already | ||
1229 | * in kvm_vcpu_block without having the waitqueue set (polling) | ||
1230 | */ | ||
1231 | vcpu->valid_wakeup = true; | 1227 | vcpu->valid_wakeup = true; |
1228 | kvm_vcpu_wake_up(vcpu); | ||
1229 | |||
1232 | /* | 1230 | /* |
1233 | * This is mostly to document, that the read in swait_active could | 1231 | * The VCPU might not be sleeping but rather executing VSIE. Let's |
1234 | * be moved before other stores, leading to subtle races. | ||
1235 | * All current users do not store or use an atomic like update | ||
1236 | */ | ||
1237 | smp_mb__after_atomic(); | ||
1238 | if (swait_active(&vcpu->wq)) { | ||
1239 | /* | ||
1240 | * The vcpu gave up the cpu voluntarily, mark it as a good | ||
1241 | * yield-candidate. | ||
1242 | */ | ||
1243 | vcpu->ready = true; | ||
1244 | swake_up_one(&vcpu->wq); | ||
1245 | vcpu->stat.halt_wakeup++; | ||
1246 | } | ||
1247 | /* | ||
1248 | * The VCPU might not be sleeping but is executing the VSIE. Let's | ||
1249 | * kick it, so it leaves the SIE to process the request. | 1232 | * kick it, so it leaves the SIE to process the request. |
1250 | */ | 1233 | */ |
1251 | kvm_s390_vsie_kick(vcpu); | 1234 | kvm_s390_vsie_kick(vcpu); |