From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46466) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZsUF4-0002MH-2m for qemu-devel@nongnu.org; Sat, 31 Oct 2015 07:22:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZsUF0-0004WW-WA for qemu-devel@nongnu.org; Sat, 31 Oct 2015 07:22:38 -0400 Received: from relay.parallels.com ([195.214.232.42]:42961) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZsUF0-0004WL-Om for qemu-devel@nongnu.org; Sat, 31 Oct 2015 07:22:34 -0400 Message-ID: <5634A45F.8040905@virtuozzo.com> Date: Sat, 31 Oct 2015 14:22:07 +0300 From: Vladimir Sementsov-Ogievskiy MIME-Version: 1.0 References: <1446184587-142784-1-git-send-email-guangrong.xiao@linux.intel.com> <1446184587-142784-21-git-send-email-guangrong.xiao@linux.intel.com> In-Reply-To: <1446184587-142784-21-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 20/33] dimm: introduce realize callback 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: > nvdimm need check if the backend memory is large enough to contain label > data and init its memory region when the device is realized, so introduce > realize callback which is called after common dimm has been realize > > Signed-off-by: Xiao Guangrong > --- > hw/mem/dimm.c | 5 +++++ > include/hw/mem/dimm.h | 1 + > 2 files changed, 6 insertions(+) > > diff --git a/hw/mem/dimm.c b/hw/mem/dimm.c > index 44447d1..0ae23ce 100644 > --- a/hw/mem/dimm.c > +++ b/hw/mem/dimm.c > @@ -426,6 +426,7 @@ static void dimm_init(Object *obj) > static void dimm_realize(DeviceState *dev, Error **errp) > { > DIMMDevice *dimm = DIMM(dev); > + DIMMDeviceClass *ddc = DIMM_GET_CLASS(dimm); > > if (!dimm->hostmem) { > error_setg(errp, "'" DIMM_MEMDEV_PROP "' property is not set"); > @@ -438,6 +439,10 @@ static void dimm_realize(DeviceState *dev, Error **errp) > dimm->node, nb_numa_nodes ? nb_numa_nodes : 1); > return; > } > + > + if (ddc->realize) { > + ddc->realize(dimm, errp); > + } > } > > static void dimm_class_init(ObjectClass *oc, void *data) > diff --git a/include/hw/mem/dimm.h b/include/hw/mem/dimm.h > index 50f768a..72ec24c 100644 > --- a/include/hw/mem/dimm.h > +++ b/include/hw/mem/dimm.h > @@ -65,6 +65,7 @@ typedef struct DIMMDeviceClass { > DeviceClass parent_class; > > /* public */ > + void (*realize)(DIMMDevice *dimm, Error **errp); > MemoryRegion *(*get_memory_region)(DIMMDevice *dimm); > } DIMMDeviceClass; > Reviewed-by: Vladimir Sementsov-Ogievskiy -- Best regards, Vladimir * now, @virtuozzo.com instead of @parallels.com. Sorry for this inconvenience.