From patchwork Tue Jun 7 12:58:18 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Michael S. Tsirkin" X-Patchwork-Id: 9161181 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 200D860571 for ; Tue, 7 Jun 2016 13:20:20 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 10C8A25EF7 for ; Tue, 7 Jun 2016 13:20:20 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 05AB926E1A; Tue, 7 Jun 2016 13:20:20 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id A6BCC25EF7 for ; Tue, 7 Jun 2016 13:20:19 +0000 (UTC) Received: from localhost ([::1]:49678 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bAGva-0002DI-NZ for patchwork-qemu-devel@patchwork.kernel.org; Tue, 07 Jun 2016 09:20:18 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54942) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bAGaP-0007tg-4F for qemu-devel@nongnu.org; Tue, 07 Jun 2016 08:58:30 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bAGaN-0003Ga-8Y for qemu-devel@nongnu.org; Tue, 07 Jun 2016 08:58:24 -0400 Received: from mx1.redhat.com ([209.132.183.28]:37677) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bAGaN-0003GH-2D for qemu-devel@nongnu.org; Tue, 07 Jun 2016 08:58:23 -0400 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 8E5B363152; Tue, 7 Jun 2016 12:58:22 +0000 (UTC) Received: from redhat.com (ovpn-116-19.ams2.redhat.com [10.36.116.19]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with SMTP id u57CwJnk018078; Tue, 7 Jun 2016 08:58:20 -0400 Date: Tue, 7 Jun 2016 15:58:18 +0300 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Message-ID: <20160607155818-mutt-send-email-mst@redhat.com> References: <1465304171-10874-1-git-send-email-mst@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1465304171-10874-1-git-send-email-mst@redhat.com> X-Mutt-Fcc: =sent X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Tue, 07 Jun 2016 12:58:22 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v2 24/25] pc-dimm: introduce realize callback X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Xiao Guangrong , Stefan Hajnoczi , Igor Mammedov Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP From: Xiao Guangrong nvdimm needs to 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 Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Reviewed-by: Stefan Hajnoczi --- include/hw/mem/pc-dimm.h | 3 +++ hw/mem/pc-dimm.c | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/include/hw/mem/pc-dimm.h b/include/hw/mem/pc-dimm.h index 6024627..67e92d8 100644 --- a/include/hw/mem/pc-dimm.h +++ b/include/hw/mem/pc-dimm.h @@ -58,6 +58,8 @@ typedef struct PCDIMMDevice { /** * PCDIMMDeviceClass: + * @realize: called after common dimm is realized so that the dimm based + * devices get the chance to do specified operations. * @get_memory_region: returns #MemoryRegion associated with @dimm which * is directly mapped into the physical address space of guest */ @@ -66,6 +68,7 @@ typedef struct PCDIMMDeviceClass { DeviceClass parent_class; /* public */ + void (*realize)(PCDIMMDevice *dimm, Error **errp); MemoryRegion *(*get_memory_region)(PCDIMMDevice *dimm); } PCDIMMDeviceClass; diff --git a/hw/mem/pc-dimm.c b/hw/mem/pc-dimm.c index 70b9451..6de2275 100644 --- a/hw/mem/pc-dimm.c +++ b/hw/mem/pc-dimm.c @@ -400,6 +400,7 @@ static void pc_dimm_init(Object *obj) static void pc_dimm_realize(DeviceState *dev, Error **errp) { PCDIMMDevice *dimm = PC_DIMM(dev); + PCDIMMDeviceClass *ddc = PC_DIMM_GET_CLASS(dimm); if (!dimm->hostmem) { error_setg(errp, "'" PC_DIMM_MEMDEV_PROP "' property is not set"); @@ -412,6 +413,10 @@ static void pc_dimm_realize(DeviceState *dev, Error **errp) dimm->node, nb_numa_nodes ? nb_numa_nodes : 1); return; } + + if (ddc->realize) { + ddc->realize(dimm, errp); + } } static MemoryRegion *pc_dimm_get_memory_region(PCDIMMDevice *dimm)