From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43678) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZsTyb-0000RA-MX for qemu-devel@nongnu.org; Sat, 31 Oct 2015 07:05:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZsTyY-0001H0-EF for qemu-devel@nongnu.org; Sat, 31 Oct 2015 07:05:37 -0400 Received: from relay.parallels.com ([195.214.232.42]:42724) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZsTyY-0001Gt-6A for qemu-devel@nongnu.org; Sat, 31 Oct 2015 07:05:34 -0400 Message-ID: <5634A065.1050902@virtuozzo.com> Date: Sat, 31 Oct 2015 14:05:09 +0300 From: Vladimir Sementsov-Ogievskiy MIME-Version: 1.0 References: <1446184587-142784-1-git-send-email-guangrong.xiao@linux.intel.com> <1446184587-142784-20-git-send-email-guangrong.xiao@linux.intel.com> In-Reply-To: <1446184587-142784-20-git-send-email-guangrong.xiao@linux.intel.com> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v6 19/33] dimm: keep the state of the whole backend memory List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Xiao Guangrong , pbonzini@redhat.com, imammedo@redhat.com Cc: ehabkost@redhat.com, kvm@vger.kernel.org, mst@redhat.com, gleb@kernel.org, mtosatti@redhat.com, qemu-devel@nongnu.org, stefanha@redhat.com, dan.j.williams@intel.com, rth@twiddle.net On 30.10.2015 08:56, Xiao Guangrong wrote: > QEMU keeps the state of memory of dimm device during live migration, > however, it is not enough for nvdimm device as its memory does not > contain its label data, so that we should protect the whole backend > memory instead > > Signed-off-by: Xiao Guangrong > --- > hw/mem/dimm.c | 14 ++++++++++++-- > 1 file changed, 12 insertions(+), 2 deletions(-) > > diff --git a/hw/mem/dimm.c b/hw/mem/dimm.c > index 498d380..44447d1 100644 > --- a/hw/mem/dimm.c > +++ b/hw/mem/dimm.c > @@ -134,9 +134,16 @@ void dimm_memory_plug(DeviceState *dev, MemoryHotplugState *hpms, > } > > memory_region_add_subregion(&hpms->mr, addr - hpms->base, mr); > - vmstate_register_ram(mr, dev); > numa_set_mem_node_id(addr, memory_region_size(mr), dimm->node); > > + /* > + * save the state only for @mr is not enough as it does not contain > + * the label data of NVDIMM device, so that we keep the state of > + * whole hostmem instead. > + */ > + vmstate_register_ram(host_memory_backend_get_memory(dimm->hostmem, errp), > + dev); > + > out: > error_propagate(errp, local_err); > } > @@ -145,10 +152,13 @@ void dimm_memory_unplug(DeviceState *dev, MemoryHotplugState *hpms, > MemoryRegion *mr) > { > DIMMDevice *dimm = DIMM(dev); > + MemoryRegion *backend_mr; > + > + backend_mr = host_memory_backend_get_memory(dimm->hostmem, &error_abort); > > numa_unset_mem_node_id(dimm->addr, memory_region_size(mr), dimm->node); > memory_region_del_subregion(&hpms->mr, mr); > - vmstate_unregister_ram(mr, dev); > + vmstate_unregister_ram(backend_mr, dev); > } > > int qmp_dimm_device_list(Object *obj, void *opaque) should get_memory_region be used here like in previous patch? -- Best regards, Vladimir * now, @virtuozzo.com instead of @parallels.com. Sorry for this inconvenience.