All of lore.kernel.org
 help / color / mirror / Atom feed
From: Avi Kivity <avi@redhat.com>
To: Marcelo Tosatti <mtosatti@redhat.com>
Cc: kvm@vger.kernel.org
Subject: Re: [patch 2/5] KVM: reintroduce guest mode bit and unify remote request code
Date: Thu, 27 Aug 2009 11:25:17 +0300	[thread overview]
Message-ID: <4A9642ED.9090104@redhat.com> (raw)
In-Reply-To: <20090827012955.208915957@localhost.localdomain>

On 08/27/2009 04:20 AM, Marcelo Tosatti wrote:

> +}
> +
> +void kvm_vcpu_ipi(struct kvm_vcpu *vcpu)
> +{
> +	int me;
> +	int cpu = vcpu->cpu;
>
>   	me = get_cpu();
> -	if (cpu != me&&  (unsigned)cpu<  nr_cpu_ids&&  cpu_online(cpu))
> -		if (!test_and_set_bit(KVM_REQ_KICK,&vcpu->requests))
> -			smp_send_reschedule(cpu);
> +	if (cpu != me&&  (unsigned)cpu<  nr_cpu_ids&&  cpu_online(cpu)) {
> +		if (test_bit(KVM_VCPU_GUEST_MODE,&vcpu->vcpu_state)) {
> +			if (!test_and_set_bit(KVM_VCPU_KICKED,
> +					&vcpu->vcpu_state))
> +				smp_send_reschedule(cpu);
> +		}
> +	}
>   	put_cpu();
>   }
>
> @@ -168,6 +176,30 @@ static bool make_all_cpus_request(struct
>   	return called;
>   }
>
> +static int kvm_req_wait(void *unused)
> +{
> +	cpu_relax();
> +	return 0;
> +}
> +
> +static void kvm_vcpu_request(struct kvm_vcpu *vcpu, unsigned int req)
> +{
> +	set_bit(req,&vcpu->requests);
> +	barrier();
> +	kvm_vcpu_ipi(vcpu);
> +	wait_on_bit(&vcpu->vcpu_state, KVM_VCPU_GUEST_MODE, kvm_req_wait,
> +		    TASK_UNINTERRUPTIBLE);
> +}
> +
> +static void kvm_vcpus_request(struct kvm *kvm, unsigned int req)
> +{
> +	int i;
> +	struct kvm_vcpu *vcpu;
> +
> +	kvm_for_each_vcpu(i, vcpu, kvm)
> +		kvm_vcpu_request(vcpu, req);
> +}
>    

Gleb notes there are two problems here:  instead of using a multicast 
IPI, you're sending multiple unicast IPIs.  Second, you're serializing 
the waiting.  It would be better to batch-send the IPIs, then batch-wait 
for results.

-- 
error compiling committee.c: too many arguments to function


  parent reply	other threads:[~2009-08-27  8:25 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-08-27  1:20 [patch 0/5] unify remote request and kvm_vcpu_kick IPI mechanism Marcelo Tosatti
2009-08-27  1:20 ` [patch 1/5] KVM: move kvm_vcpu_kick to virt/kvm/kvm_main.c Marcelo Tosatti
2009-08-27  1:20 ` [patch 2/5] KVM: reintroduce guest mode bit and unify remote request code Marcelo Tosatti
2009-08-27  8:15   ` Avi Kivity
2009-08-27 12:45     ` Marcelo Tosatti
2009-08-27 13:24       ` Avi Kivity
2009-08-27 14:07         ` Marcelo Tosatti
2009-08-28  7:06           ` Avi Kivity
2009-08-28  7:22             ` Avi Kivity
2009-08-27  8:25   ` Avi Kivity [this message]
2009-08-27 12:58     ` Marcelo Tosatti
2009-08-27  1:20 ` [patch 3/5] KVM: switch REQ_TLB_FLUSH/REQ_MMU_RELOAD to kvm_vcpus_request Marcelo Tosatti
2009-08-27  1:20 ` [patch 4/5] KVM: remove make_all_cpus_request Marcelo Tosatti
2009-08-27  1:20 ` [patch 5/5] KVM: x86: drop duplicat kvm_flush_remote_tlbs Marcelo Tosatti
2009-08-27 15:54 ` [RFC] KVM: x86: conditionally acquire/release slots_lock on entry/exit Marcelo Tosatti
2009-08-27 16:27   ` Avi Kivity
2009-08-27 22:59     ` Marcelo Tosatti
2009-08-28  6:50       ` Avi Kivity
2009-09-10 22:30         ` Marcelo Tosatti
2009-09-13 15:42           ` Avi Kivity
2009-09-13 16:26             ` Paul E. McKenney
2009-09-13 22:49               ` Marcelo Tosatti
2009-09-14  5:03                 ` Avi Kivity
2009-09-14  7:17                   ` Avi Kivity

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4A9642ED.9090104@redhat.com \
    --to=avi@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=mtosatti@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.