From nobody Tue Feb 10 10:07:58 2026 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=1573833846; cv=none; d=zoho.com; s=zohoarc; b=Wr5ItKe/YQnYSZkrB0eGu2IUvf1RrlAm10VaSc7+s2L0mxmEkp9pP/E81IaxC2FQbq9PHZn0G7StqKLvDMoSZX9eljo7Kmz5ts3FiAdNj5nGO3q1vRoIdnVrVcWIMN3UK5d5AsKQhzoqBsTmQYPx2pyjaUto8PSv2kYj+3B1c9E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573833846; 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=zTeZ8eL1Dei+jPy+a++rNN6GrC+ACqroAQC3UIcEDvM=; b=XWX8z6QCr5pC/86v4zbmWQGQ1GdVkfoz/wUVOt8q4SlQzJvyt1p7IiJ6pkhAwK+cLjrtOrpmdUcjq4y1ZwvdaGZXwsW3t42njDVurCQY/JjBE3uIuhfNyEEPlHRRZktJokSHCjA8w/der8vRopO8aGt8VbVYPsC4zDQ2OVuflfo= 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 1573833846825140.11810482800297; Fri, 15 Nov 2019 08:04:06 -0800 (PST) Received: from localhost ([::1]:41204 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iVe4r-0005oT-9y for importer@patchew.org; Fri, 15 Nov 2019 11:04:05 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:47206) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iVdwz-0005KM-EL for qemu-devel@nongnu.org; Fri, 15 Nov 2019 10:55:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iVdwx-0003dt-CF for qemu-devel@nongnu.org; Fri, 15 Nov 2019 10:55:57 -0500 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:60484) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iVdwx-0003dc-6u for qemu-devel@nongnu.org; Fri, 15 Nov 2019 10:55:55 -0500 Received: from pps.filterd (m0127361.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id xAFFgYUV128211 for ; Fri, 15 Nov 2019 10:55:54 -0500 Received: from e06smtp07.uk.ibm.com (e06smtp07.uk.ibm.com [195.75.94.103]) by mx0a-001b2d01.pphosted.com with ESMTP id 2w9ntpay49-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 15 Nov 2019 10:55:54 -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 15:55:52 -0000 Received: from b06cxnps4075.portsmouth.uk.ibm.com (9.149.109.197) 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 15:55:50 -0000 Received: from d06av22.portsmouth.uk.ibm.com (d06av22.portsmouth.uk.ibm.com [9.149.105.58]) by b06cxnps4075.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id xAFFtnVX23068904 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 15 Nov 2019 15:55:49 GMT Received: from d06av22.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 741174C044; Fri, 15 Nov 2019 15:55:49 +0000 (GMT) Received: from d06av22.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 4CECD4C046; Fri, 15 Nov 2019 15:55:49 +0000 (GMT) Received: from bahia.lan (unknown [9.145.70.126]) by d06av22.portsmouth.uk.ibm.com (Postfix) with ESMTP; Fri, 15 Nov 2019 15:55:49 +0000 (GMT) Subject: [PATCH v2 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 16:55:49 +0100 In-Reply-To: <157383332103.165747.15204186097237659466.stgit@bahia.lan> References: <157383332103.165747.15204186097237659466.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: 19111515-0028-0000-0000-000003B7402F X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 19111515-0029-0000-0000-0000247A5268 Message-Id: <157383334894.165747.7617090757862105199.stgit@bahia.lan> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,18.0.572 definitions=2019-11-15_04:2019-11-15,2019-11-15 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 lowpriorityscore=0 suspectscore=0 malwarescore=0 impostorscore=0 priorityscore=1501 adultscore=0 clxscore=1034 mlxlogscore=766 spamscore=0 mlxscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-1910280000 definitions=main-1911150142 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 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 | 20 +++++++++----------- 2 files changed, 13 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..765c0a6ce595 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,12 +271,18 @@ static void pnv_occ_realize(DeviceState *dev, Error *= *errp) occ, "occ-common-area", poc->sram_size); } =20 +static Property pnv_occ_properties[] =3D { + DEFINE_PROP_LINK("psi", PnvOCC, psi, TYPE_PNV_PSI, PnvPsi *), + DEFINE_PROP_END_OF_LIST(), +}; + static void pnv_occ_class_init(ObjectClass *klass, void *data) { DeviceClass *dc =3D DEVICE_CLASS(klass); =20 dc->realize =3D pnv_occ_realize; dc->desc =3D "PowerNV OCC Controller"; + dc->props =3D pnv_occ_properties; } =20 static const TypeInfo pnv_occ_type_info =3D {