From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48078) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WT33a-0005ls-Od for qemu-devel@nongnu.org; Thu, 27 Mar 2014 01:40:55 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WT33V-00041z-MA for qemu-devel@nongnu.org; Thu, 27 Mar 2014 01:40:50 -0400 Received: from mail-pd0-f181.google.com ([209.85.192.181]:38324) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WT33V-00041X-FZ for qemu-devel@nongnu.org; Thu, 27 Mar 2014 01:40:45 -0400 Received: by mail-pd0-f181.google.com with SMTP id p10so2844567pdj.26 for ; Wed, 26 Mar 2014 22:40:44 -0700 (PDT) Message-ID: <5333B9D5.5040106@ozlabs.ru> Date: Thu, 27 Mar 2014 16:40:37 +1100 From: Alexey Kardashevskiy MIME-Version: 1.0 References: <1394603550-11556-1-git-send-email-aik@ozlabs.ru> <1394603550-11556-2-git-send-email-aik@ozlabs.ru> <532AC0D9.1050304@redhat.com> In-Reply-To: <532AC0D9.1050304@redhat.com> Content-Type: text/plain; charset=KOI8-R Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v5 01/11] memory: Sanity check that no listeners remain on a destroyed AddressSpace List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paolo Bonzini , Alex Williamson Cc: David Gibson , qemu-ppc@nongnu.org, Alexander Graf , qemu-devel@nongnu.org On 03/20/2014 09:20 PM, Paolo Bonzini wrote: > Il 12/03/2014 06:52, Alexey Kardashevskiy ha scritto: >> From: David Gibson >> >> At the moment, most AddressSpace objects last as long as the guest system >> in practice, but that could well change in future. In addition, for VFIO >> we will be introducing some private per-AdressSpace information, which must >> be disposed of before the AddressSpace itself is destroyed. >> >> To reduce the chances of subtle bugs in this area, this patch adds >> asssertions to ensure that when an AddressSpace is destroyed, there are no >> remaining MemoryListeners using that AS as a filter. >> >> Signed-off-by: David Gibson >> Signed-off-by: Alexey Kardashevskiy >> --- >> memory.c | 7 +++++++ >> 1 file changed, 7 insertions(+) >> >> diff --git a/memory.c b/memory.c >> index 3f1df23..678661e 100644 >> --- a/memory.c >> +++ b/memory.c >> @@ -1722,12 +1722,19 @@ void address_space_init(AddressSpace *as, >> MemoryRegion *root, const char *name) >> >> void address_space_destroy(AddressSpace *as) >> { >> + MemoryListener *listener; >> + >> /* Flush out anything from MemoryListeners listening in on this */ >> memory_region_transaction_begin(); >> as->root = NULL; >> memory_region_transaction_commit(); >> QTAILQ_REMOVE(&address_spaces, as, address_spaces_link); >> address_space_destroy_dispatch(as); >> + >> + QTAILQ_FOREACH(listener, &memory_listeners, link) { >> + assert(listener->address_space_filter != as); >> + } >> + >> flatview_unref(as->current_map); >> g_free(as->name); >> g_free(as->ioeventfds); >> > > Reviewed-by: Paolo Bonzini What happens next to this patch and the next one ("int128: add int128_exts64()")? I mean who you expect to pull them? Alex Graf? :) Thanks. > > An alternative is to add a count of listeners to the address space and > assert that it is 0. > > Paolo -- Alexey