From nobody Wed Nov 5 17:50:38 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 1496717830391793.2937385442704; Mon, 5 Jun 2017 19:57:10 -0700 (PDT) Received: from localhost ([::1]:35968 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dI4g9-0008Kv-1Q for importer@patchew.org; Mon, 05 Jun 2017 22:57:09 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54485) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dI4b2-0003a1-CV for qemu-devel@nongnu.org; Mon, 05 Jun 2017 22:51:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dI4az-00031O-KE for qemu-devel@nongnu.org; Mon, 05 Jun 2017 22:51:52 -0400 Received: from ozlabs.org ([2401:3900:2:1::2]:60663) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dI4ay-0002z1-VX; Mon, 05 Jun 2017 22:51:49 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3whbmr1qN6z9sD5; Tue, 6 Jun 2017 12:51:39 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1496717500; bh=F+4UgnJ9NuTuTJQdFoil8WK7D5zeVtaIsuq32HEQbII=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=OfVx//hECMP+nEUshiQjyndTQpg633vR/cUgNJuezaT3QtjlNFUBTZwwRypQaKoF5 hRMs14hyoawD61gQguXHn8zbwr1jfYeGkxmCCs3vbQAIpZ1UGzx0i5uL869nIP7iyu DULtP1vnV+39eEeUN+m7fd0qQMXWB8VWsjMmJDr8= From: David Gibson To: peter.maydell@linaro.org Date: Tue, 6 Jun 2017 12:51:32 +1000 Message-Id: <20170606025135.2685-15-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170606025135.2685-1-david@gibson.dropbear.id.au> References: <20170606025135.2685-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] [PULL 14/17] spapr: Clean up spapr_dr_connector_by_*() 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: mdroth@linux.vnet.ibm.com, David Gibson , qemu-ppc@nongnu.org, agraf@suse.de, qemu-devel@nongnu.org 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" * Change names to something less ludicrously verbose * Now that we have QOM subclasses for the different DRC types, use a QOM typename instead of a PAPR type value parameter The latter allows removal of the get_type_shift() helper. Signed-off-by: David Gibson Reviewed-by: Michael Roth Acked-by: Michael Roth --- hw/ppc/spapr.c | 28 ++++++++++++++-------------- hw/ppc/spapr_drc.c | 34 ++++++++++------------------------ hw/ppc/spapr_events.c | 2 +- hw/ppc/spapr_pci.c | 6 ++---- include/hw/ppc/spapr_drc.h | 5 ++--- 5 files changed, 29 insertions(+), 46 deletions(-) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 11a04d1..3fa9263 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -461,7 +461,7 @@ static void spapr_populate_cpu_dt(CPUState *cs, void *f= dt, int offset, uint32_t radix_AP_encodings[PPC_PAGE_SIZES_MAX_SZ]; int i; =20 - drc =3D spapr_dr_connector_by_id(SPAPR_DR_CONNECTOR_TYPE_CPU, index); + drc =3D spapr_drc_by_id(TYPE_SPAPR_DRC_CPU, index); if (drc) { drc_index =3D spapr_drc_index(drc); _FDT((fdt_setprop_cell(fdt, offset, "ibm,my-drc-index", drc_index)= )); @@ -654,7 +654,7 @@ static int spapr_populate_drconf_memory(sPAPRMachineSta= te *spapr, void *fdt) if (i >=3D hotplug_lmb_start) { sPAPRDRConnector *drc; =20 - drc =3D spapr_dr_connector_by_id(SPAPR_DR_CONNECTOR_TYPE_LMB, = i); + drc =3D spapr_drc_by_id(TYPE_SPAPR_DRC_LMB, i); g_assert(drc); =20 dynamic_memory[0] =3D cpu_to_be32(addr >> 32); @@ -2536,8 +2536,8 @@ static void spapr_add_lmbs(DeviceState *dev, uint64_t= addr_start, uint64_t size, uint64_t addr =3D addr_start; =20 for (i =3D 0; i < nr_lmbs; i++) { - drc =3D spapr_dr_connector_by_id(SPAPR_DR_CONNECTOR_TYPE_LMB, - addr/SPAPR_MEMORY_BLOCK_SIZE); + drc =3D spapr_drc_by_id(TYPE_SPAPR_DRC_LMB, + addr / SPAPR_MEMORY_BLOCK_SIZE); g_assert(drc); =20 fdt =3D create_device_tree(&fdt_size); @@ -2558,8 +2558,8 @@ static void spapr_add_lmbs(DeviceState *dev, uint64_t= addr_start, uint64_t size, */ if (dev->hotplugged) { if (dedicated_hp_event_source) { - drc =3D spapr_dr_connector_by_id(SPAPR_DR_CONNECTOR_TYPE_LMB, - addr_start / SPAPR_MEMORY_BLOCK_SIZE); + 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, @@ -2676,8 +2676,8 @@ static sPAPRDIMMState *spapr_recover_pending_dimm_sta= te(sPAPRMachineState *ms, =20 addr =3D addr_start; for (i =3D 0; i < nr_lmbs; i++) { - drc =3D spapr_dr_connector_by_id(SPAPR_DR_CONNECTOR_TYPE_LMB, - addr / SPAPR_MEMORY_BLOCK_SIZE); + drc =3D spapr_drc_by_id(TYPE_SPAPR_DRC_LMB, + addr / SPAPR_MEMORY_BLOCK_SIZE); g_assert(drc); if (drc->indicator_state !=3D SPAPR_DR_INDICATOR_STATE_INACTIVE) { avail_lmbs++; @@ -2760,8 +2760,8 @@ static void spapr_memory_unplug_request(HotplugHandle= r *hotplug_dev, =20 addr =3D addr_start; for (i =3D 0; i < nr_lmbs; i++) { - drc =3D spapr_dr_connector_by_id(SPAPR_DR_CONNECTOR_TYPE_LMB, - addr / SPAPR_MEMORY_BLOCK_SIZE); + drc =3D spapr_drc_by_id(TYPE_SPAPR_DRC_LMB, + addr / SPAPR_MEMORY_BLOCK_SIZE); g_assert(drc); =20 drck =3D SPAPR_DR_CONNECTOR_GET_CLASS(drc); @@ -2769,8 +2769,8 @@ static void spapr_memory_unplug_request(HotplugHandle= r *hotplug_dev, addr +=3D SPAPR_MEMORY_BLOCK_SIZE; } =20 - drc =3D spapr_dr_connector_by_id(SPAPR_DR_CONNECTOR_TYPE_LMB, - addr_start / SPAPR_MEMORY_BLOCK_SIZE); + 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= )); @@ -2841,7 +2841,7 @@ void spapr_core_unplug_request(HotplugHandler *hotplu= g_dev, DeviceState *dev, return; } =20 - drc =3D spapr_dr_connector_by_id(SPAPR_DR_CONNECTOR_TYPE_CPU, index * = smt); + drc =3D spapr_drc_by_id(TYPE_SPAPR_DRC_CPU, index * smt); g_assert(drc); =20 drck =3D SPAPR_DR_CONNECTOR_GET_CLASS(drc); @@ -2876,7 +2876,7 @@ static void spapr_core_plug(HotplugHandler *hotplug_d= ev, DeviceState *dev, cc->core_id); return; } - drc =3D spapr_dr_connector_by_id(SPAPR_DR_CONNECTOR_TYPE_CPU, index * = smt); + drc =3D spapr_drc_by_id(TYPE_SPAPR_DRC_CPU, index * smt); =20 g_assert(drc || !mc->has_hotpluggable_cpus); =20 diff --git a/hw/ppc/spapr_drc.c b/hw/ppc/spapr_drc.c index 969d727..7ed2de1 100644 --- a/hw/ppc/spapr_drc.c +++ b/hw/ppc/spapr_drc.c @@ -55,21 +55,6 @@ static void spapr_ccs_remove(sPAPRMachineState *spapr, g_free(ccs); } =20 -static sPAPRDRConnectorTypeShift get_type_shift(sPAPRDRConnectorType type) -{ - uint32_t shift =3D 0; - - /* make sure this isn't SPAPR_DR_CONNECTOR_TYPE_ANY, or some - * other wonky value. - */ - g_assert(is_power_of_2(type)); - - while (type !=3D (1 << shift)) { - shift++; - } - return shift; -} - sPAPRDRConnectorType spapr_drc_type(sPAPRDRConnector *drc) { sPAPRDRConnectorClass *drck =3D SPAPR_DR_CONNECTOR_GET_CLASS(drc); @@ -804,7 +789,7 @@ static const TypeInfo spapr_drc_lmb_info =3D { =20 /* helper functions for external users */ =20 -sPAPRDRConnector *spapr_dr_connector_by_index(uint32_t index) +sPAPRDRConnector *spapr_drc_by_index(uint32_t index) { Object *obj; char name[256]; @@ -815,12 +800,13 @@ sPAPRDRConnector *spapr_dr_connector_by_index(uint32_= t index) return !obj ? NULL : SPAPR_DR_CONNECTOR(obj); } =20 -sPAPRDRConnector *spapr_dr_connector_by_id(sPAPRDRConnectorType type, - uint32_t id) +sPAPRDRConnector *spapr_drc_by_id(const char *type, uint32_t id) { - return spapr_dr_connector_by_index( - (get_type_shift(type) << DRC_INDEX_TYPE_SHIFT) | - (id & DRC_INDEX_ID_MASK)); + sPAPRDRConnectorClass *drck + =3D SPAPR_DR_CONNECTOR_CLASS(object_class_by_name(type)); + + return spapr_drc_by_index(drck->typeshift << DRC_INDEX_TYPE_SHIFT + | (id & DRC_INDEX_ID_MASK)); } =20 /* generate a string the describes the DRC to encode into the @@ -1023,7 +1009,7 @@ static void rtas_set_indicator(PowerPCCPU *cpu, sPAPR= MachineState *spapr, } =20 /* if this is a DR sensor we can assume sensor_index =3D=3D drc_index = */ - drc =3D spapr_dr_connector_by_index(sensor_index); + drc =3D spapr_drc_by_index(sensor_index); if (!drc) { trace_spapr_rtas_set_indicator_invalid(sensor_index); ret =3D RTAS_OUT_PARAM_ERROR; @@ -1096,7 +1082,7 @@ static void rtas_get_sensor_state(PowerPCCPU *cpu, sP= APRMachineState *spapr, goto out; } =20 - drc =3D spapr_dr_connector_by_index(sensor_index); + drc =3D spapr_drc_by_index(sensor_index); if (!drc) { trace_spapr_rtas_get_sensor_state_invalid(sensor_index); ret =3D RTAS_OUT_PARAM_ERROR; @@ -1161,7 +1147,7 @@ static void rtas_ibm_configure_connector(PowerPCCPU *= cpu, wa_addr =3D ((uint64_t)rtas_ld(args, 1) << 32) | rtas_ld(args, 0); =20 drc_index =3D rtas_ld(wa_addr, 0); - drc =3D spapr_dr_connector_by_index(drc_index); + drc =3D spapr_drc_by_index(drc_index); if (!drc) { trace_spapr_rtas_ibm_configure_connector_invalid(drc_index); rc =3D RTAS_OUT_PARAM_ERROR; diff --git a/hw/ppc/spapr_events.c b/hw/ppc/spapr_events.c index d349ae5..171aedc 100644 --- a/hw/ppc/spapr_events.c +++ b/hw/ppc/spapr_events.c @@ -477,7 +477,7 @@ static void spapr_powerdown_req(Notifier *n, void *opaq= ue) =20 static void spapr_hotplug_set_signalled(uint32_t drc_index) { - sPAPRDRConnector *drc =3D spapr_dr_connector_by_index(drc_index); + sPAPRDRConnector *drc =3D spapr_drc_by_index(drc_index); sPAPRDRConnectorClass *drck =3D SPAPR_DR_CONNECTOR_GET_CLASS(drc); drck->set_signalled(drc); } diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c index 50d673b..0c181bb 100644 --- a/hw/ppc/spapr_pci.c +++ b/hw/ppc/spapr_pci.c @@ -1400,10 +1400,8 @@ static sPAPRDRConnector *spapr_phb_get_pci_func_drc(= sPAPRPHBState *phb, uint32_t busnr, int32_t devfn) { - return spapr_dr_connector_by_id(SPAPR_DR_CONNECTOR_TYPE_PCI, - (phb->index << 16) | - (busnr << 8) | - devfn); + return spapr_drc_by_id(TYPE_SPAPR_DRC_PCI, + (phb->index << 16) | (busnr << 8) | devfn); } =20 static sPAPRDRConnector *spapr_phb_get_pci_drc(sPAPRPHBState *phb, diff --git a/include/hw/ppc/spapr_drc.h b/include/hw/ppc/spapr_drc.h index 969c16d..e4a25c8 100644 --- a/include/hw/ppc/spapr_drc.h +++ b/include/hw/ppc/spapr_drc.h @@ -230,9 +230,8 @@ sPAPRDRConnectorType spapr_drc_type(sPAPRDRConnector *d= rc); =20 sPAPRDRConnector *spapr_dr_connector_new(Object *owner, const char *type, uint32_t id); -sPAPRDRConnector *spapr_dr_connector_by_index(uint32_t index); -sPAPRDRConnector *spapr_dr_connector_by_id(sPAPRDRConnectorType type, - uint32_t id); +sPAPRDRConnector *spapr_drc_by_index(uint32_t index); +sPAPRDRConnector *spapr_drc_by_id(const char *type, uint32_t id); int spapr_drc_populate_dt(void *fdt, int fdt_offset, Object *owner, uint32_t drc_type_mask); =20 --=20 2.9.4