diff options
-rw-r--r-- | arch/s390/kvm/interrupt.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/s390/kvm/interrupt.c b/arch/s390/kvm/interrupt.c index 1848080c3f34..fff070bd0159 100644 --- a/arch/s390/kvm/interrupt.c +++ b/arch/s390/kvm/interrupt.c | |||
@@ -505,6 +505,7 @@ enum hrtimer_restart kvm_s390_idle_wakeup(struct hrtimer *timer) | |||
505 | struct kvm_vcpu *vcpu; | 505 | struct kvm_vcpu *vcpu; |
506 | 506 | ||
507 | vcpu = container_of(timer, struct kvm_vcpu, arch.ckc_timer); | 507 | vcpu = container_of(timer, struct kvm_vcpu, arch.ckc_timer); |
508 | vcpu->preempted = true; | ||
508 | tasklet_schedule(&vcpu->arch.tasklet); | 509 | tasklet_schedule(&vcpu->arch.tasklet); |
509 | 510 | ||
510 | return HRTIMER_NORESTART; | 511 | return HRTIMER_NORESTART; |
@@ -732,6 +733,7 @@ static int __inject_vm(struct kvm *kvm, struct kvm_s390_interrupt_info *inti) | |||
732 | atomic_set_mask(CPUSTAT_EXT_INT, li->cpuflags); | 733 | atomic_set_mask(CPUSTAT_EXT_INT, li->cpuflags); |
733 | if (waitqueue_active(li->wq)) | 734 | if (waitqueue_active(li->wq)) |
734 | wake_up_interruptible(li->wq); | 735 | wake_up_interruptible(li->wq); |
736 | kvm_get_vcpu(kvm, sigcpu)->preempted = true; | ||
735 | spin_unlock_bh(&li->lock); | 737 | spin_unlock_bh(&li->lock); |
736 | unlock_fi: | 738 | unlock_fi: |
737 | spin_unlock(&fi->lock); | 739 | spin_unlock(&fi->lock); |
@@ -877,6 +879,7 @@ int kvm_s390_inject_vcpu(struct kvm_vcpu *vcpu, | |||
877 | atomic_set_mask(CPUSTAT_EXT_INT, li->cpuflags); | 879 | atomic_set_mask(CPUSTAT_EXT_INT, li->cpuflags); |
878 | if (waitqueue_active(&vcpu->wq)) | 880 | if (waitqueue_active(&vcpu->wq)) |
879 | wake_up_interruptible(&vcpu->wq); | 881 | wake_up_interruptible(&vcpu->wq); |
882 | vcpu->preempted = true; | ||
880 | spin_unlock_bh(&li->lock); | 883 | spin_unlock_bh(&li->lock); |
881 | mutex_unlock(&vcpu->kvm->lock); | 884 | mutex_unlock(&vcpu->kvm->lock); |
882 | return 0; | 885 | return 0; |