KVM: PPC: align vcpu_kick with x86
Our vcpu kick implementation differs a bit from x86 which resulted in us not disabling preemption during the kick. Get it a bit closer to what x86 does. Signed-off-by: Alexander Graf <agraf@suse.de> Signed-off-by: Avi Kivity <avi@redhat.com>
This commit is contained in:
parent
468a12c2b5
commit
ae21216bec
|
@ -558,12 +558,17 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *run)
|
||||||
|
|
||||||
void kvm_vcpu_kick(struct kvm_vcpu *vcpu)
|
void kvm_vcpu_kick(struct kvm_vcpu *vcpu)
|
||||||
{
|
{
|
||||||
|
int me;
|
||||||
|
int cpu = vcpu->cpu;
|
||||||
|
|
||||||
|
me = get_cpu();
|
||||||
if (waitqueue_active(&vcpu->wq)) {
|
if (waitqueue_active(&vcpu->wq)) {
|
||||||
wake_up_interruptible(vcpu->arch.wqp);
|
wake_up_interruptible(vcpu->arch.wqp);
|
||||||
vcpu->stat.halt_wakeup++;
|
vcpu->stat.halt_wakeup++;
|
||||||
} else if (vcpu->cpu != -1) {
|
} else if (cpu != me && cpu != -1) {
|
||||||
smp_send_reschedule(vcpu->cpu);
|
smp_send_reschedule(vcpu->cpu);
|
||||||
}
|
}
|
||||||
|
put_cpu();
|
||||||
}
|
}
|
||||||
|
|
||||||
int kvm_vcpu_ioctl_interrupt(struct kvm_vcpu *vcpu, struct kvm_interrupt *irq)
|
int kvm_vcpu_ioctl_interrupt(struct kvm_vcpu *vcpu, struct kvm_interrupt *irq)
|
||||||
|
|
Loading…
Reference in a new issue