From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: [PATCH 06/15] memory: use refcnt to manage MemoryRegion Date: Sun, 12 Aug 2012 11:43:48 +0300 Message-ID: <50276CC4.6040201@redhat.com> References: <1344407156-25562-1-git-send-email-qemulist@gmail.com> <1344407156-25562-7-git-send-email-qemulist@gmail.com> <50222F54.4080108@redhat.com> <5023771F.5030007@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: kvm@vger.kernel.org, Jan Kiszka , Marcelo Tosatti , qemu-devel@nongnu.org, Blue Swirl , Anthony Liguori , Stefan Hajnoczi , Paolo Bonzini , =?ISO-8859-1?Q?Andreas_F=E4rber?= To: liu ping fan Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+gceq-qemu-devel=gmane.org@nongnu.org Sender: qemu-devel-bounces+gceq-qemu-devel=gmane.org@nongnu.org List-Id: kvm.vger.kernel.org On 08/10/2012 09:44 AM, liu ping fan wrote: >>> In the previous discussion, you have suggest add dev->ref++ in >>> core_region_add. But I think, if we can move it to higher layer -- >>> memory_region_{add,del}_subregion, so we can avoid to duplicate do >>> this in other xx_region_add. >> >> Why would other memory listeners be impacted? They all operate under >> the big qemu lock. If they start using devices outside the lock, then >> they need to take a reference. >> > Yes, if unplug path in the protection of big lock. > And just one extra question, for ram-unplug scene, how do we protect from: > updater: ram-unplug -->qemu free() --> brk() invalidate this vaddr interval > reader: vhost-thread copy data from the interval > I guess something like lock/ref used by them, but can not find such > mechanism in vhost_set_memory() to protect the scene against > vhost_worker() VHOST_SET_MEM_TABLE uses synchronize_srcu() to ensure no readers are active before returning. -- error compiling committee.c: too many arguments to function