On 12/15/2011 04:25 PM, Xiao Guangrong wrote:
> On 12/15/2011 02:53 PM, Liu ping fan wrote:
>
>
>>
>>>> +struct kvm_vcpu *kvm_vcpu_get(struct kvm_vcpu *vcpu)
>>>> +{
>>>> + if (vcpu == NULL)
>>>> + return NULL;
>>>> + if (atomic_add_unless(&vcpu->refcount, 1, 0))
>>>
>>>
>>> Why do not use atomic_inc()?
>>> Also, i think a memory barrier is needed after increasing refcount.
>>>
>> Because when refcout==0, we prepare to destroy vcpu, and do not to
>> disturb it by increasing the refcount.
>
>
> Oh, get it.
>
But i think we can do it like this:
On the vcpu free path:
hold kvm->lock
delete vcpu from the kvm->vcpus
release kvm->lock
synchronize_rcu()
kvm_vcpu_put()
then, we can avoid get invalid instance and it can make the code simple?
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html