From mboxrd@z Thu Jan 1 00:00:00 1970 From: Xiao Guangrong Subject: Re: [PATCH v4] kvm: make vcpu life cycle separated from kvm instance Date: Thu, 15 Dec 2011 16:25:51 +0800 Message-ID: <4EE9AF0F.9040206@linux.vnet.ibm.com> References: <1323923328-917-1-git-send-email-kernelfans@gmail.com> <4EE9869F.4070702@linux.vnet.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, avi@redhat.com, aliguori@us.ibm.com, gleb@redhat.com, mtosatti@redhat.com, jan.kiszka@web.de To: Liu ping fan Return-path: In-Reply-To: Sender: linux-kernel-owner@vger.kernel.org List-Id: kvm.vger.kernel.org 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. > And sorry but I can not figure out the scene why memory barrier needed > here. Seems no risks on SMP. > If atomic_add_unless is necessary, memory barrier is not needed here.