From nobody Fri May 3 19:42:33 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1573819201; cv=none; d=zoho.com; s=zohoarc; b=X91Q/UmneYRAr5oZ1BG06SHHYQqoYUCLSLrgBQA1IoWLElUwcTCbhMggm3gLooiCF+5ug71lPgdcEASoNENsHN9R40Wewiksdz2SA0NuFIrm1DNi4vPUfJ9uUnZXVBLsuQyeB9xSg3NKSB/OqzuR3Hr8mS9Hdsbizckn1pgSRJk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573819201; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=xh+uErqnUIMN0PKyC0AcJ6NFjbYjWmTj49nDmXcBI4A=; b=XpD62b/yCXcJS0Lg1G9z7wQ+nj0eyFVlaRaK6iQ42USChYhyTn6U35G8WB+f5CJOv7oM0HH02/h0N8difAVRWljXpd7yneVeSl+a6UH4EHsdfls6asY4NV1bWqVvvR1k5qrMnK3IOXAe35xhnM819UYPbcZNRbd9+ZHu9eShosI= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1573819201673818.2852925993377; Fri, 15 Nov 2019 04:00:01 -0800 (PST) Received: from localhost ([::1]:38008 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iVaGd-0006v8-TS for importer@patchew.org; Fri, 15 Nov 2019 06:59:59 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:39837) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iVaAc-0001U1-UD for qemu-devel@nongnu.org; Fri, 15 Nov 2019 06:53:47 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iVaAb-00069m-MY for qemu-devel@nongnu.org; Fri, 15 Nov 2019 06:53:46 -0500 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:12126) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iVaAb-00065X-EE for qemu-devel@nongnu.org; Fri, 15 Nov 2019 06:53:45 -0500 Received: from pps.filterd (m0098404.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id xAFBqGVQ061019 for ; Fri, 15 Nov 2019 06:53:37 -0500 Received: from e06smtp05.uk.ibm.com (e06smtp05.uk.ibm.com [195.75.94.101]) by mx0a-001b2d01.pphosted.com with ESMTP id 2w9nup45ss-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 15 Nov 2019 06:53:37 -0500 Received: from localhost by e06smtp05.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 15 Nov 2019 11:53:35 -0000 Received: from b06cxnps4075.portsmouth.uk.ibm.com (9.149.109.197) by e06smtp05.uk.ibm.com (192.168.101.135) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Fri, 15 Nov 2019 11:53:32 -0000 Received: from b06wcsmtp001.portsmouth.uk.ibm.com (b06wcsmtp001.portsmouth.uk.ibm.com [9.149.105.160]) by b06cxnps4075.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id xAFBrVWS48234516 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 15 Nov 2019 11:53:31 GMT Received: from b06wcsmtp001.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 2FB4CA4062; Fri, 15 Nov 2019 11:53:31 +0000 (GMT) Received: from b06wcsmtp001.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id F16A2A4054; Fri, 15 Nov 2019 11:53:30 +0000 (GMT) Received: from bahia.lan (unknown [9.145.70.126]) by b06wcsmtp001.portsmouth.uk.ibm.com (Postfix) with ESMTP; Fri, 15 Nov 2019 11:53:30 +0000 (GMT) Subject: [PATCH for-5.0 1/8] xive: Link "cpu" property to XiveTCTX::cs pointer From: Greg Kurz To: David Gibson , =?utf-8?q?C=C3=A9dric?= Le Goater Date: Fri, 15 Nov 2019 12:53:30 +0100 In-Reply-To: <157381880498.136087.3775284829737989585.stgit@bahia.lan> References: <157381880498.136087.3775284829737989585.stgit@bahia.lan> User-Agent: StGit/unknown-version MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 x-cbid: 19111511-0020-0000-0000-000003866CF6 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 19111511-0021-0000-0000-000021DC892C Message-Id: <157381881062.136087.15165493342975065530.stgit@bahia.lan> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,18.0.572 definitions=2019-11-15_03:2019-11-15,2019-11-15 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1034 spamscore=0 priorityscore=1501 mlxscore=0 bulkscore=0 phishscore=0 impostorscore=0 lowpriorityscore=0 mlxlogscore=869 suspectscore=0 adultscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-1910280000 definitions=main-1911150112 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-Received-From: 148.163.156.1 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-ppc@nongnu.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" The TCTX object has both a pointer and a "cpu" property pointing to the vCPU object. Confusing bugs could arise if these ever go out of sync. Change the property definition so that it explicitely sets the pointer. Signed-off-by: Greg Kurz --- hw/intc/xive.c | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/hw/intc/xive.c b/hw/intc/xive.c index 75dce82fb205..5363fcaa416c 100644 --- a/hw/intc/xive.c +++ b/hw/intc/xive.c @@ -580,19 +580,11 @@ static void xive_tctx_realize(DeviceState *dev, Error= **errp) XiveTCTX *tctx =3D XIVE_TCTX(dev); PowerPCCPU *cpu; CPUPPCState *env; - Object *obj; Error *local_err =3D NULL; =20 - obj =3D object_property_get_link(OBJECT(dev), "cpu", &local_err); - if (!obj) { - error_propagate(errp, local_err); - error_prepend(errp, "required link 'cpu' not found: "); - return; - } - - cpu =3D POWERPC_CPU(obj); - tctx->cs =3D CPU(obj); + assert(tctx->cs); =20 + cpu =3D POWERPC_CPU(tctx->cs); env =3D &cpu->env; switch (PPC_INPUT(env)) { case PPC_FLAGS_INPUT_POWER9: @@ -676,10 +668,19 @@ static void xive_tctx_class_init(ObjectClass *klass, = void *data) dc->user_creatable =3D false; } =20 +static void xive_tctx_instance_init(Object *obj) +{ + object_property_add_link(obj, "cpu", TYPE_CPU, + (Object **) &XIVE_TCTX(obj)->cs, + qdev_prop_allow_set_link_before_realize, + OBJ_PROP_LINK_STRONG, &error_abort); +} + static const TypeInfo xive_tctx_info =3D { .name =3D TYPE_XIVE_TCTX, .parent =3D TYPE_DEVICE, .instance_size =3D sizeof(XiveTCTX), + .instance_init =3D xive_tctx_instance_init, .class_init =3D xive_tctx_class_init, }; =20 @@ -691,8 +692,7 @@ Object *xive_tctx_create(Object *cpu, XiveRouter *xrtr,= Error **errp) obj =3D object_new(TYPE_XIVE_TCTX); object_property_add_child(cpu, TYPE_XIVE_TCTX, obj, &error_abort); object_unref(obj); - object_ref(cpu); - object_property_add_const_link(obj, "cpu", cpu, &error_abort); + object_property_set_link(obj, cpu, "cpu", &error_abort); object_property_set_bool(obj, true, "realized", &local_err); if (local_err) { goto error; @@ -710,7 +710,6 @@ void xive_tctx_destroy(XiveTCTX *tctx) { Object *obj =3D OBJECT(tctx); =20 - object_unref(object_property_get_link(obj, "cpu", &error_abort)); object_unparent(obj); } =20 From nobody Fri May 3 19:42:33 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1573819195; cv=none; d=zoho.com; s=zohoarc; b=R91PPByDToi+0tnr3YbSbBrX3jMukF+4V2HQVU4WTrz2q5t4+dl69N8teqk+JXJOX6mqfXnjr/l7EeCcdnSIRXnai1JigSA/lKfUkv11KbuAL09FkTp9ug+DEQYPtCIvNJye6OKRsW2P7VWYWt2UXtDnosj4uqlr4VSy4quNPwM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573819195; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=U/EfxSFvLFmLLx8geY9cFQToWNSwvUmJbtD/fVUb8zc=; b=P7BmROIjnzBsP9v69u/YkSgZ8mh+lf3r34b4sRibNb2FHGR9omn1GzA5w5yFGFztcmcwdY+eqIdVh3wSOx8Gp0sOGyRpweBgtsD1/WuNO7rrodGuK9m1qnsKDY/TnvFN3tqBhmVrgr10RYBP65eJ8YwV5RnHXw53RnxTa8zLv+c= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1573819195456408.70632621004927; Fri, 15 Nov 2019 03:59:55 -0800 (PST) Received: from localhost ([::1]:38006 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iVaGX-0006oD-BN for importer@patchew.org; Fri, 15 Nov 2019 06:59:53 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:39820) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iVaAc-0001Rm-1g for qemu-devel@nongnu.org; Fri, 15 Nov 2019 06:53:47 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iVaAa-00069B-Lu for qemu-devel@nongnu.org; Fri, 15 Nov 2019 06:53:45 -0500 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:12530) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iVaAa-00068S-Cn for qemu-devel@nongnu.org; Fri, 15 Nov 2019 06:53:44 -0500 Received: from pps.filterd (m0098393.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id xAFBpjg8110261 for ; Fri, 15 Nov 2019 06:53:43 -0500 Received: from e06smtp01.uk.ibm.com (e06smtp01.uk.ibm.com [195.75.94.97]) by mx0a-001b2d01.pphosted.com with ESMTP id 2w9nse4fhd-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 15 Nov 2019 06:53:43 -0500 Received: from localhost by e06smtp01.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 15 Nov 2019 11:53:41 -0000 Received: from b06cxnps4075.portsmouth.uk.ibm.com (9.149.109.197) by e06smtp01.uk.ibm.com (192.168.101.131) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Fri, 15 Nov 2019 11:53:37 -0000 Received: from d06av21.portsmouth.uk.ibm.com (d06av21.portsmouth.uk.ibm.com [9.149.105.232]) by b06cxnps4075.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id xAFBran545482226 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 15 Nov 2019 11:53:36 GMT Received: from d06av21.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id AFB2952051; Fri, 15 Nov 2019 11:53:36 +0000 (GMT) Received: from bahia.lan (unknown [9.145.70.126]) by d06av21.portsmouth.uk.ibm.com (Postfix) with ESMTP id 7F74D52052; Fri, 15 Nov 2019 11:53:36 +0000 (GMT) Subject: [PATCH for-5.0 2/8] xive: Link "xive" property to XiveSource::xive pointer From: Greg Kurz To: David Gibson , =?utf-8?q?C=C3=A9dric?= Le Goater Date: Fri, 15 Nov 2019 12:53:36 +0100 In-Reply-To: <157381880498.136087.3775284829737989585.stgit@bahia.lan> References: <157381880498.136087.3775284829737989585.stgit@bahia.lan> User-Agent: StGit/unknown-version MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 x-cbid: 19111511-4275-0000-0000-0000037DFA39 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 19111511-4276-0000-0000-0000389163A8 Message-Id: <157381881619.136087.12649487612244092428.stgit@bahia.lan> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,18.0.572 definitions=2019-11-15_03:2019-11-15,2019-11-15 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 lowpriorityscore=0 adultscore=0 impostorscore=0 clxscore=1034 bulkscore=0 mlxscore=0 malwarescore=0 phishscore=0 priorityscore=1501 mlxlogscore=702 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-1910280000 definitions=main-1911150112 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-Received-From: 148.163.156.1 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-ppc@nongnu.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" The source object has both a pointer and a "xive" property pointing to the notifier object. Confusing bugs could arise if these ever go out of sync. Change the property definition so that it explicitely sets the pointer. The property isn't optional : not being able to set the link is a bug and QEMU should rather abort than exit in this case. Signed-off-by: Greg Kurz --- hw/intc/pnv_xive.c | 4 ++-- hw/intc/spapr_xive.c | 4 ++-- hw/intc/xive.c | 20 ++++++++++---------- hw/ppc/pnv_psi.c | 3 +-- 4 files changed, 15 insertions(+), 16 deletions(-) diff --git a/hw/intc/pnv_xive.c b/hw/intc/pnv_xive.c index 348f2fdd263d..9e23dc705dc3 100644 --- a/hw/intc/pnv_xive.c +++ b/hw/intc/pnv_xive.c @@ -1695,8 +1695,8 @@ static void pnv_xive_realize(DeviceState *dev, Error = **errp) */ object_property_set_int(OBJECT(xsrc), PNV_XIVE_NR_IRQS, "nr-irqs", &error_fatal); - object_property_add_const_link(OBJECT(xsrc), "xive", OBJECT(xive), - &error_fatal); + object_property_set_link(OBJECT(xsrc), OBJECT(xive), "xive", + &error_abort); object_property_set_bool(OBJECT(xsrc), true, "realized", &local_err); if (local_err) { error_propagate(errp, local_err); diff --git a/hw/intc/spapr_xive.c b/hw/intc/spapr_xive.c index 9cb8d38a3bab..10890aeeeb5b 100644 --- a/hw/intc/spapr_xive.c +++ b/hw/intc/spapr_xive.c @@ -276,8 +276,8 @@ static void spapr_xive_realize(DeviceState *dev, Error = **errp) */ object_property_set_int(OBJECT(xsrc), xive->nr_irqs, "nr-irqs", &error_fatal); - object_property_add_const_link(OBJECT(xsrc), "xive", OBJECT(xive), - &error_fatal); + object_property_set_link(OBJECT(xsrc), OBJECT(xive), "xive", + &error_abort); object_property_set_bool(OBJECT(xsrc), true, "realized", &local_err); if (local_err) { error_propagate(errp, local_err); diff --git a/hw/intc/xive.c b/hw/intc/xive.c index 5363fcaa416c..b69bceb4d255 100644 --- a/hw/intc/xive.c +++ b/hw/intc/xive.c @@ -1063,17 +1063,8 @@ static void xive_source_reset(void *dev) static void xive_source_realize(DeviceState *dev, Error **errp) { XiveSource *xsrc =3D XIVE_SOURCE(dev); - Object *obj; - Error *local_err =3D NULL; - - obj =3D object_property_get_link(OBJECT(dev), "xive", &local_err); - if (!obj) { - error_propagate(errp, local_err); - error_prepend(errp, "required link 'xive' not found: "); - return; - } =20 - xsrc->xive =3D XIVE_NOTIFIER(obj); + assert(xsrc->xive); =20 if (!xsrc->nr_irqs) { error_setg(errp, "Number of interrupt needs to be greater than 0"); @@ -1122,6 +1113,14 @@ static Property xive_source_properties[] =3D { DEFINE_PROP_END_OF_LIST(), }; =20 +static void xive_source_instance_init(Object *obj) +{ + object_property_add_link(obj, "xive", TYPE_XIVE_NOTIFIER, + (Object **) &XIVE_SOURCE(obj)->xive, + qdev_prop_allow_set_link_before_realize, + OBJ_PROP_LINK_STRONG, &error_abort); +} + static void xive_source_class_init(ObjectClass *klass, void *data) { DeviceClass *dc =3D DEVICE_CLASS(klass); @@ -1141,6 +1140,7 @@ static const TypeInfo xive_source_info =3D { .name =3D TYPE_XIVE_SOURCE, .parent =3D TYPE_DEVICE, .instance_size =3D sizeof(XiveSource), + .instance_init =3D xive_source_instance_init, .class_init =3D xive_source_class_init, }; =20 diff --git a/hw/ppc/pnv_psi.c b/hw/ppc/pnv_psi.c index 68d0dfacfe2b..a360515a86f8 100644 --- a/hw/ppc/pnv_psi.c +++ b/hw/ppc/pnv_psi.c @@ -851,8 +851,7 @@ static void pnv_psi_power9_realize(DeviceState *dev, Er= ror **errp) &error_fatal); object_property_set_int(OBJECT(xsrc), PSIHB9_NUM_IRQS, "nr-irqs", &error_fatal); - object_property_add_const_link(OBJECT(xsrc), "xive", OBJECT(psi), - &error_fatal); + object_property_set_link(OBJECT(xsrc), OBJECT(psi), "xive", &error_abo= rt); object_property_set_bool(OBJECT(xsrc), true, "realized", &local_err); if (local_err) { error_propagate(errp, local_err); From nobody Fri May 3 19:42:33 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1573819418; cv=none; d=zoho.com; s=zohoarc; b=Su7iHadAYy9SAECbBAzrJXiUgl0s/jKVJw5xUEIBcQIDp9V1rr4AAuQRcIpP3XHEyLntrea672W5XWD4Oh5q50v9JtgvNCApqHBty6fEE/r192aPG1BZ0guasOOXCUZ8j++dnJY4S71KX5cryfFeu290gTYSCT8zbciyY2pSpbY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573819418; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=09dbKSvlSCi2hBH9xeBI4RbFyYbuBOsl2/KHlO1HINQ=; b=c+5Gqd+9upv8tXo92CHaehEEL9lB7d6wGFPdC2ZJrD/VWlTqkSFtzBNcyQOOTcVBNI6BvWNq2K/t2u6AxOqClyM0i9PbmZigecwXMz6yF1A77W88OW76PLKlpTHUaIdgYurGYrUglsayfTD+XnuG6dyX2QZYmv6oFNskYnygTTA= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 15738194186150.9393415242047922; Fri, 15 Nov 2019 04:03:38 -0800 (PST) Received: from localhost ([::1]:38048 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iVaK5-0001v3-De for importer@patchew.org; Fri, 15 Nov 2019 07:03:34 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:39888) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iVaAf-0001Yc-K3 for qemu-devel@nongnu.org; Fri, 15 Nov 2019 06:53:50 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iVaAe-0006DP-D7 for qemu-devel@nongnu.org; Fri, 15 Nov 2019 06:53:49 -0500 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:58112 helo=mx0a-001b2d01.pphosted.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iVaAe-0006Cr-8K for qemu-devel@nongnu.org; Fri, 15 Nov 2019 06:53:48 -0500 Received: from pps.filterd (m0098413.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id xAFBq77I068915 for ; Fri, 15 Nov 2019 06:53:46 -0500 Received: from e06smtp01.uk.ibm.com (e06smtp01.uk.ibm.com [195.75.94.97]) by mx0b-001b2d01.pphosted.com with ESMTP id 2w9qmjgef2-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 15 Nov 2019 06:53:46 -0500 Received: from localhost by e06smtp01.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 15 Nov 2019 11:53:44 -0000 Received: from b06cxnps3075.portsmouth.uk.ibm.com (9.149.109.195) by e06smtp01.uk.ibm.com (192.168.101.131) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Fri, 15 Nov 2019 11:53:43 -0000 Received: from d06av22.portsmouth.uk.ibm.com (d06av22.portsmouth.uk.ibm.com [9.149.105.58]) by b06cxnps3075.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id xAFBrgDc55902346 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 15 Nov 2019 11:53:42 GMT Received: from d06av22.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 4E1AF4C04A; Fri, 15 Nov 2019 11:53:42 +0000 (GMT) Received: from d06av22.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 1BA224C040; Fri, 15 Nov 2019 11:53:42 +0000 (GMT) Received: from bahia.lan (unknown [9.145.70.126]) by d06av22.portsmouth.uk.ibm.com (Postfix) with ESMTP; Fri, 15 Nov 2019 11:53:42 +0000 (GMT) Subject: [PATCH for-5.0 3/8] xive: Link "xive" property to XiveEndSource::xrtr pointer From: Greg Kurz To: David Gibson , =?utf-8?q?C=C3=A9dric?= Le Goater Date: Fri, 15 Nov 2019 12:53:41 +0100 In-Reply-To: <157381880498.136087.3775284829737989585.stgit@bahia.lan> References: <157381880498.136087.3775284829737989585.stgit@bahia.lan> User-Agent: StGit/unknown-version MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 x-cbid: 19111511-4275-0000-0000-0000037DFA3A X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 19111511-4276-0000-0000-0000389163AA Message-Id: <157381882171.136087.11902736379070146922.stgit@bahia.lan> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,18.0.572 definitions=2019-11-15_03:2019-11-15,2019-11-15 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 mlxscore=0 bulkscore=0 adultscore=0 priorityscore=1501 impostorscore=0 spamscore=0 mlxlogscore=638 lowpriorityscore=0 phishscore=0 suspectscore=0 clxscore=1034 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-1910280000 definitions=main-1911150112 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-Received-From: 148.163.158.5 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-ppc@nongnu.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" The END source object has both a pointer and a "xive" property pointing to the router object. Confusing bugs could arise if these ever go out of sync. Change the property definition so that it explicitely sets the pointer. The property isn't optional : not being able to set the link is a bug and QEMU should rather abort than exit in this case. Signed-off-by: Greg Kurz --- hw/intc/pnv_xive.c | 4 ++-- hw/intc/spapr_xive.c | 4 ++-- hw/intc/xive.c | 20 ++++++++++---------- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/hw/intc/pnv_xive.c b/hw/intc/pnv_xive.c index 9e23dc705dc3..6aa7aeed6f83 100644 --- a/hw/intc/pnv_xive.c +++ b/hw/intc/pnv_xive.c @@ -1705,8 +1705,8 @@ static void pnv_xive_realize(DeviceState *dev, Error = **errp) =20 object_property_set_int(OBJECT(end_xsrc), PNV_XIVE_NR_ENDS, "nr-ends", &error_fatal); - object_property_add_const_link(OBJECT(end_xsrc), "xive", OBJECT(xive), - &error_fatal); + object_property_set_link(OBJECT(end_xsrc), OBJECT(xive), "xive", + &error_abort); object_property_set_bool(OBJECT(end_xsrc), true, "realized", &local_er= r); if (local_err) { error_propagate(errp, local_err); diff --git a/hw/intc/spapr_xive.c b/hw/intc/spapr_xive.c index 10890aeeeb5b..729246e906c9 100644 --- a/hw/intc/spapr_xive.c +++ b/hw/intc/spapr_xive.c @@ -290,8 +290,8 @@ static void spapr_xive_realize(DeviceState *dev, Error = **errp) */ object_property_set_int(OBJECT(end_xsrc), xive->nr_irqs, "nr-ends", &error_fatal); - object_property_add_const_link(OBJECT(end_xsrc), "xive", OBJECT(xive), - &error_fatal); + object_property_set_link(OBJECT(end_xsrc), OBJECT(xive), "xive", + &error_abort); object_property_set_bool(OBJECT(end_xsrc), true, "realized", &local_er= r); if (local_err) { error_propagate(errp, local_err); diff --git a/hw/intc/xive.c b/hw/intc/xive.c index b69bceb4d255..a32ce0d5bfc6 100644 --- a/hw/intc/xive.c +++ b/hw/intc/xive.c @@ -1824,17 +1824,8 @@ static const MemoryRegionOps xive_end_source_ops =3D= { static void xive_end_source_realize(DeviceState *dev, Error **errp) { XiveENDSource *xsrc =3D XIVE_END_SOURCE(dev); - Object *obj; - Error *local_err =3D NULL; - - obj =3D object_property_get_link(OBJECT(dev), "xive", &local_err); - if (!obj) { - error_propagate(errp, local_err); - error_prepend(errp, "required link 'xive' not found: "); - return; - } =20 - xsrc->xrtr =3D XIVE_ROUTER(obj); + assert(xsrc->xrtr); =20 if (!xsrc->nr_ends) { error_setg(errp, "Number of interrupt needs to be greater than 0"); @@ -1863,6 +1854,14 @@ static Property xive_end_source_properties[] =3D { DEFINE_PROP_END_OF_LIST(), }; =20 +static void xive_end_source_instance_init(Object *obj) +{ + object_property_add_link(obj, "xive", TYPE_XIVE_ROUTER, + (Object **) &XIVE_END_SOURCE(obj)->xrtr, + qdev_prop_allow_set_link_before_realize, + OBJ_PROP_LINK_STRONG, &error_abort); +} + static void xive_end_source_class_init(ObjectClass *klass, void *data) { DeviceClass *dc =3D DEVICE_CLASS(klass); @@ -1881,6 +1880,7 @@ static const TypeInfo xive_end_source_info =3D { .name =3D TYPE_XIVE_END_SOURCE, .parent =3D TYPE_DEVICE, .instance_size =3D sizeof(XiveENDSource), + .instance_init =3D xive_end_source_instance_init, .class_init =3D xive_end_source_class_init, }; =20 From nobody Fri May 3 19:42:33 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1573819031; cv=none; d=zoho.com; s=zohoarc; b=EwLgmUgQ59zt4fVTxu4OQVTpvEVrQKeZZphzEwLfDDBbg08wf9uafXeRD5izq0z8fqp2pFlXtMZ5WNdUMGPkrIk0bv07BiNYqXhu1mHZKqKQQDLD8T3L75jJO2h5UEQ1yIfD0wBgXP6+K9tKDl1oz/PSLJk3mtIxXy7MJ2RRS+k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573819031; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=1MG8B5A9vXwPikcNvq5i3JQ4L763NAQsxbmTZk5YU50=; b=cXT9a2d9GO4KrtvPGp8yzYy1gZiVYavNW3+q216Y1LzB2wuJQTxOIF6st0yGSeERkRD7tzv/QP1/Phimnja8LE5u+kztXj9AyXuWbSLDP9SStDWDzsKqXZ82NPlvdFyMO8r7lbtoxyKLHLt3JGNAWKhRJXaVFGnhl+0OJ29NtOI= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1573819031832650.6921111140757; Fri, 15 Nov 2019 03:57:11 -0800 (PST) Received: from localhost ([::1]:37964 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iVaDu-00049q-Cm for importer@patchew.org; Fri, 15 Nov 2019 06:57:10 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:39923) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iVaAm-0001jE-6G for qemu-devel@nongnu.org; Fri, 15 Nov 2019 06:53:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iVaAk-0006LN-OX for qemu-devel@nongnu.org; Fri, 15 Nov 2019 06:53:56 -0500 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:47476) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iVaAk-0006IL-FN for qemu-devel@nongnu.org; Fri, 15 Nov 2019 06:53:54 -0500 Received: from pps.filterd (m0187473.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id xAFBpc54173842 for ; Fri, 15 Nov 2019 06:53:53 -0500 Received: from e06smtp01.uk.ibm.com (e06smtp01.uk.ibm.com [195.75.94.97]) by mx0a-001b2d01.pphosted.com with ESMTP id 2w9ntbbcrt-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 15 Nov 2019 06:53:53 -0500 Received: from localhost by e06smtp01.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 15 Nov 2019 11:53:51 -0000 Received: from b06cxnps3074.portsmouth.uk.ibm.com (9.149.109.194) by e06smtp01.uk.ibm.com (192.168.101.131) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Fri, 15 Nov 2019 11:53:48 -0000 Received: from d06av23.portsmouth.uk.ibm.com (d06av23.portsmouth.uk.ibm.com [9.149.105.59]) by b06cxnps3074.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id xAFBrlH843712580 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 15 Nov 2019 11:53:47 GMT Received: from d06av23.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D7D57A4051; Fri, 15 Nov 2019 11:53:47 +0000 (GMT) Received: from d06av23.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id A81FDA404D; Fri, 15 Nov 2019 11:53:47 +0000 (GMT) Received: from bahia.lan (unknown [9.145.70.126]) by d06av23.portsmouth.uk.ibm.com (Postfix) with ESMTP; Fri, 15 Nov 2019 11:53:47 +0000 (GMT) Subject: [PATCH for-5.0 4/8] ppc/pnv: Link "psi" property to PnvLpc::psi pointer From: Greg Kurz To: David Gibson , =?utf-8?q?C=C3=A9dric?= Le Goater Date: Fri, 15 Nov 2019 12:53:47 +0100 In-Reply-To: <157381880498.136087.3775284829737989585.stgit@bahia.lan> References: <157381880498.136087.3775284829737989585.stgit@bahia.lan> User-Agent: StGit/unknown-version MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 x-cbid: 19111511-4275-0000-0000-0000037DFA3B X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 19111511-4276-0000-0000-0000389163AB Message-Id: <157381882732.136087.1518730413761195138.stgit@bahia.lan> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,18.0.572 definitions=2019-11-15_03:2019-11-15,2019-11-15 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxlogscore=514 clxscore=1034 bulkscore=0 impostorscore=0 priorityscore=1501 adultscore=0 spamscore=0 phishscore=0 lowpriorityscore=0 mlxscore=0 malwarescore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-1910280000 definitions=main-1911150112 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-Received-From: 148.163.156.1 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-ppc@nongnu.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" The LPC object has both a pointer and a "psi" property pointing to the PSI object. Confusing bugs could arise if these ever go out of sync. Change the property definition so that it explicitely sets the pointer. Signed-off-by: Greg Kurz --- hw/ppc/pnv.c | 8 ++++---- hw/ppc/pnv_lpc.c | 23 ++++++++++++----------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index d0c1d4227784..286901746f50 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -898,8 +898,6 @@ static void pnv_chip_power8_instance_init(Object *obj) =20 object_initialize_child(obj, "lpc", &chip8->lpc, sizeof(chip8->lpc), TYPE_PNV8_LPC, &error_abort, NULL); - object_property_add_const_link(OBJECT(&chip8->lpc), "psi", - OBJECT(&chip8->psi), &error_abort); =20 object_initialize_child(obj, "occ", &chip8->occ, sizeof(chip8->occ), TYPE_PNV8_OCC, &error_abort, NULL); @@ -978,6 +976,8 @@ static void pnv_chip_power8_realize(DeviceState *dev, E= rror **errp) &PNV_PSI(psi8)->xscom_regs); =20 /* Create LPC controller */ + object_property_set_link(OBJECT(&chip8->lpc), OBJECT(&chip8->psi), "ps= i", + &error_abort); object_property_set_bool(OBJECT(&chip8->lpc), true, "realized", &error_fatal); pnv_xscom_add_subregion(chip, PNV_XSCOM_LPC_BASE, &chip8->lpc.xscom_re= gs); @@ -1098,8 +1098,6 @@ static void pnv_chip_power9_instance_init(Object *obj) =20 object_initialize_child(obj, "lpc", &chip9->lpc, sizeof(chip9->lpc), TYPE_PNV9_LPC, &error_abort, NULL); - object_property_add_const_link(OBJECT(&chip9->lpc), "psi", - OBJECT(&chip9->psi), &error_abort); =20 object_initialize_child(obj, "occ", &chip9->occ, sizeof(chip9->occ), TYPE_PNV9_OCC, &error_abort, NULL); @@ -1198,6 +1196,8 @@ static void pnv_chip_power9_realize(DeviceState *dev,= Error **errp) &PNV_PSI(psi9)->xscom_regs); =20 /* LPC */ + object_property_set_link(OBJECT(&chip9->lpc), OBJECT(&chip9->psi), "ps= i", + &error_abort); object_property_set_bool(OBJECT(&chip9->lpc), true, "realized", &local= _err); if (local_err) { error_propagate(errp, local_err); diff --git a/hw/ppc/pnv_lpc.c b/hw/ppc/pnv_lpc.c index 9466d4a1be3b..f0040a26cfd0 100644 --- a/hw/ppc/pnv_lpc.c +++ b/hw/ppc/pnv_lpc.c @@ -24,7 +24,7 @@ #include "qemu/module.h" #include "hw/irq.h" #include "hw/isa/isa.h" - +#include "hw/qdev-properties.h" #include "hw/ppc/pnv.h" #include "hw/ppc/pnv_lpc.h" #include "hw/ppc/pnv_xscom.h" @@ -682,17 +682,8 @@ static const TypeInfo pnv_lpc_power9_info =3D { static void pnv_lpc_realize(DeviceState *dev, Error **errp) { PnvLpcController *lpc =3D PNV_LPC(dev); - Object *obj; - Error *local_err =3D NULL; =20 - obj =3D object_property_get_link(OBJECT(dev), "psi", &local_err); - if (!obj) { - error_propagate(errp, local_err); - error_prepend(errp, "required link 'psi' not found: "); - return; - } - /* The LPC controller needs PSI to generate interrupts */ - lpc->psi =3D PNV_PSI(obj); + assert(lpc->psi); =20 /* Reg inits */ lpc->lpc_hc_fw_rd_acc_size =3D LPC_HC_FW_RD_4B; @@ -734,6 +725,15 @@ static void pnv_lpc_realize(DeviceState *dev, Error **= errp) &lpc->lpc_hc_regs); } =20 +static void pnv_lpc_instance_init(Object *obj) +{ + /* The LPC controller needs PSI to generate interrupts */ + object_property_add_link(obj, "psi", TYPE_PNV_PSI, + (Object **) &PNV_LPC(obj)->psi, + qdev_prop_allow_set_link_before_realize, + OBJ_PROP_LINK_STRONG, &error_abort); +} + static void pnv_lpc_class_init(ObjectClass *klass, void *data) { DeviceClass *dc =3D DEVICE_CLASS(klass); @@ -745,6 +745,7 @@ static void pnv_lpc_class_init(ObjectClass *klass, void= *data) static const TypeInfo pnv_lpc_info =3D { .name =3D TYPE_PNV_LPC, .parent =3D TYPE_DEVICE, + .instance_init =3D pnv_lpc_instance_init, .class_init =3D pnv_lpc_class_init, .class_size =3D sizeof(PnvLpcClass), .abstract =3D true, From nobody Fri May 3 19:42:33 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1573819237; cv=none; d=zoho.com; s=zohoarc; b=Cq1uwofBm9T4C5Rg7ovnyXJeTYxKSPwOigv33p3J7+azp8W9ceAfBbUuCI6KuUmM/kYfrhON3d0xEEzPIQ/cV3waBCGj3XQOUsVBl7Nse/jt/LOf1E1eeP5fefDxEL6c2AI6fBdvsobjeR0eGlZ8CUPtFya+te4Qk9KoCa1b//Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573819237; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=eJ8Y2RYTSv4F2g6jsaGXxT3oERk8+TWlW1I1oS7Bl18=; b=cHXvq889dyoMULMvpWq5T0wFpvQ4g2PCzsGvr1W9GVW7/stUNGJhS0IL6URuK+Uu3a8CMUe573I4hw/MprU3h1ijJJJY3vtHcGVkGDTMYw3GiGSc0cBFl0iPsmaKI89aeJHbgQphtOxzKBo6X744gQ5FZ0UaEYg6WSIwX6NPTLc= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1573819237261414.42420786759897; Fri, 15 Nov 2019 04:00:37 -0800 (PST) Received: from localhost ([::1]:38012 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iVaHD-0007bO-EX for importer@patchew.org; Fri, 15 Nov 2019 07:00:35 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:39963) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iVaAs-0001mm-PO for qemu-devel@nongnu.org; Fri, 15 Nov 2019 06:54:04 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iVaAr-0006RP-Cg for qemu-devel@nongnu.org; Fri, 15 Nov 2019 06:54:02 -0500 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:21492) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iVaAr-0006Qh-4c for qemu-devel@nongnu.org; Fri, 15 Nov 2019 06:54:01 -0500 Received: from pps.filterd (m0187473.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id xAFBpcAk173836 for ; Fri, 15 Nov 2019 06:54:00 -0500 Received: from e06smtp07.uk.ibm.com (e06smtp07.uk.ibm.com [195.75.94.103]) by mx0a-001b2d01.pphosted.com with ESMTP id 2w9ntbbcvd-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 15 Nov 2019 06:53:59 -0500 Received: from localhost by e06smtp07.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 15 Nov 2019 11:53:57 -0000 Received: from b06cxnps3074.portsmouth.uk.ibm.com (9.149.109.194) by e06smtp07.uk.ibm.com (192.168.101.137) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Fri, 15 Nov 2019 11:53:54 -0000 Received: from d06av24.portsmouth.uk.ibm.com (mk.ibm.com [9.149.105.60]) by b06cxnps3074.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id xAFBrrxw44761306 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 15 Nov 2019 11:53:53 GMT Received: from d06av24.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 6F7E442049; Fri, 15 Nov 2019 11:53:53 +0000 (GMT) Received: from d06av24.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 3F00342047; Fri, 15 Nov 2019 11:53:53 +0000 (GMT) Received: from bahia.lan (unknown [9.145.70.126]) by d06av24.portsmouth.uk.ibm.com (Postfix) with ESMTP; Fri, 15 Nov 2019 11:53:53 +0000 (GMT) Subject: [PATCH for-5.0 5/8] ppc/pnv: Link "psi" property to PnvOCC::psi pointer From: Greg Kurz To: David Gibson , =?utf-8?q?C=C3=A9dric?= Le Goater Date: Fri, 15 Nov 2019 12:53:52 +0100 In-Reply-To: <157381880498.136087.3775284829737989585.stgit@bahia.lan> References: <157381880498.136087.3775284829737989585.stgit@bahia.lan> User-Agent: StGit/unknown-version MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 x-cbid: 19111511-0028-0000-0000-000003B7222A X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 19111511-0029-0000-0000-0000247A334C Message-Id: <157381883288.136087.6402444876615173633.stgit@bahia.lan> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,18.0.572 definitions=2019-11-15_03:2019-11-15,2019-11-15 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxlogscore=637 clxscore=1034 bulkscore=0 impostorscore=0 priorityscore=1501 adultscore=0 spamscore=0 phishscore=0 lowpriorityscore=0 mlxscore=0 malwarescore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-1910280000 definitions=main-1911150112 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-Received-From: 148.163.156.1 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-ppc@nongnu.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" The OCC object has both a pointer and a "psi" property pointing to the PSI object. Confusing bugs could arise if these ever go out of sync. Change the property definition so that it explicitely sets the pointer. Signed-off-by: Greg Kurz --- hw/ppc/pnv.c | 8 ++++---- hw/ppc/pnv_occ.c | 23 ++++++++++++----------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 286901746f50..96c5a23cd1eb 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -901,8 +901,6 @@ static void pnv_chip_power8_instance_init(Object *obj) =20 object_initialize_child(obj, "occ", &chip8->occ, sizeof(chip8->occ), TYPE_PNV8_OCC, &error_abort, NULL); - object_property_add_const_link(OBJECT(&chip8->occ), "psi", - OBJECT(&chip8->psi), &error_abort); =20 object_initialize_child(obj, "homer", &chip8->homer, sizeof(chip8->ho= mer), TYPE_PNV8_HOMER, &error_abort, NULL); @@ -997,6 +995,8 @@ static void pnv_chip_power8_realize(DeviceState *dev, E= rror **errp) } =20 /* Create the simplified OCC model */ + object_property_set_link(OBJECT(&chip8->occ), OBJECT(&chip8->psi), "ps= i", + &error_abort); object_property_set_bool(OBJECT(&chip8->occ), true, "realized", &local= _err); if (local_err) { error_propagate(errp, local_err); @@ -1101,8 +1101,6 @@ static void pnv_chip_power9_instance_init(Object *obj) =20 object_initialize_child(obj, "occ", &chip9->occ, sizeof(chip9->occ), TYPE_PNV9_OCC, &error_abort, NULL); - object_property_add_const_link(OBJECT(&chip9->occ), "psi", - OBJECT(&chip9->psi), &error_abort); =20 object_initialize_child(obj, "homer", &chip9->homer, sizeof(chip9->ho= mer), TYPE_PNV9_HOMER, &error_abort, NULL); @@ -1210,6 +1208,8 @@ static void pnv_chip_power9_realize(DeviceState *dev,= Error **errp) (uint64_t) PNV9_LPCM_BASE(chip= )); =20 /* Create the simplified OCC model */ + object_property_set_link(OBJECT(&chip9->occ), OBJECT(&chip9->psi), "ps= i", + &error_abort); object_property_set_bool(OBJECT(&chip9->occ), true, "realized", &local= _err); if (local_err) { error_propagate(errp, local_err); diff --git a/hw/ppc/pnv_occ.c b/hw/ppc/pnv_occ.c index 785653bb6710..084d580c1565 100644 --- a/hw/ppc/pnv_occ.c +++ b/hw/ppc/pnv_occ.c @@ -21,7 +21,7 @@ #include "qapi/error.h" #include "qemu/log.h" #include "qemu/module.h" - +#include "hw/qdev-properties.h" #include "hw/ppc/pnv.h" #include "hw/ppc/pnv_xscom.h" #include "hw/ppc/pnv_occ.h" @@ -257,18 +257,10 @@ static void pnv_occ_realize(DeviceState *dev, Error *= *errp) { PnvOCC *occ =3D PNV_OCC(dev); PnvOCCClass *poc =3D PNV_OCC_GET_CLASS(occ); - Object *obj; - Error *local_err =3D NULL; =20 - occ->occmisc =3D 0; + assert(occ->psi); =20 - obj =3D object_property_get_link(OBJECT(dev), "psi", &local_err); - if (!obj) { - error_propagate(errp, local_err); - error_prepend(errp, "required link 'psi' not found: "); - return; - } - occ->psi =3D PNV_PSI(obj); + occ->occmisc =3D 0; =20 /* XScom region for OCC registers */ pnv_xscom_region_init(&occ->xscom_regs, OBJECT(dev), poc->xscom_ops, @@ -279,6 +271,14 @@ static void pnv_occ_realize(DeviceState *dev, Error **= errp) occ, "occ-common-area", poc->sram_size); } =20 +static void pnv_occ_instance_init(Object *obj) +{ + object_property_add_link(obj, "psi", TYPE_PNV_PSI, + (Object **) &PNV_OCC(obj)->psi, + qdev_prop_allow_set_link_before_realize, + OBJ_PROP_LINK_STRONG, &error_abort); +} + static void pnv_occ_class_init(ObjectClass *klass, void *data) { DeviceClass *dc =3D DEVICE_CLASS(klass); @@ -291,6 +291,7 @@ static const TypeInfo pnv_occ_type_info =3D { .name =3D TYPE_PNV_OCC, .parent =3D TYPE_DEVICE, .instance_size =3D sizeof(PnvOCC), + .instance_init =3D pnv_occ_instance_init, .class_init =3D pnv_occ_class_init, .class_size =3D sizeof(PnvOCCClass), .abstract =3D true, From nobody Fri May 3 19:42:33 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1573819422; cv=none; d=zoho.com; s=zohoarc; b=AfQWcCeI1+YqeM7ou4SiaQPFZ5iS0e5ut2/CiNnuLixHPmDQM6y+F+9GhdEM5Aa+DspruZhG3/7hlndEpV272Y2JSzT2DuV5hl7knVKc6y1heTcl4zuKNj2iM3rur+10gsYgV1I7p9a1+93dWxSnTiyks9eR4Dv0I5afHEyMo2s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573819422; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=a2OZdk7563iLUARM5EOhOGx899f4SgXMW++MBf+upzw=; b=GjGqn37Kr5GT3W71OG5C/bnkXuXjzeNXSwhE5zuL5pXCbh5GjbTOw9Rt4vYNL5gTtHzRSizqMlABAr0Ab8zoaavzMoMKgQIxh0N1o+JhK9veEvKrRqa8ZnXQ8aM6x5G99g9kXokLFrXv8cKhqRnxdNvx8sl/3TcYVk3Py57sq6Y= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1573819422646165.74999746212518; Fri, 15 Nov 2019 04:03:42 -0800 (PST) Received: from localhost ([::1]:38050 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iVaKC-00021O-6V for importer@patchew.org; Fri, 15 Nov 2019 07:03:40 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:40003) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iVaAx-0001pD-V7 for qemu-devel@nongnu.org; Fri, 15 Nov 2019 06:54:09 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iVaAw-0006ZC-MD for qemu-devel@nongnu.org; Fri, 15 Nov 2019 06:54:07 -0500 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:43874 helo=mx0a-001b2d01.pphosted.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iVaAw-0006Wc-CM for qemu-devel@nongnu.org; Fri, 15 Nov 2019 06:54:06 -0500 Received: from pps.filterd (m0098417.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id xAFBqRAO113839 for ; Fri, 15 Nov 2019 06:54:04 -0500 Received: from e06smtp02.uk.ibm.com (e06smtp02.uk.ibm.com [195.75.94.98]) by mx0a-001b2d01.pphosted.com with ESMTP id 2w9jwrbhnh-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 15 Nov 2019 06:54:04 -0500 Received: from localhost by e06smtp02.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 15 Nov 2019 11:54:02 -0000 Received: from b06cxnps4075.portsmouth.uk.ibm.com (9.149.109.197) by e06smtp02.uk.ibm.com (192.168.101.132) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Fri, 15 Nov 2019 11:54:00 -0000 Received: from d06av25.portsmouth.uk.ibm.com (d06av25.portsmouth.uk.ibm.com [9.149.105.61]) by b06cxnps4075.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id xAFBrxeX42926308 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 15 Nov 2019 11:53:59 GMT Received: from d06av25.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 08F4911C050; Fri, 15 Nov 2019 11:53:59 +0000 (GMT) Received: from d06av25.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id CB6CB11C04C; Fri, 15 Nov 2019 11:53:58 +0000 (GMT) Received: from bahia.lan (unknown [9.145.70.126]) by d06av25.portsmouth.uk.ibm.com (Postfix) with ESMTP; Fri, 15 Nov 2019 11:53:58 +0000 (GMT) Subject: [PATCH for-5.0 6/8] ppc/pnv: Link "chip" property to PnvHomer::chip pointer From: Greg Kurz To: David Gibson , =?utf-8?q?C=C3=A9dric?= Le Goater Date: Fri, 15 Nov 2019 12:53:58 +0100 In-Reply-To: <157381880498.136087.3775284829737989585.stgit@bahia.lan> References: <157381880498.136087.3775284829737989585.stgit@bahia.lan> User-Agent: StGit/unknown-version MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 x-cbid: 19111511-0008-0000-0000-0000032F42EB X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 19111511-0009-0000-0000-00004A4E554E Message-Id: <157381883845.136087.16856557105801964895.stgit@bahia.lan> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,18.0.572 definitions=2019-11-15_03:2019-11-15,2019-11-15 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 phishscore=0 spamscore=0 mlxscore=0 malwarescore=0 clxscore=1034 mlxlogscore=803 lowpriorityscore=0 bulkscore=0 suspectscore=0 priorityscore=1501 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-1910280000 definitions=main-1911150112 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-Received-From: 148.163.158.5 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-ppc@nongnu.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" The homer object has both a pointer and a "chip" property pointing to the chip object. Confusing bugs could arise if these ever go out of sync. Change the property definition so that it explicitely sets the pointer. Signed-off-by: Greg Kurz --- hw/ppc/pnv.c | 8 ++++---- hw/ppc/pnv_homer.c | 24 +++++++++++++----------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 96c5a23cd1eb..232c817452c0 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -904,8 +904,6 @@ static void pnv_chip_power8_instance_init(Object *obj) =20 object_initialize_child(obj, "homer", &chip8->homer, sizeof(chip8->ho= mer), TYPE_PNV8_HOMER, &error_abort, NULL); - object_property_add_const_link(OBJECT(&chip8->homer), "chip", obj, - &error_abort); } =20 static void pnv_chip_icp_realize(Pnv8Chip *chip8, Error **errp) @@ -1009,6 +1007,8 @@ static void pnv_chip_power8_realize(DeviceState *dev,= Error **errp) &chip8->occ.sram_regs); =20 /* HOMER */ + object_property_set_link(OBJECT(&chip8->homer), OBJECT(chip), "chip", + &error_abort); object_property_set_bool(OBJECT(&chip8->homer), true, "realized", &local_err); if (local_err) { @@ -1104,8 +1104,6 @@ static void pnv_chip_power9_instance_init(Object *obj) =20 object_initialize_child(obj, "homer", &chip9->homer, sizeof(chip9->ho= mer), TYPE_PNV9_HOMER, &error_abort, NULL); - object_property_add_const_link(OBJECT(&chip9->homer), "chip", obj, - &error_abort); } =20 static void pnv_chip_quad_realize(Pnv9Chip *chip9, Error **errp) @@ -1222,6 +1220,8 @@ static void pnv_chip_power9_realize(DeviceState *dev,= Error **errp) &chip9->occ.sram_regs); =20 /* HOMER */ + object_property_set_link(OBJECT(&chip9->homer), OBJECT(chip), "chip", + &error_abort); object_property_set_bool(OBJECT(&chip9->homer), true, "realized", &local_err); if (local_err) { diff --git a/hw/ppc/pnv_homer.c b/hw/ppc/pnv_homer.c index cc881a3b3289..cc08c1e34e2e 100644 --- a/hw/ppc/pnv_homer.c +++ b/hw/ppc/pnv_homer.c @@ -22,10 +22,10 @@ #include "exec/memory.h" #include "sysemu/cpus.h" #include "hw/qdev-core.h" +#include "hw/qdev-properties.h" #include "hw/ppc/pnv.h" #include "hw/ppc/pnv_homer.h" =20 - static bool core_max_array(PnvHomer *homer, hwaddr addr) { int i; @@ -229,22 +229,23 @@ static void pnv_homer_realize(DeviceState *dev, Error= **errp) { PnvHomer *homer =3D PNV_HOMER(dev); PnvHomerClass *hmrc =3D PNV_HOMER_GET_CLASS(homer); - Object *obj; - Error *local_err =3D NULL; - - obj =3D object_property_get_link(OBJECT(dev), "chip", &local_err); - if (!obj) { - error_propagate(errp, local_err); - error_prepend(errp, "required link 'chip' not found: "); - return; - } - homer->chip =3D PNV_CHIP(obj); + + assert(homer->chip); + /* homer region */ memory_region_init_io(&homer->regs, OBJECT(dev), hmrc->homer_ops, homer, "homer-main-memory", hmrc->homer_size); } =20 +static void pnv_homer_instance_init(Object *obj) +{ + object_property_add_link(obj, "chip", TYPE_PNV_CHIP, + (Object **) &PNV_HOMER(obj)->chip, + qdev_prop_allow_set_link_before_realize, + OBJ_PROP_LINK_STRONG, &error_abort); +} + static void pnv_homer_class_init(ObjectClass *klass, void *data) { DeviceClass *dc =3D DEVICE_CLASS(klass); @@ -258,6 +259,7 @@ static const TypeInfo pnv_homer_type_info =3D { .parent =3D TYPE_DEVICE, .instance_size =3D sizeof(PnvHomer), .class_init =3D pnv_homer_class_init, + .instance_init =3D pnv_homer_instance_init, .class_size =3D sizeof(PnvHomerClass), .abstract =3D true, }; From nobody Fri May 3 19:42:33 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1573819560; cv=none; d=zoho.com; s=zohoarc; b=VU1jWgGRzIh4eKGn9kKBIAnZnZpcAqwRTo3YdFqF0ljeVPb1ynQwbOzYinbdcGDNUUIjkVWMdD2fFqungnr1MdezAFwnmaDp8MVm/UaBkbG/dVKnuKh7UyB/3CSaR13OZEdffjmHoxJEQKcn5NIvIAn5nD4OATw2GPj/napBW6E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573819560; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=45sFEC2CEJTA1RRAHup/RekbYq6tL58kYYqkqxcGCX4=; b=bgo7gytCaULGE8bQ/bruOlO8VKfo/4E2hNseey+ny6x/qTNRBnZ1JtJrrr0zgfAJ2ip59aZ73zaKmYjt8iX58KP2fjxoSQ5yNeQxbHVy/loRbTGgSM9dKY6J7rxpMNgnB0EFBqTxcVpxbSUlixZiaNCqKF0a0vugYPCTYnfI95M= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1573819560912876.0204804299744; Fri, 15 Nov 2019 04:06:00 -0800 (PST) Received: from localhost ([::1]:38086 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iVaMR-0004qf-9x for importer@patchew.org; Fri, 15 Nov 2019 07:05:59 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:40036) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iVaB2-0001w6-AC for qemu-devel@nongnu.org; Fri, 15 Nov 2019 06:54:13 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iVaB0-0006bI-Sc for qemu-devel@nongnu.org; Fri, 15 Nov 2019 06:54:12 -0500 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:48610) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iVaB0-0006aw-Kg for qemu-devel@nongnu.org; Fri, 15 Nov 2019 06:54:10 -0500 Received: from pps.filterd (m0098394.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id xAFBqUPN034856 for ; Fri, 15 Nov 2019 06:54:09 -0500 Received: from e06smtp04.uk.ibm.com (e06smtp04.uk.ibm.com [195.75.94.100]) by mx0a-001b2d01.pphosted.com with ESMTP id 2w9nuxbs7w-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 15 Nov 2019 06:54:09 -0500 Received: from localhost by e06smtp04.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 15 Nov 2019 11:54:07 -0000 Received: from b06avi18626390.portsmouth.uk.ibm.com (9.149.26.192) by e06smtp04.uk.ibm.com (192.168.101.134) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Fri, 15 Nov 2019 11:54:05 -0000 Received: from d06av26.portsmouth.uk.ibm.com (d06av26.portsmouth.uk.ibm.com [9.149.105.62]) by b06avi18626390.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id xAFBrRH227197736 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 15 Nov 2019 11:53:27 GMT Received: from d06av26.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 849B8AE057; Fri, 15 Nov 2019 11:54:04 +0000 (GMT) Received: from d06av26.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 5FA89AE053; Fri, 15 Nov 2019 11:54:04 +0000 (GMT) Received: from bahia.lan (unknown [9.145.70.126]) by d06av26.portsmouth.uk.ibm.com (Postfix) with ESMTP; Fri, 15 Nov 2019 11:54:04 +0000 (GMT) Subject: [PATCH for-5.0 7/8] ppc/pnv: Link "chip" property to PnvCore::chip pointer From: Greg Kurz To: David Gibson , =?utf-8?q?C=C3=A9dric?= Le Goater Date: Fri, 15 Nov 2019 12:54:04 +0100 In-Reply-To: <157381880498.136087.3775284829737989585.stgit@bahia.lan> References: <157381880498.136087.3775284829737989585.stgit@bahia.lan> User-Agent: StGit/unknown-version MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 x-cbid: 19111511-0016-0000-0000-000002C3E4A8 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 19111511-0017-0000-0000-000033258BA6 Message-Id: <157381884403.136087.1106071650789146002.stgit@bahia.lan> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,18.0.572 definitions=2019-11-15_03:2019-11-15,2019-11-15 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 bulkscore=0 phishscore=0 mlxscore=0 malwarescore=0 spamscore=0 clxscore=1034 lowpriorityscore=0 mlxlogscore=737 impostorscore=0 suspectscore=0 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-1910280000 definitions=main-1911150112 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-Received-From: 148.163.156.1 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-ppc@nongnu.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" The core object has both a pointer and a "chip" property pointing to the chip object. Confusing bugs could arise if these ever go out of sync. Change the property definition so that it explicitely sets the pointer. Signed-off-by: Greg Kurz --- hw/ppc/pnv.c | 4 ++-- hw/ppc/pnv_core.c | 18 ++++++++++-------- include/hw/ppc/pnv_core.h | 2 +- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 232c817452c0..8851875bcfd7 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -1326,8 +1326,8 @@ static void pnv_chip_core_realize(PnvChip *chip, Erro= r **errp) object_property_set_int(OBJECT(pnv_core), pcc->core_pir(chip, core_hwid), "pir", &error_fatal); - object_property_add_const_link(OBJECT(pnv_core), "chip", - OBJECT(chip), &error_fatal); + object_property_set_link(OBJECT(pnv_core), OBJECT(chip), "chip", + &error_abort); object_property_set_bool(OBJECT(pnv_core), true, "realized", &error_fatal); =20 diff --git a/hw/ppc/pnv_core.c b/hw/ppc/pnv_core.c index 61b3d3ce2250..56d185f6290d 100644 --- a/hw/ppc/pnv_core.c +++ b/hw/ppc/pnv_core.c @@ -217,15 +217,8 @@ static void pnv_core_realize(DeviceState *dev, Error *= *errp) void *obj; int i, j; char name[32]; - Object *chip; =20 - chip =3D object_property_get_link(OBJECT(dev), "chip", &local_err); - if (!chip) { - error_propagate_prepend(errp, local_err, - "required link 'chip' not found: "); - return; - } - pc->chip =3D PNV_CHIP(chip); + assert(pc->chip); =20 pc->threads =3D g_new(PowerPCCPU *, cc->nr_threads); for (i =3D 0; i < cc->nr_threads; i++) { @@ -323,6 +316,14 @@ static void pnv_core_class_init(ObjectClass *oc, void = *data) dc->props =3D pnv_core_properties; } =20 +static void pnv_core_instance_init(Object *obj) +{ + object_property_add_link(obj, "chip", TYPE_PNV_CHIP, + (Object **) &PNV_CORE(obj)->chip, + qdev_prop_allow_set_link_before_realize, + OBJ_PROP_LINK_STRONG, &error_abort); +} + #define DEFINE_PNV_CORE_TYPE(family, cpu_model) \ { \ .parent =3D TYPE_PNV_CORE, \ @@ -335,6 +336,7 @@ static const TypeInfo pnv_core_infos[] =3D { .name =3D TYPE_PNV_CORE, .parent =3D TYPE_CPU_CORE, .instance_size =3D sizeof(PnvCore), + .instance_init =3D pnv_core_instance_init, .class_size =3D sizeof(PnvCoreClass), .class_init =3D pnv_core_class_init, .abstract =3D true, diff --git a/include/hw/ppc/pnv_core.h b/include/hw/ppc/pnv_core.h index 55eee95104da..fce6d8d9b31b 100644 --- a/include/hw/ppc/pnv_core.h +++ b/include/hw/ppc/pnv_core.h @@ -36,11 +36,11 @@ typedef struct PnvChip PnvChip; typedef struct PnvCore { /*< private >*/ CPUCore parent_obj; + PnvChip *chip; =20 /*< public >*/ PowerPCCPU **threads; uint32_t pir; - PnvChip *chip; =20 MemoryRegion xscom_regs; } PnvCore; From nobody Fri May 3 19:42:33 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1573819560; cv=none; d=zoho.com; s=zohoarc; b=BDxo2TTouJ/OMx5OfSA5XNWalI+g5wDfhHXczFfurnuijr8jGMzZSS8RHYw2Mtd//6T4fy6vbcfWJbsNiJHD/a/8Eh+l+tZ9qEb3MYAvSpmsVUuEamXg6Kc0BFzv8cFPHQDylT+8ilhU+PvFoJR+68azNL50ducm/yPe6it/GY0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573819560; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=+McDOKuGNoYu1FFgkSo6axuU8Xng0y+ubtqdst0dxiE=; b=oPy8EK/0kfbGlRITTtaU2soLHKG7PBZuteP8DoVYEYPNRW7majmi0P40Y8YQi2YIogoV42uzVvDXGEIzYBagDTDgYB9WR0zKJLvM+Ctu4KYgFqYRiEpuiIaWx1LNShjaAnXDmtmxNt/dCC9TCgnPae6cjjFGisKBN09LXYhu+MA= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1573819560362291.80378069353094; Fri, 15 Nov 2019 04:06:00 -0800 (PST) Received: from localhost ([::1]:38084 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iVaMP-0004nt-K7 for importer@patchew.org; Fri, 15 Nov 2019 07:05:57 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:40060) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iVaB8-000269-DF for qemu-devel@nongnu.org; Fri, 15 Nov 2019 06:54:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iVaB7-0006hV-0T for qemu-devel@nongnu.org; Fri, 15 Nov 2019 06:54:18 -0500 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:48738 helo=mx0a-001b2d01.pphosted.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iVaB6-0006h7-RO for qemu-devel@nongnu.org; Fri, 15 Nov 2019 06:54:16 -0500 Received: from pps.filterd (m0098420.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id xAFBpmQ2186314 for ; Fri, 15 Nov 2019 06:54:16 -0500 Received: from e06smtp01.uk.ibm.com (e06smtp01.uk.ibm.com [195.75.94.97]) by mx0b-001b2d01.pphosted.com with ESMTP id 2w9nsfmwy4-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 15 Nov 2019 06:54:16 -0500 Received: from localhost by e06smtp01.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 15 Nov 2019 11:54:14 -0000 Received: from b06avi18626390.portsmouth.uk.ibm.com (9.149.26.192) by e06smtp01.uk.ibm.com (192.168.101.131) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Fri, 15 Nov 2019 11:54:11 -0000 Received: from b06wcsmtp001.portsmouth.uk.ibm.com (b06wcsmtp001.portsmouth.uk.ibm.com [9.149.105.160]) by b06avi18626390.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id xAFBrXaC43516330 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 15 Nov 2019 11:53:33 GMT Received: from b06wcsmtp001.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 76B40A4062; Fri, 15 Nov 2019 11:54:10 +0000 (GMT) Received: from b06wcsmtp001.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 06B2FA405C; Fri, 15 Nov 2019 11:54:10 +0000 (GMT) Received: from bahia.lan (unknown [9.145.70.126]) by b06wcsmtp001.portsmouth.uk.ibm.com (Postfix) with ESMTP; Fri, 15 Nov 2019 11:54:09 +0000 (GMT) Subject: [PATCH for-5.0 8/8] ppc/pnv: Link "chip" property to PnvXive::chip pointer From: Greg Kurz To: David Gibson , =?utf-8?q?C=C3=A9dric?= Le Goater Date: Fri, 15 Nov 2019 12:54:09 +0100 In-Reply-To: <157381880498.136087.3775284829737989585.stgit@bahia.lan> References: <157381880498.136087.3775284829737989585.stgit@bahia.lan> User-Agent: StGit/unknown-version MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 x-cbid: 19111511-4275-0000-0000-0000037DFA42 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 19111511-4276-0000-0000-0000389163B2 Message-Id: <157381884958.136087.2386559512465741955.stgit@bahia.lan> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,18.0.572 definitions=2019-11-15_03:2019-11-15,2019-11-15 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 adultscore=0 spamscore=0 mlxscore=0 lowpriorityscore=0 bulkscore=0 clxscore=1034 malwarescore=0 mlxlogscore=395 priorityscore=1501 impostorscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-1910280000 definitions=main-1911150112 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-Received-From: 148.163.158.5 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-ppc@nongnu.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" The XIVE object has both a pointer and a "chip" property pointing to the chip object. Confusing bugs could arise if these ever go out of sync. Change the property definition so that it explicitely sets the pointer. While here, rename pnv_xive_init() to pnv_xive_instance_init() for clarity. Signed-off-by: Greg Kurz --- hw/intc/pnv_xive.c | 21 +++++++++------------ hw/ppc/pnv.c | 4 ++-- include/hw/ppc/pnv.h | 2 +- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/hw/intc/pnv_xive.c b/hw/intc/pnv_xive.c index 6aa7aeed6f83..158d16b328e3 100644 --- a/hw/intc/pnv_xive.c +++ b/hw/intc/pnv_xive.c @@ -1651,7 +1651,7 @@ static void pnv_xive_reset(void *dev) } } =20 -static void pnv_xive_init(Object *obj) +static void pnv_xive_instance_init(Object *obj) { PnvXive *xive =3D PNV_XIVE(obj); =20 @@ -1661,6 +1661,12 @@ static void pnv_xive_init(Object *obj) object_initialize_child(obj, "end_source", &xive->end_source, sizeof(xive->end_source), TYPE_XIVE_END_SOURCE, &error_abort, NULL); + + /* The PnvChip id identifies the XIVE interrupt controller. */ + object_property_add_link(obj, "chip", TYPE_PNV_CHIP, + (Object **) &PNV_XIVE(obj)->chip, + qdev_prop_allow_set_link_before_realize, + OBJ_PROP_LINK_STRONG, &error_abort); } =20 /* @@ -1675,17 +1681,8 @@ static void pnv_xive_realize(DeviceState *dev, Error= **errp) XiveSource *xsrc =3D &xive->ipi_source; XiveENDSource *end_xsrc =3D &xive->end_source; Error *local_err =3D NULL; - Object *obj; =20 - obj =3D object_property_get_link(OBJECT(dev), "chip", &local_err); - if (!obj) { - error_propagate(errp, local_err); - error_prepend(errp, "required link 'chip' not found: "); - return; - } - - /* The PnvChip id identifies the XIVE interrupt controller. */ - xive->chip =3D PNV_CHIP(obj); + assert(xive->chip); =20 /* * The XiveSource and XiveENDSource objects are realized with the @@ -1829,7 +1826,7 @@ static void pnv_xive_class_init(ObjectClass *klass, v= oid *data) static const TypeInfo pnv_xive_info =3D { .name =3D TYPE_PNV_XIVE, .parent =3D TYPE_XIVE_ROUTER, - .instance_init =3D pnv_xive_init, + .instance_init =3D pnv_xive_instance_init, .instance_size =3D sizeof(PnvXive), .class_init =3D pnv_xive_class_init, .interfaces =3D (InterfaceInfo[]) { diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 8851875bcfd7..d7130c3304f0 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -1088,8 +1088,6 @@ static void pnv_chip_power9_instance_init(Object *obj) =20 object_initialize_child(obj, "xive", &chip9->xive, sizeof(chip9->xive), TYPE_PNV_XIVE, &error_abort, NULL); - object_property_add_const_link(OBJECT(&chip9->xive), "chip", obj, - &error_abort); =20 object_initialize_child(obj, "psi", &chip9->psi, sizeof(chip9->psi), TYPE_PNV9_PSI, &error_abort, NULL); @@ -1171,6 +1169,8 @@ static void pnv_chip_power9_realize(DeviceState *dev,= Error **errp) "pc-bar", &error_fatal); object_property_set_int(OBJECT(&chip9->xive), PNV9_XIVE_TM_BASE(chip), "tm-bar", &error_fatal); + object_property_set_link(OBJECT(&chip9->xive), OBJECT(chip), "chip", + &error_abort); object_property_set_bool(OBJECT(&chip9->xive), true, "realized", &local_err); if (local_err) { diff --git a/include/hw/ppc/pnv.h b/include/hw/ppc/pnv.h index 5ecd3ba6ed24..d82484ecf669 100644 --- a/include/hw/ppc/pnv.h +++ b/include/hw/ppc/pnv.h @@ -87,9 +87,9 @@ typedef struct Pnv8Chip { typedef struct Pnv9Chip { /*< private >*/ PnvChip parent_obj; + PnvXive xive; =20 /*< public >*/ - PnvXive xive; Pnv9Psi psi; PnvLpcController lpc; PnvOCC occ;