From nobody Tue Feb 10 20:48:09 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=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