From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:43997) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RG4Z4-0000Gu-2m for qemu-devel@nongnu.org; Tue, 18 Oct 2011 03:58:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RG4Z2-0008NA-53 for qemu-devel@nongnu.org; Tue, 18 Oct 2011 03:58:22 -0400 Received: from mx1.redhat.com ([209.132.183.28]:8628) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RG4Z1-0008In-Sz for qemu-devel@nongnu.org; Tue, 18 Oct 2011 03:58:20 -0400 Date: Tue, 18 Oct 2011 08:58:06 +0100 From: "Daniel P. Berrange" Message-ID: <20111018075806.GD13556@redhat.com> References: <4E8ECA91.8040409@cn.fujitsu.com> <4E8ED167.1000705@siemens.com> <20111008151622.GA17181@amd.home.annexia.org> <4E916035.5050906@web.de> <20111009102338.GN16799@amd.home.annexia.org> <4E92568E.2010507@cn.fujitsu.com> <4E929618.4040403@web.de> <20111010090246.GF9408@redhat.com> <4E92BC11.3030508@siemens.com> <4E9D2791.5070207@cn.fujitsu.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <4E9D2791.5070207@cn.fujitsu.com> Subject: Re: [Qemu-devel] [Question] dump memory when host pci device is used by guest Reply-To: "Daniel P. Berrange" List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Wen Congyang Cc: qemu-devel , Jan Kiszka , "Richard W.M. Jones" , Luiz Capitulino On Tue, Oct 18, 2011 at 03:15:29PM +0800, Wen Congyang wrote: > Hi, Jan Kiszka > > At 10/10/2011 05:34 PM, Jan Kiszka Write: > > On 2011-10-10 11:02, Daniel P. Berrange wrote: > >> On Mon, Oct 10, 2011 at 08:52:08AM +0200, Jan Kiszka wrote: > > > > > Run gdb with "set debug remote 1" and watch the communication, it is not > > that complex. But a dump command is probably simpler for those > > scenarios, I agree. > > I have implemented the command dump and reuse migration's code. But I meet a problem > when I test it. > > My qemu-kvm's tree is not updated about 2 months ago, because kernel.org is down, and > I forgot to pull from github. > > After I pull it from github, I find the following changes: > @@ -1523,9 +1523,7 @@ static void assigned_dev_unregister_msix_mmio(AssignedDevice *dev) > > static const VMStateDescription vmstate_assigned_device = { > .name = "pci-assign", > - .fields = (VMStateField []) { > - VMSTATE_END_OF_LIST() > - } > + .unmigratable = 1, > }; > > static void reset_assigned_device(DeviceState *dev) > > Why do you remove fields from vmstate_assigned_device? > It is useful for dump because it does not check unmigratable. If vmstate_assigned_device > does not contain .fields, qemu will crash in vmstate_save_state(). Given that '.fields' is allowed to be NULL for some devices, I'd say even for normal migration, QEMU should be checking for NULL in the vmstate_save_state() code. This would prevent QEMU crashes in the case where someone removed the .unmigratable member, but forgot to add back a .fields member. Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|