From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=33779 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OOrol-0005XO-Ge for qemu-devel@nongnu.org; Wed, 16 Jun 2010 08:34:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OOrok-0000EU-DO for qemu-devel@nongnu.org; Wed, 16 Jun 2010 08:34:07 -0400 Received: from mail-gy0-f173.google.com ([209.85.160.173]:65046) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OOrok-0000EJ-7p for qemu-devel@nongnu.org; Wed, 16 Jun 2010 08:34:06 -0400 Received: by gyd5 with SMTP id 5so4082157gyd.4 for ; Wed, 16 Jun 2010 05:34:05 -0700 (PDT) Message-ID: <4C18C4B8.6060305@codemonkey.ws> Date: Wed, 16 Jun 2010 07:34:00 -0500 From: Anthony Liguori MIME-Version: 1.0 Subject: Re: [Qemu-devel] Re: [PATCH RFC] Mark a device as non-migratable References: <4C16558A.5010005@codemonkey.ws> <1276618603-24184-1-git-send-email-cam@cs.ualberta.ca> <4C17AB1C.7010701@codemonkey.ws> <4C17FFAE.5010000@codemonkey.ws> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Cam Macdonell Cc: qemu-devel@nongnu.org On 06/16/2010 12:05 AM, Cam Macdonell wrote: > On Tue, Jun 15, 2010 at 4:33 PM, Anthony Liguori wrote: > >> On 06/15/2010 05:26 PM, Cam Macdonell wrote: >> >>> On Tue, Jun 15, 2010 at 10:32 AM, Anthony Liguori >>> wrote: >>> >>> >>>> On 06/15/2010 11:16 AM, Cam Macdonell wrote: >>>> >>>> >>>>> How does this look for marking the device as non-migratable? It adds a >>>>> field >>>>> 'no_migrate' to the SaveStateEntry and tests for it in vmstate_save. >>>>> This >>>>> would >>>>> replace anything that touches memory. >>>>> >>>>> Cam >>>>> >>>>> --- >>>>> hw/hw.h | 1 + >>>>> savevm.c | 32 +++++++++++++++++++++++++++++--- >>>>> 2 files changed, 30 insertions(+), 3 deletions(-) >>>>> >>>>> diff --git a/hw/hw.h b/hw/hw.h >>>>> index d78d814..7c93f08 100644 >>>>> --- a/hw/hw.h >>>>> +++ b/hw/hw.h >>>>> @@ -263,6 +263,7 @@ int register_savevm_live(const char *idstr, >>>>> void *opaque); >>>>> >>>>> void unregister_savevm(const char *idstr, void *opaque); >>>>> +void mark_no_migrate(const char *idstr, void *opaque); >>>>> >>>>> >>>>> >>>> I'm not thrilled with the name but the functionality is spot on. I lack >>>> the >>>> creativity to offer a better name suggestion :-) >>>> >>>> Regards, >>>> >>>> Anthony Liguori >>>> >>>> >>> Hmmm, in working on this it seems that the memory (from >>> qemu_ram_map()) is still attached even when the device is removed >>> (which causes migration to fail because there is an unexpected >>> memory). >>> >>> Is something like cpu_unregister_physical_memory()/qemu_ram_free() needed? >>> >>> >> Yes. You need to unregister any memory that you have registered upon device >> removal. >> > Is there an established way to achieve this? I can't seem find > another device that unregisters memory registered with > cpu_register_physical_memory(). Is something like > cpu_unregister_physical_memory() needed? > cpu_register_physical_memory(IO_MEM_UNASSIGNED). If you look at pci.c, you'll see that it automatically unregisters any mapped io regions on remove. Regards, Anthony Liguori > Thanks, > Cam > > >> Regards, >> >> Anthony Liguori >> >> >>> Cam >>> >>> >>> >> >>