From nobody Wed Nov 5 17:40:55 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 149673836067288.17420138794512; Tue, 6 Jun 2017 01:39:20 -0700 (PDT) Received: from localhost ([::1]:36850 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIA1F-0000dP-Vz for importer@patchew.org; Tue, 06 Jun 2017 04:39:18 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55010) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dI9ul-0003Oz-8r for qemu-devel@nongnu.org; Tue, 06 Jun 2017 04:32:41 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dI9uj-00022d-2G for qemu-devel@nongnu.org; Tue, 06 Jun 2017 04:32:34 -0400 Received: from ozlabs.org ([2401:3900:2:1::2]:45733) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dI9ui-00021k-Bz; Tue, 06 Jun 2017 04:32:33 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3whlL26tdcz9s8N; Tue, 6 Jun 2017 18:32:26 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1496737946; bh=kjfUrkWus410WhqJCLcAMqH60PphG9dev/gvnAwzB1E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=gb0BOkmw9FT/Zow7ELjEr3LMZLujKl1BaTW0NirWWTFMBdh1zZbXZUgnV78v6briT wrqzQtKU0/tXzmZOn+O/Xhc05LTUuXW6v6zSpjf75Rg5HwNC2n4aIDO2KHineYfGA1 kGnFJpCblBSQiTbu7Ycl5mTgRVVa9yhTVoH1ryI4= From: David Gibson To: mdroth@linux.vnet.ibm.com Date: Tue, 6 Jun 2017 18:32:21 +1000 Message-Id: <20170606083221.9299-8-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170606083221.9299-1-david@gibson.dropbear.id.au> References: <20170606083221.9299-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2401:3900:2:1::2 Subject: [Qemu-devel] [PATCH 7/7] spapr: Change DRC attach & detach methods to functions 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: lvivier@redhat.com, sursingh@redhat.com, groug@kaod.org, qemu-devel@nongnu.org, qemu-ppc@nongnu.org, bharata@linux.vnet.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" DRC objects have attach & detach methods, but there's only one implementation. Although there are some differences in its behaviour for different DRC types, the overall structure is the same, so while we might want different method implementations for some parts, we're unlikely to want them for the top-level functions. So, replace them with direct function calls. Signed-off-by: David Gibson Reviewed-by: Michael Roth --- hw/ppc/spapr.c | 19 ++++++------------- hw/ppc/spapr_drc.c | 18 ++++++------------ hw/ppc/spapr_pci.c | 9 +++------ include/hw/ppc/spapr_drc.h | 7 ++++--- 4 files changed, 19 insertions(+), 34 deletions(-) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index e8cecaf..37466df 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -2533,7 +2533,6 @@ static void spapr_add_lmbs(DeviceState *dev, uint64_t= addr_start, uint64_t size, Error **errp) { sPAPRDRConnector *drc; - sPAPRDRConnectorClass *drck; uint32_t nr_lmbs =3D size/SPAPR_MEMORY_BLOCK_SIZE; int i, fdt_offset, fdt_size; void *fdt; @@ -2548,10 +2547,10 @@ static void spapr_add_lmbs(DeviceState *dev, uint64= _t addr_start, uint64_t size, fdt_offset =3D spapr_populate_memory_node(fdt, node, addr, SPAPR_MEMORY_BLOCK_SIZE); =20 - drck =3D SPAPR_DR_CONNECTOR_GET_CLASS(drc); - drck->attach(drc, dev, fdt, fdt_offset, !dev->hotplugged, errp); + spapr_drc_attach(drc, dev, fdt, fdt_offset, !dev->hotplugged, errp= ); addr +=3D SPAPR_MEMORY_BLOCK_SIZE; if (!dev->hotplugged) { + sPAPRDRConnectorClass *drck =3D SPAPR_DR_CONNECTOR_GET_CLASS(d= rc); /* guests expect coldplugged LMBs to be pre-allocated */ drck->set_allocation_state(drc, SPAPR_DR_ALLOCATION_STATE_USAB= LE); drck->set_isolation_state(drc, SPAPR_DR_ISOLATION_STATE_UNISOL= ATED); @@ -2564,7 +2563,6 @@ static void spapr_add_lmbs(DeviceState *dev, uint64_t= addr_start, uint64_t size, if (dedicated_hp_event_source) { drc =3D spapr_drc_by_id(TYPE_SPAPR_DRC_LMB, addr_start / SPAPR_MEMORY_BLOCK_SIZE); - drck =3D SPAPR_DR_CONNECTOR_GET_CLASS(drc); spapr_hotplug_req_add_by_count_indexed(SPAPR_DR_CONNECTOR_TYPE= _LMB, nr_lmbs, spapr_drc_index(drc)); @@ -2749,7 +2747,6 @@ static void spapr_memory_unplug_request(HotplugHandle= r *hotplug_dev, uint64_t addr_start, addr; int i; sPAPRDRConnector *drc; - sPAPRDRConnectorClass *drck; sPAPRDIMMState *ds; =20 addr_start =3D object_property_get_int(OBJECT(dimm), PC_DIMM_ADDR_PROP, @@ -2769,14 +2766,12 @@ static void spapr_memory_unplug_request(HotplugHand= ler *hotplug_dev, addr / SPAPR_MEMORY_BLOCK_SIZE); g_assert(drc); =20 - drck =3D SPAPR_DR_CONNECTOR_GET_CLASS(drc); - drck->detach(drc, dev, errp); + spapr_drc_detach(drc, dev, errp); addr +=3D SPAPR_MEMORY_BLOCK_SIZE; } =20 drc =3D spapr_drc_by_id(TYPE_SPAPR_DRC_LMB, addr_start / SPAPR_MEMORY_BLOCK_SIZE); - drck =3D SPAPR_DR_CONNECTOR_GET_CLASS(drc); spapr_hotplug_req_remove_by_count_indexed(SPAPR_DR_CONNECTOR_TYPE_LMB, nr_lmbs, spapr_drc_index(drc= )); out: @@ -2831,7 +2826,6 @@ void spapr_core_unplug_request(HotplugHandler *hotplu= g_dev, DeviceState *dev, { int index; sPAPRDRConnector *drc; - sPAPRDRConnectorClass *drck; Error *local_err =3D NULL; CPUCore *cc =3D CPU_CORE(dev); int smt =3D kvmppc_smt_threads(); @@ -2849,8 +2843,7 @@ void spapr_core_unplug_request(HotplugHandler *hotplu= g_dev, DeviceState *dev, drc =3D spapr_drc_by_id(TYPE_SPAPR_DRC_CPU, index * smt); g_assert(drc); =20 - drck =3D SPAPR_DR_CONNECTOR_GET_CLASS(drc); - drck->detach(drc, dev, &local_err); + spapr_drc_detach(drc, dev, &local_err); if (local_err) { error_propagate(errp, local_err); return; @@ -2894,8 +2887,8 @@ static void spapr_core_plug(HotplugHandler *hotplug_d= ev, DeviceState *dev, } =20 if (drc) { - sPAPRDRConnectorClass *drck =3D SPAPR_DR_CONNECTOR_GET_CLASS(drc); - drck->attach(drc, dev, fdt, fdt_offset, !dev->hotplugged, &local_e= rr); + spapr_drc_attach(drc, dev, fdt, fdt_offset, !dev->hotplugged, + &local_err); if (local_err) { g_free(fdt); error_propagate(errp, local_err); diff --git a/hw/ppc/spapr_drc.c b/hw/ppc/spapr_drc.c index a4ece2e..c73fae0 100644 --- a/hw/ppc/spapr_drc.c +++ b/hw/ppc/spapr_drc.c @@ -49,8 +49,6 @@ uint32_t spapr_drc_index(sPAPRDRConnector *drc) static uint32_t set_isolation_state(sPAPRDRConnector *drc, sPAPRDRIsolationState state) { - sPAPRDRConnectorClass *drck =3D SPAPR_DR_CONNECTOR_GET_CLASS(drc); - trace_spapr_drc_set_isolation_state(spapr_drc_index(drc), state); =20 /* if the guest is configuring a device attached to this DRC, we @@ -105,7 +103,7 @@ static uint32_t set_isolation_state(sPAPRDRConnector *d= rc, uint32_t drc_index =3D spapr_drc_index(drc); if (drc->configured) { trace_spapr_drc_set_isolation_state_finalizing(drc_index); - drck->detach(drc, DEVICE(drc->dev), NULL); + spapr_drc_detach(drc, DEVICE(drc->dev), NULL); } else { trace_spapr_drc_set_isolation_state_deferring(drc_index); } @@ -119,8 +117,6 @@ static uint32_t set_isolation_state(sPAPRDRConnector *d= rc, static uint32_t set_allocation_state(sPAPRDRConnector *drc, sPAPRDRAllocationState state) { - sPAPRDRConnectorClass *drck =3D SPAPR_DR_CONNECTOR_GET_CLASS(drc); - trace_spapr_drc_set_allocation_state(spapr_drc_index(drc), state); =20 if (state =3D=3D SPAPR_DR_ALLOCATION_STATE_USABLE) { @@ -151,7 +147,7 @@ static uint32_t set_allocation_state(sPAPRDRConnector *= drc, drc->allocation_state =3D=3D SPAPR_DR_ALLOCATION_STATE_UNUSABL= E) { uint32_t drc_index =3D spapr_drc_index(drc); trace_spapr_drc_set_allocation_state_finalizing(drc_index); - drck->detach(drc, DEVICE(drc->dev), NULL); + spapr_drc_detach(drc, DEVICE(drc->dev), NULL); } else if (drc->allocation_state =3D=3D SPAPR_DR_ALLOCATION_STATE_= USABLE) { drc->awaiting_allocation =3D false; } @@ -281,8 +277,8 @@ static void prop_get_fdt(Object *obj, Visitor *v, const= char *name, } while (fdt_depth !=3D 0); } =20 -static void attach(sPAPRDRConnector *drc, DeviceState *d, void *fdt, - int fdt_start_offset, bool coldplug, Error **errp) +void spapr_drc_attach(sPAPRDRConnector *drc, DeviceState *d, void *fdt, + int fdt_start_offset, bool coldplug, Error **errp) { trace_spapr_drc_attach(spapr_drc_index(drc)); =20 @@ -333,7 +329,7 @@ static void attach(sPAPRDRConnector *drc, DeviceState *= d, void *fdt, NULL, 0, NULL); } =20 -static void detach(sPAPRDRConnector *drc, DeviceState *d, Error **errp) +void spapr_drc_detach(sPAPRDRConnector *drc, DeviceState *d, Error **errp) { trace_spapr_drc_detach(spapr_drc_index(drc)); =20 @@ -436,7 +432,7 @@ static void reset(DeviceState *d) * force removal if we are */ if (drc->awaiting_release) { - drck->detach(drc, DEVICE(drc->dev), NULL); + spapr_drc_detach(drc, DEVICE(drc->dev), NULL); } =20 /* non-PCI devices may be awaiting a transition to UNUSABLE */ @@ -607,8 +603,6 @@ static void spapr_dr_connector_class_init(ObjectClass *= k, void *data) dk->unrealize =3D unrealize; drck->set_isolation_state =3D set_isolation_state; drck->set_allocation_state =3D set_allocation_state; - drck->attach =3D attach; - drck->detach =3D detach; drck->release_pending =3D release_pending; drck->set_signalled =3D set_signalled; /* diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c index 967d7c3..46e736d 100644 --- a/hw/ppc/spapr_pci.c +++ b/hw/ppc/spapr_pci.c @@ -1349,7 +1349,6 @@ static void spapr_phb_add_pci_device(sPAPRDRConnector= *drc, PCIDevice *pdev, Error **errp) { - sPAPRDRConnectorClass *drck =3D SPAPR_DR_CONNECTOR_GET_CLASS(drc); DeviceState *dev =3D DEVICE(pdev); void *fdt =3D NULL; int fdt_start_offset =3D 0, fdt_size; @@ -1361,8 +1360,8 @@ static void spapr_phb_add_pci_device(sPAPRDRConnector= *drc, goto out; } =20 - drck->attach(drc, DEVICE(pdev), - fdt, fdt_start_offset, !dev->hotplugged, errp); + spapr_drc_attach(drc, DEVICE(pdev), + fdt, fdt_start_offset, !dev->hotplugged, errp); out: if (*errp) { g_free(fdt); @@ -1391,9 +1390,7 @@ static void spapr_phb_remove_pci_device(sPAPRDRConnec= tor *drc, PCIDevice *pdev, Error **errp) { - sPAPRDRConnectorClass *drck =3D SPAPR_DR_CONNECTOR_GET_CLASS(drc); - - drck->detach(drc, DEVICE(pdev), errp); + spapr_drc_detach(drc, DEVICE(pdev), errp); } =20 static sPAPRDRConnector *spapr_phb_get_pci_func_drc(sPAPRPHBState *phb, diff --git a/include/hw/ppc/spapr_drc.h b/include/hw/ppc/spapr_drc.h index 802c708..ec0256b 100644 --- a/include/hw/ppc/spapr_drc.h +++ b/include/hw/ppc/spapr_drc.h @@ -225,9 +225,6 @@ typedef struct sPAPRDRConnectorClass { sPAPRDRAllocationState state); =20 /* QEMU interfaces for managing hotplug operations */ - void (*attach)(sPAPRDRConnector *drc, DeviceState *d, void *fdt, - int fdt_start_offset, bool coldplug, Error **errp); - void (*detach)(sPAPRDRConnector *drc, DeviceState *d, Error **errp); bool (*release_pending)(sPAPRDRConnector *drc); void (*set_signalled)(sPAPRDRConnector *drc); } sPAPRDRConnectorClass; @@ -243,4 +240,8 @@ sPAPRDRConnector *spapr_drc_by_id(const char *type, uin= t32_t id); int spapr_drc_populate_dt(void *fdt, int fdt_offset, Object *owner, uint32_t drc_type_mask); =20 +void spapr_drc_attach(sPAPRDRConnector *drc, DeviceState *d, void *fdt, + int fdt_start_offset, bool coldplug, Error **errp); +void spapr_drc_detach(sPAPRDRConnector *drc, DeviceState *d, Error **errp); + #endif /* HW_SPAPR_DRC_H */ --=20 2.9.4