Re: question about arch/s390/kvm/interrupt.c

Carsten Otte
2009-07-13T07:55:19Z

> (copying some s390 people)
>
> On 07/10/2009 02:47 PM, Julia Lawall wrote:
> > 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?
Good catch! It's broken, I'll send a fix later today.

so long,
Carsten