|
@@ -114,11 +114,11 @@ static bool kvmppc_ipi_thread(int cpu)
|
|
|
static void kvmppc_fast_vcpu_kick_hv(struct kvm_vcpu *vcpu)
|
|
|
{
|
|
|
int cpu;
|
|
|
- wait_queue_head_t *wqp;
|
|
|
+ struct swait_queue_head *wqp;
|
|
|
|
|
|
wqp = kvm_arch_vcpu_wq(vcpu);
|
|
|
- if (waitqueue_active(wqp)) {
|
|
|
- wake_up_interruptible(wqp);
|
|
|
+ if (swait_active(wqp)) {
|
|
|
+ swake_up(wqp);
|
|
|
++vcpu->stat.halt_wakeup;
|
|
|
}
|
|
|
|
|
@@ -701,8 +701,8 @@ int kvmppc_pseries_do_hcall(struct kvm_vcpu *vcpu)
|
|
|
tvcpu->arch.prodded = 1;
|
|
|
smp_mb();
|
|
|
if (vcpu->arch.ceded) {
|
|
|
- if (waitqueue_active(&vcpu->wq)) {
|
|
|
- wake_up_interruptible(&vcpu->wq);
|
|
|
+ if (swait_active(&vcpu->wq)) {
|
|
|
+ swake_up(&vcpu->wq);
|
|
|
vcpu->stat.halt_wakeup++;
|
|
|
}
|
|
|
}
|
|
@@ -1459,7 +1459,7 @@ static struct kvmppc_vcore *kvmppc_vcore_create(struct kvm *kvm, int core)
|
|
|
INIT_LIST_HEAD(&vcore->runnable_threads);
|
|
|
spin_lock_init(&vcore->lock);
|
|
|
spin_lock_init(&vcore->stoltb_lock);
|
|
|
- init_waitqueue_head(&vcore->wq);
|
|
|
+ init_swait_queue_head(&vcore->wq);
|
|
|
vcore->preempt_tb = TB_NIL;
|
|
|
vcore->lpcr = kvm->arch.lpcr;
|
|
|
vcore->first_vcpuid = core * threads_per_subcore;
|
|
@@ -2531,10 +2531,9 @@ static void kvmppc_vcore_blocked(struct kvmppc_vcore *vc)
|
|
|
{
|
|
|
struct kvm_vcpu *vcpu;
|
|
|
int do_sleep = 1;
|
|
|
+ DECLARE_SWAITQUEUE(wait);
|
|
|
|
|
|
- DEFINE_WAIT(wait);
|
|
|
-
|
|
|
- prepare_to_wait(&vc->wq, &wait, TASK_INTERRUPTIBLE);
|
|
|
+ prepare_to_swait(&vc->wq, &wait, TASK_INTERRUPTIBLE);
|
|
|
|
|
|
/*
|
|
|
* Check one last time for pending exceptions and ceded state after
|
|
@@ -2548,7 +2547,7 @@ static void kvmppc_vcore_blocked(struct kvmppc_vcore *vc)
|
|
|
}
|
|
|
|
|
|
if (!do_sleep) {
|
|
|
- finish_wait(&vc->wq, &wait);
|
|
|
+ finish_swait(&vc->wq, &wait);
|
|
|
return;
|
|
|
}
|
|
|
|
|
@@ -2556,7 +2555,7 @@ static void kvmppc_vcore_blocked(struct kvmppc_vcore *vc)
|
|
|
trace_kvmppc_vcore_blocked(vc, 0);
|
|
|
spin_unlock(&vc->lock);
|
|
|
schedule();
|
|
|
- finish_wait(&vc->wq, &wait);
|
|
|
+ finish_swait(&vc->wq, &wait);
|
|
|
spin_lock(&vc->lock);
|
|
|
vc->vcore_state = VCORE_INACTIVE;
|
|
|
trace_kvmppc_vcore_blocked(vc, 1);
|
|
@@ -2612,7 +2611,7 @@ static int kvmppc_run_vcpu(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu)
|
|
|
kvmppc_start_thread(vcpu, vc);
|
|
|
trace_kvm_guest_enter(vcpu);
|
|
|
} else if (vc->vcore_state == VCORE_SLEEPING) {
|
|
|
- wake_up(&vc->wq);
|
|
|
+ swake_up(&vc->wq);
|
|
|
}
|
|
|
|
|
|
}
|