 */
bool kvm_vcpu_block(struct kvm_vcpu *vcpu)
{
	struct rcuwait *wait = kvm_arch_vcpu_get_wait(vcpu);
	bool waited = false;

	vcpu->stat.generic.blocking = 1;

	kvm_arch_vcpu_blocking(vcpu);

	prepare_to_rcuwait(wait);
	for (;;) {
		set_current_state(TASK_INTERRUPTIBLE);

		if (kvm_vcpu_check_block(vcpu) < 0)
			break;

		waited = true;
		schedule();
	}
	finish_rcuwait(wait);

	kvm_arch_vcpu_unblocking(vcpu);

	vcpu->stat.generic.blocking = 0;

	return waited;
 */
bool kvm_vcpu_block(struct kvm_vcpu *vcpu)
{
	struct rcuwait *wait = kvm_arch_vcpu_get_wait(vcpu);
	bool waited = false;

	vcpu->stat.generic.blocking = 1;

	kvm_arch_vcpu_blocking(vcpu);

	prepare_to_rcuwait(wait);
	for (;;) {
		set_current_state(TASK_INTERRUPTIBLE);

		if (kvm_vcpu_check_block(vcpu) < 0)
			break;

		waited = true;
		schedule();
	}
	finish_rcuwait(wait);

	kvm_arch_vcpu_unblocking(vcpu);

	vcpu->stat.generic.blocking = 0;

	return waited;