KVM: s390: fix wait_queue handling

There are two waitqueues in kvm for wait handling:
vcpu->wq for virt/kvm/kvm_main.c and
vpcu->arch.local_int.wq for the s390 specific wait code.

the wait handling in kvm_s390_handle_wait was broken by using different
wait_queues for add_wait queue and remove_wait_queue.

There are two options to fix the problem:
o move all the s390 specific code to vcpu->wq and remove
vcpu->arch.local_int.wq
o move all the s390 specific code to vcpu->arch.local_int.wq

This patch chooses the 2nd variant for two reasons:
o s390 does not use kvm_vcpu_block but implements its own enabled wait
handling.
Having a separate wait_queue make it clear, that our wait mechanism is
different
o the patch is much smaller

Report-by: Julia Lawall <julia@diku.dk>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: Avi Kivity <avi@redhat.com>

authored by Christian Borntraeger and committed by Avi Kivity d3bc2f91 263799a3

+1 -1
+1 -1
arch/s390/kvm/interrupt.c
··· 386 } 387 __unset_cpu_idle(vcpu); 388 __set_current_state(TASK_RUNNING); 389 - remove_wait_queue(&vcpu->wq, &wait); 390 spin_unlock_bh(&vcpu->arch.local_int.lock); 391 spin_unlock(&vcpu->arch.local_int.float_int->lock); 392 hrtimer_try_to_cancel(&vcpu->arch.ckc_timer);
··· 386 } 387 __unset_cpu_idle(vcpu); 388 __set_current_state(TASK_RUNNING); 389 + remove_wait_queue(&vcpu->arch.local_int.wq, &wait); 390 spin_unlock_bh(&vcpu->arch.local_int.lock); 391 spin_unlock(&vcpu->arch.local_int.float_int->lock); 392 hrtimer_try_to_cancel(&vcpu->arch.ckc_timer);