question about arch/s390/kvm/interrupt.c

Julia Lawall
2009-07-10T11:47:29Z

In a recent version of linux-next, the function kvm_s390_handle_wait
contains the following code:

add_wait_queue(&vcpu->arch.local_int.wq, &wait);
while (list_empty(&vcpu->arch.local_int.list) &&
list_empty(&vcpu->arch.local_int.float_int->list) &&
(!vcpu->arch.local_int.timer_due) &&
!signal_pending(current)) {
set_current_state(TASK_INTERRUPTIBLE);
spin_unlock_bh(&vcpu->arch.local_int.lock);
spin_unlock(&vcpu->arch.local_int.float_int->lock);
vcpu_put(vcpu);
schedule();
vcpu_load(vcpu);
spin_lock(&vcpu->arch.local_int.float_int->lock);
spin_lock_bh(&vcpu->arch.local_int.lock);
}
__unset_cpu_idle(vcpu);
__set_current_state(TASK_RUNNING);
remove_wait_queue(&vcpu->wq, &wait);

It seems a bit odd that the first argument to add_wait queue is
&vcpu->arch.local_int.wq but the first argument to remove_wait_queue is
&vcpu->wq. I don't see any obvious evidence that they are the same thing,
but perhaps I am missing something. Should either call be changed?

julia