Re: [RFC PATCH 1/3] kvm: keep track of which task is running a KVM vcpu

2010-12-05 Thread Avi Kivity

On 12/03/2010 04:50 PM, Rik van Riel wrote:

On 12/02/2010 08:18 PM, Chris Wright wrote:

* Rik van Riel (r...@redhat.com) wrote:

Keep track of which task is running a KVM vcpu.  This helps us
figure out later what task to wake up if we want to boost a
vcpu that got preempted.

Unfortunately there are no guarantees that the same task
always keeps the same vcpu, so we can only track the task
across a single run of the vcpu.


So shouldn't it confine to KVM_RUN?  The other vcpu_load callers aren't
always a vcpu in a useful runnable state.


Yeah, probably.  If you want I can move the setting of
vcpu-task to kvm_vcpu_ioctl.



No need, it's not like something bad will happen.

What I'd really like to see is a soft binding between a vcpu and its 
thread, so directed yield works even if we're in qemu while we were 
scheduled out.  In fact it's not an unlikely pattern:


  spin_lock(lock)
  ...
  writel(some_port_handled_by_qemu)
  ...
  spin_unlock(lock)

but that can wait.

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

--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RFC PATCH 1/3] kvm: keep track of which task is running a KVM vcpu

2010-12-05 Thread Avi Kivity

On 12/03/2010 04:16 PM, Rik van Riel wrote:

On 12/03/2010 07:17 AM, Srivatsa Vaddagiri wrote:

On Thu, Dec 02, 2010 at 02:43:24PM -0500, Rik van Riel wrote:

  mutex_lock(vcpu-mutex);
+vcpu-task = current;


Shouldn't we grab reference to current task_struct before storing a 
pointer to

it?


That should not be needed, since current cannot go away without
setting vcpu-task back to NULL in vcpu_put.



However, you do reference vcpu-task from other contexts.  So some sort 
of safe reference is needed.


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

--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RFC PATCH 1/3] kvm: keep track of which task is running a KVM vcpu

2010-12-03 Thread Srivatsa Vaddagiri
On Thu, Dec 02, 2010 at 02:43:24PM -0500, Rik van Riel wrote:
   mutex_lock(vcpu-mutex);
 + vcpu-task = current;

Shouldn't we grab reference to current task_struct before storing a pointer to 
it?

- vatsa
--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RFC PATCH 1/3] kvm: keep track of which task is running a KVM vcpu

2010-12-03 Thread Rik van Riel

On 12/03/2010 07:17 AM, Srivatsa Vaddagiri wrote:

On Thu, Dec 02, 2010 at 02:43:24PM -0500, Rik van Riel wrote:

mutex_lock(vcpu-mutex);
+   vcpu-task = current;


Shouldn't we grab reference to current task_struct before storing a pointer to
it?


That should not be needed, since current cannot go away without
setting vcpu-task back to NULL in vcpu_put.

--
All rights reversed
--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RFC PATCH 1/3] kvm: keep track of which task is running a KVM vcpu

2010-12-03 Thread Rik van Riel

On 12/02/2010 08:18 PM, Chris Wright wrote:

* Rik van Riel (r...@redhat.com) wrote:

Keep track of which task is running a KVM vcpu.  This helps us
figure out later what task to wake up if we want to boost a
vcpu that got preempted.

Unfortunately there are no guarantees that the same task
always keeps the same vcpu, so we can only track the task
across a single run of the vcpu.


So shouldn't it confine to KVM_RUN?  The other vcpu_load callers aren't
always a vcpu in a useful runnable state.


Yeah, probably.  If you want I can move the setting of
vcpu-task to kvm_vcpu_ioctl.

--
All rights reversed
--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RFC PATCH 1/3] kvm: keep track of which task is running a KVM vcpu

2010-12-03 Thread Chris Wright
* Rik van Riel (r...@redhat.com) wrote:
 On 12/02/2010 08:18 PM, Chris Wright wrote:
 * Rik van Riel (r...@redhat.com) wrote:
 Keep track of which task is running a KVM vcpu.  This helps us
 figure out later what task to wake up if we want to boost a
 vcpu that got preempted.
 
 Unfortunately there are no guarantees that the same task
 always keeps the same vcpu, so we can only track the task
 across a single run of the vcpu.
 
 So shouldn't it confine to KVM_RUN?  The other vcpu_load callers aren't
 always a vcpu in a useful runnable state.
 
 Yeah, probably.  If you want I can move the setting of
 vcpu-task to kvm_vcpu_ioctl.

Or maybe setting in sched_out and unsetting in sched_in.
--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RFC PATCH 1/3] kvm: keep track of which task is running a KVM vcpu

2010-12-02 Thread Chris Wright
* Rik van Riel (r...@redhat.com) wrote:
 Keep track of which task is running a KVM vcpu.  This helps us
 figure out later what task to wake up if we want to boost a
 vcpu that got preempted.
 
 Unfortunately there are no guarantees that the same task
 always keeps the same vcpu, so we can only track the task
 across a single run of the vcpu.

So shouldn't it confine to KVM_RUN?  The other vcpu_load callers aren't
always a vcpu in a useful runnable state.
--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html