From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58891) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a1Dm0-00017y-UF for qemu-devel@nongnu.org; Tue, 24 Nov 2015 08:36:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1a1Dlx-0006Zw-3D for qemu-devel@nongnu.org; Tue, 24 Nov 2015 08:36:44 -0500 Received: from mx1.redhat.com ([209.132.183.28]:42986) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a1Dlw-0006Zs-Tt for qemu-devel@nongnu.org; Tue, 24 Nov 2015 08:36:41 -0500 Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (Postfix) with ESMTPS id 797D6689 for ; Tue, 24 Nov 2015 13:36:40 +0000 (UTC) References: <1448273262-13845-1-git-send-email-peterx@redhat.com> <56533D45.1060108@redhat.com> <20151123175759.GG3606@hawk.localdomain> <5653C422.3040307@redhat.com> <20151124031027.GC26733@ad.usersys.redhat.com> <565452A7.6050406@redhat.com> From: Laszlo Ersek Message-ID: <565467E5.5050703@redhat.com> Date: Tue, 24 Nov 2015 14:36:37 +0100 MIME-Version: 1.0 In-Reply-To: <565452A7.6050406@redhat.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH REPOST 0/2] Add basic "detach" support for dump-guest-memory List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paolo Bonzini , Fam Zheng , Peter Xu Cc: Andrew Jones , lcapitulino@redhat.com, armbru@redhat.com, qemu-devel@nongnu.org On 11/24/15 13:05, Paolo Bonzini wrote: > > > On 24/11/2015 04:10, Fam Zheng wrote: >> What about all the hot-plug commands that changes the memory layout? > > If the guest is stopped, they shouldn't. device_add does not enable new > BARs for example, the guest does that after it receives the ACPI event > for PCI hotplug (or similarly an interrupt for SHPC or PCIe hotplug). > > Actually I like the idea of background dump, and a separate thread is an > obvious way to do it since QEMU's memory API is mostly thread safe. I'm not trying to reject this patch just because "I don't like it". I perceive it as extremely risky, and I don't know enough to review it with *full coverage*. If you're willing to review it, and Peter can assume the responsibility of supporting it down the road, feel free to go ahead. > However, qmp_dump_guest_memory should only proceed if the VM is stopped > and is not in incoming migration (RUN_STATE_INMIGRATE); as you prefer. > If the VM is stopped, there is no whack-a-mole; the memory should not be > touched after vm_stop returns. The only special case is incoming migration. > > Regarding thread-safety, the thread needs to take > qemu_mutex_ram_list_lock or rcu_read_lock in order to get the list of > RAM regions. Even better, build a list of MemoryRegions in advance > (protecting them with memory_region_ref) in the iothread, and consult it > during the dump. At the end you can use memory_region_unref to release > them. > > Paolo >