From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784410680; cv=none; d=zohomail.com; s=zohoarc; b=MAOo39emsA0AbsBloZ3TbQf4Vzmy5uuoL6+cBGpTTIiOogZdlodU3FaZzpiLd38vo5QTcWfAIl9Lb2ALosdzACPG5JNGguUUaJe+pZ1U3i3cTtwU095k9hhe4kEjAh69Pn98PHx7/yW1FN7pJyXO2XyUc6WLB1WTPrI3w9XBG50= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784410680; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=IA4nALdfZQTZQBYqQKAyhaa+NqJeGaJYK8ZpoH8EEDo=; b=O/dYGzMkBJNrq6XGEjwu7eizDKOxnxvO7thLtisjPmbKVdqU4t7gykh98xh1kr7/20v/4c2q1Bu6cmfipQNeiRfcN2dGDKeE+hSw2QrOniGTTpB+MWF4OenrdNpTHqufdgXarIqAV9AWqjEFbV7MxTNoYlfwxlCvrFrOEEy1hvY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784410680768761.2336774302408; Sat, 18 Jul 2026 14:38:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCio-00005P-1O; Sat, 18 Jul 2026 17:37:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCim-0008W4-1C; Sat, 18 Jul 2026 17:37:20 -0400 Received: from pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com ([35.155.198.111]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCik-0001xW-0e; Sat, 18 Jul 2026 17:37:19 -0400 Received: from ip-10-5-0-115.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.0.115]) by internal-pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:37:14 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.111:2580] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.58.199:2525] with esmtp (Farcaster) id 2d57d8dc-b67e-476f-8e56-f516b25e8f20; Sat, 18 Jul 2026 21:37:14 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB002.ant.amazon.com (10.250.64.231) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:37:13 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:37:04 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784410638; x=1815946638; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=IA4nALdfZQTZQBYqQKAyhaa+NqJeGaJYK8ZpoH8EEDo=; b=cUdm8OyehPTCxb839VlFO12Aq+7f7TRPQWsm6E8rvKt9vqD4XgqXVlHx U/95+VmG2c7rLhAZ+zggw+fmRZ475ftYFwkQf0uoNIJz79HHvrD3i8NTl JzFfViF4BBzQ7v7tSKjPRVtVgz5miIChILmF6jVPZZzchU1Al4sKiE2ja JbHTEQKs4pQLUd6KmUEz3VCYjy+/uZOwMAGbjQHgNWrWPYhWsITZMfr4m HXLX0bbO8CqjuEac1xz2iDY2wZd20HFAU4s3lk4HebZKNQ9xzBdE6wSGI tnX9zoWBdUBaq6OMrfaSwiR2MZ/0QPxrKd+m/dBq0Nfg0N5s/Uf7D6lOy Q==; X-CSE-ConnectionGUID: TIgUOO8ERKOQTOsykgQreg== X-CSE-MsgGUID: mLR7Sn1HREScAq49dTgluw== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23816217" X-Farcaster-Flow-ID: 2d57d8dc-b67e-476f-8e56-f516b25e8f20 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 001/137] qom: Introduce object_new_child() Date: Sat, 18 Jul 2026 21:34:36 +0000 Message-ID: <20260718213652.37673-2-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D031UWA001.ant.amazon.com (10.13.139.88) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=35.155.198.111; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784410686378158500 Content-Type: text/plain; charset="utf-8" We already have two ways of creating a QOM object with a parent set from birth: object_initialize_child() for objects embedded in the parent struct, and object_new_with_props() for heap-allocated objects that also want a list of string properties applied. What we do not have is the plain heap-allocated dual of object_initialize_child(): create the object, add it as a child<> of a given parent under a given name, and hand the reference to the parent. Board and composite-device code that heap-allocates children today therefore either open-codes object_new()+object_property_add_child() +object_unref(), or skips the parenting step entirely and lets device_set_realized() dump the object into /machine/unattached. Add object_new_child(parent, id, typename) as that missing primitive. The reference created by object_new() is transferred to the parent's child<> property, so on return the sole reference is held by @parent and the caller does not need to unref. Later patches build the qdev and per-bus creation helpers on top of this. @id must be a valid QOM child<> property name: non-empty and without the "/" QOM path separator. It may contain the "[*]" auto-index suffix; the qdev id_wellformed() grammar does not apply here. The compiler enforces non-NULL arguments via __attribute__((nonnull)) instead of runtime asserts, as suggested by Richard and Peter. Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ Suggested-by: Markus Armbruster Reviewed-by: Richard Henderson AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- include/qom/object.h | 32 ++++++++++++++++++++++++++++++++ qom/object.c | 12 ++++++++++++ 2 files changed, 44 insertions(+) diff --git a/include/qom/object.h b/include/qom/object.h index 11f55613fc..299673d040 100644 --- a/include/qom/object.h +++ b/include/qom/object.h @@ -632,6 +632,38 @@ Object *object_new_with_class(ObjectClass *klass); */ Object *object_new(const char *typename); =20 +/** + * object_new_child: + * @parent: the QOM composition-tree parent + * @id: the child<> property name; the object's canonical QOM path + * becomes @parent's path plus "/" plus @id + * @typename: the name of the type of the object to instantiate + * + * Create a heap-allocated object and immediately add it to the QOM + * composition tree as a child of @parent. + * + * This is the heap-allocated dual of object_initialize_child(): use + * this when the child is a pointer member of the parent, and use + * object_initialize_child() when the child is embedded in the parent + * struct. See also object_new_with_props() for the variant that + * additionally sets a list of properties. + * + * The reference returned by object_new() is transferred to the child<> + * property of @parent, so the object has a reference count of 1 held + * by @parent, and the caller does not need to unref. + * + * The @id assert is a sanity check on the caller's string literal; + * the authoritative uniqueness check is object_property_add_child(), + * which will error_abort() on a duplicate @id under @parent. Use + * the "[*]" auto-index suffix when multiple children of the same + * kind may be created. + * + * Returns: the newly allocated, instantiated and parented object. + */ +Object *object_new_child(Object *parent, const char *id, + const char *typename) + __attribute__((nonnull(1, 2, 3), returns_nonnull)); + /** * object_new_with_props: * @typename: The name of the type of the object to instantiate. diff --git a/qom/object.c b/qom/object.c index f79b2cf361..64b0faf1f5 100644 --- a/qom/object.c +++ b/qom/object.c @@ -718,6 +718,18 @@ Object *object_new(const char *typename) return object_new_with_type(ti); } =20 +Object *object_new_child(Object *parent, const char *id, + const char *typename) +{ + Object *obj; + + g_assert(id[0] && !strchr(id, '/')); + + obj =3D object_new(typename); + object_property_add_child(parent, id, obj); + object_unref(obj); + return obj; +} =20 Object *object_new_with_props(const char *typename, Object *parent, --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784410706; cv=none; d=zohomail.com; s=zohoarc; b=CS9MDQzCrzOdffwNBFN6uLpBgccQtMbrmoM9LRA+5sbW87REWJesU80msoA6ChRi6gyeR6b1YAFO2qMuN8O0DAluPHP4Wu3Sh+NGvgfb1bwkAp0jS9SxLyrSB3J59f6N0c9E+xbvEwtv4sHNYgXLR1vi+wLSLfl5QlMldd50OgM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784410706; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=NF4gg8dylRsYmR2hq13oa0tNF6iyBeAWx1wOgnMx68E=; b=l+8WuH59WXVjc87RgBdu+NTIMoBlf3azTHh8uTtUX2rNVYoIgE1kB1w5HEL2pyFLrCYgqk2Dk1cO9c2jNwUbUCSFkCX5Jdx8qxHKIul8ya+3Rkqq/ePlHK9HIpSVez1ENhknyg7XqvYZOxl5Roae+IY0Ubp7rkMafnDs2WNNvwM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784410706616671.437196383032; Sat, 18 Jul 2026 14:38:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCj0-00008P-US; Sat, 18 Jul 2026 17:37:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCiy-00007S-RD; Sat, 18 Jul 2026 17:37:32 -0400 Received: from pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com ([35.155.198.111]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCit-0001xW-4v; Sat, 18 Jul 2026 17:37:32 -0400 Received: from ip-10-5-0-115.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.0.115]) by internal-pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:37:24 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.234:3439] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.29.147:2525] with esmtp (Farcaster) id 449da22a-34c7-4c7b-a340-5315373eb181; Sat, 18 Jul 2026 21:37:24 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA002.ant.amazon.com (10.250.64.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:37:23 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:37:13 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784410647; x=1815946647; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=NF4gg8dylRsYmR2hq13oa0tNF6iyBeAWx1wOgnMx68E=; b=Kypun4JdcqZAsRsdEwA3xq05wuUe9M9PA+s3Bx27h06u8jK6wQSStd7r UkHPMfIfSuGapg3LSFY+2aasw7QM9kr5W/A1CfP1zKXFvcHSS92L2mBrY O4/q6QO8me4ftDjQRTaAAoC+g62Y8vPVH8jNq10cIDTSYHyJK4Y0uc5Qt oNoJvEMefQdF3UTyE3re5yGMMCuV04jbzCP78hGD7aTPIFfmI+CZVAkGP gcFDM6DMkFsd5qUXTbx06HX3RWuQC7yKgFX1SXL1ApvZDP3irglwtthKu hP5VhffoEPaEWPzuLD0JuE5HaU/Alb3xPrHEhMD4/DYjfAgGIMHCj6PIi w==; X-CSE-ConnectionGUID: HeLorI/dQ+2Qd2UtAKBXEA== X-CSE-MsgGUID: j0UtcQYgRKmwlFc1kgxQfw== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23816222" X-Farcaster-Flow-ID: 449da22a-34c7-4c7b-a340-5315373eb181 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 002/137] qdev: Rename qdev_new()/qdev_try_new() to *_orphan() Date: Sat, 18 Jul 2026 21:34:37 +0000 Message-ID: <20260718213652.37673-3-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D031UWA001.ant.amazon.com (10.13.139.88) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=35.155.198.111; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784410711312158500 qdev_new() creates a device on the heap without a QOM parent. If the caller does not add one before realize, device_set_realized() dumps the device into /machine/unattached with an unstable canonical path. We want the short spelling qdev_new() to be the one that gets parenting right by construction. As a first step, rename the current functions to qdev_new_orphan() and qdev_try_new_orphan() tree-wide so that a subsequent commit can reintroduce qdev_new() with a mandatory (parent, id, type) signature. Purely mechanical, generated by spatch --sp-file scripts/coccinelle/qom-parent/qdev-new-orphan.cocci \ --in-place --include-headers --dir . or equivalently git ls-files '*.[ch]' '*.[ch].inc' '*.rst' '*.py' | \ grep -v '^subprojects/' | \ xargs sed -i 's/\bqdev_try_new\b/qdev_try_new_orphan/g; s/\bqdev_new\b/qdev_new_orphan/g' No functional change. Reviewed-by: Philippe Mathieu-Daud=C3=A9 AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/alpha/typhoon.c | 2 +- hw/arm/aspeed.c | 2 +- hw/arm/aspeed_soc_common.c | 4 +- hw/arm/bananapi_m2u.c | 2 +- hw/arm/cubieboard.c | 2 +- hw/arm/exynos4210.c | 12 ++-- hw/arm/imx25_pdk.c | 2 +- hw/arm/imx8mm-evk.c | 2 +- hw/arm/imx8mp-evk.c | 2 +- hw/arm/integratorcp.c | 8 +-- hw/arm/max78000fthr.c | 2 +- hw/arm/mcimx6ul-evk.c | 2 +- hw/arm/mcimx7d-sabre.c | 2 +- hw/arm/mps2-tz.c | 4 +- hw/arm/mps2.c | 4 +- hw/arm/msf2-som.c | 4 +- hw/arm/musicpal.c | 6 +- hw/arm/netduino2.c | 2 +- hw/arm/netduinoplus2.c | 2 +- hw/arm/npcm7xx_boards.c | 4 +- hw/arm/npcm8xx_boards.c | 2 +- hw/arm/olimex-stm32-h405.c | 2 +- hw/arm/omap1.c | 12 ++-- hw/arm/orangepi.c | 2 +- hw/arm/raspi.c | 2 +- hw/arm/realview.c | 18 ++--- hw/arm/sabrelite.c | 2 +- hw/arm/sbsa-ref.c | 20 +++--- hw/arm/stellaris.c | 20 +++--- hw/arm/stm32vldiscovery.c | 2 +- hw/arm/strongarm.c | 4 +- hw/arm/versatilepb.c | 14 ++-- hw/arm/vexpress.c | 14 ++-- hw/arm/virt.c | 24 +++---- hw/arm/xilinx_zynq.c | 26 +++---- hw/arm/xlnx-versal-virt.c | 2 +- hw/arm/xlnx-versal.c | 70 +++++++++---------- hw/arm/xlnx-zcu102.c | 6 +- hw/arm/xlnx-zynqmp.c | 2 +- hw/audio/intel-hda.c | 2 +- hw/audio/model.c | 2 +- hw/avr/atmega.c | 2 +- hw/block/fdc-sysbus.c | 4 +- hw/block/fdc.c | 2 +- hw/block/pflash_cfi01.c | 2 +- hw/block/pflash_cfi02.c | 2 +- hw/block/xen-block.c | 2 +- hw/char/exynos4210_uart.c | 2 +- hw/char/mcf_uart.c | 2 +- hw/char/mchp_pfsoc_mmuart.c | 2 +- hw/char/pl011.c | 2 +- hw/char/serial-mm.c | 2 +- hw/char/sifive_uart.c | 2 +- hw/char/spapr_vty.c | 2 +- hw/char/xen_console.c | 2 +- hw/core/qdev.c | 4 +- hw/core/sysbus.c | 2 +- hw/cxl/cxl-host.c | 2 +- hw/display/sm501.c | 2 +- hw/display/xlnx_dp.c | 4 +- hw/dma/rc4030.c | 2 +- hw/hexagon/hexagon_dsp.c | 4 +- hw/hexagon/virt.c | 6 +- hw/hppa/machine.c | 12 ++-- hw/i2c/core.c | 2 +- hw/i2c/smbus_eeprom.c | 2 +- hw/i386/microvm.c | 6 +- hw/i386/nitro_enclave.c | 4 +- hw/i386/pc.c | 2 +- hw/i386/pc_piix.c | 2 +- hw/i386/pc_q35.c | 2 +- hw/i386/pc_sysfw.c | 2 +- hw/i386/sgx.c | 2 +- hw/i386/x86-common.c | 6 +- hw/i3c/core.c | 2 +- hw/ide/ide-bus.c | 2 +- hw/intc/exynos4210_gic.c | 2 +- hw/intc/riscv_aclint.c | 4 +- hw/intc/riscv_aplic.c | 2 +- hw/intc/riscv_imsic.c | 2 +- hw/intc/s390_flic.c | 4 +- hw/intc/sifive_plic.c | 2 +- hw/isa/isa-bus.c | 6 +- hw/loongarch/virt.c | 18 ++--- hw/m68k/an5206.c | 2 +- hw/m68k/mcf_intc.c | 2 +- hw/m68k/next-cube.c | 2 +- hw/m68k/q800.c | 4 +- hw/m68k/virt.c | 10 +-- hw/mem/sparse-mem.c | 2 +- hw/microblaze/petalogix_ml605_mmu.c | 12 ++-- hw/microblaze/petalogix_s3adsp1800_mmu.c | 8 +-- hw/mips/boston.c | 4 +- hw/mips/jazz.c | 12 ++-- hw/mips/loongson3_virt.c | 6 +- hw/mips/malta.c | 4 +- hw/misc/empty_slot.c | 2 +- hw/misc/led.c | 2 +- hw/misc/sifive_e_prci.c | 2 +- hw/misc/sifive_test.c | 2 +- hw/net/lan9118.c | 2 +- hw/net/smc91c111.c | 2 +- hw/net/spapr_llan.c | 2 +- hw/net/xen_nic.c | 2 +- hw/nitro/machine.c | 4 +- hw/nitro/nitro-vsock-bus.c | 2 +- hw/nvme/ctrl.c | 2 +- hw/nvram/fw_cfg.c | 4 +- hw/or1k/or1k-sim.c | 6 +- hw/or1k/virt.c | 8 +-- hw/pci-bridge/pci_expander_bridge.c | 4 +- hw/pci-host/astro.c | 2 +- hw/pci-host/bonito.c | 2 +- hw/pci-host/pnv_phb4_pec.c | 2 +- hw/pci/pci.c | 2 +- hw/ppc/amigaone.c | 2 +- hw/ppc/e500.c | 22 +++--- hw/ppc/mac_newworld.c | 18 ++--- hw/ppc/mac_oldworld.c | 8 +-- hw/ppc/pnv.c | 4 +- hw/ppc/pnv_bmc.c | 2 +- hw/ppc/ppc440_bamboo.c | 4 +- hw/ppc/prep.c | 4 +- hw/ppc/sam460ex.c | 16 ++--- hw/ppc/spapr.c | 4 +- hw/ppc/spapr_irq.c | 2 +- hw/ppc/spapr_vio.c | 2 +- hw/ppc/virtex_ml507.c | 6 +- hw/remote/machine.c | 2 +- hw/riscv/boston-aia.c | 4 +- hw/riscv/microblaze-v-generic.c | 14 ++-- hw/riscv/microchip_pfsoc.c | 2 +- hw/riscv/sifive_u.c | 4 +- hw/riscv/virt.c | 8 +-- hw/rtc/sun4v-rtc.c | 2 +- hw/s390x/ap-bridge.c | 2 +- hw/s390x/css-bridge.c | 2 +- hw/s390x/s390-pci-bus.c | 2 +- hw/s390x/s390-virtio-ccw.c | 6 +- hw/scsi/lasi_ncr710.c | 2 +- hw/scsi/ncr53c710.c | 4 +- hw/scsi/scsi-bus.c | 2 +- hw/scsi/spapr_vscsi.c | 2 +- hw/sh4/r2d.c | 6 +- hw/sh4/sh7750.c | 4 +- hw/sparc/leon3.c | 10 +-- hw/sparc/sun4m.c | 38 +++++----- hw/sparc64/sun4u.c | 14 ++-- hw/ssi/ssi.c | 2 +- hw/tricore/tricore_testboard.c | 2 +- hw/ufs/lu.c | 2 +- hw/usb/bus.c | 4 +- hw/usb/dev-serial.c | 2 +- hw/vmapple/vmapple.c | 20 +++--- hw/xen/xen-bus.c | 2 +- hw/xen/xen-legacy-backend.c | 2 +- hw/xen/xen-pvh-common.c | 2 +- hw/xtensa/virt.c | 2 +- hw/xtensa/xtfpga.c | 2 +- include/hw/core/qdev.h | 14 ++-- include/hw/i2c/i2c.h | 2 +- include/hw/misc/unimp.h | 2 +- include/hw/ssi/ssi.h | 2 +- include/hw/usb/usb.h | 2 +- migration/migration.c | 2 +- net/net.c | 4 +- .../qom-parent/qdev-new-orphan.cocci | 18 +++++ system/qdev-monitor.c | 2 +- target/mips/cpu.c | 2 +- target/xtensa/cpu.c | 2 +- 170 files changed, 459 insertions(+), 441 deletions(-) create mode 100644 scripts/coccinelle/qom-parent/qdev-new-orphan.cocci diff --git a/hw/alpha/typhoon.c b/hw/alpha/typhoon.c index e32fed86f9..af40647ccd 100644 --- a/hw/alpha/typhoon.c +++ b/hw/alpha/typhoon.c @@ -830,7 +830,7 @@ PCIBus *typhoon_init(MemoryRegion *ram, qemu_irq *p_isa= _irq, PCIBus *b; int i; =20 - dev =3D qdev_new(TYPE_TYPHOON_PCI_HOST_BRIDGE); + dev =3D qdev_new_orphan(TYPE_TYPHOON_PCI_HOST_BRIDGE); =20 s =3D TYPHOON_PCI_HOST_BRIDGE(dev); phb =3D PCI_HOST_BRIDGE(dev); diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c index a48c442058..531e3ce276 100644 --- a/hw/arm/aspeed.c +++ b/hw/arm/aspeed.c @@ -90,7 +90,7 @@ static void sdhci_attach_drive(SDHCIState *sdhci, DriveIn= fo *dinfo, bool emmc, if (!dinfo) { return; } - card =3D qdev_new(emmc ? TYPE_EMMC : TYPE_SD_CARD); + card =3D qdev_new_orphan(emmc ? TYPE_EMMC : TYPE_SD_CARD); =20 /* * Force the boot properties of the eMMC device only when the diff --git a/hw/arm/aspeed_soc_common.c b/hw/arm/aspeed_soc_common.c index fd08793575..33f7f10531 100644 --- a/hw/arm/aspeed_soc_common.c +++ b/hw/arm/aspeed_soc_common.c @@ -81,7 +81,7 @@ bool aspeed_soc_dram_init(AspeedSoCState *s, Error **errp) * SoC has. */ if (ram_size < max_ram_size) { - DeviceState *dev =3D qdev_new(TYPE_UNIMPLEMENTED_DEVICE); + DeviceState *dev =3D qdev_new_orphan(TYPE_UNIMPLEMENTED_DEVICE); =20 qdev_prop_set_string(dev, "name", "ram-empty"); qdev_prop_set_uint64(dev, "size", max_ram_size - ram_size); @@ -128,7 +128,7 @@ void aspeed_board_init_flashes(AspeedSMCState *s, const= char *flashtype, DriveInfo *dinfo =3D drive_get(IF_MTD, 0, unit0 + i); DeviceState *dev; =20 - dev =3D qdev_new(flashtype); + dev =3D qdev_new_orphan(flashtype); if (dinfo) { qdev_prop_set_drive(dev, "drive", blk_by_legacy_dinfo(dinfo)); } diff --git a/hw/arm/bananapi_m2u.c b/hw/arm/bananapi_m2u.c index 9b468cd8ac..748db26d41 100644 --- a/hw/arm/bananapi_m2u.c +++ b/hw/arm/bananapi_m2u.c @@ -50,7 +50,7 @@ static void mmc_attach_drive(AwR40State *s, AwSdHostState= *mmc, int unit, exit(1); } =20 - carddev =3D qdev_new(TYPE_SD_CARD); + carddev =3D qdev_new_orphan(TYPE_SD_CARD); qdev_prop_set_drive_err(carddev, "drive", blk, &error_fatal); qdev_realize_and_unref(carddev, bus, &error_fatal); =20 diff --git a/hw/arm/cubieboard.c b/hw/arm/cubieboard.c index a643ae4e27..215741a194 100644 --- a/hw/arm/cubieboard.c +++ b/hw/arm/cubieboard.c @@ -89,7 +89,7 @@ static void cubieboard_init(MachineState *machine) bus =3D qdev_get_child_bus(DEVICE(a10), "sd-bus"); =20 /* Plug in SD card */ - carddev =3D qdev_new(TYPE_SD_CARD); + carddev =3D qdev_new_orphan(TYPE_SD_CARD); qdev_prop_set_drive_err(carddev, "drive", blk, &error_fatal); qdev_realize_and_unref(carddev, bus, &error_fatal); =20 diff --git a/hw/arm/exynos4210.c b/hw/arm/exynos4210.c index 5efe95030c..2b6e61abd0 100644 --- a/hw/arm/exynos4210.c +++ b/hw/arm/exynos4210.c @@ -519,7 +519,7 @@ static DeviceState *pl330_create(uint32_t base, OrIRQSt= ate *orgate, DeviceState *dev; int i; =20 - dev =3D qdev_new("pl330"); + dev =3D qdev_new_orphan("pl330"); object_property_set_link(OBJECT(dev), "memory", OBJECT(get_system_memory()), &error_fatal); @@ -687,7 +687,7 @@ static void exynos4210_realize(DeviceState *socdev, Err= or **errp) NULL); =20 /* Multi Core Timer */ - dev =3D qdev_new("exynos4210.mct"); + dev =3D qdev_new_orphan("exynos4210.mct"); busdev =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(busdev, &error_fatal); for (n =3D 0; n < 4; n++) { @@ -713,7 +713,7 @@ static void exynos4210_realize(DeviceState *socdev, Err= or **errp) i2c_irq =3D s->irq_table[exynos4210_get_irq(EXYNOS4210_HDMI_IN= TG, 1)]; } =20 - dev =3D qdev_new("exynos4210.i2c"); + dev =3D qdev_new_orphan("exynos4210.i2c"); busdev =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(busdev, &error_fatal); sysbus_connect_irq(busdev, 0, i2c_irq); @@ -757,7 +757,7 @@ static void exynos4210_realize(DeviceState *socdev, Err= or **errp) * public datasheet which is very similar (implementing * MMC Specification Version 4.0 being the only difference noted) */ - dev =3D qdev_new(TYPE_S3C_SDHCI); + dev =3D qdev_new_orphan(TYPE_S3C_SDHCI); qdev_prop_set_uint64(dev, "capareg", EXYNOS4210_SDHCI_CAPABILITIES= ); =20 busdev =3D SYS_BUS_DEVICE(dev); @@ -767,14 +767,14 @@ static void exynos4210_realize(DeviceState *socdev, E= rror **errp) =20 di =3D drive_get(IF_SD, 0, n); blk =3D di ? blk_by_legacy_dinfo(di) : NULL; - carddev =3D qdev_new(TYPE_SD_CARD); + carddev =3D qdev_new_orphan(TYPE_SD_CARD); qdev_prop_set_drive(carddev, "drive", blk); qdev_realize_and_unref(carddev, qdev_get_child_bus(dev, "sd-bus"), &error_fatal); } =20 /*** Display controller (FIMD) ***/ - dev =3D qdev_new("exynos4210.fimd"); + dev =3D qdev_new_orphan("exynos4210.fimd"); object_property_set_link(OBJECT(dev), "framebuffer-memory", OBJECT(system_mem), &error_fatal); busdev =3D SYS_BUS_DEVICE(dev); diff --git a/hw/arm/imx25_pdk.c b/hw/arm/imx25_pdk.c index 7ebd6c8eb9..6976652370 100644 --- a/hw/arm/imx25_pdk.c +++ b/hw/arm/imx25_pdk.c @@ -127,7 +127,7 @@ static void imx25_pdk_init(MachineState *machine) di =3D drive_get(IF_SD, 0, i); blk =3D di ? blk_by_legacy_dinfo(di) : NULL; bus =3D qdev_get_child_bus(DEVICE(&s->soc.esdhc[i]), "sd-bus"); - carddev =3D qdev_new(TYPE_SD_CARD); + carddev =3D qdev_new_orphan(TYPE_SD_CARD); qdev_prop_set_drive_err(carddev, "drive", blk, &error_fatal); qdev_realize_and_unref(carddev, bus, &error_fatal); } diff --git a/hw/arm/imx8mm-evk.c b/hw/arm/imx8mm-evk.c index 6b7774d3e2..ce7693ca7a 100644 --- a/hw/arm/imx8mm-evk.c +++ b/hw/arm/imx8mm-evk.c @@ -97,7 +97,7 @@ static void imx8mm_evk_init(MachineState *machine) =20 blk =3D blk_by_legacy_dinfo(di); bus =3D qdev_get_child_bus(DEVICE(&s->usdhc[i]), "sd-bus"); - carddev =3D qdev_new(TYPE_SD_CARD); + carddev =3D qdev_new_orphan(TYPE_SD_CARD); qdev_prop_set_drive_err(carddev, "drive", blk, &error_fatal); qdev_realize_and_unref(carddev, bus, &error_fatal); } diff --git a/hw/arm/imx8mp-evk.c b/hw/arm/imx8mp-evk.c index 16e9722d14..90cda63b49 100644 --- a/hw/arm/imx8mp-evk.c +++ b/hw/arm/imx8mp-evk.c @@ -110,7 +110,7 @@ static void imx8mp_evk_init(MachineState *machine) =20 blk =3D blk_by_legacy_dinfo(di); bus =3D qdev_get_child_bus(DEVICE(&s->soc.usdhc[i]), "sd-bus"); - carddev =3D qdev_new(TYPE_SD_CARD); + carddev =3D qdev_new_orphan(TYPE_SD_CARD); qdev_prop_set_drive_err(carddev, "drive", blk, &error_fatal); qdev_realize_and_unref(carddev, bus, &error_fatal); } diff --git a/hw/arm/integratorcp.c b/hw/arm/integratorcp.c index c25bbf3c82..8a56165cc2 100644 --- a/hw/arm/integratorcp.c +++ b/hw/arm/integratorcp.c @@ -621,7 +621,7 @@ static void integratorcp_init(MachineState *machine) 0, ram_size); memory_region_add_subregion(address_space_mem, 0x80000000, ram_alias); =20 - dev =3D qdev_new(TYPE_INTEGRATOR_CM); + dev =3D qdev_new_orphan(TYPE_INTEGRATOR_CM); qdev_prop_set_uint32(dev, "memsz", ram_size >> 20); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map((SysBusDevice *)dev, 0, 0x10000000); @@ -654,14 +654,14 @@ static void integratorcp_init(MachineState *machine) if (dinfo) { DeviceState *card; =20 - card =3D qdev_new(TYPE_SD_CARD); + card =3D qdev_new_orphan(TYPE_SD_CARD); qdev_prop_set_drive_err(card, "drive", blk_by_legacy_dinfo(dinfo), &error_fatal); qdev_realize_and_unref(card, qdev_get_child_bus(dev, "sd-bus"), &error_fatal); } =20 - dev =3D qdev_new("pl041"); + dev =3D qdev_new_orphan("pl041"); if (machine->audiodev) { qdev_prop_set_string(dev, "audiodev", machine->audiodev); } @@ -673,7 +673,7 @@ static void integratorcp_init(MachineState *machine) smc91c111_init(0xc8000000, pic[27]); } =20 - dev =3D qdev_new("pl110"); + dev =3D qdev_new_orphan("pl110"); object_property_set_link(OBJECT(dev), "framebuffer-memory", OBJECT(address_space_mem), &error_fatal); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); diff --git a/hw/arm/max78000fthr.c b/hw/arm/max78000fthr.c index 530ca9dd96..d2fb4c018b 100644 --- a/hw/arm/max78000fthr.c +++ b/hw/arm/max78000fthr.c @@ -26,7 +26,7 @@ static void max78000_init(MachineState *machine) sysclk =3D clock_new(OBJECT(machine), "SYSCLK"); clock_set_hz(sysclk, SYSCLK_FRQ); =20 - dev =3D qdev_new(TYPE_MAX78000_SOC); + dev =3D qdev_new_orphan(TYPE_MAX78000_SOC); object_property_add_child(OBJECT(machine), "soc", OBJECT(dev)); qdev_connect_clock_in(dev, "sysclk", sysclk); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); diff --git a/hw/arm/mcimx6ul-evk.c b/hw/arm/mcimx6ul-evk.c index 6e9d92b1f1..96309e1bfc 100644 --- a/hw/arm/mcimx6ul-evk.c +++ b/hw/arm/mcimx6ul-evk.c @@ -59,7 +59,7 @@ static void mcimx6ul_evk_init(MachineState *machine) di =3D drive_get(IF_SD, 0, i); blk =3D di ? blk_by_legacy_dinfo(di) : NULL; bus =3D qdev_get_child_bus(DEVICE(&s->usdhc[i]), "sd-bus"); - carddev =3D qdev_new(TYPE_SD_CARD); + carddev =3D qdev_new_orphan(TYPE_SD_CARD); qdev_prop_set_drive_err(carddev, "drive", blk, &error_fatal); qdev_realize_and_unref(carddev, bus, &error_fatal); } diff --git a/hw/arm/mcimx7d-sabre.c b/hw/arm/mcimx7d-sabre.c index a0ac647c3d..be9d0d6993 100644 --- a/hw/arm/mcimx7d-sabre.c +++ b/hw/arm/mcimx7d-sabre.c @@ -59,7 +59,7 @@ static void mcimx7d_sabre_init(MachineState *machine) di =3D drive_get(IF_SD, 0, i); blk =3D di ? blk_by_legacy_dinfo(di) : NULL; bus =3D qdev_get_child_bus(DEVICE(&s->usdhc[i]), "sd-bus"); - carddev =3D qdev_new(TYPE_SD_CARD); + carddev =3D qdev_new_orphan(TYPE_SD_CARD); qdev_prop_set_drive_err(carddev, "drive", blk, &error_fatal); qdev_realize_and_unref(carddev, bus, &error_fatal); } diff --git a/hw/arm/mps2-tz.c b/hw/arm/mps2-tz.c index f101c1b7c3..c0ab898f2e 100644 --- a/hw/arm/mps2-tz.c +++ b/hw/arm/mps2-tz.c @@ -508,7 +508,7 @@ static MemoryRegion *make_eth_dev(MPS2TZMachineState *m= ms, void *opaque, /* In hardware this is a LAN9220; the LAN9118 is software compatible * except that it doesn't support the checksum-offload feature. */ - mms->lan9118 =3D qdev_new(TYPE_LAN9118); + mms->lan9118 =3D qdev_new_orphan(TYPE_LAN9118); qemu_configure_nic_device(mms->lan9118, true, NULL); =20 s =3D SYS_BUS_DEVICE(mms->lan9118); @@ -535,7 +535,7 @@ static MemoryRegion *make_eth_usb(MPS2TZMachineState *m= ms, void *opaque, * In hardware this is a LAN9220; the LAN9118 is software compatible * except that it doesn't support the checksum-offload feature. */ - mms->lan9118 =3D qdev_new(TYPE_LAN9118); + mms->lan9118 =3D qdev_new_orphan(TYPE_LAN9118); qemu_configure_nic_device(mms->lan9118, true, NULL); =20 s =3D SYS_BUS_DEVICE(mms->lan9118); diff --git a/hw/arm/mps2.c b/hw/arm/mps2.c index ac9366d844..96af49e213 100644 --- a/hw/arm/mps2.c +++ b/hw/arm/mps2.c @@ -299,7 +299,7 @@ static void mps2_common_init(MachineState *machine) rxovrint =3D qdev_get_gpio_in(orgate_dev, i * 2 + 1); } =20 - dev =3D qdev_new(TYPE_CMSDK_APB_UART); + dev =3D qdev_new_orphan(TYPE_CMSDK_APB_UART); s =3D SYS_BUS_DEVICE(dev); qdev_prop_set_chr(dev, "chardev", serial_hd(i)); qdev_prop_set_uint32(dev, "pclk-frq", SYSCLK_FRQ); @@ -343,7 +343,7 @@ static void mps2_common_init(MachineState *machine) qdev_connect_gpio_out(txrx_orgate_dev, 0, qdev_get_gpio_in(armv7m, uart_txrx_irqno= [i])); =20 - dev =3D qdev_new(TYPE_CMSDK_APB_UART); + dev =3D qdev_new_orphan(TYPE_CMSDK_APB_UART); s =3D SYS_BUS_DEVICE(dev); qdev_prop_set_chr(dev, "chardev", serial_hd(i)); qdev_prop_set_uint32(dev, "pclk-frq", SYSCLK_FRQ); diff --git a/hw/arm/msf2-som.c b/hw/arm/msf2-som.c index 1ada1a1361..bb1e774764 100644 --- a/hw/arm/msf2-som.c +++ b/hw/arm/msf2-som.c @@ -59,7 +59,7 @@ static void emcraft_sf2_s2s010_init(MachineState *machine) &error_fatal); memory_region_add_subregion(sysmem, DDR_BASE_ADDRESS, ddr); =20 - dev =3D qdev_new(TYPE_MSF2_SOC); + dev =3D qdev_new_orphan(TYPE_MSF2_SOC); object_property_add_child(OBJECT(machine), "soc", OBJECT(dev)); qdev_prop_set_string(dev, "part-name", "M2S010"); qdev_prop_set_uint64(dev, "eNVM-size", M2S010_ENVM_SIZE); @@ -83,7 +83,7 @@ static void emcraft_sf2_s2s010_init(MachineState *machine) =20 /* Attach SPI flash to SPI0 controller */ spi_bus =3D qdev_get_child_bus(dev, "spi0"); - spi_flash =3D qdev_new("s25sl12801"); /* Spansion S25FL128SDPBHICO */ + spi_flash =3D qdev_new_orphan("s25sl12801"); /* Spansion S25FL128SDPBH= ICO */ qdev_prop_set_uint8(spi_flash, "spansion-cr2nv", 0x8); if (dinfo) { qdev_prop_set_drive_err(spi_flash, "drive", diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c index 69e83bdd97..6dd18a67b2 100644 --- a/hw/arm/musicpal.c +++ b/hw/arm/musicpal.c @@ -1249,7 +1249,7 @@ static void musicpal_init(MachineState *machine) qdev_get_gpio_in(pic, MP_TIMER4_IRQ), NULL); =20 /* Logically OR both UART IRQs together */ - uart_orgate =3D qdev_new(TYPE_OR_IRQ); + uart_orgate =3D qdev_new_orphan(TYPE_OR_IRQ); object_property_set_int(OBJECT(uart_orgate), "num-lines", 2, &error_fa= tal); qdev_realize_and_unref(uart_orgate, NULL, &error_fatal); qdev_connect_gpio_out(uart_orgate, 0, @@ -1288,7 +1288,7 @@ static void musicpal_init(MachineState *machine) } sysbus_create_simple(TYPE_MV88W8618_FLASHCFG, MP_FLASHCFG_BASE, NULL); =20 - dev =3D qdev_new(TYPE_MV88W8618_ETH); + dev =3D qdev_new_orphan(TYPE_MV88W8618_ETH); qemu_configure_nic_device(dev, true, "mv88w8618"); object_property_set_link(OBJECT(dev), "dma-memory", OBJECT(get_system_memory()), &error_fatal); @@ -1333,7 +1333,7 @@ static void musicpal_init(MachineState *machine) } i2c_slave_realize_and_unref(wm8750_dev, i2c, &error_abort); =20 - dev =3D qdev_new(TYPE_MV88W8618_AUDIO); + dev =3D qdev_new_orphan(TYPE_MV88W8618_AUDIO); s =3D SYS_BUS_DEVICE(dev); object_property_set_link(OBJECT(dev), "wm8750", OBJECT(wm8750_dev), NULL); diff --git a/hw/arm/netduino2.c b/hw/arm/netduino2.c index c32deaf43b..cee887c194 100644 --- a/hw/arm/netduino2.c +++ b/hw/arm/netduino2.c @@ -44,7 +44,7 @@ static void netduino2_init(MachineState *machine) sysclk =3D clock_new(OBJECT(machine), "SYSCLK"); clock_set_hz(sysclk, SYSCLK_FRQ); =20 - dev =3D qdev_new(TYPE_STM32F205_SOC); + dev =3D qdev_new_orphan(TYPE_STM32F205_SOC); object_property_add_child(OBJECT(machine), "soc", OBJECT(dev)); qdev_connect_clock_in(dev, "sysclk", sysclk); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); diff --git a/hw/arm/netduinoplus2.c b/hw/arm/netduinoplus2.c index a90dcbe8c2..65251dfe96 100644 --- a/hw/arm/netduinoplus2.c +++ b/hw/arm/netduinoplus2.c @@ -44,7 +44,7 @@ static void netduinoplus2_init(MachineState *machine) sysclk =3D clock_new(OBJECT(machine), "SYSCLK"); clock_set_hz(sysclk, SYSCLK_FRQ); =20 - dev =3D qdev_new(TYPE_STM32F405_SOC); + dev =3D qdev_new_orphan(TYPE_STM32F405_SOC); object_property_add_child(OBJECT(machine), "soc", OBJECT(dev)); qdev_connect_clock_in(dev, "sysclk", sysclk); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); diff --git a/hw/arm/npcm7xx_boards.c b/hw/arm/npcm7xx_boards.c index 57a8d3186e..9e5d5f08f9 100644 --- a/hw/arm/npcm7xx_boards.c +++ b/hw/arm/npcm7xx_boards.c @@ -84,7 +84,7 @@ static void npcm7xx_connect_flash(NPCM7xxFIUState *fiu, i= nt cs_no, DeviceState *flash; qemu_irq flash_cs; =20 - flash =3D qdev_new(flash_type); + flash =3D qdev_new_orphan(flash_type); if (dinfo) { qdev_prop_set_drive(flash, "drive", blk_by_legacy_dinfo(dinfo)); } @@ -113,7 +113,7 @@ static void sdhci_attach_drive(SDHCIState *sdhci, int u= nit) exit(1); } =20 - DeviceState *carddev =3D qdev_new(TYPE_SD_CARD); + DeviceState *carddev =3D qdev_new_orphan(TYPE_SD_CARD); qdev_prop_set_drive_err(carddev, "drive", blk, &error_fatal); qdev_realize_and_unref(carddev, bus, &error_fatal); } diff --git a/hw/arm/npcm8xx_boards.c b/hw/arm/npcm8xx_boards.c index 042a928857..10df2d614c 100644 --- a/hw/arm/npcm8xx_boards.c +++ b/hw/arm/npcm8xx_boards.c @@ -61,7 +61,7 @@ static void npcm8xx_connect_flash(NPCM7xxFIUState *fiu, i= nt cs_no, DeviceState *flash; qemu_irq flash_cs; =20 - flash =3D qdev_new(flash_type); + flash =3D qdev_new_orphan(flash_type); if (dinfo) { qdev_prop_set_drive(flash, "drive", blk_by_legacy_dinfo(dinfo)); } diff --git a/hw/arm/olimex-stm32-h405.c b/hw/arm/olimex-stm32-h405.c index e801e4308e..70f7791695 100644 --- a/hw/arm/olimex-stm32-h405.c +++ b/hw/arm/olimex-stm32-h405.c @@ -47,7 +47,7 @@ static void olimex_stm32_h405_init(MachineState *machine) sysclk =3D clock_new(OBJECT(machine), "SYSCLK"); clock_set_hz(sysclk, SYSCLK_FRQ); =20 - dev =3D qdev_new(TYPE_STM32F405_SOC); + dev =3D qdev_new_orphan(TYPE_STM32F405_SOC); object_property_add_child(OBJECT(machine), "soc", OBJECT(dev)); qdev_connect_clock_in(dev, "sysclk", sysclk); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); diff --git a/hw/arm/omap1.c b/hw/arm/omap1.c index 44f9dd67c3..9115d12fad 100644 --- a/hw/arm/omap1.c +++ b/hw/arm/omap1.c @@ -3763,7 +3763,7 @@ struct omap_mpu_state_s *omap310_mpu_init(MemoryRegio= n *dram, =20 omap_clkm_init(system_memory, 0xfffece00, 0xe1008000, s); =20 - s->ih[0] =3D qdev_new("omap-intc"); + s->ih[0] =3D qdev_new_orphan("omap-intc"); qdev_prop_set_uint32(s->ih[0], "size", 0x100); omap_intc_set_iclk(OMAP_INTC(s->ih[0]), omap_findclk(s, "arminth_ck")); busdev =3D SYS_BUS_DEVICE(s->ih[0]); @@ -3773,7 +3773,7 @@ struct omap_mpu_state_s *omap310_mpu_init(MemoryRegio= n *dram, sysbus_connect_irq(busdev, 1, qdev_get_gpio_in(DEVICE(s->cpu), ARM_CPU_FIQ)); sysbus_mmio_map(busdev, 0, 0xfffecb00); - s->ih[1] =3D qdev_new("omap-intc"); + s->ih[1] =3D qdev_new_orphan("omap-intc"); qdev_prop_set_uint32(s->ih[1], "size", 0x800); omap_intc_set_iclk(OMAP_INTC(s->ih[1]), omap_findclk(s, "arminth_ck")); busdev =3D SYS_BUS_DEVICE(s->ih[1]); @@ -3876,7 +3876,7 @@ struct omap_mpu_state_s *omap310_mpu_init(MemoryRegio= n *dram, warn_report("missing SecureDigital device"); } =20 - s->mmc =3D qdev_new(TYPE_OMAP_MMC); + s->mmc =3D qdev_new_orphan(TYPE_OMAP_MMC); sysbus_realize_and_unref(SYS_BUS_DEVICE(s->mmc), &error_fatal); omap_mmc_set_clk(s->mmc, omap_findclk(s, "mmc_ck")); =20 @@ -3888,7 +3888,7 @@ struct omap_mpu_state_s *omap310_mpu_init(MemoryRegio= n *dram, qdev_get_gpio_in(s->ih[1], OMAP_INT_OQN)); =20 if (dinfo) { - DeviceState *card =3D qdev_new(TYPE_SD_CARD); + DeviceState *card =3D qdev_new_orphan(TYPE_SD_CARD); qdev_prop_set_drive_err(card, "drive", blk_by_legacy_dinfo(dinfo), &error_fatal); qdev_realize_and_unref(card, qdev_get_child_bus(s->mmc, "sd-bus"), @@ -3900,7 +3900,7 @@ struct omap_mpu_state_s *omap310_mpu_init(MemoryRegio= n *dram, qdev_get_gpio_in(s->ih[1], OMAP_INT_MPUIO), omap_findclk(s, "clk32-kHz")); =20 - s->gpio =3D qdev_new("omap-gpio"); + s->gpio =3D qdev_new_orphan("omap-gpio"); omap_gpio_set_clk(OMAP1_GPIO(s->gpio), omap_findclk(s, "arm_gpio_ck")); sysbus_realize_and_unref(SYS_BUS_DEVICE(s->gpio), &error_fatal); sysbus_connect_irq(SYS_BUS_DEVICE(s->gpio), 0, @@ -3917,7 +3917,7 @@ struct omap_mpu_state_s *omap310_mpu_init(MemoryRegio= n *dram, s->pwt =3D omap_pwt_init(system_memory, 0xfffb6000, omap_findclk(s, "armxor_ck")); =20 - s->i2c[0] =3D qdev_new("omap_i2c"); + s->i2c[0] =3D qdev_new_orphan("omap_i2c"); qdev_prop_set_uint8(s->i2c[0], "revision", 0x11); omap_i2c_set_fclk(OMAP_I2C(s->i2c[0]), omap_findclk(s, "mpuper_ck")); busdev =3D SYS_BUS_DEVICE(s->i2c[0]); diff --git a/hw/arm/orangepi.c b/hw/arm/orangepi.c index d84443bb7b..d705cc43b4 100644 --- a/hw/arm/orangepi.c +++ b/hw/arm/orangepi.c @@ -85,7 +85,7 @@ static void orangepi_init(MachineState *machine) bus =3D qdev_get_child_bus(DEVICE(h3), "sd-bus"); =20 /* Plug in SD card */ - carddev =3D qdev_new(TYPE_SD_CARD); + carddev =3D qdev_new_orphan(TYPE_SD_CARD); qdev_prop_set_drive_err(carddev, "drive", blk, &error_fatal); qdev_realize_and_unref(carddev, bus, &error_fatal); =20 diff --git a/hw/arm/raspi.c b/hw/arm/raspi.c index 3f99e87428..2d5f51506d 100644 --- a/hw/arm/raspi.c +++ b/hw/arm/raspi.c @@ -283,7 +283,7 @@ void raspi_base_machine_init(MachineState *machine, error_report("No SD bus found in SOC object"); exit(1); } - carddev =3D qdev_new(TYPE_SD_CARD); + carddev =3D qdev_new_orphan(TYPE_SD_CARD); qdev_prop_set_drive_err(carddev, "drive", blk, &error_fatal); qdev_realize_and_unref(carddev, bus, &error_fatal); =20 diff --git a/hw/arm/realview.c b/hw/arm/realview.c index 2b9f3271d6..0fce9b624f 100644 --- a/hw/arm/realview.c +++ b/hw/arm/realview.c @@ -61,7 +61,7 @@ static const int realview_board_id[] =3D { =20 static void split_irq_from_named(DeviceState *src, const char* outname, qemu_irq out1, qemu_irq out2) { - DeviceState *splitter =3D qdev_new(TYPE_SPLIT_IRQ); + DeviceState *splitter =3D qdev_new_orphan(TYPE_SPLIT_IRQ); =20 qdev_prop_set_uint32(splitter, "num-lines", 2); =20 @@ -180,7 +180,7 @@ static void realview_init(MachineState *machine, } =20 sys_id =3D is_pb ? 0x01780500 : 0xc1400400; - sysctl =3D qdev_new("realview_sysctl"); + sysctl =3D qdev_new_orphan("realview_sysctl"); qdev_prop_set_uint32(sysctl, "sys_id", sys_id); qdev_prop_set_uint32(sysctl, "proc_id", proc_id); sysbus_realize_and_unref(SYS_BUS_DEVICE(sysctl), &error_fatal); @@ -188,10 +188,10 @@ static void realview_init(MachineState *machine, =20 if (is_mpcore) { if (is_pb) { - dev =3D qdev_new(TYPE_A9MPCORE_PRIV); + dev =3D qdev_new_orphan(TYPE_A9MPCORE_PRIV); qdev_prop_set_uint32(dev, "num-irq", GIC_EXT_IRQS + GIC_INTERN= AL); } else { - dev =3D qdev_new("realview_mpcore"); + dev =3D qdev_new_orphan("realview_mpcore"); } qdev_prop_set_uint32(dev, "num-cpu", smp_cpus); busdev =3D SYS_BUS_DEVICE(dev); @@ -212,7 +212,7 @@ static void realview_init(MachineState *machine, pic[n] =3D qdev_get_gpio_in(dev, n); } =20 - pl041 =3D qdev_new("pl041"); + pl041 =3D qdev_new_orphan("pl041"); qdev_prop_set_uint32(pl041, "nc_fifo_depth", 512); if (machine->audiodev) { qdev_prop_set_string(pl041, "audiodev", machine->audiodev); @@ -230,7 +230,7 @@ static void realview_init(MachineState *machine, pl011_create(0x1000c000, pic[15], serial_hd(3)); =20 /* DMA controller is optional, apparently. */ - dev =3D qdev_new("pl081"); + dev =3D qdev_new_orphan("pl081"); object_property_set_link(OBJECT(dev), "downstream", OBJECT(sysmem), &error_fatal); busdev =3D SYS_BUS_DEVICE(dev); @@ -245,7 +245,7 @@ static void realview_init(MachineState *machine, sysbus_create_simple("pl061", 0x10014000, pic[7]); gpio2 =3D sysbus_create_simple("pl061", 0x10015000, pic[8]); =20 - dev =3D qdev_new("pl111"); + dev =3D qdev_new_orphan("pl111"); object_property_set_link(OBJECT(dev), "framebuffer-memory", OBJECT(sysmem), &error_fatal); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); @@ -271,7 +271,7 @@ static void realview_init(MachineState *machine, if (dinfo) { DeviceState *card; =20 - card =3D qdev_new(TYPE_SD_CARD); + card =3D qdev_new_orphan(TYPE_SD_CARD); qdev_prop_set_drive_err(card, "drive", blk_by_legacy_dinfo(dinfo), &error_fatal); qdev_realize_and_unref(card, qdev_get_child_bus(dev, "sd-bus"), @@ -281,7 +281,7 @@ static void realview_init(MachineState *machine, sysbus_create_simple("pl031", 0x10017000, pic[10]); =20 if (!is_pb) { - dev =3D qdev_new("realview_pci"); + dev =3D qdev_new_orphan("realview_pci"); busdev =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(busdev, &error_fatal); sysbus_mmio_map(busdev, 0, 0x10019000); /* PCI controller register= s */ diff --git a/hw/arm/sabrelite.c b/hw/arm/sabrelite.c index 84bbc2f979..af4dfef7f2 100644 --- a/hw/arm/sabrelite.c +++ b/hw/arm/sabrelite.c @@ -96,7 +96,7 @@ static void sabrelite_init(MachineState *machine) qemu_irq cs_line; DriveInfo *dinfo =3D drive_get(IF_MTD, 0, 0); =20 - flash_dev =3D qdev_new("sst25vf016b"); + flash_dev =3D qdev_new_orphan("sst25vf016b"); if (dinfo) { qdev_prop_set_drive_err(flash_dev, "drive", blk_by_legacy_dinfo(dinfo), diff --git a/hw/arm/sbsa-ref.c b/hw/arm/sbsa-ref.c index 484b90053e..47a1a82a39 100644 --- a/hw/arm/sbsa-ref.c +++ b/hw/arm/sbsa-ref.c @@ -296,7 +296,7 @@ static PFlashCFI01 *sbsa_flash_create1(SBSAMachineState= *sms, * Create a single flash device. We use the same parameters as * the flash devices on the Versatile Express board. */ - DeviceState *dev =3D qdev_new(TYPE_PFLASH_CFI01); + DeviceState *dev =3D qdev_new_orphan(TYPE_PFLASH_CFI01); =20 qdev_prop_set_uint64(dev, "sector-length", SBSA_FLASH_SECTOR_SIZE); qdev_prop_set_uint8(dev, "width", 4); @@ -421,7 +421,7 @@ static void create_its(SBSAMachineState *sms) const char *itsclass =3D its_class_name(); DeviceState *dev; =20 - dev =3D qdev_new(itsclass); + dev =3D qdev_new_orphan(itsclass); =20 object_property_set_link(OBJECT(dev), "parent-gicv3", OBJECT(sms->gic), &error_abort); @@ -440,7 +440,7 @@ static void create_gic(SBSAMachineState *sms, MemoryReg= ion *mem) =20 gictype =3D gicv3_class_name(); =20 - sms->gic =3D qdev_new(gictype); + sms->gic =3D qdev_new_orphan(gictype); qdev_prop_set_uint32(sms->gic, "revision", 3); qdev_prop_set_uint32(sms->gic, "num-cpu", smp_cpus); /* @@ -522,7 +522,7 @@ static void create_uart(const SBSAMachineState *sms, in= t uart, { hwaddr base =3D sbsa_ref_memmap[uart].base; int irq =3D sbsa_ref_irqmap[uart]; - DeviceState *dev =3D qdev_new(TYPE_PL011); + DeviceState *dev =3D qdev_new_orphan(TYPE_PL011); SysBusDevice *s =3D SYS_BUS_DEVICE(dev); =20 qdev_prop_set_chr(dev, "chardev", chr); @@ -544,7 +544,7 @@ static void create_wdt(const SBSAMachineState *sms) { hwaddr rbase =3D sbsa_ref_memmap[SBSA_GWDT_REFRESH].base; hwaddr cbase =3D sbsa_ref_memmap[SBSA_GWDT_CONTROL].base; - DeviceState *dev =3D qdev_new(TYPE_WDT_SBSA); + DeviceState *dev =3D qdev_new_orphan(TYPE_WDT_SBSA); SysBusDevice *s =3D SYS_BUS_DEVICE(dev); int irq =3D sbsa_ref_irqmap[SBSA_GWDT_WS0]; =20 @@ -590,7 +590,7 @@ static void create_ahci(const SBSAMachineState *sms) DriveInfo *hd[NUM_SATA_PORTS]; SysbusAHCIState *sysahci; =20 - dev =3D qdev_new("sysbus-ahci"); + dev =3D qdev_new_orphan("sysbus-ahci"); qdev_prop_set_uint32(dev, "num-ports", NUM_SATA_PORTS); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, base); @@ -605,7 +605,7 @@ static void create_xhci(const SBSAMachineState *sms) { hwaddr base =3D sbsa_ref_memmap[SBSA_XHCI].base; int irq =3D sbsa_ref_irqmap[SBSA_XHCI]; - DeviceState *dev =3D qdev_new(TYPE_XHCI_SYSBUS); + DeviceState *dev =3D qdev_new_orphan(TYPE_XHCI_SYSBUS); qdev_prop_set_uint32(dev, "slots", XHCI_MAXSLOTS); =20 sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); @@ -622,7 +622,7 @@ static void create_smmu(const SBSAMachineState *sms, PC= IBus *bus, DeviceState *dev; int i; =20 - dev =3D qdev_new(TYPE_ARM_SMMUV3); + dev =3D qdev_new_orphan(TYPE_ARM_SMMUV3); =20 object_property_set_str(OBJECT(dev), "stage", "nested", &error_abort); object_property_set_link(OBJECT(dev), "primary-bus", OBJECT(bus), @@ -658,7 +658,7 @@ static void create_pcie(SBSAMachineState *sms, PCIHostState *pci; int i; =20 - dev =3D qdev_new(TYPE_GPEX_HOST); + dev =3D qdev_new_orphan(TYPE_GPEX_HOST); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); =20 /* Map ECAM space */ @@ -712,7 +712,7 @@ static void *sbsa_ref_dtb(const struct arm_boot_info *b= info, int *fdt_size) static void create_secure_ec(MemoryRegion *mem) { hwaddr base =3D sbsa_ref_memmap[SBSA_SECURE_EC].base; - DeviceState *dev =3D qdev_new("sbsa-ec"); + DeviceState *dev =3D qdev_new_orphan("sbsa-ec"); SysBusDevice *s =3D SYS_BUS_DEVICE(dev); =20 memory_region_add_subregion(mem, base, diff --git a/hw/arm/stellaris.c b/hw/arm/stellaris.c index 56ecc828f4..1f816a3965 100644 --- a/hw/arm/stellaris.c +++ b/hw/arm/stellaris.c @@ -1096,7 +1096,7 @@ static void stellaris_init(MachineState *ms, stellari= s_board_info *board) * Create the system-registers object early, because we will * need its sysclk output. */ - ssys_dev =3D qdev_new(TYPE_STELLARIS_SYS); + ssys_dev =3D qdev_new_orphan(TYPE_STELLARIS_SYS); object_property_add_child(soc_container, "sys", OBJECT(ssys_dev)); =20 /* @@ -1123,7 +1123,7 @@ static void stellaris_init(MachineState *ms, stellari= s_board_info *board) qdev_prop_set_uint32(ssys_dev, "dc4", board->dc4); sysbus_realize_and_unref(SYS_BUS_DEVICE(ssys_dev), &error_fatal); =20 - armv7m =3D qdev_new(TYPE_ARMV7M); + armv7m =3D qdev_new_orphan(TYPE_ARMV7M); object_property_add_child(soc_container, "v7m", OBJECT(armv7m)); qdev_prop_set_uint32(armv7m, "num-irq", NUM_IRQ_LINES); qdev_prop_set_uint8(armv7m, "num-prio-bits", NUM_PRIO_BITS); @@ -1157,7 +1157,7 @@ static void stellaris_init(MachineState *ms, stellari= s_board_info *board) if (DEV_CAP(2, GPTM(i))) { SysBusDevice *sbd; =20 - dev =3D qdev_new(TYPE_STELLARIS_GPTM); + dev =3D qdev_new_orphan(TYPE_STELLARIS_GPTM); sbd =3D SYS_BUS_DEVICE(dev); object_property_add_child(soc_container, "gptm[*]", OBJECT(dev= )); qdev_connect_clock_in(dev, "clk", @@ -1172,7 +1172,7 @@ static void stellaris_init(MachineState *ms, stellari= s_board_info *board) } =20 if (DEV_CAP(1, WDT)) { - dev =3D qdev_new(TYPE_LUMINARY_WATCHDOG); + dev =3D qdev_new_orphan(TYPE_LUMINARY_WATCHDOG); object_property_add_child(soc_container, "wdg", OBJECT(dev)); qdev_connect_clock_in(dev, "WDOGCLK", qdev_get_clock_out(ssys_dev, "SYSCLK")); @@ -1216,7 +1216,7 @@ static void stellaris_init(MachineState *ms, stellari= s_board_info *board) if (DEV_CAP(2, UART(i))) { SysBusDevice *sbd; =20 - dev =3D qdev_new("pl011_luminary"); + dev =3D qdev_new_orphan("pl011_luminary"); object_property_add_child(soc_container, "uart[*]", OBJECT(dev= )); sbd =3D SYS_BUS_DEVICE(dev); qdev_prop_set_chr(dev, "chardev", serial_hd(i)); @@ -1304,18 +1304,18 @@ static void stellaris_init(MachineState *ms, stella= ris_board_info *board) =20 dinfo =3D drive_get(IF_SD, 0, 0); blk =3D dinfo ? blk_by_legacy_dinfo(dinfo) : NULL; - carddev =3D qdev_new(TYPE_SD_CARD_SPI); + carddev =3D qdev_new_orphan(TYPE_SD_CARD_SPI); qdev_prop_set_drive_err(carddev, "drive", blk, &error_fatal); qdev_realize_and_unref(carddev, qdev_get_child_bus(sddev, "sd-bus"), &error_fatal); =20 - ssddev =3D qdev_new("ssd0323"); + ssddev =3D qdev_new_orphan("ssd0323"); object_property_add_child(OBJECT(ms), "oled", OBJECT(ssddev)); qdev_prop_set_uint8(ssddev, "cs", 1); qdev_realize_and_unref(ssddev, bus, &error_fatal); =20 - gpio_d_splitter =3D qdev_new(TYPE_SPLIT_IRQ); + gpio_d_splitter =3D qdev_new_orphan(TYPE_SPLIT_IRQ); object_property_add_child(OBJECT(ms), "splitter", OBJECT(gpio_d_splitter)); qdev_prop_set_uint32(gpio_d_splitter, "num-lines", 2); @@ -1337,7 +1337,7 @@ static void stellaris_init(MachineState *ms, stellari= s_board_info *board) if (DEV_CAP(4, EMAC)) { DeviceState *enet; =20 - enet =3D qdev_new("stellaris_enet"); + enet =3D qdev_new_orphan("stellaris_enet"); object_property_add_child(soc_container, "enet", OBJECT(enet)); if (nd) { qdev_set_nic_properties(enet, nd); @@ -1357,7 +1357,7 @@ static void stellaris_init(MachineState *ms, stellari= s_board_info *board) }; DeviceState *gpad; =20 - gpad =3D qdev_new(TYPE_STELLARIS_GAMEPAD); + gpad =3D qdev_new_orphan(TYPE_STELLARIS_GAMEPAD); object_property_add_child(OBJECT(ms), "gamepad", OBJECT(gpad)); for (i =3D 0; i < ARRAY_SIZE(gpad_keycode); i++) { qlist_append_int(gpad_keycode_list, gpad_keycode[i]); diff --git a/hw/arm/stm32vldiscovery.c b/hw/arm/stm32vldiscovery.c index 8f93c0036a..8c37d41e63 100644 --- a/hw/arm/stm32vldiscovery.c +++ b/hw/arm/stm32vldiscovery.c @@ -47,7 +47,7 @@ static void stm32vldiscovery_init(MachineState *machine) sysclk =3D clock_new(OBJECT(machine), "SYSCLK"); clock_set_hz(sysclk, SYSCLK_FRQ); =20 - dev =3D qdev_new(TYPE_STM32F100_SOC); + dev =3D qdev_new_orphan(TYPE_STM32F100_SOC); object_property_add_child(OBJECT(machine), "soc", OBJECT(dev)); qdev_connect_clock_in(dev, "sysclk", sysclk); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); diff --git a/hw/arm/strongarm.c b/hw/arm/strongarm.c index 5a3242195a..0c6b04f805 100644 --- a/hw/arm/strongarm.c +++ b/hw/arm/strongarm.c @@ -646,7 +646,7 @@ static DeviceState *strongarm_gpio_init(hwaddr base, DeviceState *dev; int i; =20 - dev =3D qdev_new(TYPE_STRONGARM_GPIO); + dev =3D qdev_new_orphan(TYPE_STRONGARM_GPIO); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); =20 sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, base); @@ -1642,7 +1642,7 @@ StrongARMState *sa1110_init(const char *cpu_type) s->ppc =3D sysbus_create_varargs(TYPE_STRONGARM_PPC, 0x90060000, NULL); =20 for (i =3D 0; sa_serial[i].io_base; i++) { - DeviceState *dev =3D qdev_new(TYPE_STRONGARM_UART); + DeviceState *dev =3D qdev_new_orphan(TYPE_STRONGARM_UART); qdev_prop_set_chr(dev, "chardev", serial_hd(i)); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, diff --git a/hw/arm/versatilepb.c b/hw/arm/versatilepb.c index c6991a52e6..5e9d76859f 100644 --- a/hw/arm/versatilepb.c +++ b/hw/arm/versatilepb.c @@ -226,7 +226,7 @@ static void versatile_init(MachineState *machine, int b= oard_id) /* SDRAM at address zero. */ memory_region_add_subregion(sysmem, 0, machine->ram); =20 - sysctl =3D qdev_new("realview_sysctl"); + sysctl =3D qdev_new_orphan("realview_sysctl"); qdev_prop_set_uint32(sysctl, "sys_id", 0x41007004); qdev_prop_set_uint32(sysctl, "proc_id", 0x02000000); sysbus_realize_and_unref(SYS_BUS_DEVICE(sysctl), &error_fatal); @@ -248,7 +248,7 @@ static void versatile_init(MachineState *machine, int b= oard_id) sysbus_create_simple("pl050_keyboard", 0x10006000, sic[3]); sysbus_create_simple("pl050_mouse", 0x10007000, sic[4]); =20 - dev =3D qdev_new("versatile_pci"); + dev =3D qdev_new_orphan("versatile_pci"); busdev =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(busdev, &error_fatal); sysbus_mmio_map(busdev, 0, 0x10001000); /* PCI controller regs */ @@ -284,7 +284,7 @@ static void versatile_init(MachineState *machine, int b= oard_id) pl011_create(0x101f3000, pic[14], serial_hd(2)); pl011_create(0x10009000, sic[6], serial_hd(3)); =20 - dev =3D qdev_new("pl080"); + dev =3D qdev_new_orphan("pl080"); object_property_set_link(OBJECT(dev), "downstream", OBJECT(sysmem), &error_fatal); busdev =3D SYS_BUS_DEVICE(dev); @@ -302,7 +302,7 @@ static void versatile_init(MachineState *machine, int b= oard_id) =20 /* The versatile/PB actually has a modified Color LCD controller that includes hardware cursor support from the PL111. */ - dev =3D qdev_new("pl110_versatile"); + dev =3D qdev_new_orphan("pl110_versatile"); object_property_set_link(OBJECT(dev), "framebuffer-memory", OBJECT(sysmem), &error_fatal); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); @@ -317,7 +317,7 @@ static void versatile_init(MachineState *machine, int b= oard_id) if (dinfo) { DeviceState *card; =20 - card =3D qdev_new(TYPE_SD_CARD); + card =3D qdev_new_orphan(TYPE_SD_CARD); qdev_prop_set_drive_err(card, "drive", blk_by_legacy_dinfo(dinfo), &error_fatal); qdev_realize_and_unref(card, qdev_get_child_bus(dev, "sd-bus"), @@ -329,7 +329,7 @@ static void versatile_init(MachineState *machine, int b= oard_id) if (dinfo) { DeviceState *card; =20 - card =3D qdev_new(TYPE_SD_CARD); + card =3D qdev_new_orphan(TYPE_SD_CARD); qdev_prop_set_drive_err(card, "drive", blk_by_legacy_dinfo(dinfo), &error_fatal); qdev_realize_and_unref(card, qdev_get_child_bus(dev, "sd-bus"), @@ -344,7 +344,7 @@ static void versatile_init(MachineState *machine, int b= oard_id) i2c_slave_create_simple(i2c, "ds1338", 0x68); =20 /* Add PL041 AACI Interface to the LM4549 codec */ - pl041 =3D qdev_new("pl041"); + pl041 =3D qdev_new_orphan("pl041"); qdev_prop_set_uint32(pl041, "nc_fifo_depth", 512); if (machine->audiodev) { qdev_prop_set_string(pl041, "audiodev", machine->audiodev); diff --git a/hw/arm/vexpress.c b/hw/arm/vexpress.c index f26d8c6f8d..716f55a086 100644 --- a/hw/arm/vexpress.c +++ b/hw/arm/vexpress.c @@ -241,7 +241,7 @@ static void init_cpus(MachineState *ms, const char *cpu= _type, * this must happen after the CPUs are created because a15mpcore_priv * wires itself up to the CPU's generic_timer gpio out lines. */ - dev =3D qdev_new(privdev); + dev =3D qdev_new_orphan(privdev); qdev_prop_set_uint32(dev, "num-cpu", smp_cpus); qdev_prop_set_uint32(dev, "num-irq", GIC_EXT_IRQS + GIC_INTERNAL); busdev =3D SYS_BUS_DEVICE(dev); @@ -301,7 +301,7 @@ static void a9_daughterboard_init(VexpressMachineState = *vms, /* Daughterboard peripherals : 0x10020000 .. 0x20000000 */ =20 /* 0x10020000 PL111 CLCD (daughterboard) */ - dev =3D qdev_new("pl111"); + dev =3D qdev_new_orphan("pl111"); object_property_set_link(OBJECT(dev), "framebuffer-memory", OBJECT(sysmem), &error_fatal); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); @@ -517,7 +517,7 @@ static void vexpress_modify_dtb(const struct arm_boot_i= nfo *info, void *fdt) static PFlashCFI01 *ve_pflash_cfi01_register(hwaddr base, const char *name, DriveInfo *di) { - DeviceState *dev =3D qdev_new(TYPE_PFLASH_CFI01); + DeviceState *dev =3D qdev_new_orphan(TYPE_PFLASH_CFI01); =20 if (di) { qdev_prop_set_drive(dev, "drive", blk_by_legacy_dinfo(di)); @@ -592,7 +592,7 @@ static void vexpress_common_init(MachineState *machine) =20 sys_id =3D 0x1190f500; =20 - sysctl =3D qdev_new("realview_sysctl"); + sysctl =3D qdev_new_orphan("realview_sysctl"); qdev_prop_set_uint32(sysctl, "sys_id", sys_id); qdev_prop_set_uint32(sysctl, "proc_id", daughterboard->proc_id); =20 @@ -614,7 +614,7 @@ static void vexpress_common_init(MachineState *machine) /* VE_SP810: not modelled */ /* VE_SERIALPCI: not modelled */ =20 - pl041 =3D qdev_new("pl041"); + pl041 =3D qdev_new_orphan("pl041"); qdev_prop_set_uint32(pl041, "nc_fifo_depth", 512); if (machine->audiodev) { qdev_prop_set_string(pl041, "audiodev", machine->audiodev); @@ -633,7 +633,7 @@ static void vexpress_common_init(MachineState *machine) if (dinfo) { DeviceState *card; =20 - card =3D qdev_new(TYPE_SD_CARD); + card =3D qdev_new_orphan(TYPE_SD_CARD); qdev_prop_set_drive_err(card, "drive", blk_by_legacy_dinfo(dinfo), &error_fatal); qdev_realize_and_unref(card, qdev_get_child_bus(dev, "sd-bus"), @@ -659,7 +659,7 @@ static void vexpress_common_init(MachineState *machine) =20 /* VE_COMPACTFLASH: not modelled */ =20 - dev =3D qdev_new("pl111"); + dev =3D qdev_new_orphan("pl111"); object_property_set_link(OBJECT(dev), "framebuffer-memory", OBJECT(sysmem), &error_fatal); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 219597cabd..f8a1ba68be 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -1082,7 +1082,7 @@ static inline DeviceState *create_acpi_ged(VirtMachin= eState *vms) event |=3D ACPI_GED_NVDIMM_HOTPLUG_EVT; } =20 - dev =3D qdev_new(TYPE_ACPI_GED); + dev =3D qdev_new_orphan(TYPE_ACPI_GED); qdev_prop_set_uint32(dev, "ged-event", event); object_property_set_link(OBJECT(dev), "bus", OBJECT(vms->bus), &error_= abort); sbdev =3D SYS_BUS_DEVICE(dev); @@ -1120,7 +1120,7 @@ static void create_its(VirtMachineState *vms) return; } =20 - dev =3D qdev_new(its_class_name()); + dev =3D qdev_new_orphan(its_class_name()); =20 object_property_set_link(OBJECT(dev), "parent-gicv3", OBJECT(vms->gic), &error_abort); @@ -1137,7 +1137,7 @@ static void create_v2m(VirtMachineState *vms) int irq =3D vms->irqmap[VIRT_GIC_V2M]; DeviceState *dev; =20 - dev =3D qdev_new("arm-gicv2m"); + dev =3D qdev_new_orphan("arm-gicv2m"); qdev_prop_set_uint32(dev, "base-spi", irq); qdev_prop_set_uint32(dev, "num-spi", NUM_GICV2M_SPIS); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); @@ -1225,7 +1225,7 @@ static void create_gicv5(VirtMachineState *vms, Memor= yRegion *mem) const char *gictype =3D gicv5_class_name(); QList *cpulist =3D qlist_new(), *iaffidlist =3D qlist_new(); =20 - vms->gic =3D qdev_new(gictype); + vms->gic =3D qdev_new_orphan(gictype); qdev_prop_set_uint32(vms->gic, "spi-range", NUM_IRQS); =20 object_property_set_link(OBJECT(vms->gic), "sysmem", OBJECT(mem), @@ -1356,7 +1356,7 @@ static void create_gicv2(VirtMachineState *vms, Memor= yRegion *mem) exit(1); } =20 - vms->gic =3D qdev_new(gic_class_name()); + vms->gic =3D qdev_new_orphan(gic_class_name()); qdev_prop_set_uint32(vms->gic, "revision", 2); qdev_prop_set_uint32(vms->gic, "num-cpu", smp_cpus); /* @@ -1412,7 +1412,7 @@ static void create_gicv3(VirtMachineState *vms, Memor= yRegion *mem) exit(1); } =20 - vms->gic =3D qdev_new(gicv3_class_name()); + vms->gic =3D qdev_new_orphan(gicv3_class_name()); qdev_prop_set_uint32(vms->gic, "revision", revision); qdev_prop_set_uint32(vms->gic, "num-cpu", smp_cpus); /* @@ -1509,7 +1509,7 @@ static void create_uart(const VirtMachineState *vms, = int uart, int irq =3D vms->irqmap[uart]; const char compat[] =3D "arm,pl011\0arm,primecell"; const char clocknames[] =3D "uartclk\0apb_pclk"; - DeviceState *dev =3D qdev_new(TYPE_PL011); + DeviceState *dev =3D qdev_new_orphan(TYPE_PL011); SysBusDevice *s =3D SYS_BUS_DEVICE(dev); MachineState *ms =3D MACHINE(vms); =20 @@ -1670,7 +1670,7 @@ static void create_gpio_devices(const VirtMachineStat= e *vms, int gpio, SysBusDevice *s; MachineState *ms =3D MACHINE(vms); =20 - pl061_dev =3D qdev_new("pl061"); + pl061_dev =3D qdev_new_orphan("pl061"); /* Pull lines down to 0 if not driven by the PL061 */ qdev_prop_set_uint8(pl061_dev, "pullups", 0); qdev_prop_set_uint8(pl061_dev, "pulldowns", 0xff); @@ -1786,7 +1786,7 @@ static PFlashCFI01 *virt_flash_create1(VirtMachineSta= te *vms, * Create a single flash device. We use the same parameters as * the flash devices on the Versatile Express board. */ - DeviceState *dev =3D qdev_new(TYPE_PFLASH_CFI01); + DeviceState *dev =3D qdev_new_orphan(TYPE_PFLASH_CFI01); =20 qdev_prop_set_uint64(dev, "sector-length", VIRT_FLASH_SECTOR_SIZE); qdev_prop_set_uint8(dev, "width", 4); @@ -2069,7 +2069,7 @@ static void create_smmu(const VirtMachineState *vms, = PCIBus *bus) return; } =20 - dev =3D qdev_new(TYPE_ARM_SMMUV3); + dev =3D qdev_new_orphan(TYPE_ARM_SMMUV3); =20 if (!vmc->no_nested_smmu) { object_property_set_str(OBJECT(dev), "stage", "nested", &error_fat= al); @@ -2162,7 +2162,7 @@ static void create_pcie(VirtMachineState *vms) MachineState *ms =3D MACHINE(vms); MachineClass *mc =3D MACHINE_GET_CLASS(ms); =20 - dev =3D qdev_new(TYPE_GPEX_HOST); + dev =3D qdev_new_orphan(TYPE_GPEX_HOST); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); =20 ecam_id =3D VIRT_ECAM_ID(vms->highmem_ecam); @@ -2290,7 +2290,7 @@ static void create_platform_bus(VirtMachineState *vms) int i; MemoryRegion *sysmem =3D get_system_memory(); =20 - dev =3D qdev_new(TYPE_PLATFORM_BUS_DEVICE); + dev =3D qdev_new_orphan(TYPE_PLATFORM_BUS_DEVICE); dev->id =3D g_strdup(TYPE_PLATFORM_BUS_DEVICE); qdev_prop_set_uint32(dev, "num_irqs", PLATFORM_BUS_NUM_IRQS); qdev_prop_set_uint32(dev, "mmio_size", vms->memmap[VIRT_PLATFORM_BUS].= size); diff --git a/hw/arm/xilinx_zynq.c b/hw/arm/xilinx_zynq.c index 6c83439017..8c3b47d07a 100644 --- a/hw/arm/xilinx_zynq.c +++ b/hw/arm/xilinx_zynq.c @@ -110,7 +110,7 @@ static void gem_init(uint32_t base, qemu_irq irq) DeviceState *dev; SysBusDevice *s; =20 - dev =3D qdev_new(TYPE_CADENCE_GEM); + dev =3D qdev_new_orphan(TYPE_CADENCE_GEM); qemu_configure_nic_device(dev, true, NULL); object_property_set_int(OBJECT(dev), "phy-addr", 7, &error_abort); s =3D SYS_BUS_DEVICE(dev); @@ -131,7 +131,7 @@ static inline int zynq_init_spi_flashes(uint32_t base_a= ddr, qemu_irq irq, int num_busses =3D is_qspi ? NUM_QSPI_BUSSES : 1; int num_ss =3D is_qspi ? NUM_QSPI_FLASHES : NUM_SPI_FLASHES; =20 - dev =3D qdev_new(is_qspi ? "xlnx.ps7-qspi" : "xlnx.ps7-spi"); + dev =3D qdev_new_orphan(is_qspi ? "xlnx.ps7-qspi" : "xlnx.ps7-spi"); qdev_prop_set_uint8(dev, "num-txrx-bytes", is_qspi ? 4 : 1); qdev_prop_set_uint8(dev, "num-ss-bits", num_ss); qdev_prop_set_uint8(dev, "num-busses", num_busses); @@ -152,7 +152,7 @@ static inline int zynq_init_spi_flashes(uint32_t base_a= ddr, qemu_irq irq, =20 for (j =3D 0; j < num_ss; ++j) { DriveInfo *dinfo =3D drive_get(IF_MTD, 0, unit++); - flash_dev =3D qdev_new("n25q128"); + flash_dev =3D qdev_new_orphan("n25q128"); if (dinfo) { qdev_prop_set_drive_err(flash_dev, "drive", blk_by_legacy_dinfo(dinfo), @@ -195,7 +195,7 @@ static void ddr_ctrl_init(uint32_t base) DeviceState *dev; SysBusDevice *busdev; =20 - dev =3D qdev_new("zynq.ddr-ctlr"); + dev =3D qdev_new_orphan("zynq.ddr-ctlr"); busdev =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(busdev, &error_fatal); sysbus_mmio_map(busdev, 0, base); @@ -256,13 +256,13 @@ static void zynq_init(MachineState *machine) clock_set_hz(zynq_machine->ps_clk, PS_CLK_FREQUENCY); =20 /* Create slcr, keep a pointer to connect clocks */ - slcr =3D qdev_new("xilinx-zynq_slcr"); + slcr =3D qdev_new_orphan("xilinx-zynq_slcr"); qdev_connect_clock_in(slcr, "ps_clk", zynq_machine->ps_clk); qdev_prop_set_uint8(slcr, "boot-mode", zynq_machine->boot_mode); sysbus_realize_and_unref(SYS_BUS_DEVICE(slcr), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(slcr), 0, 0xF8000000); =20 - dev =3D qdev_new(TYPE_A9MPCORE_PRIV); + dev =3D qdev_new_orphan(TYPE_A9MPCORE_PRIV); qdev_prop_set_uint32(dev, "num-cpu", smp_cpus); qdev_prop_set_uint32(dev, "num-irq", GIC_EXT_IRQS + GIC_INTERNAL); busdev =3D SYS_BUS_DEVICE(dev); @@ -290,7 +290,7 @@ static void zynq_init(MachineState *machine) sysbus_create_simple(TYPE_CHIPIDEA, 0xE0002000, pic[53 - GIC_INTERNAL]= ); sysbus_create_simple(TYPE_CHIPIDEA, 0xE0003000, pic[76 - GIC_INTERNAL]= ); =20 - dev =3D qdev_new(TYPE_CADENCE_UART); + dev =3D qdev_new_orphan(TYPE_CADENCE_UART); busdev =3D SYS_BUS_DEVICE(dev); qdev_prop_set_chr(dev, "chardev", serial_hd(0)); qdev_connect_clock_in(dev, "refclk", @@ -298,7 +298,7 @@ static void zynq_init(MachineState *machine) sysbus_realize_and_unref(busdev, &error_fatal); sysbus_mmio_map(busdev, 0, 0xE0000000); sysbus_connect_irq(busdev, 0, pic[59 - GIC_INTERNAL]); - dev =3D qdev_new(TYPE_CADENCE_UART); + dev =3D qdev_new_orphan(TYPE_CADENCE_UART); busdev =3D SYS_BUS_DEVICE(dev); qdev_prop_set_chr(dev, "chardev", serial_hd(1)); qdev_connect_clock_in(dev, "refclk", @@ -329,7 +329,7 @@ static void zynq_init(MachineState *machine) * - SDIO Specification Version 2.0 * - MMC Specification Version 3.31 */ - dev =3D qdev_new(TYPE_SYSBUS_SDHCI); + dev =3D qdev_new_orphan(TYPE_SYSBUS_SDHCI); qdev_prop_set_uint8(dev, "sd-spec-version", 2); qdev_prop_set_uint64(dev, "capareg", ZYNQ_SDHCI_CAPABILITIES); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); @@ -338,18 +338,18 @@ static void zynq_init(MachineState *machine) =20 di =3D drive_get(IF_SD, 0, n); blk =3D di ? blk_by_legacy_dinfo(di) : NULL; - carddev =3D qdev_new(TYPE_SD_CARD); + carddev =3D qdev_new_orphan(TYPE_SD_CARD); qdev_prop_set_drive_err(carddev, "drive", blk, &error_fatal); qdev_realize_and_unref(carddev, qdev_get_child_bus(dev, "sd-bus"), &error_fatal); } =20 - dev =3D qdev_new(TYPE_ZYNQ_XADC); + dev =3D qdev_new_orphan(TYPE_ZYNQ_XADC); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, 0xF8007100); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[39-GIC_INTERNAL]); =20 - dev =3D qdev_new("pl330"); + dev =3D qdev_new_orphan("pl330"); object_property_set_link(OBJECT(dev), "memory", OBJECT(address_space_mem), &error_fatal); @@ -372,7 +372,7 @@ static void zynq_init(MachineState *machine) sysbus_connect_irq(busdev, n + 1, pic[dma_irqs[n] - GIC_INTERNAL]); } =20 - dev =3D qdev_new("xlnx.ps7-dev-cfg"); + dev =3D qdev_new_orphan("xlnx.ps7-dev-cfg"); busdev =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(busdev, &error_fatal); sysbus_connect_irq(busdev, 0, pic[40 - GIC_INTERNAL]); diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index 2b04513ba2..48f6e6d463 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -143,7 +143,7 @@ static void create_virtio_regions(VersalVirt *s) qemu_irq pic_irq; =20 pic_irq =3D versal_get_reserved_irq(&s->soc, i, &dtb_irq); - dev =3D qdev_new("virtio-mmio"); + dev =3D qdev_new_orphan("virtio-mmio"); object_property_add_child(OBJECT(s), "virtio-mmio[*]", OBJECT(dev)= ); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic_irq); diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index facf92b45c..7cb95a4ff8 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -514,7 +514,7 @@ static qemu_irq versal_get_gic_irq(Versal *s, int irq_i= dx) if (split =3D=3D NULL) { size_t i; =20 - split =3D qdev_new(TYPE_SPLIT_IRQ); + split =3D qdev_new_orphan(TYPE_SPLIT_IRQ); qdev_prop_set_uint16(split, "num-lines", s->intc->len); object_property_add_child(container, name, OBJECT(split)); qdev_realize_and_unref(split, NULL, &error_abort); @@ -562,7 +562,7 @@ static qemu_irq versal_get_irq_or_gate_in(Versal *s, in= t irq_idx, dev =3D DEVICE(object_resolve_path_at(container, name)); =20 if (dev =3D=3D NULL) { - dev =3D qdev_new(TYPE_OR_IRQ); + dev =3D qdev_new_orphan(TYPE_OR_IRQ); object_property_add_child(container, name, OBJECT(dev)); qdev_prop_set_uint16(dev, "num-lines", 1 << R_VERSAL_IRQ_OR_IDX_LE= NGTH); qdev_realize_and_unref(dev, NULL, &error_abort); @@ -664,7 +664,7 @@ static inline DeviceState *create_or_gate(Versal *s, Ob= ject *parent, { DeviceState *or; =20 - or =3D qdev_new(TYPE_OR_IRQ); + or =3D qdev_new_orphan(TYPE_OR_IRQ); qdev_prop_set_uint16(or, "num-lines", num_lines); object_property_add_child(parent, name, OBJECT(or)); qdev_realize_and_unref(or, NULL, &error_abort); @@ -713,7 +713,7 @@ static void versal_create_gic_its(Versal *s, return; } =20 - dev =3D qdev_new(TYPE_ARM_GICV3_ITS); + dev =3D qdev_new_orphan(TYPE_ARM_GICV3_ITS); sbd =3D SYS_BUS_DEVICE(dev); =20 object_property_add_child(OBJECT(gic), "its", OBJECT(dev)); @@ -755,11 +755,11 @@ static DeviceState *versal_create_gic(Versal *s, =20 switch (map->gic.version) { case 2: - dev =3D qdev_new(gic_class_name()); + dev =3D qdev_new_orphan(gic_class_name()); break; =20 case 3: - dev =3D qdev_new(gicv3_class_name()); + dev =3D qdev_new_orphan(gicv3_class_name()); break; =20 default: @@ -909,7 +909,7 @@ static DeviceState *versal_create_cpu(Versal *s, size_t cluster_idx, size_t core_idx) { - DeviceState *cpu =3D qdev_new(map->cpu_model); + DeviceState *cpu =3D qdev_new_orphan(map->cpu_model); ARMCPU *arm_cpu =3D ARM_CPU(cpu); Object *obj =3D OBJECT(cpu); uint64_t affinity; @@ -960,7 +960,7 @@ static void versal_create_cpu_cluster(Versal *s, const = VersalCpuClusterMap *map) const char compatible[] =3D "arm,armv8-timer"; bool has_gtimer; =20 - cluster =3D qdev_new(TYPE_CPU_CLUSTER); + cluster =3D qdev_new_orphan(TYPE_CPU_CLUSTER); name =3D g_strdup_printf("%s-cluster", map->name); object_property_add_child(OBJECT(s), name, OBJECT(cluster)); g_free(name); @@ -1028,7 +1028,7 @@ static void versal_create_uart(Versal *s, const char compatible[] =3D "arm,pl011\0arm,sbsa-uart"; const char clocknames[] =3D "uartclk\0apb_pclk"; =20 - dev =3D qdev_new(TYPE_PL011); + dev =3D qdev_new_orphan(TYPE_PL011); object_property_add_child(OBJECT(s), "uart[*]", OBJECT(dev)); qdev_prop_set_chr(dev, "chardev", serial_hd(chardev_idx)); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); @@ -1067,7 +1067,7 @@ static void versal_create_canfd(Versal *s, const Vers= alSimplePeriphMap *map, const char compatible[] =3D "xlnx,canfd-2.0"; const char clocknames[] =3D "can_clk\0s_axi_aclk"; =20 - sbd =3D SYS_BUS_DEVICE(qdev_new(TYPE_XILINX_CANFD)); + sbd =3D SYS_BUS_DEVICE(qdev_new_orphan(TYPE_XILINX_CANFD)); object_property_add_child(OBJECT(s), "canfd[*]", OBJECT(sbd)); =20 object_property_set_int(OBJECT(sbd), "ext_clk_freq", @@ -1107,7 +1107,7 @@ static void versal_create_usb(Versal *s, const char compat_versal_dwc3[] =3D "xlnx,versal-dwc3"; const char compat_dwc3[] =3D "snps,dwc3"; =20 - dev =3D qdev_new(TYPE_XILINX_VERSAL_USB2); + dev =3D qdev_new_orphan(TYPE_XILINX_VERSAL_USB2); object_property_add_child(OBJECT(s), "usb[*]", OBJECT(dev)); =20 object_property_set_link(OBJECT(dev), "dma", OBJECT(&s->mr_ps), @@ -1167,7 +1167,7 @@ static void versal_create_gem(Versal *s, DeviceState *or; int i; =20 - dev =3D qdev_new(TYPE_CADENCE_GEM); + dev =3D qdev_new_orphan(TYPE_CADENCE_GEM); object_property_add_child(OBJECT(s), "gem[*]", OBJECT(dev)); =20 qemu_configure_nic_device(dev, true, NULL); @@ -1251,7 +1251,7 @@ static void versal_create_zdma(Versal *s, int irq =3D map->map.irq + map->irq_stride * i; g_autofree char *node; =20 - dev =3D qdev_new(TYPE_XLNX_ZDMA); + dev =3D qdev_new_orphan(TYPE_XLNX_ZDMA); object_property_add_child(OBJECT(s), name, OBJECT(dev)); object_property_set_int(OBJECT(dev), "bus-width", 128, &error_abor= t); object_property_set_link(OBJECT(dev), "dma", @@ -1286,7 +1286,7 @@ static void versal_create_sdhci(Versal *s, const char compatible[] =3D "arasan,sdhci-8.9a"; const char clocknames[] =3D "clk_xin\0clk_ahb"; =20 - dev =3D qdev_new(TYPE_SYSBUS_SDHCI); + dev =3D qdev_new_orphan(TYPE_SYSBUS_SDHCI); object_property_add_child(OBJECT(s), "sdhci[*]", OBJECT(dev)); =20 object_property_set_uint(OBJECT(dev), "sd-spec-version", 3, @@ -1320,7 +1320,7 @@ static void versal_create_rtc(Versal *s, const struct= VersalRtcMap *map) const char compatible[] =3D "xlnx,zynqmp-rtc"; const char interrupt_names[] =3D "alarm\0sec"; =20 - sbd =3D SYS_BUS_DEVICE(qdev_new(TYPE_XLNX_ZYNQMP_RTC)); + sbd =3D SYS_BUS_DEVICE(qdev_new_orphan(TYPE_XLNX_ZYNQMP_RTC)); object_property_add_child(OBJECT(s), "rtc", OBJECT(sbd)); sysbus_realize_and_unref(sbd, &error_abort); =20 @@ -1349,7 +1349,7 @@ static void versal_create_trng(Versal *s, const Versa= lSimplePeriphMap *map) SysBusDevice *sbd; MemoryRegion *mr; =20 - sbd =3D SYS_BUS_DEVICE(qdev_new(TYPE_XLNX_VERSAL_TRNG)); + sbd =3D SYS_BUS_DEVICE(qdev_new_orphan(TYPE_XLNX_VERSAL_TRNG)); object_property_add_child(OBJECT(s), "trng", OBJECT(sbd)); sysbus_realize_and_unref(sbd, &error_abort); =20 @@ -1370,7 +1370,7 @@ static void versal_create_xrams(Versal *s, const stru= ct VersalXramMap *map) for (i =3D 0; i < map->num; i++) { hwaddr ctrl, mem; =20 - sbd =3D SYS_BUS_DEVICE(qdev_new(TYPE_XLNX_XRAM_CTRL)); + sbd =3D SYS_BUS_DEVICE(qdev_new_orphan(TYPE_XLNX_XRAM_CTRL)); object_property_add_child(OBJECT(s), "xram[*]", OBJECT(sbd)); sysbus_realize_and_unref(sbd, &error_fatal); =20 @@ -1392,7 +1392,7 @@ static void versal_create_bbram(Versal *s, DeviceState *dev; SysBusDevice *sbd; =20 - dev =3D qdev_new(TYPE_XLNX_BBRAM); + dev =3D qdev_new_orphan(TYPE_XLNX_BBRAM); sbd =3D SYS_BUS_DEVICE(dev); =20 object_property_add_child(OBJECT(s), "bbram", OBJECT(dev)); @@ -1415,9 +1415,9 @@ static void versal_create_efuse(Versal *s, return; } =20 - ctrl =3D qdev_new(TYPE_XLNX_VERSAL_EFUSE_CTRL); - cache =3D qdev_new(TYPE_XLNX_VERSAL_EFUSE_CACHE); - bits =3D qdev_new(TYPE_XLNX_EFUSE); + ctrl =3D qdev_new_orphan(TYPE_XLNX_VERSAL_EFUSE_CTRL); + cache =3D qdev_new_orphan(TYPE_XLNX_VERSAL_EFUSE_CACHE); + bits =3D qdev_new_orphan(TYPE_XLNX_EFUSE); =20 qdev_prop_set_uint32(bits, "efuse-nr", 3); qdev_prop_set_uint32(bits, "efuse-size", 8192); @@ -1451,7 +1451,7 @@ static DeviceState *versal_create_pmc_iou_slcr(Versal= *s, SysBusDevice *sbd; DeviceState *dev; =20 - dev =3D qdev_new(TYPE_XILINX_VERSAL_PMC_IOU_SLCR); + dev =3D qdev_new_orphan(TYPE_XILINX_VERSAL_PMC_IOU_SLCR); object_property_add_child(OBJECT(s), "pmc-iou-slcr", OBJECT(dev)); =20 sbd =3D SYS_BUS_DEVICE(dev); @@ -1473,7 +1473,7 @@ static DeviceState *versal_create_ospi(Versal *s, DeviceState *dev, *dma_dst, *dma_src, *orgate; MemoryRegion *linear_mr =3D g_new(MemoryRegion, 1); =20 - dev =3D qdev_new(TYPE_XILINX_VERSAL_OSPI); + dev =3D qdev_new_orphan(TYPE_XILINX_VERSAL_OSPI); object_property_add_child(OBJECT(s), "ospi", OBJECT(dev)); =20 memory_region_init(linear_mr, OBJECT(dev), "linear-mr", map->dac_sz); @@ -1482,7 +1482,7 @@ static DeviceState *versal_create_ospi(Versal *s, memory_region_add_subregion(linear_mr, 0x0, mr_dac); =20 /* Create the OSPI destination DMA */ - dma_dst =3D qdev_new(TYPE_XLNX_CSU_DMA); + dma_dst =3D qdev_new_orphan(TYPE_XLNX_CSU_DMA); object_property_add_child(OBJECT(dev), "dma-dst-dev", OBJECT(dma_dst)); object_property_set_link(OBJECT(dma_dst), "dma", OBJECT(get_system_memory()), &error_abort); @@ -1494,7 +1494,7 @@ static DeviceState *versal_create_ospi(Versal *s, sysbus_mmio_get_region(sbd, 0)); =20 /* Create the OSPI source DMA */ - dma_src =3D qdev_new(TYPE_XLNX_CSU_DMA); + dma_src =3D qdev_new_orphan(TYPE_XLNX_CSU_DMA); object_property_add_child(OBJECT(dev), "dma-src-dev", OBJECT(dma_src)); =20 object_property_set_bool(OBJECT(dma_src), "is-dst", false, &error_abor= t); @@ -1548,7 +1548,7 @@ static void versal_create_cfu(Versal *s, const struct= VersalCfuMap *map) object_unref(container); =20 /* CFU FDRO */ - cfu_fdro =3D qdev_new(TYPE_XLNX_VERSAL_CFU_FDRO); + cfu_fdro =3D qdev_new_orphan(TYPE_XLNX_VERSAL_CFU_FDRO); object_property_add_child(container, "cfu-fdro", OBJECT(cfu_fdro)); sbd =3D SYS_BUS_DEVICE(cfu_fdro); =20 @@ -1557,15 +1557,15 @@ static void versal_create_cfu(Versal *s, const stru= ct VersalCfuMap *map) sysbus_mmio_get_region(sbd, 0)); =20 /* cframe bcast */ - cframe_bcast =3D qdev_new(TYPE_XLNX_VERSAL_CFRAME_BCAST_REG); + cframe_bcast =3D qdev_new_orphan(TYPE_XLNX_VERSAL_CFRAME_BCAST_REG); object_property_add_child(container, "cframe-bcast", OBJECT(cframe_bca= st)); =20 /* CFU APB */ - cfu_apb =3D qdev_new(TYPE_XLNX_VERSAL_CFU_APB); + cfu_apb =3D qdev_new_orphan(TYPE_XLNX_VERSAL_CFU_APB); object_property_add_child(container, "cfu-apb", OBJECT(cfu_apb)); =20 /* IRQ or gate for cframes */ - cframe_irq_or =3D qdev_new(TYPE_OR_IRQ); + cframe_irq_or =3D qdev_new_orphan(TYPE_OR_IRQ); object_property_add_child(container, "cframe-irq-or-gate", OBJECT(cframe_irq_or)); qdev_prop_set_uint16(cframe_irq_or, "num-lines", map->num_cframe); @@ -1580,7 +1580,7 @@ static void versal_create_cfu(Versal *s, const struct= VersalCfuMap *map) g_autofree char *prop_name; size_t j; =20 - dev =3D qdev_new(TYPE_XLNX_VERSAL_CFRAME_REG); + dev =3D qdev_new_orphan(TYPE_XLNX_VERSAL_CFRAME_REG); object_property_add_child(container, "cframe[*]", OBJECT(dev)); =20 sbd =3D SYS_BUS_DEVICE(dev); @@ -1632,7 +1632,7 @@ static void versal_create_cfu(Versal *s, const struct= VersalCfuMap *map) versal_sysbus_connect_irq(s, sbd, 0, map->cfu_apb_irq); =20 /* CFU SFR */ - cfu_sfr =3D qdev_new(TYPE_XLNX_VERSAL_CFU_SFR); + cfu_sfr =3D qdev_new_orphan(TYPE_XLNX_VERSAL_CFU_SFR); object_property_add_child(container, "cfu-sfr", OBJECT(cfu_sfr)); sbd =3D SYS_BUS_DEVICE(cfu_sfr); =20 @@ -1676,7 +1676,7 @@ static inline void versal_create_crl(Versal *s) ver =3D versal_get_version(s); =20 crl_class =3D xlnx_versal_crl_class_name(ver); - dev =3D qdev_new(crl_class); + dev =3D qdev_new_orphan(crl_class); obj =3D OBJECT(dev); object_property_add_child(OBJECT(s), "crl", obj); =20 @@ -1761,7 +1761,7 @@ static void versal_unimp_area(Versal *s, const char *= name, MemoryRegion *mr, hwaddr base, hwaddr size) { - DeviceState *dev =3D qdev_new(TYPE_UNIMPLEMENTED_DEVICE); + DeviceState *dev =3D qdev_new_orphan(TYPE_UNIMPLEMENTED_DEVICE); MemoryRegion *mr_dev; =20 qdev_prop_set_string(dev, "name", name); @@ -1972,7 +1972,7 @@ void versal_sdhci_plug_card(Versal *s, int sd_idx, Bl= ockBackend *blk) return; } =20 - card =3D qdev_new(TYPE_SD_CARD); + card =3D qdev_new_orphan(TYPE_SD_CARD); object_property_add_child(OBJECT(sdhci), "card[*]", OBJECT(card)); qdev_prop_set_drive_err(card, "drive", blk, &error_fatal); qdev_realize_and_unref(card, qdev_get_child_bus(DEVICE(sdhci), "sd-bus= "), @@ -2015,7 +2015,7 @@ void versal_ospi_create_flash(Versal *s, int flash_id= x, const char *flash_mdl, ospi =3D DEVICE(versal_get_child(s, "ospi")); spi_bus =3D qdev_get_child_bus(ospi, "spi0"); =20 - flash =3D qdev_new(flash_mdl); + flash =3D qdev_new_orphan(flash_mdl); =20 if (blk) { qdev_prop_set_drive_err(flash, "drive", blk, &error_fatal); diff --git a/hw/arm/xlnx-zcu102.c b/hw/arm/xlnx-zcu102.c index 4e48970274..adff52eaf6 100644 --- a/hw/arm/xlnx-zcu102.c +++ b/hw/arm/xlnx-zcu102.c @@ -187,7 +187,7 @@ static void xlnx_zcu102_init(MachineState *machine) error_report("No SD bus found for SD card %d", i); exit(1); } - carddev =3D qdev_new(TYPE_SD_CARD); + carddev =3D qdev_new_orphan(TYPE_SD_CARD); qdev_prop_set_drive_err(carddev, "drive", blk, &error_fatal); qdev_realize_and_unref(carddev, bus, &error_fatal); } @@ -202,7 +202,7 @@ static void xlnx_zcu102_init(MachineState *machine) spi_bus =3D qdev_get_child_bus(DEVICE(&s->soc), bus_name); g_free(bus_name); =20 - flash_dev =3D qdev_new("sst25wf080"); + flash_dev =3D qdev_new_orphan("sst25wf080"); if (dinfo) { qdev_prop_set_drive_err(flash_dev, "drive", blk_by_legacy_dinfo(dinfo), &error_fat= al); @@ -226,7 +226,7 @@ static void xlnx_zcu102_init(MachineState *machine) spi_bus =3D qdev_get_child_bus(DEVICE(&s->soc), bus_name); g_free(bus_name); =20 - flash_dev =3D qdev_new("n25q512a11"); + flash_dev =3D qdev_new_orphan("n25q512a11"); if (dinfo) { qdev_prop_set_drive_err(flash_dev, "drive", blk_by_legacy_dinfo(dinfo), &error_fat= al); diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c index 979e55e305..861ee35839 100644 --- a/hw/arm/xlnx-zynqmp.c +++ b/hw/arm/xlnx-zynqmp.c @@ -365,7 +365,7 @@ static void xlnx_zynqmp_create_unimp_mmio(XlnxZynqMPSta= te *s) =20 for (nr =3D 0; nr < ARRAY_SIZE(unimp_areas); nr++) { const struct UnimpInfo *info =3D &unimp_areas[nr]; - DeviceState *dev =3D qdev_new(TYPE_UNIMPLEMENTED_DEVICE); + DeviceState *dev =3D qdev_new_orphan(TYPE_UNIMPLEMENTED_DEVICE); SysBusDevice *sbd =3D SYS_BUS_DEVICE(dev); =20 assert(info->name && info->base && info->size > 0); diff --git a/hw/audio/intel-hda.c b/hw/audio/intel-hda.c index d7c2c3c2fd..cd4743a405 100644 --- a/hw/audio/intel-hda.c +++ b/hw/audio/intel-hda.c @@ -1313,7 +1313,7 @@ static void intel_hda_and_codec_init(const char *audi= odev) intel_hda =3D qdev_device_add_from_qdict(props, false, &error_fatal); hdabus =3D QLIST_FIRST(&intel_hda->child_bus); =20 - codec =3D qdev_new("hda-duplex"); + codec =3D qdev_new_orphan("hda-duplex"); qdev_prop_set_string(codec, "audiodev", audiodev); qdev_realize_and_unref(codec, hdabus, &error_fatal); object_unref(intel_hda); diff --git a/hw/audio/model.c b/hw/audio/model.c index 86a5419b09..bd8ca35153 100644 --- a/hw/audio/model.c +++ b/hw/audio/model.c @@ -110,7 +110,7 @@ void audio_model_init(void) } =20 if (c->typename) { - DeviceState *dev =3D qdev_new(c->typename); + DeviceState *dev =3D qdev_new_orphan(c->typename); BusState *bus =3D qdev_find_default_bus(DEVICE_GET_CLASS(dev), &er= ror_fatal); qdev_prop_set_string(dev, "audiodev", audiodev_id); qdev_realize_and_unref(dev, bus, &error_fatal); diff --git a/hw/avr/atmega.c b/hw/avr/atmega.c index 280f613af3..a85bdf929a 100644 --- a/hw/avr/atmega.c +++ b/hw/avr/atmega.c @@ -284,7 +284,7 @@ static void atmega_realize(DeviceState *dev, Error **er= rp) * 0x20 - 0x5f: I/O memory * 0x60 - 0xff: Extended I/O */ - s->io =3D qdev_new(TYPE_UNIMPLEMENTED_DEVICE); + s->io =3D qdev_new_orphan(TYPE_UNIMPLEMENTED_DEVICE); qdev_prop_set_string(s->io, "name", "I/O"); qdev_prop_set_uint64(s->io, "size", mc->io_size); sysbus_realize_and_unref(SYS_BUS_DEVICE(s->io), &error_fatal); diff --git a/hw/block/fdc-sysbus.c b/hw/block/fdc-sysbus.c index ab57dfd83e..4050750e65 100644 --- a/hw/block/fdc-sysbus.c +++ b/hw/block/fdc-sysbus.c @@ -102,7 +102,7 @@ void fdctrl_init_sysbus(qemu_irq irq, hwaddr mmio_base,= DriveInfo **fds) SysBusDevice *sbd; FDCtrlSysBus *sys; =20 - dev =3D qdev_new("sysbus-fdc"); + dev =3D qdev_new_orphan("sysbus-fdc"); sys =3D SYSBUS_FDC(dev); sbd =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(sbd, &error_fatal); @@ -118,7 +118,7 @@ void sun4m_fdctrl_init(qemu_irq irq, hwaddr io_base, DeviceState *dev; FDCtrlSysBus *sys; =20 - dev =3D qdev_new("sun-fdtwo"); + dev =3D qdev_new_orphan("sun-fdtwo"); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); sys =3D SYSBUS_FDC(dev); sysbus_connect_irq(SYS_BUS_DEVICE(sys), 0, irq); diff --git a/hw/block/fdc.c b/hw/block/fdc.c index 2c1681b7d0..baac5f3c19 100644 --- a/hw/block/fdc.c +++ b/hw/block/fdc.c @@ -2329,7 +2329,7 @@ void fdctrl_init_drives(FloppyBus *bus, DriveInfo **f= ds) =20 for (i =3D 0; i < MAX_FD; i++) { if (fds[i]) { - dev =3D qdev_new("floppy"); + dev =3D qdev_new_orphan("floppy"); qdev_prop_set_uint32(dev, "unit", i); qdev_prop_set_enum(dev, "drive-type", FLOPPY_DRIVE_TYPE_AUTO); qdev_prop_set_drive_err(dev, "drive", blk_by_legacy_dinfo(fds[= i]), diff --git a/hw/block/pflash_cfi01.c b/hw/block/pflash_cfi01.c index 5b9ddb20b1..0466682ca8 100644 --- a/hw/block/pflash_cfi01.c +++ b/hw/block/pflash_cfi01.c @@ -958,7 +958,7 @@ PFlashCFI01 *pflash_cfi01_register(hwaddr base, uint16_t id2, uint16_t id3, int be) { - DeviceState *dev =3D qdev_new(TYPE_PFLASH_CFI01); + DeviceState *dev =3D qdev_new_orphan(TYPE_PFLASH_CFI01); =20 if (blk) { qdev_prop_set_drive(dev, "drive", blk); diff --git a/hw/block/pflash_cfi02.c b/hw/block/pflash_cfi02.c index 6f952fe7de..a22bdc5830 100644 --- a/hw/block/pflash_cfi02.c +++ b/hw/block/pflash_cfi02.c @@ -1005,7 +1005,7 @@ PFlashCFI02 *pflash_cfi02_register(hwaddr base, uint16_t unlock_addr1, int be) { - DeviceState *dev =3D qdev_new(TYPE_PFLASH_CFI02); + DeviceState *dev =3D qdev_new_orphan(TYPE_PFLASH_CFI02); =20 if (blk) { qdev_prop_set_drive(dev, "drive", blk); diff --git a/hw/block/xen-block.c b/hw/block/xen-block.c index 474c12fe4a..9dd69faa02 100644 --- a/hw/block/xen-block.c +++ b/hw/block/xen-block.c @@ -1074,7 +1074,7 @@ static void xen_block_device_create(XenBackendInstanc= e *backend, goto fail; } =20 - xendev =3D XEN_DEVICE(qdev_new(type)); + xendev =3D XEN_DEVICE(qdev_new_orphan(type)); blockdev =3D XEN_BLOCK_DEVICE(xendev); =20 if (!object_property_set_str(OBJECT(xendev), "vdev", vdev, diff --git a/hw/char/exynos4210_uart.c b/hw/char/exynos4210_uart.c index 46fc4e31b8..6bc18851d9 100644 --- a/hw/char/exynos4210_uart.c +++ b/hw/char/exynos4210_uart.c @@ -659,7 +659,7 @@ DeviceState *exynos4210_uart_create(hwaddr addr, DeviceState *dev; SysBusDevice *bus; =20 - dev =3D qdev_new(TYPE_EXYNOS4210_UART); + dev =3D qdev_new_orphan(TYPE_EXYNOS4210_UART); =20 qdev_prop_set_chr(dev, "chardev", chr); qdev_prop_set_uint32(dev, "channel", channel); diff --git a/hw/char/mcf_uart.c b/hw/char/mcf_uart.c index 24fd42da06..f4fc47364e 100644 --- a/hw/char/mcf_uart.c +++ b/hw/char/mcf_uart.c @@ -351,7 +351,7 @@ DeviceState *mcf_uart_create(qemu_irq irq, Chardev *chr= drv) { DeviceState *dev; =20 - dev =3D qdev_new(TYPE_MCF_UART); + dev =3D qdev_new_orphan(TYPE_MCF_UART); if (chrdrv) { qdev_prop_set_chr(dev, "chardev", chrdrv); } diff --git a/hw/char/mchp_pfsoc_mmuart.c b/hw/char/mchp_pfsoc_mmuart.c index 6673721454..1a6d736f56 100644 --- a/hw/char/mchp_pfsoc_mmuart.c +++ b/hw/char/mchp_pfsoc_mmuart.c @@ -150,7 +150,7 @@ MchpPfSoCMMUartState *mchp_pfsoc_mmuart_create(MemoryRe= gion *sysmem, hwaddr base, qemu_irq irq, Chardev *chr) { - DeviceState *dev =3D qdev_new(TYPE_MCHP_PFSOC_UART); + DeviceState *dev =3D qdev_new_orphan(TYPE_MCHP_PFSOC_UART); SysBusDevice *sbd =3D SYS_BUS_DEVICE(dev); =20 qdev_prop_set_chr(dev, "chardev", chr); diff --git a/hw/char/pl011.c b/hw/char/pl011.c index cb12c3e224..c8adf964ca 100644 --- a/hw/char/pl011.c +++ b/hw/char/pl011.c @@ -38,7 +38,7 @@ DeviceState *pl011_create(hwaddr addr, qemu_irq irq, Char= dev *chr) DeviceState *dev; SysBusDevice *s; =20 - dev =3D qdev_new("pl011"); + dev =3D qdev_new_orphan("pl011"); s =3D SYS_BUS_DEVICE(dev); qdev_prop_set_chr(dev, "chardev", chr); sysbus_realize_and_unref(s, &error_fatal); diff --git a/hw/char/serial-mm.c b/hw/char/serial-mm.c index 0e0be26fa9..cd0844c450 100644 --- a/hw/char/serial-mm.c +++ b/hw/char/serial-mm.c @@ -99,7 +99,7 @@ SerialMM *serial_mm_init(MemoryRegion *address_space, qemu_irq irq, int baudbase, Chardev *chr, enum device_endian end) { - SerialMM *smm =3D SERIAL_MM(qdev_new(TYPE_SERIAL_MM)); + SerialMM *smm =3D SERIAL_MM(qdev_new_orphan(TYPE_SERIAL_MM)); MemoryRegion *mr; =20 qdev_prop_set_uint8(DEVICE(smm), "regshift", regshift); diff --git a/hw/char/sifive_uart.c b/hw/char/sifive_uart.c index b9bbaaef59..1613a975e0 100644 --- a/hw/char/sifive_uart.c +++ b/hw/char/sifive_uart.c @@ -399,7 +399,7 @@ SiFiveUARTState *sifive_uart_create(MemoryRegion *addre= ss_space, hwaddr base, DeviceState *dev; SysBusDevice *s; =20 - dev =3D qdev_new("riscv.sifive.uart"); + dev =3D qdev_new_orphan("riscv.sifive.uart"); s =3D SYS_BUS_DEVICE(dev); qdev_prop_set_chr(dev, "chardev", chr); sysbus_realize_and_unref(s, &error_fatal); diff --git a/hw/char/spapr_vty.c b/hw/char/spapr_vty.c index 1dd9fb155c..a331d4be3b 100644 --- a/hw/char/spapr_vty.c +++ b/hw/char/spapr_vty.c @@ -158,7 +158,7 @@ void spapr_vty_create(SpaprVioBus *bus, Chardev *charde= v) { DeviceState *dev; =20 - dev =3D qdev_new("spapr-vty"); + dev =3D qdev_new_orphan("spapr-vty"); qdev_prop_set_chr(dev, "chardev", chardev); qdev_realize_and_unref(dev, &bus->bus, &error_fatal); } diff --git a/hw/char/xen_console.c b/hw/char/xen_console.c index bdeb76dc87..57520192b9 100644 --- a/hw/char/xen_console.c +++ b/hw/char/xen_console.c @@ -562,7 +562,7 @@ static void xen_console_device_create(XenBackendInstanc= e *backend, goto fail; } =20 - xendev =3D XEN_DEVICE(qdev_new(TYPE_XEN_CONSOLE_DEVICE)); + xendev =3D XEN_DEVICE(qdev_new_orphan(TYPE_XEN_CONSOLE_DEVICE)); con =3D XEN_CONSOLE_DEVICE(xendev); =20 con->dev =3D number; diff --git a/hw/core/qdev.c b/hw/core/qdev.c index e2aab3d1fc..8a8d206a02 100644 --- a/hw/core/qdev.c +++ b/hw/core/qdev.c @@ -145,12 +145,12 @@ bool qdev_set_parent_bus(DeviceState *dev, BusState *= bus, Error **errp) return true; } =20 -DeviceState *qdev_new(const char *name) +DeviceState *qdev_new_orphan(const char *name) { return DEVICE(object_new(name)); } =20 -DeviceState *qdev_try_new(const char *name) +DeviceState *qdev_try_new_orphan(const char *name) { ObjectClass *oc =3D module_object_class_by_name(name); if (!oc) { diff --git a/hw/core/sysbus.c b/hw/core/sysbus.c index 3e1160ee92..fe8baf73b5 100644 --- a/hw/core/sysbus.c +++ b/hw/core/sysbus.c @@ -218,7 +218,7 @@ DeviceState *sysbus_create_varargs(const char *name, qemu_irq irq; int n; =20 - dev =3D qdev_new(name); + dev =3D qdev_new_orphan(name); s =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(s, &error_fatal); if (addr !=3D (hwaddr)-1) { diff --git a/hw/cxl/cxl-host.c b/hw/cxl/cxl-host.c index 7e744312f1..c7a40a81f0 100644 --- a/hw/cxl/cxl-host.c +++ b/hw/cxl/cxl-host.c @@ -26,7 +26,7 @@ static void cxl_fixed_memory_window_config(CXLFixedMemory= WindowOptions *object, int index, Error **errp) { ERRP_GUARD(); - DeviceState *dev =3D qdev_new(TYPE_CXL_FMW); + DeviceState *dev =3D qdev_new_orphan(TYPE_CXL_FMW); CXLFixedWindow *fw =3D CXL_FMW(dev); strList *target; int i; diff --git a/hw/display/sm501.c b/hw/display/sm501.c index cacb6c87ec..1e47e6a32b 100644 --- a/hw/display/sm501.c +++ b/hw/display/sm501.c @@ -1956,7 +1956,7 @@ static void sm501_init(SM501State *s, DeviceState *de= v, /* i2c */ s->i2c_bus =3D i2c_init_bus(dev, "sm501.i2c"); /* ddc */ - I2CDDCState *ddc =3D I2CDDC(qdev_new(TYPE_I2CDDC)); + I2CDDCState *ddc =3D I2CDDC(qdev_new_orphan(TYPE_I2CDDC)); i2c_slave_set_address(I2C_SLAVE(ddc), 0x50); qdev_realize_and_unref(DEVICE(ddc), BUS(s->i2c_bus), &error_abort); =20 diff --git a/hw/display/xlnx_dp.c b/hw/display/xlnx_dp.c index 98126ef320..e8490d644d 100644 --- a/hw/display/xlnx_dp.c +++ b/hw/display/xlnx_dp.c @@ -1346,11 +1346,11 @@ static void xlnx_dp_init(Object *obj) * child properties of this device, we can drop the reference we * hold to them, leaving the child-property as the only reference. */ - s->dpcd =3D DPCD(qdev_new("dpcd")); + s->dpcd =3D DPCD(qdev_new_orphan("dpcd")); object_property_add_child(OBJECT(s), "dpcd", OBJECT(s->dpcd)); object_unref(s->dpcd); =20 - s->edid =3D I2CDDC(qdev_new("i2c-ddc")); + s->edid =3D I2CDDC(qdev_new_orphan("i2c-ddc")); i2c_slave_set_address(I2C_SLAVE(s->edid), 0x50); object_property_add_child(OBJECT(s), "edid", OBJECT(s->edid)); object_unref(s->edid); diff --git a/hw/dma/rc4030.c b/hw/dma/rc4030.c index 546ff67908..ab8aaf7da4 100644 --- a/hw/dma/rc4030.c +++ b/hw/dma/rc4030.c @@ -747,7 +747,7 @@ DeviceState *rc4030_init(rc4030_dma **dmas, IOMMUMemory= Region **dma_mr) { DeviceState *dev; =20 - dev =3D qdev_new(TYPE_RC4030); + dev =3D qdev_new_orphan(TYPE_RC4030); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); =20 *dmas =3D rc4030_allocate_dmas(dev, 4); diff --git a/hw/hexagon/hexagon_dsp.c b/hw/hexagon/hexagon_dsp.c index aa49399322..712749cda8 100644 --- a/hw/hexagon/hexagon_dsp.c +++ b/hw/hexagon/hexagon_dsp.c @@ -131,14 +131,14 @@ static void hexagon_common_init(MachineState *machine= , Rev_t rev, machine->ram_size, &error_fatal); memory_region_add_subregion(address_space, 0x0, &hms->ram); =20 - glob_regs_dev =3D qdev_new(TYPE_HEXAGON_GLOBALREG); + glob_regs_dev =3D qdev_new_orphan(TYPE_HEXAGON_GLOBALREG); object_property_add_child(OBJECT(machine), "global-regs", OBJECT(glob_regs_dev)); qdev_prop_set_uint64(glob_regs_dev, "config-table-addr", m_cfg->cfgbas= e); qdev_prop_set_uint32(glob_regs_dev, "dsp-rev", rev); sysbus_realize_and_unref(SYS_BUS_DEVICE(glob_regs_dev), &error_fatal); =20 - tlb_dev =3D qdev_new(TYPE_HEXAGON_TLB); + tlb_dev =3D qdev_new_orphan(TYPE_HEXAGON_TLB); object_property_add_child(OBJECT(machine), "tlb", OBJECT(tlb_dev)); qdev_prop_set_uint32(tlb_dev, "num-entries", m_cfg->cfgtable.jtlb_size_entries); diff --git a/hw/hexagon/virt.c b/hw/hexagon/virt.c index a3638998b8..a7a6a8fbeb 100644 --- a/hw/hexagon/virt.c +++ b/hw/hexagon/virt.c @@ -129,7 +129,7 @@ static void fdt_add_uart(const HexagonVirtMachineState = *vms, int uart, DeviceState *dev; SysBusDevice *s; =20 - dev =3D qdev_new(TYPE_PL011); + dev =3D qdev_new_orphan(TYPE_PL011); s =3D SYS_BUS_DEVICE(dev); qdev_prop_set_chr(dev, "chardev", serial_hd(0)); qdev_connect_clock_in(dev, "clk", vms->apb_clk); @@ -268,13 +268,13 @@ static void virt_init(MachineState *ms) &vms->parent_obj.cfgtable_rom); fdt_add_hvx(vms, m_cfg); =20 - gsregs_dev =3D qdev_new(TYPE_HEXAGON_GLOBALREG); + gsregs_dev =3D qdev_new_orphan(TYPE_HEXAGON_GLOBALREG); object_property_add_child(OBJECT(ms), "global-regs", OBJECT(gsregs_dev= )); qdev_prop_set_uint64(gsregs_dev, "config-table-addr", m_cfg->cfgbase); qdev_prop_set_uint32(gsregs_dev, "dsp-rev", v68_rev); sysbus_realize_and_unref(SYS_BUS_DEVICE(gsregs_dev), &error_fatal); =20 - tlb_dev =3D qdev_new(TYPE_HEXAGON_TLB); + tlb_dev =3D qdev_new_orphan(TYPE_HEXAGON_TLB); object_property_add_child(OBJECT(ms), "tlb", OBJECT(tlb_dev)); qdev_prop_set_uint32(tlb_dev, "num-entries", m_cfg->cfgtable.jtlb_size_entries); diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c index d762163ddf..02cafbda85 100644 --- a/hw/hppa/machine.c +++ b/hw/hppa/machine.c @@ -265,7 +265,7 @@ static LasiState *lasi_init(void) { DeviceState *dev; =20 - dev =3D qdev_new(TYPE_LASI_CHIP); + dev =3D qdev_new_orphan(TYPE_LASI_CHIP); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); =20 return LASI_CHIP(dev); @@ -275,7 +275,7 @@ static DinoState *dino_init(MemoryRegion *addr_space) { DeviceState *dev; =20 - dev =3D qdev_new(TYPE_DINO_PCI_HOST_BRIDGE); + dev =3D qdev_new_orphan(TYPE_DINO_PCI_HOST_BRIDGE); object_property_set_link(OBJECT(dev), "memory-as", OBJECT(addr_space), &error_fatal); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); @@ -411,7 +411,7 @@ static void machine_HP_common_init_tail(MachineState *m= achine, PCIBus *pci_bus, lasi_dev =3D hpm->lasi_dev; if (lasi_dev && machine->enable_graphics && vga_interface_type !=3D VGA_NONE) { - dev =3D qdev_new("artist"); + dev =3D qdev_new_orphan("artist"); s =3D SYS_BUS_DEVICE(dev); bool disabled =3D object_property_get_bool(OBJECT(dev), "disable",= NULL); if (!disabled) { @@ -614,7 +614,7 @@ static void machine_HP_715_init(MachineState *machine) parallel_hds[0]); =20 /* PS/2 Keyboard/Mouse */ - dev =3D qdev_new(TYPE_LASIPS2); + dev =3D qdev_new_orphan(TYPE_LASIPS2); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, qdev_get_gpio_in(lasi_dev, LASI_IRQ_PS2KBD_HPA)); @@ -706,7 +706,7 @@ static void machine_HP_B160L_init(MachineState *machine) parallel_hds[0]); =20 /* PS/2 Keyboard/Mouse */ - dev =3D qdev_new(TYPE_LASIPS2); + dev =3D qdev_new_orphan(TYPE_LASIPS2); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, qdev_get_gpio_in(lasi_dev, LASI_IRQ_PS2KBD_HPA)); @@ -733,7 +733,7 @@ static AstroState *astro_init(void) { DeviceState *dev; =20 - dev =3D qdev_new(TYPE_ASTRO_CHIP); + dev =3D qdev_new_orphan(TYPE_ASTRO_CHIP); object_property_set_int(OBJECT(dev), "phys-addr-bits", hppa_phys_addr_bits(&cpu[0]->env), &error_abort); diff --git a/hw/i2c/core.c b/hw/i2c/core.c index 54f6bdca88..7803f6113c 100644 --- a/hw/i2c/core.c +++ b/hw/i2c/core.c @@ -368,7 +368,7 @@ I2CSlave *i2c_slave_new(const char *name, uint8_t addr) { DeviceState *dev; =20 - dev =3D qdev_new(name); + dev =3D qdev_new_orphan(name); qdev_prop_set_uint8(dev, "address", addr); return I2C_SLAVE(dev); } diff --git a/hw/i2c/smbus_eeprom.c b/hw/i2c/smbus_eeprom.c index 693d476220..59fe07b16b 100644 --- a/hw/i2c/smbus_eeprom.c +++ b/hw/i2c/smbus_eeprom.c @@ -164,7 +164,7 @@ void smbus_eeprom_init_one(I2CBus *smbus, uint8_t addre= ss, uint8_t *eeprom_buf) { DeviceState *dev; =20 - dev =3D qdev_new(TYPE_SMBUS_EEPROM); + dev =3D qdev_new_orphan(TYPE_SMBUS_EEPROM); qdev_prop_set_uint8(dev, "address", address); /* FIXME: use an array of byte or block backend property? */ SMBUS_EEPROM(dev)->init_data =3D eeprom_buf; diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c index e7adab7d2e..08d54c277f 100644 --- a/hw/i386/microvm.c +++ b/hw/i386/microvm.c @@ -108,7 +108,7 @@ static void create_gpex(MicrovmMachineState *mms) DeviceState *dev; int i; =20 - dev =3D qdev_new(TYPE_GPEX_HOST); + dev =3D qdev_new_orphan(TYPE_GPEX_HOST); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); =20 /* Map only the first size_ecam bytes of ECAM space */ @@ -204,7 +204,7 @@ static void microvm_devices_init(MicrovmMachineState *m= ms) =20 /* Optional and legacy devices */ if (x86_machine_is_acpi_enabled(x86ms)) { - DeviceState *dev =3D qdev_new(TYPE_ACPI_GED); + DeviceState *dev =3D qdev_new_orphan(TYPE_ACPI_GED); qdev_prop_set_uint32(dev, "ged-event", ACPI_GED_PWR_DOWN_EVT); sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, GED_MMIO_BASE); @@ -216,7 +216,7 @@ static void microvm_devices_init(MicrovmMachineState *m= ms) } =20 if (x86_machine_is_acpi_enabled(x86ms) && machine_usb(MACHINE(mms))) { - DeviceState *dev =3D qdev_new(TYPE_XHCI_SYSBUS); + DeviceState *dev =3D qdev_new_orphan(TYPE_XHCI_SYSBUS); qdev_prop_set_uint32(dev, "intrs", 1); qdev_prop_set_uint32(dev, "slots", XHCI_MAXSLOTS); qdev_prop_set_uint32(dev, "p2", 8); diff --git a/hw/i386/nitro_enclave.c b/hw/i386/nitro_enclave.c index 1ce9ee3358..fcad27bd9b 100644 --- a/hw/i386/nitro_enclave.c +++ b/hw/i386/nitro_enclave.c @@ -46,7 +46,7 @@ static BusState *find_free_virtio_mmio_bus(void) =20 static void vhost_user_vsock_init(NitroEnclaveMachineState *nems) { - DeviceState *dev =3D qdev_new(TYPE_VHOST_USER_VSOCK); + DeviceState *dev =3D qdev_new_orphan(TYPE_VHOST_USER_VSOCK); VHostUserVSock *vsock =3D VHOST_USER_VSOCK(dev); BusState *bus; =20 @@ -75,7 +75,7 @@ static void vhost_user_vsock_init(NitroEnclaveMachineStat= e *nems) =20 static void virtio_nsm_init(NitroEnclaveMachineState *nems) { - DeviceState *dev =3D qdev_new(TYPE_VIRTIO_NSM); + DeviceState *dev =3D qdev_new_orphan(TYPE_VIRTIO_NSM); VirtIONSM *vnsm =3D VIRTIO_NSM(dev); BusState *bus =3D find_free_virtio_mmio_bus(); =20 diff --git a/hw/i386/pc.c b/hw/i386/pc.c index f064aa2b3e..bd5ab3d854 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -1065,7 +1065,7 @@ void pc_basic_device_init(struct PCMachineState *pcms, if (pcms->hpet_enabled) { qemu_irq rtc_irq; =20 - hpet =3D qdev_try_new(TYPE_HPET); + hpet =3D qdev_try_new_orphan(TYPE_HPET); if (!hpet) { error_report("couldn't create HPET device"); exit(1); diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c index 82457bdb16..e580f9f2a6 100644 --- a/hw/i386/pc_piix.c +++ b/hw/i386/pc_piix.c @@ -193,7 +193,7 @@ static void pc_init1(MachineState *machine, const char = *pci_type) pci_memory =3D g_new(MemoryRegion, 1); memory_region_init(pci_memory, NULL, "pci", UINT64_MAX); =20 - phb =3D OBJECT(qdev_new(TYPE_I440FX_PCI_HOST_BRIDGE)); + phb =3D OBJECT(qdev_new_orphan(TYPE_I440FX_PCI_HOST_BRIDGE)); object_property_add_child(OBJECT(machine), "i440fx", phb); object_property_set_link(phb, PCI_HOST_PROP_RAM_MEM, OBJECT(ram_memory), &error_fatal); diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c index 6c1e4eff5f..0731403e55 100644 --- a/hw/i386/pc_q35.c +++ b/hw/i386/pc_q35.c @@ -199,7 +199,7 @@ static void pc_q35_init(MachineState *machine) } =20 /* create pci host bus */ - phb =3D OBJECT(qdev_new(TYPE_Q35_HOST_DEVICE)); + phb =3D OBJECT(qdev_new_orphan(TYPE_Q35_HOST_DEVICE)); =20 pci_hole64_size =3D object_property_get_uint(phb, PCI_HOST_PROP_PCI_HOLE64_SI= ZE, diff --git a/hw/i386/pc_sysfw.c b/hw/i386/pc_sysfw.c index 1a41a5972b..d351e3da77 100644 --- a/hw/i386/pc_sysfw.c +++ b/hw/i386/pc_sysfw.c @@ -79,7 +79,7 @@ static PFlashCFI01 *pc_pflash_create(PCMachineState *pcms, const char *name, const char *alias_prop_name) { - DeviceState *dev =3D qdev_new(TYPE_PFLASH_CFI01); + DeviceState *dev =3D qdev_new_orphan(TYPE_PFLASH_CFI01); =20 qdev_prop_set_uint64(dev, "sector-length", FLASH_SECTOR_SIZE); qdev_prop_set_uint8(dev, "width", 1); diff --git a/hw/i386/sgx.c b/hw/i386/sgx.c index 7e4c509f5a..c326385456 100644 --- a/hw/i386/sgx.c +++ b/hw/i386/sgx.c @@ -311,7 +311,7 @@ void pc_machine_init_sgx_epc(PCMachineState *pcms) &sgx_epc->mr); =20 for (list =3D x86ms->sgx_epc_list; list; list =3D list->next) { - DeviceState *dev =3D qdev_new(TYPE_SGX_EPC); + DeviceState *dev =3D qdev_new_orphan(TYPE_SGX_EPC); =20 /* set the memdev link with memory backend */ object_property_parse(OBJECT(dev), SGX_EPC_MEMDEV_PROP, diff --git a/hw/i386/x86-common.c b/hw/i386/x86-common.c index 8f9419e7d3..b8e541e376 100644 --- a/hw/i386/x86-common.c +++ b/hw/i386/x86-common.c @@ -505,9 +505,9 @@ void ioapic_init_gsi(GSIState *gsi_state, Object *paren= t) =20 assert(parent); if (kvm_ioapic_in_kernel()) { - dev =3D qdev_new(TYPE_KVM_IOAPIC); + dev =3D qdev_new_orphan(TYPE_KVM_IOAPIC); } else { - dev =3D qdev_new(TYPE_IOAPIC); + dev =3D qdev_new_orphan(TYPE_IOAPIC); } object_property_add_child(parent, "ioapic", OBJECT(dev)); d =3D SYS_BUS_DEVICE(dev); @@ -525,7 +525,7 @@ DeviceState *ioapic_init_secondary(GSIState *gsi_state) SysBusDevice *d; unsigned int i; =20 - dev =3D qdev_new(TYPE_IOAPIC); + dev =3D qdev_new_orphan(TYPE_IOAPIC); d =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(d, &error_fatal); sysbus_mmio_map(d, 0, IO_APIC_SECONDARY_ADDRESS); diff --git a/hw/i3c/core.c b/hw/i3c/core.c index 168526003d..2fb865490e 100644 --- a/hw/i3c/core.c +++ b/hw/i3c/core.c @@ -547,7 +547,7 @@ I3CTarget *i3c_target_new(const char *name, uint8_t add= r, uint8_t dcr, { DeviceState *dev; =20 - dev =3D qdev_new(name); + dev =3D qdev_new_orphan(name); qdev_prop_set_uint8(dev, "static-address", addr); qdev_prop_set_uint8(dev, "dcr", dcr); qdev_prop_set_uint8(dev, "bcr", bcr); diff --git a/hw/ide/ide-bus.c b/hw/ide/ide-bus.c index b24e4d17b4..40ba94235f 100644 --- a/hw/ide/ide-bus.c +++ b/hw/ide/ide-bus.c @@ -75,7 +75,7 @@ IDEDevice *ide_bus_create_drive(IDEBus *bus, int unit, Dr= iveInfo *drive) { DeviceState *dev; =20 - dev =3D qdev_new(drive->media_cd ? "ide-cd" : "ide-hd"); + dev =3D qdev_new_orphan(drive->media_cd ? "ide-cd" : "ide-hd"); qdev_prop_set_uint32(dev, "unit", unit); qdev_prop_set_drive_err(dev, "drive", blk_by_legacy_dinfo(drive), &error_fatal); diff --git a/hw/intc/exynos4210_gic.c b/hw/intc/exynos4210_gic.c index d15e41174a..dd29a86035 100644 --- a/hw/intc/exynos4210_gic.c +++ b/hw/intc/exynos4210_gic.c @@ -60,7 +60,7 @@ static void exynos4210_gic_realize(DeviceState *dev, Erro= r **errp) uint32_t n =3D s->num_cpu; uint32_t i; =20 - s->gic =3D qdev_new("arm_gic"); + s->gic =3D qdev_new_orphan("arm_gic"); qdev_prop_set_uint32(s->gic, "num-cpu", s->num_cpu); qdev_prop_set_uint32(s->gic, "num-irq", EXYNOS4210_GIC_NIRQ); gicbusdev =3D SYS_BUS_DEVICE(s->gic); diff --git a/hw/intc/riscv_aclint.c b/hw/intc/riscv_aclint.c index 361a8d1bcb..07b5eec742 100644 --- a/hw/intc/riscv_aclint.c +++ b/hw/intc/riscv_aclint.c @@ -377,7 +377,7 @@ DeviceState *riscv_aclint_mtimer_create(hwaddr addr, hw= addr size, bool provide_rdtime) { int i; - DeviceState *dev =3D qdev_new(TYPE_RISCV_ACLINT_MTIMER); + DeviceState *dev =3D qdev_new_orphan(TYPE_RISCV_ACLINT_MTIMER); RISCVAclintMTimerState *s =3D RISCV_ACLINT_MTIMER(dev); =20 assert(num_harts <=3D RISCV_ACLINT_MAX_HARTS); @@ -560,7 +560,7 @@ DeviceState *riscv_aclint_swi_create(hwaddr addr, uint3= 2_t hartid_base, uint32_t num_harts, bool sswi) { int i; - DeviceState *dev =3D qdev_new(TYPE_RISCV_ACLINT_SWI); + DeviceState *dev =3D qdev_new_orphan(TYPE_RISCV_ACLINT_SWI); =20 assert(num_harts <=3D RISCV_ACLINT_MAX_HARTS); assert(!(addr & 0x3)); diff --git a/hw/intc/riscv_aplic.c b/hw/intc/riscv_aplic.c index 84606e9f3d..977e259cb9 100644 --- a/hw/intc/riscv_aplic.c +++ b/hw/intc/riscv_aplic.c @@ -1113,7 +1113,7 @@ DeviceState *riscv_aplic_create(hwaddr addr, hwaddr s= ize, uint32_t hartid_base, uint32_t num_harts, uint32_t num_sources, uint32_t iprio_bits, bool msimode, bool mmode, DeviceState *parent) { - DeviceState *dev =3D qdev_new(TYPE_RISCV_APLIC); + DeviceState *dev =3D qdev_new_orphan(TYPE_RISCV_APLIC); uint32_t i; =20 assert(num_harts < APLIC_MAX_IDC); diff --git a/hw/intc/riscv_imsic.c b/hw/intc/riscv_imsic.c index d6b46cdca2..7972f8ce14 100644 --- a/hw/intc/riscv_imsic.c +++ b/hw/intc/riscv_imsic.c @@ -498,7 +498,7 @@ type_init(riscv_imsic_register_types) DeviceState *riscv_imsic_create(hwaddr addr, uint32_t hartid, bool mmode, uint32_t num_pages, uint32_t num_ids) { - DeviceState *dev =3D qdev_new(TYPE_RISCV_IMSIC); + DeviceState *dev =3D qdev_new_orphan(TYPE_RISCV_IMSIC); CPUState *cpu =3D cpu_by_arch_id(hartid); uint32_t i; =20 diff --git a/hw/intc/s390_flic.c b/hw/intc/s390_flic.c index 57fd4b2b81..c86c0e1e60 100644 --- a/hw/intc/s390_flic.c +++ b/hw/intc/s390_flic.c @@ -62,11 +62,11 @@ void s390_flic_init(void) DeviceState *dev; =20 if (kvm_enabled()) { - dev =3D qdev_new(TYPE_KVM_S390_FLIC); + dev =3D qdev_new_orphan(TYPE_KVM_S390_FLIC); object_property_add_child(qdev_get_machine(), TYPE_KVM_S390_FLIC, OBJECT(dev)); } else { - dev =3D qdev_new(TYPE_QEMU_S390_FLIC); + dev =3D qdev_new_orphan(TYPE_QEMU_S390_FLIC); object_property_add_child(qdev_get_machine(), TYPE_QEMU_S390_FLIC, OBJECT(dev)); } diff --git a/hw/intc/sifive_plic.c b/hw/intc/sifive_plic.c index 9c84ff06a9..00e6258403 100644 --- a/hw/intc/sifive_plic.c +++ b/hw/intc/sifive_plic.c @@ -481,7 +481,7 @@ DeviceState *sifive_plic_create(hwaddr addr, char *hart= _config, uint32_t enable_stride, uint32_t context_base, uint32_t context_stride, uint32_t aperture_size) { - DeviceState *dev =3D qdev_new(TYPE_SIFIVE_PLIC); + DeviceState *dev =3D qdev_new_orphan(TYPE_SIFIVE_PLIC); int i; SiFivePLICState *plic; =20 diff --git a/hw/isa/isa-bus.c b/hw/isa/isa-bus.c index 7e6d2ce5a9..5e6340f635 100644 --- a/hw/isa/isa-bus.c +++ b/hw/isa/isa-bus.c @@ -59,7 +59,7 @@ ISABus *isa_bus_new(DeviceState *dev, MemoryRegion* addre= ss_space, return NULL; } if (!dev) { - bridge =3D qdev_new("isabus-bridge"); + bridge =3D qdev_new_orphan("isabus-bridge"); dev =3D bridge; } =20 @@ -155,12 +155,12 @@ int isa_register_portio_list(ISADevice *dev, =20 ISADevice *isa_new(const char *name) { - return ISA_DEVICE(qdev_new(name)); + return ISA_DEVICE(qdev_new_orphan(name)); } =20 ISADevice *isa_try_new(const char *name) { - return ISA_DEVICE(qdev_try_new(name)); + return ISA_DEVICE(qdev_try_new_orphan(name)); } =20 ISADevice *isa_create_simple(ISABus *bus, const char *name) diff --git a/hw/loongarch/virt.c b/hw/loongarch/virt.c index 6693dea647..23751c46d7 100644 --- a/hw/loongarch/virt.c +++ b/hw/loongarch/virt.c @@ -150,7 +150,7 @@ static PFlashCFI01 *virt_flash_create1(LoongArchVirtMac= hineState *lvms, const char *name, const char *alias_prop_name) { - DeviceState *dev =3D qdev_new(TYPE_PFLASH_CFI01); + DeviceState *dev =3D qdev_new_orphan(TYPE_PFLASH_CFI01); =20 qdev_prop_set_uint64(dev, "sector-length", VIRT_FLASH_SECTOR_SIZE); qdev_prop_set_uint8(dev, "width", 4); @@ -295,7 +295,7 @@ static DeviceState *create_acpi_ged(DeviceState *pch_pi= c, event |=3D ACPI_GED_CPU_HOTPLUG_EVT; } =20 - dev =3D qdev_new(TYPE_ACPI_GED); + dev =3D qdev_new_orphan(TYPE_ACPI_GED); qdev_prop_set_uint32(dev, "ged-event", event); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); =20 @@ -322,7 +322,7 @@ static DeviceState *create_platform_bus(DeviceState *pc= h_pic) int i, irq; MemoryRegion *sysmem =3D get_system_memory(); =20 - dev =3D qdev_new(TYPE_PLATFORM_BUS_DEVICE); + dev =3D qdev_new_orphan(TYPE_PLATFORM_BUS_DEVICE); dev->id =3D g_strdup(TYPE_PLATFORM_BUS_DEVICE); qdev_prop_set_uint32(dev, "num_irqs", VIRT_PLATFORM_BUS_NUM_IRQS); qdev_prop_set_uint32(dev, "mmio_size", VIRT_PLATFORM_BUS_SIZE); @@ -400,7 +400,7 @@ static void virt_devices_init(DeviceState *pch_pic, hwaddr mmio_base, mmio_size; int i, irq; =20 - gpex_dev =3D qdev_new(TYPE_GPEX_HOST); + gpex_dev =3D qdev_new_orphan(TYPE_GPEX_HOST); d =3D SYS_BUS_DEVICE(gpex_dev); sysbus_realize_and_unref(d, &error_fatal); pci_bus =3D PCI_HOST_BRIDGE(gpex_dev)->bus; @@ -601,20 +601,20 @@ static void virt_irq_init(LoongArchVirtMachineState *= lvms) */ =20 /* Create IPI device */ - ipi =3D qdev_new(TYPE_LOONGARCH_IPI); + ipi =3D qdev_new_orphan(TYPE_LOONGARCH_IPI); lvms->ipi =3D ipi; sysbus_realize_and_unref(SYS_BUS_DEVICE(ipi), &error_fatal); =20 /* Create DINTC device*/ if (virt_has_dmsi(lvms)) { - dintc =3D qdev_new(TYPE_LOONGARCH_DINTC); + dintc =3D qdev_new_orphan(TYPE_LOONGARCH_DINTC); lvms->dintc =3D dintc; sysbus_realize_and_unref(SYS_BUS_DEVICE(dintc), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dintc), 0, VIRT_DINTC_BASE); } =20 /* Create EXTIOI device */ - extioi =3D qdev_new(TYPE_LOONGARCH_EXTIOI); + extioi =3D qdev_new_orphan(TYPE_LOONGARCH_EXTIOI); lvms->extioi =3D extioi; if (virt_is_veiointc_enabled(lvms)) { qdev_prop_set_bit(extioi, "has-virtualization-extension", true); @@ -622,13 +622,13 @@ static void virt_irq_init(LoongArchVirtMachineState *= lvms) sysbus_realize_and_unref(SYS_BUS_DEVICE(extioi), &error_fatal); =20 virt_cpu_irq_init(lvms); - pch_pic =3D qdev_new(TYPE_LOONGARCH_PIC); + pch_pic =3D qdev_new_orphan(TYPE_LOONGARCH_PIC); num =3D VIRT_PCH_PIC_IRQ_NUM; qdev_prop_set_uint32(pch_pic, "pch_pic_irq_num", num); d =3D SYS_BUS_DEVICE(pch_pic); sysbus_realize_and_unref(d, &error_fatal); =20 - pch_msi =3D qdev_new(TYPE_LOONGARCH_PCH_MSI); + pch_msi =3D qdev_new_orphan(TYPE_LOONGARCH_PCH_MSI); start =3D num; num =3D EXTIOI_IRQS - start; qdev_prop_set_uint32(pch_msi, "msi_irq_base", start); diff --git a/hw/m68k/an5206.c b/hw/m68k/an5206.c index 1acd2fbdfb..f29c3b5226 100644 --- a/hw/m68k/an5206.c +++ b/hw/m68k/an5206.c @@ -25,7 +25,7 @@ static void mcf5206_init(M68kCPU *cpu, MemoryRegion *sysm= em, uint32_t base) DeviceState *dev; SysBusDevice *s; =20 - dev =3D qdev_new(TYPE_MCF5206_MBAR); + dev =3D qdev_new_orphan(TYPE_MCF5206_MBAR); object_property_set_link(OBJECT(dev), "m68k-cpu", OBJECT(cpu), &error_abort); s =3D SYS_BUS_DEVICE(dev); diff --git a/hw/m68k/mcf_intc.c b/hw/m68k/mcf_intc.c index e8d3bd937d..123bd7e385 100644 --- a/hw/m68k/mcf_intc.c +++ b/hw/m68k/mcf_intc.c @@ -211,7 +211,7 @@ DeviceState *mcf_intc_init(MemoryRegion *sysmem, hwaddr= base, M68kCPU *cpu) { DeviceState *dev; =20 - dev =3D qdev_new(TYPE_MCF_INTC); + dev =3D qdev_new_orphan(TYPE_MCF_INTC); object_property_set_link(OBJECT(dev), "m68k-cpu", OBJECT(cpu), &error_abort); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); diff --git a/hw/m68k/next-cube.c b/hw/m68k/next-cube.c index 9a0a57c0cc..5bb123594d 100644 --- a/hw/m68k/next-cube.c +++ b/hw/m68k/next-cube.c @@ -1272,7 +1272,7 @@ static void next_cube_init(MachineState *machine) env->sr =3D 0x2700; =20 /* Peripheral Controller */ - pcdev =3D qdev_new(TYPE_NEXT_PC); + pcdev =3D qdev_new_orphan(TYPE_NEXT_PC); object_property_set_link(OBJECT(pcdev), "cpu", OBJECT(cpu), &error_abo= rt); sysbus_realize_and_unref(SYS_BUS_DEVICE(pcdev), &error_fatal); =20 diff --git a/hw/m68k/q800.c b/hw/m68k/q800.c index ab64250c47..688299ee2d 100644 --- a/hw/m68k/q800.c +++ b/hw/m68k/q800.c @@ -355,9 +355,9 @@ static void q800_machine_init(MachineState *machine) "auxmode", 0)); =20 adb_bus =3D qdev_get_child_bus(DEVICE(&m->via1), "adb.0"); - dev =3D qdev_new(TYPE_ADB_KEYBOARD); + dev =3D qdev_new_orphan(TYPE_ADB_KEYBOARD); qdev_realize_and_unref(dev, adb_bus, &error_fatal); - dev =3D qdev_new(TYPE_ADB_MOUSE); + dev =3D qdev_new_orphan(TYPE_ADB_MOUSE); qdev_realize_and_unref(dev, adb_bus, &error_fatal); =20 /* VIA 2 */ diff --git a/hw/m68k/virt.c b/hw/m68k/virt.c index 51158ce1c0..f86d55d96c 100644 --- a/hw/m68k/virt.c +++ b/hw/m68k/virt.c @@ -155,7 +155,7 @@ static void virt_init(MachineState *machine) =20 /* IRQ Controller */ =20 - irqc_dev =3D qdev_new(TYPE_M68K_IRQC); + irqc_dev =3D qdev_new_orphan(TYPE_M68K_IRQC); object_property_set_link(OBJECT(irqc_dev), "m68k-cpu", OBJECT(cpu), &error_abort); sysbus_realize_and_unref(SYS_BUS_DEVICE(irqc_dev), &error_fatal); @@ -169,7 +169,7 @@ static void virt_init(MachineState *machine) */ io_base =3D VIRT_GF_PIC_MMIO_BASE; for (i =3D 0; i < VIRT_GF_PIC_NB; i++) { - pic_dev[i] =3D qdev_new(TYPE_GOLDFISH_PIC); + pic_dev[i] =3D qdev_new_orphan(TYPE_GOLDFISH_PIC); sysbus =3D SYS_BUS_DEVICE(pic_dev[i]); qdev_prop_set_uint8(pic_dev[i], "index", i); sysbus_realize_and_unref(sysbus, &error_fatal); @@ -183,7 +183,7 @@ static void virt_init(MachineState *machine) /* goldfish-rtc */ io_base =3D VIRT_GF_RTC_MMIO_BASE; for (i =3D 0; i < VIRT_GF_RTC_NB; i++) { - dev =3D qdev_new(TYPE_GOLDFISH_RTC); + dev =3D qdev_new_orphan(TYPE_GOLDFISH_RTC); qdev_prop_set_bit(dev, "big-endian", true); sysbus =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(sysbus, &error_fatal); @@ -194,7 +194,7 @@ static void virt_init(MachineState *machine) } =20 /* goldfish-tty */ - dev =3D qdev_new(TYPE_GOLDFISH_TTY); + dev =3D qdev_new_orphan(TYPE_GOLDFISH_TTY); sysbus =3D SYS_BUS_DEVICE(dev); qdev_prop_set_chr(dev, "chardev", serial_hd(0)); sysbus_realize_and_unref(sysbus, &error_fatal); @@ -208,7 +208,7 @@ static void virt_init(MachineState *machine) /* virtio-mmio */ io_base =3D VIRT_VIRTIO_MMIO_BASE; for (i =3D 0; i < 128; i++) { - dev =3D qdev_new(TYPE_VIRTIO_MMIO); + dev =3D qdev_new_orphan(TYPE_VIRTIO_MMIO); qdev_prop_set_bit(dev, "force-legacy", false); sysbus =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(sysbus, &error_fatal); diff --git a/hw/mem/sparse-mem.c b/hw/mem/sparse-mem.c index 3b754de887..3310504578 100644 --- a/hw/mem/sparse-mem.c +++ b/hw/mem/sparse-mem.c @@ -108,7 +108,7 @@ MemoryRegion *sparse_mem_init(uint64_t addr, uint64_t l= ength) { DeviceState *dev; =20 - dev =3D qdev_new(TYPE_SPARSE_MEM); + dev =3D qdev_new_orphan(TYPE_SPARSE_MEM); qdev_prop_set_uint64(dev, "baseaddr", addr); qdev_prop_set_uint64(dev, "length", length); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); diff --git a/hw/microblaze/petalogix_ml605_mmu.c b/hw/microblaze/petalogix_= ml605_mmu.c index 8f9f54ff1e..178cfd4a5e 100644 --- a/hw/microblaze/petalogix_ml605_mmu.c +++ b/hw/microblaze/petalogix_ml605_mmu.c @@ -110,7 +110,7 @@ petalogix_ml605_init(MachineState *machine) 64 * KiB, 2, 0x89, 0x18, 0x0000, 0x0, 0); =20 =20 - dev =3D qdev_new("xlnx.xps-intc"); + dev =3D qdev_new_orphan("xlnx.xps-intc"); qdev_prop_set_enum(dev, "endianness", ENDIAN_MODE_LITTLE); qdev_prop_set_uint32(dev, "kind-of-intr", 1 << TIMER_IRQ); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); @@ -126,7 +126,7 @@ petalogix_ml605_init(MachineState *machine) DEVICE_LITTLE_ENDIAN); =20 /* 2 timers at irq 2 @ 100 Mhz. */ - dev =3D qdev_new("xlnx.xps-timer"); + dev =3D qdev_new_orphan("xlnx.xps-timer"); qdev_prop_set_enum(dev, "endianness", ENDIAN_MODE_LITTLE); qdev_prop_set_uint32(dev, "one-timer-only", 0); qdev_prop_set_uint32(dev, "clock-frequency", 100 * 1000000); @@ -135,8 +135,8 @@ petalogix_ml605_init(MachineState *machine) sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, irq[TIMER_IRQ]); =20 /* axi ethernet and dma initialization. */ - eth0 =3D qdev_new("xlnx.axi-ethernet"); - dma =3D qdev_new("xlnx.axi-dma"); + eth0 =3D qdev_new_orphan("xlnx.axi-ethernet"); + dma =3D qdev_new_orphan("xlnx.axi-dma"); =20 /* FIXME: attach to the sysbus instead */ object_property_add_child(qdev_get_machine(), "xilinx-eth", OBJECT(eth= 0)); @@ -174,7 +174,7 @@ petalogix_ml605_init(MachineState *machine) { SSIBus *spi; =20 - dev =3D qdev_new("xlnx.xps-spi"); + dev =3D qdev_new_orphan("xlnx.xps-spi"); qdev_prop_set_enum(dev, "endianness", ENDIAN_MODE_LITTLE); qdev_prop_set_uint8(dev, "num-ss-bits", NUM_SPI_FLASHES); busdev =3D SYS_BUS_DEVICE(dev); @@ -188,7 +188,7 @@ petalogix_ml605_init(MachineState *machine) dinfo =3D drive_get(IF_MTD, 0, i); qemu_irq cs_line; =20 - dev =3D qdev_new("n25q128"); + dev =3D qdev_new_orphan("n25q128"); if (dinfo) { qdev_prop_set_drive_err(dev, "drive", blk_by_legacy_dinfo(dinfo), diff --git a/hw/microblaze/petalogix_s3adsp1800_mmu.c b/hw/microblaze/petal= ogix_s3adsp1800_mmu.c index c5f6431900..91c1d64451 100644 --- a/hw/microblaze/petalogix_s3adsp1800_mmu.c +++ b/hw/microblaze/petalogix_s3adsp1800_mmu.c @@ -107,7 +107,7 @@ petalogix_s3adsp1800_init(MachineState *machine) dinfo ? blk_by_legacy_dinfo(dinfo) : NULL, 64 * KiB, 1, 0x89, 0x18, 0x0000, 0x0, 1); =20 - dev =3D qdev_new("xlnx.xps-intc"); + dev =3D qdev_new_orphan("xlnx.xps-intc"); qdev_prop_set_enum(dev, "endianness", endianness); qdev_prop_set_uint32(dev, "kind-of-intr", 1 << ETHLITE_IRQ | 1 << UARTLITE_IRQ); @@ -119,7 +119,7 @@ petalogix_s3adsp1800_init(MachineState *machine) irq[i] =3D qdev_get_gpio_in(dev, i); } =20 - dev =3D qdev_new(TYPE_XILINX_UARTLITE); + dev =3D qdev_new_orphan(TYPE_XILINX_UARTLITE); qdev_prop_set_enum(dev, "endianness", endianness); qdev_prop_set_chr(dev, "chardev", serial_hd(0)); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); @@ -127,7 +127,7 @@ petalogix_s3adsp1800_init(MachineState *machine) sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, irq[UARTLITE_IRQ]); =20 /* 2 timers at irq 2 @ 62 Mhz. */ - dev =3D qdev_new("xlnx.xps-timer"); + dev =3D qdev_new_orphan("xlnx.xps-timer"); qdev_prop_set_enum(dev, "endianness", endianness); qdev_prop_set_uint32(dev, "one-timer-only", 0); qdev_prop_set_uint32(dev, "clock-frequency", 62 * 1000000); @@ -135,7 +135,7 @@ petalogix_s3adsp1800_init(MachineState *machine) sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, TIMER_BASEADDR); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, irq[TIMER_IRQ]); =20 - dev =3D qdev_new("xlnx.xps-ethernetlite"); + dev =3D qdev_new_orphan("xlnx.xps-ethernetlite"); qdev_prop_set_enum(dev, "endianness", endianness); qemu_configure_nic_device(dev, true, NULL); qdev_prop_set_uint32(dev, "tx-ping-pong", 0); diff --git a/hw/mips/boston.c b/hw/mips/boston.c index 4579df23eb..e328c578a5 100644 --- a/hw/mips/boston.c +++ b/hw/mips/boston.c @@ -432,7 +432,7 @@ xilinx_pcie_init(MemoryRegion *sys_mem, uint32_t bus_nr, DeviceState *dev; MemoryRegion *cfg, *mmio; =20 - dev =3D qdev_new(TYPE_XILINX_PCIE_HOST); + dev =3D qdev_new_orphan(TYPE_XILINX_PCIE_HOST); =20 qdev_prop_set_uint32(dev, "bus_nr", bus_nr); qdev_prop_set_uint64(dev, "cfg_base", cfg_base); @@ -688,7 +688,7 @@ static void boston_mach_init(MachineState *machine) exit(1); } =20 - dev =3D qdev_new(TYPE_BOSTON); + dev =3D qdev_new_orphan(TYPE_BOSTON); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); =20 s =3D BOSTON(dev); diff --git a/hw/mips/jazz.c b/hw/mips/jazz.c index bec534d38b..f9be67249f 100644 --- a/hw/mips/jazz.c +++ b/hw/mips/jazz.c @@ -127,7 +127,7 @@ static void mips_jazz_init_net(IOMMUMemoryRegion *rc403= 0_dma_mr, return; } =20 - dev =3D qdev_new("dp8393x"); + dev =3D qdev_new_orphan("dp8393x"); qdev_set_nic_properties(dev, nd); qdev_prop_set_uint8(dev, "it_shift", 2); qdev_prop_set_bit(dev, "big_endian", TARGET_BIG_ENDIAN); @@ -296,7 +296,7 @@ static void mips_jazz_init(MachineState *machine, /* Video card */ switch (jazz_model) { case JAZZ_MAGNUM: - dev =3D qdev_new("sysbus-g364"); + dev =3D qdev_new_orphan("sysbus-g364"); sysbus =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(sysbus, &error_fatal); sysbus_mmio_map(sysbus, 0, 0x60080000); @@ -313,7 +313,7 @@ static void mips_jazz_init(MachineState *machine, } break; case JAZZ_PICA61: - dev =3D qdev_new(TYPE_VGA_MMIO); + dev =3D qdev_new_orphan(TYPE_VGA_MMIO); qdev_prop_set_uint8(dev, "it_shift", 0); sysbus =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(sysbus, &error_fatal); @@ -329,7 +329,7 @@ static void mips_jazz_init(MachineState *machine, mips_jazz_init_net(rc4030_dma_mr, rc4030, dp8393x_prom); =20 /* SCSI adapter */ - dev =3D qdev_new(TYPE_SYSBUS_ESP); + dev =3D qdev_new_orphan(TYPE_SYSBUS_ESP); sysbus_esp =3D SYSBUS_ESP(dev); esp =3D &sysbus_esp->esp; esp->dma_memory_read =3D rc4030_dma_read; @@ -359,7 +359,7 @@ static void mips_jazz_init(MachineState *machine, memory_region_add_subregion(address_space, 0x80004000, rtc); =20 /* Keyboard (i8042) */ - i8042 =3D I8042_MMIO(qdev_new(TYPE_I8042_MMIO)); + i8042 =3D I8042_MMIO(qdev_new_orphan(TYPE_I8042_MMIO)); qdev_prop_set_uint64(DEVICE(i8042), "mask", 1); qdev_prop_set_uint32(DEVICE(i8042), "size", 0x1000); sysbus_realize_and_unref(SYS_BUS_DEVICE(i8042), &error_fatal); @@ -389,7 +389,7 @@ static void mips_jazz_init(MachineState *machine, /* FIXME: missing Jazz sound at 0x8000c000, rc4030[2] */ =20 /* NVRAM */ - dev =3D qdev_new("ds1225y"); + dev =3D qdev_new_orphan("ds1225y"); sysbus =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(sysbus, &error_fatal); sysbus_mmio_map(sysbus, 0, 0x80009000); diff --git a/hw/mips/loongson3_virt.c b/hw/mips/loongson3_virt.c index 7de3fb09c1..d3b728339e 100644 --- a/hw/mips/loongson3_virt.c +++ b/hw/mips/loongson3_virt.c @@ -424,7 +424,7 @@ static inline void loongson3_virt_devices_init(MachineS= tate *machine, MachineClass *mc =3D MACHINE_GET_CLASS(machine); LoongsonMachineState *s =3D LOONGSON_MACHINE(machine); =20 - dev =3D qdev_new(TYPE_GPEX_HOST); + dev =3D qdev_new_orphan(TYPE_GPEX_HOST); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); pci_bus =3D PCI_HOST_BRIDGE(dev)->bus; =20 @@ -519,7 +519,7 @@ static void mips_loongson3_virt_init(MachineState *mach= ine) =20 memory_region_init(iocsr, OBJECT(machine), "loongson3.iocsr", UINT32_M= AX); =20 - ipi =3D qdev_new(TYPE_LOONGSON_IPI); + ipi =3D qdev_new_orphan(TYPE_LOONGSON_IPI); qdev_prop_set_uint32(ipi, "num-cpu", machine->smp.cpus); sysbus_realize_and_unref(SYS_BUS_DEVICE(ipi), &error_fatal); memory_region_add_subregion(iocsr, SMP_IPI_MAILBOX, @@ -527,7 +527,7 @@ static void mips_loongson3_virt_init(MachineState *mach= ine) memory_region_add_subregion(iocsr, MAIL_SEND_ADDR, sysbus_mmio_get_region(SYS_BUS_DEVICE(ipi), 1)= ); =20 - liointc =3D qdev_new("loongson.liointc"); + liointc =3D qdev_new_orphan("loongson.liointc"); sysbus_realize_and_unref(SYS_BUS_DEVICE(liointc), &error_fatal); =20 sysbus_mmio_map(SYS_BUS_DEVICE(liointc), 0, virt_memmap[VIRT_LIOINTC].= base); diff --git a/hw/mips/malta.c b/hw/mips/malta.c index 38c71f66f2..fc5dbf262c 100644 --- a/hw/mips/malta.c +++ b/hw/mips/malta.c @@ -1098,7 +1098,7 @@ void mips_malta_init(MachineState *machine) PCIDevice *piix4; DeviceState *dev; =20 - s =3D MIPS_MALTA(qdev_new(TYPE_MIPS_MALTA)); + s =3D MIPS_MALTA(qdev_new_orphan(TYPE_MIPS_MALTA)); sysbus_realize_and_unref(SYS_BUS_DEVICE(s), &error_fatal); =20 /* create CPU */ @@ -1226,7 +1226,7 @@ void mips_malta_init(MachineState *machine) stl_p(memory_region_get_ram_ptr(bios_copy) + 0x10, 0x00000420); =20 /* Northbridge */ - dev =3D qdev_new("gt64120"); + dev =3D qdev_new_orphan("gt64120"); qdev_prop_set_bit(dev, "cpu-little-endian", !TARGET_BIG_ENDIAN); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); pci_bus =3D PCI_BUS(qdev_get_child_bus(dev, "pci")); diff --git a/hw/misc/empty_slot.c b/hw/misc/empty_slot.c index aab9373c09..182211fdcc 100644 --- a/hw/misc/empty_slot.c +++ b/hw/misc/empty_slot.c @@ -58,7 +58,7 @@ void empty_slot_init(const char *name, hwaddr addr, uint6= 4_t slot_size) /* Only empty slots larger than 0 byte need handling. */ DeviceState *dev; =20 - dev =3D qdev_new(TYPE_EMPTY_SLOT); + dev =3D qdev_new_orphan(TYPE_EMPTY_SLOT); =20 qdev_prop_set_uint64(dev, "size", slot_size); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); diff --git a/hw/misc/led.c b/hw/misc/led.c index 8b758c1b76..620284063b 100644 --- a/hw/misc/led.c +++ b/hw/misc/led.c @@ -141,7 +141,7 @@ LEDState *led_create_simple(Object *parentobj, g_autofree char *name =3D NULL; DeviceState *dev; =20 - dev =3D qdev_new(TYPE_LED); + dev =3D qdev_new_orphan(TYPE_LED); qdev_prop_set_bit(dev, "gpio-active-high", gpio_polarity =3D=3D GPIO_POLARITY_ACTIVE_HIGH); qdev_prop_set_string(dev, "color", led_color_name[color]); diff --git a/hw/misc/sifive_e_prci.c b/hw/misc/sifive_e_prci.c index a4a60e7b40..7ac5db5933 100644 --- a/hw/misc/sifive_e_prci.c +++ b/hw/misc/sifive_e_prci.c @@ -117,7 +117,7 @@ type_init(sifive_e_prci_register_types) */ DeviceState *sifive_e_prci_create(hwaddr addr) { - DeviceState *dev =3D qdev_new(TYPE_SIFIVE_E_PRCI); + DeviceState *dev =3D qdev_new_orphan(TYPE_SIFIVE_E_PRCI); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, addr); return dev; diff --git a/hw/misc/sifive_test.c b/hw/misc/sifive_test.c index 41f102e2dc..f861858d9b 100644 --- a/hw/misc/sifive_test.c +++ b/hw/misc/sifive_test.c @@ -97,7 +97,7 @@ type_init(sifive_test_register_types) */ DeviceState *sifive_test_create(hwaddr addr) { - DeviceState *dev =3D qdev_new(TYPE_SIFIVE_TEST); + DeviceState *dev =3D qdev_new_orphan(TYPE_SIFIVE_TEST); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, addr); return dev; diff --git a/hw/net/lan9118.c b/hw/net/lan9118.c index 072a741d81..87213c0d8d 100644 --- a/hw/net/lan9118.c +++ b/hw/net/lan9118.c @@ -1339,7 +1339,7 @@ void lan9118_init(uint32_t base, qemu_irq irq) DeviceState *dev; SysBusDevice *s; =20 - dev =3D qdev_new(TYPE_LAN9118); + dev =3D qdev_new_orphan(TYPE_LAN9118); qemu_configure_nic_device(dev, true, NULL); s =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(s, &error_fatal); diff --git a/hw/net/smc91c111.c b/hw/net/smc91c111.c index 3b526524fb..6186d88717 100644 --- a/hw/net/smc91c111.c +++ b/hw/net/smc91c111.c @@ -954,7 +954,7 @@ void smc91c111_init(uint32_t base, qemu_irq irq) DeviceState *dev; SysBusDevice *s; =20 - dev =3D qdev_new(TYPE_SMC91C111); + dev =3D qdev_new_orphan(TYPE_SMC91C111); qemu_configure_nic_device(dev, true, NULL); s =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(s, &error_fatal); diff --git a/hw/net/spapr_llan.c b/hw/net/spapr_llan.c index 550848307d..f10ea64798 100644 --- a/hw/net/spapr_llan.c +++ b/hw/net/spapr_llan.c @@ -371,7 +371,7 @@ void spapr_vlan_create(SpaprVioBus *bus, NICInfo *nd) { DeviceState *dev; =20 - dev =3D qdev_new("spapr-vlan"); + dev =3D qdev_new_orphan("spapr-vlan"); =20 qdev_set_nic_properties(dev, nd); =20 diff --git a/hw/net/xen_nic.c b/hw/net/xen_nic.c index f4d0b06013..212281aac7 100644 --- a/hw/net/xen_nic.c +++ b/hw/net/xen_nic.c @@ -619,7 +619,7 @@ static void xen_net_device_create(XenBackendInstance *b= ackend, goto fail; } =20 - xendev =3D XEN_DEVICE(qdev_new(TYPE_XEN_NET_DEVICE)); + xendev =3D XEN_DEVICE(qdev_new_orphan(TYPE_XEN_NET_DEVICE)); net =3D XEN_NET_DEVICE(xendev); =20 net->dev =3D number; diff --git a/hw/nitro/machine.c b/hw/nitro/machine.c index 8849959359..efcc2c8a3f 100644 --- a/hw/nitro/machine.c +++ b/hw/nitro/machine.c @@ -197,7 +197,7 @@ static void nitro_machine_init(MachineState *machine) NitroVsockBridge *bridge =3D nitro_vsock_bridge_create(); =20 /* Nitro Enclaves require a heartbeat device. Provide one. */ - qdev_realize(qdev_new(TYPE_NITRO_HEARTBEAT), + qdev_realize(qdev_new_orphan(TYPE_NITRO_HEARTBEAT), BUS(&bridge->bus), &error_fatal); =20 /* @@ -209,7 +209,7 @@ static void nitro_machine_init(MachineState *machine) Chardev *chr =3D serial_hd(0); =20 if (chr) { - DeviceState *dev =3D qdev_new(TYPE_NITRO_SERIAL_VSOCK); + DeviceState *dev =3D qdev_new_orphan(TYPE_NITRO_SERIAL_VSO= CK); =20 qdev_prop_set_chr(dev, "chardev", chr); qdev_realize(dev, BUS(&bridge->bus), &error_fatal); diff --git a/hw/nitro/nitro-vsock-bus.c b/hw/nitro/nitro-vsock-bus.c index eed29df512..f7540eaa54 100644 --- a/hw/nitro/nitro-vsock-bus.c +++ b/hw/nitro/nitro-vsock-bus.c @@ -48,7 +48,7 @@ void nitro_vsock_bridge_start_enclave(NitroVsockBridge *b= ridge, =20 NitroVsockBridge *nitro_vsock_bridge_create(void) { - DeviceState *dev =3D qdev_new(TYPE_NITRO_VSOCK_BRIDGE); + DeviceState *dev =3D qdev_new_orphan(TYPE_NITRO_VSOCK_BRIDGE); =20 qdev_set_id(dev, g_strdup("nitro-vsock"), &error_fatal); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index a67e159889..300a5aa835 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -9556,7 +9556,7 @@ static int nvme_init_subsys(NvmeCtrl *n, Error **errp) int cntlid; =20 if (!n->subsys) { - DeviceState *dev =3D qdev_new(TYPE_NVME_SUBSYS); + DeviceState *dev =3D qdev_new_orphan(TYPE_NVME_SUBSYS); =20 qdev_prop_set_string(dev, "nqn", n->params.serial); =20 diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c index b057d870c0..01fba1c6f6 100644 --- a/hw/nvram/fw_cfg.c +++ b/hw/nvram/fw_cfg.c @@ -1029,7 +1029,7 @@ FWCfgState *fw_cfg_init_io_dma(uint32_t iobase, Addre= ssSpace *dma_as) =20 assert(dma_as); =20 - dev =3D qdev_new(TYPE_FW_CFG_IO); + dev =3D qdev_new_orphan(TYPE_FW_CFG_IO); =20 object_property_add_child(OBJECT(qdev_get_machine()), TYPE_FW_CFG, OBJECT(dev)); @@ -1061,7 +1061,7 @@ static FWCfgState *fw_cfg_init_mem_internal(hwaddr ct= l_addr, FWCfgState *s; bool dma_requested =3D dma_addr && dma_as; =20 - dev =3D qdev_new(TYPE_FW_CFG_MEM); + dev =3D qdev_new_orphan(TYPE_FW_CFG_MEM); qdev_prop_set_uint32(dev, "data_width", data_width); if (!dma_requested) { qdev_prop_set_bit(dev, "dma_enabled", false); diff --git a/hw/or1k/or1k-sim.c b/hw/or1k/or1k-sim.c index b55105cd14..bd668d0e47 100644 --- a/hw/or1k/or1k-sim.c +++ b/hw/or1k/or1k-sim.c @@ -186,7 +186,7 @@ static void openrisc_sim_net_init(Or1ksimState *state, = hwaddr base, hwaddr size, s =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(s, &error_fatal); if (num_cpus > 1) { - DeviceState *splitter =3D qdev_new(TYPE_SPLIT_IRQ); + DeviceState *splitter =3D qdev_new_orphan(TYPE_SPLIT_IRQ); qdev_prop_set_uint32(splitter, "num-lines", num_cpus); qdev_realize_and_unref(splitter, NULL, &error_fatal); for (i =3D 0; i < num_cpus; i++) { @@ -221,7 +221,7 @@ static void openrisc_sim_ompic_init(Or1ksimState *state= , hwaddr base, char *nodename; int i; =20 - dev =3D qdev_new("or1k-ompic"); + dev =3D qdev_new_orphan("or1k-ompic"); qdev_prop_set_uint32(dev, "num-cpus", num_cpus); =20 s =3D SYS_BUS_DEVICE(dev); @@ -254,7 +254,7 @@ static void openrisc_sim_serial_init(Or1ksimState *stat= e, hwaddr base, int i; =20 if (num_cpus > 1) { - DeviceState *splitter =3D qdev_new(TYPE_SPLIT_IRQ); + DeviceState *splitter =3D qdev_new_orphan(TYPE_SPLIT_IRQ); qdev_prop_set_uint32(splitter, "num-lines", num_cpus); qdev_realize_and_unref(splitter, NULL, &error_fatal); for (i =3D 0; i < num_cpus; i++) { diff --git a/hw/or1k/virt.c b/hw/or1k/virt.c index 2ff5c084a2..3067a5b2e7 100644 --- a/hw/or1k/virt.c +++ b/hw/or1k/virt.c @@ -110,7 +110,7 @@ static qemu_irq get_per_cpu_irq(OpenRISCCPU *cpus[], in= t num_cpus, int irq_pin) int i; =20 if (num_cpus > 1) { - DeviceState *splitter =3D qdev_new(TYPE_SPLIT_IRQ); + DeviceState *splitter =3D qdev_new_orphan(TYPE_SPLIT_IRQ); qdev_prop_set_uint32(splitter, "num-lines", num_cpus); qdev_realize_and_unref(splitter, NULL, &error_fatal); for (i =3D 0; i < num_cpus; i++) { @@ -206,7 +206,7 @@ static void openrisc_virt_ompic_init(OR1KVirtState *sta= te, hwaddr base, char *nodename; int i; =20 - dev =3D qdev_new("or1k-ompic"); + dev =3D qdev_new_orphan("or1k-ompic"); qdev_prop_set_uint32(dev, "num-cpus", num_cpus); =20 s =3D SYS_BUS_DEVICE(dev); @@ -379,7 +379,7 @@ static void openrisc_virt_pcie_init(OR1KVirtState *stat= e, qemu_irq pcie_irq; int i; =20 - dev =3D qdev_new(TYPE_GPEX_HOST); + dev =3D qdev_new_orphan(TYPE_GPEX_HOST); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); =20 /* Map ECAM space. */ @@ -451,7 +451,7 @@ static void openrisc_virt_virtio_init(OR1KVirtState *st= ate, hwaddr base, qemu_irq virtio_irq =3D get_per_cpu_irq(cpus, num_cpus, irq_pin); =20 /* VirtIO MMIO devices */ - dev =3D qdev_new(TYPE_VIRTIO_MMIO); + dev =3D qdev_new_orphan(TYPE_VIRTIO_MMIO); qdev_prop_set_bit(dev, "force-legacy", false); sysbus =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(sysbus, &error_fatal); diff --git a/hw/pci-bridge/pci_expander_bridge.c b/hw/pci-bridge/pci_expand= er_bridge.c index 40ffbc4e08..11a28b5503 100644 --- a/hw/pci-bridge/pci_expander_bridge.c +++ b/hw/pci-bridge/pci_expander_bridge.c @@ -359,7 +359,7 @@ static bool pxb_dev_realize_common(PCIDevice *dev, enum= BusType type, dev_name =3D dev->qdev.id; } =20 - ds =3D qdev_new(type =3D=3D CXL ? TYPE_PXB_CXL_HOST : TYPE_PXB_HOST); + ds =3D qdev_new_orphan(type =3D=3D CXL ? TYPE_PXB_CXL_HOST : TYPE_PXB_= HOST); if (type =3D=3D PCIE) { bus =3D pci_root_bus_new(ds, dev_name, NULL, NULL, 0, TYPE_PXB_PCI= E_BUS); } else if (type =3D=3D CXL) { @@ -368,7 +368,7 @@ static bool pxb_dev_realize_common(PCIDevice *dev, enum= BusType type, PXB_CXL_DEV(dev)->cxl_host_bridge =3D PXB_CXL_HOST(ds); } else { bus =3D pci_root_bus_new(ds, "pxb-internal", NULL, NULL, 0, TYPE_P= XB_BUS); - bds =3D qdev_new("pci-bridge"); + bds =3D qdev_new_orphan("pci-bridge"); bds->id =3D g_strdup(dev_name); qdev_prop_set_uint8(bds, PCI_BRIDGE_DEV_PROP_CHASSIS_NR, pxb->bus_= nr); qdev_prop_set_bit(bds, PCI_BRIDGE_DEV_PROP_SHPC, false); diff --git a/hw/pci-host/astro.c b/hw/pci-host/astro.c index fc07608da7..1de3960713 100644 --- a/hw/pci-host/astro.c +++ b/hw/pci-host/astro.c @@ -521,7 +521,7 @@ static ElroyState *elroy_init(int num) { DeviceState *dev; =20 - dev =3D qdev_new(TYPE_ELROY_PCI_HOST_BRIDGE); + dev =3D qdev_new_orphan(TYPE_ELROY_PCI_HOST_BRIDGE); dev->id =3D g_strdup_printf("elroy%d", num); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); =20 diff --git a/hw/pci-host/bonito.c b/hw/pci-host/bonito.c index ff2f5c966e..cd7272c90c 100644 --- a/hw/pci-host/bonito.c +++ b/hw/pci-host/bonito.c @@ -741,7 +741,7 @@ PCIBus *bonito_init(qemu_irq *pic) PCIBonitoState *s; PCIDevice *d; =20 - dev =3D qdev_new(TYPE_BONITO_PCI_HOST_BRIDGE); + dev =3D qdev_new_orphan(TYPE_BONITO_PCI_HOST_BRIDGE); phb =3D PCI_HOST_BRIDGE(dev); pcihost =3D BONITO_PCI_HOST_BRIDGE(dev); pcihost->pic =3D pic; diff --git a/hw/pci-host/pnv_phb4_pec.c b/hw/pci-host/pnv_phb4_pec.c index ee5cdc3e45..54dac5e989 100644 --- a/hw/pci-host/pnv_phb4_pec.c +++ b/hw/pci-host/pnv_phb4_pec.c @@ -180,7 +180,7 @@ static PnvPHB *pnv_pec_default_phb_realize(PnvPhb4PecSt= ate *pec, int stack_no, Error **errp) { - PnvPHB *phb =3D PNV_PHB(qdev_new(TYPE_PNV_PHB)); + PnvPHB *phb =3D PNV_PHB(qdev_new_orphan(TYPE_PNV_PHB)); int phb_id =3D pnv_phb4_pec_get_phb_id(pec, stack_no); =20 object_property_add_child(OBJECT(pec), "phb[*]", OBJECT(phb)); diff --git a/hw/pci/pci.c b/hw/pci/pci.c index d3191609e2..d14fc6478e 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -2393,7 +2393,7 @@ static PCIDevice *pci_new_internal(int devfn, bool mu= ltifunction, { DeviceState *dev; =20 - dev =3D qdev_new(name); + dev =3D qdev_new_orphan(name); qdev_prop_set_int32(dev, "addr", devfn); qdev_prop_set_bit(dev, "multifunction", multifunction); return PCI_DEVICE(dev); diff --git a/hw/ppc/amigaone.c b/hw/ppc/amigaone.c index 2e94e80b56..bcdf36b344 100644 --- a/hw/ppc/amigaone.c +++ b/hw/ppc/amigaone.c @@ -302,7 +302,7 @@ static void amigaone_init(MachineState *machine) } =20 /* nvram */ - dev =3D qdev_new(TYPE_A1_NVRAM); + dev =3D qdev_new_orphan(TYPE_A1_NVRAM); di =3D drive_get(IF_MTD, 0, 0); if (di) { qdev_prop_set_drive(dev, "drive", blk_by_legacy_dinfo(di)); diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c index 1876882a04..65e71826a4 100644 --- a/hw/ppc/e500.c +++ b/hw/ppc/e500.c @@ -815,7 +815,7 @@ static DeviceState *ppce500_init_mpic_qemu(PPCE500Machi= neState *pms, unsigned int smp_cpus =3D machine->smp.cpus; const PPCE500MachineClass *pmc =3D PPCE500_MACHINE_GET_CLASS(pms); =20 - dev =3D qdev_new(TYPE_OPENPIC); + dev =3D qdev_new_orphan(TYPE_OPENPIC); object_property_add_child(OBJECT(machine), "pic", OBJECT(dev)); qdev_prop_set_uint32(dev, "model", pmc->mpic_version); qdev_prop_set_uint32(dev, "nb_cpus", smp_cpus); @@ -840,7 +840,7 @@ static DeviceState *ppce500_init_mpic_kvm(const PPCE500= MachineClass *pmc, DeviceState *dev; CPUState *cs; =20 - dev =3D qdev_new(TYPE_KVM_OPENPIC); + dev =3D qdev_new_orphan(TYPE_KVM_OPENPIC); qdev_prop_set_uint32(dev, "model", pmc->mpic_version); =20 if (!sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), errp)) { @@ -993,7 +993,7 @@ void ppce500_init(MachineState *machine) /* Register Memory */ memory_region_add_subregion(address_space_mem, 0, machine->ram); =20 - dev =3D qdev_new("e500-ccsr"); + dev =3D qdev_new_orphan("e500-ccsr"); s =3D SYS_BUS_DEVICE(dev); object_property_add_child(OBJECT(machine), "e500-ccsr", OBJECT(dev)); sysbus_realize_and_unref(s, &error_fatal); @@ -1018,7 +1018,7 @@ void ppce500_init(MachineState *machine) } =20 /* I2C */ - dev =3D qdev_new("mpc-i2c"); + dev =3D qdev_new_orphan("mpc-i2c"); s =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(s, &error_fatal); sysbus_connect_irq(s, 0, qdev_get_gpio_in(mpicdev, MPC8544_I2C_IRQ)); @@ -1029,7 +1029,7 @@ void ppce500_init(MachineState *machine) =20 /* eSDHC */ if (pmc->has_esdhc) { - dev =3D qdev_new(TYPE_UNIMPLEMENTED_DEVICE); + dev =3D qdev_new_orphan(TYPE_UNIMPLEMENTED_DEVICE); qdev_prop_set_string(dev, "name", "esdhc"); qdev_prop_set_uint64(dev, "size", MPC85XX_ESDHC_REGS_SIZE); s =3D SYS_BUS_DEVICE(dev); @@ -1037,7 +1037,7 @@ void ppce500_init(MachineState *machine) memory_region_add_subregion(ccsr_addr_space, MPC85XX_ESDHC_REGS_OF= FSET, sysbus_mmio_get_region(s, 0)); =20 - dev =3D qdev_new(TYPE_FSL_ESDHC_BE); + dev =3D qdev_new_orphan(TYPE_FSL_ESDHC_BE); s =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(s, &error_fatal); sysbus_connect_irq(s, 0, qdev_get_gpio_in(mpicdev, MPC85XX_ESDHC_I= RQ)); @@ -1046,14 +1046,14 @@ void ppce500_init(MachineState *machine) } =20 /* General Utility device */ - dev =3D qdev_new("mpc8544-guts"); + dev =3D qdev_new_orphan("mpc8544-guts"); s =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(s, &error_fatal); memory_region_add_subregion(ccsr_addr_space, MPC8544_UTIL_OFFSET, sysbus_mmio_get_region(s, 0)); =20 /* PCI */ - dev =3D qdev_new("e500-pcihost"); + dev =3D qdev_new_orphan("e500-pcihost"); object_property_add_child(OBJECT(machine), "pci-host", OBJECT(dev)); qdev_prop_set_uint32(dev, "first_slot", pmc->pci_first_slot); qdev_prop_set_uint32(dev, "first_pin_irq", pci_irq_nrs[0]); @@ -1081,7 +1081,7 @@ void ppce500_init(MachineState *machine) if (pmc->has_mpc8xxx_gpio) { qemu_irq poweroff_irq; =20 - dev =3D qdev_new("mpc8xxx_gpio"); + dev =3D qdev_new_orphan("mpc8xxx_gpio"); s =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(s, &error_fatal); sysbus_connect_irq(s, 0, qdev_get_gpio_in(mpicdev, MPC8XXX_GPIO_IR= Q)); @@ -1094,7 +1094,7 @@ void ppce500_init(MachineState *machine) } =20 /* Platform Bus Device */ - dev =3D qdev_new(TYPE_PLATFORM_BUS_DEVICE); + dev =3D qdev_new_orphan(TYPE_PLATFORM_BUS_DEVICE); dev->id =3D g_strdup(TYPE_PLATFORM_BUS_DEVICE); qdev_prop_set_uint32(dev, "num_irqs", pmc->platform_bus_num_irqs); qdev_prop_set_uint32(dev, "mmio_size", pmc->platform_bus_size); @@ -1136,7 +1136,7 @@ void ppce500_init(MachineState *machine) exit(1); } =20 - dev =3D qdev_new(TYPE_PFLASH_CFI01); + dev =3D qdev_new_orphan(TYPE_PFLASH_CFI01); qdev_prop_set_drive(dev, "drive", blk); qdev_prop_set_uint32(dev, "num-blocks", size / sector_len); qdev_prop_set_uint64(dev, "sector-length", sector_len); diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c index 3680d96ed3..31dda69127 100644 --- a/hw/ppc/mac_newworld.c +++ b/hw/ppc/mac_newworld.c @@ -286,7 +286,7 @@ static void ppc_core99_init(MachineState *machine) } =20 /* UniN init */ - s =3D SYS_BUS_DEVICE(qdev_new(TYPE_UNI_NORTH)); + s =3D SYS_BUS_DEVICE(qdev_new_orphan(TYPE_UNI_NORTH)); sysbus_realize_and_unref(s, &error_fatal); memory_region_add_subregion(get_system_memory(), 0xf8000000, sysbus_mmio_get_region(s, 0)); @@ -295,7 +295,7 @@ static void ppc_core99_init(MachineState *machine) machine_arch =3D ARCH_MAC99_U3; /* 970 gets a U3 bus */ /* Uninorth AGP bus */ - uninorth_pci_dev =3D qdev_new(TYPE_U3_AGP_HOST_BRIDGE); + uninorth_pci_dev =3D qdev_new_orphan(TYPE_U3_AGP_HOST_BRIDGE); s =3D SYS_BUS_DEVICE(uninorth_pci_dev); sysbus_realize_and_unref(s, &error_fatal); sysbus_mmio_map(s, 0, 0xf0800000); @@ -310,14 +310,14 @@ static void ppc_core99_init(MachineState *machine) machine_arch =3D ARCH_MAC99; /* Use values found on a real PowerMac */ /* Uninorth AGP bus */ - uninorth_agp_dev =3D qdev_new(TYPE_UNI_NORTH_AGP_HOST_BRIDGE); + uninorth_agp_dev =3D qdev_new_orphan(TYPE_UNI_NORTH_AGP_HOST_BRIDG= E); s =3D SYS_BUS_DEVICE(uninorth_agp_dev); sysbus_realize_and_unref(s, &error_fatal); sysbus_mmio_map(s, 0, 0xf0800000); sysbus_mmio_map(s, 1, 0xf0c00000); =20 /* Uninorth internal bus */ - uninorth_internal_dev =3D qdev_new( + uninorth_internal_dev =3D qdev_new_orphan( TYPE_UNI_NORTH_INTERNAL_PCI_HOST_BRIDGE); s =3D SYS_BUS_DEVICE(uninorth_internal_dev); sysbus_realize_and_unref(s, &error_fatal); @@ -325,7 +325,7 @@ static void ppc_core99_init(MachineState *machine) sysbus_mmio_map(s, 1, 0xf4c00000); =20 /* Uninorth main bus - this must be last to make it the default */ - uninorth_pci_dev =3D qdev_new(TYPE_UNI_NORTH_PCI_HOST_BRIDGE); + uninorth_pci_dev =3D qdev_new_orphan(TYPE_UNI_NORTH_PCI_HOST_BRIDG= E); qdev_prop_set_uint32(uninorth_pci_dev, "ofw-addr", 0xf2000000); s =3D SYS_BUS_DEVICE(uninorth_pci_dev); sysbus_realize_and_unref(s, &error_fatal); @@ -408,10 +408,10 @@ static void ppc_core99_init(MachineState *machine) } =20 adb_bus =3D qdev_get_child_bus(dev, "adb.0"); - dev =3D qdev_new(TYPE_ADB_KEYBOARD); + dev =3D qdev_new_orphan(TYPE_ADB_KEYBOARD); qdev_realize_and_unref(dev, adb_bus, &error_fatal); =20 - dev =3D qdev_new(TYPE_ADB_MOUSE); + dev =3D qdev_new_orphan(TYPE_ADB_MOUSE); qdev_realize_and_unref(dev, adb_bus, &error_fatal); } =20 @@ -453,7 +453,7 @@ static void ppc_core99_init(MachineState *machine) move the NVRAM out of ROM again for KVM */ nvram_addr =3D 0xFFE00000; } - dev =3D qdev_new(TYPE_MACIO_NVRAM); + dev =3D qdev_new_orphan(TYPE_MACIO_NVRAM); qdev_prop_set_uint32(dev, "size", MACIO_NVRAM_SIZE); qdev_prop_set_uint32(dev, "it_shift", 1); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); @@ -462,7 +462,7 @@ static void ppc_core99_init(MachineState *machine) pmac_format_nvram_partition(nvr, MACIO_NVRAM_SIZE); /* No PCI init: the BIOS will do it */ =20 - dev =3D qdev_new(TYPE_FW_CFG_MEM); + dev =3D qdev_new_orphan(TYPE_FW_CFG_MEM); fw_cfg =3D FW_CFG(dev); qdev_prop_set_uint32(dev, "data_width", 1); qdev_prop_set_bit(dev, "dma_enabled", false); diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c index 24d9f2e3d5..aa366ca190 100644 --- a/hw/ppc/mac_oldworld.c +++ b/hw/ppc/mac_oldworld.c @@ -212,7 +212,7 @@ static void ppc_heathrow_init(MachineState *machine) } =20 /* Grackle PCI host bridge */ - grackle_dev =3D qdev_new(TYPE_GRACKLE_PCI_HOST_BRIDGE); + grackle_dev =3D qdev_new_orphan(TYPE_GRACKLE_PCI_HOST_BRIDGE); qdev_prop_set_uint32(grackle_dev, "ofw-addr", 0x80000000); s =3D SYS_BUS_DEVICE(grackle_dev); sysbus_realize_and_unref(s, &error_fatal); @@ -279,9 +279,9 @@ static void ppc_heathrow_init(MachineState *machine) /* MacIO CUDA/ADB */ dev =3D DEVICE(object_resolve_path_component(macio, "cuda")); adb_bus =3D qdev_get_child_bus(dev, "adb.0"); - dev =3D qdev_new(TYPE_ADB_KEYBOARD); + dev =3D qdev_new_orphan(TYPE_ADB_KEYBOARD); qdev_realize_and_unref(dev, adb_bus, &error_fatal); - dev =3D qdev_new(TYPE_ADB_MOUSE); + dev =3D qdev_new_orphan(TYPE_ADB_MOUSE); qdev_realize_and_unref(dev, adb_bus, &error_fatal); =20 if (machine_usb(machine)) { @@ -303,7 +303,7 @@ static void ppc_heathrow_init(MachineState *machine) =20 /* No PCI init: the BIOS will do it */ =20 - dev =3D qdev_new(TYPE_FW_CFG_MEM); + dev =3D qdev_new_orphan(TYPE_FW_CFG_MEM); fw_cfg =3D FW_CFG(dev); qdev_prop_set_uint32(dev, "data_width", 1); qdev_prop_set_bit(dev, "dma_enabled", false); diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index c0cb45dbfb..b85b6dd46c 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -1127,7 +1127,7 @@ static void pnv_init(MachineState *machine) /* * Create our simple PNOR device */ - dev =3D qdev_new(TYPE_PNV_PNOR); + dev =3D qdev_new_orphan(TYPE_PNV_PNOR); pnor =3D drive_get(IF_MTD, 0, 0); if (!pnor && defaults_enabled()) { fw_filename =3D qemu_find_file(QEMU_FILE_TYPE_BIOS, PNOR_FILE_NAME= ); @@ -1269,7 +1269,7 @@ static void pnv_init(MachineState *machine) pnv->chips =3D g_new0(PnvChip *, pnv->num_chips); for (i =3D 0; i < pnv->num_chips; i++) { char chip_name[32]; - Object *chip =3D OBJECT(qdev_new(chip_typename)); + Object *chip =3D OBJECT(qdev_new_orphan(chip_typename)); uint64_t chip_ram_size =3D pnv_chip_get_ram_size(pnv, i); =20 pnv->chips[i] =3D PNV_CHIP(chip); diff --git a/hw/ppc/pnv_bmc.c b/hw/ppc/pnv_bmc.c index fb70a8c1f2..6f65984f2e 100644 --- a/hw/ppc/pnv_bmc.c +++ b/hw/ppc/pnv_bmc.c @@ -299,7 +299,7 @@ IPMIBmc *pnv_bmc_create(PnvPnor *pnor) { DeviceState *dev; =20 - dev =3D qdev_new(TYPE_IPMI_BMC_SIMULATOR); + dev =3D qdev_new_orphan(TYPE_IPMI_BMC_SIMULATOR); qdev_realize(dev, NULL, &error_fatal); pnv_bmc_set_pnor(IPMI_BMC(dev), pnor); =20 diff --git a/hw/ppc/ppc440_bamboo.c b/hw/ppc/ppc440_bamboo.c index 2dde008b0e..e76d359e43 100644 --- a/hw/ppc/ppc440_bamboo.c +++ b/hw/ppc/ppc440_bamboo.c @@ -162,7 +162,7 @@ static void bamboo_init(MachineState *machine) ppc_dcr_init(env, NULL, NULL); =20 /* interrupt controller */ - uicdev =3D qdev_new(TYPE_PPC_UIC); + uicdev =3D qdev_new_orphan(TYPE_PPC_UIC); ppc4xx_dcr_realize(PPC4xx_DCR_DEVICE(uicdev), cpu, &error_fatal); object_unref(OBJECT(uicdev)); uicsbd =3D SYS_BUS_DEVICE(uicdev); @@ -172,7 +172,7 @@ static void bamboo_init(MachineState *machine) qdev_get_gpio_in(DEVICE(cpu), PPC40x_INPUT_CINT)); =20 /* SDRAM controller */ - dev =3D qdev_new(TYPE_PPC4xx_SDRAM_DDR); + dev =3D qdev_new_orphan(TYPE_PPC4xx_SDRAM_DDR); object_property_set_link(OBJECT(dev), "dram", OBJECT(machine->ram), &error_abort); ppc4xx_dcr_realize(PPC4xx_DCR_DEVICE(dev), cpu, &error_fatal); diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c index 2672eb9e7a..f53ff9c582 100644 --- a/hw/ppc/prep.c +++ b/hw/ppc/prep.c @@ -289,7 +289,7 @@ static void ibm_40p_init(MachineState *machine) g_free(filename); =20 /* PCI host */ - dev =3D qdev_new("raven-pcihost"); + dev =3D qdev_new_orphan("raven-pcihost"); pcihost =3D SYS_BUS_DEVICE(dev); object_property_add_child(qdev_get_machine(), "raven", OBJECT(dev)); sysbus_realize_and_unref(pcihost, &error_fatal); @@ -363,7 +363,7 @@ static void ibm_40p_init(MachineState *machine) } =20 /* Prepare firmware configuration for OpenBIOS */ - dev =3D qdev_new(TYPE_FW_CFG_MEM); + dev =3D qdev_new_orphan(TYPE_FW_CFG_MEM); fw_cfg =3D FW_CFG(dev); qdev_prop_set_uint32(dev, "data_width", 1); qdev_prop_set_bit(dev, "dma_enabled", false); diff --git a/hw/ppc/sam460ex.c b/hw/ppc/sam460ex.c index b13dd224ba..778b04c532 100644 --- a/hw/ppc/sam460ex.c +++ b/hw/ppc/sam460ex.c @@ -275,7 +275,7 @@ static void sam460ex_init(MachineState *machine) ppc_dcr_init(env, NULL, NULL); =20 /* PLB arbitrer */ - dev =3D qdev_new(TYPE_PPC4xx_PLB); + dev =3D qdev_new_orphan(TYPE_PPC4xx_PLB); ppc4xx_dcr_realize(PPC4xx_DCR_DEVICE(dev), cpu, &error_fatal); object_unref(OBJECT(dev)); =20 @@ -291,7 +291,7 @@ static void sam460ex_init(MachineState *machine) */ const int input_ints[] =3D { -1, 30, 10, 16 }; =20 - uic[i] =3D qdev_new(TYPE_PPC_UIC); + uic[i] =3D qdev_new_orphan(TYPE_PPC_UIC); qdev_prop_set_uint32(uic[i], "dcr-base", 0xc0 + i * 0x10); ppc4xx_dcr_realize(PPC4xx_DCR_DEVICE(uic[i]), cpu, &error_fatal); object_unref(OBJECT(uic[i])); @@ -321,7 +321,7 @@ static void sam460ex_init(MachineState *machine) error_report("Memory below 64 MiB is not supported"); exit(1); } - dev =3D qdev_new(TYPE_PPC4xx_SDRAM_DDR2); + dev =3D qdev_new_orphan(TYPE_PPC4xx_SDRAM_DDR2); object_property_set_link(OBJECT(dev), "dram", OBJECT(machine->ram), &error_abort); /* @@ -351,7 +351,7 @@ static void sam460ex_init(MachineState *machine) qdev_get_gpio_in(uic[0], 3)); =20 /* External bus controller */ - dev =3D qdev_new(TYPE_PPC4xx_EBC); + dev =3D qdev_new_orphan(TYPE_PPC4xx_EBC); ppc4xx_dcr_realize(PPC4xx_DCR_DEVICE(dev), cpu, &error_fatal); object_unref(OBJECT(dev)); =20 @@ -365,7 +365,7 @@ static void sam460ex_init(MachineState *machine) ppc4xx_sdr_init(env); =20 /* MAL */ - dev =3D qdev_new(TYPE_PPC4xx_MAL); + dev =3D qdev_new_orphan(TYPE_PPC4xx_MAL); qdev_prop_set_uint8(dev, "txc-num", 4); qdev_prop_set_uint8(dev, "rxc-num", 16); ppc4xx_dcr_realize(PPC4xx_DCR_DEVICE(dev), cpu, &error_fatal); @@ -389,7 +389,7 @@ static void sam460ex_init(MachineState *machine) /* USB */ sysbus_create_simple(TYPE_PPC4xx_EHCI, 0x4bffd0400, qdev_get_gpio_in(uic[2], 29)); - dev =3D qdev_new("sysbus-ohci"); + dev =3D qdev_new_orphan("sysbus-ohci"); qdev_prop_set_string(dev, "masterbus", "usb-bus.0"); qdev_prop_set_uint32(dev, "num-ports", 6); sbdev =3D SYS_BUS_DEVICE(dev); @@ -402,13 +402,13 @@ static void sam460ex_init(MachineState *machine) usb_create_simple(usb_bus, "usb-mouse"); =20 /* PCIe buses */ - dev =3D qdev_new(TYPE_PPC460EX_PCIE_HOST); + dev =3D qdev_new_orphan(TYPE_PPC460EX_PCIE_HOST); qdev_prop_set_int32(dev, "busnum", 0); qdev_prop_set_int32(dev, "dcrn-base", PCIE0_DCRN_BASE); object_property_set_link(OBJECT(dev), "cpu", OBJECT(cpu), &error_abort= ); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); =20 - dev =3D qdev_new(TYPE_PPC460EX_PCIE_HOST); + dev =3D qdev_new_orphan(TYPE_PPC460EX_PCIE_HOST); qdev_prop_set_int32(dev, "busnum", 1); qdev_prop_set_int32(dev, "dcrn-base", PCIE1_DCRN_BASE); object_property_set_link(OBJECT(dev), "cpu", OBJECT(cpu), &error_abort= ); diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index b79828b4e9..30bf0cd0c0 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -1885,7 +1885,7 @@ static void spapr_machine_reset(MachineState *machine= , ResetType type) =20 static void spapr_create_nvram(SpaprMachineState *spapr) { - DeviceState *dev =3D qdev_new("spapr-nvram"); + DeviceState *dev =3D qdev_new_orphan("spapr-nvram"); DriveInfo *dinfo =3D drive_get(IF_PFLASH, 0, 0); =20 if (dinfo) { @@ -2799,7 +2799,7 @@ static PCIHostState *spapr_create_default_phb(void) { DeviceState *dev; =20 - dev =3D qdev_new(TYPE_SPAPR_PCI_HOST_BRIDGE); + dev =3D qdev_new_orphan(TYPE_SPAPR_PCI_HOST_BRIDGE); qdev_prop_set_uint32(dev, "index", 0); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); =20 diff --git a/hw/ppc/spapr_irq.c b/hw/ppc/spapr_irq.c index 3a9c96d939..76ae80d16e 100644 --- a/hw/ppc/spapr_irq.c +++ b/hw/ppc/spapr_irq.c @@ -312,7 +312,7 @@ void spapr_irq_init(SpaprMachineState *spapr, Error **e= rrp) DeviceState *dev; int i; =20 - dev =3D qdev_new(TYPE_SPAPR_XIVE); + dev =3D qdev_new_orphan(TYPE_SPAPR_XIVE); qdev_prop_set_uint32(dev, "nr-irqs", SPAPR_NR_XIRQS + SPAPR_IRQ_NR= _IPIS); /* * 8 XIVE END structures per CPU. One for each available diff --git a/hw/ppc/spapr_vio.c b/hw/ppc/spapr_vio.c index 3f05081bad..0f22fa61a4 100644 --- a/hw/ppc/spapr_vio.c +++ b/hw/ppc/spapr_vio.c @@ -564,7 +564,7 @@ SpaprVioBus *spapr_vio_bus_init(void) DeviceState *dev; =20 /* Create bridge device */ - dev =3D qdev_new(TYPE_SPAPR_VIO_BRIDGE); + dev =3D qdev_new_orphan(TYPE_SPAPR_VIO_BRIDGE); =20 /* Create bus on bridge device */ qbus =3D qbus_new(TYPE_SPAPR_VIO_BUS, dev, "spapr-vio"); diff --git a/hw/ppc/virtex_ml507.c b/hw/ppc/virtex_ml507.c index 09686360e1..d7fd72d353 100644 --- a/hw/ppc/virtex_ml507.c +++ b/hw/ppc/virtex_ml507.c @@ -84,7 +84,7 @@ static PowerPCCPU *ppc440_init_xilinx(const char *cpu_typ= e, uint32_t sysclk) ppc_dcr_init(env, NULL, NULL); =20 /* interrupt controller */ - uicdev =3D qdev_new(TYPE_PPC_UIC); + uicdev =3D qdev_new_orphan(TYPE_PPC_UIC); ppc4xx_dcr_realize(PPC4xx_DCR_DEVICE(uicdev), cpu, &error_fatal); object_unref(OBJECT(uicdev)); uicsbd =3D SYS_BUS_DEVICE(uicdev); @@ -218,7 +218,7 @@ static void virtex_init(MachineState *machine) 64 * KiB, 1, 0x89, 0x18, 0x0000, 0x0, 1); =20 cpu_irq =3D qdev_get_gpio_in(DEVICE(cpu), PPC40x_INPUT_INT); - dev =3D qdev_new("xlnx.xps-intc"); + dev =3D qdev_new_orphan("xlnx.xps-intc"); qdev_prop_set_enum(dev, "endianness", ENDIAN_MODE_BIG); qdev_prop_set_uint32(dev, "kind-of-intr", 0); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); @@ -232,7 +232,7 @@ static void virtex_init(MachineState *machine) 115200, serial_hd(0), DEVICE_LITTLE_ENDIAN); =20 /* 2 timers at irq 2 @ 62 Mhz. */ - dev =3D qdev_new("xlnx.xps-timer"); + dev =3D qdev_new_orphan("xlnx.xps-timer"); qdev_prop_set_enum(dev, "endianness", ENDIAN_MODE_BIG); qdev_prop_set_uint32(dev, "one-timer-only", 0); qdev_prop_set_uint32(dev, "clock-frequency", 62 * 1000000); diff --git a/hw/remote/machine.c b/hw/remote/machine.c index df08f64019..28cb48a4f6 100644 --- a/hw/remote/machine.c +++ b/hw/remote/machine.c @@ -39,7 +39,7 @@ static void remote_machine_init(MachineState *machine) pci_memory =3D g_new(MemoryRegion, 1); memory_region_init(pci_memory, NULL, "pci", UINT64_MAX); =20 - rem_host =3D REMOTE_PCIHOST(qdev_new(TYPE_REMOTE_PCIHOST)); + rem_host =3D REMOTE_PCIHOST(qdev_new_orphan(TYPE_REMOTE_PCIHOST)); =20 rem_host->mr_pci_mem =3D pci_memory; rem_host->mr_sys_mem =3D system_memory; diff --git a/hw/riscv/boston-aia.c b/hw/riscv/boston-aia.c index 965d0f5699..0fbb44c5df 100644 --- a/hw/riscv/boston-aia.c +++ b/hw/riscv/boston-aia.c @@ -305,7 +305,7 @@ xilinx_pcie_init(MemoryRegion *sys_mem, uint32_t bus_nr, DeviceState *dev; MemoryRegion *cfg, *mmio; =20 - dev =3D qdev_new(TYPE_XILINX_PCIE_HOST); + dev =3D qdev_new_orphan(TYPE_XILINX_PCIE_HOST); =20 qdev_prop_set_uint32(dev, "bus_nr", bus_nr); qdev_prop_set_uint64(dev, "cfg_base", cfg_base); @@ -352,7 +352,7 @@ static void boston_mach_init(MachineState *machine) exit(1); } =20 - dev =3D qdev_new(TYPE_MIPS_BOSTON_AIA); + dev =3D qdev_new_orphan(TYPE_MIPS_BOSTON_AIA); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); =20 s =3D BOSTON(dev); diff --git a/hw/riscv/microblaze-v-generic.c b/hw/riscv/microblaze-v-generi= c.c index d33ac39a68..5864007f01 100644 --- a/hw/riscv/microblaze-v-generic.c +++ b/hw/riscv/microblaze-v-generic.c @@ -79,7 +79,7 @@ static void mb_v_generic_init(MachineState *machine) ram_size, &error_fatal); memory_region_add_subregion(sysmem, ddr_base, phys_ram); =20 - dev =3D qdev_new("xlnx.xps-intc"); + dev =3D qdev_new_orphan("xlnx.xps-intc"); qdev_prop_set_enum(dev, "endianness", ENDIAN_MODE_LITTLE); qdev_prop_set_uint32(dev, "kind-of-intr", 1 << UARTLITE_IRQ); @@ -92,7 +92,7 @@ static void mb_v_generic_init(MachineState *machine) } =20 /* Uartlite */ - dev =3D qdev_new(TYPE_XILINX_UARTLITE); + dev =3D qdev_new_orphan(TYPE_XILINX_UARTLITE); qdev_prop_set_enum(dev, "endianness", ENDIAN_MODE_LITTLE); qdev_prop_set_chr(dev, "chardev", serial_hd(0)); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); @@ -105,7 +105,7 @@ static void mb_v_generic_init(MachineState *machine) DEVICE_LITTLE_ENDIAN); =20 /* 2 timers at irq 0 @ 100 Mhz. */ - dev =3D qdev_new("xlnx.xps-timer"); + dev =3D qdev_new_orphan("xlnx.xps-timer"); qdev_prop_set_enum(dev, "endianness", ENDIAN_MODE_LITTLE); qdev_prop_set_uint32(dev, "one-timer-only", 0); qdev_prop_set_uint32(dev, "clock-frequency", 100000000); @@ -114,7 +114,7 @@ static void mb_v_generic_init(MachineState *machine) sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, irq[TIMER_IRQ]); =20 /* 2 timers at irq 3 @ 100 Mhz. */ - dev =3D qdev_new("xlnx.xps-timer"); + dev =3D qdev_new_orphan("xlnx.xps-timer"); qdev_prop_set_enum(dev, "endianness", ENDIAN_MODE_LITTLE); qdev_prop_set_uint32(dev, "one-timer-only", 0); qdev_prop_set_uint32(dev, "clock-frequency", 100000000); @@ -123,7 +123,7 @@ static void mb_v_generic_init(MachineState *machine) sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, irq[TIMER_IRQ2]); =20 /* Emaclite */ - dev =3D qdev_new("xlnx.xps-ethernetlite"); + dev =3D qdev_new_orphan("xlnx.xps-ethernetlite"); qdev_prop_set_enum(dev, "endianness", ENDIAN_MODE_LITTLE); qemu_configure_nic_device(dev, true, NULL); qdev_prop_set_uint32(dev, "tx-ping-pong", 0); @@ -133,8 +133,8 @@ static void mb_v_generic_init(MachineState *machine) sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, irq[ETHLITE_IRQ]); =20 /* axi ethernet and dma initialization. */ - eth0 =3D qdev_new("xlnx.axi-ethernet"); - dma =3D qdev_new("xlnx.axi-dma"); + eth0 =3D qdev_new_orphan("xlnx.axi-ethernet"); + dma =3D qdev_new_orphan("xlnx.axi-dma"); =20 /* FIXME: attach to the sysbus instead */ object_property_add_child(qdev_get_machine(), "xilinx-eth", OBJECT(eth= 0)); diff --git a/hw/riscv/microchip_pfsoc.c b/hw/riscv/microchip_pfsoc.c index 4017129c83..cc93b5c2ba 100644 --- a/hw/riscv/microchip_pfsoc.c +++ b/hw/riscv/microchip_pfsoc.c @@ -580,7 +580,7 @@ static void microchip_icicle_kit_machine_init(MachineSt= ate *machine) /* Attach an SD card */ if (dinfo) { CadenceSDHCIState *sdhci =3D &(s->soc.sdhci); - DeviceState *card =3D qdev_new(TYPE_SD_CARD); + DeviceState *card =3D qdev_new_orphan(TYPE_SD_CARD); =20 qdev_prop_set_drive_err(card, "drive", blk_by_legacy_dinfo(dinfo), &error_fatal); diff --git a/hw/riscv/sifive_u.c b/hw/riscv/sifive_u.c index 99423ef472..db6d984f94 100644 --- a/hw/riscv/sifive_u.c +++ b/hw/riscv/sifive_u.c @@ -593,7 +593,7 @@ static void sifive_u_machine_init(MachineState *machine) sizeof(reset_vec), kernel_entry); =20 /* Connect an SPI flash to SPI0 */ - flash_dev =3D qdev_new("is25wp256"); + flash_dev =3D qdev_new_orphan("is25wp256"); dinfo =3D drive_get(IF_MTD, 0, 0); if (dinfo) { qdev_prop_set_drive_err(flash_dev, "drive", @@ -613,7 +613,7 @@ static void sifive_u_machine_init(MachineState *machine) =20 dinfo =3D drive_get(IF_SD, 0, 0); blk =3D dinfo ? blk_by_legacy_dinfo(dinfo) : NULL; - card_dev =3D qdev_new(TYPE_SD_CARD_SPI); + card_dev =3D qdev_new_orphan(TYPE_SD_CARD_SPI); qdev_prop_set_drive_err(card_dev, "drive", blk, &error_fatal); qdev_realize_and_unref(card_dev, qdev_get_child_bus(sd_dev, "sd-bus"), diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index 51bac47a91..81212c81dd 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -125,7 +125,7 @@ static PFlashCFI01 *virt_flash_create1(RISCVVirtState *= s, * Create a single flash device. We use the same parameters as * the flash devices on the ARM virt board. */ - DeviceState *dev =3D qdev_new(TYPE_PFLASH_CFI01); + DeviceState *dev =3D qdev_new_orphan(TYPE_PFLASH_CFI01); =20 qdev_prop_set_uint64(dev, "sector-length", VIRT_FLASH_SECTOR_SIZE); qdev_prop_set_uint8(dev, "width", 4); @@ -1050,7 +1050,7 @@ static inline DeviceState *gpex_pcie_init(MemoryRegio= n *sys_mem, qemu_irq irq; int i; =20 - dev =3D qdev_new(TYPE_GPEX_HOST); + dev =3D qdev_new_orphan(TYPE_GPEX_HOST); =20 /* Set GPEX object properties for the virt machine */ object_property_set_uint(OBJECT(dev), PCI_HOST_ECAM_BASE, @@ -1142,7 +1142,7 @@ static void create_platform_bus(RISCVVirtState *s, De= viceState *irqchip) int i; MemoryRegion *sysmem =3D get_system_memory(); =20 - dev =3D qdev_new(TYPE_PLATFORM_BUS_DEVICE); + dev =3D qdev_new_orphan(TYPE_PLATFORM_BUS_DEVICE); dev->id =3D g_strdup(TYPE_PLATFORM_BUS_DEVICE); qdev_prop_set_uint32(dev, "num_irqs", VIRT_PLATFORM_BUS_NUM_IRQS); qdev_prop_set_uint32(dev, "mmio_size", s->memmap[VIRT_PLATFORM_BUS].si= ze); @@ -1508,7 +1508,7 @@ static void virt_machine_init(MachineState *machine) } =20 if (virt_is_iommu_sys_enabled(s)) { - DeviceState *iommu_sys =3D qdev_new(TYPE_RISCV_IOMMU_SYS); + DeviceState *iommu_sys =3D qdev_new_orphan(TYPE_RISCV_IOMMU_SYS); =20 object_property_set_uint(OBJECT(iommu_sys), "addr", s->memmap[VIRT_IOMMU_SYS].base, diff --git a/hw/rtc/sun4v-rtc.c b/hw/rtc/sun4v-rtc.c index 3a586adf02..257f70885d 100644 --- a/hw/rtc/sun4v-rtc.c +++ b/hw/rtc/sun4v-rtc.c @@ -57,7 +57,7 @@ void sun4v_rtc_init(hwaddr addr) DeviceState *dev; SysBusDevice *s; =20 - dev =3D qdev_new(TYPE_SUN4V_RTC); + dev =3D qdev_new_orphan(TYPE_SUN4V_RTC); s =3D SYS_BUS_DEVICE(dev); =20 sysbus_realize_and_unref(s, &error_fatal); diff --git a/hw/s390x/ap-bridge.c b/hw/s390x/ap-bridge.c index c7e49d966b..ce9b09240a 100644 --- a/hw/s390x/ap-bridge.c +++ b/hw/s390x/ap-bridge.c @@ -49,7 +49,7 @@ void s390_init_ap(void) } =20 /* Create bridge device */ - dev =3D qdev_new(TYPE_AP_BRIDGE); + dev =3D qdev_new_orphan(TYPE_AP_BRIDGE); object_property_add_child(qdev_get_machine(), TYPE_AP_BRIDGE, OBJECT(dev)); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); diff --git a/hw/s390x/css-bridge.c b/hw/s390x/css-bridge.c index 440fefb7d0..c6be24e5cb 100644 --- a/hw/s390x/css-bridge.c +++ b/hw/s390x/css-bridge.c @@ -92,7 +92,7 @@ VirtualCssBus *virtual_css_bus_init(void) DeviceState *dev; =20 /* Create bridge device */ - dev =3D qdev_new(TYPE_VIRTUAL_CSS_BRIDGE); + dev =3D qdev_new_orphan(TYPE_VIRTUAL_CSS_BRIDGE); object_property_add_child(qdev_get_machine(), TYPE_VIRTUAL_CSS_BRIDGE, OBJECT(dev)); =20 diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c index eff980fdfe..bc335ca883 100644 --- a/hw/s390x/s390-pci-bus.c +++ b/hw/s390x/s390-pci-bus.c @@ -967,7 +967,7 @@ static S390PCIBusDevice *s390_pci_device_new(S390pciSta= te *s, Error *local_err =3D NULL; DeviceState *dev; =20 - dev =3D qdev_try_new(TYPE_S390_PCI_DEVICE); + dev =3D qdev_try_new_orphan(TYPE_S390_PCI_DEVICE); if (!dev) { error_setg(errp, "zPCI device could not be created"); return NULL; diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c index 25a9fa4955..f9eb6cb411 100644 --- a/hw/s390x/s390-virtio-ccw.c +++ b/hw/s390x/s390-virtio-ccw.c @@ -253,7 +253,7 @@ static void s390_create_sclpconsole(SCLPDevice *sclp, BusState *ev_fac_bus =3D sclp_get_event_facility_bus(ef); DeviceState *dev; =20 - dev =3D qdev_new(type); + dev =3D qdev_new_orphan(type); object_property_add_child(OBJECT(ef), type, OBJECT(dev)); qdev_prop_set_chr(dev, "chardev", chardev); qdev_realize_and_unref(dev, ev_fac_bus, &error_fatal); @@ -265,7 +265,7 @@ static void s390_create_sclpcpi(SCLPDevice *sclp) BusState *ev_fac_bus =3D sclp_get_event_facility_bus(ef); DeviceState *dev; =20 - dev =3D qdev_new(TYPE_SCLP_EVENT_CPI); + dev =3D qdev_new_orphan(TYPE_SCLP_EVENT_CPI); object_property_add_child(OBJECT(ef), "sclpcpi", OBJECT(dev)); qdev_realize_and_unref(dev, ev_fac_bus, &error_fatal); } @@ -309,7 +309,7 @@ static void ccw_init(MachineState *machine) machine->firmware ?: "s390-ccw.img", true); =20 - dev =3D qdev_new(TYPE_S390_PCI_HOST_BRIDGE); + dev =3D qdev_new_orphan(TYPE_S390_PCI_HOST_BRIDGE); object_property_add_child(qdev_get_machine(), TYPE_S390_PCI_HOST_BRIDG= E, OBJECT(dev)); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); diff --git a/hw/scsi/lasi_ncr710.c b/hw/scsi/lasi_ncr710.c index 4fde2265b5..e1a1f68aaa 100644 --- a/hw/scsi/lasi_ncr710.c +++ b/hw/scsi/lasi_ncr710.c @@ -231,7 +231,7 @@ DeviceState *lasi_ncr710_init(MemoryRegion *addr_space,= hwaddr hpa, LasiNCR710State *s; SysBusDevice *sbd; =20 - dev =3D qdev_new(TYPE_LASI_NCR710); + dev =3D qdev_new_orphan(TYPE_LASI_NCR710); s =3D LASI_NCR710(dev); sbd =3D SYS_BUS_DEVICE(dev); s->lasi_irq =3D irq; diff --git a/hw/scsi/ncr53c710.c b/hw/scsi/ncr53c710.c index 57967e7a84..54ce2df641 100644 --- a/hw/scsi/ncr53c710.c +++ b/hw/scsi/ncr53c710.c @@ -2376,7 +2376,7 @@ DeviceState *ncr710_device_create_sysbus(hwaddr addr,= qemu_irq irq) DeviceState *dev; SysBusDevice *sysbus; =20 - dev =3D qdev_new(TYPE_SYSBUS_NCR710_SCSI); + dev =3D qdev_new_orphan(TYPE_SYSBUS_NCR710_SCSI); sysbus =3D SYS_BUS_DEVICE(dev); =20 qdev_realize_and_unref(dev, NULL, &error_abort); @@ -2394,7 +2394,7 @@ DeviceState *ncr53c710_init(MemoryRegion *address_spa= ce, hwaddr addr, =20 /* trace_ncr710_device_init(addr); */ =20 - dev =3D qdev_new(TYPE_SYSBUS_NCR710_SCSI); + dev =3D qdev_new_orphan(TYPE_SYSBUS_NCR710_SCSI); sysbus =3D SYS_BUS_DEVICE(dev); =20 qdev_realize_and_unref(dev, NULL, &error_abort); diff --git a/hw/scsi/scsi-bus.c b/hw/scsi/scsi-bus.c index dccb2f25b2..806a20baee 100644 --- a/hw/scsi/scsi-bus.c +++ b/hw/scsi/scsi-bus.c @@ -445,7 +445,7 @@ SCSIDevice *scsi_bus_legacy_add_drive(SCSIBus *bus, Blo= ckBackend *blk, driver =3D "scsi-hd"; } } - dev =3D qdev_new(driver); + dev =3D qdev_new_orphan(driver); name =3D g_strdup_printf("legacy[%d]", unit); object_property_add_child(OBJECT(bus), name, OBJECT(dev)); g_free(name); diff --git a/hw/scsi/spapr_vscsi.c b/hw/scsi/spapr_vscsi.c index b4c8f94d22..492d7d18a2 100644 --- a/hw/scsi/spapr_vscsi.c +++ b/hw/scsi/spapr_vscsi.c @@ -1235,7 +1235,7 @@ void spapr_vscsi_create(SpaprVioBus *bus) { DeviceState *dev; =20 - dev =3D qdev_new("spapr-vscsi"); + dev =3D qdev_new_orphan("spapr-vscsi"); =20 qdev_realize_and_unref(dev, &bus->bus, &error_fatal); scsi_bus_legacy_handle_cmdline(&VIO_SPAPR_VSCSI_DEVICE(dev)->bus); diff --git a/hw/sh4/r2d.c b/hw/sh4/r2d.c index 99afe3618e..0b502ca392 100644 --- a/hw/sh4/r2d.c +++ b/hw/sh4/r2d.c @@ -266,7 +266,7 @@ static void r2d_init(MachineState *machine) s =3D sh7750_init(cpu, address_space_mem); fpga =3D r2d_fpga_init(address_space_mem, 0x04000000, sh7750_irl(s)); =20 - dev =3D qdev_new("sh_pci"); + dev =3D qdev_new_orphan("sh_pci"); busdev =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(busdev, &error_fatal); pci_bus =3D PCI_BUS(qdev_get_child_bus(dev, "pci")); @@ -277,7 +277,7 @@ static void r2d_init(MachineState *machine) sysbus_connect_irq(busdev, 2, &fpga->irq[PCI_INTC]); sysbus_connect_irq(busdev, 3, &fpga->irq[PCI_INTD]); =20 - dev =3D qdev_new("sysbus-sm501"); + dev =3D qdev_new_orphan("sysbus-sm501"); busdev =3D SYS_BUS_DEVICE(dev); qdev_prop_set_uint32(dev, "vram-size", SM501_VRAM_SIZE); qdev_prop_set_uint64(dev, "dma-offset", 0x10000000); @@ -289,7 +289,7 @@ static void r2d_init(MachineState *machine) =20 /* onboard CF (True IDE mode, Master only). */ dinfo =3D drive_get(IF_IDE, 0, 0); - dev =3D qdev_new("mmio-ide"); + dev =3D qdev_new_orphan("mmio-ide"); busdev =3D SYS_BUS_DEVICE(dev); sysbus_connect_irq(busdev, 0, &fpga->irq[CF_IDE]); qdev_prop_set_uint32(dev, "shift", 1); diff --git a/hw/sh4/sh7750.c b/hw/sh4/sh7750.c index 6aa7f63773..3eb47bc660 100644 --- a/hw/sh4/sh7750.c +++ b/hw/sh4/sh7750.c @@ -762,7 +762,7 @@ SH7750State *sh7750_init(SuperHCPU *cpu, MemoryRegion *= sysmem) cpu->env.intc_handle =3D &s->intc; =20 /* SCI */ - dev =3D qdev_new(TYPE_SH_SERIAL); + dev =3D qdev_new_orphan(TYPE_SH_SERIAL); dev->id =3D g_strdup("sci"); qdev_prop_set_chr(dev, "chardev", serial_hd(0)); sb =3D SYS_BUS_DEVICE(dev); @@ -779,7 +779,7 @@ SH7750State *sh7750_init(SuperHCPU *cpu, MemoryRegion *= sysmem) qdev_connect_gpio_out_named(dev, "tei", 0, s->intc.irqs[SCI1_TEI]); =20 /* SCIF */ - dev =3D qdev_new(TYPE_SH_SERIAL); + dev =3D qdev_new_orphan(TYPE_SH_SERIAL); dev->id =3D g_strdup("scif"); qdev_prop_set_chr(dev, "chardev", serial_hd(1)); qdev_prop_set_uint8(dev, "features", SH_SERIAL_FEAT_SCIF); diff --git a/hw/sparc/leon3.c b/hw/sparc/leon3.c index d4a6e91759..d921cd8dc6 100644 --- a/hw/sparc/leon3.c +++ b/hw/sparc/leon3.c @@ -292,14 +292,14 @@ static void leon3_generic_hw_init(MachineState *machi= ne) qemu_register_reset(leon3_cpu_reset, &reset_info->info[i]); } =20 - ahb_pnp =3D GRLIB_AHB_PNP(qdev_new(TYPE_GRLIB_AHB_PNP)); + ahb_pnp =3D GRLIB_AHB_PNP(qdev_new_orphan(TYPE_GRLIB_AHB_PNP)); sysbus_realize_and_unref(SYS_BUS_DEVICE(ahb_pnp), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(ahb_pnp), 0, LEON3_AHB_PNP_OFFSET); grlib_ahb_pnp_add_entry(ahb_pnp, 0, 0, GRLIB_VENDOR_GAISLER, GRLIB_LEON3_DEV, GRLIB_AHB_MASTER, GRLIB_CPU_AREA); =20 - apb_pnp =3D GRLIB_APB_PNP(qdev_new(TYPE_GRLIB_APB_PNP)); + apb_pnp =3D GRLIB_APB_PNP(qdev_new_orphan(TYPE_GRLIB_APB_PNP)); sysbus_realize_and_unref(SYS_BUS_DEVICE(apb_pnp), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(apb_pnp), 0, LEON3_APB_PNP_OFFSET); grlib_ahb_pnp_add_entry(ahb_pnp, LEON3_APB_PNP_OFFSET, 0xFFF, @@ -307,7 +307,7 @@ static void leon3_generic_hw_init(MachineState *machine) GRLIB_AHB_SLAVE, GRLIB_AHBMEM_AREA); =20 /* Allocate IRQ manager */ - irqmpdev =3D qdev_new(TYPE_GRLIB_IRQMP); + irqmpdev =3D qdev_new_orphan(TYPE_GRLIB_IRQMP); object_property_set_int(OBJECT(irqmpdev), "ncpus", machine->smp.cpus, &error_fatal); sysbus_realize_and_unref(SYS_BUS_DEVICE(irqmpdev), &error_fatal); @@ -406,7 +406,7 @@ static void leon3_generic_hw_init(MachineState *machine) } =20 /* Allocate timers */ - dev =3D qdev_new(TYPE_GRLIB_GPTIMER); + dev =3D qdev_new_orphan(TYPE_GRLIB_GPTIMER); qdev_prop_set_uint32(dev, "nr-timers", LEON3_TIMER_COUNT); qdev_prop_set_uint32(dev, "frequency", CPU_CLK); qdev_prop_set_uint32(dev, "irq-line", LEON3_TIMER_IRQ); @@ -423,7 +423,7 @@ static void leon3_generic_hw_init(MachineState *machine) 0, LEON3_TIMER_IRQ, GRLIB_APBIO_AREA); =20 /* Allocate uart */ - dev =3D qdev_new(TYPE_GRLIB_APB_UART); + dev =3D qdev_new_orphan(TYPE_GRLIB_APB_UART); qdev_prop_set_chr(dev, "chrdev", serial_hd(0)); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, LEON3_UART_OFFSET); diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c index 550acdff6d..69a287937e 100644 --- a/hw/sparc/sun4m.c +++ b/hw/sparc/sun4m.c @@ -280,7 +280,7 @@ static void *iommu_init(hwaddr addr, uint32_t version, = qemu_irq irq) DeviceState *dev; SysBusDevice *s; =20 - dev =3D qdev_new(TYPE_SUN4M_IOMMU); + dev =3D qdev_new_orphan(TYPE_SUN4M_IOMMU); qdev_prop_set_uint32(dev, "version", version); s =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(s, &error_fatal); @@ -302,7 +302,7 @@ static void *sparc32_dma_init(hwaddr dma_base, SysBusPCNetState *lance; NICInfo *nd =3D qemu_find_nic_info("lance", true, NULL); =20 - dma =3D qdev_new(TYPE_SPARC32_DMA); + dma =3D qdev_new_orphan(TYPE_SPARC32_DMA); espdma =3D SPARC32_ESPDMA_DEVICE(object_resolve_path_component( OBJECT(dma), "espdma")); =20 @@ -347,7 +347,7 @@ static DeviceState *slavio_intctl_init(hwaddr addr, SysBusDevice *s; unsigned int i, j; =20 - dev =3D qdev_new("slavio_intctl"); + dev =3D qdev_new_orphan("slavio_intctl"); =20 s =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(s, &error_fatal); @@ -376,7 +376,7 @@ static void slavio_timer_init_all(hwaddr addr, qemu_irq= master_irq, SysBusDevice *s; unsigned int i; =20 - dev =3D qdev_new("slavio_timer"); + dev =3D qdev_new_orphan("slavio_timer"); qdev_prop_set_uint32(dev, "num_cpus", num_cpus); s =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(s, &error_fatal); @@ -414,7 +414,7 @@ static void slavio_misc_init(hwaddr base, DeviceState *dev; SysBusDevice *s; =20 - dev =3D qdev_new("slavio_misc"); + dev =3D qdev_new_orphan("slavio_misc"); s =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(s, &error_fatal); if (base) { @@ -451,7 +451,7 @@ static void ecc_init(hwaddr base, qemu_irq irq, uint32_= t version) DeviceState *dev; SysBusDevice *s; =20 - dev =3D qdev_new("eccmemctl"); + dev =3D qdev_new_orphan("eccmemctl"); qdev_prop_set_uint32(dev, "version", version); s =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(s, &error_fatal); @@ -467,7 +467,7 @@ static void apc_init(hwaddr power_base, qemu_irq cpu_ha= lt) DeviceState *dev; SysBusDevice *s; =20 - dev =3D qdev_new("apc"); + dev =3D qdev_new_orphan("apc"); s =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(s, &error_fatal); /* Power management (APC) XXX: not a Slavio device */ @@ -481,7 +481,7 @@ static void tcx_init(hwaddr addr, qemu_irq irq, int vra= m_size, int width, DeviceState *dev; SysBusDevice *s; =20 - dev =3D qdev_new("sun-tcx"); + dev =3D qdev_new_orphan("sun-tcx"); qdev_prop_set_uint32(dev, "vram_size", vram_size); qdev_prop_set_uint16(dev, "width", width); qdev_prop_set_uint16(dev, "height", height); @@ -533,7 +533,7 @@ static void cg3_init(hwaddr addr, qemu_irq irq, int vra= m_size, int width, DeviceState *dev; SysBusDevice *s; =20 - dev =3D qdev_new("cgthree"); + dev =3D qdev_new_orphan("cgthree"); qdev_prop_set_uint32(dev, "vram-size", vram_size); qdev_prop_set_uint16(dev, "width", width); qdev_prop_set_uint16(dev, "height", height); @@ -562,7 +562,7 @@ static void idreg_init(hwaddr addr) DeviceState *dev; SysBusDevice *s; =20 - dev =3D qdev_new(TYPE_MACIO_ID_REGISTER); + dev =3D qdev_new_orphan(TYPE_MACIO_ID_REGISTER); s =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(s, &error_fatal); =20 @@ -621,7 +621,7 @@ static void afx_init(hwaddr addr) DeviceState *dev; SysBusDevice *s; =20 - dev =3D qdev_new(TYPE_TCX_AFX); + dev =3D qdev_new_orphan(TYPE_TCX_AFX); s =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(s, &error_fatal); =20 @@ -678,7 +678,7 @@ static void prom_init(hwaddr addr, const char *bios_nam= e) char *filename; int ret; =20 - dev =3D qdev_new(TYPE_OPENPROM); + dev =3D qdev_new_orphan(TYPE_OPENPROM); s =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(s, &error_fatal); =20 @@ -835,7 +835,7 @@ static void sun4m_hw_init(MachineState *machine) } =20 /* Create and map RAM frontend */ - dev =3D qdev_new("memory"); + dev =3D qdev_new_orphan("memory"); object_property_set_link(OBJECT(dev), "memdev", OBJECT(ram_memdev), &e= rror_fatal); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, 0); @@ -946,7 +946,7 @@ static void sun4m_hw_init(MachineState *machine) create_unimplemented_device("sun-sx", hwdef->sx_base, 0x2000); } =20 - dev =3D qdev_new("sysbus-m48t08"); + dev =3D qdev_new_orphan("sysbus-m48t08"); qdev_prop_set_int32(dev, "base-year", 1968); s =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(s, &error_fatal); @@ -958,7 +958,7 @@ static void sun4m_hw_init(MachineState *machine) =20 /* Slavio TTYA (base+4, Linux ttyS0) is the first QEMU serial device Slavio TTYB (base+0, Linux ttyS1) is the second QEMU serial device = */ - dev =3D qdev_new(TYPE_ESCC); + dev =3D qdev_new_orphan(TYPE_ESCC); qdev_prop_set_uint32(dev, "disabled", !machine->enable_graphics); qdev_prop_set_uint32(dev, "frequency", ESCC_CLOCK); qdev_prop_set_uint32(dev, "it_shift", 1); @@ -971,14 +971,14 @@ static void sun4m_hw_init(MachineState *machine) sysbus_mmio_map(s, 0, hwdef->ms_kb_base); =20 /* Logically OR both its IRQs together */ - ms_kb_orgate =3D qdev_new(TYPE_OR_IRQ); + ms_kb_orgate =3D qdev_new_orphan(TYPE_OR_IRQ); object_property_set_int(OBJECT(ms_kb_orgate), "num-lines", 2, &error_f= atal); qdev_realize_and_unref(ms_kb_orgate, NULL, &error_fatal); sysbus_connect_irq(s, 0, qdev_get_gpio_in(ms_kb_orgate, 0)); sysbus_connect_irq(s, 1, qdev_get_gpio_in(ms_kb_orgate, 1)); qdev_connect_gpio_out(ms_kb_orgate, 0, slavio_irq[14]); =20 - dev =3D qdev_new(TYPE_ESCC); + dev =3D qdev_new_orphan(TYPE_ESCC); qdev_prop_set_uint32(dev, "disabled", 0); qdev_prop_set_uint32(dev, "frequency", ESCC_CLOCK); qdev_prop_set_uint32(dev, "it_shift", 1); @@ -992,7 +992,7 @@ static void sun4m_hw_init(MachineState *machine) sysbus_mmio_map(s, 0, hwdef->serial_base); =20 /* Logically OR both its IRQs together */ - serial_orgate =3D qdev_new(TYPE_OR_IRQ); + serial_orgate =3D qdev_new_orphan(TYPE_OR_IRQ); object_property_set_int(OBJECT(serial_orgate), "num-lines", 2, &error_fatal); qdev_realize_and_unref(serial_orgate, NULL, &error_fatal); @@ -1051,7 +1051,7 @@ static void sun4m_hw_init(MachineState *machine) ecc_init(hwdef->ecc_base, slavio_irq[28], hwdef->ecc_version); =20 - dev =3D qdev_new(TYPE_FW_CFG_MEM); + dev =3D qdev_new_orphan(TYPE_FW_CFG_MEM); fw_cfg =3D FW_CFG(dev); qdev_prop_set_uint32(dev, "data_width", 1); qdev_prop_set_bit(dev, "dma_enabled", false); diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c index d69ed9a81a..bd73d26e2c 100644 --- a/hw/sparc64/sun4u.c +++ b/hw/sparc64/sun4u.c @@ -342,7 +342,7 @@ static void ebus_realize(PCIDevice *pci_dev, Error **er= rp) isa_fdc_init_drives(isa_dev, fd); =20 /* Power */ - dev =3D qdev_new(TYPE_SUN4U_POWER); + dev =3D qdev_new_orphan(TYPE_SUN4U_POWER); sbd =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(sbd, &error_fatal); memory_region_add_subregion(pci_address_space_io(pci_dev), 0x7240, @@ -423,7 +423,7 @@ static void prom_init(hwaddr addr, const char *bios_nam= e) char *filename; int ret; =20 - dev =3D qdev_new(TYPE_OPENPROM); + dev =3D qdev_new_orphan(TYPE_OPENPROM); s =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(s, &error_fatal); =20 @@ -507,7 +507,7 @@ static void ram_init(hwaddr addr, ram_addr_t RAM_size) RamDevice *d; =20 /* allocate RAM */ - dev =3D qdev_new(TYPE_SUN4U_MEMORY); + dev =3D qdev_new_orphan(TYPE_SUN4U_MEMORY); s =3D SYS_BUS_DEVICE(dev); =20 d =3D SUN4U_RAM(dev); @@ -559,7 +559,7 @@ static void sun4uv_init(MemoryRegion *address_space_mem, cpu =3D sparc64_cpu_devinit(machine->cpu_type, hwdef->prom_addr); =20 /* IOMMU */ - iommu =3D qdev_new(TYPE_SUN4U_IOMMU); + iommu =3D qdev_new_orphan(TYPE_SUN4U_IOMMU); sysbus_realize_and_unref(SYS_BUS_DEVICE(iommu), &error_fatal); =20 /* set up devices */ @@ -568,7 +568,7 @@ static void sun4uv_init(MemoryRegion *address_space_mem, prom_init(hwdef->prom_addr, machine->firmware); =20 /* Init sabre (PCI host bridge) */ - sabre =3D SABRE(qdev_new(TYPE_SABRE)); + sabre =3D SABRE(qdev_new_orphan(TYPE_SABRE)); qdev_prop_set_uint64(DEVICE(sabre), "special-base", PBM_SPECIAL_BASE); qdev_prop_set_uint64(DEVICE(sabre), "mem-base", PBM_MEM_BASE); object_property_set_link(OBJECT(sabre), "iommu", OBJECT(iommu), @@ -654,7 +654,7 @@ static void sun4uv_init(MemoryRegion *address_space_mem, pci_ide_create_devs(pci_dev); =20 /* Map NVRAM into I/O (ebus) space */ - dev =3D qdev_new("sysbus-m48t59"); + dev =3D qdev_new_orphan("sysbus-m48t59"); qdev_prop_set_int32(dev, "base-year", 1968); s =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(s, &error_fatal); @@ -689,7 +689,7 @@ static void sun4uv_init(MemoryRegion *address_space_mem, graphic_width, graphic_height, graphic_depth, (uint8_t *)&macaddr); =20 - dev =3D qdev_new(TYPE_FW_CFG_IO); + dev =3D qdev_new_orphan(TYPE_FW_CFG_IO); qdev_prop_set_bit(dev, "dma_enabled", false); object_property_add_child(OBJECT(ebus), TYPE_FW_CFG, OBJECT(dev)); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); diff --git a/hw/ssi/ssi.c b/hw/ssi/ssi.c index 3a4fade2d5..b1935271f0 100644 --- a/hw/ssi/ssi.c +++ b/hw/ssi/ssi.c @@ -140,7 +140,7 @@ bool ssi_realize_and_unref(DeviceState *dev, SSIBus *bu= s, Error **errp) =20 DeviceState *ssi_create_peripheral(SSIBus *bus, const char *name) { - DeviceState *dev =3D qdev_new(name); + DeviceState *dev =3D qdev_new_orphan(name); =20 ssi_realize_and_unref(dev, bus, &error_fatal); return dev; diff --git a/hw/tricore/tricore_testboard.c b/hw/tricore/tricore_testboard.c index d5d796c8ee..afed9ad0ae 100644 --- a/hw/tricore/tricore_testboard.c +++ b/hw/tricore/tricore_testboard.c @@ -89,7 +89,7 @@ static void tricore_testboard_init(MachineState *machine,= int board_id) memory_region_add_subregion(sysmem, 0xf0050000, pcp_data); memory_region_add_subregion(sysmem, 0xf0060000, pcp_text); =20 - test_dev =3D TRICORE_TESTDEVICE(qdev_new(TYPE_TRICORE_TESTDEVICE)); + test_dev =3D TRICORE_TESTDEVICE(qdev_new_orphan(TYPE_TRICORE_TESTDEVIC= E)); memory_region_add_subregion(sysmem, 0xf0000000, &test_dev->iomem); =20 =20 diff --git a/hw/ufs/lu.c b/hw/ufs/lu.c index 13f4a90145..219f74e4f3 100644 --- a/hw/ufs/lu.c +++ b/hw/ufs/lu.c @@ -472,7 +472,7 @@ static void ufs_init_scsi_device(UfsLu *lu, BlockBacken= d *blk, Error **errp) * The ufs-lu is the device that is wrapping the scsi-hd. It owns a vi= rtual * SCSI bus that serves the scsi-hd. */ - scsi_dev =3D qdev_new("scsi-hd"); + scsi_dev =3D qdev_new_orphan("scsi-hd"); object_property_add_child(OBJECT(&lu->bus), "ufs-scsi", OBJECT(scsi_de= v)); =20 qdev_prop_set_uint32(scsi_dev, "physical_block_size", UFS_BLOCK_SIZE); diff --git a/hw/usb/bus.c b/hw/usb/bus.c index 3b6fbd46ac..d45cce7666 100644 --- a/hw/usb/bus.c +++ b/hw/usb/bus.c @@ -410,7 +410,7 @@ void usb_claim_port(USBDevice *dev, Error **errp) } else { if (bus->nfree =3D=3D 1 && strcmp(object_get_typename(OBJECT(dev))= , "usb-hub") !=3D 0) { /* Create a new hub and chain it on */ - hub =3D USB_DEVICE(qdev_try_new("usb-hub")); + hub =3D USB_DEVICE(qdev_try_new_orphan("usb-hub")); if (hub) { usb_realize_and_unref(hub, bus, NULL); } @@ -662,7 +662,7 @@ USBDevice *usbdevice_create(const char *driver) } =20 dev =3D f->usbdevice_init ? f->usbdevice_init() - : USB_DEVICE(qdev_new(f->name)); + : USB_DEVICE(qdev_new_orphan(f->name)); if (!dev) { error_report("Failed to create USB device '%s'", f->name); return NULL; diff --git a/hw/usb/dev-serial.c b/hw/usb/dev-serial.c index b238cb7937..81897b2d76 100644 --- a/hw/usb/dev-serial.c +++ b/hw/usb/dev-serial.c @@ -622,7 +622,7 @@ static USBDevice *usb_braille_init(void) return NULL; } =20 - dev =3D USB_DEVICE(qdev_new("usb-braille")); + dev =3D USB_DEVICE(qdev_new_orphan("usb-braille")); qdev_prop_set_chr(&dev->qdev, "chardev", cdrv); return dev; } diff --git a/hw/vmapple/vmapple.c b/hw/vmapple/vmapple.c index 607181f517..9f69ab2bc7 100644 --- a/hw/vmapple/vmapple.c +++ b/hw/vmapple/vmapple.c @@ -155,7 +155,7 @@ static void create_bdif(VMAppleMachineState *vms, Memor= yRegion *mem) } =20 /* PV backdoor device */ - bdif =3D qdev_new(TYPE_VMAPPLE_BDIF); + bdif =3D qdev_new_orphan(TYPE_VMAPPLE_BDIF); bdif_sb =3D SYS_BUS_DEVICE(bdif); sysbus_mmio_map(bdif_sb, 0, vms->memmap[VMAPPLE_BDOOR].base); =20 @@ -169,7 +169,7 @@ static void create_pvpanic(VMAppleMachineState *vms, Me= moryRegion *mem) { SysBusDevice *pvpanic; =20 - vms->pvpanic =3D qdev_new(TYPE_PVPANIC_MMIO_DEVICE); + vms->pvpanic =3D qdev_new_orphan(TYPE_PVPANIC_MMIO_DEVICE); pvpanic =3D SYS_BUS_DEVICE(vms->pvpanic); sysbus_mmio_map(pvpanic, 0, vms->memmap[VMAPPLE_PVPANIC].base); =20 @@ -184,7 +184,7 @@ static bool create_cfg(VMAppleMachineState *vms, Memory= Region *mem, MachineState *machine =3D MACHINE(vms); uint32_t rnd =3D 1; =20 - vms->cfg =3D qdev_new(TYPE_VMAPPLE_CFG); + vms->cfg =3D qdev_new_orphan(TYPE_VMAPPLE_CFG); cfg =3D SYS_BUS_DEVICE(vms->cfg); sysbus_mmio_map(cfg, 0, vms->memmap[VMAPPLE_CONFIG].base); =20 @@ -209,7 +209,7 @@ static void create_gfx(VMAppleMachineState *vms, Memory= Region *mem) int irq_iosfc =3D vms->irqmap[VMAPPLE_APV_IOSFC]; SysBusDevice *gfx; =20 - gfx =3D SYS_BUS_DEVICE(qdev_new("apple-gfx-mmio")); + gfx =3D SYS_BUS_DEVICE(qdev_new_orphan("apple-gfx-mmio")); sysbus_mmio_map(gfx, 0, vms->memmap[VMAPPLE_APV_GFX].base); sysbus_mmio_map(gfx, 1, vms->memmap[VMAPPLE_APV_IOSFC].base); sysbus_connect_irq(gfx, 0, qdev_get_gpio_in(vms->gic, irq_gfx)); @@ -222,7 +222,7 @@ static void create_aes(VMAppleMachineState *vms, Memory= Region *mem) int irq =3D vms->irqmap[VMAPPLE_AES_1]; SysBusDevice *aes; =20 - aes =3D SYS_BUS_DEVICE(qdev_new(TYPE_APPLE_AES)); + aes =3D SYS_BUS_DEVICE(qdev_new_orphan(TYPE_APPLE_AES)); sysbus_mmio_map(aes, 0, vms->memmap[VMAPPLE_AES_1].base); sysbus_mmio_map(aes, 1, vms->memmap[VMAPPLE_AES_2].base); sysbus_connect_irq(aes, 0, qdev_get_gpio_in(vms->gic, irq)); @@ -243,7 +243,7 @@ static void create_gic(VMAppleMachineState *vms, Memory= Region *mem) int i; unsigned int smp_cpus =3D ms->smp.cpus; =20 - vms->gic =3D qdev_new(gicv3_class_name()); + vms->gic =3D qdev_new_orphan(gicv3_class_name()); qdev_prop_set_uint32(vms->gic, "revision", 3); qdev_prop_set_uint32(vms->gic, "num-cpu", smp_cpus); /* @@ -290,7 +290,7 @@ static void create_uart(const VMAppleMachineState *vms,= int uart, { hwaddr base =3D vms->memmap[uart].base; int irq =3D vms->irqmap[uart]; - DeviceState *dev =3D qdev_new(TYPE_PL011); + DeviceState *dev =3D qdev_new_orphan(TYPE_PL011); SysBusDevice *s =3D SYS_BUS_DEVICE(dev); =20 qdev_prop_set_chr(dev, "chardev", chr); @@ -323,7 +323,7 @@ static void create_gpio_devices(const VMAppleMachineSta= te *vms, int gpio, int irq =3D vms->irqmap[gpio]; SysBusDevice *s; =20 - pl061_dev =3D qdev_new("pl061"); + pl061_dev =3D qdev_new_orphan("pl061"); /* Pull lines down to 0 if not driven by the PL061 */ qdev_prop_set_uint8(pl061_dev, "pullups", 0); qdev_prop_set_uint8(pl061_dev, "pulldowns", 0xff); @@ -384,7 +384,7 @@ static void create_pcie(VMAppleMachineState *vms) DeviceState *usb_controller; USBBus *usb_bus; =20 - dev =3D qdev_new(TYPE_GPEX_HOST); + dev =3D qdev_new_orphan(TYPE_GPEX_HOST); qdev_prop_set_uint32(dev, "num-irqs", GPEX_NUM_IRQS); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); =20 @@ -420,7 +420,7 @@ static void create_pcie(VMAppleMachineState *vms) } =20 if (defaults_enabled()) { - usb_controller =3D qdev_new(TYPE_QEMU_XHCI); + usb_controller =3D qdev_new_orphan(TYPE_QEMU_XHCI); qdev_realize_and_unref(usb_controller, BUS(pci->bus), &error_fatal= ); =20 usb_bus =3D USB_BUS(object_resolve_type_unambiguous(TYPE_USB_BUS, diff --git a/hw/xen/xen-bus.c b/hw/xen/xen-bus.c index dfad2bc508..746014416b 100644 --- a/hw/xen/xen-bus.c +++ b/hw/xen/xen-bus.c @@ -1149,7 +1149,7 @@ type_init(xen_register_types) =20 void xen_bus_init(void) { - DeviceState *dev =3D qdev_new(TYPE_XEN_BRIDGE); + DeviceState *dev =3D qdev_new_orphan(TYPE_XEN_BRIDGE); BusState *bus =3D qbus_new(TYPE_XEN_BUS, dev, NULL); =20 sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); diff --git a/hw/xen/xen-legacy-backend.c b/hw/xen/xen-legacy-backend.c index 7977b52712..29c90a388c 100644 --- a/hw/xen/xen-legacy-backend.c +++ b/hw/xen/xen-legacy-backend.c @@ -598,7 +598,7 @@ void xen_be_init(void) exit(1); } =20 - xen_sysdev =3D qdev_new(TYPE_XENSYSDEV); + xen_sysdev =3D qdev_new_orphan(TYPE_XENSYSDEV); sysbus_realize_and_unref(SYS_BUS_DEVICE(xen_sysdev), &error_fatal); xen_sysbus =3D qbus_new(TYPE_XENSYSBUS, xen_sysdev, "xen-sysbus"); qbus_set_bus_hotplug_handler(xen_sysbus); diff --git a/hw/xen/xen-pvh-common.c b/hw/xen/xen-pvh-common.c index cca37202ff..4c9a4fdea8 100644 --- a/hw/xen/xen-pvh-common.c +++ b/hw/xen/xen-pvh-common.c @@ -193,7 +193,7 @@ static void xen_enable_tpm(XenPVHMachineState *s) error_report("Couldn't find tmp0 backend"); return; } - dev =3D qdev_new(TYPE_TPM_TIS_SYSBUS); + dev =3D qdev_new_orphan(TYPE_TPM_TIS_SYSBUS); /* * FIXME This use of &err is is wrong. If both calls fail, the * second will trip error_setv()'s assertion. If just one call diff --git a/hw/xtensa/virt.c b/hw/xtensa/virt.c index 271f06e095..e31b783b91 100644 --- a/hw/xtensa/virt.c +++ b/hw/xtensa/virt.c @@ -61,7 +61,7 @@ static void create_pcie(MachineState *ms, CPUXtensaState = *env, int irq_base, qemu_irq *extints; int i; =20 - dev =3D qdev_new(TYPE_GPEX_HOST); + dev =3D qdev_new_orphan(TYPE_GPEX_HOST); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); =20 /* Map only the first size_ecam bytes of ECAM space. */ diff --git a/hw/xtensa/xtfpga.c b/hw/xtensa/xtfpga.c index 8f85fc8ddb..4b1009a398 100644 --- a/hw/xtensa/xtfpga.c +++ b/hw/xtensa/xtfpga.c @@ -173,7 +173,7 @@ static PFlashCFI01 *xtfpga_flash_init(MemoryRegion *add= ress_space, DriveInfo *dinfo, int be) { SysBusDevice *s; - DeviceState *dev =3D qdev_new(TYPE_PFLASH_CFI01); + DeviceState *dev =3D qdev_new_orphan(TYPE_PFLASH_CFI01); =20 qdev_prop_set_drive(dev, "drive", blk_by_legacy_dinfo(dinfo)); qdev_prop_set_uint32(dev, "num-blocks", diff --git a/include/hw/core/qdev.h b/include/hw/core/qdev.h index e147622341..839c1b4147 100644 --- a/include/hw/core/qdev.h +++ b/include/hw/core/qdev.h @@ -407,7 +407,7 @@ struct BusState { /*** Board API. This should go away once we have a machine config file. = ***/ =20 /** - * qdev_new: Create a device on the heap + * qdev_new_orphan: Create a device on the heap * @name: device type to create (we assert() that this type exists) * * This only allocates the memory and initializes the device state @@ -416,19 +416,19 @@ struct BusState { * * Return: a derived DeviceState object with a reference count of 1. */ -DeviceState *qdev_new(const char *name); +DeviceState *qdev_new_orphan(const char *name); =20 /** - * qdev_try_new: Try to create a device on the heap + * qdev_try_new_orphan: Try to create a device on the heap * @name: device type to create * - * This is like qdev_new(), except it returns %NULL when type @name + * This is like qdev_new_orphan(), except it returns %NULL when type @name * does not exist, rather than asserting. * * Return: a derived DeviceState object with a reference count of 1 or * NULL if type @name does not exist. */ -DeviceState *qdev_try_new(const char *name); +DeviceState *qdev_try_new_orphan(const char *name); =20 /** * qdev_is_realized() - check if device is realized @@ -454,7 +454,7 @@ static inline bool qdev_is_realized(DeviceState *dev) * If @bus, plug @dev into @bus. This takes a reference to @dev. * If @dev has no QOM parent, make one up, taking another reference. * - * If you created @dev using qdev_new(), you probably want to use + * If you created @dev using qdev_new_orphan(), you probably want to use * qdev_realize_and_unref() instead. * * Return: true on success, else false setting @errp with error @@ -472,7 +472,7 @@ bool qdev_realize(DeviceState *dev, BusState *bus, Erro= r **errp); * (private) reference, which is dropped on return regardless of * success or failure. Intended use:: * - * dev =3D qdev_new(); + * dev =3D qdev_new_orphan(); * [...] * qdev_realize_and_unref(dev, bus, errp); * diff --git a/include/hw/i2c/i2c.h b/include/hw/i2c/i2c.h index dd5930f4b5..bcdc4f21a9 100644 --- a/include/hw/i2c/i2c.h +++ b/include/hw/i2c/i2c.h @@ -188,7 +188,7 @@ I2CSlave *i2c_slave_create_simple(I2CBus *bus, const ch= ar *name, uint8_t addr); * Call 'realize' on @dev, put it on the specified @bus, and drop the * reference to it. * - * This function is useful if you have created @dev via qdev_new(), + * This function is useful if you have created @dev via qdev_new_orphan(), * i2c_slave_new() or i2c_slave_try_new() (which take a reference to * the device it returns to you), so that you can set properties on it * before realizing it. If you don't need to set properties then diff --git a/include/hw/misc/unimp.h b/include/hw/misc/unimp.h index 77a5077511..5158d29634 100644 --- a/include/hw/misc/unimp.h +++ b/include/hw/misc/unimp.h @@ -42,7 +42,7 @@ static inline void create_unimplemented_device(const char= *name, hwaddr base, hwaddr size) { - DeviceState *dev =3D qdev_new(TYPE_UNIMPLEMENTED_DEVICE); + DeviceState *dev =3D qdev_new_orphan(TYPE_UNIMPLEMENTED_DEVICE); =20 qdev_prop_set_string(dev, "name", name); qdev_prop_set_uint64(dev, "size", size); diff --git a/include/hw/ssi/ssi.h b/include/hw/ssi/ssi.h index 6d6d8ccb3d..153bf0cb9c 100644 --- a/include/hw/ssi/ssi.h +++ b/include/hw/ssi/ssi.h @@ -92,7 +92,7 @@ DeviceState *ssi_create_peripheral(SSIBus *bus, const cha= r *name); * reference to it. Errors are reported via @errp and by returning * false. * - * This function is useful if you have created @dev via qdev_new() + * This function is useful if you have created @dev via qdev_new_orphan() * (which takes a reference to the device it returns to you), so that * you can set properties on it before realizing it. If you don't need * to set properties then ssi_create_peripheral() is probably better (as it diff --git a/include/hw/usb/usb.h b/include/hw/usb/usb.h index 78e2ceedd7..6ef190523f 100644 --- a/include/hw/usb/usb.h +++ b/include/hw/usb/usb.h @@ -586,7 +586,7 @@ static inline bool usb_realize_and_unref(USBDevice *dev= , USBBus *bus, Error **er =20 static inline USBDevice *usb_create_simple(USBBus *bus, const char *name) { - USBDevice *dev =3D USB_DEVICE(qdev_new(name)); + USBDevice *dev =3D USB_DEVICE(qdev_new_orphan(name)); =20 usb_realize_and_unref(dev, bus, &error_abort); return dev; diff --git a/migration/migration.c b/migration/migration.c index 9736c14458..bdd163b65d 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -4076,7 +4076,7 @@ static const TypeInfo migration_type =3D { .name =3D TYPE_MIGRATION, /* * NOTE: TYPE_MIGRATION is not really a device, as the object is - * not created using qdev_new(), it is not attached to the qdev + * not created using qdev_new_orphan(), it is not attached to the qdev * device tree, and it is never realized. * * TODO: Make this TYPE_OBJECT once QOM provides something like diff --git a/net/net.c b/net/net.c index 2892f1730d..e09f0c0d4f 100644 --- a/net/net.c +++ b/net/net.c @@ -1214,7 +1214,7 @@ DeviceState *qemu_create_nic_device(const char *typen= ame, bool match_default, return NULL; } =20 - dev =3D qdev_new(typename); + dev =3D qdev_new_orphan(typename); qdev_set_nic_properties(dev, nd); return dev; } @@ -1264,7 +1264,7 @@ void qemu_create_nic_bus_devices(BusState *bus, const= char *parent_type, continue; } =20 - dev =3D qdev_new(model); + dev =3D qdev_new_orphan(model); qdev_set_nic_properties(dev, nd); qdev_realize_and_unref(dev, bus, &error_fatal); } diff --git a/scripts/coccinelle/qom-parent/qdev-new-orphan.cocci b/scripts/= coccinelle/qom-parent/qdev-new-orphan.cocci new file mode 100644 index 0000000000..6d07c03b39 --- /dev/null +++ b/scripts/coccinelle/qom-parent/qdev-new-orphan.cocci @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +// +// Rename qdev_new()/qdev_try_new() to qdev_new_orphan()/qdev_try_new_orph= an() +// so that the short name can be reintroduced with a mandatory +// (parent, id, type) signature. +// +// spatch --sp-file scripts/coccinelle/qom-parent/qdev-new-orphan.cocci \ +// --in-place --include-headers --dir . + +@@ +@@ +- qdev_new ++ qdev_new_orphan + +@@ +@@ +- qdev_try_new ++ qdev_try_new_orphan diff --git a/system/qdev-monitor.c b/system/qdev-monitor.c index 00fed791cc..adc37d6a89 100644 --- a/system/qdev-monitor.c +++ b/system/qdev-monitor.c @@ -707,7 +707,7 @@ DeviceState *qdev_device_add_from_qdict(const QDict *op= ts, } =20 /* create device */ - dev =3D qdev_new(driver); + dev =3D qdev_new_orphan(driver); =20 /* Check whether the hotplug is allowed by the machine */ if (phase_check(PHASE_MACHINE_READY) && diff --git a/target/mips/cpu.c b/target/mips/cpu.c index d72044aef6..9ad1b4177d 100644 --- a/target/mips/cpu.c +++ b/target/mips/cpu.c @@ -756,7 +756,7 @@ MIPSCPU *mips_cpu_create_with_clock(const char *cpu_typ= e, Clock *cpu_refclk, { DeviceState *cpu; =20 - cpu =3D qdev_new(cpu_type); + cpu =3D qdev_new_orphan(cpu_type); qdev_connect_clock_in(cpu, "clk-in", cpu_refclk); object_property_set_bool(OBJECT(cpu), "big-endian", is_big_endian, &error_abort); diff --git a/target/xtensa/cpu.c b/target/xtensa/cpu.c index 2015a4e3d0..8e888a19d1 100644 --- a/target/xtensa/cpu.c +++ b/target/xtensa/cpu.c @@ -288,7 +288,7 @@ XtensaCPU *xtensa_cpu_create_with_clock(const char *cpu= _type, Clock *cpu_refclk) { DeviceState *cpu; =20 - cpu =3D qdev_new(cpu_type); + cpu =3D qdev_new_orphan(cpu_type); qdev_connect_clock_in(cpu, "clk-in", cpu_refclk); qdev_realize(cpu, NULL, &error_abort); =20 --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784410742; cv=none; d=zohomail.com; s=zohoarc; b=nIKmmSZS7UaWKBVcVXc2wpUuQarKCG9jRw656XLDXFTHMYzNws9HHIj84z9whCJcw0sHMnz3FoO9OqqSOlZrk0qtNAoSgBN/SMwmX9LcGvwJBBNiG94HNz52GVe8hjShUNOWufHGYfKTAuSrAB0ziv24ThplRS6eXgNbtOmnQW4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784410742; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ADocZE9Wgpun0caKBt5HshGGbKBiD2Su+oLEOen/wow=; b=nqUSxUL/pDPDUXIYGGswiSlxVFG5ZBVO9T4+S0U5Zek9mveGPSiH39u2xLRaz8ZfvrLlZ5BWTNBD1Gl5wqKLbfzje8KHdzsvIVxxS0X1EqOWEZ4T1lHVInRHEnwEnzE+RT3Ul34i9eW8OVkaqycIwAhal7NE57HaX4/9hY+CsZY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784410742005844.1128155955229; Sat, 18 Jul 2026 14:39:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCjS-0000LR-Qo; Sat, 18 Jul 2026 17:38:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCjR-0000K7-4x; Sat, 18 Jul 2026 17:38:01 -0400 Received: from pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.245.243.92]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCjP-000201-7i; Sat, 18 Jul 2026 17:38:00 -0400 Received: from ip-10-5-6-203.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.6.203]) by internal-pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:37:55 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.104:14237] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.35.17:2525] with esmtp (Farcaster) id cd177983-6252-40b9-af51-e0142a57fdf3; Sat, 18 Jul 2026 21:37:55 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB001.ant.amazon.com (10.250.64.248) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:37:54 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:37:45 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784410679; x=1815946679; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ADocZE9Wgpun0caKBt5HshGGbKBiD2Su+oLEOen/wow=; b=ReWfYfDfp9sU8bbv5BrlIqtVusx69MGYRZ8uQ46nT2UOOy47OWhSEysr MguGG3rXY4A3fIpIMpgqSyxuAE53XUSaRDRVvWKhbZA+5IVg+153qEOmb kqFS1UyTB4jFF4yX66Bb0bzwVAsLpZzL7SV3iHvTf+wzR0MAaSvI37pYO SyRFAFMOcM2OTdEFTriWN5QKygMGHB00DV/Ne/I1xkcULxvEioJ9BAZtU SYTRiAv8W0CValyvd4zldQkvPDbSVJNbcsEeylbaO7Qhg3s/EXv5sr+jt vUwHa7dZw16d1y4/s8mWgmrT1O12FaZstiuJDStUkQ058IIiPoxrcJXrR g==; X-CSE-ConnectionGUID: fh0307X3QLipVIMEbCnklA== X-CSE-MsgGUID: 5XlmG0etRmGbxqNgI1oGbg== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23422468" X-Farcaster-Flow-ID: cd177983-6252-40b9-af51-e0142a57fdf3 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 003/137] qdev: Reintroduce qdev_new() with a mandatory QOM parent Date: Sat, 18 Jul 2026 21:34:38 +0000 Message-ID: <20260718213652.37673-4-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D035UWA004.ant.amazon.com (10.13.139.109) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.245.243.92; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784410743826158500 The previous commit vacated the qdev_new()/qdev_try_new() names. Reintroduce them with the signature we actually want: DeviceState *qdev_new(Object *parent, const char *id, const char *type); which is the qdev-layer, heap-allocated dual of object_initialize_child(): the returned device is created and immediately added to the QOM composition tree as a child of @parent under @id. Refcount contract: the initial reference is transferred to the child<> property of @parent, so on return the caller does not hold a reference. Pair with qdev_realize() (not qdev_realize_and_unref()), matching object_initialize_child()'s convention. qdev_new_orphan() remains for callers that set the parent themselves before realize (notably qdev_device_add(), which parents under /machine/peripheral via qdev_set_id()). Later patches convert the remaining orphan callers subsystem by subsystem. Suggested-by: Markus Armbruster Reviewed-by: Philippe Mathieu-Daud=C3=A9 AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/core/qdev.c | 20 ++++++++++++++++++++ include/hw/core/qdev.h | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/hw/core/qdev.c b/hw/core/qdev.c index 8a8d206a02..947ba7db80 100644 --- a/hw/core/qdev.c +++ b/hw/core/qdev.c @@ -145,6 +145,26 @@ bool qdev_set_parent_bus(DeviceState *dev, BusState *b= us, Error **errp) return true; } =20 +DeviceState *qdev_new(Object *parent, const char *id, const char *type) +{ + return DEVICE(object_new_child(parent, id, type)); +} + +DeviceState *qdev_try_new(Object *parent, const char *id, const char *type) +{ + ObjectClass *oc =3D module_object_class_by_name(type); + Object *obj; + + if (!oc) { + return NULL; + } + obj =3D object_new_with_class(oc); + g_assert(id[0] && !strchr(id, '/')); + object_property_add_child(parent, id, obj); + object_unref(obj); + return DEVICE(obj); +} + DeviceState *qdev_new_orphan(const char *name) { return DEVICE(object_new(name)); diff --git a/include/hw/core/qdev.h b/include/hw/core/qdev.h index 839c1b4147..e692a1d48e 100644 --- a/include/hw/core/qdev.h +++ b/include/hw/core/qdev.h @@ -406,6 +406,40 @@ struct BusState { =20 /*** Board API. This should go away once we have a machine config file. = ***/ =20 +/** + * qdev_new: Create a device and parent it in the QOM composition tree + * @parent: the QOM parent (usually the machine or containing device) + * @id: child<> property name; the device's canonical QOM path becomes + * @parent's path plus "/" plus @id + * @type: device type to create (we assert() that this type exists) + * + * Heap-allocated counterpart to object_initialize_child(). This + * allocates and initializes the device state and immediately adds it + * as a child of @parent, ready for the caller to set properties and + * then realize. + * + * The reference count of the returned device is 1, held by @parent's + * child<> property. The caller therefore does not hold a reference + * and pairs this with qdev_realize() (NOT qdev_realize_and_unref()). + * + * Return: a derived DeviceState, owned by @parent. + */ +DeviceState *qdev_new(Object *parent, const char *id, const char *type); + +/** + * qdev_try_new: Try to create a parented device on the heap + * @parent: the QOM parent + * @id: child<> property name + * @type: device type to create + * + * This is like qdev_new(), except it returns %NULL when @type does + * not exist, rather than asserting. + * + * Return: a derived DeviceState owned by @parent, or NULL if @type + * does not exist. + */ +DeviceState *qdev_try_new(Object *parent, const char *id, const char *type= ); + /** * qdev_new_orphan: Create a device on the heap * @name: device type to create (we assert() that this type exists) --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784410770; cv=none; d=zohomail.com; s=zohoarc; b=RD2Dvh83/oUa0aAjnnspeSiC2kA2issICmGGinMVQBVmfwjz9T3WQX/ZtRmtiJ46tPhoNsXbeDM9olYW6t1ZYSarCll6vsmv/1EN3UbcE2iog+oY/VaaVCEQUlOU/XjkA8rjFMweFVBzTYPgsJV90bQo3bKSuf5Hhh3HldWtbQk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784410770; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=bxpXC4MITv5hh985dMkHBTgluTdz27C6qpED/8FVkfo=; b=OZUc5E2KtEYbzbT6OPgaAiSlCU0YHtn1PxRoykljBscpilV154C97F0AsUMt4xHxLJsxY7W8qE9KwpJHE5YJTpepBZkODtCkJavCUW/YnXOWWgOyQmT61bfCTygaiNS+POhiDoZv+2Fstc6a8Sn6CxVOiAjR7HlxLSrPWw8TrM0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784410770948383.2493430449932; Sat, 18 Jul 2026 14:39:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCje-0000PT-Fp; Sat, 18 Jul 2026 17:38:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCjc-0000OK-U4; Sat, 18 Jul 2026 17:38:12 -0400 Received: from pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.245.243.92]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCjY-000201-3K; Sat, 18 Jul 2026 17:38:12 -0400 Received: from ip-10-5-9-48.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.9.48]) by internal-pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:38:05 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.51:7377] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.48.250:2525] with esmtp (Farcaster) id dc3916e0-9a56-4512-9bd0-5d49a6de8b32; Sat, 18 Jul 2026 21:38:05 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC002.ant.amazon.com (10.250.64.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:38:04 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:37:54 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784410688; x=1815946688; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=bxpXC4MITv5hh985dMkHBTgluTdz27C6qpED/8FVkfo=; b=ROp170WA6OJv9Lxt8QGpUqiMgGIS5359KepHcd0lUvAPWUT7JrtcIfX6 f4DG4RuqLUrWy5VTD5fxtDemAIpiqwxy5jIHSC6vcMDS6ypSaJoPRPpHs sZoiljlgNJRnzL11puFSZqULEU6fYUkvppYDJBbO0uTroL+q2A9OdsF/p Ni020q+KzukaZbGpJ6n8V910fpu1WTt8Qryei2s7wHAQTwXLzhl6/Ux20 zNx+tQrYTNMKjlG5plj+GA8twvTLdwT3L2X2cFs2aZQruH0H2Uc3fcmL0 3r5lg6CZb9GXkKVPvuH+BkSZgkiJBK5eLKluKZuVtdaxCvptDl2dNUW7U g==; X-CSE-ConnectionGUID: DntEBtiETLaNCj6EC6nMng== X-CSE-MsgGUID: MOr4UklsQfWz2fiAbIrr6Q== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23422475" X-Farcaster-Flow-ID: dc3916e0-9a56-4512-9bd0-5d49a6de8b32 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 004/137] sysbus: Make sysbus_create_simple()/_varargs() take a QOM parent Date: Sat, 18 Jul 2026 21:34:39 +0000 Message-ID: <20260718213652.37673-5-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D035UWA004.ant.amazon.com (10.13.139.109) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.245.243.92; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784410774252158500 Sysbus is by far the largest producer of orphaned onboard devices: of the ~1180 unparented device creation sites in the tree, well over half go through sysbus_create_simple(), sysbus_create_varargs(), or qdev_new_orphan()+sysbus_realize_and_unref() open-coded. Apply the same rename-and-reintroduce treatment as qdev_new(): mechanically rename the existing helpers to *_orphan() and reintroduce the short names with a leading (parent, id, ...) pair that plumbs down to the new qdev_new(). The parented versions call sysbus_realize() (not _and_unref) since the child<> property already holds the sole reference. The mechanical rename part is generated by spatch --sp-file \ scripts/coccinelle/qom-parent/sysbus-create-orphan.cocci \ --in-place --include-headers --dir . or equivalently git ls-files '*.[ch]' '*.[ch].inc' '*.rst' '*.py' | \ grep -v '^subprojects/' | \ xargs sed -i \ 's/\bsysbus_create_simple\b/sysbus_create_simple_orphan/g; s/\bsysbus_create_varargs\b/sysbus_create_varargs_orphan/g' Reviewed-by: Philippe Mathieu-Daud=C3=A9 AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/arm/allwinner-h3.c | 16 ++++----- hw/arm/collie.c | 2 +- hw/arm/exynos4210.c | 14 ++++---- hw/arm/fsl-imx6.c | 2 +- hw/arm/integratorcp.c | 18 +++++----- hw/arm/mps2.c | 6 ++-- hw/arm/musicpal.c | 18 +++++----- hw/arm/npcm7xx.c | 2 +- hw/arm/realview.c | 24 ++++++------- hw/arm/sbsa-ref.c | 6 ++-- hw/arm/stellaris.c | 8 ++--- hw/arm/strongarm.c | 10 +++--- hw/arm/versatilepb.c | 28 +++++++-------- hw/arm/vexpress.c | 20 +++++------ hw/arm/virt.c | 8 ++--- hw/arm/xilinx_zynq.c | 10 +++--- hw/core/sysbus.c | 35 +++++++++++++++++- hw/i386/kvm/clock.c | 2 +- hw/i386/kvm/xen_evtchn.c | 2 +- hw/i386/kvm/xen_gnttab.c | 2 +- hw/i386/kvm/xen_overlay.c | 2 +- hw/i386/kvm/xen_primary_console.c | 2 +- hw/i386/kvm/xen_xenstore.c | 2 +- hw/i386/microvm.c | 2 +- hw/intc/apic_common.c | 2 +- hw/loongarch/virt.c | 2 +- hw/m68k/next-cube.c | 4 +-- hw/m68k/virt.c | 2 +- hw/mips/jazz.c | 2 +- hw/mips/loongson3_virt.c | 2 +- hw/or1k/virt.c | 2 +- hw/ppc/amigaone.c | 2 +- hw/ppc/e500.c | 2 +- hw/ppc/pegasos.c | 4 +-- hw/ppc/ppc440_bamboo.c | 2 +- hw/ppc/sam460ex.c | 8 ++--- hw/riscv/virt.c | 4 +-- hw/sparc/sun4m.c | 2 +- hw/vmapple/vmapple.c | 4 +-- hw/xen/xen-pvh-common.c | 2 +- include/hw/core/sysbus.h | 36 ++++++++++++++++--- .../qom-parent/sysbus-create-orphan.cocci | 18 ++++++++++ 42 files changed, 210 insertions(+), 131 deletions(-) create mode 100644 scripts/coccinelle/qom-parent/sysbus-create-orphan.cocci diff --git a/hw/arm/allwinner-h3.c b/hw/arm/allwinner-h3.c index 262e99b3f9..427dbad7c3 100644 --- a/hw/arm/allwinner-h3.c +++ b/hw/arm/allwinner-h3.c @@ -379,29 +379,29 @@ static void allwinner_h3_realize(DeviceState *dev, Er= ror **errp) qdev_get_gpio_in(DEVICE(&s->gic), AW_H3_GIC_SPI_EMA= C)); =20 /* Universal Serial Bus */ - sysbus_create_simple(TYPE_AW_H3_EHCI, s->memmap[AW_H3_DEV_EHCI0], + sysbus_create_simple_orphan(TYPE_AW_H3_EHCI, s->memmap[AW_H3_DEV_EHCI0= ], qdev_get_gpio_in(DEVICE(&s->gic), AW_H3_GIC_SPI_EHCI0)); - sysbus_create_simple(TYPE_AW_H3_EHCI, s->memmap[AW_H3_DEV_EHCI1], + sysbus_create_simple_orphan(TYPE_AW_H3_EHCI, s->memmap[AW_H3_DEV_EHCI1= ], qdev_get_gpio_in(DEVICE(&s->gic), AW_H3_GIC_SPI_EHCI1)); - sysbus_create_simple(TYPE_AW_H3_EHCI, s->memmap[AW_H3_DEV_EHCI2], + sysbus_create_simple_orphan(TYPE_AW_H3_EHCI, s->memmap[AW_H3_DEV_EHCI2= ], qdev_get_gpio_in(DEVICE(&s->gic), AW_H3_GIC_SPI_EHCI2)); - sysbus_create_simple(TYPE_AW_H3_EHCI, s->memmap[AW_H3_DEV_EHCI3], + sysbus_create_simple_orphan(TYPE_AW_H3_EHCI, s->memmap[AW_H3_DEV_EHCI3= ], qdev_get_gpio_in(DEVICE(&s->gic), AW_H3_GIC_SPI_EHCI3)); =20 - sysbus_create_simple("sysbus-ohci", s->memmap[AW_H3_DEV_OHCI0], + sysbus_create_simple_orphan("sysbus-ohci", s->memmap[AW_H3_DEV_OHCI0], qdev_get_gpio_in(DEVICE(&s->gic), AW_H3_GIC_SPI_OHCI0)); - sysbus_create_simple("sysbus-ohci", s->memmap[AW_H3_DEV_OHCI1], + sysbus_create_simple_orphan("sysbus-ohci", s->memmap[AW_H3_DEV_OHCI1], qdev_get_gpio_in(DEVICE(&s->gic), AW_H3_GIC_SPI_OHCI1)); - sysbus_create_simple("sysbus-ohci", s->memmap[AW_H3_DEV_OHCI2], + sysbus_create_simple_orphan("sysbus-ohci", s->memmap[AW_H3_DEV_OHCI2], qdev_get_gpio_in(DEVICE(&s->gic), AW_H3_GIC_SPI_OHCI2)); - sysbus_create_simple("sysbus-ohci", s->memmap[AW_H3_DEV_OHCI3], + sysbus_create_simple_orphan("sysbus-ohci", s->memmap[AW_H3_DEV_OHCI3], qdev_get_gpio_in(DEVICE(&s->gic), AW_H3_GIC_SPI_OHCI3)); =20 diff --git a/hw/arm/collie.c b/hw/arm/collie.c index 91f0a94b6f..81bc019460 100644 --- a/hw/arm/collie.c +++ b/hw/arm/collie.c @@ -64,7 +64,7 @@ static void collie_init(MachineState *machine) FLASH_SECTOR_SIZE, 4, 0x00, 0x00, 0x00, 0x00= , 0); } =20 - sysbus_create_simple("scoop", 0x40800000, NULL); + sysbus_create_simple_orphan("scoop", 0x40800000, NULL); =20 collie_binfo.board_id =3D 0x208; arm_load_kernel(cms->sa1110->cpu, machine, &collie_binfo); diff --git a/hw/arm/exynos4210.c b/hw/arm/exynos4210.c index 2b6e61abd0..3199ea9cb7 100644 --- a/hw/arm/exynos4210.c +++ b/hw/arm/exynos4210.c @@ -600,7 +600,7 @@ static void exynos4210_realize(DeviceState *socdev, Err= or **errp) } =20 /* Cache controller */ - sysbus_create_simple("l2x0", EXYNOS4210_L2X0_BASE_ADDR, NULL); + sysbus_create_simple_orphan("l2x0", EXYNOS4210_L2X0_BASE_ADDR, NULL); =20 /* External GIC */ qdev_prop_set_uint32(DEVICE(&s->ext_gic), "num-cpu", EXYNOS4210_NCPUS); @@ -667,13 +667,13 @@ static void exynos4210_realize(DeviceState *socdev, E= rror **errp) * The only reason of existence at the moment is that secondary CPU boot * loader uses PMU INFORM5 register as a holding pen. */ - sysbus_create_simple("exynos4210.pmu", EXYNOS4210_PMU_BASE_ADDR, NULL); + sysbus_create_simple_orphan("exynos4210.pmu", EXYNOS4210_PMU_BASE_ADDR= , NULL); =20 - sysbus_create_simple("exynos4210.clk", EXYNOS4210_CLK_BASE_ADDR, NULL); - sysbus_create_simple("exynos4210.rng", EXYNOS4210_RNG_BASE_ADDR, NULL); + sysbus_create_simple_orphan("exynos4210.clk", EXYNOS4210_CLK_BASE_ADDR= , NULL); + sysbus_create_simple_orphan("exynos4210.rng", EXYNOS4210_RNG_BASE_ADDR= , NULL); =20 /* PWM */ - sysbus_create_varargs("exynos4210.pwm", EXYNOS4210_PWM_BASE_ADDR, + sysbus_create_varargs_orphan("exynos4210.pwm", EXYNOS4210_PWM_BASE_ADD= R, s->irq_table[exynos4210_get_irq(22, 0)], s->irq_table[exynos4210_get_irq(22, 1)], s->irq_table[exynos4210_get_irq(22, 2)], @@ -681,7 +681,7 @@ static void exynos4210_realize(DeviceState *socdev, Err= or **errp) s->irq_table[exynos4210_get_irq(22, 4)], NULL); /* RTC */ - sysbus_create_varargs("exynos4210.rtc", EXYNOS4210_RTC_BASE_ADDR, + sysbus_create_varargs_orphan("exynos4210.rtc", EXYNOS4210_RTC_BASE_ADD= R, s->irq_table[exynos4210_get_irq(23, 0)], s->irq_table[exynos4210_get_irq(23, 1)], NULL); @@ -784,7 +784,7 @@ static void exynos4210_realize(DeviceState *socdev, Err= or **errp) sysbus_connect_irq(busdev, n, s->irq_table[exynos4210_get_irq(11, = n)]); } =20 - sysbus_create_simple(TYPE_EXYNOS4210_EHCI, EXYNOS4210_EHCI_BASE_ADDR, + sysbus_create_simple_orphan(TYPE_EXYNOS4210_EHCI, EXYNOS4210_EHCI_BASE= _ADDR, s->irq_table[exynos4210_get_irq(28, 3)]); =20 /*** DMA controllers ***/ diff --git a/hw/arm/fsl-imx6.c b/hw/arm/fsl-imx6.c index eec9673c6f..103adcc2bd 100644 --- a/hw/arm/fsl-imx6.c +++ b/hw/arm/fsl-imx6.c @@ -168,7 +168,7 @@ static void fsl_imx6_realize(DeviceState *dev, Error **= errp) } =20 /* L2 cache controller */ - sysbus_create_simple("l2x0", FSL_IMX6_PL310_ADDR, NULL); + sysbus_create_simple_orphan("l2x0", FSL_IMX6_PL310_ADDR, NULL); =20 if (!sysbus_realize(SYS_BUS_DEVICE(&s->ccm), errp)) { return; diff --git a/hw/arm/integratorcp.c b/hw/arm/integratorcp.c index 8a56165cc2..3df488921a 100644 --- a/hw/arm/integratorcp.c +++ b/hw/arm/integratorcp.c @@ -626,26 +626,26 @@ static void integratorcp_init(MachineState *machine) sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map((SysBusDevice *)dev, 0, 0x10000000); =20 - dev =3D sysbus_create_varargs(TYPE_INTEGRATOR_PIC, 0x14000000, + dev =3D sysbus_create_varargs_orphan(TYPE_INTEGRATOR_PIC, 0x14000000, qdev_get_gpio_in(DEVICE(cpu), ARM_CPU_IRQ), qdev_get_gpio_in(DEVICE(cpu), ARM_CPU_FIQ), NULL); for (i =3D 0; i < 32; i++) { pic[i] =3D qdev_get_gpio_in(dev, i); } - sic =3D sysbus_create_simple(TYPE_INTEGRATOR_PIC, 0xca000000, pic[26]); - sysbus_create_varargs("integrator_pit", 0x13000000, + sic =3D sysbus_create_simple_orphan(TYPE_INTEGRATOR_PIC, 0xca000000, p= ic[26]); + sysbus_create_varargs_orphan("integrator_pit", 0x13000000, pic[5], pic[6], pic[7], NULL); - sysbus_create_simple("pl031", 0x15000000, pic[8]); + sysbus_create_simple_orphan("pl031", 0x15000000, pic[8]); pl011_create(0x16000000, pic[1], serial_hd(0)); pl011_create(0x17000000, pic[2], serial_hd(1)); - icp =3D sysbus_create_simple(TYPE_ICP_CONTROL_REGS, 0xcb000000, + icp =3D sysbus_create_simple_orphan(TYPE_ICP_CONTROL_REGS, 0xcb000000, qdev_get_gpio_in(sic, 3)); - sysbus_create_simple("pl050_keyboard", 0x18000000, pic[3]); - sysbus_create_simple("pl050_mouse", 0x19000000, pic[4]); - sysbus_create_simple(TYPE_INTEGRATOR_DEBUG, 0x1a000000, 0); + sysbus_create_simple_orphan("pl050_keyboard", 0x18000000, pic[3]); + sysbus_create_simple_orphan("pl050_mouse", 0x19000000, pic[4]); + sysbus_create_simple_orphan(TYPE_INTEGRATOR_DEBUG, 0x1a000000, 0); =20 - dev =3D sysbus_create_varargs("pl181", 0x1c000000, pic[23], pic[24], N= ULL); + dev =3D sysbus_create_varargs_orphan("pl181", 0x1c000000, pic[23], pic= [24], NULL); qdev_connect_gpio_out_named(dev, "card-read-only", 0, qdev_get_gpio_in_named(icp, ICP_GPIO_MMC_WPROT, = 0)); qdev_connect_gpio_out_named(dev, "card-inserted", 0, diff --git a/hw/arm/mps2.c b/hw/arm/mps2.c index 96af49e213..5a0384a412 100644 --- a/hw/arm/mps2.c +++ b/hw/arm/mps2.c @@ -416,7 +416,7 @@ static void mps2_common_init(MachineState *machine) qdev_prop_set_uint32(DEVICE(&mms->fpgaio), "prescale-clk", 25000000); sysbus_realize(SYS_BUS_DEVICE(&mms->fpgaio), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(&mms->fpgaio), 0, 0x40028000); - sysbus_create_simple(TYPE_PL022, 0x40025000, /* External ADC */ + sysbus_create_simple_orphan(TYPE_PL022, 0x40025000, /* External= ADC */ qdev_get_gpio_in(armv7m, 22)); for (i =3D 0; i < 2; i++) { static const int spi_irqno[] =3D {11, 24}; @@ -435,7 +435,7 @@ static void mps2_common_init(MachineState *machine) qdev_connect_gpio_out(orgate_dev, 0, qdev_get_gpio_in(armv7m, spi_irqno[i])); for (j =3D 0; j < 2; j++) { - sysbus_create_simple(TYPE_PL022, spibase[2 * i + j], + sysbus_create_simple_orphan(TYPE_PL022, spibase[2 * i + j], qdev_get_gpio_in(orgate_dev, j)); } } @@ -446,7 +446,7 @@ static void mps2_common_init(MachineState *machine) 0x4002a000}; /* Shield1 */ DeviceState *dev; =20 - dev =3D sysbus_create_simple(TYPE_ARM_SBCON_I2C, i2cbase[i], NULL); + dev =3D sysbus_create_simple_orphan(TYPE_ARM_SBCON_I2C, i2cbase[i]= , NULL); if (i < 2) { /* * internal-only bus: mark it full to avoid user-created diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c index 6dd18a67b2..3bcdea7db8 100644 --- a/hw/arm/musicpal.c +++ b/hw/arm/musicpal.c @@ -1240,9 +1240,9 @@ static void musicpal_init(MachineState *machine) &error_fatal); memory_region_add_subregion(address_space_mem, MP_SRAM_BASE, sram); =20 - pic =3D sysbus_create_simple(TYPE_MV88W8618_PIC, MP_PIC_BASE, + pic =3D sysbus_create_simple_orphan(TYPE_MV88W8618_PIC, MP_PIC_BASE, qdev_get_gpio_in(DEVICE(cpu), ARM_CPU_IRQ)); - sysbus_create_varargs(TYPE_MV88W8618_PIT, MP_PIT_BASE, + sysbus_create_varargs_orphan(TYPE_MV88W8618_PIT, MP_PIT_BASE, qdev_get_gpio_in(pic, MP_TIMER1_IRQ), qdev_get_gpio_in(pic, MP_TIMER2_IRQ), qdev_get_gpio_in(pic, MP_TIMER3_IRQ), @@ -1286,7 +1286,7 @@ static void musicpal_init(MachineState *machine) 2, 0x00BF, 0x236D, 0x0000, 0x0000, 0x5555, 0x2AAA, 0); } - sysbus_create_simple(TYPE_MV88W8618_FLASHCFG, MP_FLASHCFG_BASE, NULL); + sysbus_create_simple_orphan(TYPE_MV88W8618_FLASHCFG, MP_FLASHCFG_BASE,= NULL); =20 dev =3D qdev_new_orphan(TYPE_MV88W8618_ETH); qemu_configure_nic_device(dev, true, "mv88w8618"); @@ -1297,17 +1297,17 @@ static void musicpal_init(MachineState *machine) sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, qdev_get_gpio_in(pic, MP_ETH_IRQ)); =20 - sysbus_create_simple("mv88w8618_wlan", MP_WLAN_BASE, NULL); + sysbus_create_simple_orphan("mv88w8618_wlan", MP_WLAN_BASE, NULL); =20 - sysbus_create_simple(TYPE_MUSICPAL_MISC, MP_MISC_BASE, NULL); + sysbus_create_simple_orphan(TYPE_MUSICPAL_MISC, MP_MISC_BASE, NULL); =20 - dev =3D sysbus_create_simple(TYPE_MUSICPAL_GPIO, MP_GPIO_BASE, + dev =3D sysbus_create_simple_orphan(TYPE_MUSICPAL_GPIO, MP_GPIO_BASE, qdev_get_gpio_in(pic, MP_GPIO_IRQ)); - i2c_dev =3D sysbus_create_simple(TYPE_GPIO_I2C, -1, NULL); + i2c_dev =3D sysbus_create_simple_orphan(TYPE_GPIO_I2C, -1, NULL); i2c =3D (I2CBus *)qdev_get_child_bus(i2c_dev, "i2c"); =20 - lcd_dev =3D sysbus_create_simple(TYPE_MUSICPAL_LCD, MP_LCD_BASE, NULL); - key_dev =3D sysbus_create_simple(TYPE_MUSICPAL_KEY, -1, NULL); + lcd_dev =3D sysbus_create_simple_orphan(TYPE_MUSICPAL_LCD, MP_LCD_BASE= , NULL); + key_dev =3D sysbus_create_simple_orphan(TYPE_MUSICPAL_KEY, -1, NULL); =20 /* I2C read data */ qdev_connect_gpio_out(i2c_dev, 0, diff --git a/hw/arm/npcm7xx.c b/hw/arm/npcm7xx.c index c27f149c04..87734c1cfb 100644 --- a/hw/arm/npcm7xx.c +++ b/hw/arm/npcm7xx.c @@ -521,7 +521,7 @@ static void npcm7xx_realize(DeviceState *dev, Error **e= rrp) } =20 /* L2 cache controller */ - sysbus_create_simple("l2x0", NPCM7XX_L2C_BA, NULL); + sysbus_create_simple_orphan("l2x0", NPCM7XX_L2C_BA, NULL); =20 /* System Global Control Registers (GCR). Can fail due to user input. = */ object_property_set_int(OBJECT(&s->gcr), "disabled-modules", diff --git a/hw/arm/realview.c b/hw/arm/realview.c index 0fce9b624f..287c092c2d 100644 --- a/hw/arm/realview.c +++ b/hw/arm/realview.c @@ -200,13 +200,13 @@ static void realview_init(MachineState *machine, for (n =3D 0; n < smp_cpus; n++) { sysbus_connect_irq(busdev, n, cpu_irq[n]); } - sysbus_create_varargs("l2x0", periphbase + 0x2000, NULL); + sysbus_create_varargs_orphan("l2x0", periphbase + 0x2000, NULL); /* Both A9 and 11MPCore put the GIC CPU i/f at base + 0x100 */ realview_binfo.gic_cpu_if_addr =3D periphbase + 0x100; } else { uint32_t gic_addr =3D is_pb ? 0x1e000000 : 0x10040000; /* For now just create the nIRQ GIC, and ignore the others. */ - dev =3D sysbus_create_simple(TYPE_REALVIEW_GIC, gic_addr, cpu_irq[= 0]); + dev =3D sysbus_create_simple_orphan(TYPE_REALVIEW_GIC, gic_addr, c= pu_irq[0]); } for (n =3D 0; n < GIC_EXT_IRQS; n++) { pic[n] =3D qdev_get_gpio_in(dev, n); @@ -221,8 +221,8 @@ static void realview_init(MachineState *machine, sysbus_mmio_map(SYS_BUS_DEVICE(pl041), 0, 0x10004000); sysbus_connect_irq(SYS_BUS_DEVICE(pl041), 0, pic[19]); =20 - sysbus_create_simple("pl050_keyboard", 0x10006000, pic[20]); - sysbus_create_simple("pl050_mouse", 0x10007000, pic[21]); + sysbus_create_simple_orphan("pl050_keyboard", 0x10006000, pic[20]); + sysbus_create_simple_orphan("pl050_mouse", 0x10007000, pic[21]); =20 pl011_create(0x10009000, pic[12], serial_hd(0)); pl011_create(0x1000a000, pic[13], serial_hd(1)); @@ -238,12 +238,12 @@ static void realview_init(MachineState *machine, sysbus_mmio_map(busdev, 0, 0x10030000); sysbus_connect_irq(busdev, 0, pic[24]); =20 - sysbus_create_simple("sp804", 0x10011000, pic[4]); - sysbus_create_simple("sp804", 0x10012000, pic[5]); + sysbus_create_simple_orphan("sp804", 0x10011000, pic[4]); + sysbus_create_simple_orphan("sp804", 0x10012000, pic[5]); =20 - sysbus_create_simple("pl061", 0x10013000, pic[6]); - sysbus_create_simple("pl061", 0x10014000, pic[7]); - gpio2 =3D sysbus_create_simple("pl061", 0x10015000, pic[8]); + sysbus_create_simple_orphan("pl061", 0x10013000, pic[6]); + sysbus_create_simple_orphan("pl061", 0x10014000, pic[7]); + gpio2 =3D sysbus_create_simple_orphan("pl061", 0x10015000, pic[8]); =20 dev =3D qdev_new_orphan("pl111"); object_property_set_link(OBJECT(dev), "framebuffer-memory", @@ -252,7 +252,7 @@ static void realview_init(MachineState *machine, sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, 0x10020000); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[23]); =20 - dev =3D sysbus_create_varargs("pl181", 0x10005000, pic[17], pic[18], N= ULL); + dev =3D sysbus_create_varargs_orphan("pl181", 0x10005000, pic[17], pic= [18], NULL); /* Wire up MMC card detect and read-only signals. These have * to go to both the PL061 GPIO and the sysctl register. * Note that the PL181 orders these lines (readonly,inserted) @@ -278,7 +278,7 @@ static void realview_init(MachineState *machine, &error_fatal); } =20 - sysbus_create_simple("pl031", 0x10017000, pic[10]); + sysbus_create_simple_orphan("pl031", 0x10017000, pic[10]); =20 if (!is_pb) { dev =3D qdev_new_orphan("realview_pci"); @@ -319,7 +319,7 @@ static void realview_init(MachineState *machine, pci_init_nic_devices(pci_bus, "rtl8139"); } =20 - dev =3D sysbus_create_simple(TYPE_ARM_SBCON_I2C, 0x10002000, NULL); + dev =3D sysbus_create_simple_orphan(TYPE_ARM_SBCON_I2C, 0x10002000, NU= LL); i2c =3D (I2CBus *)qdev_get_child_bus(dev, "i2c"); i2c_slave_create_simple(i2c, "ds1338", 0x68); =20 diff --git a/hw/arm/sbsa-ref.c b/hw/arm/sbsa-ref.c index 47a1a82a39..a821833fa7 100644 --- a/hw/arm/sbsa-ref.c +++ b/hw/arm/sbsa-ref.c @@ -537,7 +537,7 @@ static void create_rtc(const SBSAMachineState *sms) hwaddr base =3D sbsa_ref_memmap[SBSA_RTC].base; int irq =3D sbsa_ref_irqmap[SBSA_RTC]; =20 - sysbus_create_simple("pl031", base, qdev_get_gpio_in(sms->gic, irq)); + sysbus_create_simple_orphan("pl031", base, qdev_get_gpio_in(sms->gic, = irq)); } =20 static void create_wdt(const SBSAMachineState *sms) @@ -572,10 +572,10 @@ static void create_gpio(const SBSAMachineState *sms) hwaddr base =3D sbsa_ref_memmap[SBSA_GPIO].base; int irq =3D sbsa_ref_irqmap[SBSA_GPIO]; =20 - pl061_dev =3D sysbus_create_simple("pl061", base, + pl061_dev =3D sysbus_create_simple_orphan("pl061", base, qdev_get_gpio_in(sms->gic, irq)); =20 - gpio_key_dev =3D sysbus_create_simple("gpio-key", -1, + gpio_key_dev =3D sysbus_create_simple_orphan("gpio-key", -1, qdev_get_gpio_in(pl061_dev, 3)); =20 /* connect powerdown request */ diff --git a/hw/arm/stellaris.c b/hw/arm/stellaris.c index 1f816a3965..3f72cedf2e 100644 --- a/hw/arm/stellaris.c +++ b/hw/arm/stellaris.c @@ -1143,7 +1143,7 @@ static void stellaris_init(MachineState *ms, stellari= s_board_info *board) sysbus_connect_irq(SYS_BUS_DEVICE(ssys_dev), 0, qdev_get_gpio_in(nvic,= 28)); =20 if (DEV_CAP(1, ADC)) { - dev =3D sysbus_create_varargs(TYPE_STELLARIS_ADC, 0x40038000, + dev =3D sysbus_create_varargs_orphan(TYPE_STELLARIS_ADC, 0x4003800= 0, qdev_get_gpio_in(nvic, 14), qdev_get_gpio_in(nvic, 15), qdev_get_gpio_in(nvic, 16), @@ -1189,7 +1189,7 @@ static void stellaris_init(MachineState *ms, stellari= s_board_info *board) =20 for (i =3D 0; i < NUM_GPIO; i++) { if (DEV_CAP(4, GPIO(i))) { - gpio_dev[i] =3D sysbus_create_simple("pl061_luminary", gpio_ad= dr[i], + gpio_dev[i] =3D sysbus_create_simple_orphan("pl061_luminary", = gpio_addr[i], qdev_get_gpio_in(nvic, gpio_irq[i= ])); for (j =3D 0; j < 8; j++) { @@ -1201,7 +1201,7 @@ static void stellaris_init(MachineState *ms, stellari= s_board_info *board) =20 for (i =3D 0; i < NUM_I2C; i++) { if (DEV_CAP(2, I2C(i))) { - i2c_dev[i] =3D sysbus_create_simple(TYPE_STELLARIS_I2C, i2c_ad= dr[i], + i2c_dev[i] =3D sysbus_create_simple_orphan(TYPE_STELLARIS_I2C,= i2c_addr[i], qdev_get_gpio_in(nvic, i2c_irq[i])= ); } @@ -1226,7 +1226,7 @@ static void stellaris_init(MachineState *ms, stellari= s_board_info *board) } } if (DEV_CAP(2, SSI)) { - dev =3D sysbus_create_simple("pl022", 0x40008000, + dev =3D sysbus_create_simple_orphan("pl022", 0x40008000, qdev_get_gpio_in(nvic, 7)); if (board->peripherals & BP_OLED_SSI) { void *bus; diff --git a/hw/arm/strongarm.c b/hw/arm/strongarm.c index 0c6b04f805..f67aaa23ed 100644 --- a/hw/arm/strongarm.c +++ b/hw/arm/strongarm.c @@ -1622,24 +1622,24 @@ StrongARMState *sa1110_init(const char *cpu_type) =20 s->cpu =3D ARM_CPU(cpu_create(cpu_type)); =20 - s->pic =3D sysbus_create_varargs("strongarm_pic", 0x90050000, + s->pic =3D sysbus_create_varargs_orphan("strongarm_pic", 0x90050000, qdev_get_gpio_in(DEVICE(s->cpu), ARM_CPU_IRQ), qdev_get_gpio_in(DEVICE(s->cpu), ARM_CPU_FIQ), NULL); =20 - sysbus_create_varargs("pxa25x-timer", 0x90000000, + sysbus_create_varargs_orphan("pxa25x-timer", 0x90000000, qdev_get_gpio_in(s->pic, SA_PIC_OSTC0), qdev_get_gpio_in(s->pic, SA_PIC_OSTC1), qdev_get_gpio_in(s->pic, SA_PIC_OSTC2), qdev_get_gpio_in(s->pic, SA_PIC_OSTC3), NULL); =20 - sysbus_create_simple(TYPE_STRONGARM_RTC, 0x90010000, + sysbus_create_simple_orphan(TYPE_STRONGARM_RTC, 0x90010000, qdev_get_gpio_in(s->pic, SA_PIC_RTC_ALARM)); =20 s->gpio =3D strongarm_gpio_init(0x90040000, s->pic); =20 - s->ppc =3D sysbus_create_varargs(TYPE_STRONGARM_PPC, 0x90060000, NULL); + s->ppc =3D sysbus_create_varargs_orphan(TYPE_STRONGARM_PPC, 0x90060000= , NULL); =20 for (i =3D 0; sa_serial[i].io_base; i++) { DeviceState *dev =3D qdev_new_orphan(TYPE_STRONGARM_UART); @@ -1651,7 +1651,7 @@ StrongARMState *sa1110_init(const char *cpu_type) qdev_get_gpio_in(s->pic, sa_serial[i].irq)); } =20 - s->ssp =3D sysbus_create_varargs(TYPE_STRONGARM_SSP, 0x80070000, + s->ssp =3D sysbus_create_varargs_orphan(TYPE_STRONGARM_SSP, 0x80070000, qdev_get_gpio_in(s->pic, SA_PIC_SSP), NULL); s->ssp_bus =3D (SSIBus *)qdev_get_child_bus(s->ssp, "ssi"); =20 diff --git a/hw/arm/versatilepb.c b/hw/arm/versatilepb.c index 5e9d76859f..b80410db0d 100644 --- a/hw/arm/versatilepb.c +++ b/hw/arm/versatilepb.c @@ -232,21 +232,21 @@ static void versatile_init(MachineState *machine, int= board_id) sysbus_realize_and_unref(SYS_BUS_DEVICE(sysctl), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(sysctl), 0, 0x10000000); =20 - dev =3D sysbus_create_varargs("pl190", 0x10140000, + dev =3D sysbus_create_varargs_orphan("pl190", 0x10140000, qdev_get_gpio_in(DEVICE(cpu), ARM_CPU_IRQ), qdev_get_gpio_in(DEVICE(cpu), ARM_CPU_FIQ), NULL); for (n =3D 0; n < 32; n++) { pic[n] =3D qdev_get_gpio_in(dev, n); } - dev =3D sysbus_create_simple(TYPE_VERSATILE_PB_SIC, 0x10003000, NULL); + dev =3D sysbus_create_simple_orphan(TYPE_VERSATILE_PB_SIC, 0x10003000,= NULL); for (n =3D 0; n < 32; n++) { sysbus_connect_irq(SYS_BUS_DEVICE(dev), n, pic[n]); sic[n] =3D qdev_get_gpio_in(dev, n); } =20 - sysbus_create_simple("pl050_keyboard", 0x10006000, sic[3]); - sysbus_create_simple("pl050_mouse", 0x10007000, sic[4]); + sysbus_create_simple_orphan("pl050_keyboard", 0x10006000, sic[3]); + sysbus_create_simple_orphan("pl050_mouse", 0x10007000, sic[4]); =20 dev =3D qdev_new_orphan("versatile_pci"); busdev =3D SYS_BUS_DEVICE(dev); @@ -292,13 +292,13 @@ static void versatile_init(MachineState *machine, int= board_id) sysbus_mmio_map(busdev, 0, 0x10130000); sysbus_connect_irq(busdev, 0, pic[17]); =20 - sysbus_create_simple("sp804", 0x101e2000, pic[4]); - sysbus_create_simple("sp804", 0x101e3000, pic[5]); + sysbus_create_simple_orphan("sp804", 0x101e2000, pic[4]); + sysbus_create_simple_orphan("sp804", 0x101e3000, pic[5]); =20 - sysbus_create_simple("pl061", 0x101e4000, pic[6]); - sysbus_create_simple("pl061", 0x101e5000, pic[7]); - sysbus_create_simple("pl061", 0x101e6000, pic[8]); - sysbus_create_simple("pl061", 0x101e7000, pic[9]); + sysbus_create_simple_orphan("pl061", 0x101e4000, pic[6]); + sysbus_create_simple_orphan("pl061", 0x101e5000, pic[7]); + sysbus_create_simple_orphan("pl061", 0x101e6000, pic[8]); + sysbus_create_simple_orphan("pl061", 0x101e7000, pic[9]); =20 /* The versatile/PB actually has a modified Color LCD controller that includes hardware cursor support from the PL111. */ @@ -312,7 +312,7 @@ static void versatile_init(MachineState *machine, int b= oard_id) /* Wire up the mux control signals from the SYS_CLCD register */ qdev_connect_gpio_out(sysctl, 0, qdev_get_gpio_in(dev, 0)); =20 - dev =3D sysbus_create_varargs("pl181", 0x10005000, sic[22], sic[1], NU= LL); + dev =3D sysbus_create_varargs_orphan("pl181", 0x10005000, sic[22], sic= [1], NULL); dinfo =3D drive_get(IF_SD, 0, 0); if (dinfo) { DeviceState *card; @@ -324,7 +324,7 @@ static void versatile_init(MachineState *machine, int b= oard_id) &error_fatal); } =20 - dev =3D sysbus_create_varargs("pl181", 0x1000b000, sic[23], sic[2], NU= LL); + dev =3D sysbus_create_varargs_orphan("pl181", 0x1000b000, sic[23], sic= [2], NULL); dinfo =3D drive_get(IF_SD, 0, 1); if (dinfo) { DeviceState *card; @@ -337,9 +337,9 @@ static void versatile_init(MachineState *machine, int b= oard_id) } =20 /* Add PL031 Real Time Clock. */ - sysbus_create_simple("pl031", 0x101e8000, pic[10]); + sysbus_create_simple_orphan("pl031", 0x101e8000, pic[10]); =20 - dev =3D sysbus_create_simple(TYPE_ARM_SBCON_I2C, 0x10002000, NULL); + dev =3D sysbus_create_simple_orphan(TYPE_ARM_SBCON_I2C, 0x10002000, NU= LL); i2c =3D (I2CBus *)qdev_get_child_bus(dev, "i2c"); i2c_slave_create_simple(i2c, "ds1338", 0x68); =20 diff --git a/hw/arm/vexpress.c b/hw/arm/vexpress.c index 716f55a086..5a0012cb4f 100644 --- a/hw/arm/vexpress.c +++ b/hw/arm/vexpress.c @@ -313,7 +313,7 @@ static void a9_daughterboard_init(VexpressMachineState = *vms, /* 0x100e1000 PL354 Static Memory Controller */ /* 0x100e2000 System Configuration Controller */ =20 - sysbus_create_simple("sp804", 0x100e4000, pic[48]); + sysbus_create_simple_orphan("sp804", 0x100e4000, pic[48]); /* 0x100e5000 SP805 Watchdog module */ /* 0x100e6000 BP147 TrustZone Protection Controller */ /* 0x100e9000 PL301 'Fast' AXI matrix */ @@ -321,7 +321,7 @@ static void a9_daughterboard_init(VexpressMachineState = *vms, /* 0x100ec000 TrustZone Address Space Controller */ /* 0x10200000 CoreSight debug APB */ /* 0x1e00a000 PL310 L2 Cache Controller */ - sysbus_create_varargs("l2x0", 0x1e00a000, NULL); + sysbus_create_varargs_orphan("l2x0", 0x1e00a000, NULL); } =20 /* Voltage values for SYS_CFG_VOLT daughterboard registers; @@ -623,7 +623,7 @@ static void vexpress_common_init(MachineState *machine) sysbus_mmio_map(SYS_BUS_DEVICE(pl041), 0, map[VE_PL041]); sysbus_connect_irq(SYS_BUS_DEVICE(pl041), 0, pic[11]); =20 - dev =3D sysbus_create_varargs("pl181", map[VE_MMCI], pic[9], pic[10], = NULL); + dev =3D sysbus_create_varargs_orphan("pl181", map[VE_MMCI], pic[9], pi= c[10], NULL); /* Wire up MMC card detect and read-only signals */ qdev_connect_gpio_out_named(dev, "card-read-only", 0, qdev_get_gpio_in(sysctl, ARM_SYSCTL_GPIO_MMC_WPR= OT)); @@ -640,22 +640,22 @@ static void vexpress_common_init(MachineState *machin= e) &error_fatal); } =20 - sysbus_create_simple("pl050_keyboard", map[VE_KMI0], pic[12]); - sysbus_create_simple("pl050_mouse", map[VE_KMI1], pic[13]); + sysbus_create_simple_orphan("pl050_keyboard", map[VE_KMI0], pic[12]); + sysbus_create_simple_orphan("pl050_mouse", map[VE_KMI1], pic[13]); =20 pl011_create(map[VE_UART0], pic[5], serial_hd(0)); pl011_create(map[VE_UART1], pic[6], serial_hd(1)); pl011_create(map[VE_UART2], pic[7], serial_hd(2)); pl011_create(map[VE_UART3], pic[8], serial_hd(3)); =20 - sysbus_create_simple("sp804", map[VE_TIMER01], pic[2]); - sysbus_create_simple("sp804", map[VE_TIMER23], pic[3]); + sysbus_create_simple_orphan("sp804", map[VE_TIMER01], pic[2]); + sysbus_create_simple_orphan("sp804", map[VE_TIMER23], pic[3]); =20 - dev =3D sysbus_create_simple(TYPE_ARM_SBCON_I2C, map[VE_SERIALDVI], NU= LL); + dev =3D sysbus_create_simple_orphan(TYPE_ARM_SBCON_I2C, map[VE_SERIALD= VI], NULL); i2c =3D (I2CBus *)qdev_get_child_bus(dev, "i2c"); i2c_slave_create_simple(i2c, "sii9022", 0x39); =20 - sysbus_create_simple("pl031", map[VE_RTC], pic[4]); /* RTC */ + sysbus_create_simple_orphan("pl031", map[VE_RTC], pic[4]); /* RTC */ =20 /* VE_COMPACTFLASH: not modelled */ =20 @@ -706,7 +706,7 @@ static void vexpress_common_init(MachineState *machine) * no backend is created the transport will just sit harmlessly idle. */ for (i =3D 0; i < NUM_VIRTIO_TRANSPORTS; i++) { - sysbus_create_simple("virtio-mmio", map[VE_VIRTIO] + 0x200 * i, + sysbus_create_simple_orphan("virtio-mmio", map[VE_VIRTIO] + 0x200 = * i, pic[40 + i]); } =20 diff --git a/hw/arm/virt.c b/hw/arm/virt.c index f8a1ba68be..1845124dc0 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -1561,7 +1561,7 @@ static void create_rtc(const VirtMachineState *vms) const char compat[] =3D "arm,pl031\0arm,primecell"; MachineState *ms =3D MACHINE(vms); =20 - sysbus_create_simple("pl031", base, qdev_get_gpio_in(vms->gic, irq)); + sysbus_create_simple_orphan("pl031", base, qdev_get_gpio_in(vms->gic, = irq)); =20 nodename =3D g_strdup_printf("/pl031@%" PRIx64, base); qemu_fdt_add_subnode(ms->fdt, nodename); @@ -1606,7 +1606,7 @@ static void virt_generic_error_req(Notifier *n, void = *opaque) static void create_gpio_keys(char *fdt, DeviceState *pl061_dev, uint32_t phandle) { - gpio_key_dev =3D sysbus_create_simple("gpio-key", -1, + gpio_key_dev =3D sysbus_create_simple_orphan("gpio-key", -1, qdev_get_gpio_in(pl061_dev, GPIO_PIN_POWER_BU= TTON)); =20 @@ -1631,7 +1631,7 @@ static void create_secure_gpio_pwr(char *fdt, DeviceS= tate *pl061_dev, DeviceState *gpio_pwr_dev; =20 /* gpio-pwr */ - gpio_pwr_dev =3D sysbus_create_simple("gpio-pwr", -1, NULL); + gpio_pwr_dev =3D sysbus_create_simple_orphan("gpio-pwr", -1, NULL); =20 /* connect secure pl061 to gpio-pwr */ qdev_connect_gpio_out(pl061_dev, SECURE_GPIO_RESET, @@ -1746,7 +1746,7 @@ static void create_virtio_devices(const VirtMachineSt= ate *vms) int irq =3D vms->irqmap[VIRT_MMIO] + i; hwaddr base =3D vms->memmap[VIRT_MMIO].base + i * size; =20 - sysbus_create_simple("virtio-mmio", base, + sysbus_create_simple_orphan("virtio-mmio", base, qdev_get_gpio_in(vms->gic, irq)); } =20 diff --git a/hw/arm/xilinx_zynq.c b/hw/arm/xilinx_zynq.c index 8c3b47d07a..7f31cd6088 100644 --- a/hw/arm/xilinx_zynq.c +++ b/hw/arm/xilinx_zynq.c @@ -269,7 +269,7 @@ static void zynq_init(MachineState *machine) sysbus_realize_and_unref(busdev, &error_fatal); sysbus_mmio_map(busdev, 0, MPCORE_PERIPHBASE); zynq_binfo.gic_cpu_if_addr =3D MPCORE_PERIPHBASE + 0x100; - sysbus_create_varargs("l2x0", MPCORE_PERIPHBASE + 0x2000, NULL); + sysbus_create_varargs_orphan("l2x0", MPCORE_PERIPHBASE + 0x2000, NULL); for (n =3D 0; n < smp_cpus; n++) { /* See "hw/intc/arm_gic.h" for the IRQ line association */ DeviceState *cpudev =3D DEVICE(zynq_machine->cpu[n]); @@ -287,8 +287,8 @@ static void zynq_init(MachineState *machine) n =3D zynq_init_spi_flashes(0xE0007000, pic[81 - GIC_INTERNAL], false,= n); n =3D zynq_init_spi_flashes(0xE000D000, pic[51 - GIC_INTERNAL], true, = n); =20 - sysbus_create_simple(TYPE_CHIPIDEA, 0xE0002000, pic[53 - GIC_INTERNAL]= ); - sysbus_create_simple(TYPE_CHIPIDEA, 0xE0003000, pic[76 - GIC_INTERNAL]= ); + sysbus_create_simple_orphan(TYPE_CHIPIDEA, 0xE0002000, pic[53 - GIC_IN= TERNAL]); + sysbus_create_simple_orphan(TYPE_CHIPIDEA, 0xE0003000, pic[76 - GIC_IN= TERNAL]); =20 dev =3D qdev_new_orphan(TYPE_CADENCE_UART); busdev =3D SYS_BUS_DEVICE(dev); @@ -307,9 +307,9 @@ static void zynq_init(MachineState *machine) sysbus_mmio_map(busdev, 0, 0xE0001000); sysbus_connect_irq(busdev, 0, pic[82 - GIC_INTERNAL]); =20 - sysbus_create_varargs("cadence_ttc", 0xF8001000, + sysbus_create_varargs_orphan("cadence_ttc", 0xF8001000, pic[42-GIC_INTERNAL], pic[43-GIC_INTERNAL], pic[44-GIC_INTERNA= L], NULL); - sysbus_create_varargs("cadence_ttc", 0xF8002000, + sysbus_create_varargs_orphan("cadence_ttc", 0xF8002000, pic[69-GIC_INTERNAL], pic[70-GIC_INTERNAL], pic[71-GIC_INTERNA= L], NULL); =20 ddr_ctrl_init(0xF8006000); diff --git a/hw/core/sysbus.c b/hw/core/sysbus.c index fe8baf73b5..bbacb07e1a 100644 --- a/hw/core/sysbus.c +++ b/hw/core/sysbus.c @@ -209,7 +209,40 @@ static void sysbus_device_realize(DeviceState *dev, Er= ror **errp) { } =20 -DeviceState *sysbus_create_varargs(const char *name, +static void sysbus_create_tail(SysBusDevice *s, hwaddr addr, va_list va) +{ + qemu_irq irq; + int n; + + if (addr !=3D (hwaddr)-1) { + sysbus_mmio_map(s, 0, addr); + } + n =3D 0; + while (1) { + irq =3D va_arg(va, qemu_irq); + if (!irq) { + break; + } + sysbus_connect_irq(s, n, irq); + n++; + } +} + +DeviceState *sysbus_create_varargs(Object *parent, const char *id, + const char *type, hwaddr addr, ...) +{ + DeviceState *dev; + va_list va; + + dev =3D qdev_new(parent, id, type); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); + va_start(va, addr); + sysbus_create_tail(SYS_BUS_DEVICE(dev), addr, va); + va_end(va); + return dev; +} + +DeviceState *sysbus_create_varargs_orphan(const char *name, hwaddr addr, ...) { DeviceState *dev; diff --git a/hw/i386/kvm/clock.c b/hw/i386/kvm/clock.c index e3dad136d3..de0df2c82a 100644 --- a/hw/i386/kvm/clock.c +++ b/hw/i386/kvm/clock.c @@ -377,7 +377,7 @@ void kvmclock_create(bool create_always) if (create_always || cpu->env.features[FEAT_KVM] & (CPUID_KVM_CLOCK | CPUID_KVM_CLOCK2)) { - sysbus_create_simple(TYPE_KVM_CLOCK, -1, NULL); + sysbus_create_simple_orphan(TYPE_KVM_CLOCK, -1, NULL); } } =20 diff --git a/hw/i386/kvm/xen_evtchn.c b/hw/i386/kvm/xen_evtchn.c index 8b243984e4..1a406fbc00 100644 --- a/hw/i386/kvm/xen_evtchn.c +++ b/hw/i386/kvm/xen_evtchn.c @@ -306,7 +306,7 @@ static void gsi_assert_bh(void *opaque) =20 void xen_evtchn_create(unsigned int nr_gsis, qemu_irq *system_gsis) { - XenEvtchnState *s =3D XEN_EVTCHN(sysbus_create_simple(TYPE_XEN_EVTCHN, + XenEvtchnState *s =3D XEN_EVTCHN(sysbus_create_simple_orphan(TYPE_XEN_= EVTCHN, -1, NULL)); int i; =20 diff --git a/hw/i386/kvm/xen_gnttab.c b/hw/i386/kvm/xen_gnttab.c index 85b324e62d..eb43e9f385 100644 --- a/hw/i386/kvm/xen_gnttab.c +++ b/hw/i386/kvm/xen_gnttab.c @@ -152,7 +152,7 @@ static const TypeInfo xen_gnttab_info =3D { =20 void xen_gnttab_create(void) { - xen_gnttab_singleton =3D XEN_GNTTAB(sysbus_create_simple(TYPE_XEN_GNTT= AB, + xen_gnttab_singleton =3D XEN_GNTTAB(sysbus_create_simple_orphan(TYPE_X= EN_GNTTAB, -1, NULL)); } =20 diff --git a/hw/i386/kvm/xen_overlay.c b/hw/i386/kvm/xen_overlay.c index 74cadffb72..1ef47539e4 100644 --- a/hw/i386/kvm/xen_overlay.c +++ b/hw/i386/kvm/xen_overlay.c @@ -169,7 +169,7 @@ static const TypeInfo xen_overlay_info =3D { =20 void xen_overlay_create(void) { - xen_overlay_singleton =3D XEN_OVERLAY(sysbus_create_simple(TYPE_XEN_OV= ERLAY, + xen_overlay_singleton =3D XEN_OVERLAY(sysbus_create_simple_orphan(TYPE= _XEN_OVERLAY, -1, NULL)); =20 /* If xen_domid wasn't explicitly set, at least make sure it isn't zer= o. */ diff --git a/hw/i386/kvm/xen_primary_console.c b/hw/i386/kvm/xen_primary_co= nsole.c index bf61f6235b..f22ce4b14b 100644 --- a/hw/i386/kvm/xen_primary_console.c +++ b/hw/i386/kvm/xen_primary_console.c @@ -84,7 +84,7 @@ static const TypeInfo xen_primary_console_info =3D { =20 void xen_primary_console_create(void) { - DeviceState *dev =3D sysbus_create_simple(TYPE_XEN_PRIMARY_CONSOLE, -1= , NULL); + DeviceState *dev =3D sysbus_create_simple_orphan(TYPE_XEN_PRIMARY_CONS= OLE, -1, NULL); =20 trace_xen_primary_console_create(); =20 diff --git a/hw/i386/kvm/xen_xenstore.c b/hw/i386/kvm/xen_xenstore.c index 0dc0edf3bf..92493bcb6d 100644 --- a/hw/i386/kvm/xen_xenstore.c +++ b/hw/i386/kvm/xen_xenstore.c @@ -276,7 +276,7 @@ static const TypeInfo xen_xenstore_info =3D { =20 void xen_xenstore_create(void) { - DeviceState *dev =3D sysbus_create_simple(TYPE_XEN_XENSTORE, -1, NULL); + DeviceState *dev =3D sysbus_create_simple_orphan(TYPE_XEN_XENSTORE, -1= , NULL); =20 xen_xenstore_singleton =3D XEN_XENSTORE(dev); =20 diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c index 08d54c277f..22688687c4 100644 --- a/hw/i386/microvm.c +++ b/hw/i386/microvm.c @@ -197,7 +197,7 @@ static void microvm_devices_init(MicrovmMachineState *m= ms) } =20 for (i =3D 0; i < mms->virtio_num_transports; i++) { - sysbus_create_simple("virtio-mmio", + sysbus_create_simple_orphan("virtio-mmio", VIRTIO_MMIO_BASE + i * 512, x86ms->gsi[mms->virtio_irq_base + i]); } diff --git a/hw/intc/apic_common.c b/hw/intc/apic_common.c index 49c03a5bce..aaa7dca480 100644 --- a/hw/intc/apic_common.c +++ b/hw/intc/apic_common.c @@ -282,7 +282,7 @@ static void apic_common_realize(DeviceState *dev, Error= **errp) /* Note: We need at least 1M to map the VAPIC option ROM */ if (!vapic && s->vapic_control & VAPIC_ENABLE_MASK && current_machine->ram_size >=3D 1024 * 1024) { - vapic =3D sysbus_create_simple("kvmvapic", -1, NULL); + vapic =3D sysbus_create_simple_orphan("kvmvapic", -1, NULL); } s->vapic =3D vapic; if (apic_report_tpr_access && info->enable_tpr_reporting) { diff --git a/hw/loongarch/virt.c b/hw/loongarch/virt.c index 23751c46d7..45acdc3ec1 100644 --- a/hw/loongarch/virt.c +++ b/hw/loongarch/virt.c @@ -485,7 +485,7 @@ static void virt_devices_init(DeviceState *pch_pic, * Create some unimplemented devices to emulate this. */ create_unimplemented_device("pci-dma-cfg", 0x1001041c, 0x4); - sysbus_create_simple("ls7a_rtc", VIRT_RTC_REG_BASE, + sysbus_create_simple_orphan("ls7a_rtc", VIRT_RTC_REG_BASE, qdev_get_gpio_in(pch_pic, VIRT_RTC_IRQ - VIRT_GSI_BASE)); =20 diff --git a/hw/m68k/next-cube.c b/hw/m68k/next-cube.c index 5bb123594d..0c1f5b4481 100644 --- a/hw/m68k/next-cube.c +++ b/hw/m68k/next-cube.c @@ -1280,7 +1280,7 @@ static void next_cube_init(MachineState *machine) memory_region_add_subregion(sysmem, 0x04000000, machine->ram); =20 /* Framebuffer */ - sysbus_create_simple(TYPE_NEXTFB, 0x0B000000, NULL); + sysbus_create_simple_orphan(TYPE_NEXTFB, 0x0B000000, NULL); =20 /* MMIO */ sysbus_mmio_map(SYS_BUS_DEVICE(pcdev), 0, 0x02005000); @@ -1319,7 +1319,7 @@ static void next_cube_init(MachineState *machine) memory_region_add_subregion(sysmem, 0x820c0000, &m->bmapm2); =20 /* KBD */ - sysbus_create_simple(TYPE_NEXTKBD, 0x0200e000, NULL); + sysbus_create_simple_orphan(TYPE_NEXTKBD, 0x0200e000, NULL); =20 /* Load ROM here */ memory_region_init_rom(&m->rom, NULL, "next.rom", 0x20000, &error_fata= l); diff --git a/hw/m68k/virt.c b/hw/m68k/virt.c index f86d55d96c..e2af0196e8 100644 --- a/hw/m68k/virt.c +++ b/hw/m68k/virt.c @@ -202,7 +202,7 @@ static void virt_init(MachineState *machine) sysbus_connect_irq(sysbus, 0, PIC_GPIO(VIRT_GF_TTY_IRQ_BASE)); =20 /* virt controller */ - dev =3D sysbus_create_simple(TYPE_VIRT_CTRL, VIRT_CTRL_MMIO_BASE, + dev =3D sysbus_create_simple_orphan(TYPE_VIRT_CTRL, VIRT_CTRL_MMIO_BAS= E, PIC_GPIO(VIRT_CTRL_IRQ_BASE)); =20 /* virtio-mmio */ diff --git a/hw/mips/jazz.c b/hw/mips/jazz.c index f9be67249f..a902e400cf 100644 --- a/hw/mips/jazz.c +++ b/hw/mips/jazz.c @@ -395,7 +395,7 @@ static void mips_jazz_init(MachineState *machine, sysbus_mmio_map(sysbus, 0, 0x80009000); =20 /* LED indicator */ - sysbus_create_simple("jazz-led", 0x8000f000, NULL); + sysbus_create_simple_orphan("jazz-led", 0x8000f000, NULL); =20 g_free(dmas); } diff --git a/hw/mips/loongson3_virt.c b/hw/mips/loongson3_virt.c index d3b728339e..854f7f6801 100644 --- a/hw/mips/loongson3_virt.c +++ b/hw/mips/loongson3_virt.c @@ -536,7 +536,7 @@ static void mips_loongson3_virt_init(MachineState *mach= ine) qdev_get_gpio_in(liointc, UART_IRQ), 115200, serial_hd(= 0), DEVICE_LITTLE_ENDIAN); =20 - sysbus_create_simple("goldfish_rtc", virt_memmap[VIRT_RTC].base, + sysbus_create_simple_orphan("goldfish_rtc", virt_memmap[VIRT_RTC].base, qdev_get_gpio_in(liointc, RTC_IRQ)); =20 cpuclk =3D clock_new(OBJECT(machine), "cpu-refclk"); diff --git a/hw/or1k/virt.c b/hw/or1k/virt.c index 3067a5b2e7..9451a0b7df 100644 --- a/hw/or1k/virt.c +++ b/hw/or1k/virt.c @@ -300,7 +300,7 @@ static void openrisc_virt_rtc_init(OR1KVirtState *state= , hwaddr base, qemu_irq rtc_irq =3D get_per_cpu_irq(cpus, num_cpus, irq_pin); =20 /* Goldfish RTC */ - sysbus_create_simple(TYPE_GOLDFISH_RTC, base, rtc_irq); + sysbus_create_simple_orphan(TYPE_GOLDFISH_RTC, base, rtc_irq); =20 /* Goldfish RTC FDT */ nodename =3D g_strdup_printf("/soc/rtc@%" HWADDR_PRIx, base); diff --git a/hw/ppc/amigaone.c b/hw/ppc/amigaone.c index bcdf36b344..528c2c656a 100644 --- a/hw/ppc/amigaone.c +++ b/hw/ppc/amigaone.c @@ -329,7 +329,7 @@ static void amigaone_init(MachineState *machine) } =20 /* Articia S */ - dev =3D sysbus_create_simple(TYPE_ARTICIA, ARTICIA_ADDR, NULL); + dev =3D sysbus_create_simple_orphan(TYPE_ARTICIA, ARTICIA_ADDR, NULL); =20 i2c_bus =3D I2C_BUS(qdev_get_child_bus(dev, "smbus")); if (machine->ram_size > 512 * MiB) { diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c index 65e71826a4..05c305b72c 100644 --- a/hw/ppc/e500.c +++ b/hw/ppc/e500.c @@ -1076,7 +1076,7 @@ void ppce500_init(MachineState *machine) } =20 /* Register spinning region */ - sysbus_create_simple("e500-spin", pmc->spin_base, NULL); + sysbus_create_simple_orphan("e500-spin", pmc->spin_base, NULL); =20 if (pmc->has_mpc8xxx_gpio) { qemu_irq poweroff_irq; diff --git a/hw/ppc/pegasos.c b/hw/ppc/pegasos.c index 9d7e279123..3dc02423ee 100644 --- a/hw/ppc/pegasos.c +++ b/hw/ppc/pegasos.c @@ -218,7 +218,7 @@ static void pegasos_init(MachineState *machine) MemoryRegion *pci_mem, *mr; =20 /* Articia S */ - pm->nb =3D DEVICE(sysbus_create_simple(TYPE_ARTICIA, 0xfe000000, N= ULL)); + pm->nb =3D DEVICE(sysbus_create_simple_orphan(TYPE_ARTICIA, 0xfe00= 0000, NULL)); pci_mem =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(pm->nb), 1); mr =3D g_new(MemoryRegion, 1); memory_region_init_alias(mr, OBJECT(pm->nb), "pci-mem-low", pci_me= m, @@ -233,7 +233,7 @@ static void pegasos_init(MachineState *machine) } case PEGASOS2: /* Marvell Discovery II system controller */ - pm->nb =3D DEVICE(sysbus_create_simple(TYPE_MV64361, -1, + pm->nb =3D DEVICE(sysbus_create_simple_orphan(TYPE_MV64361, -1, qdev_get_gpio_in(DEVICE(pm->cpu), PPC6xx_INPUT_INT= ))); pci_bus =3D mv64361_get_pci_bus(pm->nb, 1); break; diff --git a/hw/ppc/ppc440_bamboo.c b/hw/ppc/ppc440_bamboo.c index e76d359e43..7a6c3ebec5 100644 --- a/hw/ppc/ppc440_bamboo.c +++ b/hw/ppc/ppc440_bamboo.c @@ -183,7 +183,7 @@ static void bamboo_init(MachineState *machine) ppc4xx_sdram_ddr_enable(PPC4xx_SDRAM_DDR(dev)); =20 /* PCI */ - dev =3D sysbus_create_varargs(TYPE_PPC4xx_PCI_HOST, PPC440EP_PCI_CONFI= G, + dev =3D sysbus_create_varargs_orphan(TYPE_PPC4xx_PCI_HOST, PPC440EP_PC= I_CONFIG, qdev_get_gpio_in(uicdev, pci_irq_nrs[0]), qdev_get_gpio_in(uicdev, pci_irq_nrs[1]), qdev_get_gpio_in(uicdev, pci_irq_nrs[2]), diff --git a/hw/ppc/sam460ex.c b/hw/ppc/sam460ex.c index 778b04c532..88c4e66b2d 100644 --- a/hw/ppc/sam460ex.c +++ b/hw/ppc/sam460ex.c @@ -336,7 +336,7 @@ static void sam460ex_init(MachineState *machine) ppc4xx_sdram_ddr2_enable(PPC4xx_SDRAM_DDR2(dev)); =20 /* IIC controllers and devices */ - dev =3D sysbus_create_simple(TYPE_PPC4xx_I2C, 0x4ef600700, + dev =3D sysbus_create_simple_orphan(TYPE_PPC4xx_I2C, 0x4ef600700, qdev_get_gpio_in(uic[0], 2)); i2c =3D PPC4xx_I2C(dev)->bus; /* SPD EEPROM on RAM module */ @@ -347,7 +347,7 @@ static void sam460ex_init(MachineState *machine) /* RTC */ i2c_slave_create_simple(i2c, "m41t80", 0x68); =20 - dev =3D sysbus_create_simple(TYPE_PPC4xx_I2C, 0x4ef600800, + dev =3D sysbus_create_simple_orphan(TYPE_PPC4xx_I2C, 0x4ef600800, qdev_get_gpio_in(uic[0], 3)); =20 /* External bus controller */ @@ -387,7 +387,7 @@ static void sam460ex_init(MachineState *machine) l2cache_ram); =20 /* USB */ - sysbus_create_simple(TYPE_PPC4xx_EHCI, 0x4bffd0400, + sysbus_create_simple_orphan(TYPE_PPC4xx_EHCI, 0x4bffd0400, qdev_get_gpio_in(uic[2], 29)); dev =3D qdev_new_orphan("sysbus-ohci"); qdev_prop_set_string(dev, "masterbus", "usb-bus.0"); @@ -416,7 +416,7 @@ static void sam460ex_init(MachineState *machine) =20 /* PCI bus */ /* All PCI irqs are connected to the same UIC pin (cf. UBoot source) */ - dev =3D sysbus_create_simple(TYPE_PPC440_PCIX_HOST, 0xc0ec00000, + dev =3D sysbus_create_simple_orphan(TYPE_PPC440_PCIX_HOST, 0xc0ec00000, qdev_get_gpio_in(uic[1], 0)); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 1, 0xc08000000); pci_bus =3D PCI_BUS(qdev_get_child_bus(dev, "pci.0")); diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index 81212c81dd..cb1fa3c732 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -1473,7 +1473,7 @@ static void virt_machine_init(MachineState *machine) =20 /* VirtIO MMIO devices */ for (i =3D 0; i < VIRTIO_COUNT; i++) { - sysbus_create_simple("virtio-mmio", + sysbus_create_simple_orphan("virtio-mmio", s->memmap[VIRT_VIRTIO].base + i * s->memmap[VIRT_VIRTIO].size, qdev_get_gpio_in(virtio_irqchip, VIRTIO_IRQ + i)); } @@ -1486,7 +1486,7 @@ static void virt_machine_init(MachineState *machine) 0, qdev_get_gpio_in(mmio_irqchip, UART0_IRQ), 399193, serial_hd(0), DEVICE_LITTLE_ENDIAN); =20 - sysbus_create_simple("goldfish_rtc", s->memmap[VIRT_RTC].base, + sysbus_create_simple_orphan("goldfish_rtc", s->memmap[VIRT_RTC].base, qdev_get_gpio_in(mmio_irqchip, RTC_IRQ)); =20 for (i =3D 0; i < ARRAY_SIZE(s->flash); i++) { diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c index 69a287937e..80e37555b1 100644 --- a/hw/sparc/sun4m.c +++ b/hw/sparc/sun4m.c @@ -1018,7 +1018,7 @@ static void sun4m_hw_init(MachineState *machine) slavio_irq[30], fdc_tc); =20 if (hwdef->cs_base) { - sysbus_create_simple("sun-CS4231", hwdef->cs_base, + sysbus_create_simple_orphan("sun-CS4231", hwdef->cs_base, slavio_irq[5]); } =20 diff --git a/hw/vmapple/vmapple.c b/hw/vmapple/vmapple.c index 9f69ab2bc7..bf19faa04a 100644 --- a/hw/vmapple/vmapple.c +++ b/hw/vmapple/vmapple.c @@ -305,7 +305,7 @@ static void create_rtc(const VMAppleMachineState *vms) hwaddr base =3D vms->memmap[VMAPPLE_RTC].base; int irq =3D vms->irqmap[VMAPPLE_RTC]; =20 - sysbus_create_simple("pl031", base, qdev_get_gpio_in(vms->gic, irq)); + sysbus_create_simple_orphan("pl031", base, qdev_get_gpio_in(vms->gic, = irq)); } =20 static DeviceState *gpio_key_dev; @@ -331,7 +331,7 @@ static void create_gpio_devices(const VMAppleMachineSta= te *vms, int gpio, sysbus_realize_and_unref(s, &error_fatal); memory_region_add_subregion(mem, base, sysbus_mmio_get_region(s, 0)); sysbus_connect_irq(s, 0, qdev_get_gpio_in(vms->gic, irq)); - gpio_key_dev =3D sysbus_create_simple("gpio-key", -1, + gpio_key_dev =3D sysbus_create_simple_orphan("gpio-key", -1, qdev_get_gpio_in(pl061_dev, 3)); } =20 diff --git a/hw/xen/xen-pvh-common.c b/hw/xen/xen-pvh-common.c index 4c9a4fdea8..17f545d07c 100644 --- a/hw/xen/xen-pvh-common.c +++ b/hw/xen/xen-pvh-common.c @@ -173,7 +173,7 @@ static void xen_create_virtio_mmio_devices(XenPVHMachin= eState *s) qemu_irq irq =3D qemu_allocate_irq(xen_set_irq, NULL, s->cfg.virtio_mmio_irq_base + i); =20 - sysbus_create_simple("virtio-mmio", base, irq); + sysbus_create_simple_orphan("virtio-mmio", base, irq); =20 trace_xen_create_virtio_mmio_devices(i, s->cfg.virtio_mmio_irq_base += i, diff --git a/include/hw/core/sysbus.h b/include/hw/core/sysbus.h index f3c4259d29..1e07b1978d 100644 --- a/include/hw/core/sysbus.h +++ b/include/hw/core/sysbus.h @@ -91,15 +91,43 @@ bool sysbus_realize_and_unref(SysBusDevice *dev, Error = **errp); /* Call func for every dynamically created sysbus device in the system */ void foreach_dynamic_sysbus_device(FindSysbusDeviceFunc *func, void *opaqu= e); =20 -/* Legacy helper function for creating devices. */ -DeviceState *sysbus_create_varargs(const char *name, +/** + * sysbus_create_varargs: Create, parent and realize a sysbus device + * @parent: the QOM parent (usually the machine or containing device) + * @id: child<> property name + * @type: sysbus device type to create + * @addr: MMIO region 0 address, or -1 for none + * @...: NULL-terminated list of qemu_irq to connect + * + * Create a sysbus device via qdev_new(@parent, @id, @type), realize + * it, optionally map MMIO region 0 at @addr, and connect the given + * IRQs. The returned device is owned by @parent. + * + * This is a convenience helper for simple sysbus devices; new code + * should generally prefer qdev_new() + sysbus_realize() and set + * properties explicitly before realize. + */ +DeviceState *sysbus_create_varargs(Object *parent, const char *id, + const char *type, hwaddr addr, ...); + +static inline DeviceState *sysbus_create_simple(Object *parent, + const char *id, + const char *type, + hwaddr addr, + qemu_irq irq) +{ + return sysbus_create_varargs(parent, id, type, addr, irq, NULL); +} + +/* Legacy helper function for creating unparented devices. */ +DeviceState *sysbus_create_varargs_orphan(const char *name, hwaddr addr, ...); =20 -static inline DeviceState *sysbus_create_simple(const char *name, +static inline DeviceState *sysbus_create_simple_orphan(const char *name, hwaddr addr, qemu_irq irq) { - return sysbus_create_varargs(name, addr, irq, NULL); + return sysbus_create_varargs_orphan(name, addr, irq, NULL); } =20 #endif /* HW_SYSBUS_H */ diff --git a/scripts/coccinelle/qom-parent/sysbus-create-orphan.cocci b/scr= ipts/coccinelle/qom-parent/sysbus-create-orphan.cocci new file mode 100644 index 0000000000..b925d9396f --- /dev/null +++ b/scripts/coccinelle/qom-parent/sysbus-create-orphan.cocci @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +// +// Rename sysbus_create_simple()/sysbus_create_varargs() to *_orphan() +// so that the short names can be reintroduced with a mandatory +// (parent, id, ...) signature. +// +// spatch --sp-file scripts/coccinelle/qom-parent/sysbus-create-orphan.coc= ci \ +// --in-place --include-headers --dir . + +@@ +@@ +- sysbus_create_simple ++ sysbus_create_simple_orphan + +@@ +@@ +- sysbus_create_varargs ++ sysbus_create_varargs_orphan --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784410725; cv=none; d=zohomail.com; s=zohoarc; b=Lr9a/tznSxQSErgOvaIktMrCIkxI50Ka6qJYL5QqFxBzU4WevLlRwv4eGyX7MxhnO4KuyQDCAHVC706cy1010Uahgf2c2nrShRYpS1DEHXx2JGJl58L213CdzUcEgRCVENWkApRAUUClmLhrhF4hovSDFbqpFVFKLpySKwTlRLk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784410725; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=3MkQjSfK3xpBOTSTW9/3r3vchBocX+209i0j24MgAwY=; b=SMF8qim/tbFtum9oPOxdMGIsRNXsLtDboX3nDSbIfIgJgBgpuuAJV5q4l89zKVZd1BESAOlTRbD6BNTCtiXnG9KyzO09T9yrdSwZ2pdpUNxNcb4ZIatgDz8kWbfoH9FDKqrLgVvRLhgOVuun+lcuIvJO+C0n74ueAWL6Dfm98xU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784410725407887.669906165502; Sat, 18 Jul 2026 14:38:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCjo-0000iv-R7; Sat, 18 Jul 2026 17:38:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCjn-0000iK-FM; Sat, 18 Jul 2026 17:38:23 -0400 Received: from pdx-out-015.esa.us-west-2.outbound.mail-perimeter.amazon.com ([50.112.246.219]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCjj-000212-23; Sat, 18 Jul 2026 17:38:23 -0400 Received: from ip-10-5-0-115.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.0.115]) by internal-pdx-out-015.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:38:15 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.182:32206] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.0.115:2525] with esmtp (Farcaster) id 8b02255a-fd5c-4f66-9b38-c97a2fdeb5ef; Sat, 18 Jul 2026 21:38:14 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA001.ant.amazon.com (10.250.64.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:38:14 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:38:04 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784410699; x=1815946699; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=3MkQjSfK3xpBOTSTW9/3r3vchBocX+209i0j24MgAwY=; b=nPtEsVvHVNgyG3PiUVmqm+0rgsM8/6viM6hUJSDEN9UFtbTiFOxSwn7Z lCBmlCHYTDxyJKfSfBum+Yh2oFEfY/WUPSoldad4nhKa1xvlx2denB8UR vskXXKtFtFdhtoFdqfYLgPQlkHkJCpm1UEXPyMNwer6poGryb22BZCie3 z6Tt4w2mGRcemihfpmkn+RGQX/TABDASviiGN81+g6YrPNUMM9fMsyWao YxzZPHE8CWki7MH0isEJzZG2gxHi8cNtAF5uBbg2oE5bVwGafcadq8X8R Hv7kmunuE/3WVaxy5NmxwLERvGL0LpjBjoNiF7Q3I+l7hrDnLpcLU8236 g==; X-CSE-ConnectionGUID: NxcmpLV2Tqu8yk+tQw47Vg== X-CSE-MsgGUID: po8gDXdIQN+DvB9CUL4T5w== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23724645" X-Farcaster-Flow-ID: 8b02255a-fd5c-4f66-9b38-c97a2fdeb5ef From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 005/137] pci: Make pci_new*()/pci_create_simple*() take a QOM parent Date: Sat, 18 Jul 2026 21:34:40 +0000 Message-ID: <20260718213652.37673-6-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D035UWA004.ant.amazon.com (10.13.139.109) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=50.112.246.219; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-015.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784410728711158500 Content-Type: text/plain; charset="utf-8" Same rename-and-reintroduce treatment as qdev_new() and sysbus_create_*(): mechanically rename the four PCI creation helpers to *_orphan() and reintroduce the short names with a leading (parent, id, ...) pair. The parented pci_create_simple*() variants call qdev_realize() (not pci_realize_and_unref()) since the child<> property already holds the sole reference. The mechanical rename part is generated by spatch --sp-file scripts/coccinelle/qom-parent/pci-new-orphan.cocci \ --in-place --include-headers --dir . or equivalently git ls-files '*.[ch]' '*.[ch].inc' '*.rst' '*.py' | \ grep -v '^subprojects/' | \ xargs sed -i \ 's/\bpci_create_simple_multifunction\b/&_orphan/g; s/\bpci_create_simple\b/&_orphan/g; s/\bpci_new_multifunction\b/&_orphan/g; s/\bpci_new\b/&_orphan/g' AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/alpha/dp264.c | 4 +- hw/arm/realview.c | 4 +- hw/arm/sbsa-ref.c | 2 +- hw/arm/versatilepb.c | 4 +- hw/hppa/machine.c | 8 +-- hw/i386/pc.c | 2 +- hw/i386/pc_piix.c | 4 +- hw/i386/pc_q35.c | 10 +-- hw/mips/boston.c | 2 +- hw/mips/fuloong2e.c | 4 +- hw/mips/loongson3_virt.c | 2 +- hw/mips/malta.c | 2 +- hw/pci-host/articia.c | 4 +- hw/pci-host/bonito.c | 2 +- hw/pci-host/grackle.c | 2 +- hw/pci-host/gt64120.c | 2 +- hw/pci-host/i440fx.c | 2 +- hw/pci-host/mv64361.c | 2 +- hw/pci-host/pnv_phb.c | 2 +- hw/pci-host/ppc4xx_pci.c | 2 +- hw/pci-host/ppce500.c | 2 +- hw/pci-host/raven.c | 2 +- hw/pci-host/sabre.c | 6 +- hw/pci-host/sh_pci.c | 2 +- hw/pci-host/uninorth.c | 8 +-- hw/pci/pci.c | 65 +++++++++++++++---- hw/pci/pcie_sriov.c | 2 +- hw/ppc/amigaone.c | 2 +- hw/ppc/mac_newworld.c | 4 +- hw/ppc/mac_oldworld.c | 4 +- hw/ppc/pegasos.c | 2 +- hw/ppc/prep.c | 4 +- hw/ppc/sam460ex.c | 4 +- hw/ppc/spapr.c | 2 +- hw/riscv/boston-aia.c | 2 +- hw/sparc64/sun4u.c | 8 +-- hw/vfio/igd.c | 2 +- hw/xen/xen_pt_graphics.c | 2 +- include/hw/pci/pci.h | 18 +++-- .../qom-parent/pci-new-orphan.cocci | 28 ++++++++ 40 files changed, 157 insertions(+), 78 deletions(-) create mode 100644 scripts/coccinelle/qom-parent/pci-new-orphan.cocci diff --git a/hw/alpha/dp264.c b/hw/alpha/dp264.c index f928e0cee8..6999168df6 100644 --- a/hw/alpha/dp264.c +++ b/hw/alpha/dp264.c @@ -110,7 +110,7 @@ static void clipper_init(MachineState *machine) * Importantly, we need to provide a PCI device node for it, otherwise * some operating systems won't notice there's an ISA bus to configure. */ - i82378_dev =3D DEVICE(pci_create_simple(pci_bus, PCI_DEVFN(7, 0), "i82= 378")); + i82378_dev =3D DEVICE(pci_create_simple_orphan(pci_bus, PCI_DEVFN(7, 0= ), "i82378")); isa_bus =3D ISA_BUS(qdev_get_child_bus(i82378_dev, "isa.0")); =20 /* Connect the ISA PIC to the Typhoon IRQ used for ISA interrupts. */ @@ -129,7 +129,7 @@ static void clipper_init(MachineState *machine) isa_create_simple(isa_bus, TYPE_SMC37C669_SUPERIO); =20 /* IDE disk setup. */ - pci_dev =3D pci_create_simple(pci_bus, -1, "cmd646-ide"); + pci_dev =3D pci_create_simple_orphan(pci_bus, -1, "cmd646-ide"); pci_ide_create_devs(pci_dev); =20 /* Load PALcode. Given that this is not "real" cpu palcode, diff --git a/hw/arm/realview.c b/hw/arm/realview.c index 287c092c2d..0642e35dd2 100644 --- a/hw/arm/realview.c +++ b/hw/arm/realview.c @@ -297,11 +297,11 @@ static void realview_init(MachineState *machine, sysbus_connect_irq(busdev, 3, pic[51]); pci_bus =3D (PCIBus *)qdev_get_child_bus(dev, "pci"); if (machine_usb(machine)) { - pci_create_simple(pci_bus, -1, "pci-ohci"); + pci_create_simple_orphan(pci_bus, -1, "pci-ohci"); } n =3D drive_get_max_bus(IF_SCSI); while (n >=3D 0) { - dev =3D DEVICE(pci_create_simple(pci_bus, -1, "lsi53c895a")); + dev =3D DEVICE(pci_create_simple_orphan(pci_bus, -1, "lsi53c89= 5a")); lsi53c8xx_handle_legacy_cmdline(dev); n--; } diff --git a/hw/arm/sbsa-ref.c b/hw/arm/sbsa-ref.c index a821833fa7..f9fb681d31 100644 --- a/hw/arm/sbsa-ref.c +++ b/hw/arm/sbsa-ref.c @@ -695,7 +695,7 @@ static void create_pcie(SBSAMachineState *sms, =20 pci_init_nic_devices(pci->bus, mc->default_nic); =20 - pci_create_simple(pci->bus, -1, "bochs-display"); + pci_create_simple_orphan(pci->bus, -1, "bochs-display"); =20 create_smmu(sms, pci->bus, sysmem, secure_sysmem); } diff --git a/hw/arm/versatilepb.c b/hw/arm/versatilepb.c index b80410db0d..81bd397b5d 100644 --- a/hw/arm/versatilepb.c +++ b/hw/arm/versatilepb.c @@ -270,11 +270,11 @@ static void versatile_init(MachineState *machine, int= board_id) pci_init_nic_devices(pci_bus, "rtl8139"); =20 if (machine_usb(machine)) { - pci_create_simple(pci_bus, -1, "pci-ohci"); + pci_create_simple_orphan(pci_bus, -1, "pci-ohci"); } n =3D drive_get_max_bus(IF_SCSI); while (n >=3D 0) { - dev =3D DEVICE(pci_create_simple(pci_bus, -1, "lsi53c895a")); + dev =3D DEVICE(pci_create_simple_orphan(pci_bus, -1, "lsi53c895a")= ); lsi53c8xx_handle_legacy_cmdline(dev); n--; } diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c index 02cafbda85..91fe4845c4 100644 --- a/hw/hppa/machine.c +++ b/hw/hppa/machine.c @@ -428,7 +428,7 @@ static void machine_HP_common_init_tail(MachineState *m= achine, PCIBus *pci_bus, =20 if (pci_bus && hppa_is_pa20(&cpu[0]->env)) { /* BMC board: HP Diva GSP PCI card */ - pci_dev =3D pci_new_multifunction(PCI_DEVFN(2, 0), "diva-gsp"); + pci_dev =3D pci_new_multifunction_orphan(PCI_DEVFN(2, 0), "diva-gs= p"); if (!lasi_dev) { /* bind default keyboard/serial to Diva card */ qdev_prop_set_chr(DEVICE(pci_dev), "chardev1", serial_hd(0)); @@ -443,7 +443,7 @@ static void machine_HP_common_init_tail(MachineState *m= achine, PCIBus *pci_bus, if (!lasi_dev && machine->enable_graphics && defaults_enabled()) { USBBus *usb_bus; =20 - pci_create_simple(pci_bus, -1, "pci-ohci"); + pci_create_simple_orphan(pci_bus, -1, "pci-ohci"); usb_bus =3D USB_BUS(object_resolve_type_unambiguous(TYPE_USB_BUS, &error_abort)); usb_create_simple(usb_bus, "usb-kbd"); @@ -721,7 +721,7 @@ static void machine_HP_B160L_init(MachineState *machine) =20 /* SCSI disk setup. */ if (drive_get_max_bus(IF_SCSI) >=3D 0) { - dev =3D DEVICE(pci_create_simple(pci_bus, -1, "lsi53c895a")); + dev =3D DEVICE(pci_create_simple_orphan(pci_bus, -1, "lsi53c895a")= ); lsi53c8xx_handle_legacy_cmdline(dev); } =20 @@ -773,7 +773,7 @@ static void machine_HP_C3700_init(MachineState *machine) =20 /* SCSI disk setup. */ if (drive_get_max_bus(IF_SCSI) >=3D 0) { - DeviceState *dev =3D DEVICE(pci_create_simple(pci_bus, -1, "lsi53c= 895a")); + DeviceState *dev =3D DEVICE(pci_create_simple_orphan(pci_bus, -1, = "lsi53c895a")); lsi53c8xx_handle_legacy_cmdline(dev); } =20 diff --git a/hw/i386/pc.c b/hw/i386/pc.c index bd5ab3d854..11a9d5df97 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -1104,7 +1104,7 @@ void pc_basic_device_init(struct PCMachineState *pcms, xen_gnttab_create(); xen_xenstore_create(); if (pcms->pcibus) { - pci_create_simple(pcms->pcibus, -1, "xen-platform"); + pci_create_simple_orphan(pcms->pcibus, -1, "xen-platform"); } xen_bus_init(); } diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c index e580f9f2a6..bd4c129143 100644 --- a/hw/i386/pc_piix.c +++ b/hw/i386/pc_piix.c @@ -236,7 +236,7 @@ static void pc_init1(MachineState *machine, const char = *pci_type) =20 gsi_state =3D pc_gsi_create(&x86ms->gsi, true); =20 - pci_dev =3D pci_new_multifunction(-1, pcms->south_bridge); + pci_dev =3D pci_new_multifunction_orphan(-1, pcms->south_bridge); object_property_set_bool(OBJECT(pci_dev), "has-usb", machine_usb(machine), &error_abort); object_property_set_bool(OBJECT(pci_dev), "has-acpi", @@ -384,7 +384,7 @@ static void pc_xen_hvm_init(MachineState *machine) : TYPE_I440FX_PCI_DEVICE); =20 xen_igd_reserve_slot(pcms->pcibus); - pci_create_simple(pcms->pcibus, -1, "xen-platform"); + pci_create_simple_orphan(pcms->pcibus, -1, "xen-platform"); } #endif =20 diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c index 0731403e55..daa75dbc26 100644 --- a/hw/i386/pc_q35.c +++ b/hw/i386/pc_q35.c @@ -114,12 +114,12 @@ static int ehci_create_ich9_with_companions(PCIBus *b= us, int slot) return -1; } =20 - ehci =3D pci_new_multifunction(PCI_DEVFN(slot, 7), name); + ehci =3D pci_new_multifunction_orphan(PCI_DEVFN(slot, 7), name); pci_realize_and_unref(ehci, bus, &error_fatal); usbbus =3D QLIST_FIRST(&ehci->qdev.child_bus); =20 for (i =3D 0; i < 3; i++) { - uhci =3D pci_new_multifunction(PCI_DEVFN(slot, comp[i].func), + uhci =3D pci_new_multifunction_orphan(PCI_DEVFN(slot, comp[i].func= ), comp[i].name); qdev_prop_set_string(&uhci->qdev, "masterbus", usbbus->name); qdev_prop_set_uint32(&uhci->qdev, "firstport", comp[i].port); @@ -235,7 +235,7 @@ static void pc_q35_init(MachineState *machine) gsi_state =3D pc_gsi_create(&x86ms->gsi, true); =20 /* create ISA bus */ - lpc =3D pci_new_multifunction(PCI_DEVFN(ICH9_LPC_DEV, ICH9_LPC_FUNC), + lpc =3D pci_new_multifunction_orphan(PCI_DEVFN(ICH9_LPC_DEV, ICH9_LPC_= FUNC), TYPE_ICH9_LPC_DEVICE); lpc_dev =3D DEVICE(lpc); qdev_prop_set_bit(lpc_dev, "smm-enabled", @@ -290,7 +290,7 @@ static void pc_q35_init(MachineState *machine) AHCIPCIState *ich9; =20 /* ahci and SATA device, for q35 1 ahci controller is built-in */ - pdev =3D pci_create_simple_multifunction(pcms->pcibus, + pdev =3D pci_create_simple_multifunction_orphan(pcms->pcibus, PCI_DEVFN(ICH9_SATA1_DEV, ICH9_SATA1_FUNC), "ich9-ahci"); @@ -311,7 +311,7 @@ static void pc_q35_init(MachineState *machine) PCIDevice *smb; =20 /* TODO: Populate SPD eeprom data. */ - smb =3D pci_create_simple_multifunction(pcms->pcibus, + smb =3D pci_create_simple_multifunction_orphan(pcms->pcibus, PCI_DEVFN(ICH9_SMB_DEV, ICH9_SMB_FUNC), TYPE_ICH9_SMB_DEVICE); diff --git a/hw/mips/boston.c b/hw/mips/boston.c index e328c578a5..18ede54ae8 100644 --- a/hw/mips/boston.c +++ b/hw/mips/boston.c @@ -769,7 +769,7 @@ static void boston_mach_init(MachineState *machine) qemu_chr_fe_set_handlers(&s->lcd_display, NULL, NULL, boston_lcd_event, NULL, s, NULL, true); =20 - pdev =3D pci_create_simple_multifunction(&PCI_BRIDGE(&pcie2->root)->se= c_bus, + pdev =3D pci_create_simple_multifunction_orphan(&PCI_BRIDGE(&pcie2->ro= ot)->sec_bus, PCI_DEVFN(0, 0), TYPE_ICH9_AHCI= ); ich9 =3D ICH9_AHCI(pdev); g_assert(ARRAY_SIZE(hd) =3D=3D ich9->ahci.ports); diff --git a/hw/mips/fuloong2e.c b/hw/mips/fuloong2e.c index 9a712ee930..e0cbf4df3d 100644 --- a/hw/mips/fuloong2e.c +++ b/hw/mips/fuloong2e.c @@ -286,7 +286,7 @@ static void mips_fuloong2e_init(MachineState *machine) pci_bus =3D bonito_init((qemu_irq *)&(env->irq[2])); =20 /* South bridge -> IP5 */ - pci_dev =3D pci_new_multifunction(PCI_DEVFN(FULOONG2E_VIA_SLOT, 0), + pci_dev =3D pci_new_multifunction_orphan(PCI_DEVFN(FULOONG2E_VIA_SLOT,= 0), TYPE_VT82C686B_ISA); =20 /* Set properties on individual devices before realizing the south bri= dge */ @@ -312,7 +312,7 @@ static void mips_fuloong2e_init(MachineState *machine) /* GPU */ if (vga_interface_type !=3D VGA_NONE) { vga_interface_created =3D true; - pci_dev =3D pci_new(-1, "ati-vga"); + pci_dev =3D pci_new_orphan(-1, "ati-vga"); dev =3D DEVICE(pci_dev); qdev_prop_set_uint32(dev, "vgamem_mb", 16); qdev_prop_set_uint16(dev, "x-device-id", 0x5159); diff --git a/hw/mips/loongson3_virt.c b/hw/mips/loongson3_virt.c index 854f7f6801..1729eb1c0b 100644 --- a/hw/mips/loongson3_virt.c +++ b/hw/mips/loongson3_virt.c @@ -465,7 +465,7 @@ static inline void loongson3_virt_devices_init(MachineS= tate *machine, if (defaults_enabled() && object_class_by_name("pci-ohci")) { USBBus *usb_bus; =20 - pci_create_simple(pci_bus, -1, "pci-ohci"); + pci_create_simple_orphan(pci_bus, -1, "pci-ohci"); usb_bus =3D USB_BUS(object_resolve_type_unambiguous(TYPE_USB_BUS, &error_abort)); usb_create_simple(usb_bus, "usb-kbd"); diff --git a/hw/mips/malta.c b/hw/mips/malta.c index fc5dbf262c..38edbbadd6 100644 --- a/hw/mips/malta.c +++ b/hw/mips/malta.c @@ -1233,7 +1233,7 @@ void mips_malta_init(MachineState *machine) pci_bus_map_irqs(pci_bus, malta_pci_slot_get_pirq); =20 /* Southbridge */ - piix4 =3D pci_new_multifunction(PIIX4_PCI_DEVFN, TYPE_PIIX4_PCI_DEVICE= ); + piix4 =3D pci_new_multifunction_orphan(PIIX4_PCI_DEVFN, TYPE_PIIX4_PCI= _DEVICE); qdev_prop_set_uint32(DEVICE(piix4), "smb_io_base", 0x1100); pci_realize_and_unref(piix4, pci_bus, &error_fatal); isa_bus =3D ISA_BUS(qdev_get_child_bus(DEVICE(piix4), "isa.0")); diff --git a/hw/pci-host/articia.c b/hw/pci-host/articia.c index 04623dfd84..0556c0ccff 100644 --- a/hw/pci-host/articia.c +++ b/hw/pci-host/articia.c @@ -185,10 +185,10 @@ static void articia_realize(DeviceState *dev, Error *= *errp) h->bus =3D pci_register_root_bus(dev, NULL, articia_pcihost_set_irq, amigaone_pcihost_bus0_map_irq, dev, &s-= >mem, &s->io, PCI_DEVFN(8, 0), 4, TYPE_PCI_BU= S); - pdev =3D pci_create_simple_multifunction(h->bus, PCI_DEVFN(0, 0), + pdev =3D pci_create_simple_multifunction_orphan(h->bus, PCI_DEVFN(0, 0= ), TYPE_ARTICIA_PCI_HOST); ARTICIA_PCI_HOST(pdev)->as =3D s; - pci_create_simple(h->bus, PCI_DEVFN(0, 1), TYPE_ARTICIA_PCI_BRIDGE); + pci_create_simple_orphan(h->bus, PCI_DEVFN(0, 1), TYPE_ARTICIA_PCI_BRI= DGE); =20 sysbus_init_mmio(SYS_BUS_DEVICE(dev), &s->reg); sysbus_init_mmio(SYS_BUS_DEVICE(dev), &s->mem); diff --git a/hw/pci-host/bonito.c b/hw/pci-host/bonito.c index cd7272c90c..40a62d62b6 100644 --- a/hw/pci-host/bonito.c +++ b/hw/pci-host/bonito.c @@ -747,7 +747,7 @@ PCIBus *bonito_init(qemu_irq *pic) pcihost->pic =3D pic; sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); =20 - d =3D pci_new(PCI_DEVFN(0, 0), TYPE_PCI_BONITO); + d =3D pci_new_orphan(PCI_DEVFN(0, 0), TYPE_PCI_BONITO); s =3D PCI_BONITO(d); s->pcihost =3D pcihost; pcihost->pci_dev =3D s; diff --git a/hw/pci-host/grackle.c b/hw/pci-host/grackle.c index b0db7870b0..c76cb61dc9 100644 --- a/hw/pci-host/grackle.c +++ b/hw/pci-host/grackle.c @@ -60,7 +60,7 @@ static void grackle_realize(DeviceState *dev, Error **err= p) &s->pci_io, 0, 4, TYPE_PCI_BUS); =20 - pci_create_simple(phb->bus, 0, "grackle"); + pci_create_simple_orphan(phb->bus, 0, "grackle"); } =20 static void grackle_init(Object *obj) diff --git a/hw/pci-host/gt64120.c b/hw/pci-host/gt64120.c index 566f928304..c1a94a3daa 100644 --- a/hw/pci-host/gt64120.c +++ b/hw/pci-host/gt64120.c @@ -1204,7 +1204,7 @@ static void gt64120_realize(DeviceState *dev, Error *= *errp) get_system_io(), PCI_DEVFN(18, 0), TYPE_PCI_BUS); =20 - pci_create_simple(phb->bus, PCI_DEVFN(0, 0), "gt64120_pci"); + pci_create_simple_orphan(phb->bus, PCI_DEVFN(0, 0), "gt64120_pci"); memory_region_init_io(&phb->conf_mem, OBJECT(phb), &pci_host_conf_le_ops, s, "pci-conf-idx", 4); diff --git a/hw/pci-host/i440fx.c b/hw/pci-host/i440fx.c index c1982f7962..e91ddd5d07 100644 --- a/hw/pci-host/i440fx.c +++ b/hw/pci-host/i440fx.c @@ -282,7 +282,7 @@ static void i440fx_pcihost_realize(DeviceState *dev, Er= ror **errp) s->io_memory, 0, TYPE_PCI_BUS); phb->bus =3D b; =20 - d =3D pci_create_simple(b, 0, s->pci_type); + d =3D pci_create_simple_orphan(b, 0, s->pci_type); f =3D I440FX_PCI_DEVICE(d); =20 range_set_bounds(&s->pci_hole, s->below_4g_mem_size, diff --git a/hw/pci-host/mv64361.c b/hw/pci-host/mv64361.c index 495a82befd..f75951c873 100644 --- a/hw/pci-host/mv64361.c +++ b/hw/pci-host/mv64361.c @@ -94,7 +94,7 @@ static void mv64361_pcihost_realize(DeviceState *dev, Err= or **errp) pci_swizzle_map_irq_fn, dev, &s->mem, &s->io, 0, 4, TYPE_PCI_BUS); g_free(name); - pci_create_simple(h->bus, 0, TYPE_MV64361_PCI_BRIDGE); + pci_create_simple_orphan(h->bus, 0, TYPE_MV64361_PCI_BRIDGE); qdev_init_gpio_out(dev, s->irq, ARRAY_SIZE(s->irq)); } =20 diff --git a/hw/pci-host/pnv_phb.c b/hw/pci-host/pnv_phb.c index 0b556d1bf5..fc0b226bef 100644 --- a/hw/pci-host/pnv_phb.c +++ b/hw/pci-host/pnv_phb.c @@ -167,7 +167,7 @@ static void pnv_phb_realize(DeviceState *dev, Error **e= rrp) } =20 if (defaults_enabled()) { - PCIDevice *root =3D pci_new(PCI_DEVFN(0, 0), TYPE_PNV_PHB_ROOT_POR= T); + PCIDevice *root =3D pci_new_orphan(PCI_DEVFN(0, 0), TYPE_PNV_PHB_R= OOT_PORT); =20 pci_realize_and_unref(root, pci->bus, errp); } diff --git a/hw/pci-host/ppc4xx_pci.c b/hw/pci-host/ppc4xx_pci.c index b9a00f5193..cd7b16aa87 100644 --- a/hw/pci-host/ppc4xx_pci.c +++ b/hw/pci-host/ppc4xx_pci.c @@ -332,7 +332,7 @@ static void ppc4xx_pcihost_realize(DeviceState *dev, Er= ror **errp) TYPE_PCI_BUS); h->bus =3D b; =20 - pci_create_simple(b, 0, TYPE_PPC4xx_HOST_BRIDGE); + pci_create_simple_orphan(b, 0, TYPE_PPC4xx_HOST_BRIDGE); =20 /* XXX split into 2 memory regions, one for config space, one for regs= */ memory_region_init(&s->container, OBJECT(s), "pci-container", PCI_ALL_= SIZE); diff --git a/hw/pci-host/ppce500.c b/hw/pci-host/ppce500.c index 67180ba5f0..838a01608c 100644 --- a/hw/pci-host/ppce500.c +++ b/hw/pci-host/ppce500.c @@ -473,7 +473,7 @@ static void e500_pcihost_realize(DeviceState *dev, Erro= r **errp) address_space_init(&s->bm_as, &s->bm, "pci-bm"); pci_setup_iommu(b, &ppce500_iommu_ops, s); =20 - pci_create_simple(b, 0, TYPE_PPC_E500_PCI_BRIDGE); + pci_create_simple_orphan(b, 0, TYPE_PPC_E500_PCI_BRIDGE); =20 memory_region_init(&s->container, OBJECT(h), "pci-container", PCIE500_= ALL_SIZE); memory_region_init_io(&h->conf_mem, OBJECT(h), &pci_host_conf_be_ops, = h, diff --git a/hw/pci-host/raven.c b/hw/pci-host/raven.c index b3836dc9a2..abcf9b28e1 100644 --- a/hw/pci-host/raven.c +++ b/hw/pci-host/raven.c @@ -281,7 +281,7 @@ static void raven_pcihost_realizefn(DeviceState *d, Err= or **errp) "pci-intack", 1); memory_region_add_subregion(address_space_mem, 0xbffffff0, &s->pci_int= ack); =20 - pci_create_simple(h->bus, PCI_DEVFN(0, 0), TYPE_RAVEN_PCI_DEVICE); + pci_create_simple_orphan(h->bus, PCI_DEVFN(0, 0), TYPE_RAVEN_PCI_DEVIC= E); =20 address_space_init(&s->bm_as, &s->bm, "raven-bm"); pci_setup_iommu(h->bus, &raven_iommu_ops, s); diff --git a/hw/pci-host/sabre.c b/hw/pci-host/sabre.c index cd2328ad53..d8c815d404 100644 --- a/hw/pci-host/sabre.c +++ b/hw/pci-host/sabre.c @@ -383,7 +383,7 @@ static void sabre_realize(DeviceState *dev, Error **err= p) &s->pci_ioport, 0, 0x40, TYPE_PCI_BUS); =20 - pci_create_simple(phb->bus, 0, TYPE_SABRE_PCI_DEVICE); + pci_create_simple_orphan(phb->bus, 0, TYPE_SABRE_PCI_DEVICE); =20 /* IOMMU */ memory_region_add_subregion_overlap(&s->sabre_config, 0x200, @@ -391,12 +391,12 @@ static void sabre_realize(DeviceState *dev, Error **e= rrp) pci_setup_iommu(phb->bus, &sabre_iommu_ops, s->iommu); =20 /* APB secondary busses */ - pci_dev =3D pci_new_multifunction(PCI_DEVFN(1, 0), TYPE_SIMBA_PCI_BRID= GE); + pci_dev =3D pci_new_multifunction_orphan(PCI_DEVFN(1, 0), TYPE_SIMBA_P= CI_BRIDGE); s->bridgeB =3D PCI_BRIDGE(pci_dev); pci_bridge_map_irq(s->bridgeB, "pciB", pci_simbaB_map_irq); pci_realize_and_unref(pci_dev, phb->bus, &error_fatal); =20 - pci_dev =3D pci_new_multifunction(PCI_DEVFN(1, 1), TYPE_SIMBA_PCI_BRID= GE); + pci_dev =3D pci_new_multifunction_orphan(PCI_DEVFN(1, 1), TYPE_SIMBA_P= CI_BRIDGE); s->bridgeA =3D PCI_BRIDGE(pci_dev); pci_bridge_map_irq(s->bridgeA, "pciA", pci_simbaA_map_irq); pci_realize_and_unref(pci_dev, phb->bus, &error_fatal); diff --git a/hw/pci-host/sh_pci.c b/hw/pci-host/sh_pci.c index 3ffd2cdbd7..749b9d76a1 100644 --- a/hw/pci-host/sh_pci.c +++ b/hw/pci-host/sh_pci.c @@ -142,7 +142,7 @@ static void sh_pcic_host_realize(DeviceState *dev, Erro= r **errp) sysbus_init_mmio(sbd, &s->memconfig_a7); memory_region_add_subregion(get_system_memory(), 0xfe240000, &s->isa); =20 - s->dev =3D pci_create_simple(phb->bus, PCI_DEVFN(0, 0), "sh_pci_host"); + s->dev =3D pci_create_simple_orphan(phb->bus, PCI_DEVFN(0, 0), "sh_pci= _host"); } =20 static void sh_pcic_pci_realize(PCIDevice *d, Error **errp) diff --git a/hw/pci-host/uninorth.c b/hw/pci-host/uninorth.c index 10972de694..4590687bd3 100644 --- a/hw/pci-host/uninorth.c +++ b/hw/pci-host/uninorth.c @@ -126,7 +126,7 @@ static void pci_unin_main_realize(DeviceState *dev, Err= or **errp) &s->pci_io, PCI_DEVFN(11, 0), 4, TYPE_PCI_BUS); =20 - pci_create_simple(h->bus, PCI_DEVFN(11, 0), "uni-north-pci"); + pci_create_simple_orphan(h->bus, PCI_DEVFN(11, 0), "uni-north-pci"); =20 /* * DEC 21154 bridge was unused for many years, this comment is @@ -176,7 +176,7 @@ static void pci_u3_agp_realize(DeviceState *dev, Error = **errp) &s->pci_io, PCI_DEVFN(11, 0), 4, TYPE_PCI_BUS); =20 - pci_create_simple(h->bus, PCI_DEVFN(11, 0), "u3-agp"); + pci_create_simple_orphan(h->bus, PCI_DEVFN(11, 0), "u3-agp"); } =20 static void pci_u3_agp_init(Object *obj) @@ -220,7 +220,7 @@ static void pci_unin_agp_realize(DeviceState *dev, Erro= r **errp) &s->pci_io, PCI_DEVFN(11, 0), 4, TYPE_PCI_BUS); =20 - pci_create_simple(h->bus, PCI_DEVFN(11, 0), "uni-north-agp"); + pci_create_simple_orphan(h->bus, PCI_DEVFN(11, 0), "uni-north-agp"); } =20 static void pci_unin_agp_init(Object *obj) @@ -253,7 +253,7 @@ static void pci_unin_internal_realize(DeviceState *dev,= Error **errp) &s->pci_io, PCI_DEVFN(14, 0), 4, TYPE_PCI_BUS); =20 - pci_create_simple(h->bus, PCI_DEVFN(14, 0), "uni-north-internal-pci"); + pci_create_simple_orphan(h->bus, PCI_DEVFN(14, 0), "uni-north-internal= -pci"); } =20 static void pci_unin_internal_init(Object *obj) diff --git a/hw/pci/pci.c b/hw/pci/pci.c index d14fc6478e..61b9f2a230 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -2118,7 +2118,7 @@ bool pci_init_nic_in_slot(PCIBus *rootbus, const char= *model, exit(1); } =20 - pci_dev =3D pci_new(devfn, model); + pci_dev =3D pci_new_orphan(devfn, model); qdev_set_nic_properties(&pci_dev->qdev, nd); pci_realize_and_unref(pci_dev, bus, &error_fatal); return true; @@ -2129,15 +2129,15 @@ PCIDevice *pci_vga_init(PCIBus *bus) vga_interface_created =3D true; switch (vga_interface_type) { case VGA_CIRRUS: - return pci_create_simple(bus, -1, "cirrus-vga"); + return pci_create_simple_orphan(bus, -1, "cirrus-vga"); case VGA_QXL: - return pci_create_simple(bus, -1, "qxl-vga"); + return pci_create_simple_orphan(bus, -1, "qxl-vga"); case VGA_STD: - return pci_create_simple(bus, -1, "VGA"); + return pci_create_simple_orphan(bus, -1, "VGA"); case VGA_VMWARE: - return pci_create_simple(bus, -1, "vmware-svga"); + return pci_create_simple_orphan(bus, -1, "vmware-svga"); case VGA_VIRTIO: - return pci_create_simple(bus, -1, "virtio-vga"); + return pci_create_simple_orphan(bus, -1, "virtio-vga"); case VGA_NONE: default: /* Other non-PCI types. Checking for unsupported types is alr= eady done in vl.c. */ @@ -2399,12 +2399,53 @@ static PCIDevice *pci_new_internal(int devfn, bool = multifunction, return PCI_DEVICE(dev); } =20 -PCIDevice *pci_new_multifunction(int devfn, const char *name) +static PCIDevice *pci_new_child_internal(Object *parent, const char *id, + int devfn, bool multifunction, + const char *type) +{ + DeviceState *dev; + + dev =3D qdev_new(parent, id, type); + qdev_prop_set_int32(dev, "addr", devfn); + qdev_prop_set_bit(dev, "multifunction", multifunction); + return PCI_DEVICE(dev); +} + +PCIDevice *pci_new_multifunction(Object *parent, const char *id, + int devfn, const char *type) +{ + return pci_new_child_internal(parent, id, devfn, true, type); +} + +PCIDevice *pci_new(Object *parent, const char *id, + int devfn, const char *type) +{ + return pci_new_child_internal(parent, id, devfn, false, type); +} + +PCIDevice *pci_create_simple_multifunction(Object *parent, const char *id, + PCIBus *bus, int devfn, + const char *type) +{ + PCIDevice *dev =3D pci_new_multifunction(parent, id, devfn, type); + qdev_realize(DEVICE(dev), BUS(bus), &error_fatal); + return dev; +} + +PCIDevice *pci_create_simple(Object *parent, const char *id, + PCIBus *bus, int devfn, const char *type) +{ + PCIDevice *dev =3D pci_new(parent, id, devfn, type); + qdev_realize(DEVICE(dev), BUS(bus), &error_fatal); + return dev; +} + +PCIDevice *pci_new_multifunction_orphan(int devfn, const char *name) { return pci_new_internal(devfn, true, name); } =20 -PCIDevice *pci_new(int devfn, const char *name) +PCIDevice *pci_new_orphan(int devfn, const char *name) { return pci_new_internal(devfn, false, name); } @@ -2414,17 +2455,17 @@ bool pci_realize_and_unref(PCIDevice *dev, PCIBus *= bus, Error **errp) return qdev_realize_and_unref(&dev->qdev, &bus->qbus, errp); } =20 -PCIDevice *pci_create_simple_multifunction(PCIBus *bus, int devfn, +PCIDevice *pci_create_simple_multifunction_orphan(PCIBus *bus, int devfn, const char *name) { - PCIDevice *dev =3D pci_new_multifunction(devfn, name); + PCIDevice *dev =3D pci_new_multifunction_orphan(devfn, name); pci_realize_and_unref(dev, bus, &error_fatal); return dev; } =20 -PCIDevice *pci_create_simple(PCIBus *bus, int devfn, const char *name) +PCIDevice *pci_create_simple_orphan(PCIBus *bus, int devfn, const char *na= me) { - PCIDevice *dev =3D pci_new(devfn, name); + PCIDevice *dev =3D pci_new_orphan(devfn, name); pci_realize_and_unref(dev, bus, &error_fatal); return dev; } diff --git a/hw/pci/pcie_sriov.c b/hw/pci/pcie_sriov.c index c41ac95bee..a69a41cdde 100644 --- a/hw/pci/pcie_sriov.c +++ b/hw/pci/pcie_sriov.c @@ -171,7 +171,7 @@ bool pcie_sriov_pf_init(PCIDevice *dev, uint16_t offset, dev->exp.sriov_pf.vf =3D g_new(PCIDevice *, total_vfs); =20 for (uint16_t i =3D 0; i < total_vfs; i++) { - PCIDevice *vf =3D pci_new(devfn, vfname); + PCIDevice *vf =3D pci_new_orphan(devfn, vfname); vf->exp.sriov_vf.pf =3D dev; vf->exp.sriov_vf.vf_number =3D i; =20 diff --git a/hw/ppc/amigaone.c b/hw/ppc/amigaone.c index 528c2c656a..c6b331ff16 100644 --- a/hw/ppc/amigaone.c +++ b/hw/ppc/amigaone.c @@ -355,7 +355,7 @@ static void amigaone_init(MachineState *machine) pci_bus =3D PCI_BUS(qdev_get_child_bus(dev, "pci.0")); =20 /* VIA VT82c686B South Bridge (multifunction PCI device) */ - via =3D OBJECT(pci_create_simple_multifunction(pci_bus, PCI_DEVFN(7, 0= ), + via =3D OBJECT(pci_create_simple_multifunction_orphan(pci_bus, PCI_DEV= FN(7, 0), TYPE_VT82C686B_ISA)); object_property_add_alias(OBJECT(machine), "rtc-time", object_resolve_path_component(via, "rtc"), diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c index 31dda69127..0df953b9e1 100644 --- a/hw/ppc/mac_newworld.c +++ b/hw/ppc/mac_newworld.c @@ -348,7 +348,7 @@ static void ppc_core99_init(MachineState *machine) pci_bus =3D PCI_HOST_BRIDGE(uninorth_pci_dev)->bus; =20 /* MacIO */ - macio =3D OBJECT(pci_new(-1, TYPE_NEWWORLD_MACIO)); + macio =3D OBJECT(pci_new_orphan(-1, TYPE_NEWWORLD_MACIO)); dev =3D DEVICE(macio); qdev_prop_set_uint64(dev, "frequency", tbfreq); qdev_prop_set_bit(dev, "has-pmu", has_pmu); @@ -416,7 +416,7 @@ static void ppc_core99_init(MachineState *machine) } =20 if (machine->usb) { - pci_create_simple(pci_bus, -1, "pci-ohci"); + pci_create_simple_orphan(pci_bus, -1, "pci-ohci"); =20 /* U3 needs to use USB for input because Linux doesn't support via= -cuda on PPC64 */ diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c index aa366ca190..e6c5830c38 100644 --- a/hw/ppc/mac_oldworld.c +++ b/hw/ppc/mac_oldworld.c @@ -229,7 +229,7 @@ static void ppc_heathrow_init(MachineState *machine) pci_bus =3D PCI_HOST_BRIDGE(grackle_dev)->bus; =20 /* MacIO */ - macio =3D OBJECT(pci_new(PCI_DEVFN(16, 0), TYPE_OLDWORLD_MACIO)); + macio =3D OBJECT(pci_new_orphan(PCI_DEVFN(16, 0), TYPE_OLDWORLD_MACIO)= ); qdev_prop_set_uint64(DEVICE(macio), "frequency", tbfreq); =20 dev =3D DEVICE(object_resolve_path_component(macio, "escc")); @@ -285,7 +285,7 @@ static void ppc_heathrow_init(MachineState *machine) qdev_realize_and_unref(dev, adb_bus, &error_fatal); =20 if (machine_usb(machine)) { - pci_create_simple(pci_bus, -1, "pci-ohci"); + pci_create_simple_orphan(pci_bus, -1, "pci-ohci"); } =20 if (!graphic_width) { diff --git a/hw/ppc/pegasos.c b/hw/ppc/pegasos.c index 3dc02423ee..0030068ab3 100644 --- a/hw/ppc/pegasos.c +++ b/hw/ppc/pegasos.c @@ -241,7 +241,7 @@ static void pegasos_init(MachineState *machine) =20 /* VIA VT8231 South Bridge (multifunction PCI device) */ devfn =3D PCI_DEVFN(pm->type =3D=3D PEGASOS1 ? 7 : 12, 0); - pm->sb =3D DEVICE(pci_new_multifunction(devfn, TYPE_VT8231_ISA)); + pm->sb =3D DEVICE(pci_new_multifunction_orphan(devfn, TYPE_VT8231_ISA)= ); via =3D OBJECT(pm->sb); =20 /* Set properties on individual devices before realizing the south bri= dge */ diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c index f53ff9c582..a716d5da6a 100644 --- a/hw/ppc/prep.c +++ b/hw/ppc/prep.c @@ -300,7 +300,7 @@ static void ibm_40p_init(MachineState *machine) } =20 /* PCI -> ISA bridge */ - i82378_dev =3D DEVICE(pci_new(PCI_DEVFN(11, 0), "i82378")); + i82378_dev =3D DEVICE(pci_new_orphan(PCI_DEVFN(11, 0), "i82378")); qdev_realize_and_unref(i82378_dev, BUS(pci_bus), &error_fatal); qdev_connect_gpio_out(i82378_dev, 0, qdev_get_gpio_in(DEVICE(cpu), PPC6xx_INPUT_INT)); @@ -350,7 +350,7 @@ static void ibm_40p_init(MachineState *machine) qdev_prop_set_uint32(dev, "config", 12); isa_realize_and_unref(isa_dev, isa_bus, &error_fatal); =20 - dev =3D DEVICE(pci_create_simple(pci_bus, PCI_DEVFN(1, 0), "lsi53c= 810")); + dev =3D DEVICE(pci_create_simple_orphan(pci_bus, PCI_DEVFN(1, 0), = "lsi53c810")); lsi53c8xx_handle_legacy_cmdline(dev); qdev_connect_gpio_out(dev, 0, qdev_get_gpio_in(i82378_dev, 13)); =20 diff --git a/hw/ppc/sam460ex.c b/hw/ppc/sam460ex.c index 88c4e66b2d..0c4c6f6256 100644 --- a/hw/ppc/sam460ex.c +++ b/hw/ppc/sam460ex.c @@ -422,14 +422,14 @@ static void sam460ex_init(MachineState *machine) pci_bus =3D PCI_BUS(qdev_get_child_bus(dev, "pci.0")); =20 /* PCI devices */ - pci_create_simple(pci_bus, PCI_DEVFN(6, 0), "sm501"); + pci_create_simple_orphan(pci_bus, PCI_DEVFN(6, 0), "sm501"); /* * SoC has a single SATA port but we don't emulate that * However, firmware and usual clients have driver for SiI311x * PCI SATA card so add one for convenience by default */ if (defaults_enabled()) { - PCIIDEState *s =3D PCI_IDE(pci_create_simple(pci_bus, -1, "sii3112= ")); + PCIIDEState *s =3D PCI_IDE(pci_create_simple_orphan(pci_bus, -1, "= sii3112")); DriveInfo *di; =20 di =3D drive_get_by_index(IF_IDE, 0); diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 30bf0cd0c0..4ead6ba664 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -3075,7 +3075,7 @@ static void spapr_machine_init(MachineState *machine) } =20 if (machine->usb) { - pci_create_simple(phb->bus, -1, "nec-usb-xhci"); + pci_create_simple_orphan(phb->bus, -1, "nec-usb-xhci"); =20 if (has_vga) { USBBus *usb_bus; diff --git a/hw/riscv/boston-aia.c b/hw/riscv/boston-aia.c index 0fbb44c5df..029cf23696 100644 --- a/hw/riscv/boston-aia.c +++ b/hw/riscv/boston-aia.c @@ -418,7 +418,7 @@ static void boston_mach_init(MachineState *machine) qemu_chr_fe_set_handlers(&s->lcd_display, NULL, NULL, boston_lcd_event, NULL, s, NULL, true); =20 - pdev =3D pci_create_simple_multifunction(&PCI_BRIDGE(&pcie2->root)->se= c_bus, + pdev =3D pci_create_simple_multifunction_orphan(&PCI_BRIDGE(&pcie2->ro= ot)->sec_bus, PCI_DEVFN(0, 0), TYPE_ICH9_AHCI= ); ich9 =3D ICH9_AHCI(pdev); g_assert(ARRAY_SIZE(hd) =3D=3D ich9->ahci.ports); diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c index bd73d26e2c..5de873126c 100644 --- a/hw/sparc64/sun4u.c +++ b/hw/sparc64/sun4u.c @@ -599,7 +599,7 @@ static void sun4uv_init(MemoryRegion *address_space_mem, pci_bus_set_slot_reserved_mask(pci_busA, 0xfffffff1); pci_bus_set_slot_reserved_mask(pci_busB, 0xfffffff0); =20 - ebus =3D pci_new_multifunction(PCI_DEVFN(1, 0), TYPE_EBUS); + ebus =3D pci_new_multifunction_orphan(PCI_DEVFN(1, 0), TYPE_EBUS); qdev_prop_set_uint64(DEVICE(ebus), "console-serial-base", hwdef->console_serial_base); pci_realize_and_unref(ebus, pci_busA, &error_fatal); @@ -618,7 +618,7 @@ static void sun4uv_init(MemoryRegion *address_space_mem, =20 switch (vga_interface_type) { case VGA_STD: - pci_create_simple(pci_busA, PCI_DEVFN(2, 0), "VGA"); + pci_create_simple_orphan(pci_busA, PCI_DEVFN(2, 0), "VGA"); vga_interface_created =3D true; break; case VGA_NONE: @@ -632,7 +632,7 @@ static void sun4uv_init(MemoryRegion *address_space_mem, =20 nd =3D qemu_find_nic_info(mc->default_nic, true, NULL); if (nd) { - pci_dev =3D pci_new_multifunction(PCI_DEVFN(1, 1), mc->default_nic= ); + pci_dev =3D pci_new_multifunction_orphan(PCI_DEVFN(1, 1), mc->defa= ult_nic); dev =3D &pci_dev->qdev; qdev_set_nic_properties(dev, nd); pci_realize_and_unref(pci_dev, pci_busA, &error_fatal); @@ -648,7 +648,7 @@ static void sun4uv_init(MemoryRegion *address_space_mem, qemu_macaddr_default_if_unset(&macaddr); } =20 - pci_dev =3D pci_new(PCI_DEVFN(3, 0), "cmd646-ide"); + pci_dev =3D pci_new_orphan(PCI_DEVFN(3, 0), "cmd646-ide"); qdev_prop_set_uint32(&pci_dev->qdev, "secondary", 1); pci_realize_and_unref(pci_dev, pci_busA, &error_fatal); pci_ide_create_devs(pci_dev); diff --git a/hw/vfio/igd.c b/hw/vfio/igd.c index e091f21b6a..bea0d57a11 100644 --- a/hw/vfio/igd.c +++ b/hw/vfio/igd.c @@ -334,7 +334,7 @@ static int vfio_pci_igd_lpc_init(VFIOPCIDevice *vdev, lpc_bridge =3D pci_find_device(pci_device_root_bus(pdev), 0, PCI_DEVFN(0x1f, 0)); if (!lpc_bridge) { - lpc_bridge =3D pci_create_simple(pci_device_root_bus(pdev), + lpc_bridge =3D pci_create_simple_orphan(pci_device_root_bus(pdev), PCI_DEVFN(0x1f, 0), "vfio-pci-igd-lpc-bri= dge"); } =20 diff --git a/hw/xen/xen_pt_graphics.c b/hw/xen/xen_pt_graphics.c index 7df9344500..4457209e83 100644 --- a/hw/xen/xen_pt_graphics.c +++ b/hw/xen/xen_pt_graphics.c @@ -399,7 +399,7 @@ void xen_igd_passthrough_isa_bridge_create(XenPCIPassth= roughState *s, } =20 /* Currently IGD drivers always need to access PCH by 1f.0. */ - bridge_dev =3D pci_create_simple(bus, PCI_DEVFN(0x1f, 0), + bridge_dev =3D pci_create_simple_orphan(bus, PCI_DEVFN(0x1f, 0), "igd-passthrough-isa-bridge"); =20 /* diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h index f2448e941a..cbbb6a3756 100644 --- a/include/hw/pci/pci.h +++ b/include/hw/pci/pci.h @@ -1088,13 +1088,23 @@ pci_set_quad_by_mask(uint8_t *config, uint64_t mask= , uint64_t reg) pci_set_quad(config, (~mask & val) | (mask & rval)); } =20 -PCIDevice *pci_new_multifunction(int devfn, const char *name); -PCIDevice *pci_new(int devfn, const char *name); +PCIDevice *pci_new_multifunction(Object *parent, const char *id, + int devfn, const char *type); +PCIDevice *pci_new(Object *parent, const char *id, + int devfn, const char *type); +PCIDevice *pci_create_simple_multifunction(Object *parent, const char *id, + PCIBus *bus, int devfn, + const char *type); +PCIDevice *pci_create_simple(Object *parent, const char *id, + PCIBus *bus, int devfn, const char *type); + +PCIDevice *pci_new_multifunction_orphan(int devfn, const char *name); +PCIDevice *pci_new_orphan(int devfn, const char *name); bool pci_realize_and_unref(PCIDevice *dev, PCIBus *bus, Error **errp); =20 -PCIDevice *pci_create_simple_multifunction(PCIBus *bus, int devfn, +PCIDevice *pci_create_simple_multifunction_orphan(PCIBus *bus, int devfn, const char *name); -PCIDevice *pci_create_simple(PCIBus *bus, int devfn, const char *name); +PCIDevice *pci_create_simple_orphan(PCIBus *bus, int devfn, const char *na= me); =20 void lsi53c8xx_handle_legacy_cmdline(DeviceState *lsi_dev); =20 diff --git a/scripts/coccinelle/qom-parent/pci-new-orphan.cocci b/scripts/c= occinelle/qom-parent/pci-new-orphan.cocci new file mode 100644 index 0000000000..e6cfd0d6c1 --- /dev/null +++ b/scripts/coccinelle/qom-parent/pci-new-orphan.cocci @@ -0,0 +1,28 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +// +// Rename pci_new*/pci_create_simple*() to *_orphan() so that the +// short names can be reintroduced with a mandatory (parent, id, ...) +// signature. +// +// spatch --sp-file scripts/coccinelle/qom-parent/pci-new-orphan.cocci \ +// --in-place --include-headers --dir . + +@@ +@@ +- pci_new_multifunction ++ pci_new_multifunction_orphan + +@@ +@@ +- pci_new ++ pci_new_orphan + +@@ +@@ +- pci_create_simple_multifunction ++ pci_create_simple_multifunction_orphan + +@@ +@@ +- pci_create_simple ++ pci_create_simple_orphan --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784410782; cv=none; d=zohomail.com; s=zohoarc; b=alsk4k8nAZK2G1GB+ZKHCdqEfpU2rjovpIOs6vlQOFIep4f+NMGqvduxnnX15HJnuExbFrvdmdlw7jR07divEIhwMyVEGUDKP2uRR6h2usPS1k6V34coJWOLE/JVBmrixHFBqkPmUU/A6Fu//Bv252q9X5m8P4CJsjb+q9iCT0Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784410782; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=NX8h0Ii0dqKDkHZLFo4SWosF5/zhX7cRqNZjQ4zBGsI=; b=PN5//xN6lmJdsHigwXoVlcu2xvB1xlk1tegWjkPJqxFaAi0H6zoWyixot+uAyEbuZTZ8sdLuulSoiTgodCXHUNl7PRAA+3R/jAmmYuHO85VymKY/q7+mzHMUb3tTGUNXQnAYARzR19Gr05aA+AS5FquZHYWsJLoo6pCV64nIBI4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784410782006599.442748953202; Sat, 18 Jul 2026 14:39:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCkN-0001iS-Rd; Sat, 18 Jul 2026 17:38:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCkI-0001fB-NP; Sat, 18 Jul 2026 17:38:55 -0400 Received: from pdx-out-013.esa.us-west-2.outbound.mail-perimeter.amazon.com ([34.218.115.239]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCkF-000236-Iw; Sat, 18 Jul 2026 17:38:54 -0400 Received: from ip-10-5-9-48.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.9.48]) by internal-pdx-out-013.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:38:46 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.53:13373] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.58.199:2525] with esmtp (Farcaster) id 6597940d-9f96-4d38-915b-4518bcffa94d; Sat, 18 Jul 2026 21:38:45 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC001.ant.amazon.com (10.250.64.174) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:38:45 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:38:36 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784410731; x=1815946731; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=NX8h0Ii0dqKDkHZLFo4SWosF5/zhX7cRqNZjQ4zBGsI=; b=QLarVAS/69UzCVfai6A58ZEfyBQ9UIHS4pvAg2HRv9XuROrPiWTs1/y6 GsmmOJAoosCmvEvRGSRT/m8SFG2hsIhdvbzhyTZ+FMy4mp/PEu9aW3hqe yVanso9UfkafG0gEZbdscgM8Fgm/fss3m0VJUQXUsVhqbf5VbR2+L0dpS jYZ9z2SRArEn4aITQgPgEmvfT82jCTYeA+k/XHmtSo6kh4EOt3CfkZMHQ TuO+0t+ni5tkIddLrD8DW4DHhNJIFkOi1ECW+PwNH8N8wn/5jaWZChIqS tXMLeh1HF0/SLTx7yFQMxcEakaHtt1tqgYn1q6SWkv8b+Nx9sQB2rGrZ+ g==; X-CSE-ConnectionGUID: suM5oRkeROS5vpvJ4PTtQA== X-CSE-MsgGUID: dt9W30uHQW6O+s9doWltyA== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23718839" X-Farcaster-Flow-ID: 6597940d-9f96-4d38-915b-4518bcffa94d From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 006/137] isa: Make isa_new()/isa_try_new()/isa_create_simple() take a QOM parent Date: Sat, 18 Jul 2026 21:34:41 +0000 Message-ID: <20260718213652.37673-7-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D046UWA001.ant.amazon.com (10.13.139.112) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=34.218.115.239; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-013.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.01, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784410783110158500 Content-Type: text/plain; charset="utf-8" Same rename-and-reintroduce treatment as the qdev, sysbus and PCI layers: mechanically rename the three ISA creation helpers to *_orphan() and reintroduce the short names with a leading (parent, id, ...) pair. The parented isa_create_simple() calls qdev_realize() (not isa_realize_and_unref()) since the child<> property already holds the sole reference. The mechanical rename part is generated by spatch --sp-file scripts/coccinelle/qom-parent/isa-new-orphan.cocci \ --in-place --include-headers --dir . or equivalently git ls-files '*.[ch]' '*.[ch].inc' '*.rst' '*.py' | \ grep -v '^subprojects/' | \ xargs sed -i \ 's/\bisa_create_simple\b/&_orphan/g; s/\bisa_try_new\b/&_orphan/g; s/\bisa_new\b/&_orphan/g' AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/alpha/dp264.c | 2 +- hw/char/parallel-isa.c | 2 +- hw/char/serial-isa.c | 2 +- hw/dma/i8257.c | 4 +-- hw/i386/isapc.c | 2 +- hw/i386/pc.c | 12 ++++---- hw/ide/isa.c | 2 +- hw/intc/i8259_common.c | 2 +- hw/isa/i82378.c | 4 +-- hw/isa/isa-bus.c | 30 +++++++++++++++---- hw/isa/isa-superio.c | 10 +++---- hw/mips/jazz.c | 2 +- hw/mips/malta.c | 2 +- hw/ppc/pnv.c | 2 +- hw/ppc/prep.c | 12 ++++---- hw/rtc/mc146818rtc.c | 2 +- hw/sparc64/sun4u.c | 4 +-- include/hw/i386/vmport.h | 2 +- include/hw/isa/isa.h | 10 +++++-- include/hw/net/ne2000-isa.h | 2 +- include/hw/timer/i8254.h | 4 +-- .../qom-parent/isa-new-orphan.cocci | 23 ++++++++++++++ 22 files changed, 91 insertions(+), 46 deletions(-) create mode 100644 scripts/coccinelle/qom-parent/isa-new-orphan.cocci diff --git a/hw/alpha/dp264.c b/hw/alpha/dp264.c index 6999168df6..b07dcebaa0 100644 --- a/hw/alpha/dp264.c +++ b/hw/alpha/dp264.c @@ -126,7 +126,7 @@ static void clipper_init(MachineState *machine) pci_init_nic_devices(pci_bus, mc->default_nic); =20 /* Super I/O */ - isa_create_simple(isa_bus, TYPE_SMC37C669_SUPERIO); + isa_create_simple_orphan(isa_bus, TYPE_SMC37C669_SUPERIO); =20 /* IDE disk setup. */ pci_dev =3D pci_create_simple_orphan(pci_bus, -1, "cmd646-ide"); diff --git a/hw/char/parallel-isa.c b/hw/char/parallel-isa.c index 92e94138f4..19583c0f23 100644 --- a/hw/char/parallel-isa.c +++ b/hw/char/parallel-isa.c @@ -22,7 +22,7 @@ static void parallel_init(ISABus *bus, int index, Chardev= *chr) DeviceState *dev; ISADevice *isadev; =20 - isadev =3D isa_new(TYPE_ISA_PARALLEL); + isadev =3D isa_new_orphan(TYPE_ISA_PARALLEL); dev =3D DEVICE(isadev); qdev_prop_set_uint32(dev, "index", index); qdev_prop_set_chr(dev, "chardev", chr); diff --git a/hw/char/serial-isa.c b/hw/char/serial-isa.c index eaa4e843c0..4dbdc0df91 100644 --- a/hw/char/serial-isa.c +++ b/hw/char/serial-isa.c @@ -165,7 +165,7 @@ static void serial_isa_init(ISABus *bus, int index, Cha= rdev *chr) DeviceState *dev; ISADevice *isadev; =20 - isadev =3D isa_new(TYPE_ISA_SERIAL); + isadev =3D isa_new_orphan(TYPE_ISA_SERIAL); dev =3D DEVICE(isadev); qdev_prop_set_uint32(dev, "index", index); qdev_prop_set_chr(dev, "chardev", chr); diff --git a/hw/dma/i8257.c b/hw/dma/i8257.c index 5771549889..d1ab17b80d 100644 --- a/hw/dma/i8257.c +++ b/hw/dma/i8257.c @@ -651,7 +651,7 @@ void i8257_dma_init(Object *parent, ISABus *bus, bool h= igh_page_enable) ISADevice *isa1, *isa2; DeviceState *d; =20 - isa1 =3D isa_new(TYPE_I8257); + isa1 =3D isa_new_orphan(TYPE_I8257); object_property_add_child(parent, "dma[*]", OBJECT(isa1)); d =3D DEVICE(isa1); qdev_prop_set_int32(d, "base", 0x00); @@ -660,7 +660,7 @@ void i8257_dma_init(Object *parent, ISABus *bus, bool h= igh_page_enable) qdev_prop_set_int32(d, "dshift", 0); isa_realize_and_unref(isa1, bus, &error_fatal); =20 - isa2 =3D isa_new(TYPE_I8257); + isa2 =3D isa_new_orphan(TYPE_I8257); object_property_add_child(parent, "dma[*]", OBJECT(isa2)); d =3D DEVICE(isa2); qdev_prop_set_int32(d, "base", 0xc0); diff --git a/hw/i386/isapc.c b/hw/i386/isapc.c index 1ba9ae22cc..03d68f748f 100644 --- a/hw/i386/isapc.c +++ b/hw/i386/isapc.c @@ -112,7 +112,7 @@ static void pc_init_isa(MachineState *machine) &error_abort); isa_bus_register_input_irqs(isa_bus, x86ms->gsi); =20 - x86ms->rtc =3D isa_new(TYPE_MC146818_RTC); + x86ms->rtc =3D isa_new_orphan(TYPE_MC146818_RTC); qdev_prop_set_int32(DEVICE(x86ms->rtc), "base_year", 2000); isa_realize_and_unref(x86ms->rtc, isa_bus, &error_fatal); irq =3D object_property_get_uint(OBJECT(x86ms->rtc), "irq", diff --git a/hw/i386/pc.c b/hw/i386/pc.c index 11a9d5df97..905b4960a3 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -998,7 +998,7 @@ static void pc_superio_init(ISABus *isa_bus, bool creat= e_fdctrl, } if (create_fdctrl) { #ifdef CONFIG_FDC_ISA - ISADevice *fdc =3D isa_new(TYPE_ISA_FDC); + ISADevice *fdc =3D isa_new_orphan(TYPE_ISA_FDC); if (fdc) { isa_realize_and_unref(fdc, isa_bus, &error_fatal); isa_fdc_init_drives(fdc, fd); @@ -1014,10 +1014,10 @@ static void pc_superio_init(ISABus *isa_bus, bool c= reate_fdctrl, return; } =20 - i8042 =3D isa_create_simple(isa_bus, TYPE_I8042); + i8042 =3D isa_create_simple_orphan(isa_bus, TYPE_I8042); if (!no_vmport) { - isa_create_simple(isa_bus, TYPE_VMPORT); - vmmouse =3D isa_try_new("vmmouse"); + isa_create_simple_orphan(isa_bus, TYPE_VMPORT); + vmmouse =3D isa_try_new_orphan("vmmouse"); } else { vmmouse =3D NULL; } @@ -1026,7 +1026,7 @@ static void pc_superio_init(ISABus *isa_bus, bool cre= ate_fdctrl, &error_abort); isa_realize_and_unref(vmmouse, isa_bus, &error_fatal); } - port92 =3D isa_create_simple(isa_bus, TYPE_PORT92); + port92 =3D isa_create_simple_orphan(isa_bus, TYPE_PORT92); =20 a20_line =3D qemu_allocate_irqs(handle_a20_line_change, first_cpu, 2); qdev_connect_gpio_out_named(DEVICE(i8042), @@ -1639,7 +1639,7 @@ static void pc_machine_initfn(Object *obj) pcms->default_bus_bypass_iommu =3D false; =20 pc_system_flash_create(pcms); - pcms->pcspk =3D isa_new(TYPE_PC_SPEAKER); + pcms->pcspk =3D isa_new_orphan(TYPE_PC_SPEAKER); object_property_add_alias(OBJECT(pcms), "pcspk-audiodev", OBJECT(pcms->pcspk), "audiodev"); if (pcmc->pci_enabled) { diff --git a/hw/ide/isa.c b/hw/ide/isa.c index c97b7a1ff4..c9c997344b 100644 --- a/hw/ide/isa.c +++ b/hw/ide/isa.c @@ -84,7 +84,7 @@ ISADevice *isa_ide_init(ISABus *bus, int iobase, int ioba= se2, int irqnum, ISADevice *isadev; ISAIDEState *s; =20 - isadev =3D isa_new(TYPE_ISA_IDE); + isadev =3D isa_new_orphan(TYPE_ISA_IDE); dev =3D DEVICE(isadev); qdev_prop_set_uint32(dev, "iobase", iobase); qdev_prop_set_uint32(dev, "iobase2", iobase2); diff --git a/hw/intc/i8259_common.c b/hw/intc/i8259_common.c index 8ceb5841b9..45eb0e14a8 100644 --- a/hw/intc/i8259_common.c +++ b/hw/intc/i8259_common.c @@ -94,7 +94,7 @@ ISADevice *i8259_init_chip(const char *name, ISABus *bus,= bool master) DeviceState *dev; ISADevice *isadev; =20 - isadev =3D isa_new(name); + isadev =3D isa_new_orphan(name); dev =3D DEVICE(isadev); qdev_prop_set_uint32(dev, "iobase", master ? 0x20 : 0xa0); qdev_prop_set_uint32(dev, "elcr_addr", master ? 0x4d0 : 0x4d1); diff --git a/hw/isa/i82378.c b/hw/isa/i82378.c index dfa8a3775c..63d4050db2 100644 --- a/hw/isa/i82378.c +++ b/hw/isa/i82378.c @@ -103,14 +103,14 @@ static void i82378_realize(PCIDevice *pci, Error **er= rp) pit =3D i8254_pit_init(isabus, 0x40, 0, NULL); =20 /* speaker */ - pcspk =3D isa_new(TYPE_PC_SPEAKER); + pcspk =3D isa_new_orphan(TYPE_PC_SPEAKER); object_property_set_link(OBJECT(pcspk), "pit", OBJECT(pit), &error_fat= al); if (!isa_realize_and_unref(pcspk, isabus, errp)) { return; } =20 /* 2 82C37 (dma) */ - isa_create_simple(isabus, "i82374"); + isa_create_simple_orphan(isabus, "i82374"); } =20 static void i82378_init(Object *obj) diff --git a/hw/isa/isa-bus.c b/hw/isa/isa-bus.c index 5e6340f635..c15cf53469 100644 --- a/hw/isa/isa-bus.c +++ b/hw/isa/isa-bus.c @@ -153,21 +153,39 @@ int isa_register_portio_list(ISADevice *dev, return 0; } =20 -ISADevice *isa_new(const char *name) +ISADevice *isa_new(Object *parent, const char *id, const char *type) +{ + return ISA_DEVICE(qdev_new(parent, id, type)); +} + +ISADevice *isa_try_new(Object *parent, const char *id, const char *type) +{ + return ISA_DEVICE(qdev_try_new(parent, id, type)); +} + +ISADevice *isa_create_simple(Object *parent, const char *id, + ISABus *bus, const char *type) +{ + ISADevice *dev =3D isa_new(parent, id, type); + qdev_realize(DEVICE(dev), BUS(bus), &error_fatal); + return dev; +} + +ISADevice *isa_new_orphan(const char *name) { return ISA_DEVICE(qdev_new_orphan(name)); } =20 -ISADevice *isa_try_new(const char *name) +ISADevice *isa_try_new_orphan(const char *name) { return ISA_DEVICE(qdev_try_new_orphan(name)); } =20 -ISADevice *isa_create_simple(ISABus *bus, const char *name) +ISADevice *isa_create_simple_orphan(ISABus *bus, const char *name) { ISADevice *dev; =20 - dev =3D isa_new(name); + dev =3D isa_new_orphan(name); isa_realize_and_unref(dev, bus, &error_fatal); return dev; } @@ -187,12 +205,12 @@ ISADevice *isa_vga_init(ISABus *bus) vga_interface_created =3D true; switch (vga_interface_type) { case VGA_CIRRUS: - return isa_create_simple(bus, "isa-cirrus-vga"); + return isa_create_simple_orphan(bus, "isa-cirrus-vga"); case VGA_QXL: error_report("%s: qxl: no PCI bus", __func__); return NULL; case VGA_STD: - return isa_create_simple(bus, "isa-vga"); + return isa_create_simple_orphan(bus, "isa-vga"); case VGA_VMWARE: error_report("%s: vmware_vga: no PCI bus", __func__); return NULL; diff --git a/hw/isa/isa-superio.c b/hw/isa/isa-superio.c index dc6ae3cb10..2d65255f34 100644 --- a/hw/isa/isa-superio.c +++ b/hw/isa/isa-superio.c @@ -54,7 +54,7 @@ static void isa_superio_realize(DeviceState *dev, Error *= *errp) } else { name =3D g_strdup_printf("parallel%d", i); } - isa =3D isa_new(TYPE_ISA_PARALLEL); + isa =3D isa_new_orphan(TYPE_ISA_PARALLEL); d =3D DEVICE(isa); qdev_prop_set_uint32(d, "index", i); if (k->parallel.get_iobase) { @@ -93,7 +93,7 @@ static void isa_superio_realize(DeviceState *dev, Error *= *errp) } else { name =3D g_strdup_printf("serial%d", i); } - isa =3D isa_new(TYPE_ISA_SERIAL); + isa =3D isa_new_orphan(TYPE_ISA_SERIAL); d =3D DEVICE(isa); qdev_prop_set_uint32(d, "index", i); if (k->serial.get_iobase) { @@ -120,7 +120,7 @@ static void isa_superio_realize(DeviceState *dev, Error= **errp) assert(k->floppy.count <=3D 1); if (k->floppy.count && (!k->floppy.is_enabled || k->floppy.is_enabled(sio, 0))) { - isa =3D isa_new(TYPE_ISA_FDC); + isa =3D isa_new_orphan(TYPE_ISA_FDC); d =3D DEVICE(isa); if (k->floppy.get_iobase) { qdev_prop_set_uint32(d, "iobase", k->floppy.get_iobase(sio, 0)= ); @@ -144,14 +144,14 @@ static void isa_superio_realize(DeviceState *dev, Err= or **errp) } =20 /* Keyboard, mouse */ - isa =3D isa_new(TYPE_I8042); + isa =3D isa_new_orphan(TYPE_I8042); object_property_add_child(OBJECT(sio), TYPE_I8042, OBJECT(isa)); isa_realize_and_unref(isa, bus, &error_fatal); sio->kbc =3D isa; =20 /* IDE */ if (k->ide.count && (!k->ide.is_enabled || k->ide.is_enabled(sio, 0)))= { - isa =3D isa_new("isa-ide"); + isa =3D isa_new_orphan("isa-ide"); d =3D DEVICE(isa); if (k->ide.get_iobase) { qdev_prop_set_uint32(d, "iobase", k->ide.get_iobase(sio, 0)); diff --git a/hw/mips/jazz.c b/hw/mips/jazz.c index a902e400cf..849c97eb10 100644 --- a/hw/mips/jazz.c +++ b/hw/mips/jazz.c @@ -289,7 +289,7 @@ static void mips_jazz_init(MachineState *machine, isa_bus_register_input_irqs(isa_bus, i8259); i8257_dma_init(OBJECT(rc4030), isa_bus, 0); pit =3D i8254_pit_init(isa_bus, 0x40, 0, NULL); - pcspk =3D isa_new(TYPE_PC_SPEAKER); + pcspk =3D isa_new_orphan(TYPE_PC_SPEAKER); object_property_set_link(OBJECT(pcspk), "pit", OBJECT(pit), &error_fat= al); isa_realize_and_unref(pcspk, isa_bus, &error_fatal); =20 diff --git a/hw/mips/malta.c b/hw/mips/malta.c index 38edbbadd6..da6dd15a59 100644 --- a/hw/mips/malta.c +++ b/hw/mips/malta.c @@ -1253,7 +1253,7 @@ void mips_malta_init(MachineState *machine) g_free(smbus_eeprom_buf); =20 /* Super I/O: SMS FDC37M817 */ - isa_create_simple(isa_bus, TYPE_FDC37M81X_SUPERIO); + isa_create_simple_orphan(isa_bus, TYPE_FDC37M81X_SUPERIO); =20 /* Network card */ network_init(pci_bus); diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index b85b6dd46c..8346613a68 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -1010,7 +1010,7 @@ static bool pnv_match_cpu(const char *default_type, c= onst char *cpu_type) =20 static void pnv_ipmi_bt_init(ISABus *bus, IPMIBmc *bmc, uint32_t irq) { - ISADevice *dev =3D isa_new("isa-ipmi-bt"); + ISADevice *dev =3D isa_new_orphan("isa-ipmi-bt"); =20 object_property_set_link(OBJECT(dev), "bmc", OBJECT(bmc), &error_fatal= ); object_property_set_int(OBJECT(dev), "irq", irq, &error_fatal); diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c index a716d5da6a..32a28bc12a 100644 --- a/hw/ppc/prep.c +++ b/hw/ppc/prep.c @@ -309,20 +309,20 @@ static void ibm_40p_init(MachineState *machine) isa_bus =3D ISA_BUS(qdev_get_child_bus(i82378_dev, "isa.0")); =20 /* system control ports */ - isa_dev =3D isa_new("prep-systemio"); + isa_dev =3D isa_new_orphan("prep-systemio"); dev =3D DEVICE(isa_dev); qdev_prop_set_uint32(dev, "ibm-planar-id", 0xfc); qdev_prop_set_uint32(dev, "equipment", 0xc0); isa_realize_and_unref(isa_dev, isa_bus, &error_fatal); =20 /* Memory controller */ - isa_dev =3D isa_new("rs6000-mc"); + isa_dev =3D isa_new_orphan("rs6000-mc"); dev =3D DEVICE(isa_dev); qdev_prop_set_uint32(dev, "ram-size", machine->ram_size); isa_realize_and_unref(isa_dev, isa_bus, &error_fatal); =20 /* RTC */ - isa_dev =3D isa_new(TYPE_MC146818_RTC); + isa_dev =3D isa_new_orphan(TYPE_MC146818_RTC); dev =3D DEVICE(isa_dev); qdev_prop_set_int32(dev, "base_year", 1900); isa_realize_and_unref(isa_dev, isa_bus, &error_fatal); @@ -334,9 +334,9 @@ static void ibm_40p_init(MachineState *machine) =20 /* add some more devices */ if (defaults_enabled()) { - m48t59 =3D NVRAM(isa_create_simple(isa_bus, "isa-m48t59")); + m48t59 =3D NVRAM(isa_create_simple_orphan(isa_bus, "isa-m48t59")); =20 - isa_dev =3D isa_new("cs4231a"); + isa_dev =3D isa_new_orphan("cs4231a"); dev =3D DEVICE(isa_dev); qdev_prop_set_uint32(dev, "iobase", 0x830); qdev_prop_set_uint32(dev, "irq", 10); @@ -345,7 +345,7 @@ static void ibm_40p_init(MachineState *machine) } isa_realize_and_unref(isa_dev, isa_bus, &error_fatal); =20 - isa_dev =3D isa_new("pc87312"); + isa_dev =3D isa_new_orphan("pc87312"); dev =3D DEVICE(isa_dev); qdev_prop_set_uint32(dev, "config", 12); isa_realize_and_unref(isa_dev, isa_bus, &error_fatal); diff --git a/hw/rtc/mc146818rtc.c b/hw/rtc/mc146818rtc.c index ba396435d1..b9e5ec6ff6 100644 --- a/hw/rtc/mc146818rtc.c +++ b/hw/rtc/mc146818rtc.c @@ -930,7 +930,7 @@ MC146818RtcState *mc146818_rtc_init(ISABus *bus, int ba= se_year, ISADevice *isadev; MC146818RtcState *s; =20 - isadev =3D isa_new(TYPE_MC146818_RTC); + isadev =3D isa_new_orphan(TYPE_MC146818_RTC); dev =3D DEVICE(isadev); s =3D MC146818_RTC(isadev); qdev_prop_set_int32(dev, "base_year", base_year); diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c index 5de873126c..b60588cf7d 100644 --- a/hw/sparc64/sun4u.c +++ b/hw/sparc64/sun4u.c @@ -329,13 +329,13 @@ static void ebus_realize(PCIDevice *pci_dev, Error **= errp) parallel_hds_isa_init(s->isa_bus, MAX_PARALLEL_PORTS); =20 /* Keyboard */ - isa_create_simple(s->isa_bus, TYPE_I8042); + isa_create_simple_orphan(s->isa_bus, TYPE_I8042); =20 /* Floppy */ for (i =3D 0; i < MAX_FD; i++) { fd[i] =3D drive_get(IF_FLOPPY, 0, i); } - isa_dev =3D isa_new(TYPE_ISA_FDC); + isa_dev =3D isa_new_orphan(TYPE_ISA_FDC); dev =3D DEVICE(isa_dev); qdev_prop_set_uint32(dev, "dma", -1); isa_realize_and_unref(isa_dev, s->isa_bus, &error_fatal); diff --git a/include/hw/i386/vmport.h b/include/hw/i386/vmport.h index 8f5e27c6f5..22dd3645d2 100644 --- a/include/hw/i386/vmport.h +++ b/include/hw/i386/vmport.h @@ -20,7 +20,7 @@ typedef enum { =20 static inline void vmport_init(ISABus *bus) { - isa_create_simple(bus, TYPE_VMPORT); + isa_create_simple_orphan(bus, TYPE_VMPORT); } =20 void vmport_register(VMPortCommand command, VMPortReadFunc *func, void *op= aque); diff --git a/include/hw/isa/isa.h b/include/hw/isa/isa.h index 94bff33fcc..af8e07c253 100644 --- a/include/hw/isa/isa.h +++ b/include/hw/isa/isa.h @@ -80,10 +80,14 @@ IsaDma *isa_bus_get_dma(ISABus *bus, int nchan); * Return IRQ @irqnum from the PIC associated on ISA @bus. */ qemu_irq isa_bus_get_irq(ISABus *bus, unsigned irqnum); -ISADevice *isa_new(const char *name); -ISADevice *isa_try_new(const char *name); +ISADevice *isa_new(Object *parent, const char *id, const char *type); +ISADevice *isa_try_new(Object *parent, const char *id, const char *type); +ISADevice *isa_create_simple(Object *parent, const char *id, + ISABus *bus, const char *type); +ISADevice *isa_new_orphan(const char *name); +ISADevice *isa_try_new_orphan(const char *name); bool isa_realize_and_unref(ISADevice *dev, ISABus *bus, Error **errp); -ISADevice *isa_create_simple(ISABus *bus, const char *name); +ISADevice *isa_create_simple_orphan(ISABus *bus, const char *name); =20 ISADevice *isa_vga_init(ISABus *bus); =20 diff --git a/include/hw/net/ne2000-isa.h b/include/hw/net/ne2000-isa.h index 1e14d1afc0..ef8b3334d7 100644 --- a/include/hw/net/ne2000-isa.h +++ b/include/hw/net/ne2000-isa.h @@ -22,7 +22,7 @@ static inline ISADevice *isa_ne2000_init(ISABus *bus, int= base, int irq, { ISADevice *d; =20 - d =3D isa_try_new(TYPE_ISA_NE2000); + d =3D isa_try_new_orphan(TYPE_ISA_NE2000); if (d) { DeviceState *dev =3D DEVICE(d); =20 diff --git a/include/hw/timer/i8254.h b/include/hw/timer/i8254.h index 65775b789d..38f896063e 100644 --- a/include/hw/timer/i8254.h +++ b/include/hw/timer/i8254.h @@ -51,7 +51,7 @@ static inline ISADevice *i8254_pit_init(ISABus *bus, int = base, int isa_irq, DeviceState *dev; ISADevice *d; =20 - d =3D isa_new(TYPE_I8254); + d =3D isa_new_orphan(TYPE_I8254); dev =3D DEVICE(d); qdev_prop_set_uint32(dev, "iobase", base); isa_realize_and_unref(d, bus, &error_fatal); @@ -67,7 +67,7 @@ static inline ISADevice *kvm_pit_init(ISABus *bus, int ba= se) DeviceState *dev; ISADevice *d; =20 - d =3D isa_new(TYPE_KVM_I8254); + d =3D isa_new_orphan(TYPE_KVM_I8254); dev =3D DEVICE(d); qdev_prop_set_uint32(dev, "iobase", base); isa_realize_and_unref(d, bus, &error_fatal); diff --git a/scripts/coccinelle/qom-parent/isa-new-orphan.cocci b/scripts/c= occinelle/qom-parent/isa-new-orphan.cocci new file mode 100644 index 0000000000..75393543c8 --- /dev/null +++ b/scripts/coccinelle/qom-parent/isa-new-orphan.cocci @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +// +// Rename isa_new()/isa_try_new()/isa_create_simple() to *_orphan() +// so that the short names can be reintroduced with a mandatory +// (parent, id, ...) signature. +// +// spatch --sp-file scripts/coccinelle/qom-parent/isa-new-orphan.cocci \ +// --in-place --include-headers --dir . + +@@ +@@ +- isa_new ++ isa_new_orphan + +@@ +@@ +- isa_try_new ++ isa_try_new_orphan + +@@ +@@ +- isa_create_simple ++ isa_create_simple_orphan --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784410773; cv=none; d=zohomail.com; s=zohoarc; b=ceyKUioy819cVsu6eIHqSADhM9/Sup6ZRYGBNg0oxXbUL+OC5eF6WiCYUA5vITyqAy22Rj0wngbKX545M8mXtj5PF9xZN8noPmksIcloEWOcGFA5vQjM9mH7nt3YYgjwVm4rOuwdppDntS7+Z5Qt+71fGiwD6MGSPCA35Nyn+co= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784410773; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=+cp5UBuFCU/6+q4YL/3HEtApJtGX3GrviM3GZkm3jxA=; b=FS1CZI7TYNstsDMfU6Mh5i6L3wvD6n9X3FVJ/dqMsbI564JMRz5XYmWWUbRNjhJxAMb6apNoNCPECU+i+oCtNNmyZYv3/njkCPallKigikXSjm7hBD24xCI9DpkHvfp6QJWwLgBJlh29c/6FvbYqVkeZetw6xhVMp31nZiAdQWg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178441077331932.556395849326805; Sat, 18 Jul 2026 14:39:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCkc-0002Aj-Lv; Sat, 18 Jul 2026 17:39:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCkT-00021q-Qd; Sat, 18 Jul 2026 17:39:07 -0400 Received: from pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.245.243.92]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCkO-000244-O9; Sat, 18 Jul 2026 17:39:05 -0400 Received: from ip-10-5-6-203.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.6.203]) by internal-pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:38:56 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.111:24211] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.151:2525] with esmtp (Farcaster) id 9e184146-dcf1-489a-8e53-b67ba13a36b1; Sat, 18 Jul 2026 21:38:56 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB002.ant.amazon.com (10.250.64.231) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:38:55 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:38:45 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784410740; x=1815946740; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=+cp5UBuFCU/6+q4YL/3HEtApJtGX3GrviM3GZkm3jxA=; b=npEQZe3Yim+gFyuv4Q27TIcnxpNXY/mIUFrC9fxTZjKpBHhCw7C1D9dH jLEwhwfx1JiToLY6iwfPebTgYfDtM5FcHVMAXA3zBrANXIDsEpo1TRzV6 cXxd0Fxunq/Sv0yELUVqgZfbPZwSsq9lNQnp7U0JYVgvc3M5f6EOz7/Id BwxxA23NgvTNk5RILi4SYQDWjzZ/Mcz0nwVWWVIL7MlsPCx0LzwhBYEzd wfKYq4GZC3GeBlSQmoRJ3d6aI6jAtTSaupA+UyAiWMqn8L8nzz1wr/Es9 cf7ws0i4PO5aTqDcAkODiL4+kz/XltpuxTM2AuLz6/ptCeh9WM6HnJEre Q==; X-CSE-ConnectionGUID: zHxtl/CIRNOnap7lmp1q6g== X-CSE-MsgGUID: ka5Xf88PTj+w93cS0XIHrw== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23422500" X-Farcaster-Flow-ID: 9e184146-dcf1-489a-8e53-b67ba13a36b1 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 007/137] i2c: Make i2c_slave_new()/i2c_slave_create_simple() take a QOM parent Date: Sat, 18 Jul 2026 21:34:42 +0000 Message-ID: <20260718213652.37673-8-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D046UWA001.ant.amazon.com (10.13.139.112) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.245.243.92; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784410774838158500 Same rename-and-reintroduce treatment as the qdev, sysbus, PCI and ISA layers: mechanically rename the two I2C-slave creation helpers to *_orphan() and reintroduce the short names with a leading (parent, id, ...) pair. The parented i2c_slave_create_simple() calls qdev_realize() (not i2c_slave_realize_and_unref()) since the child<> property already holds the sole reference. The mechanical rename part is generated by spatch --sp-file \ scripts/coccinelle/qom-parent/i2c-slave-new-orphan.cocci \ --in-place --include-headers --dir . or equivalently git ls-files '*.[ch]' '*.[ch].inc' '*.rst' '*.py' | \ grep -v '^subprojects/' | \ xargs sed -i \ 's/\bi2c_slave_create_simple\b/&_orphan/g; s/\bi2c_slave_new\b/&_orphan/g' AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/arm/aspeed.c | 4 +- hw/arm/aspeed_ast1040_evb.c | 2 +- hw/arm/aspeed_ast10x0_evb.c | 2 +- hw/arm/aspeed_ast2400_palmetto.c | 4 +- hw/arm/aspeed_ast2400_quanta-q71l.c | 12 ++-- hw/arm/aspeed_ast2400_supermicrox11.c | 4 +- hw/arm/aspeed_ast2500_evb.c | 2 +- hw/arm/aspeed_ast2500_g220a.c | 6 +- hw/arm/aspeed_ast2500_romulus.c | 2 +- hw/arm/aspeed_ast2500_supermicro-x11spi.c | 4 +- hw/arm/aspeed_ast2500_tiogapass.c | 6 +- hw/arm/aspeed_ast2500_witherspoon.c | 16 ++--- hw/arm/aspeed_ast2500_yosemitev2.c | 6 +- hw/arm/aspeed_ast2600_anacapa.c | 26 ++++----- hw/arm/aspeed_ast2600_bletchley.c | 20 +++---- hw/arm/aspeed_ast2600_catalina.c | 58 +++++++++---------- hw/arm/aspeed_ast2600_evb.c | 2 +- hw/arm/aspeed_ast2600_fby35.c | 10 ++-- hw/arm/aspeed_ast2600_fuji.c | 40 ++++++------- hw/arm/aspeed_ast2600_gb200nvl.c | 12 ++-- hw/arm/aspeed_ast2600_rainier.c | 46 +++++++-------- hw/arm/aspeed_ast27x0-fc.c | 2 +- hw/arm/aspeed_ast27x0_evb.c | 2 +- hw/arm/bananapi_m2u.c | 2 +- hw/arm/cubieboard.c | 2 +- hw/arm/musicpal.c | 2 +- hw/arm/npcm7xx_boards.c | 42 +++++++------- hw/arm/npcm8xx_boards.c | 2 +- hw/arm/realview.c | 2 +- hw/arm/stellaris.c | 2 +- hw/arm/versatilepb.c | 2 +- hw/arm/vexpress.c | 2 +- hw/display/sii9022.c | 2 +- hw/i2c/aspeed_i2c.c | 2 +- hw/i2c/core.c | 26 ++++++++- hw/i3c/core.c | 2 +- hw/nvram/eeprom_at24c.c | 2 +- hw/ppc/e500.c | 2 +- hw/ppc/pnv.c | 4 +- hw/ppc/sam460ex.c | 2 +- hw/riscv/tt_atlantis.c | 4 +- include/hw/arm/aspeed.h | 4 +- include/hw/i2c/i2c.h | 38 ++++++++++-- .../qom-parent/i2c-slave-new-orphan.cocci | 18 ++++++ 44 files changed, 260 insertions(+), 192 deletions(-) create mode 100644 scripts/coccinelle/qom-parent/i2c-slave-new-orphan.cocci diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c index 531e3ce276..4a4c1f1556 100644 --- a/hw/arm/aspeed.c +++ b/hw/arm/aspeed.c @@ -253,13 +253,13 @@ static void aspeed_machine_init(MachineState *machine) =20 void aspeed_create_pca9552(AspeedSoCState *soc, int bus_id, int addr) { - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, bus_id), + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, bus_id), TYPE_PCA9552, addr); } =20 I2CSlave *aspeed_create_pca9554(AspeedSoCState *soc, int bus_id, int addr) { - return i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, bus_id), + return i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, bu= s_id), TYPE_PCA9554, addr); } =20 diff --git a/hw/arm/aspeed_ast1040_evb.c b/hw/arm/aspeed_ast1040_evb.c index 2b93d4dfbc..d0326d39f9 100644 --- a/hw/arm/aspeed_ast1040_evb.c +++ b/hw/arm/aspeed_ast1040_evb.c @@ -55,7 +55,7 @@ static void ast1040_evb_i2c_init(AspeedMachineState *bmc) uint8_t *eeprom_buf =3D g_malloc0(256); =20 smbus_eeprom_init_one(aspeed_i2c_get_bus(&soc->i2c, 0), 0x50, eeprom_b= uf); - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 1), "tmp105", 0x= 4d); + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 1), "tmp1= 05", 0x4d); } =20 static void aspeed_machine_ast1040_evb_class_init(ObjectClass *oc, diff --git a/hw/arm/aspeed_ast10x0_evb.c b/hw/arm/aspeed_ast10x0_evb.c index c19563d1f0..52ead37bc7 100644 --- a/hw/arm/aspeed_ast10x0_evb.c +++ b/hw/arm/aspeed_ast10x0_evb.c @@ -73,7 +73,7 @@ static void ast1030_evb_i2c_init(AspeedMachineState *bmc) smbus_eeprom_init_one(aspeed_i2c_get_bus(&soc->i2c, 0), 0x50, eeprom_b= uf); =20 /* U11 LM75 connects to SDA/SCL Group 2 by default */ - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 1), "tmp105", 0x= 4d); + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 1), "tmp1= 05", 0x4d); } =20 static void aspeed_minibmc_machine_ast1030_evb_class_init(ObjectClass *oc, diff --git a/hw/arm/aspeed_ast2400_palmetto.c b/hw/arm/aspeed_ast2400_palme= tto.c index 776aa43a45..d89d042ce2 100644 --- a/hw/arm/aspeed_ast2400_palmetto.c +++ b/hw/arm/aspeed_ast2400_palmetto.c @@ -37,13 +37,13 @@ static void palmetto_bmc_i2c_init(AspeedMachineState *b= mc) * The palmetto platform expects a ds3231 RTC but a ds1338 is * enough to provide basic RTC features. Alarms will be missing */ - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 0), "ds1338", 0x= 68); + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 0), "ds13= 38", 0x68); =20 smbus_eeprom_init_one(aspeed_i2c_get_bus(&soc->i2c, 0), 0x50, eeprom_buf); =20 /* add a TMP423 temperature sensor */ - dev =3D DEVICE(i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 2= ), + dev =3D DEVICE(i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc-= >i2c, 2), "tmp423", 0x4c)); object_property_set_int(OBJECT(dev), "temperature0", 31000, &error_abo= rt); object_property_set_int(OBJECT(dev), "temperature1", 28000, &error_abo= rt); diff --git a/hw/arm/aspeed_ast2400_quanta-q71l.c b/hw/arm/aspeed_ast2400_qu= anta-q71l.c index 42ad2a2303..802ae49604 100644 --- a/hw/arm/aspeed_ast2400_quanta-q71l.c +++ b/hw/arm/aspeed_ast2400_quanta-q71l.c @@ -33,21 +33,21 @@ static void quanta_q71l_bmc_i2c_init(AspeedMachineState= *bmc) * The quanta-q71l platform expects tmp75s which are compatible with * tmp105s. */ - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 1), "tmp105", 0x= 4c); - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 1), "tmp105", 0x= 4e); - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 1), "tmp105", 0x= 4f); + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 1), "tmp1= 05", 0x4c); + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 1), "tmp1= 05", 0x4e); + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 1), "tmp1= 05", 0x4f); =20 /* TODO: i2c-1: Add baseboard FRU eeprom@54 24c64 */ /* TODO: i2c-1: Add Frontpanel FRU eeprom@57 24c64 */ /* TODO: Add Memory Riser i2c mux and eeproms. */ =20 - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 2), "pca9546", 0= x74); - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 2), "pca9548", 0= x77); + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 2), "pca9= 546", 0x74); + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 2), "pca9= 548", 0x77); =20 /* TODO: i2c-3: Add BIOS FRU eeprom@56 24c64 */ =20 /* i2c-7 */ - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 7), "pca9546", 0= x70); + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 7), "pca9= 546", 0x70); /* - i2c@0: pmbus@59 */ /* - i2c@1: pmbus@58 */ /* - i2c@2: pmbus@58 */ diff --git a/hw/arm/aspeed_ast2400_supermicrox11.c b/hw/arm/aspeed_ast2400_= supermicrox11.c index 88cdb01fc7..9c90998754 100644 --- a/hw/arm/aspeed_ast2400_supermicrox11.c +++ b/hw/arm/aspeed_ast2400_supermicrox11.c @@ -37,13 +37,13 @@ static void supermicrox11_bmc_i2c_init(AspeedMachineSta= te *bmc) * The palmetto platform expects a ds3231 RTC but a ds1338 is * enough to provide basic RTC features. Alarms will be missing */ - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 0), "ds1338", 0x= 68); + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 0), "ds13= 38", 0x68); =20 smbus_eeprom_init_one(aspeed_i2c_get_bus(&soc->i2c, 0), 0x50, eeprom_buf); =20 /* add a TMP423 temperature sensor */ - dev =3D DEVICE(i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 2= ), + dev =3D DEVICE(i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc-= >i2c, 2), "tmp423", 0x4c)); object_property_set_int(OBJECT(dev), "temperature0", 31000, &error_abo= rt); object_property_set_int(OBJECT(dev), "temperature1", 28000, &error_abo= rt); diff --git a/hw/arm/aspeed_ast2500_evb.c b/hw/arm/aspeed_ast2500_evb.c index 8b5cb67be9..e46ce4a5aa 100644 --- a/hw/arm/aspeed_ast2500_evb.c +++ b/hw/arm/aspeed_ast2500_evb.c @@ -34,7 +34,7 @@ static void ast2500_evb_i2c_init(AspeedMachineState *bmc) eeprom_buf); =20 /* The AST2500 EVB expects a LM75 but a TMP105 is compatible */ - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 7), + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 7), TYPE_TMP105, 0x4d); } =20 diff --git a/hw/arm/aspeed_ast2500_g220a.c b/hw/arm/aspeed_ast2500_g220a.c index 3f979a78e5..577ee0aff4 100644 --- a/hw/arm/aspeed_ast2500_g220a.c +++ b/hw/arm/aspeed_ast2500_g220a.c @@ -32,19 +32,19 @@ static void g220a_bmc_i2c_init(AspeedMachineState *bmc) AspeedSoCState *soc =3D bmc->soc; DeviceState *dev; =20 - dev =3D DEVICE(i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 3= ), + dev =3D DEVICE(i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc-= >i2c, 3), "emc1413", 0x4c)); object_property_set_int(OBJECT(dev), "temperature0", 31000, &error_abo= rt); object_property_set_int(OBJECT(dev), "temperature1", 28000, &error_abo= rt); object_property_set_int(OBJECT(dev), "temperature2", 20000, &error_abo= rt); =20 - dev =3D DEVICE(i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 1= 2), + dev =3D DEVICE(i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc-= >i2c, 12), "emc1413", 0x4c)); object_property_set_int(OBJECT(dev), "temperature0", 31000, &error_abo= rt); object_property_set_int(OBJECT(dev), "temperature1", 28000, &error_abo= rt); object_property_set_int(OBJECT(dev), "temperature2", 20000, &error_abo= rt); =20 - dev =3D DEVICE(i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 1= 3), + dev =3D DEVICE(i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc-= >i2c, 13), "emc1413", 0x4c)); object_property_set_int(OBJECT(dev), "temperature0", 31000, &error_abo= rt); object_property_set_int(OBJECT(dev), "temperature1", 28000, &error_abo= rt); diff --git a/hw/arm/aspeed_ast2500_romulus.c b/hw/arm/aspeed_ast2500_romulu= s.c index 91b660e74b..1bbd2802f1 100644 --- a/hw/arm/aspeed_ast2500_romulus.c +++ b/hw/arm/aspeed_ast2500_romulus.c @@ -30,7 +30,7 @@ static void romulus_bmc_i2c_init(AspeedMachineState *bmc) * The romulus board expects Epson RX8900 I2C RTC but a ds1338 is * good enough */ - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 11), "ds1338", 0= x32); + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 11), "ds1= 338", 0x32); } =20 static void aspeed_machine_romulus_class_init(ObjectClass *oc, diff --git a/hw/arm/aspeed_ast2500_supermicro-x11spi.c b/hw/arm/aspeed_ast2= 500_supermicro-x11spi.c index a2450aa962..9e95d26901 100644 --- a/hw/arm/aspeed_ast2500_supermicro-x11spi.c +++ b/hw/arm/aspeed_ast2500_supermicro-x11spi.c @@ -33,13 +33,13 @@ static void supermicro_x11spi_bmc_i2c_init(AspeedMachin= eState *bmc) * The palmetto platform expects a ds3231 RTC but a ds1338 is * enough to provide basic RTC features. Alarms will be missing */ - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 0), "ds1338", 0x= 68); + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 0), "ds13= 38", 0x68); =20 smbus_eeprom_init_one(aspeed_i2c_get_bus(&soc->i2c, 0), 0x50, eeprom_buf); =20 /* add a TMP423 temperature sensor */ - dev =3D DEVICE(i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 2= ), + dev =3D DEVICE(i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc-= >i2c, 2), "tmp423", 0x4c)); object_property_set_int(OBJECT(dev), "temperature0", 31000, &error_abo= rt); object_property_set_int(OBJECT(dev), "temperature1", 28000, &error_abo= rt); diff --git a/hw/arm/aspeed_ast2500_tiogapass.c b/hw/arm/aspeed_ast2500_tiog= apass.c index 186dbc1da3..a6b3c0d051 100644 --- a/hw/arm/aspeed_ast2500_tiogapass.c +++ b/hw/arm/aspeed_ast2500_tiogapass.c @@ -55,9 +55,9 @@ static void tiogapass_bmc_i2c_init(AspeedMachineState *bm= c) at24c_eeprom_init_rom(aspeed_i2c_get_bus(&soc->i2c, 6), 0x54, 128 * Ki= B, tiogapass_bmc_fruid, tiogapass_bmc_fruid_len); /* TMP421 */ - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 8), "tmp421", 0x= 1f); - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 6), "tmp421", 0x= 4f); - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 6), "tmp421", 0x= 4e); + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 8), "tmp4= 21", 0x1f); + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 6), "tmp4= 21", 0x4f); + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 6), "tmp4= 21", 0x4e); } =20 static void aspeed_machine_tiogapass_class_init(ObjectClass *oc, diff --git a/hw/arm/aspeed_ast2500_witherspoon.c b/hw/arm/aspeed_ast2500_wi= therspoon.c index 28d437fec0..cb57cb421a 100644 --- a/hw/arm/aspeed_ast2500_witherspoon.c +++ b/hw/arm/aspeed_ast2500_witherspoon.c @@ -44,7 +44,7 @@ static void witherspoon_bmc_i2c_init(AspeedMachineState *= bmc) LEDState *led; =20 /* Bus 3: TODO bmp280@77 */ - dev =3D DEVICE(i2c_slave_new(TYPE_PCA9552, 0x60)); + dev =3D DEVICE(i2c_slave_new_orphan(TYPE_PCA9552, 0x60)); qdev_prop_set_string(dev, "description", "pca1"); i2c_slave_realize_and_unref(I2C_SLAVE(dev), aspeed_i2c_get_bus(&soc->i2c, 3), @@ -58,24 +58,24 @@ static void witherspoon_bmc_i2c_init(AspeedMachineState= *bmc) qdev_connect_gpio_out(dev, pca1_leds[i].gpio_id, qdev_get_gpio_in(DEVICE(led), 0)); } - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 3), "dps310", 0x= 76); - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 3), "max31785", = 0x52); - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 4), "tmp423", 0x= 4c); - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 5), "tmp423", 0x= 4c); + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 3), "dps3= 10", 0x76); + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 3), "max3= 1785", 0x52); + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 4), "tmp4= 23", 0x4c); + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 5), "tmp4= 23", 0x4c); =20 /* The Witherspoon expects a TMP275 but a TMP105 is compatible */ - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 9), TYPE_TMP105, + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 9), TYPE_= TMP105, 0x4a); =20 /* * The witherspoon board expects Epson RX8900 I2C RTC but a ds1338 is * good enough */ - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 11), "ds1338", 0= x32); + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 11), "ds1= 338", 0x32); =20 smbus_eeprom_init_one(aspeed_i2c_get_bus(&soc->i2c, 11), 0x51, eeprom_buf); - dev =3D DEVICE(i2c_slave_new(TYPE_PCA9552, 0x60)); + dev =3D DEVICE(i2c_slave_new_orphan(TYPE_PCA9552, 0x60)); qdev_prop_set_string(dev, "description", "pca0"); i2c_slave_realize_and_unref(I2C_SLAVE(dev), aspeed_i2c_get_bus(&soc->i2c, 11), diff --git a/hw/arm/aspeed_ast2500_yosemitev2.c b/hw/arm/aspeed_ast2500_yos= emitev2.c index eaa75bcccb..905758c345 100644 --- a/hw/arm/aspeed_ast2500_yosemitev2.c +++ b/hw/arm/aspeed_ast2500_yosemitev2.c @@ -55,9 +55,9 @@ static void yosemitev2_bmc_i2c_init(AspeedMachineState *b= mc) at24c_eeprom_init_rom(aspeed_i2c_get_bus(&soc->i2c, 8), 0x51, 128 * Ki= B, yosemitev2_bmc_fruid, yosemitev2_bmc_fruid_len); /* TMP421 */ - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 11), "tmp421", 0= x1f); - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 9), "tmp421", 0x= 4e); - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 9), "tmp421", 0x= 4f); + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 11), "tmp= 421", 0x1f); + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 9), "tmp4= 21", 0x4e); + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 9), "tmp4= 21", 0x4f); =20 } =20 diff --git a/hw/arm/aspeed_ast2600_anacapa.c b/hw/arm/aspeed_ast2600_anacap= a.c index a1c8111a93..98395f196b 100644 --- a/hw/arm/aspeed_ast2600_anacapa.c +++ b/hw/arm/aspeed_ast2600_anacapa.c @@ -237,17 +237,17 @@ static void anacapa_bmc_i2c_init(AspeedMachineState *= bmc) /* eeprom@50 */ at24c_eeprom_init(i2c[0], 0x50, 256 * KiB); /* i2c-mux@70 */ - i2c_slave_create_simple(i2c[0], TYPE_PCA9546, 0x70); + i2c_slave_create_simple_orphan(i2c[0], TYPE_PCA9546, 0x70); =20 /* &i2c1 */ /* eeprom@50 */ at24c_eeprom_init(i2c[1], 0x50, 256 * KiB); /* i2c-mux@70 (PCA9546) =E2=80=94 4 channels, empty */ - i2c_slave_create_simple(i2c[1], TYPE_PCA9546, 0x70); + i2c_slave_create_simple_orphan(i2c[1], TYPE_PCA9546, 0x70); =20 /* &i2c4 */ /* i2c-mux@70 (PCA9548) */ - i2c_slave_create_simple(i2c[4], TYPE_PCA9548, 0x70); + i2c_slave_create_simple_orphan(i2c[4], TYPE_PCA9548, 0x70); =20 /* &i2c6 */ /* eeprom@50 */ @@ -256,15 +256,15 @@ static void anacapa_bmc_i2c_init(AspeedMachineState *= bmc) =20 /* &i2c8 */ /* i2c-mux@72 (PCA9546) */ - i2c_mux =3D i2c_slave_create_simple(i2c[8], TYPE_PCA9546, 0x72); + i2c_mux =3D i2c_slave_create_simple_orphan(i2c[8], TYPE_PCA9546, 0x72); =20 /* i2c8mux ch0 */ /* adc128d818@1f =E2=80=94 no model */ /* pca9555@22 */ - i2c_slave_create_simple(pca954x_i2c_get_bus(i2c_mux, 0), + i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 0), TYPE_PCA9552, 0x22); /* pca9555@24 */ - i2c_slave_create_simple(pca954x_i2c_get_bus(i2c_mux, 0), + i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 0), TYPE_PCA9552, 0x24); /* eeprom@50 */ at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 0), 0x50, 16 * KiB, @@ -272,10 +272,10 @@ static void anacapa_bmc_i2c_init(AspeedMachineState *= bmc) =20 /* i2c8mux ch1 */ /* pca9555@22 */ - i2c_slave_create_simple(pca954x_i2c_get_bus(i2c_mux, 1), + i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 1), TYPE_PCA9552, 0x22); /* pca9555@24 */ - i2c_slave_create_simple(pca954x_i2c_get_bus(i2c_mux, 1), + i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 1), TYPE_PCA9552, 0x24); /* eeprom@50 */ at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 1), 0x50, 16 * KiB, @@ -291,11 +291,11 @@ static void anacapa_bmc_i2c_init(AspeedMachineState *= bmc) =20 /* &i2c10 */ /* i2c-mux@71 (PCA9548) */ - i2c_mux =3D i2c_slave_create_simple(i2c[10], TYPE_PCA9548, 0x71); + i2c_mux =3D i2c_slave_create_simple_orphan(i2c[10], TYPE_PCA9548, 0x71= ); =20 /* i2c10mux ch5 */ /* pca9555@22*/ - i2c_slave_create_simple(pca954x_i2c_get_bus(i2c_mux, 5), + i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 5), TYPE_PCA9552, 0x22); /* eeprom@52 */ at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 5), 0x52, 32 * KiB, @@ -303,13 +303,13 @@ static void anacapa_bmc_i2c_init(AspeedMachineState *= bmc) =20 /* &i2c11 */ /* i2c-mux@71 (PCA9548) */ - i2c_mux =3D i2c_slave_create_simple(i2c[11], TYPE_PCA9548, 0x71); + i2c_mux =3D i2c_slave_create_simple_orphan(i2c[11], TYPE_PCA9548, 0x71= ); =20 /* i2c11mux ch0-ch4 =E2=80=94 empty */ =20 /* i2c11mux ch5 */ /* pca9555@22 */ - i2c_slave_create_simple(pca954x_i2c_get_bus(i2c_mux, 5), + i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 5), TYPE_PCA9552, 0x22); /* eeprom@52 */ at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 5), 0x52, 32 * KiB, @@ -317,7 +317,7 @@ static void anacapa_bmc_i2c_init(AspeedMachineState *bm= c) =20 /* &i2c13 */ /* i2c-mux@70 (PCA9548) */ - i2c_mux =3D i2c_slave_create_simple(i2c[13], TYPE_PCA9548, 0x70); + i2c_mux =3D i2c_slave_create_simple_orphan(i2c[13], TYPE_PCA9548, 0x70= ); =20 /* i2c13mux ch3 */ /* adc128d818@1f - no model */ diff --git a/hw/arm/aspeed_ast2600_bletchley.c b/hw/arm/aspeed_ast2600_blet= chley.c index b7e84db143..4930bddb39 100644 --- a/hw/arm/aspeed_ast2600_bletchley.c +++ b/hw/arm/aspeed_ast2600_bletchley.c @@ -35,35 +35,35 @@ static void bletchley_bmc_i2c_init(AspeedMachineState *= bmc) for (int i =3D 0; i < 6; i++) { /* Missing model: ti,ina230 @ 0x45 */ /* Missing model: mps,mp5023 @ 0x40 */ - i2c_slave_create_simple(i2c[i], TYPE_TMP421, 0x4f); + i2c_slave_create_simple_orphan(i2c[i], TYPE_TMP421, 0x4f); /* Missing model: nxp,pca9539 @ 0x76, but PCA9552 works enough */ - i2c_slave_create_simple(i2c[i], TYPE_PCA9552, 0x76); - i2c_slave_create_simple(i2c[i], TYPE_PCA9552, 0x67); + i2c_slave_create_simple_orphan(i2c[i], TYPE_PCA9552, 0x76); + i2c_slave_create_simple_orphan(i2c[i], TYPE_PCA9552, 0x67); /* Missing model: fsc,fusb302 @ 0x22 */ } =20 /* Bus 6 */ at24c_eeprom_init(i2c[6], 0x56, 65536); /* Missing model: nxp,pcf85263 @ 0x51 , but ds1338 works enough */ - i2c_slave_create_simple(i2c[6], "ds1338", 0x51); + i2c_slave_create_simple_orphan(i2c[6], "ds1338", 0x51); =20 =20 /* Bus 7 */ at24c_eeprom_init(i2c[7], 0x54, 65536); =20 /* Bus 9 */ - i2c_slave_create_simple(i2c[9], TYPE_TMP421, 0x4f); + i2c_slave_create_simple_orphan(i2c[9], TYPE_TMP421, 0x4f); =20 /* Bus 10 */ - i2c_slave_create_simple(i2c[10], TYPE_TMP421, 0x4f); + i2c_slave_create_simple_orphan(i2c[10], TYPE_TMP421, 0x4f); /* Missing model: ti,hdc1080 @ 0x40 */ - i2c_slave_create_simple(i2c[10], TYPE_PCA9552, 0x67); + i2c_slave_create_simple_orphan(i2c[10], TYPE_PCA9552, 0x67); =20 /* Bus 12 */ /* Missing model: adi,adm1278 @ 0x11 */ - i2c_slave_create_simple(i2c[12], TYPE_TMP421, 0x4c); - i2c_slave_create_simple(i2c[12], TYPE_TMP421, 0x4d); - i2c_slave_create_simple(i2c[12], TYPE_PCA9552, 0x67); + i2c_slave_create_simple_orphan(i2c[12], TYPE_TMP421, 0x4c); + i2c_slave_create_simple_orphan(i2c[12], TYPE_TMP421, 0x4d); + i2c_slave_create_simple_orphan(i2c[12], TYPE_PCA9552, 0x67); } =20 static void aspeed_machine_bletchley_class_init(ObjectClass *oc, diff --git a/hw/arm/aspeed_ast2600_catalina.c b/hw/arm/aspeed_ast2600_catal= ina.c index 65495a524e..c2c949ace3 100644 --- a/hw/arm/aspeed_ast2600_catalina.c +++ b/hw/arm/aspeed_ast2600_catalina.c @@ -472,43 +472,43 @@ static void catalina_bmc_i2c_init(AspeedMachineState = *bmc) =20 /* &i2c0 */ /* i2c-mux@71 (PCA9546) on i2c0 */ - i2c_slave_create_simple(i2c[0], TYPE_PCA9546, 0x71); + i2c_slave_create_simple_orphan(i2c[0], TYPE_PCA9546, 0x71); =20 /* i2c-mux@72 (PCA9546) on i2c0 */ - i2c_mux =3D i2c_slave_create_simple(i2c[0], TYPE_PCA9546, 0x72); + i2c_mux =3D i2c_slave_create_simple_orphan(i2c[0], TYPE_PCA9546, 0x72); =20 /* i2c0mux1ch1 */ /* io_expander7 - pca9535@20 */ - i2c_slave_create_simple(pca954x_i2c_get_bus(i2c_mux, 1), + i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 1), TYPE_PCA9535, 0x20); /* eeprom@50 */ at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 1), 0x50, 8 * KiB, gb200io_eeprom, gb200io_eeprom_len); =20 /* i2c-mux@73 (PCA9546) on i2c0 */ - i2c_slave_create_simple(i2c[0], TYPE_PCA9546, 0x73); + i2c_slave_create_simple_orphan(i2c[0], TYPE_PCA9546, 0x73); =20 /* i2c-mux@75 (PCA9546) on i2c0 */ - i2c_slave_create_simple(i2c[0], TYPE_PCA9546, 0x75); + i2c_slave_create_simple_orphan(i2c[0], TYPE_PCA9546, 0x75); =20 /* i2c-mux@76 (PCA9546) on i2c0 */ - i2c_mux =3D i2c_slave_create_simple(i2c[0], TYPE_PCA9546, 0x76); + i2c_mux =3D i2c_slave_create_simple_orphan(i2c[0], TYPE_PCA9546, 0x76); =20 /* i2c0mux4ch1 */ /* io_expander8 - pca9535@21 */ - i2c_slave_create_simple(pca954x_i2c_get_bus(i2c_mux, 1), + i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 1), TYPE_PCA9535, 0x21); /* eeprom@50 */ at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 1), 0x50, 8 * KiB, gb200io_eeprom, gb200io_eeprom_len); =20 /* i2c-mux@77 (PCA9546) on i2c0 */ - i2c_slave_create_simple(i2c[0], TYPE_PCA9546, 0x77); + i2c_slave_create_simple_orphan(i2c[0], TYPE_PCA9546, 0x77); =20 =20 /* &i2c1 */ /* i2c-mux@70 (PCA9548) on i2c1 */ - i2c_mux =3D i2c_slave_create_simple(i2c[1], TYPE_PCA9548, 0x70); + i2c_mux =3D i2c_slave_create_simple_orphan(i2c[1], TYPE_PCA9548, 0x70); /* i2c1mux0ch0 */ /* ina238@41 - no model */ /* ina238@42 - no model */ @@ -525,14 +525,14 @@ static void catalina_bmc_i2c_init(AspeedMachineState = *bmc) at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 5), 0x54, 8 * KiB, pdb_eeprom, pdb_eeprom_len); /* tpm75@4f */ - i2c_slave_create_simple(pca954x_i2c_get_bus(i2c_mux, 5), TYPE_TMP75, 0= x4f); + i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 5), TYPE_T= MP75, 0x4f); =20 /* i2c1mux0ch6 */ /* io_expander5 - pca9554@27 */ - i2c_slave_create_simple(pca954x_i2c_get_bus(i2c_mux, 6), + i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 6), TYPE_PCA9554, 0x27); /* io_expander6 - pca9555@25 */ - i2c_slave_create_simple(pca954x_i2c_get_bus(i2c_mux, 6), + i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 6), TYPE_PCA9552, 0x25); /* eeprom@51 */ at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 6), 0x51, 8 * KiB, @@ -543,15 +543,15 @@ static void catalina_bmc_i2c_init(AspeedMachineState = *bmc) at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 7), 0x53, 8 * KiB, fio_eeprom, fio_eeprom_len); /* temperature-sensor@4b - tmp75 */ - i2c_slave_create_simple(pca954x_i2c_get_bus(i2c_mux, 7), TYPE_TMP75, 0= x4b); + i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 7), TYPE_T= MP75, 0x4b); =20 /* &i2c2 */ /* io_expander0 - pca9555@20 */ - i2c_slave_create_simple(i2c[2], TYPE_PCA9552, 0x20); + i2c_slave_create_simple_orphan(i2c[2], TYPE_PCA9552, 0x20); /* io_expander0 - pca9555@21 */ - i2c_slave_create_simple(i2c[2], TYPE_PCA9552, 0x21); + i2c_slave_create_simple_orphan(i2c[2], TYPE_PCA9552, 0x21); /* io_expander0 - pca9555@27 */ - i2c_slave_create_simple(i2c[2], TYPE_PCA9552, 0x27); + i2c_slave_create_simple_orphan(i2c[2], TYPE_PCA9552, 0x27); /* eeprom@50 */ at24c_eeprom_init(i2c[2], 0x50, 8 * KiB); /* eeprom@51 */ @@ -559,7 +559,7 @@ static void catalina_bmc_i2c_init(AspeedMachineState *b= mc) =20 /* &i2c5 */ /* i2c-mux@70 (PCA9548) on i2c5 */ - i2c_mux =3D i2c_slave_create_simple(i2c[5], TYPE_PCA9548, 0x70); + i2c_mux =3D i2c_slave_create_simple_orphan(i2c[5], TYPE_PCA9548, 0x70); /* i2c5mux0ch6 */ /* eeprom@52 */ at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 6), 0x52, 8 * KiB, @@ -572,15 +572,15 @@ static void catalina_bmc_i2c_init(AspeedMachineState = *bmc) =20 /* &i2c6 */ /* io_expander3 - pca9555@21 */ - i2c_slave_create_simple(i2c[6], TYPE_PCA9552, 0x21); + i2c_slave_create_simple_orphan(i2c[6], TYPE_PCA9552, 0x21); /* rtc@6f - nct3018y */ - i2c_slave_create_simple(i2c[6], TYPE_DS1338, 0x6f); + i2c_slave_create_simple_orphan(i2c[6], TYPE_DS1338, 0x6f); =20 /* &i2c9 */ /* io_expander4 - pca9555@4f */ - i2c_slave_create_simple(i2c[9], TYPE_PCA9552, 0x4f); + i2c_slave_create_simple_orphan(i2c[9], TYPE_PCA9552, 0x4f); /* temperature-sensor@4b - tpm75 */ - i2c_slave_create_simple(i2c[9], TYPE_TMP75, 0x4b); + i2c_slave_create_simple_orphan(i2c[9], TYPE_TMP75, 0x4b); /* eeprom@50 */ at24c_eeprom_init_rom(i2c[9], 0x50, 8 * KiB, scm_eeprom, scm_eeprom_le= n); /* eeprom@56 */ @@ -588,7 +588,7 @@ static void catalina_bmc_i2c_init(AspeedMachineState *b= mc) =20 /* &i2c10 */ /* temperature-sensor@1f - tpm421 */ - i2c_slave_create_simple(i2c[10], TYPE_TMP421, 0x1f); + i2c_slave_create_simple_orphan(i2c[10], TYPE_TMP421, 0x1f); /* eeprom@50 */ at24c_eeprom_init_rom(i2c[10], 0x50, 8 * KiB, nic_eeprom, nic_eeprom_l= en); =20 @@ -615,21 +615,21 @@ static void catalina_bmc_i2c_init(AspeedMachineState = *bmc) =20 /* &i2c14 */ /* io_expander9 - pca9555@10 */ - i2c_slave_create_simple(i2c[14], TYPE_PCA9552, 0x10); + i2c_slave_create_simple_orphan(i2c[14], TYPE_PCA9552, 0x10); /* io_expander10 - pca9555@11 */ - i2c_slave_create_simple(i2c[14], TYPE_PCA9552, 0x11); + i2c_slave_create_simple_orphan(i2c[14], TYPE_PCA9552, 0x11); /* io_expander11 - pca9555@12 */ - i2c_slave_create_simple(i2c[14], TYPE_PCA9552, 0x12); + i2c_slave_create_simple_orphan(i2c[14], TYPE_PCA9552, 0x12); /* io_expander12 - pca9555@13 */ - i2c_slave_create_simple(i2c[14], TYPE_PCA9552, 0x13); + i2c_slave_create_simple_orphan(i2c[14], TYPE_PCA9552, 0x13); /* io_expander13 - pca9555@14 */ - i2c_slave_create_simple(i2c[14], TYPE_PCA9552, 0x14); + i2c_slave_create_simple_orphan(i2c[14], TYPE_PCA9552, 0x14); /* io_expander14 - pca9555@15 */ - i2c_slave_create_simple(i2c[14], TYPE_PCA9552, 0x15); + i2c_slave_create_simple_orphan(i2c[14], TYPE_PCA9552, 0x15); =20 /* &i2c15 */ /* temperature-sensor@1f - tmp421 */ - i2c_slave_create_simple(i2c[15], TYPE_TMP421, 0x1f); + i2c_slave_create_simple_orphan(i2c[15], TYPE_TMP421, 0x1f); /* eeprom@52 */ at24c_eeprom_init_rom(i2c[15], 0x52, 8 * KiB, nic_eeprom, nic_eeprom_l= en); } diff --git a/hw/arm/aspeed_ast2600_evb.c b/hw/arm/aspeed_ast2600_evb.c index c43d2687c1..cf1e2b006c 100644 --- a/hw/arm/aspeed_ast2600_evb.c +++ b/hw/arm/aspeed_ast2600_evb.c @@ -27,7 +27,7 @@ static void ast2600_evb_i2c_init(AspeedMachineState *bmc) eeprom_buf); =20 /* LM75 is compatible with TMP105 driver */ - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 8), + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 8), TYPE_TMP105, 0x4d); } =20 diff --git a/hw/arm/aspeed_ast2600_fby35.c b/hw/arm/aspeed_ast2600_fby35.c index f624427070..fcd1acdc17 100644 --- a/hw/arm/aspeed_ast2600_fby35.c +++ b/hw/arm/aspeed_ast2600_fby35.c @@ -102,12 +102,12 @@ static void fby35_i2c_init(AspeedMachineState *bmc) i2c[i] =3D aspeed_i2c_get_bus(&soc->i2c, i); } =20 - i2c_slave_create_simple(i2c[2], TYPE_LM75, 0x4f); - i2c_slave_create_simple(i2c[8], TYPE_TMP421, 0x1f); + i2c_slave_create_simple_orphan(i2c[2], TYPE_LM75, 0x4f); + i2c_slave_create_simple_orphan(i2c[8], TYPE_TMP421, 0x1f); /* Hotswap controller is actually supposed to be mp5920 or ltc4282. */ - i2c_slave_create_simple(i2c[11], "adm1272", 0x44); - i2c_slave_create_simple(i2c[12], TYPE_LM75, 0x4e); - i2c_slave_create_simple(i2c[12], TYPE_LM75, 0x4f); + i2c_slave_create_simple_orphan(i2c[11], "adm1272", 0x44); + i2c_slave_create_simple_orphan(i2c[12], TYPE_LM75, 0x4e); + i2c_slave_create_simple_orphan(i2c[12], TYPE_LM75, 0x4f); =20 at24c_eeprom_init(i2c[4], 0x51, 128 * KiB); at24c_eeprom_init(i2c[6], 0x51, 128 * KiB); diff --git a/hw/arm/aspeed_ast2600_fuji.c b/hw/arm/aspeed_ast2600_fuji.c index 37db252e27..59b2da1ccf 100644 --- a/hw/arm/aspeed_ast2600_fuji.c +++ b/hw/arm/aspeed_ast2600_fuji.c @@ -27,7 +27,7 @@ static void get_pca9548_channels(I2CBus *bus, uint8_t mux_addr, I2CBus **channels) { - I2CSlave *mux =3D i2c_slave_create_simple(bus, "pca9548", mux_addr); + I2CSlave *mux =3D i2c_slave_create_simple_orphan(bus, "pca9548", mux_a= ddr); for (int i =3D 0; i < 8; i++) { channels[i] =3D pca954x_i2c_get_bus(mux, i); } @@ -57,8 +57,8 @@ static void fuji_bmc_i2c_init(AspeedMachineState *bmc) get_pca9548_channels(i2c[40 + i], 0x76, &i2c[80 + i * 8]); } =20 - i2c_slave_create_simple(i2c[17], TYPE_LM75, 0x4c); - i2c_slave_create_simple(i2c[17], TYPE_LM75, 0x4d); + i2c_slave_create_simple_orphan(i2c[17], TYPE_LM75, 0x4c); + i2c_slave_create_simple_orphan(i2c[17], TYPE_LM75, 0x4d); =20 /* * EEPROM 24c64 size is 64Kbits or 8 Kbytes @@ -68,33 +68,33 @@ static void fuji_bmc_i2c_init(AspeedMachineState *bmc) at24c_eeprom_init(i2c[20], 0x50, 256); at24c_eeprom_init(i2c[22], 0x52, 256); =20 - i2c_slave_create_simple(i2c[3], TYPE_LM75, 0x48); - i2c_slave_create_simple(i2c[3], TYPE_LM75, 0x49); - i2c_slave_create_simple(i2c[3], TYPE_LM75, 0x4a); - i2c_slave_create_simple(i2c[3], TYPE_TMP422, 0x4c); + i2c_slave_create_simple_orphan(i2c[3], TYPE_LM75, 0x48); + i2c_slave_create_simple_orphan(i2c[3], TYPE_LM75, 0x49); + i2c_slave_create_simple_orphan(i2c[3], TYPE_LM75, 0x4a); + i2c_slave_create_simple_orphan(i2c[3], TYPE_TMP422, 0x4c); =20 at24c_eeprom_init(i2c[8], 0x51, 8 * KiB); - i2c_slave_create_simple(i2c[8], TYPE_LM75, 0x4a); + i2c_slave_create_simple_orphan(i2c[8], TYPE_LM75, 0x4a); =20 - i2c_slave_create_simple(i2c[50], TYPE_LM75, 0x4c); + i2c_slave_create_simple_orphan(i2c[50], TYPE_LM75, 0x4c); at24c_eeprom_init(i2c[50], 0x52, 8 * KiB); - i2c_slave_create_simple(i2c[51], TYPE_TMP75, 0x48); - i2c_slave_create_simple(i2c[52], TYPE_TMP75, 0x49); + i2c_slave_create_simple_orphan(i2c[51], TYPE_TMP75, 0x48); + i2c_slave_create_simple_orphan(i2c[52], TYPE_TMP75, 0x49); =20 - i2c_slave_create_simple(i2c[59], TYPE_TMP75, 0x48); - i2c_slave_create_simple(i2c[60], TYPE_TMP75, 0x49); + i2c_slave_create_simple_orphan(i2c[59], TYPE_TMP75, 0x48); + i2c_slave_create_simple_orphan(i2c[60], TYPE_TMP75, 0x49); =20 at24c_eeprom_init(i2c[65], 0x53, 8 * KiB); - i2c_slave_create_simple(i2c[66], TYPE_TMP75, 0x49); - i2c_slave_create_simple(i2c[66], TYPE_TMP75, 0x48); + i2c_slave_create_simple_orphan(i2c[66], TYPE_TMP75, 0x49); + i2c_slave_create_simple_orphan(i2c[66], TYPE_TMP75, 0x48); at24c_eeprom_init(i2c[68], 0x52, 8 * KiB); at24c_eeprom_init(i2c[69], 0x52, 8 * KiB); at24c_eeprom_init(i2c[70], 0x52, 8 * KiB); at24c_eeprom_init(i2c[71], 0x52, 8 * KiB); =20 at24c_eeprom_init(i2c[73], 0x53, 8 * KiB); - i2c_slave_create_simple(i2c[74], TYPE_TMP75, 0x49); - i2c_slave_create_simple(i2c[74], TYPE_TMP75, 0x48); + i2c_slave_create_simple_orphan(i2c[74], TYPE_TMP75, 0x49); + i2c_slave_create_simple_orphan(i2c[74], TYPE_TMP75, 0x48); at24c_eeprom_init(i2c[76], 0x52, 8 * KiB); at24c_eeprom_init(i2c[77], 0x52, 8 * KiB); at24c_eeprom_init(i2c[78], 0x52, 8 * KiB); @@ -103,9 +103,9 @@ static void fuji_bmc_i2c_init(AspeedMachineState *bmc) =20 for (int i =3D 0; i < 8; i++) { at24c_eeprom_init(i2c[81 + i * 8], 0x56, 64 * KiB); - i2c_slave_create_simple(i2c[82 + i * 8], TYPE_TMP75, 0x48); - i2c_slave_create_simple(i2c[83 + i * 8], TYPE_TMP75, 0x4b); - i2c_slave_create_simple(i2c[84 + i * 8], TYPE_TMP75, 0x4a); + i2c_slave_create_simple_orphan(i2c[82 + i * 8], TYPE_TMP75, 0x48); + i2c_slave_create_simple_orphan(i2c[83 + i * 8], TYPE_TMP75, 0x4b); + i2c_slave_create_simple_orphan(i2c[84 + i * 8], TYPE_TMP75, 0x4a); } } =20 diff --git a/hw/arm/aspeed_ast2600_gb200nvl.c b/hw/arm/aspeed_ast2600_gb200= nvl.c index ad9a10110b..2c1c513674 100644 --- a/hw/arm/aspeed_ast2600_gb200nvl.c +++ b/hw/arm/aspeed_ast2600_gb200nvl.c @@ -54,12 +54,12 @@ static void gb200nvl_bmc_i2c_init(AspeedMachineState *b= mc) aspeed_create_pca9554(soc, 4, 0x21); =20 /* Mux I2c Expanders */ - i2c_slave_create_simple(i2c[5], "pca9546", 0x71); - i2c_slave_create_simple(i2c[5], "pca9546", 0x72); - i2c_slave_create_simple(i2c[5], "pca9546", 0x73); - i2c_slave_create_simple(i2c[5], "pca9546", 0x75); - i2c_slave_create_simple(i2c[5], "pca9546", 0x76); - i2c_slave_create_simple(i2c[5], "pca9546", 0x77); + i2c_slave_create_simple_orphan(i2c[5], "pca9546", 0x71); + i2c_slave_create_simple_orphan(i2c[5], "pca9546", 0x72); + i2c_slave_create_simple_orphan(i2c[5], "pca9546", 0x73); + i2c_slave_create_simple_orphan(i2c[5], "pca9546", 0x75); + i2c_slave_create_simple_orphan(i2c[5], "pca9546", 0x76); + i2c_slave_create_simple_orphan(i2c[5], "pca9546", 0x77); =20 /* Bus 10 */ dev =3D DEVICE(aspeed_create_pca9554(soc, 9, 0x20)); diff --git a/hw/arm/aspeed_ast2600_rainier.c b/hw/arm/aspeed_ast2600_rainie= r.c index 8f0a412ddc..0495c2880c 100644 --- a/hw/arm/aspeed_ast2600_rainier.c +++ b/hw/arm/aspeed_ast2600_rainier.c @@ -73,37 +73,37 @@ static void rainier_bmc_i2c_init(AspeedMachineState *bm= c) aspeed_create_pca9552(soc, 3, 0x61); =20 /* The rainier expects a TMP275 but a TMP105 is compatible */ - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 4), TYPE_TMP105, + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 4), TYPE_= TMP105, 0x48); - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 4), TYPE_TMP105, + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 4), TYPE_= TMP105, 0x49); - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 4), TYPE_TMP105, + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 4), TYPE_= TMP105, 0x4a); - i2c_mux =3D i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 4), + i2c_mux =3D i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2= c, 4), "pca9546", 0x70); at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 0), 0x50, 64 * KiB); at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 1), 0x51, 64 * KiB); at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 2), 0x52, 64 * KiB); aspeed_create_pca9552(soc, 4, 0x60); =20 - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 5), TYPE_TMP105, + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 5), TYPE_= TMP105, 0x48); - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 5), TYPE_TMP105, + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 5), TYPE_= TMP105, 0x49); aspeed_create_pca9552(soc, 5, 0x60); aspeed_create_pca9552(soc, 5, 0x61); - i2c_mux =3D i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 5), + i2c_mux =3D i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2= c, 5), "pca9546", 0x70); at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 0), 0x50, 64 * KiB); at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 1), 0x51, 64 * KiB); =20 - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 6), TYPE_TMP105, + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 6), TYPE_= TMP105, 0x48); - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 6), TYPE_TMP105, + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 6), TYPE_= TMP105, 0x4a); - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 6), TYPE_TMP105, + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 6), TYPE_= TMP105, 0x4b); - i2c_mux =3D i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 6), + i2c_mux =3D i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2= c, 6), "pca9546", 0x70); at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 0), 0x50, 64 * KiB); at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 1), 0x51, 64 * KiB); @@ -116,17 +116,17 @@ static void rainier_bmc_i2c_init(AspeedMachineState *= bmc) aspeed_create_pca9552(soc, 7, 0x33); aspeed_create_pca9552(soc, 7, 0x60); aspeed_create_pca9552(soc, 7, 0x61); - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 7), "dps310", 0x= 76); + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 7), "dps3= 10", 0x76); /* Bus 7: TODO si7021-a20@20 */ - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 7), TYPE_TMP105, + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 7), TYPE_= TMP105, 0x48); - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 7), "max31785", = 0x52); + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 7), "max3= 1785", 0x52); at24c_eeprom_init(aspeed_i2c_get_bus(&soc->i2c, 7), 0x50, 64 * KiB); at24c_eeprom_init(aspeed_i2c_get_bus(&soc->i2c, 7), 0x51, 64 * KiB); =20 - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 8), TYPE_TMP105, + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 8), TYPE_= TMP105, 0x48); - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 8), TYPE_TMP105, + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 8), TYPE_= TMP105, 0x4a); at24c_eeprom_init_rom(aspeed_i2c_get_bus(&soc->i2c, 8), 0x50, 64 * KiB, rainier_bb_fruid, rainier_bb_fruid_len= ); @@ -138,19 +138,19 @@ static void rainier_bmc_i2c_init(AspeedMachineState *= bmc) /* Bus 8: ucd90320@b */ /* Bus 8: ucd90320@c */ =20 - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 9), "tmp423", 0x= 4c); - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 9), "tmp423", 0x= 4d); + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 9), "tmp4= 23", 0x4c); + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 9), "tmp4= 23", 0x4d); at24c_eeprom_init(aspeed_i2c_get_bus(&soc->i2c, 9), 0x50, 128 * KiB); =20 - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 10), "tmp423", 0= x4c); - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 10), "tmp423", 0= x4d); + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 10), "tmp= 423", 0x4c); + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 10), "tmp= 423", 0x4d); at24c_eeprom_init(aspeed_i2c_get_bus(&soc->i2c, 10), 0x50, 128 * KiB); =20 - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 11), TYPE_TMP105, + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 11), TYPE= _TMP105, 0x48); - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 11), TYPE_TMP105, + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 11), TYPE= _TMP105, 0x49); - i2c_mux =3D i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 11), + i2c_mux =3D i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2= c, 11), "pca9546", 0x70); at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 0), 0x50, 64 * KiB); at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 1), 0x51, 64 * KiB); diff --git a/hw/arm/aspeed_ast27x0-fc.c b/hw/arm/aspeed_ast27x0-fc.c index 7d9fade68d..f21c842315 100644 --- a/hw/arm/aspeed_ast27x0-fc.c +++ b/hw/arm/aspeed_ast27x0-fc.c @@ -109,7 +109,7 @@ static bool ast2700fc_ca35_init(MachineState *machine, = Error **errp) /* * AST2700 EVB has a LM75 temperature sensor on I2C bus 0 at address 0= x4d. */ - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 0), "tmp105", 0x= 4d); + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 0), "tmp1= 05", 0x4d); =20 aspeed_board_init_flashes(&soc->fmc, AST2700FC_FMC_MODEL, 2, 0); aspeed_board_init_flashes(&soc->spi[0], AST2700FC_SPI_MODEL, 1, 2); diff --git a/hw/arm/aspeed_ast27x0_evb.c b/hw/arm/aspeed_ast27x0_evb.c index 0ff1bebeb0..a59714372d 100644 --- a/hw/arm/aspeed_ast27x0_evb.c +++ b/hw/arm/aspeed_ast27x0_evb.c @@ -24,7 +24,7 @@ static void ast2700_evb_i2c_init(AspeedMachineState *bmc) AspeedSoCState *soc =3D bmc->soc; =20 /* LM75 is compatible with TMP105 driver */ - i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 0), + i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 0), TYPE_TMP105, 0x4d); } =20 diff --git a/hw/arm/bananapi_m2u.c b/hw/arm/bananapi_m2u.c index 748db26d41..809c8bbc43 100644 --- a/hw/arm/bananapi_m2u.c +++ b/hw/arm/bananapi_m2u.c @@ -114,7 +114,7 @@ static void bpim2u_init(MachineState *machine) =20 /* Connect AXP221 */ i2c =3D I2C_BUS(qdev_get_child_bus(DEVICE(&r40->i2c0), "i2c")); - i2c_slave_create_simple(i2c, "axp221_pmu", 0x34); + i2c_slave_create_simple_orphan(i2c, "axp221_pmu", 0x34); =20 /* SDRAM */ memory_region_add_subregion(get_system_memory(), diff --git a/hw/arm/cubieboard.c b/hw/arm/cubieboard.c index 215741a194..7ce5179345 100644 --- a/hw/arm/cubieboard.c +++ b/hw/arm/cubieboard.c @@ -81,7 +81,7 @@ static void cubieboard_init(MachineState *machine) =20 /* Connect AXP 209 */ i2c =3D I2C_BUS(qdev_get_child_bus(DEVICE(&a10->i2c0), "i2c")); - i2c_slave_create_simple(i2c, "axp209_pmu", 0x34); + i2c_slave_create_simple_orphan(i2c, "axp209_pmu", 0x34); =20 /* Retrieve SD bus */ di =3D drive_get(IF_SD, 0, 0); diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c index 3bcdea7db8..baab159bfd 100644 --- a/hw/arm/musicpal.c +++ b/hw/arm/musicpal.c @@ -1327,7 +1327,7 @@ static void musicpal_init(MachineState *machine) qdev_connect_gpio_out(key_dev, i, qdev_get_gpio_in(dev, i + 15)); } =20 - wm8750_dev =3D i2c_slave_new(TYPE_WM8750, MP_WM_ADDR); + wm8750_dev =3D i2c_slave_new_orphan(TYPE_WM8750, MP_WM_ADDR); if (machine->audiodev) { qdev_prop_set_string(DEVICE(wm8750_dev), "audiodev", machine->audi= odev); } diff --git a/hw/arm/npcm7xx_boards.c b/hw/arm/npcm7xx_boards.c index 9e5d5f08f9..7b5cdd7191 100644 --- a/hw/arm/npcm7xx_boards.c +++ b/hw/arm/npcm7xx_boards.c @@ -198,13 +198,13 @@ static void npcm7xx_connect_pwm_fan(NPCM7xxState *soc= , SplitIRQ *splitter, static void npcm750_evb_i2c_init(NPCM7xxState *soc) { /* lm75 temperature sensor on SVB, tmp105 is compatible */ - i2c_slave_create_simple(npcm7xx_i2c_get_bus(soc, 0), "tmp105", 0x48); + i2c_slave_create_simple_orphan(npcm7xx_i2c_get_bus(soc, 0), "tmp105", = 0x48); /* lm75 temperature sensor on EB, tmp105 is compatible */ - i2c_slave_create_simple(npcm7xx_i2c_get_bus(soc, 1), "tmp105", 0x48); + i2c_slave_create_simple_orphan(npcm7xx_i2c_get_bus(soc, 1), "tmp105", = 0x48); /* tmp100 temperature sensor on EB, tmp105 is compatible */ - i2c_slave_create_simple(npcm7xx_i2c_get_bus(soc, 2), "tmp105", 0x48); + i2c_slave_create_simple_orphan(npcm7xx_i2c_get_bus(soc, 2), "tmp105", = 0x48); /* tmp100 temperature sensor on SVB, tmp105 is compatible */ - i2c_slave_create_simple(npcm7xx_i2c_get_bus(soc, 6), "tmp105", 0x48); + i2c_slave_create_simple_orphan(npcm7xx_i2c_get_bus(soc, 6), "tmp105", = 0x48); } =20 static void npcm750_evb_fan_init(NPCM7xxMachine *machine, NPCM7xxState *so= c) @@ -234,10 +234,10 @@ static void npcm750_evb_fan_init(NPCM7xxMachine *mach= ine, NPCM7xxState *soc) static void quanta_gsj_i2c_init(NPCM7xxState *soc) { /* GSJ machine have 4 max31725 temperature sensors, tmp105 is compatib= le. */ - i2c_slave_create_simple(npcm7xx_i2c_get_bus(soc, 1), "tmp105", 0x5c); - i2c_slave_create_simple(npcm7xx_i2c_get_bus(soc, 2), "tmp105", 0x5c); - i2c_slave_create_simple(npcm7xx_i2c_get_bus(soc, 3), "tmp105", 0x5c); - i2c_slave_create_simple(npcm7xx_i2c_get_bus(soc, 4), "tmp105", 0x5c); + i2c_slave_create_simple_orphan(npcm7xx_i2c_get_bus(soc, 1), "tmp105", = 0x5c); + i2c_slave_create_simple_orphan(npcm7xx_i2c_get_bus(soc, 2), "tmp105", = 0x5c); + i2c_slave_create_simple_orphan(npcm7xx_i2c_get_bus(soc, 3), "tmp105", = 0x5c); + i2c_slave_create_simple_orphan(npcm7xx_i2c_get_bus(soc, 4), "tmp105", = 0x5c); =20 at24c_eeprom_init(npcm7xx_i2c_get_bus(soc, 9), 0x55, 8192); at24c_eeprom_init(npcm7xx_i2c_get_bus(soc, 10), 0x55, 8192); @@ -253,7 +253,7 @@ static void quanta_gsj_i2c_init(NPCM7xxState *soc) * - ucd90160@6b */ =20 - i2c_slave_create_simple(npcm7xx_i2c_get_bus(soc, 15), "pca9548", 0x75); + i2c_slave_create_simple_orphan(npcm7xx_i2c_get_bus(soc, 15), "pca9548"= , 0x75); } =20 static void quanta_gsj_fan_init(NPCM7xxMachine *machine, NPCM7xxState *soc) @@ -333,29 +333,29 @@ static void kudo_bmc_i2c_init(NPCM7xxState *soc) { I2CSlave *i2c_mux; =20 - i2c_mux =3D i2c_slave_create_simple(npcm7xx_i2c_get_bus(soc, 1), + i2c_mux =3D i2c_slave_create_simple_orphan(npcm7xx_i2c_get_bus(soc, 1), TYPE_PCA9548, 0x75); =20 /* tmp105 is compatible with the lm75 */ - i2c_slave_create_simple(pca954x_i2c_get_bus(i2c_mux, 4), "tmp105", 0x5= c); - i2c_slave_create_simple(pca954x_i2c_get_bus(i2c_mux, 5), "tmp105", 0x5= c); - i2c_slave_create_simple(pca954x_i2c_get_bus(i2c_mux, 6), "tmp105", 0x5= c); - i2c_slave_create_simple(pca954x_i2c_get_bus(i2c_mux, 7), "tmp105", 0x5= c); + i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 4), "tmp10= 5", 0x5c); + i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 5), "tmp10= 5", 0x5c); + i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 6), "tmp10= 5", 0x5c); + i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 7), "tmp10= 5", 0x5c); =20 - i2c_slave_create_simple(npcm7xx_i2c_get_bus(soc, 1), TYPE_PCA9548, 0x7= 7); + i2c_slave_create_simple_orphan(npcm7xx_i2c_get_bus(soc, 1), TYPE_PCA95= 48, 0x77); =20 - i2c_slave_create_simple(npcm7xx_i2c_get_bus(soc, 4), TYPE_PCA9548, 0x7= 7); + i2c_slave_create_simple_orphan(npcm7xx_i2c_get_bus(soc, 4), TYPE_PCA95= 48, 0x77); =20 at24c_eeprom_init(npcm7xx_i2c_get_bus(soc, 4), 0x50, 8192); /* mbfru */ =20 - i2c_mux =3D i2c_slave_create_simple(npcm7xx_i2c_get_bus(soc, 13), + i2c_mux =3D i2c_slave_create_simple_orphan(npcm7xx_i2c_get_bus(soc, 13= ), TYPE_PCA9548, 0x77); =20 /* tmp105 is compatible with the lm75 */ - i2c_slave_create_simple(pca954x_i2c_get_bus(i2c_mux, 2), "tmp105", 0x4= 8); - i2c_slave_create_simple(pca954x_i2c_get_bus(i2c_mux, 3), "tmp105", 0x4= 9); - i2c_slave_create_simple(pca954x_i2c_get_bus(i2c_mux, 4), "tmp105", 0x4= 8); - i2c_slave_create_simple(pca954x_i2c_get_bus(i2c_mux, 5), "tmp105", 0x4= 9); + i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 2), "tmp10= 5", 0x48); + i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 3), "tmp10= 5", 0x49); + i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 4), "tmp10= 5", 0x48); + i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 5), "tmp10= 5", 0x49); =20 at24c_eeprom_init(npcm7xx_i2c_get_bus(soc, 14), 0x55, 8192); /* bmcfru= */ =20 diff --git a/hw/arm/npcm8xx_boards.c b/hw/arm/npcm8xx_boards.c index 10df2d614c..eb0248552f 100644 --- a/hw/arm/npcm8xx_boards.c +++ b/hw/arm/npcm8xx_boards.c @@ -159,7 +159,7 @@ static void npcm8xx_connect_pwm_fan(NPCM8xxState *soc, = SplitIRQ *splitter, static void npcm845_evb_i2c_init(NPCM8xxState *soc) { /* tmp100 temperature sensor on SVB, tmp105 is compatible */ - i2c_slave_create_simple(npcm8xx_i2c_get_bus(soc, 6), "tmp105", 0x48); + i2c_slave_create_simple_orphan(npcm8xx_i2c_get_bus(soc, 6), "tmp105", = 0x48); } =20 static void npcm845_evb_fan_init(NPCM8xxMachine *machine, NPCM8xxState *so= c) diff --git a/hw/arm/realview.c b/hw/arm/realview.c index 0642e35dd2..f37ddf8073 100644 --- a/hw/arm/realview.c +++ b/hw/arm/realview.c @@ -321,7 +321,7 @@ static void realview_init(MachineState *machine, =20 dev =3D sysbus_create_simple_orphan(TYPE_ARM_SBCON_I2C, 0x10002000, NU= LL); i2c =3D (I2CBus *)qdev_get_child_bus(dev, "i2c"); - i2c_slave_create_simple(i2c, "ds1338", 0x68); + i2c_slave_create_simple_orphan(i2c, "ds1338", 0x68); =20 /* Memory map for RealView Emulation Baseboard: */ /* 0x10000000 System registers. */ diff --git a/hw/arm/stellaris.c b/hw/arm/stellaris.c index 3f72cedf2e..f9d2a61f9c 100644 --- a/hw/arm/stellaris.c +++ b/hw/arm/stellaris.c @@ -1209,7 +1209,7 @@ static void stellaris_init(MachineState *ms, stellari= s_board_info *board) if (board->peripherals & BP_OLED_I2C) { I2CBus *bus =3D (I2CBus *)qdev_get_child_bus(i2c_dev[0], "i2c"); =20 - i2c_slave_create_simple(bus, "ssd0303", 0x3d); + i2c_slave_create_simple_orphan(bus, "ssd0303", 0x3d); } =20 for (i =3D 0; i < NUM_UART; i++) { diff --git a/hw/arm/versatilepb.c b/hw/arm/versatilepb.c index 81bd397b5d..dcc7b7debd 100644 --- a/hw/arm/versatilepb.c +++ b/hw/arm/versatilepb.c @@ -341,7 +341,7 @@ static void versatile_init(MachineState *machine, int b= oard_id) =20 dev =3D sysbus_create_simple_orphan(TYPE_ARM_SBCON_I2C, 0x10002000, NU= LL); i2c =3D (I2CBus *)qdev_get_child_bus(dev, "i2c"); - i2c_slave_create_simple(i2c, "ds1338", 0x68); + i2c_slave_create_simple_orphan(i2c, "ds1338", 0x68); =20 /* Add PL041 AACI Interface to the LM4549 codec */ pl041 =3D qdev_new_orphan("pl041"); diff --git a/hw/arm/vexpress.c b/hw/arm/vexpress.c index 5a0012cb4f..ffd3c52d4f 100644 --- a/hw/arm/vexpress.c +++ b/hw/arm/vexpress.c @@ -653,7 +653,7 @@ static void vexpress_common_init(MachineState *machine) =20 dev =3D sysbus_create_simple_orphan(TYPE_ARM_SBCON_I2C, map[VE_SERIALD= VI], NULL); i2c =3D (I2CBus *)qdev_get_child_bus(dev, "i2c"); - i2c_slave_create_simple(i2c, "sii9022", 0x39); + i2c_slave_create_simple_orphan(i2c, "sii9022", 0x39); =20 sysbus_create_simple_orphan("pl031", map[VE_RTC], pic[4]); /* RTC */ =20 diff --git a/hw/display/sii9022.c b/hw/display/sii9022.c index d00d3e9fc5..0bf49195d7 100644 --- a/hw/display/sii9022.c +++ b/hw/display/sii9022.c @@ -164,7 +164,7 @@ static void sii9022_realize(DeviceState *dev, Error **e= rrp) I2CBus *bus; =20 bus =3D I2C_BUS(qdev_get_parent_bus(dev)); - i2c_slave_create_simple(bus, TYPE_I2CDDC, 0x50); + i2c_slave_create_simple_orphan(bus, TYPE_I2CDDC, 0x50); } =20 static void sii9022_class_init(ObjectClass *klass, const void *data) diff --git a/hw/i2c/aspeed_i2c.c b/hw/i2c/aspeed_i2c.c index 27afcaecee..ac09e5f706 100644 --- a/hw/i2c/aspeed_i2c.c +++ b/hw/i2c/aspeed_i2c.c @@ -1518,7 +1518,7 @@ static void aspeed_i2c_bus_realize(DeviceState *dev, = Error **errp) sysbus_init_irq(SYS_BUS_DEVICE(dev), &s->irq); =20 s->bus =3D i2c_init_bus(dev, s->name); - s->slave =3D i2c_slave_create_simple(s->bus, TYPE_ASPEED_I2C_BUS_SLAVE, + s->slave =3D i2c_slave_create_simple_orphan(s->bus, TYPE_ASPEED_I2C_BU= S_SLAVE, 0xff); =20 memory_region_init_io(&s->mr, OBJECT(s), &aspeed_i2c_bus_ops, diff --git a/hw/i2c/core.c b/hw/i2c/core.c index 7803f6113c..fba21fdfad 100644 --- a/hw/i2c/core.c +++ b/hw/i2c/core.c @@ -364,7 +364,7 @@ const VMStateDescription vmstate_i2c_slave =3D { } }; =20 -I2CSlave *i2c_slave_new(const char *name, uint8_t addr) +I2CSlave *i2c_slave_new_orphan(const char *name, uint8_t addr) { DeviceState *dev; =20 @@ -373,14 +373,34 @@ I2CSlave *i2c_slave_new(const char *name, uint8_t add= r) return I2C_SLAVE(dev); } =20 +I2CSlave *i2c_slave_new(Object *parent, const char *id, + const char *type, uint8_t addr) +{ + DeviceState *dev; + + dev =3D qdev_new(parent, id, type); + qdev_prop_set_uint8(dev, "address", addr); + return I2C_SLAVE(dev); +} + +I2CSlave *i2c_slave_create_simple(Object *parent, const char *id, + I2CBus *bus, const char *type, + uint8_t addr) +{ + I2CSlave *dev =3D i2c_slave_new(parent, id, type, addr); + + qdev_realize(DEVICE(dev), BUS(bus), &error_abort); + return dev; +} + bool i2c_slave_realize_and_unref(I2CSlave *dev, I2CBus *bus, Error **errp) { return qdev_realize_and_unref(&dev->qdev, &bus->qbus, errp); } =20 -I2CSlave *i2c_slave_create_simple(I2CBus *bus, const char *name, uint8_t a= ddr) +I2CSlave *i2c_slave_create_simple_orphan(I2CBus *bus, const char *name, ui= nt8_t addr) { - I2CSlave *dev =3D i2c_slave_new(name, addr); + I2CSlave *dev =3D i2c_slave_new_orphan(name, addr); =20 i2c_slave_realize_and_unref(dev, bus, &error_abort); =20 diff --git a/hw/i3c/core.c b/hw/i3c/core.c index 2fb865490e..469d66f1fb 100644 --- a/hw/i3c/core.c +++ b/hw/i3c/core.c @@ -623,7 +623,7 @@ void legacy_i2c_end_transfer(I3CBus *bus) I2CSlave *legacy_i2c_device_create_simple(I3CBus *bus, const char *name, uint8_t addr) { - I2CSlave *dev =3D i2c_slave_new(name, addr); + I2CSlave *dev =3D i2c_slave_new_orphan(name, addr); =20 i2c_slave_realize_and_unref(dev, bus->i2c_bus, &error_abort); return dev; diff --git a/hw/nvram/eeprom_at24c.c b/hw/nvram/eeprom_at24c.c index 8b7f2dc13f..b6d314447c 100644 --- a/hw/nvram/eeprom_at24c.c +++ b/hw/nvram/eeprom_at24c.c @@ -148,7 +148,7 @@ I2CSlave *at24c_eeprom_init_rom(I2CBus *bus, uint8_t ad= dress, uint32_t rom_size, { EEPROMState *s; =20 - s =3D AT24C_EE(i2c_slave_new(TYPE_AT24C_EE, address)); + s =3D AT24C_EE(i2c_slave_new_orphan(TYPE_AT24C_EE, address)); =20 qdev_prop_set_uint32(DEVICE(s), "rom-size", rom_size); =20 diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c index 05c305b72c..85977c8b69 100644 --- a/hw/ppc/e500.c +++ b/hw/ppc/e500.c @@ -1025,7 +1025,7 @@ void ppce500_init(MachineState *machine) memory_region_add_subregion(ccsr_addr_space, MPC8544_I2C_REGS_OFFSET, sysbus_mmio_get_region(s, 0)); i2c =3D I2C_BUS(qdev_get_child_bus(dev, "i2c")); - i2c_slave_create_simple(i2c, "ds1338", RTC_REGS_OFFSET); + i2c_slave_create_simple_orphan(i2c, "ds1338", RTC_REGS_OFFSET); =20 /* eSDHC */ if (pmc->has_esdhc) { diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 8346613a68..0a22d854d7 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -2825,7 +2825,7 @@ static void pnv_rainier_i2c_init(PnvMachineState *pnv) * Add a PCA9552 I2C device for PCIe hotplug control * to engine 2, bus 1, address 0x63 */ - I2CSlave *dev =3D i2c_slave_create_simple(chip10->i2c[2].busses[1], + I2CSlave *dev =3D i2c_slave_create_simple_orphan(chip10->i2c[2].bu= sses[1], "pca9552", 0x63); =20 /* @@ -2843,7 +2843,7 @@ static void pnv_rainier_i2c_init(PnvMachineState *pnv) * Add a PCA9554 I2C device for cable card presence detection * to engine 2, bus 1, address 0x25 */ - i2c_slave_create_simple(chip10->i2c[2].busses[1], "pca9554", 0x25); + i2c_slave_create_simple_orphan(chip10->i2c[2].busses[1], "pca9554"= , 0x25); } } =20 diff --git a/hw/ppc/sam460ex.c b/hw/ppc/sam460ex.c index 0c4c6f6256..767a5eb596 100644 --- a/hw/ppc/sam460ex.c +++ b/hw/ppc/sam460ex.c @@ -345,7 +345,7 @@ static void sam460ex_init(MachineState *machine) spd_data[20] =3D 4; /* SO-DIMM module */ smbus_eeprom_init_one(i2c, 0x50, spd_data); /* RTC */ - i2c_slave_create_simple(i2c, "m41t80", 0x68); + i2c_slave_create_simple_orphan(i2c, "m41t80", 0x68); =20 dev =3D sysbus_create_simple_orphan(TYPE_PPC4xx_I2C, 0x4ef600800, qdev_get_gpio_in(uic[0], 3)); diff --git a/hw/riscv/tt_atlantis.c b/hw/riscv/tt_atlantis.c index d808bcc11c..9c63ec7e29 100644 --- a/hw/riscv/tt_atlantis.c +++ b/hw/riscv/tt_atlantis.c @@ -574,8 +574,8 @@ static void tt_atlantis_machine_init(MachineState *mach= ine) } =20 /* I2C peripherals: qemu specific */ - i2c_slave_create_simple(i2c_get_bus(s, 0), "ds1338", 0x6f); - i2c_slave_create_simple(i2c_get_bus(s, 4), "tmp105", 0x48); + i2c_slave_create_simple_orphan(i2c_get_bus(s, 0), "ds1338", 0x6f); + i2c_slave_create_simple_orphan(i2c_get_bus(s, 4), "tmp105", 0x48); =20 /* Load or create device tree */ if (machine->dtb) { diff --git a/include/hw/arm/aspeed.h b/include/hw/arm/aspeed.h index a00238ed74..e1c0323cb6 100644 --- a/include/hw/arm/aspeed.h +++ b/include/hw/arm/aspeed.h @@ -83,7 +83,7 @@ void aspeed_machine_class_init_cpus_defaults(MachineClass= *mc); * * Create and attach a PCA9552 LED controller device to the specified I2C = bus * of the given Aspeed SoC. The device is instantiated using - * i2c_slave_create_simple() with the PCA9552 device type. + * i2c_slave_create_simple_orphan() with the PCA9552 device type. */ void aspeed_create_pca9552(AspeedSoCState *soc, int bus_id, int addr); =20 @@ -95,7 +95,7 @@ void aspeed_create_pca9552(AspeedSoCState *soc, int bus_i= d, int addr); * * Create and attach a PCA9554 I/O expander to the specified I2C bus * of the given Aspeed SoC. The device is created via - * i2c_slave_create_simple() and returned as an #I2CSlave pointer. + * i2c_slave_create_simple_orphan() and returned as an #I2CSlave pointer. * * Returns: a pointer to the newly created #I2CSlave instance. */ diff --git a/include/hw/i2c/i2c.h b/include/hw/i2c/i2c.h index bcdc4f21a9..0bba1a7c20 100644 --- a/include/hw/i2c/i2c.h +++ b/include/hw/i2c/i2c.h @@ -163,7 +163,20 @@ bool i2c_scan_bus(I2CBus *bus, uint8_t address, bool b= roadcast, * properties to be set. Type @name must exist. The device still * needs to be realized. See qdev-core.h. */ -I2CSlave *i2c_slave_new(const char *name, uint8_t addr); +I2CSlave *i2c_slave_new_orphan(const char *name, uint8_t addr); + +/** + * Create a parented I2C slave device on the heap. + * @parent: the QOM parent + * @id: child<> property name + * @type: I2C slave device type name + * @addr: I2C address of the slave when put on a bus + * + * Like i2c_slave_new_orphan(), but the returned device is owned by + * @parent's child<> property. Pair with qdev_realize(). + */ +I2CSlave *i2c_slave_new(Object *parent, const char *id, + const char *type, uint8_t addr); =20 /** * Create and realize an I2C slave device on the heap. @@ -174,7 +187,24 @@ I2CSlave *i2c_slave_new(const char *name, uint8_t addr= ); * Create the device state structure, initialize it, put it on the * specified @bus, and drop the reference to it (the device is realized). */ -I2CSlave *i2c_slave_create_simple(I2CBus *bus, const char *name, uint8_t a= ddr); +I2CSlave *i2c_slave_create_simple_orphan(I2CBus *bus, const char *name, + uint8_t addr); + +/** + * Create, parent and realize an I2C slave device on the heap. + * @parent: the QOM parent + * @id: child<> property name + * @bus: I2C bus to put it on + * @type: I2C slave device type name + * @addr: I2C address of the slave when put on a bus + * + * Create the device state structure, add it as a child of @parent, + * put it on the specified @bus and realize it. The returned device + * is owned by @parent. + */ +I2CSlave *i2c_slave_create_simple(Object *parent, const char *id, + I2CBus *bus, const char *type, + uint8_t addr); =20 /** * Realize and drop a reference an I2C slave device @@ -189,10 +219,10 @@ I2CSlave *i2c_slave_create_simple(I2CBus *bus, const = char *name, uint8_t addr); * reference to it. * * This function is useful if you have created @dev via qdev_new_orphan(), - * i2c_slave_new() or i2c_slave_try_new() (which take a reference to + * i2c_slave_new_orphan() or i2c_slave_try_new() (which take a reference to * the device it returns to you), so that you can set properties on it * before realizing it. If you don't need to set properties then - * i2c_slave_create_simple() is probably better (as it does the create, + * i2c_slave_create_simple_orphan() is probably better (as it does the cre= ate, * init and realize in one step). * * If you are embedding the I2C slave into another QOM device and diff --git a/scripts/coccinelle/qom-parent/i2c-slave-new-orphan.cocci b/scr= ipts/coccinelle/qom-parent/i2c-slave-new-orphan.cocci new file mode 100644 index 0000000000..fdfb6a84c8 --- /dev/null +++ b/scripts/coccinelle/qom-parent/i2c-slave-new-orphan.cocci @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +// +// Rename i2c_slave_new()/i2c_slave_create_simple() to *_orphan() +// so that the short names can be reintroduced with a mandatory +// (parent, id, ...) signature. +// +// spatch --sp-file scripts/coccinelle/qom-parent/i2c-slave-new-orphan.coc= ci \ +// --in-place --include-headers --dir . + +@@ +@@ +- i2c_slave_new ++ i2c_slave_new_orphan + +@@ +@@ +- i2c_slave_create_simple ++ i2c_slave_create_simple_orphan --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784410793; cv=none; d=zohomail.com; s=zohoarc; b=YqTNBbkHvrMBL5kD0UWKE4ol9nUTAuy2MIl7i9ATQDIaQaz22jBzSyauDMxPSYID5d5KrdUYrt5uiTUne25pziREuDK1AOARbxSHs5Q8H17eGNrnlx5eMDQMOS/VQUyYft0Y0X2WFVCDzPLkONbARfZFMCYLYhoSXo1+RJkhsfQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784410793; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=3pAl7q7X7Mi85bRK3UReERNe4o7slUjmgc/yKmJpq6k=; b=jC5qL8QZAoRcX/dVDyz2ddTzQgYO+GVVCc83TgVGKHMZ4fQwa6/drnU7UJnh/DapHlewHfrRNFbXFpLU3AnBEsLdi1FbN7nC7p5ssAIfa0+8srRZvCjiu7gpWMQHxjvhEuK8JZ0Q7kC0Joh1O9nm/hWqUlg4FPm2dvm3YUfiY8c= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784410793186219.95565910295318; Sat, 18 Jul 2026 14:39:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCkp-0002HQ-CT; Sat, 18 Jul 2026 17:39:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCkb-0002Am-4t; Sat, 18 Jul 2026 17:39:14 -0400 Received: from pdx-out-005.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.13.214.179]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCkX-00024w-10; Sat, 18 Jul 2026 17:39:12 -0400 Received: from ip-10-5-12-219.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.12.219]) by internal-pdx-out-005.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:39:05 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.234:11725] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.35.17:2525] with esmtp (Farcaster) id b5984954-f75a-4ac8-bb7f-a2aa60ec4ba1; Sat, 18 Jul 2026 21:39:04 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA002.ant.amazon.com (10.250.64.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:39:04 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:38:55 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784410749; x=1815946749; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=3pAl7q7X7Mi85bRK3UReERNe4o7slUjmgc/yKmJpq6k=; b=KAyGJRKA4OUSuPnDBnAMuEWR4pZ3RA1Dj5qr4MR2ghuV7pOsEjM3dlo3 3S7BePtEwf2Pmcq3fpgkn6KMSPAbdbxkqp/myqftahnP6i8OLnk8tCH7x wjj6aEhoienMZWnRv85FzK2B8IOxUaZE5xHsiQTSI0m7AboSBEgwYRKHf A6FBjxaM3d8iluWLztM20A2Ia0mcdthmX8MQwelhUe+uur74l9/L0Vusj O4fY+UqdMO9baOgTpNXD6WCBwh3mrGCR0Kphj2YR+Uh3FiSLj06Gr7LJ5 LUXkHi7lYOSeKZMI6nmdO0xpJQF2V9ODvSuN1s/y/4fF8Iv0KfoM0kufT A==; X-CSE-ConnectionGUID: KKY+EocVTDSmZpCxwejytQ== X-CSE-MsgGUID: hbQR2xwMR0imEddNT73CdA== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23903572" X-Farcaster-Flow-ID: b5984954-f75a-4ac8-bb7f-a2aa60ec4ba1 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 008/137] ssi, usb: Make bus-layer creators take a QOM parent Date: Sat, 18 Jul 2026 21:34:43 +0000 Message-ID: <20260718213652.37673-9-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D046UWA001.ant.amazon.com (10.13.139.112) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.13.214.179; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-005.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784410796445158500 Content-Type: text/plain; charset="utf-8" Apply the rename-and-reintroduce treatment to the remaining bus-layer helpers that wrap qdev_new_orphan(): ssi_create_peripheral() -> ssi_create_peripheral_orphan() usb_create_simple() -> usb_create_simple_orphan() and reintroduce the short names with a leading (parent, id, ...) pair. Also add a usb_new(parent, id, type) helper for callers that need to set properties before realize. sd-bus, apple-desktop-bus, HDA, aux-bus and spapr-vio have no bus- layer creation wrapper: their onboard devices are open-coded via qdev_new_orphan() at each call site and will be converted directly to qdev_new(parent, id, type) in the per-subdirectory conversion patches. The mechanical rename part is generated by spatch --sp-file scripts/coccinelle/qom-parent/ssi-usb-orphan.cocci \ --in-place --include-headers --dir . or equivalently git ls-files '*.[ch]' '*.[ch].inc' '*.rst' '*.py' | \ grep -v '^subprojects/' | \ xargs sed -i \ 's/\bssi_create_peripheral\b/&_orphan/g; s/\busb_create_simple\b/&_orphan/g' AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/arm/stellaris.c | 2 +- hw/hppa/machine.c | 4 ++-- hw/mips/loongson3_virt.c | 4 ++-- hw/ppc/mac_newworld.c | 4 ++-- hw/ppc/sam460ex.c | 4 ++-- hw/ppc/spapr.c | 4 ++-- hw/riscv/sifive_u.c | 2 +- hw/sh4/r2d.c | 2 +- hw/ssi/ssi.c | 11 ++++++++++- hw/vmapple/vmapple.c | 4 ++-- include/hw/ssi/ssi.h | 6 ++++-- include/hw/usb/usb.h | 18 +++++++++++++++++- .../coccinelle/qom-parent/ssi-usb-orphan.cocci | 18 ++++++++++++++++++ 13 files changed, 64 insertions(+), 19 deletions(-) create mode 100644 scripts/coccinelle/qom-parent/ssi-usb-orphan.cocci diff --git a/hw/arm/stellaris.c b/hw/arm/stellaris.c index f9d2a61f9c..7a18d98477 100644 --- a/hw/arm/stellaris.c +++ b/hw/arm/stellaris.c @@ -1300,7 +1300,7 @@ static void stellaris_init(MachineState *ms, stellari= s_board_info *board) * - Make the ssd0323 OLED controller chipselect active-low */ bus =3D qdev_get_child_bus(dev, "ssi"); - sddev =3D ssi_create_peripheral(bus, "ssi-sd"); + sddev =3D ssi_create_peripheral_orphan(bus, "ssi-sd"); =20 dinfo =3D drive_get(IF_SD, 0, 0); blk =3D dinfo ? blk_by_legacy_dinfo(dinfo) : NULL; diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c index 91fe4845c4..44dab9225a 100644 --- a/hw/hppa/machine.c +++ b/hw/hppa/machine.c @@ -446,8 +446,8 @@ static void machine_HP_common_init_tail(MachineState *m= achine, PCIBus *pci_bus, pci_create_simple_orphan(pci_bus, -1, "pci-ohci"); usb_bus =3D USB_BUS(object_resolve_type_unambiguous(TYPE_USB_BUS, &error_abort)); - usb_create_simple(usb_bus, "usb-kbd"); - usb_create_simple(usb_bus, "usb-mouse"); + usb_create_simple_orphan(usb_bus, "usb-kbd"); + usb_create_simple_orphan(usb_bus, "usb-mouse"); } =20 /* register power switch emulation */ diff --git a/hw/mips/loongson3_virt.c b/hw/mips/loongson3_virt.c index 1729eb1c0b..f43c231004 100644 --- a/hw/mips/loongson3_virt.c +++ b/hw/mips/loongson3_virt.c @@ -468,8 +468,8 @@ static inline void loongson3_virt_devices_init(MachineS= tate *machine, pci_create_simple_orphan(pci_bus, -1, "pci-ohci"); usb_bus =3D USB_BUS(object_resolve_type_unambiguous(TYPE_USB_BUS, &error_abort)); - usb_create_simple(usb_bus, "usb-kbd"); - usb_create_simple(usb_bus, "usb-tablet"); + usb_create_simple_orphan(usb_bus, "usb-kbd"); + usb_create_simple_orphan(usb_bus, "usb-tablet"); } =20 pci_init_nic_devices(pci_bus, mc->default_nic); diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c index 0df953b9e1..72baeef60a 100644 --- a/hw/ppc/mac_newworld.c +++ b/hw/ppc/mac_newworld.c @@ -425,8 +425,8 @@ static void ppc_core99_init(MachineState *machine) =20 usb_bus =3D USB_BUS(object_resolve_type_unambiguous(TYPE_USB_B= US, &error_abort= )); - usb_create_simple(usb_bus, "usb-kbd"); - usb_create_simple(usb_bus, "usb-mouse"); + usb_create_simple_orphan(usb_bus, "usb-kbd"); + usb_create_simple_orphan(usb_bus, "usb-mouse"); } } =20 diff --git a/hw/ppc/sam460ex.c b/hw/ppc/sam460ex.c index 767a5eb596..39e704dfaa 100644 --- a/hw/ppc/sam460ex.c +++ b/hw/ppc/sam460ex.c @@ -398,8 +398,8 @@ static void sam460ex_init(MachineState *machine) sysbus_connect_irq(sbdev, 0, qdev_get_gpio_in(uic[2], 30)); usb_bus =3D USB_BUS(object_resolve_type_unambiguous(TYPE_USB_BUS, &error_abort)); - usb_create_simple(usb_bus, "usb-kbd"); - usb_create_simple(usb_bus, "usb-mouse"); + usb_create_simple_orphan(usb_bus, "usb-kbd"); + usb_create_simple_orphan(usb_bus, "usb-mouse"); =20 /* PCIe buses */ dev =3D qdev_new_orphan(TYPE_PPC460EX_PCIE_HOST); diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 4ead6ba664..e09b529ebc 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -3082,8 +3082,8 @@ static void spapr_machine_init(MachineState *machine) =20 usb_bus =3D USB_BUS(object_resolve_type_unambiguous(TYPE_USB_B= US, &error_abort= )); - usb_create_simple(usb_bus, "usb-kbd"); - usb_create_simple(usb_bus, "usb-mouse"); + usb_create_simple_orphan(usb_bus, "usb-kbd"); + usb_create_simple_orphan(usb_bus, "usb-mouse"); } } =20 diff --git a/hw/riscv/sifive_u.c b/hw/riscv/sifive_u.c index db6d984f94..47ce75ef11 100644 --- a/hw/riscv/sifive_u.c +++ b/hw/riscv/sifive_u.c @@ -606,7 +606,7 @@ static void sifive_u_machine_init(MachineState *machine) sysbus_connect_irq(SYS_BUS_DEVICE(&s->soc.spi0), 1, flash_cs); =20 /* Connect an SD card to SPI2 */ - sd_dev =3D ssi_create_peripheral(s->soc.spi2.spi, "ssi-sd"); + sd_dev =3D ssi_create_peripheral_orphan(s->soc.spi2.spi, "ssi-sd"); =20 sd_cs =3D qdev_get_gpio_in_named(sd_dev, SSI_GPIO_CS, 0); sysbus_connect_irq(SYS_BUS_DEVICE(&s->soc.spi2), 1, sd_cs); diff --git a/hw/sh4/r2d.c b/hw/sh4/r2d.c index 0b502ca392..6f8d270fae 100644 --- a/hw/sh4/r2d.c +++ b/hw/sh4/r2d.c @@ -320,7 +320,7 @@ static void r2d_init(MachineState *machine) /* USB keyboard */ usb_bus =3D USB_BUS(object_resolve_type_unambiguous(TYPE_USB_BUS, &error_abort)); - usb_create_simple(usb_bus, "usb-kbd"); + usb_create_simple_orphan(usb_bus, "usb-kbd"); =20 /* Todo: register on board registers */ memset(&boot_params, 0, sizeof(boot_params)); diff --git a/hw/ssi/ssi.c b/hw/ssi/ssi.c index b1935271f0..6031cde7b0 100644 --- a/hw/ssi/ssi.c +++ b/hw/ssi/ssi.c @@ -138,7 +138,16 @@ bool ssi_realize_and_unref(DeviceState *dev, SSIBus *b= us, Error **errp) return qdev_realize_and_unref(dev, &bus->parent_obj, errp); } =20 -DeviceState *ssi_create_peripheral(SSIBus *bus, const char *name) +DeviceState *ssi_create_peripheral(Object *parent, const char *id, + SSIBus *bus, const char *type) +{ + DeviceState *dev =3D qdev_new(parent, id, type); + + qdev_realize(dev, BUS(bus), &error_fatal); + return dev; +} + +DeviceState *ssi_create_peripheral_orphan(SSIBus *bus, const char *name) { DeviceState *dev =3D qdev_new_orphan(name); =20 diff --git a/hw/vmapple/vmapple.c b/hw/vmapple/vmapple.c index bf19faa04a..4d218748c2 100644 --- a/hw/vmapple/vmapple.c +++ b/hw/vmapple/vmapple.c @@ -425,8 +425,8 @@ static void create_pcie(VMAppleMachineState *vms) =20 usb_bus =3D USB_BUS(object_resolve_type_unambiguous(TYPE_USB_BUS, &error_fatal)); - usb_create_simple(usb_bus, "usb-kbd"); - usb_create_simple(usb_bus, "usb-tablet"); + usb_create_simple_orphan(usb_bus, "usb-kbd"); + usb_create_simple_orphan(usb_bus, "usb-tablet"); } } =20 diff --git a/include/hw/ssi/ssi.h b/include/hw/ssi/ssi.h index 153bf0cb9c..36ed002281 100644 --- a/include/hw/ssi/ssi.h +++ b/include/hw/ssi/ssi.h @@ -81,7 +81,9 @@ extern const VMStateDescription vmstate_ssi_peripheral; .offset =3D vmstate_offset_value(_state, _field, SSIPeripheral), \ } =20 -DeviceState *ssi_create_peripheral(SSIBus *bus, const char *name); +DeviceState *ssi_create_peripheral(Object *parent, const char *id, + SSIBus *bus, const char *type); +DeviceState *ssi_create_peripheral_orphan(SSIBus *bus, const char *name); /** * ssi_realize_and_unref: realize and unref an SSI peripheral * @dev: SSI peripheral to realize @@ -95,7 +97,7 @@ DeviceState *ssi_create_peripheral(SSIBus *bus, const cha= r *name); * This function is useful if you have created @dev via qdev_new_orphan() * (which takes a reference to the device it returns to you), so that * you can set properties on it before realizing it. If you don't need - * to set properties then ssi_create_peripheral() is probably better (as it + * to set properties then ssi_create_peripheral_orphan() is probably bette= r (as it * does the create, init and realize in one step). * * If you are embedding the SSI peripheral into another QOM device and diff --git a/include/hw/usb/usb.h b/include/hw/usb/usb.h index 6ef190523f..1ae1f40aa9 100644 --- a/include/hw/usb/usb.h +++ b/include/hw/usb/usb.h @@ -584,7 +584,23 @@ static inline bool usb_realize_and_unref(USBDevice *de= v, USBBus *bus, Error **er return qdev_realize_and_unref(&dev->qdev, &bus->qbus, errp); } =20 -static inline USBDevice *usb_create_simple(USBBus *bus, const char *name) +static inline USBDevice *usb_new(Object *parent, const char *id, + const char *type) +{ + return USB_DEVICE(qdev_new(parent, id, type)); +} + +static inline USBDevice *usb_create_simple(Object *parent, const char *id, + USBBus *bus, const char *type) +{ + USBDevice *dev =3D usb_new(parent, id, type); + + qdev_realize(DEVICE(dev), BUS(bus), &error_abort); + return dev; +} + +static inline USBDevice *usb_create_simple_orphan(USBBus *bus, + const char *name) { USBDevice *dev =3D USB_DEVICE(qdev_new_orphan(name)); =20 diff --git a/scripts/coccinelle/qom-parent/ssi-usb-orphan.cocci b/scripts/c= occinelle/qom-parent/ssi-usb-orphan.cocci new file mode 100644 index 0000000000..7d201536d8 --- /dev/null +++ b/scripts/coccinelle/qom-parent/ssi-usb-orphan.cocci @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +// +// Rename ssi_create_peripheral()/usb_create_simple() to *_orphan() +// so that the short names can be reintroduced with a mandatory +// (parent, id, ...) signature. +// +// spatch --sp-file scripts/coccinelle/qom-parent/ssi-usb-orphan.cocci \ +// --in-place --include-headers --dir . + +@@ +@@ +- ssi_create_peripheral ++ ssi_create_peripheral_orphan + +@@ +@@ +- usb_create_simple ++ usb_create_simple_orphan --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784410950; cv=none; d=zohomail.com; s=zohoarc; b=DrOjt4WzgEdTuGjWHzeymeU2DigfcfMwKKBjd7Vy2jZI30hrIsZmPnjkSdZJkKY5SJH6Tqjj100tUiRSo4GknPlVAtPRzsOufXIiROA6/Up9w1nUTLWT3t6IBKTM8sokCuEr3lYhytFH6151TGSV7o/B3yq7WEkiwGGrIiWSrqo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784410950; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=VPXZ5oufGK6iiKeqRU37vBXb9Gf3bdR2KTWvztToIpo=; b=e2/AWBCbVZL5fh627rN3QI4lcsUFkq5dB2WUM95s46j7tLs5gAKHa0gkdhETq1id7U8GSaINmDs55qaKNdJBCyrPhqjnKMw3LsAlEsKEwuNg080Z8dwuvzycV0jhUOpOXVI7qUZNjGBqUFu0xCKM69wcs4jeyafqD43BaVVWaKQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784410950859764.2300918578743; Sat, 18 Jul 2026 14:42:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlClF-00030s-LA; Sat, 18 Jul 2026 17:39:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCl5-0002ny-GL; Sat, 18 Jul 2026 17:39:44 -0400 Received: from pdx-out-005.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.13.214.179]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCl1-00025p-Op; Sat, 18 Jul 2026 17:39:43 -0400 Received: from ip-10-5-12-219.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.12.219]) by internal-pdx-out-005.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:39:36 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.104:29025] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.19.34:2525] with esmtp (Farcaster) id 7687f1f1-42b7-4909-adea-36dbff4460f1; Sat, 18 Jul 2026 21:39:35 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB001.ant.amazon.com (10.250.64.248) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:39:35 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:39:26 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784410779; x=1815946779; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=VPXZ5oufGK6iiKeqRU37vBXb9Gf3bdR2KTWvztToIpo=; b=bhgVNw51cp43CS6+46Lg+MXW/sKBxr7Z3WtNz7CqqpRE6snuBNa23ypu hLpAqC9UTgL+KVgsAl8sfGt1Vx222oniCbPEK3NeabnSS0kNG/uN6gOSe ckTAEmzvXY4LGhq+98+G62PeBV7iOe54MR2NSsmzPXP0eDb5cPzYX8CFQ F/SxJSUz7kTtktlGdT71ACMDQtX1FT538hj/7TYry7g/9dWO6q/YXh0xs 52OFEl/9Y5fNLOhLuqrl0RvbZIUp8wzpO4tZS6aL0oS6nvWk31nDADRFV VDpZ6yYSZvJNwyqwFxDHa/BWdbhLhn1HBUDiPb7DGZq+IquGT2ZqHS48z Q==; X-CSE-ConnectionGUID: YdAJvaFlQ3CsWSNCVBs2WQ== X-CSE-MsgGUID: b2AUPqtNTWaN0Uu2rGcgpQ== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23903583" X-Farcaster-Flow-ID: 7687f1f1-42b7-4909-adea-36dbff4460f1 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 009/137] cpu: Make cpu_create() take a QOM parent Date: Sat, 18 Jul 2026 21:34:44 +0000 Message-ID: <20260718213652.37673-10-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D046UWB003.ant.amazon.com (10.13.139.174) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.13.214.179; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-005.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784410951481158500 Content-Type: text/plain; charset="utf-8" CPUs are the single largest source of orphans in /machine/unattached because virtually every board that isn't SoC-based creates them via cpu_create(), which calls object_new() with no parent. This is also where the user-visible garbage in query-cpus-fast comes from: qom_path reads /machine/unattached/device[N] instead of /machine/cpu[N]. Apply the same rename-and-reintroduce treatment: mechanically rename cpu_create() to cpu_create_orphan() and reintroduce cpu_create() with a leading (parent, id, ...) pair built on object_new_child(). On realize failure the parented variant unparents (rather than unrefs) since the sole reference is held by the parent. The mechanical rename part is generated by spatch --sp-file \ scripts/coccinelle/qom-parent/cpu-create-orphan.cocci \ --in-place --include-headers --dir . or equivalently git ls-files '*.[ch]' '*.[ch].inc' '*.rst' '*.py' | \ grep -v '^subprojects/' | \ xargs sed -i 's/\bcpu_create\b/cpu_create_orphan/g' AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- bsd-user/main.c | 2 +- hw/alpha/dp264.c | 2 +- hw/arm/musicpal.c | 2 +- hw/arm/omap1.c | 2 +- hw/arm/strongarm.c | 2 +- hw/core/cpu-common.c | 14 +++++++++++++- hw/core/null-machine.c | 2 +- hw/hppa/machine.c | 2 +- hw/m68k/an5206.c | 2 +- hw/m68k/mcf5208.c | 2 +- hw/m68k/next-cube.c | 2 +- hw/m68k/virt.c | 2 +- hw/or1k/or1k-sim.c | 2 +- hw/or1k/virt.c | 2 +- hw/ppc/amigaone.c | 2 +- hw/ppc/mac_newworld.c | 2 +- hw/ppc/mac_oldworld.c | 2 +- hw/ppc/pegasos.c | 2 +- hw/ppc/ppc440_bamboo.c | 2 +- hw/ppc/prep.c | 2 +- hw/ppc/sam460ex.c | 2 +- hw/ppc/virtex_ml507.c | 2 +- hw/sh4/r2d.c | 2 +- hw/tricore/tricore_testboard.c | 2 +- hw/xtensa/sim.c | 2 +- hw/xtensa/xtfpga.c | 2 +- include/hw/core/cpu.h | 15 ++++++++++++++- linux-user/main.c | 4 ++-- .../coccinelle/qom-parent/cpu-create-orphan.cocci | 13 +++++++++++++ 29 files changed, 67 insertions(+), 29 deletions(-) create mode 100644 scripts/coccinelle/qom-parent/cpu-create-orphan.cocci diff --git a/bsd-user/main.c b/bsd-user/main.c index 694481ae3e..5269ea42a5 100644 --- a/bsd-user/main.c +++ b/bsd-user/main.c @@ -474,7 +474,7 @@ int main(int argc, char **argv) set_preferred_target_page_bits(ctz32(host_page_size)); finalize_target_page_bits(); =20 - cpu =3D cpu_create(cpu_type); + cpu =3D cpu_create_orphan(cpu_type); env =3D cpu_env(cpu); cpu_reset(cpu); thread_cpu =3D cpu; diff --git a/hw/alpha/dp264.c b/hw/alpha/dp264.c index b07dcebaa0..512b270838 100644 --- a/hw/alpha/dp264.c +++ b/hw/alpha/dp264.c @@ -65,7 +65,7 @@ static void clipper_init(MachineState *machine) /* Create up to 4 cpus. */ memset(cpus, 0, sizeof(cpus)); for (i =3D 0; i < smp_cpus; ++i) { - cpus[i] =3D ALPHA_CPU(cpu_create(machine->cpu_type)); + cpus[i] =3D ALPHA_CPU(cpu_create_orphan(machine->cpu_type)); } =20 /* diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c index baab159bfd..a07359813e 100644 --- a/hw/arm/musicpal.c +++ b/hw/arm/musicpal.c @@ -1232,7 +1232,7 @@ static void musicpal_init(MachineState *machine) exit(EXIT_FAILURE); } =20 - cpu =3D ARM_CPU(cpu_create(machine->cpu_type)); + cpu =3D ARM_CPU(cpu_create_orphan(machine->cpu_type)); =20 memory_region_add_subregion(address_space_mem, 0, machine->ram); =20 diff --git a/hw/arm/omap1.c b/hw/arm/omap1.c index 9115d12fad..eefa2e441a 100644 --- a/hw/arm/omap1.c +++ b/hw/arm/omap1.c @@ -3749,7 +3749,7 @@ struct omap_mpu_state_s *omap310_mpu_init(MemoryRegio= n *dram, MemoryRegion *system_memory =3D get_system_memory(); =20 /* Core */ - s->cpu =3D ARM_CPU(cpu_create(cpu_type)); + s->cpu =3D ARM_CPU(cpu_create_orphan(cpu_type)); s->sdram_size =3D memory_region_size(dram); s->sram_size =3D OMAP15XX_SRAM_SIZE; =20 diff --git a/hw/arm/strongarm.c b/hw/arm/strongarm.c index f67aaa23ed..1704db8baa 100644 --- a/hw/arm/strongarm.c +++ b/hw/arm/strongarm.c @@ -1620,7 +1620,7 @@ StrongARMState *sa1110_init(const char *cpu_type) exit(1); } =20 - s->cpu =3D ARM_CPU(cpu_create(cpu_type)); + s->cpu =3D ARM_CPU(cpu_create_orphan(cpu_type)); =20 s->pic =3D sysbus_create_varargs_orphan("strongarm_pic", 0x90050000, qdev_get_gpio_in(DEVICE(s->cpu), ARM_CPU_IRQ), diff --git a/hw/core/cpu-common.c b/hw/core/cpu-common.c index e314f916f8..eef243c1ad 100644 --- a/hw/core/cpu-common.c +++ b/hw/core/cpu-common.c @@ -56,7 +56,19 @@ bool cpu_exists(int64_t id) return !!cpu_by_arch_id(id); } =20 -CPUState *cpu_create(const char *typename) +CPUState *cpu_create(Object *parent, const char *id, const char *typename) +{ + Error *err =3D NULL; + CPUState *cpu =3D CPU(object_new_child(parent, id, typename)); + if (!qdev_realize(DEVICE(cpu), NULL, &err)) { + error_report_err(err); + object_unparent(OBJECT(cpu)); + exit(EXIT_FAILURE); + } + return cpu; +} + +CPUState *cpu_create_orphan(const char *typename) { Error *err =3D NULL; CPUState *cpu =3D CPU(object_new(typename)); diff --git a/hw/core/null-machine.c b/hw/core/null-machine.c index f132a7b89b..7cc4b9ab3b 100644 --- a/hw/core/null-machine.c +++ b/hw/core/null-machine.c @@ -25,7 +25,7 @@ static void machine_none_init(MachineState *mch) =20 /* Initialize CPU (if user asked for it) */ if (mch->cpu_type) { - cpu =3D cpu_create(mch->cpu_type); + cpu =3D cpu_create_orphan(mch->cpu_type); if (!cpu) { error_report("Unable to initialize CPU"); exit(1); diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c index 44dab9225a..a4b8e9ee77 100644 --- a/hw/hppa/machine.c +++ b/hw/hppa/machine.c @@ -298,7 +298,7 @@ static TranslateFn *machine_HP_common_init_cpus(Machine= State *machine) =20 /* Create CPUs. */ for (unsigned int i =3D 0; i < smp_cpus; i++) { - cpu[i] =3D HPPA_CPU(cpu_create(machine->cpu_type)); + cpu[i] =3D HPPA_CPU(cpu_create_orphan(machine->cpu_type)); } =20 /* Initialize memory */ diff --git a/hw/m68k/an5206.c b/hw/m68k/an5206.c index f29c3b5226..b649605140 100644 --- a/hw/m68k/an5206.c +++ b/hw/m68k/an5206.c @@ -46,7 +46,7 @@ static void an5206_init(MachineState *machine) MemoryRegion *address_space_mem =3D get_system_memory(); MemoryRegion *sram =3D g_new(MemoryRegion, 1); =20 - cpu =3D M68K_CPU(cpu_create(machine->cpu_type)); + cpu =3D M68K_CPU(cpu_create_orphan(machine->cpu_type)); env =3D &cpu->env; =20 /* Initialize CPU registers. */ diff --git a/hw/m68k/mcf5208.c b/hw/m68k/mcf5208.c index a8068c91f2..d79ec173e6 100644 --- a/hw/m68k/mcf5208.c +++ b/hw/m68k/mcf5208.c @@ -288,7 +288,7 @@ static void mcf5208evb_init(MachineState *machine) MemoryRegion *sram =3D g_new(MemoryRegion, 1); DeviceState *intc; =20 - cpu =3D M68K_CPU(cpu_create(machine->cpu_type)); + cpu =3D M68K_CPU(cpu_create_orphan(machine->cpu_type)); env =3D &cpu->env; =20 /* Initialize CPU registers. */ diff --git a/hw/m68k/next-cube.c b/hw/m68k/next-cube.c index 0c1f5b4481..d97168d9f3 100644 --- a/hw/m68k/next-cube.c +++ b/hw/m68k/next-cube.c @@ -1260,7 +1260,7 @@ static void next_cube_init(MachineState *machine) DeviceState *pcdev; =20 /* Initialize the cpu core */ - cpu =3D M68K_CPU(cpu_create(machine->cpu_type)); + cpu =3D M68K_CPU(cpu_create_orphan(machine->cpu_type)); if (!cpu) { error_report("Unable to find m68k CPU definition"); exit(1); diff --git a/hw/m68k/virt.c b/hw/m68k/virt.c index e2af0196e8..64ac8c8166 100644 --- a/hw/m68k/virt.c +++ b/hw/m68k/virt.c @@ -145,7 +145,7 @@ static void virt_init(MachineState *machine) reset_info =3D g_new0(ResetInfo, 1); =20 /* init CPUs */ - cpu =3D M68K_CPU(cpu_create(machine->cpu_type)); + cpu =3D M68K_CPU(cpu_create_orphan(machine->cpu_type)); =20 reset_info->cpu =3D cpu; qemu_register_reset(main_cpu_reset, reset_info); diff --git a/hw/or1k/or1k-sim.c b/hw/or1k/or1k-sim.c index bd668d0e47..6962313315 100644 --- a/hw/or1k/or1k-sim.c +++ b/hw/or1k/or1k-sim.c @@ -299,7 +299,7 @@ static void openrisc_sim_init(MachineState *machine) =20 assert(smp_cpus >=3D 1 && smp_cpus <=3D OR1KSIM_CPUS_MAX); for (n =3D 0; n < smp_cpus; n++) { - cpus[n] =3D OPENRISC_CPU(cpu_create(machine->cpu_type)); + cpus[n] =3D OPENRISC_CPU(cpu_create_orphan(machine->cpu_type)); if (cpus[n] =3D=3D NULL) { fprintf(stderr, "Unable to find CPU definition!\n"); exit(1); diff --git a/hw/or1k/virt.c b/hw/or1k/virt.c index 9451a0b7df..f222efafde 100644 --- a/hw/or1k/virt.c +++ b/hw/or1k/virt.c @@ -481,7 +481,7 @@ static void openrisc_virt_init(MachineState *machine) =20 assert(smp_cpus >=3D 1 && smp_cpus <=3D VIRT_CPUS_MAX); for (n =3D 0; n < smp_cpus; n++) { - cpus[n] =3D OPENRISC_CPU(cpu_create(machine->cpu_type)); + cpus[n] =3D OPENRISC_CPU(cpu_create_orphan(machine->cpu_type)); if (cpus[n] =3D=3D NULL) { fprintf(stderr, "Unable to find CPU definition!\n"); exit(1); diff --git a/hw/ppc/amigaone.c b/hw/ppc/amigaone.c index c6b331ff16..80802d42c6 100644 --- a/hw/ppc/amigaone.c +++ b/hw/ppc/amigaone.c @@ -279,7 +279,7 @@ static void amigaone_init(MachineState *machine) struct boot_info *bi =3D NULL; =20 /* init CPU */ - cpu =3D POWERPC_CPU(cpu_create(machine->cpu_type)); + cpu =3D POWERPC_CPU(cpu_create_orphan(machine->cpu_type)); env =3D &cpu->env; if (PPC_INPUT(env) !=3D PPC_FLAGS_INPUT_6xx) { error_report("Incompatible CPU, only 6xx bus supported"); diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c index 72baeef60a..8c46ecd6d1 100644 --- a/hw/ppc/mac_newworld.c +++ b/hw/ppc/mac_newworld.c @@ -159,7 +159,7 @@ static void ppc_core99_init(MachineState *machine) =20 /* init CPUs */ for (i =3D 0; i < machine->smp.cpus; i++) { - cpu =3D POWERPC_CPU(cpu_create(machine->cpu_type)); + cpu =3D POWERPC_CPU(cpu_create_orphan(machine->cpu_type)); env =3D &cpu->env; =20 /* Set time-base frequency to 100 Mhz */ diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c index e6c5830c38..4c5746b754 100644 --- a/hw/ppc/mac_oldworld.c +++ b/hw/ppc/mac_oldworld.c @@ -111,7 +111,7 @@ static void ppc_heathrow_init(MachineState *machine) =20 /* init CPUs */ for (i =3D 0; i < machine->smp.cpus; i++) { - cpu =3D POWERPC_CPU(cpu_create(machine->cpu_type)); + cpu =3D POWERPC_CPU(cpu_create_orphan(machine->cpu_type)); env =3D &cpu->env; =20 /* Set time-base frequency to 16.6 Mhz */ diff --git a/hw/ppc/pegasos.c b/hw/ppc/pegasos.c index 0030068ab3..bba73f60c8 100644 --- a/hw/ppc/pegasos.c +++ b/hw/ppc/pegasos.c @@ -163,7 +163,7 @@ static void pegasos_init(MachineState *machine) uint8_t *spd_data; =20 /* init CPU */ - pm->cpu =3D POWERPC_CPU(cpu_create(machine->cpu_type)); + pm->cpu =3D POWERPC_CPU(cpu_create_orphan(machine->cpu_type)); env =3D &pm->cpu->env; if (PPC_INPUT(env) !=3D PPC_FLAGS_INPUT_6xx) { error_report("Incompatible CPU, only 6xx bus supported"); diff --git a/hw/ppc/ppc440_bamboo.c b/hw/ppc/ppc440_bamboo.c index 7a6c3ebec5..68c7328129 100644 --- a/hw/ppc/ppc440_bamboo.c +++ b/hw/ppc/ppc440_bamboo.c @@ -148,7 +148,7 @@ static void bamboo_init(MachineState *machine) exit(EXIT_FAILURE); } =20 - cpu =3D POWERPC_CPU(cpu_create(machine->cpu_type)); + cpu =3D POWERPC_CPU(cpu_create_orphan(machine->cpu_type)); env =3D &cpu->env; =20 if (env->mmu_model !=3D POWERPC_MMU_BOOKE) { diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c index 32a28bc12a..c861e022f0 100644 --- a/hw/ppc/prep.c +++ b/hw/ppc/prep.c @@ -257,7 +257,7 @@ static void ibm_40p_init(MachineState *machine) } =20 /* init CPU */ - cpu =3D POWERPC_CPU(cpu_create(machine->cpu_type)); + cpu =3D POWERPC_CPU(cpu_create_orphan(machine->cpu_type)); env =3D &cpu->env; if (PPC_INPUT(env) !=3D PPC_FLAGS_INPUT_6xx) { error_report("only 6xx bus is supported on this machine"); diff --git a/hw/ppc/sam460ex.c b/hw/ppc/sam460ex.c index 39e704dfaa..d23d2c2bd8 100644 --- a/hw/ppc/sam460ex.c +++ b/hw/ppc/sam460ex.c @@ -260,7 +260,7 @@ static void sam460ex_init(MachineState *machine) uint8_t *spd_data; int success; =20 - cpu =3D POWERPC_CPU(cpu_create(machine->cpu_type)); + cpu =3D POWERPC_CPU(cpu_create_orphan(machine->cpu_type)); env =3D &cpu->env; if (env->mmu_model !=3D POWERPC_MMU_BOOKE) { error_report("Only MMU model BookE is supported by this machine."); diff --git a/hw/ppc/virtex_ml507.c b/hw/ppc/virtex_ml507.c index d7fd72d353..9163d8acf8 100644 --- a/hw/ppc/virtex_ml507.c +++ b/hw/ppc/virtex_ml507.c @@ -76,7 +76,7 @@ static PowerPCCPU *ppc440_init_xilinx(const char *cpu_typ= e, uint32_t sysclk) DeviceState *uicdev; SysBusDevice *uicsbd; =20 - cpu =3D POWERPC_CPU(cpu_create(cpu_type)); + cpu =3D POWERPC_CPU(cpu_create_orphan(cpu_type)); env =3D &cpu->env; =20 ppc_booke_timers_init(cpu, sysclk, 0/* no flags */); diff --git a/hw/sh4/r2d.c b/hw/sh4/r2d.c index 6f8d270fae..9f313a77cb 100644 --- a/hw/sh4/r2d.c +++ b/hw/sh4/r2d.c @@ -251,7 +251,7 @@ static void r2d_init(MachineState *machine) USBBus *usb_bus; r2d_fpga_t *fpga; =20 - cpu =3D SUPERH_CPU(cpu_create(machine->cpu_type)); + cpu =3D SUPERH_CPU(cpu_create_orphan(machine->cpu_type)); env =3D &cpu->env; =20 reset_info =3D g_new0(ResetData, 1); diff --git a/hw/tricore/tricore_testboard.c b/hw/tricore/tricore_testboard.c index afed9ad0ae..69794d3445 100644 --- a/hw/tricore/tricore_testboard.c +++ b/hw/tricore/tricore_testboard.c @@ -67,7 +67,7 @@ static void tricore_testboard_init(MachineState *machine,= int board_id) MemoryRegion *pcp_data =3D g_new(MemoryRegion, 1); MemoryRegion *pcp_text =3D g_new(MemoryRegion, 1); =20 - cpu =3D TRICORE_CPU(cpu_create(machine->cpu_type)); + cpu =3D TRICORE_CPU(cpu_create_orphan(machine->cpu_type)); env =3D &cpu->env; memory_region_init_ram(ext_cram, NULL, "powerlink_ext_c.ram", 2 * MiB, &error_fatal); diff --git a/hw/xtensa/sim.c b/hw/xtensa/sim.c index 835cd04fe0..17245a0388 100644 --- a/hw/xtensa/sim.c +++ b/hw/xtensa/sim.c @@ -63,7 +63,7 @@ XtensaCPU *xtensa_sim_common_init(MachineState *machine) int n; =20 for (n =3D 0; n < machine->smp.cpus; n++) { - cpu =3D XTENSA_CPU(cpu_create(machine->cpu_type)); + cpu =3D XTENSA_CPU(cpu_create_orphan(machine->cpu_type)); env =3D &cpu->env; =20 env->sregs[PRID] =3D n; diff --git a/hw/xtensa/xtfpga.c b/hw/xtensa/xtfpga.c index 4b1009a398..0ee7350945 100644 --- a/hw/xtensa/xtfpga.c +++ b/hw/xtensa/xtfpga.c @@ -250,7 +250,7 @@ static void xtfpga_init(const XtfpgaBoardDesc *board, M= achineState *machine) for (n =3D 0; n < smp_cpus; n++) { CPUXtensaState *cenv =3D NULL; =20 - cpu =3D XTENSA_CPU(cpu_create(machine->cpu_type)); + cpu =3D XTENSA_CPU(cpu_create_orphan(machine->cpu_type)); cenv =3D &cpu->env; if (!env) { env =3D cenv; diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h index b54035fb13..1b2ec1ab1e 100644 --- a/include/hw/core/cpu.h +++ b/include/hw/core/cpu.h @@ -846,13 +846,26 @@ char *cpu_model_from_type(const char *typename); =20 /** * cpu_create: + * @parent: the QOM parent (usually the machine or SoC container) + * @id: child<> property name, e.g. "cpu[0]" or "cpu[*]" + * @typename: the CPU type + * + * Instantiates a CPU as a child of @parent under @id and realizes it. + * The returned CPU is owned by @parent. + * + * Returns: A #CPUState. Failure to realize is fatal. + */ +CPUState *cpu_create(Object *parent, const char *id, const char *typename); + +/** + * cpu_create_orphan: * @typename: The CPU type. * * Instantiates a CPU and realizes the CPU. * * Returns: A #CPUState or %NULL if an error occurred. */ -CPUState *cpu_create(const char *typename); +CPUState *cpu_create_orphan(const char *typename); =20 /** * parse_cpu_option: diff --git a/linux-user/main.c b/linux-user/main.c index 60a695b7ca..966322dbb3 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -235,7 +235,7 @@ void init_task_state(TaskState *ts) CPUArchState *cpu_copy(CPUArchState *env) { CPUState *cpu =3D env_cpu(env); - CPUState *new_cpu =3D cpu_create(cpu_type); + CPUState *new_cpu =3D cpu_create_orphan(cpu_type); CPUArchState *new_env =3D cpu_env(new_cpu); CPUBreakpoint *bp; =20 @@ -817,7 +817,7 @@ int main(int argc, char **argv, char **envp) set_preferred_target_page_bits(ctz32(host_page_size)); finalize_target_page_bits(); =20 - cpu =3D cpu_create(cpu_type); + cpu =3D cpu_create_orphan(cpu_type); env =3D cpu_env(cpu); cpu_reset(cpu); thread_cpu =3D cpu; diff --git a/scripts/coccinelle/qom-parent/cpu-create-orphan.cocci b/script= s/coccinelle/qom-parent/cpu-create-orphan.cocci new file mode 100644 index 0000000000..c268c05b0c --- /dev/null +++ b/scripts/coccinelle/qom-parent/cpu-create-orphan.cocci @@ -0,0 +1,13 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +// +// Rename cpu_create() to cpu_create_orphan() so that the short +// name can be reintroduced with a mandatory (parent, id, type) +// signature. +// +// spatch --sp-file scripts/coccinelle/qom-parent/cpu-create-orphan.cocci \ +// --in-place --include-headers --dir . + +@@ +@@ +- cpu_create ++ cpu_create_orphan --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784410862; cv=none; d=zohomail.com; s=zohoarc; b=CWMkWbqmgU1d89WlCa82RYBkOu/u6l9Arr7BeLi+USs6Jq/VU8/8GPKaNiY6DpB/nnTUWowzQRcTfQVIBC4YbYVs0GUwK1hlxUhYqGFTD8TP88tkc1IZtsxqzLc3eEBKfG/FkLAPW/deEGF5Zlt7dH8HcZbzL+SDUafizeaO/3o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784410862; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=v+uBAwUYXVO6GGxW+38vqGZjZ8537QMzvm81iwIVQj0=; b=Z5a1h3UCAbvRaDofKc130wJXpoecs4rQw329NjWkY1rq2iiEzte5iGbp5IAr9c0fIvqhLjQjSV8ka6LFcyukapgVh+ax/02diN+RoyuT6c4M6HXEbqKo8JBQrvYIG++2WlwgEX5s67ORMG0OdaGmv+yVtzHVWPEvzea0lHBdGZs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784410862026485.51304940730176; Sat, 18 Jul 2026 14:41:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlClU-0003HD-FY; Sat, 18 Jul 2026 17:40:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlClD-00031L-Uo; Sat, 18 Jul 2026 17:39:53 -0400 Received: from pdx-out-015.esa.us-west-2.outbound.mail-perimeter.amazon.com ([50.112.246.219]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlClB-00026U-AR; Sat, 18 Jul 2026 17:39:50 -0400 Received: from ip-10-5-6-203.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.6.203]) by internal-pdx-out-015.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:39:45 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.51:6838] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.30.230:2525] with esmtp (Farcaster) id 2ee1502f-18b7-4f1a-937b-c5782ec79801; Sat, 18 Jul 2026 21:39:45 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC002.ant.amazon.com (10.250.64.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:39:45 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:39:35 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784410789; x=1815946789; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=v+uBAwUYXVO6GGxW+38vqGZjZ8537QMzvm81iwIVQj0=; b=MHlEZxMXv3OF2eGqhDaAdy6ovk5cIbe2Dr5scJ3U+0sFrxjpjsJ471kH QscYdUSxFHFNdPT6re0FVdNnzor/xxW2bZgNexUIt1PTBlXt4nsPpt0E1 Angkqh/xmWH8BM3tkacgyqrwjzt3ikxCZE/eOqC6b1UV14sHUY2pdrk5i qbyndFpT27A2XQ/Bo45UwuLOa36sjfeVdHwND4NBFBdYDVJO6qCIf1uGj OHfm+H1AGhMe09DSJZOHjWzo1TsO+5Y5Va2SxDSkVAAd6GRSZGZuWdFQr /ZoqFSYuRLwgBaN3Az2/o2/OPm3MloIAlXD2T2iF4JG6R0TloKRv4QxzI g==; X-CSE-ConnectionGUID: xxEBg1VFSCuHgnlFnJZDag== X-CSE-MsgGUID: lJgba3w7SWKmlCbCSAX89g== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23724672" X-Farcaster-Flow-ID: 2ee1502f-18b7-4f1a-937b-c5782ec79801 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 010/137] hw/avr: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:34:45 +0000 Message-ID: <20260718213652.37673-11-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D046UWB003.ant.amazon.com (10.13.139.174) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=50.112.246.219; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-015.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784410863051158500 Convert the *_orphan() device-creation calls in hw/avr to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): file:line | parent | name | rationale atmega.c:287 | OBJECT(dev) | "io" | unimplemented I/O placeholder is = a fixed child of the Atmega SoC; SoC realize() creates it, SoC owns it Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ Reviewed-by: Philippe Mathieu-Daud=C3=A9 AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/avr/atmega.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/avr/atmega.c b/hw/avr/atmega.c index a85bdf929a..5eb640f628 100644 --- a/hw/avr/atmega.c +++ b/hw/avr/atmega.c @@ -284,10 +284,10 @@ static void atmega_realize(DeviceState *dev, Error **= errp) * 0x20 - 0x5f: I/O memory * 0x60 - 0xff: Extended I/O */ - s->io =3D qdev_new_orphan(TYPE_UNIMPLEMENTED_DEVICE); + s->io =3D qdev_new(OBJECT(dev), "io", TYPE_UNIMPLEMENTED_DEVICE); qdev_prop_set_string(s->io, "name", "I/O"); qdev_prop_set_uint64(s->io, "size", mc->io_size); - sysbus_realize_and_unref(SYS_BUS_DEVICE(s->io), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(s->io), &error_fatal); sysbus_mmio_map_overlap(SYS_BUS_DEVICE(s->io), 0, OFFSET_DATA, -1234); =20 /* Power Reduction */ --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784410849; cv=none; d=zohomail.com; s=zohoarc; b=TJ30IWTYRoX8eTxB5zhj9bpK/g1XtHQRqUy5bTrM7nbyHixi96Iz2+VA0Dz+tq3WhRLRihPmwBUwaZvuaCzWVFtulzO/TUEScDJ9w18W6gAvvZoIfQuyJiMZM4OrAYY24+vVfVzyKubaPpofkWsjytHqDq9S4p6CAxklFisa0VY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784410849; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=AzsMyr+OSlMjtWcFAfEACFfgIyx83zWcWDq+hX8zj9I=; b=aBwJ5ATdeEixaSrpekwAmRtnjMmn8+oxPxlJ+YVYmxsfH0HaO9rxbOJcslE3ZMDArt7+M1FtXePR4OyJTE84EPALMzfX3O4m9Z5ztrj/P6Ofoc/UD5qwZvls+DJguVhXWWrfe5ipzePWB7okgaMm+BgyUQ+2w5GHF7JbctTMAUo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784410849006218.4763259988439; Sat, 18 Jul 2026 14:40:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCld-0003uZ-Hk; Sat, 18 Jul 2026 17:40:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlClL-0003HB-MG; Sat, 18 Jul 2026 17:40:07 -0400 Received: from pdx-out-015.esa.us-west-2.outbound.mail-perimeter.amazon.com ([50.112.246.219]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlClJ-00026U-N6; Sat, 18 Jul 2026 17:39:59 -0400 Received: from ip-10-5-12-219.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.12.219]) by internal-pdx-out-015.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:39:55 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.182:20511] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.48.250:2525] with esmtp (Farcaster) id 434683dd-be8b-420a-aad4-ead22363d4ea; Sat, 18 Jul 2026 21:39:54 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA001.ant.amazon.com (10.250.64.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:39:54 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:39:45 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784410797; x=1815946797; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=AzsMyr+OSlMjtWcFAfEACFfgIyx83zWcWDq+hX8zj9I=; b=pOjAW+xHwTM/b8jzKo+YTWImjuXKsyyZkNZSxyvbEGz9GVVGmlL7YCUc /WNBQfWXVRsD0w+cX5iEuyrcE4R0IyNZAHbprvHwslS9KZ0uQWwD0RB3v RXoNBIk4lulX38uUg/LxZpU8qANcvXoW/fTOaPoYHgQWW6M8x7kdt3dY4 dwM/qiF9/n56T616hEURbbFEzWyYtfPJNwsgPiCPLFXQYmXMNCV3XsFQ5 s+GtjVFwsTKM4SfEDi8Cq1UkVoTVBPEP8pM+aeFav3QPjBPmIhfKU157n +F4JWGY3jYRe3xMfiPlozpzN2BUJj0LzWzMEO3LFyxLVxZbhiRrb1ZBdx g==; X-CSE-ConnectionGUID: tNtDRSmvQlKbuNr/LvVBBA== X-CSE-MsgGUID: 9Opdsza5SrOFCOMEhoTSPg== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23724691" X-Farcaster-Flow-ID: 434683dd-be8b-420a-aad4-ead22363d4ea From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 011/137] hw/tricore: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:34:46 +0000 Message-ID: <20260718213652.37673-12-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D046UWB003.ant.amazon.com (10.13.139.174) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=50.112.246.219; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-015.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784410852380158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/tricore to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): file:line | parent | name | rationale tricore_testboard.c:70 | OBJECT(machine) | "cpu" | single CPU c= reated by board init(); machine owns it tricore_testboard.c:92 | OBJECT(machine) | "testdevice" | onboard test= device created by board init() Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/tricore/tricore_testboard.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/hw/tricore/tricore_testboard.c b/hw/tricore/tricore_testboard.c index 69794d3445..9e8cccbd59 100644 --- a/hw/tricore/tricore_testboard.c +++ b/hw/tricore/tricore_testboard.c @@ -55,6 +55,7 @@ static void tricore_load_kernel(CPUTriCoreState *env) =20 static void tricore_testboard_init(MachineState *machine, int board_id) { + Object *mo =3D OBJECT(machine); TriCoreCPU *cpu; CPUTriCoreState *env; TriCoreTestDeviceState *test_dev; @@ -67,7 +68,7 @@ static void tricore_testboard_init(MachineState *machine,= int board_id) MemoryRegion *pcp_data =3D g_new(MemoryRegion, 1); MemoryRegion *pcp_text =3D g_new(MemoryRegion, 1); =20 - cpu =3D TRICORE_CPU(cpu_create_orphan(machine->cpu_type)); + cpu =3D TRICORE_CPU(cpu_create(mo, "cpu", machine->cpu_type)); env =3D &cpu->env; memory_region_init_ram(ext_cram, NULL, "powerlink_ext_c.ram", 2 * MiB, &error_fatal); @@ -89,7 +90,9 @@ static void tricore_testboard_init(MachineState *machine,= int board_id) memory_region_add_subregion(sysmem, 0xf0050000, pcp_data); memory_region_add_subregion(sysmem, 0xf0060000, pcp_text); =20 - test_dev =3D TRICORE_TESTDEVICE(qdev_new_orphan(TYPE_TRICORE_TESTDEVIC= E)); + test_dev =3D TRICORE_TESTDEVICE(qdev_new(mo, "testdevice", + TYPE_TRICORE_TESTDEVICE)); + sysbus_realize(SYS_BUS_DEVICE(test_dev), &error_fatal); memory_region_add_subregion(sysmem, 0xf0000000, &test_dev->iomem); =20 =20 --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784410959; cv=none; d=zohomail.com; s=zohoarc; b=XDRoWkohT6IYq9UsufPo67pxpVeKTAvMQwTmlywzaBfJvQavckJM8vMOFmElDnNlTR+c9Xumdsxy3+QRhgzaTq8uipkTYKed5nmU+JSAgDlcYsbizUgvhU7P/mOFY4iRbS7POwvAaxTJJluNQ6K09vjx82b/W9t8LL2xdwjzhy4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784410959; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=5B7c7y3Mo/XDrIc6yu/29JncGzXitN8v+W3KAxOTJLg=; b=cALJ2BThLoNn6Cd7ba9pNyWOPddSiWXe+X2C8efwqupDXFqGgVKJmvGt2av4oWN3/2mIuOW2wuITDHLn6Rd1n+zXn2mWGXeMcGndLlBMzZQx6EQ2Rjg2TxuO+XP4Qk5AkRTtL/bRgEHVo6wwWcZ9hSQLkQaGE7t2M1nrNhiPREI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784410959090926.1351544148024; Sat, 18 Jul 2026 14:42:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCm7-0005Cl-G5; Sat, 18 Jul 2026 17:40:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCls-00055Q-5Z; Sat, 18 Jul 2026 17:40:34 -0400 Received: from pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.245.243.92]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlClp-0002N7-Ml; Sat, 18 Jul 2026 17:40:31 -0400 Received: from ip-10-5-0-115.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.0.115]) by internal-pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:40:26 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.53:5810] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.151:2525] with esmtp (Farcaster) id 8e0543be-3d6b-4a09-a96c-9dbfc03f38cc; Sat, 18 Jul 2026 21:40:26 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC001.ant.amazon.com (10.250.64.174) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:40:25 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:40:16 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784410829; x=1815946829; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=5B7c7y3Mo/XDrIc6yu/29JncGzXitN8v+W3KAxOTJLg=; b=cnn3vRgNEdBRZXFSVJeNzOQyl6a8IDAkxHeSe9RMRBoU/Sv1aCjKPv5f Z9dV4AtS7G51Ciep51Eq+lNZBOZbduNh27xhrmuE+ncxURCZjpMov0d52 lBMKfIiMoG0gFq1qfC0pTKjS8YhsyC5dlortrmEFAbgTY+FuU6CQy2P5T 972oyuRzgPt1K8Besx2sf6fju8At+5iV9dfXQ8Z2gpSbph/zxGitoHC9X nDJEPX/sFgn6g0dPn6eL7lNschCDD44oA7veqIy28Ky2UbezVRDyzBpSJ xQ4446uJ9gRyGXmrzX6uaOGHnkuEItASgQGxqglwmZDPBAEHqMphXNVZr Q==; X-CSE-ConnectionGUID: ac1KS6urSTeO3anGmoOUQA== X-CSE-MsgGUID: tqu7biUERGOeU9TmDcWQRA== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23422528" X-Farcaster-Flow-ID: 8e0543be-3d6b-4a09-a96c-9dbfc03f38cc From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 012/137] hw/xtensa: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:34:47 +0000 Message-ID: <20260718213652.37673-13-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D035UWB001.ant.amazon.com (10.13.138.33) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.245.243.92; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784410959695158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/xtensa to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): file:line | parent | name | rationale sim.c:66 | OBJECT(machine) | "cpu[*]" | SMP CPUs created by board= init(); machine owns them virt.c:64 | OBJECT(ms) | "pcie" | GPEX PCIe host is a fixed= onboard device of the virt machine; create_pcie() already receives Machine= State xtfpga.c:176 | OBJECT(machine) | "flash" | onboard CFI flash; thread= an Object *parent argument through the static xtfpga_flash_init() helper f= rom board init() xtfpga.c:253 | OBJECT(machine) | "cpu[*]" | SMP CPUs created by board= init() Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/xtensa/sim.c | 2 +- hw/xtensa/virt.c | 4 ++-- hw/xtensa/xtfpga.c | 13 ++++++++----- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/hw/xtensa/sim.c b/hw/xtensa/sim.c index 17245a0388..ad1439a0b4 100644 --- a/hw/xtensa/sim.c +++ b/hw/xtensa/sim.c @@ -63,7 +63,7 @@ XtensaCPU *xtensa_sim_common_init(MachineState *machine) int n; =20 for (n =3D 0; n < machine->smp.cpus; n++) { - cpu =3D XTENSA_CPU(cpu_create_orphan(machine->cpu_type)); + cpu =3D XTENSA_CPU(cpu_create(OBJECT(machine), "cpu[*]", machine->= cpu_type)); env =3D &cpu->env; =20 env->sregs[PRID] =3D n; diff --git a/hw/xtensa/virt.c b/hw/xtensa/virt.c index e31b783b91..6b1271d0d5 100644 --- a/hw/xtensa/virt.c +++ b/hw/xtensa/virt.c @@ -61,8 +61,8 @@ static void create_pcie(MachineState *ms, CPUXtensaState = *env, int irq_base, qemu_irq *extints; int i; =20 - dev =3D qdev_new_orphan(TYPE_GPEX_HOST); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + dev =3D qdev_new(OBJECT(ms), "pcie", TYPE_GPEX_HOST); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 /* Map only the first size_ecam bytes of ECAM space. */ ecam_alias =3D g_new0(MemoryRegion, 1); diff --git a/hw/xtensa/xtfpga.c b/hw/xtensa/xtfpga.c index 0ee7350945..07b791b9bf 100644 --- a/hw/xtensa/xtfpga.c +++ b/hw/xtensa/xtfpga.c @@ -168,12 +168,13 @@ static void xtfpga_net_init(MemoryRegion *address_spa= ce, memory_region_add_subregion(address_space, buffers, ram); } =20 -static PFlashCFI01 *xtfpga_flash_init(MemoryRegion *address_space, +static PFlashCFI01 *xtfpga_flash_init(Object *parent, + MemoryRegion *address_space, const XtfpgaBoardDesc *board, DriveInfo *dinfo, int be) { SysBusDevice *s; - DeviceState *dev =3D qdev_new_orphan(TYPE_PFLASH_CFI01); + DeviceState *dev =3D qdev_new(parent, "flash", TYPE_PFLASH_CFI01); =20 qdev_prop_set_drive(dev, "drive", blk_by_legacy_dinfo(dinfo)); qdev_prop_set_uint32(dev, "num-blocks", @@ -183,7 +184,7 @@ static PFlashCFI01 *xtfpga_flash_init(MemoryRegion *add= ress_space, qdev_prop_set_bit(dev, "big-endian", be); qdev_prop_set_string(dev, "name", "xtfpga.io.flash"); s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); memory_region_add_subregion(address_space, board->flash->base, sysbus_mmio_get_region(s, 0)); return PFLASH_CFI01(dev); @@ -250,7 +251,8 @@ static void xtfpga_init(const XtfpgaBoardDesc *board, M= achineState *machine) for (n =3D 0; n < smp_cpus; n++) { CPUXtensaState *cenv =3D NULL; =20 - cpu =3D XTENSA_CPU(cpu_create_orphan(machine->cpu_type)); + cpu =3D XTENSA_CPU(cpu_create(OBJECT(machine), "cpu[*]", + machine->cpu_type)); cenv =3D &cpu->env; if (!env) { env =3D cenv; @@ -315,7 +317,8 @@ static void xtfpga_init(const XtfpgaBoardDesc *board, M= achineState *machine) =20 dinfo =3D drive_get(IF_PFLASH, 0, 0); if (dinfo) { - flash =3D xtfpga_flash_init(system_io, board, dinfo, TARGET_BIG_EN= DIAN); + flash =3D xtfpga_flash_init(OBJECT(machine), system_io, board, din= fo, + TARGET_BIG_ENDIAN); } =20 /* Use presence of kernel file name as 'boot from SRAM' switch. */ --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784410909; cv=none; d=zohomail.com; s=zohoarc; b=HTP/sLJcf5ZuoHHTeAEvi2t6MVeAmHsLBjjP8nzr8j4LN+kpkm22HhWjqxH38Hzb0tnIq7U3nTUTaJf4qyIyNXgBod3x2fimwQJQVV+nP1mVf1buaObN/RHKyXBXVpckjeteTAvriUwhuCScQd7ZJm7ES3QGz4Jvv17bLRM1EyY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784410909; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=eaJ7ljdGE5A9aTCyk0ypqMg+lhfOn8ZM3idScbntpHY=; b=g7ppZuPZ1i+/SisqQkA6kRp7dlA8yjcFyQGoGvsSejWC2kR05yAw4SnyVrHpYOcITystvEURrpgtGJxNsdUYaJfiiO8G0UFkYyEA/S7R9FHWH8nrBS0iiNohHtsnIwxO31DAYZOrfqA/4YKMy0UMm4BJVTGtNBAUuYqbZjONXQ8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784410908992465.78525273615776; Sat, 18 Jul 2026 14:41:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCmE-0005PI-Rh; Sat, 18 Jul 2026 17:40:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCm2-00058d-Rf; Sat, 18 Jul 2026 17:40:44 -0400 Received: from pdx-out-003.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.246.68.102]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlClz-0002Nt-Io; Sat, 18 Jul 2026 17:40:41 -0400 Received: from ip-10-5-9-48.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.9.48]) by internal-pdx-out-003.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:40:35 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.51:22854] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.48.250:2525] with esmtp (Farcaster) id b7362e5c-e7e3-4d6a-939b-ed8a4f1fdc23; Sat, 18 Jul 2026 21:40:35 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC002.ant.amazon.com (10.250.64.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:40:35 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:40:25 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784410839; x=1815946839; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=eaJ7ljdGE5A9aTCyk0ypqMg+lhfOn8ZM3idScbntpHY=; b=iIeielroCFi2WNj06ipy6wYmSjj5oVS0x/F/C8QXVJoRHz0pzLMvjvPs W7x31LlZau99OQd6WDM0pAcHXPAiafcLAUHGFBIYM+dMFiiAiyn3HwILi 6WWtGT2fsi+P6k3xPyDkcgFXxmfRgks2L/tYbB/e6yr8a6+8A2p3Qeghd 1bkZ1kTe8oLhiqsEeQE1UlCQzXvlpyp1xIt4HdTK+4O1XkKYs4zFkpRzM LyMJkjRQEkn/+bBN12V7Ys84mcsgaUrn6TuKfvFrwNwzqF/XluNFw7r90 dFk0Gq+6BfxslnI6mlMOW8DYTeyrKPe4Wp8Ml42TY4KHHVAwkI8AfkNrW w==; X-CSE-ConnectionGUID: IKCb1wx6QYOyIp3lDP6/Uw== X-CSE-MsgGUID: Yk7lkcnFT5Sn45DPIfPxVA== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23941640" X-Farcaster-Flow-ID: b7362e5c-e7e3-4d6a-939b-ed8a4f1fdc23 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 013/137] hw/alpha: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:34:48 +0000 Message-ID: <20260718213652.37673-14-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D035UWB001.ant.amazon.com (10.13.138.33) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.246.68.102; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-003.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784410911342158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/alpha to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): file:line | parent | name | rationale dp264.c:68 | OBJECT(machine) | "cpu[*]" | SMP CPUs created by b= oard init() dp264.c:113 | OBJECT(machine) | "isa-bridge" | i82378 PCI-ISA bridge= is a fixed onboard device; the machine owns it dp264.c:129 | OBJECT(machine) | "sio" | SMC37C669 Super-I/O i= s a fixed onboard device dp264.c:132 | OBJECT(machine) | "ide" | CMD646 IDE controller= is a fixed onboard device typhoon.c:833 | OBJECT(machine) | "typhoon" | Typhoon PCI host brid= ge is a fixed chipset of the DP264 board; thread an Object *parent argument= through typhoon_init() from clipper_init() Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/alpha/alpha_sys.h | 3 ++- hw/alpha/dp264.c | 12 +++++++----- hw/alpha/typhoon.c | 6 +++--- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/hw/alpha/alpha_sys.h b/hw/alpha/alpha_sys.h index 6e6691d116..f8aaf74933 100644 --- a/hw/alpha/alpha_sys.h +++ b/hw/alpha/alpha_sys.h @@ -9,7 +9,8 @@ #include "hw/intc/i8259.h" =20 =20 -PCIBus *typhoon_init(MemoryRegion *, qemu_irq *, qemu_irq *, AlphaCPU *[4], +PCIBus *typhoon_init(Object *parent, MemoryRegion *, + qemu_irq *, qemu_irq *, AlphaCPU *[4], pci_map_irq_fn, uint8_t devfn_min); =20 /* alpha_pci.c. */ diff --git a/hw/alpha/dp264.c b/hw/alpha/dp264.c index 512b270838..9cd448cff1 100644 --- a/hw/alpha/dp264.c +++ b/hw/alpha/dp264.c @@ -49,6 +49,7 @@ static void clipper_init(MachineState *machine) const char *kernel_cmdline =3D machine->kernel_cmdline; const char *initrd_filename =3D machine->initrd_filename; MachineClass *mc =3D MACHINE_GET_CLASS(machine); + Object *mo =3D OBJECT(machine); AlphaCPU *cpus[4]; PCIBus *pci_bus; PCIDevice *pci_dev; @@ -65,7 +66,7 @@ static void clipper_init(MachineState *machine) /* Create up to 4 cpus. */ memset(cpus, 0, sizeof(cpus)); for (i =3D 0; i < smp_cpus; ++i) { - cpus[i] =3D ALPHA_CPU(cpu_create_orphan(machine->cpu_type)); + cpus[i] =3D ALPHA_CPU(cpu_create(mo, "cpu[*]", machine->cpu_type)); } =20 /* @@ -86,7 +87,7 @@ static void clipper_init(MachineState *machine) * Init the chipset. Because we're using CLIPPER IRQ mappings, * the minimum PCI device IdSel is 1. */ - pci_bus =3D typhoon_init(machine->ram, &isa_irq, &rtc_irq, cpus, + pci_bus =3D typhoon_init(mo, machine->ram, &isa_irq, &rtc_irq, cpus, clipper_pci_map_irq, PCI_DEVFN(1, 0)); =20 /* @@ -110,7 +111,8 @@ static void clipper_init(MachineState *machine) * Importantly, we need to provide a PCI device node for it, otherwise * some operating systems won't notice there's an ISA bus to configure. */ - i82378_dev =3D DEVICE(pci_create_simple_orphan(pci_bus, PCI_DEVFN(7, 0= ), "i82378")); + i82378_dev =3D DEVICE(pci_create_simple(mo, "isa-bridge", pci_bus, + PCI_DEVFN(7, 0), "i82378")); isa_bus =3D ISA_BUS(qdev_get_child_bus(i82378_dev, "isa.0")); =20 /* Connect the ISA PIC to the Typhoon IRQ used for ISA interrupts. */ @@ -126,10 +128,10 @@ static void clipper_init(MachineState *machine) pci_init_nic_devices(pci_bus, mc->default_nic); =20 /* Super I/O */ - isa_create_simple_orphan(isa_bus, TYPE_SMC37C669_SUPERIO); + isa_create_simple(mo, "sio", isa_bus, TYPE_SMC37C669_SUPERIO); =20 /* IDE disk setup. */ - pci_dev =3D pci_create_simple_orphan(pci_bus, -1, "cmd646-ide"); + pci_dev =3D pci_create_simple(mo, "ide", pci_bus, -1, "cmd646-ide"); pci_ide_create_devs(pci_dev); =20 /* Load PALcode. Given that this is not "real" cpu palcode, diff --git a/hw/alpha/typhoon.c b/hw/alpha/typhoon.c index af40647ccd..af39f2659b 100644 --- a/hw/alpha/typhoon.c +++ b/hw/alpha/typhoon.c @@ -819,7 +819,7 @@ static void typhoon_alarm_timer(void *opaque) cpu_interrupt(CPU(s->cchip.cpu[cpu]), CPU_INTERRUPT_TIMER); } =20 -PCIBus *typhoon_init(MemoryRegion *ram, qemu_irq *p_isa_irq, +PCIBus *typhoon_init(Object *parent, MemoryRegion *ram, qemu_irq *p_isa_ir= q, qemu_irq *p_rtc_irq, AlphaCPU *cpus[4], pci_map_irq_fn sys_map_irq, uint8_t devfn_min) { @@ -830,7 +830,7 @@ PCIBus *typhoon_init(MemoryRegion *ram, qemu_irq *p_isa= _irq, PCIBus *b; int i; =20 - dev =3D qdev_new_orphan(TYPE_TYPHOON_PCI_HOST_BRIDGE); + dev =3D qdev_new(parent, "typhoon", TYPE_TYPHOON_PCI_HOST_BRIDGE); =20 s =3D TYPHOON_PCI_HOST_BRIDGE(dev); phb =3D PCI_HOST_BRIDGE(dev); @@ -894,7 +894,7 @@ PCIBus *typhoon_init(MemoryRegion *ram, qemu_irq *p_isa= _irq, &s->pchip.reg_mem, &s->pchip.reg_io, devfn_min, 64, TYPE_PCI_BUS); phb->bus =3D b; - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 /* Host memory as seen from the PCI side, via the IOMMU. */ memory_region_init_iommu(&s->pchip.iommu, sizeof(s->pchip.iommu), --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784410923; cv=none; d=zohomail.com; s=zohoarc; b=ROXDEoFsbdOifadS6aRlhGMcuSOpbHTasSHJOiU1Xd9ZnnMEh+Otc7pMFq3w8L0s7vbLnEPwKrrp+Js+fmSlbjNzvVNcz+hCyeMblEnLUi+cxuvrzNsTPHt9leqG9s/6Tqpey42aUnxQjmS+n+whZ/CIvi8JKGRUz9Cfl4Ry71s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784410923; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=JnC0lFzxmP9VtVHLHbIiYbvAcG6DwvxYaEw4zzaTo2U=; b=eIv4SjtYe04idl8QU2VUp+DBZ8ACfkKF1Vn92eZ71Un3tO1VwC5qpIY+Eug+2CaWGF24zKp6iPbETmUdIwq3RzWhiDRfHAxiZYMQx90vxG9vYB4qI+ZcMDrlFA/sGvjfQ7dM6zkaBrxfOUkxaAUlAXBbrRG5zH6wnBGhpaB2dDU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784410923249360.99514960792624; Sat, 18 Jul 2026 14:42:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCmG-0005ae-M5; Sat, 18 Jul 2026 17:40:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCmB-0005Ip-2I; Sat, 18 Jul 2026 17:40:54 -0400 Received: from pdx-out-013.esa.us-west-2.outbound.mail-perimeter.amazon.com ([34.218.115.239]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCm9-0002On-8B; Sat, 18 Jul 2026 17:40:50 -0400 Received: from ip-10-5-12-219.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.12.219]) by internal-pdx-out-013.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:40:45 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.182:15537] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.58.199:2525] with esmtp (Farcaster) id ec85fdb7-e41e-4e94-9104-861b5d77c8bc; Sat, 18 Jul 2026 21:40:44 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA001.ant.amazon.com (10.250.64.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:40:44 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:40:35 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784410849; x=1815946849; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=JnC0lFzxmP9VtVHLHbIiYbvAcG6DwvxYaEw4zzaTo2U=; b=AJLkHaMX5C7cuDkFJKt++W/rsK2FnxLZdoMCNRinWkXRqzW9f2uzdsz1 xmAMDwQnOtqIabiGJhy2F9XrOTvh76/FRwQ9ol1EGDbwnM0YMv1f1dl52 4UM3ikjfF+Aq5DtBXtF/yIhS30cX8/DXda9Mxws24BAcf6wxzgwegvLUJ 7OGasyjgF9wbOfmeNF/3vV4U6R/6Lcmqrelbb9OT2KE0b6Bpsf/NuDWun HZUz3JEVGV4qAqHDmCdVswlZLLh7BLKgIDZA6QlZltwZ0KHF5SXkbh1g4 DkDivscOkfd73226SupJwl0Sqq1gWHHh7SSlARsG6W7bJzEYbNlHjDF+0 g==; X-CSE-ConnectionGUID: NrLFa6vnQkCjritExWSGHw== X-CSE-MsgGUID: VPkeFELJShuEEJfkNvk3lQ== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23718877" X-Farcaster-Flow-ID: ec85fdb7-e41e-4e94-9104-861b5d77c8bc From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 014/137] hw/nitro: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:34:49 +0000 Message-ID: <20260718213652.37673-15-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D035UWB001.ant.amazon.com (10.13.138.33) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=34.218.115.239; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-013.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.01, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784410925754158500 Convert the *_orphan() device-creation calls in hw/nitro to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): file:line | parent | name | rationale machine.c:200 | OBJECT(bridge) | "heartbeat" | onboard heartbea= t is a fixed child of the vsock bridge it plugs into; bridge owns its lifet= ime machine.c:212 | OBJECT(bridge) | "serial" | debug-mode seria= l-over-vsock is a fixed child of the same bridge nitro-vsock-bus.c:51 | ORPHAN-JUSTIFIED| - | bridge is parent= ed immediately after via qdev_set_id() to /machine/peripheral/nitro-vsock; = keep the orphan creator here Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ Reviewed-by: Philippe Mathieu-Daud=C3=A9 AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/nitro/machine.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/hw/nitro/machine.c b/hw/nitro/machine.c index efcc2c8a3f..6b61de911f 100644 --- a/hw/nitro/machine.c +++ b/hw/nitro/machine.c @@ -195,10 +195,11 @@ static void nitro_machine_init(MachineState *machine) =20 if (defaults_enabled()) { NitroVsockBridge *bridge =3D nitro_vsock_bridge_create(); + DeviceState *dev; =20 /* Nitro Enclaves require a heartbeat device. Provide one. */ - qdev_realize(qdev_new_orphan(TYPE_NITRO_HEARTBEAT), - BUS(&bridge->bus), &error_fatal); + dev =3D qdev_new(OBJECT(bridge), "heartbeat", TYPE_NITRO_HEARTBEAT= ); + qdev_realize(dev, BUS(&bridge->bus), &error_fatal); =20 /* * In debug mode, Nitro Enclaves expose the guest's serial output = via @@ -209,8 +210,8 @@ static void nitro_machine_init(MachineState *machine) Chardev *chr =3D serial_hd(0); =20 if (chr) { - DeviceState *dev =3D qdev_new_orphan(TYPE_NITRO_SERIAL_VSO= CK); - + dev =3D qdev_new(OBJECT(bridge), "serial", + TYPE_NITRO_SERIAL_VSOCK); qdev_prop_set_chr(dev, "chardev", chr); qdev_realize(dev, BUS(&bridge->bus), &error_fatal); } --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784410949; cv=none; d=zohomail.com; s=zohoarc; b=fZsJJcSKPAuBPO3gAyTUAbAYckWqRhia6zUsoTcqpWta3mc07CPxMaoNQQftEkpqtL/xp/oBzZKt8Tl7GZdEd7Vr/03DEUD0gkw94DWYy3/5cOBjC/lL8nwCBkEjgoaBstEXI/gIH4PXaUbemclM8DHlJ6d7Tw2iyAVKzVGpnII= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784410949; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=mmeTeiyHCX67W2MGbpfNr9HphH7mxrQSMRew8rVBxVs=; b=F6022kjmfNDGCxoi+LvocPHW3P8gTGT+VK+Dq+6eMitmmbyUIkGCYxKtIvDsv0lMYYl8QfYJnTPL1zHh5/KPKbZOOvQ/g9xEp3rIP/mRMqSvs4EIrtK2ROriiLI3qzjR6tVwX+Op6OeiuxsWMUlyard1Dz1mT13KtMDwoF7CqGM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784410949128259.1677421055431; Sat, 18 Jul 2026 14:42:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCmh-0006io-PN; Sat, 18 Jul 2026 17:41:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCmg-0006iI-Jk; Sat, 18 Jul 2026 17:41:22 -0400 Received: from pdx-out-007.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.34.181.151]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCmd-0002b3-VZ; Sat, 18 Jul 2026 17:41:22 -0400 Received: from ip-10-5-9-48.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.9.48]) by internal-pdx-out-007.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:41:16 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.53:30515] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.0.115:2525] with esmtp (Farcaster) id af4245e0-c301-446e-adea-7c12b023c1f2; Sat, 18 Jul 2026 21:41:16 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC001.ant.amazon.com (10.250.64.174) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:41:15 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:41:06 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784410880; x=1815946880; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=mmeTeiyHCX67W2MGbpfNr9HphH7mxrQSMRew8rVBxVs=; b=nhAQS1wuN92Vz98ikVRdKcFzf3aUauvHu13MjDTzMVY0y5ZB/KSlTGHo SajWB4el0KK6kmsc4BtP5E3kQht1lz4yCORkplJj+oHCXgYL5wVA94PI1 xiCHplyG77m3D4+uxWJhzX9XJZogSUQUERRfcRrLVu7vpw6THlJk6um6R xQmSpz0rtKOKZTx5bY4HzgTEc+29PYYCmQXMEyMqfR6VO+iyhzGqPbhhz Fo4I4EBKlSWTXbfWvYyVTSaPBvz3IGXsl7PjgrbKABDRlHceVX1Cb81YO 3tb4QymJq1PBytVrHeByvYyfaSwz8gMmRtuM3P6uiBYhO9tnu9/qIbCsh w==; X-CSE-ConnectionGUID: Pgy6nWIVSeuT225Mz+EXMQ== X-CSE-MsgGUID: bF+CE6cBT+2PX1d83kNTVQ== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23910247" X-Farcaster-Flow-ID: af4245e0-c301-446e-adea-7c12b023c1f2 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 015/137] hw/vmapple: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:34:50 +0000 Message-ID: <20260718213652.37673-16-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D046UWB002.ant.amazon.com (10.13.139.181) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.34.181.151; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-007.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.01, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784410949917158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/vmapple to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/vmapple/vmapple.c:158 | OBJECT(vms) | "bdif" | board-init helper recei= ves VMAppleMachineState *vms; single instance hw/vmapple/vmapple.c:172 | OBJECT(vms) | "pvpanic" | board-init helper re= ceives vms; single instance hw/vmapple/vmapple.c:187 | OBJECT(vms) | "cfg" | board-init helper receiv= es vms; single instance hw/vmapple/vmapple.c:212 | OBJECT(vms) | "gfx" | board-init helper receiv= es vms; single instance hw/vmapple/vmapple.c:225 | OBJECT(vms) | "aes" | board-init helper receiv= es vms; single instance hw/vmapple/vmapple.c:246 | OBJECT(vms) | "gic" | board-init helper receiv= es vms; single instance hw/vmapple/vmapple.c:293 | OBJECT(vms) | "uart" | board-init helper recei= ves vms (const dropped); single instance hw/vmapple/vmapple.c:308 | OBJECT(vms) | "rtc" | board-init helper receiv= es vms (const dropped); single instance hw/vmapple/vmapple.c:326 | OBJECT(vms) | "gpio" | board-init helper recei= ves vms (const dropped); single instance hw/vmapple/vmapple.c:334 | OBJECT(vms) | "gpio-key" | board-init helper r= eceives vms; single instance hw/vmapple/vmapple.c:387 | OBJECT(vms) | "pcie" | board-init helper recei= ves vms; single GPEX host hw/vmapple/vmapple.c:423 | OBJECT(vms) | "xhci" | board-init helper recei= ves vms; single XHCI controller hw/vmapple/vmapple.c:428 | OBJECT(usb_controller) | "usb-kbd" | lifetime = owned by the XHCI controller it plugs into hw/vmapple/vmapple.c:429 | OBJECT(usb_controller) | "usb-tablet" | lifeti= me owned by the XHCI controller it plugs into Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/vmapple/vmapple.c | 59 +++++++++++++++++++++++--------------------- 1 file changed, 31 insertions(+), 28 deletions(-) diff --git a/hw/vmapple/vmapple.c b/hw/vmapple/vmapple.c index 4d218748c2..60c7dab89b 100644 --- a/hw/vmapple/vmapple.c +++ b/hw/vmapple/vmapple.c @@ -155,25 +155,25 @@ static void create_bdif(VMAppleMachineState *vms, Mem= oryRegion *mem) } =20 /* PV backdoor device */ - bdif =3D qdev_new_orphan(TYPE_VMAPPLE_BDIF); + bdif =3D qdev_new(OBJECT(vms), "bdif", TYPE_VMAPPLE_BDIF); bdif_sb =3D SYS_BUS_DEVICE(bdif); sysbus_mmio_map(bdif_sb, 0, vms->memmap[VMAPPLE_BDOOR].base); =20 qdev_prop_set_drive(DEVICE(bdif), "aux", blk_by_legacy_dinfo(di_aux)); qdev_prop_set_drive(DEVICE(bdif), "root", blk_by_legacy_dinfo(di_root)= ); =20 - sysbus_realize_and_unref(bdif_sb, &error_fatal); + sysbus_realize(bdif_sb, &error_fatal); } =20 static void create_pvpanic(VMAppleMachineState *vms, MemoryRegion *mem) { SysBusDevice *pvpanic; =20 - vms->pvpanic =3D qdev_new_orphan(TYPE_PVPANIC_MMIO_DEVICE); + vms->pvpanic =3D qdev_new(OBJECT(vms), "pvpanic", TYPE_PVPANIC_MMIO_DE= VICE); pvpanic =3D SYS_BUS_DEVICE(vms->pvpanic); sysbus_mmio_map(pvpanic, 0, vms->memmap[VMAPPLE_PVPANIC].base); =20 - sysbus_realize_and_unref(pvpanic, &error_fatal); + sysbus_realize(pvpanic, &error_fatal); } =20 static bool create_cfg(VMAppleMachineState *vms, MemoryRegion *mem, @@ -184,7 +184,7 @@ static bool create_cfg(VMAppleMachineState *vms, Memory= Region *mem, MachineState *machine =3D MACHINE(vms); uint32_t rnd =3D 1; =20 - vms->cfg =3D qdev_new_orphan(TYPE_VMAPPLE_CFG); + vms->cfg =3D qdev_new(OBJECT(vms), "cfg", TYPE_VMAPPLE_CFG); cfg =3D SYS_BUS_DEVICE(vms->cfg); sysbus_mmio_map(cfg, 0, vms->memmap[VMAPPLE_CONFIG].base); =20 @@ -195,7 +195,7 @@ static bool create_cfg(VMAppleMachineState *vms, Memory= Region *mem, qdev_prop_set_uint64(vms->cfg, "ram-size", machine->ram_size); qdev_prop_set_uint32(vms->cfg, "rnd", rnd); =20 - if (!sysbus_realize_and_unref(cfg, errp)) { + if (!sysbus_realize(cfg, errp)) { error_prepend(errp, "Error creating vmapple cfg device: "); return false; } @@ -209,12 +209,12 @@ static void create_gfx(VMAppleMachineState *vms, Memo= ryRegion *mem) int irq_iosfc =3D vms->irqmap[VMAPPLE_APV_IOSFC]; SysBusDevice *gfx; =20 - gfx =3D SYS_BUS_DEVICE(qdev_new_orphan("apple-gfx-mmio")); + gfx =3D SYS_BUS_DEVICE(qdev_new(OBJECT(vms), "gfx", "apple-gfx-mmio")); sysbus_mmio_map(gfx, 0, vms->memmap[VMAPPLE_APV_GFX].base); sysbus_mmio_map(gfx, 1, vms->memmap[VMAPPLE_APV_IOSFC].base); sysbus_connect_irq(gfx, 0, qdev_get_gpio_in(vms->gic, irq_gfx)); sysbus_connect_irq(gfx, 1, qdev_get_gpio_in(vms->gic, irq_iosfc)); - sysbus_realize_and_unref(gfx, &error_fatal); + sysbus_realize(gfx, &error_fatal); } =20 static void create_aes(VMAppleMachineState *vms, MemoryRegion *mem) @@ -222,11 +222,11 @@ static void create_aes(VMAppleMachineState *vms, Memo= ryRegion *mem) int irq =3D vms->irqmap[VMAPPLE_AES_1]; SysBusDevice *aes; =20 - aes =3D SYS_BUS_DEVICE(qdev_new_orphan(TYPE_APPLE_AES)); + aes =3D SYS_BUS_DEVICE(qdev_new(OBJECT(vms), "aes", TYPE_APPLE_AES)); sysbus_mmio_map(aes, 0, vms->memmap[VMAPPLE_AES_1].base); sysbus_mmio_map(aes, 1, vms->memmap[VMAPPLE_AES_2].base); sysbus_connect_irq(aes, 0, qdev_get_gpio_in(vms->gic, irq)); - sysbus_realize_and_unref(aes, &error_fatal); + sysbus_realize(aes, &error_fatal); } =20 static int arm_gic_ppi_index(int cpu_nr, int ppi_index) @@ -243,7 +243,7 @@ static void create_gic(VMAppleMachineState *vms, Memory= Region *mem) int i; unsigned int smp_cpus =3D ms->smp.cpus; =20 - vms->gic =3D qdev_new_orphan(gicv3_class_name()); + vms->gic =3D qdev_new(OBJECT(vms), "gic", gicv3_class_name()); qdev_prop_set_uint32(vms->gic, "revision", 3); qdev_prop_set_uint32(vms->gic, "num-cpu", smp_cpus); /* @@ -261,7 +261,7 @@ static void create_gic(VMAppleMachineState *vms, Memory= Region *mem) qdev_prop_set_array(vms->gic, "redist-region-count", redist_region_cou= nt); =20 gicbusdev =3D SYS_BUS_DEVICE(vms->gic); - sysbus_realize_and_unref(gicbusdev, &error_fatal); + sysbus_realize(gicbusdev, &error_fatal); sysbus_mmio_map(gicbusdev, 0, vms->memmap[VMAPPLE_GIC_DIST].base); sysbus_mmio_map(gicbusdev, 1, vms->memmap[VMAPPLE_GIC_REDIST].base); =20 @@ -285,27 +285,28 @@ static void create_gic(VMAppleMachineState *vms, Memo= ryRegion *mem) } } =20 -static void create_uart(const VMAppleMachineState *vms, int uart, +static void create_uart(VMAppleMachineState *vms, int uart, MemoryRegion *mem, Chardev *chr) { hwaddr base =3D vms->memmap[uart].base; int irq =3D vms->irqmap[uart]; - DeviceState *dev =3D qdev_new_orphan(TYPE_PL011); + DeviceState *dev =3D qdev_new(OBJECT(vms), "uart", TYPE_PL011); SysBusDevice *s =3D SYS_BUS_DEVICE(dev); =20 qdev_prop_set_chr(dev, "chardev", chr); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); memory_region_add_subregion(mem, base, sysbus_mmio_get_region(s, 0)); sysbus_connect_irq(s, 0, qdev_get_gpio_in(vms->gic, irq)); } =20 -static void create_rtc(const VMAppleMachineState *vms) +static void create_rtc(VMAppleMachineState *vms) { hwaddr base =3D vms->memmap[VMAPPLE_RTC].base; int irq =3D vms->irqmap[VMAPPLE_RTC]; =20 - sysbus_create_simple_orphan("pl031", base, qdev_get_gpio_in(vms->gic, = irq)); + sysbus_create_simple(OBJECT(vms), "rtc", "pl031", base, + qdev_get_gpio_in(vms->gic, irq)); } =20 static DeviceState *gpio_key_dev; @@ -315,7 +316,7 @@ static void vmapple_powerdown_req(Notifier *n, void *op= aque) qemu_set_irq(qdev_get_gpio_in(gpio_key_dev, 0), 1); } =20 -static void create_gpio_devices(const VMAppleMachineState *vms, int gpio, +static void create_gpio_devices(VMAppleMachineState *vms, int gpio, MemoryRegion *mem) { DeviceState *pl061_dev; @@ -323,16 +324,16 @@ static void create_gpio_devices(const VMAppleMachineS= tate *vms, int gpio, int irq =3D vms->irqmap[gpio]; SysBusDevice *s; =20 - pl061_dev =3D qdev_new_orphan("pl061"); + pl061_dev =3D qdev_new(OBJECT(vms), "gpio", "pl061"); /* Pull lines down to 0 if not driven by the PL061 */ qdev_prop_set_uint8(pl061_dev, "pullups", 0); qdev_prop_set_uint8(pl061_dev, "pulldowns", 0xff); s =3D SYS_BUS_DEVICE(pl061_dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); memory_region_add_subregion(mem, base, sysbus_mmio_get_region(s, 0)); sysbus_connect_irq(s, 0, qdev_get_gpio_in(vms->gic, irq)); - gpio_key_dev =3D sysbus_create_simple_orphan("gpio-key", -1, - qdev_get_gpio_in(pl061_dev, 3)); + gpio_key_dev =3D sysbus_create_simple(OBJECT(vms), "gpio-key", "gpio-k= ey", + -1, qdev_get_gpio_in(pl061_dev, 3)= ); } =20 static void vmapple_firmware_init(VMAppleMachineState *vms, @@ -384,9 +385,9 @@ static void create_pcie(VMAppleMachineState *vms) DeviceState *usb_controller; USBBus *usb_bus; =20 - dev =3D qdev_new_orphan(TYPE_GPEX_HOST); + dev =3D qdev_new(OBJECT(vms), "pcie", TYPE_GPEX_HOST); qdev_prop_set_uint32(dev, "num-irqs", GPEX_NUM_IRQS); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 /* Map only the first size_ecam bytes of ECAM space */ ecam_reg =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0); @@ -420,13 +421,15 @@ static void create_pcie(VMAppleMachineState *vms) } =20 if (defaults_enabled()) { - usb_controller =3D qdev_new_orphan(TYPE_QEMU_XHCI); - qdev_realize_and_unref(usb_controller, BUS(pci->bus), &error_fatal= ); + usb_controller =3D qdev_new(OBJECT(vms), "xhci", TYPE_QEMU_XHCI); + qdev_realize(usb_controller, BUS(pci->bus), &error_fatal); =20 usb_bus =3D USB_BUS(object_resolve_type_unambiguous(TYPE_USB_BUS, &error_fatal)); - usb_create_simple_orphan(usb_bus, "usb-kbd"); - usb_create_simple_orphan(usb_bus, "usb-tablet"); + usb_create_simple(OBJECT(usb_controller), "usb-kbd", usb_bus, + "usb-kbd"); + usb_create_simple(OBJECT(usb_controller), "usb-tablet", usb_bus, + "usb-tablet"); } } =20 --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784410916; cv=none; d=zohomail.com; s=zohoarc; b=eZqPFce1srzky/ugZumIpR7slx1umorKE+z26FEcr56I3wvy4+3t3pWHRUnY+S2ocLQDPisE7Wy4yLaZOSdeCswHBN6qOh4SzSk47LYeLN0rAKwOW2K4uydkoETsOkLkZt8CQSLK96x5cIGk7vFHqkIaqE2D6bybh5jXvq0b6pk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784410916; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=awzIk94kos0bcX0liFwYKNF1YxlENdf9a4daDDrtMUk=; b=bIrhu2Ng2aK3YNIcsaKNB7cY0jObXbGEUYgf5efyWN8jAdI6IhJv+b0fUEpMpx5+nOgNi7Pi3W2Mj2v0cFA1lcccdBfVWHngECC+hOOovD6E1/MZd7YXKwXjHZcr5izgQJZ3pZ847my7bU22XRgGuNgjL5qbCrxQbBBuGp3rAiw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784410916534443.2235962044904; Sat, 18 Jul 2026 14:41:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCmr-0006vB-9M; Sat, 18 Jul 2026 17:41:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCmp-0006tJ-Je; Sat, 18 Jul 2026 17:41:31 -0400 Received: from pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.245.243.92]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCmn-0002bq-6C; Sat, 18 Jul 2026 17:41:31 -0400 Received: from ip-10-5-12-219.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.12.219]) by internal-pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:41:25 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.111:13975] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.0.115:2525] with esmtp (Farcaster) id 044e47ad-35f4-4ad8-bc90-8ab9211c7c66; Sat, 18 Jul 2026 21:41:25 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB002.ant.amazon.com (10.250.64.231) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:41:25 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:41:15 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784410889; x=1815946889; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=awzIk94kos0bcX0liFwYKNF1YxlENdf9a4daDDrtMUk=; b=SWYOvrp8Z7abd5UzqO8YA1GP/vBAtoQpRkiNTqeDqyAnDZn9F6klFY74 JnWuzBuv0rhI1Yt1Gj06FEwJzHj1zxuxHBui08TBwAQZ/Gd2JrbJs/tpR EUkRru+/wCfKuSVM41siV42GB16NTs2IY4IcIWD6eG7Qujqv2d1AP1rz9 MqqB5Jhv1nAVVDb9BkhD8KU6+/SXaemb6ccoKbYsPjSRYqdnYoVj7bW+y u6kYP6fF+bAh4OQkrgOGpBQAvnK1/lKe/llWedTqurzEaoLL/Q6lPCBSy hiY2duMWR4+cSpvwvP3ZR47XnXlIKjds9N3IDlrRfETk9TWXwOuhYdMn+ g==; X-CSE-ConnectionGUID: OO1gTnKYSaeSh1fhHXiUsw== X-CSE-MsgGUID: WQpDCtS+RQKQxqA1ce6hVQ== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23422566" X-Farcaster-Flow-ID: 044e47ad-35f4-4ad8-bc90-8ab9211c7c66 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 016/137] hw/hppa: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:34:51 +0000 Message-ID: <20260718213652.37673-17-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D046UWB002.ant.amazon.com (10.13.139.181) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.245.243.92; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784410917818158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/hppa to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/hppa/machine.c:268 | OBJECT(machine) | "lasi" | lasi_init() static hel= per called from board init; thread Object *parent from caller hw/hppa/machine.c:278 | OBJECT(machine) | "dino" | dino_init() static hel= per called from board init; thread Object *parent from caller hw/hppa/machine.c:301 | OBJECT(machine) | "cpu[*]" | board init CPU creat= ion loop; auto-index child of machine hw/hppa/machine.c:414 | OBJECT(machine) | "artist" | board init tail; on-= board Artist graphics owned by machine hw/hppa/machine.c:431 | OBJECT(machine) | "diva-gsp" | board init tail; o= n-board Diva GSP PCI card owned by machine hw/hppa/machine.c:446 | OBJECT(machine) | "ohci" | board init tail; on-bo= ard OHCI USB controller owned by machine hw/hppa/machine.c:449 | OBJECT(pci_dev) | "usb-kbd" | USB keyboard is chi= ld of the OHCI controller it plugs into hw/hppa/machine.c:450 | OBJECT(pci_dev) | "usb-mouse" | USB mouse is chil= d of the OHCI controller it plugs into hw/hppa/machine.c:617 | OBJECT(machine) | "lasips2" | HP 715 board init; = on-board Lasi PS/2 controller hw/hppa/machine.c:709 | OBJECT(machine) | "lasips2" | HP B160L board init= ; on-board Lasi PS/2 controller hw/hppa/machine.c:724 | OBJECT(machine) | "scsi" | HP B160L board init; o= n-board LSI SCSI HBA hw/hppa/machine.c:736 | OBJECT(machine) | "astro" | astro_init() static h= elper called from board init; thread Object *parent from caller hw/hppa/machine.c:776 | OBJECT(machine) | "scsi" | HP C3700 board init; o= n-board LSI SCSI HBA Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/hppa/machine.c | 60 ++++++++++++++++++++++++++--------------------- 1 file changed, 33 insertions(+), 27 deletions(-) diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c index a4b8e9ee77..729524e065 100644 --- a/hw/hppa/machine.c +++ b/hw/hppa/machine.c @@ -261,24 +261,24 @@ static FWCfgState *create_fw_cfg(MachineState *ms, PC= IBus *pci_bus, return fw_cfg; } =20 -static LasiState *lasi_init(void) +static LasiState *lasi_init(Object *parent) { DeviceState *dev; =20 - dev =3D qdev_new_orphan(TYPE_LASI_CHIP); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + dev =3D qdev_new(parent, "lasi", TYPE_LASI_CHIP); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 return LASI_CHIP(dev); } =20 -static DinoState *dino_init(MemoryRegion *addr_space) +static DinoState *dino_init(Object *parent, MemoryRegion *addr_space) { DeviceState *dev; =20 - dev =3D qdev_new_orphan(TYPE_DINO_PCI_HOST_BRIDGE); + dev =3D qdev_new(parent, "dino", TYPE_DINO_PCI_HOST_BRIDGE); object_property_set_link(OBJECT(dev), "memory-as", OBJECT(addr_space), &error_fatal); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 return DINO_PCI_HOST_BRIDGE(dev); } @@ -298,7 +298,8 @@ static TranslateFn *machine_HP_common_init_cpus(Machine= State *machine) =20 /* Create CPUs. */ for (unsigned int i =3D 0; i < smp_cpus; i++) { - cpu[i] =3D HPPA_CPU(cpu_create_orphan(machine->cpu_type)); + cpu[i] =3D HPPA_CPU(cpu_create(OBJECT(machine), "cpu[*]", + machine->cpu_type)); } =20 /* Initialize memory */ @@ -411,11 +412,11 @@ static void machine_HP_common_init_tail(MachineState = *machine, PCIBus *pci_bus, lasi_dev =3D hpm->lasi_dev; if (lasi_dev && machine->enable_graphics && vga_interface_type !=3D VGA_NONE) { - dev =3D qdev_new_orphan("artist"); + dev =3D qdev_new(OBJECT(machine), "artist", "artist"); s =3D SYS_BUS_DEVICE(dev); bool disabled =3D object_property_get_bool(OBJECT(dev), "disable",= NULL); if (!disabled) { - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); vga_interface_created =3D true; sysbus_mmio_map(s, 0, translate(NULL, LASI_GFX_HPA)); sysbus_mmio_map(s, 1, translate(NULL, ARTIST_FB_ADDR)); @@ -428,7 +429,8 @@ static void machine_HP_common_init_tail(MachineState *m= achine, PCIBus *pci_bus, =20 if (pci_bus && hppa_is_pa20(&cpu[0]->env)) { /* BMC board: HP Diva GSP PCI card */ - pci_dev =3D pci_new_multifunction_orphan(PCI_DEVFN(2, 0), "diva-gs= p"); + pci_dev =3D pci_new_multifunction(OBJECT(machine), "diva-gsp", + PCI_DEVFN(2, 0), "diva-gsp"); if (!lasi_dev) { /* bind default keyboard/serial to Diva card */ qdev_prop_set_chr(DEVICE(pci_dev), "chardev1", serial_hd(0)); @@ -436,18 +438,19 @@ static void machine_HP_common_init_tail(MachineState = *machine, PCIBus *pci_bus, qdev_prop_set_chr(DEVICE(pci_dev), "chardev3", serial_hd(2)); qdev_prop_set_chr(DEVICE(pci_dev), "chardev4", serial_hd(3)); } - pci_realize_and_unref(pci_dev, pci_bus, &error_fatal); + qdev_realize(DEVICE(pci_dev), BUS(pci_bus), &error_fatal); } =20 /* create USB OHCI controller for USB keyboard & mouse on Astro machin= es */ if (!lasi_dev && machine->enable_graphics && defaults_enabled()) { USBBus *usb_bus; =20 - pci_create_simple_orphan(pci_bus, -1, "pci-ohci"); + pci_dev =3D pci_create_simple(OBJECT(machine), "ohci", pci_bus, -1, + "pci-ohci"); usb_bus =3D USB_BUS(object_resolve_type_unambiguous(TYPE_USB_BUS, &error_abort)); - usb_create_simple_orphan(usb_bus, "usb-kbd"); - usb_create_simple_orphan(usb_bus, "usb-mouse"); + usb_create_simple(OBJECT(pci_dev), "usb-kbd", usb_bus, "usb-kbd"); + usb_create_simple(OBJECT(pci_dev), "usb-mouse", usb_bus, "usb-mous= e"); } =20 /* register power switch emulation */ @@ -597,7 +600,7 @@ static void machine_HP_715_init(MachineState *machine) assert(isa_bus); =20 /* Init Lasi chip */ - lasi_dev =3D DEVICE(lasi_init()); + lasi_dev =3D DEVICE(lasi_init(OBJECT(machine))); hpm->lasi_dev =3D lasi_dev; memory_region_add_subregion(addr_space, translate(NULL, LASI_HPA_715), sysbus_mmio_get_region( @@ -614,8 +617,8 @@ static void machine_HP_715_init(MachineState *machine) parallel_hds[0]); =20 /* PS/2 Keyboard/Mouse */ - dev =3D qdev_new_orphan(TYPE_LASIPS2); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + dev =3D qdev_new(OBJECT(machine), "lasips2", TYPE_LASIPS2); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, qdev_get_gpio_in(lasi_dev, LASI_IRQ_PS2KBD_HPA)); memory_region_add_subregion(addr_space, @@ -672,14 +675,14 @@ static void machine_HP_B160L_init(MachineState *machi= ne) } =20 /* Init Lasi chip */ - lasi_dev =3D DEVICE(lasi_init()); + lasi_dev =3D DEVICE(lasi_init(OBJECT(machine))); hpm->lasi_dev =3D lasi_dev; memory_region_add_subregion(addr_space, translate(NULL, LASI_HPA), sysbus_mmio_get_region( SYS_BUS_DEVICE(lasi_dev), 0)); =20 /* Init Dino (PCI host bus chip). */ - dino_dev =3D DEVICE(dino_init(addr_space)); + dino_dev =3D DEVICE(dino_init(OBJECT(machine), addr_space)); memory_region_add_subregion(addr_space, translate(NULL, DINO_HPA), sysbus_mmio_get_region( SYS_BUS_DEVICE(dino_dev), 0)); @@ -706,8 +709,8 @@ static void machine_HP_B160L_init(MachineState *machine) parallel_hds[0]); =20 /* PS/2 Keyboard/Mouse */ - dev =3D qdev_new_orphan(TYPE_LASIPS2); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + dev =3D qdev_new(OBJECT(machine), "lasips2", TYPE_LASIPS2); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, qdev_get_gpio_in(lasi_dev, LASI_IRQ_PS2KBD_HPA)); memory_region_add_subregion(addr_space, @@ -721,7 +724,8 @@ static void machine_HP_B160L_init(MachineState *machine) =20 /* SCSI disk setup. */ if (drive_get_max_bus(IF_SCSI) >=3D 0) { - dev =3D DEVICE(pci_create_simple_orphan(pci_bus, -1, "lsi53c895a")= ); + dev =3D DEVICE(pci_create_simple(OBJECT(machine), "scsi", pci_bus,= -1, + "lsi53c895a")); lsi53c8xx_handle_legacy_cmdline(dev); } =20 @@ -729,15 +733,15 @@ static void machine_HP_B160L_init(MachineState *machi= ne) machine_HP_common_init_tail(machine, pci_bus, translate); } =20 -static AstroState *astro_init(void) +static AstroState *astro_init(Object *parent) { DeviceState *dev; =20 - dev =3D qdev_new_orphan(TYPE_ASTRO_CHIP); + dev =3D qdev_new(parent, "astro", TYPE_ASTRO_CHIP); object_property_set_int(OBJECT(dev), "phys-addr-bits", hppa_phys_addr_bits(&cpu[0]->env), &error_abort); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 return ASTRO_CHIP(dev); } @@ -763,7 +767,7 @@ static void machine_HP_C3700_init(MachineState *machine) } =20 /* Init Astro and the Elroys (PCI host bus chips). */ - astro =3D astro_init(); + astro =3D astro_init(OBJECT(machine)); astro_dev =3D DEVICE(astro); memory_region_add_subregion(addr_space, translate(NULL, ASTRO_HPA), sysbus_mmio_get_region( @@ -773,7 +777,9 @@ static void machine_HP_C3700_init(MachineState *machine) =20 /* SCSI disk setup. */ if (drive_get_max_bus(IF_SCSI) >=3D 0) { - DeviceState *dev =3D DEVICE(pci_create_simple_orphan(pci_bus, -1, = "lsi53c895a")); + DeviceState *dev =3D DEVICE(pci_create_simple(OBJECT(machine), "sc= si", + pci_bus, -1, + "lsi53c895a")); lsi53c8xx_handle_legacy_cmdline(dev); } =20 --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784410999; cv=none; d=zohomail.com; s=zohoarc; b=b4QIMEDF6xMBkPUC8xLh4z0KCK2XAHlIW1pyb+Lns0jJ1EAif3v9NaUxWyC3Tftq2PTnUmY6L9R6CBhHmvzZKQA7rz2J1x0PViuiGbkd70mZP65ELdi0eE7CL02hhxubb57Kzp0ZNJnzZFdIzrvw9szEkUZSNQDrAT0Uob/F9JA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784410999; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=aC76E76BUMCHktjAAmYwiTASIngvq0xbC9gJYETSLVY=; b=GI13M7zZg9WSWredDjDjT0B3pGWndhU2wOSc7x4e3K7OhVc6h1J0FAAy7WHbOMhrFKl5DwGepA50AKaVdT7G/5E35t6llaE3ISOpPWQfrCeUF/WdfE+E18shYK3r/KQjtR05TlHYl/2ZKciE5NNhRbZM7VlOfBhlyAcEOMvguHw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178441099993725.036743196309658; Sat, 18 Jul 2026 14:43:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCn1-0007Qp-Du; Sat, 18 Jul 2026 17:41:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCmz-0007Ll-Fr; Sat, 18 Jul 2026 17:41:41 -0400 Received: from pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.42.203.116]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCmw-0002cl-Uy; Sat, 18 Jul 2026 17:41:41 -0400 Received: from ip-10-5-6-203.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.6.203]) by internal-pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:41:35 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.234:10530] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.48.250:2525] with esmtp (Farcaster) id 45655989-78d4-452c-ba66-fdcc5d0266da; Sat, 18 Jul 2026 21:41:35 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA002.ant.amazon.com (10.250.64.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:41:34 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:41:25 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784410898; x=1815946898; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=aC76E76BUMCHktjAAmYwiTASIngvq0xbC9gJYETSLVY=; b=BRasMp0cWPkEoLbw9edpWGUHbk1NpEDAYZfzDv40/5+Rj1GrvOwOXxL6 aM1ZXpAefShpNBWwlgm5kLOif0fWRsj0Ro6lgJWaKQZ2oucvZcGvQambg bU8oCOwORYTGmQlGFo7sZotGFT4pXbr3imcBG3FN2ecmkeObHf3voHw9X pPjj/iJGY9iUYkn4CwX7JuIyOXjjIgPxJYP3MI4B2c6Fh73dntUMTp4g5 0yXtltsd5skm+hXZkiOw3CtfdculfbZCSRfijhF2oUy3vjhJH65MjQGMK drbZ7PE0DGGpp06w3ydYa3KvNNavIDznuL0FDdcVlw7dWk8fJQSSUQ+AF w==; X-CSE-ConnectionGUID: B46q3CUBRfWmO7SVnZq9xQ== X-CSE-MsgGUID: GuEFUcqsQo+Vg47Z3H9CjA== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23939545" X-Farcaster-Flow-ID: 45655989-78d4-452c-ba66-fdcc5d0266da From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 017/137] hw/microblaze: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:34:52 +0000 Message-ID: <20260718213652.37673-18-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D046UWB002.ant.amazon.com (10.13.139.181) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.42.203.116; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411001766158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/microblaze to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/microblaze/petalogix_ml605_mmu.c:113 | OBJECT(machine) | "intc" | boar= d init(); single XPS interrupt controller owned by machine hw/microblaze/petalogix_ml605_mmu.c:129 | OBJECT(machine) | "timer" | boa= rd init(); single XPS timer block owned by machine hw/microblaze/petalogix_ml605_mmu.c:138 | OBJECT(machine) | "xilinx-eth" = | board init(); keep existing child name; drop now-redundant object_propert= y_add_child() hw/microblaze/petalogix_ml605_mmu.c:139 | OBJECT(machine) | "xilinx-dma" = | board init(); keep existing child name; drop now-redundant object_propert= y_add_child() hw/microblaze/petalogix_ml605_mmu.c:177 | OBJECT(machine) | "spi" | board= init(); single XPS SPI controller owned by machine hw/microblaze/petalogix_ml605_mmu.c:191 | OBJECT(machine) | "spi-flash[*]= " | board init(); NUM_SPI_FLASHES instances in loop, auto-index; plugged on= to SPI bus but lifetime-owned by machine hw/microblaze/petalogix_s3adsp1800_mmu.c:110 | OBJECT(machine) | "intc" |= board init(); single XPS interrupt controller owned by machine hw/microblaze/petalogix_s3adsp1800_mmu.c:122 | OBJECT(machine) | "uart" |= board init(); single Xilinx uartlite owned by machine hw/microblaze/petalogix_s3adsp1800_mmu.c:130 | OBJECT(machine) | "timer" = | board init(); single XPS timer block owned by machine hw/microblaze/petalogix_s3adsp1800_mmu.c:138 | OBJECT(machine) | "eth" | = board init(); single XPS ethernetlite owned by machine Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/microblaze/petalogix_ml605_mmu.c | 28 ++++++++++-------------- hw/microblaze/petalogix_s3adsp1800_mmu.c | 16 +++++++------- 2 files changed, 20 insertions(+), 24 deletions(-) diff --git a/hw/microblaze/petalogix_ml605_mmu.c b/hw/microblaze/petalogix_= ml605_mmu.c index 178cfd4a5e..031de37cec 100644 --- a/hw/microblaze/petalogix_ml605_mmu.c +++ b/hw/microblaze/petalogix_ml605_mmu.c @@ -110,10 +110,10 @@ petalogix_ml605_init(MachineState *machine) 64 * KiB, 2, 0x89, 0x18, 0x0000, 0x0, 0); =20 =20 - dev =3D qdev_new_orphan("xlnx.xps-intc"); + dev =3D qdev_new(OBJECT(machine), "intc", "xlnx.xps-intc"); qdev_prop_set_enum(dev, "endianness", ENDIAN_MODE_LITTLE); qdev_prop_set_uint32(dev, "kind-of-intr", 1 << TIMER_IRQ); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, INTC_BASEADDR); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, qdev_get_gpio_in(DEVICE(cpu), MB_CPU_IRQ)); @@ -126,21 +126,17 @@ petalogix_ml605_init(MachineState *machine) DEVICE_LITTLE_ENDIAN); =20 /* 2 timers at irq 2 @ 100 Mhz. */ - dev =3D qdev_new_orphan("xlnx.xps-timer"); + dev =3D qdev_new(OBJECT(machine), "timer", "xlnx.xps-timer"); qdev_prop_set_enum(dev, "endianness", ENDIAN_MODE_LITTLE); qdev_prop_set_uint32(dev, "one-timer-only", 0); qdev_prop_set_uint32(dev, "clock-frequency", 100 * 1000000); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, TIMER_BASEADDR); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, irq[TIMER_IRQ]); =20 /* axi ethernet and dma initialization. */ - eth0 =3D qdev_new_orphan("xlnx.axi-ethernet"); - dma =3D qdev_new_orphan("xlnx.axi-dma"); - - /* FIXME: attach to the sysbus instead */ - object_property_add_child(qdev_get_machine(), "xilinx-eth", OBJECT(eth= 0)); - object_property_add_child(qdev_get_machine(), "xilinx-dma", OBJECT(dma= )); + eth0 =3D qdev_new(OBJECT(machine), "xilinx-eth", "xlnx.axi-ethernet"); + dma =3D qdev_new(OBJECT(machine), "xilinx-dma", "xlnx.axi-dma"); =20 ds =3D object_property_get_link(OBJECT(dma), "axistream-connected-target", NULL); @@ -153,7 +149,7 @@ petalogix_ml605_init(MachineState *machine) &error_abort); object_property_set_link(OBJECT(eth0), "axistream-control-connected", = cs, &error_abort); - sysbus_realize_and_unref(SYS_BUS_DEVICE(eth0), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(eth0), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(eth0), 0, AXIENET_BASEADDR); sysbus_connect_irq(SYS_BUS_DEVICE(eth0), 0, irq[AXIENET_IRQ]); =20 @@ -166,7 +162,7 @@ petalogix_ml605_init(MachineState *machine) &error_abort); object_property_set_link(OBJECT(dma), "axistream-control-connected", c= s, &error_abort); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dma), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dma), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dma), 0, AXIDMA_BASEADDR); sysbus_connect_irq(SYS_BUS_DEVICE(dma), 0, irq[AXIDMA_IRQ0]); sysbus_connect_irq(SYS_BUS_DEVICE(dma), 1, irq[AXIDMA_IRQ1]); @@ -174,11 +170,11 @@ petalogix_ml605_init(MachineState *machine) { SSIBus *spi; =20 - dev =3D qdev_new_orphan("xlnx.xps-spi"); + dev =3D qdev_new(OBJECT(machine), "spi", "xlnx.xps-spi"); qdev_prop_set_enum(dev, "endianness", ENDIAN_MODE_LITTLE); qdev_prop_set_uint8(dev, "num-ss-bits", NUM_SPI_FLASHES); busdev =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(busdev, &error_fatal); + sysbus_realize(busdev, &error_fatal); sysbus_mmio_map(busdev, 0, SPI_BASEADDR); sysbus_connect_irq(busdev, 0, irq[SPI_IRQ]); =20 @@ -188,14 +184,14 @@ petalogix_ml605_init(MachineState *machine) dinfo =3D drive_get(IF_MTD, 0, i); qemu_irq cs_line; =20 - dev =3D qdev_new_orphan("n25q128"); + dev =3D qdev_new(OBJECT(machine), "spi-flash[*]", "n25q128"); if (dinfo) { qdev_prop_set_drive_err(dev, "drive", blk_by_legacy_dinfo(dinfo), &error_fatal); } qdev_prop_set_uint8(dev, "cs", i); - qdev_realize_and_unref(dev, BUS(spi), &error_fatal); + qdev_realize(dev, BUS(spi), &error_fatal); =20 cs_line =3D qdev_get_gpio_in_named(dev, SSI_GPIO_CS, 0); sysbus_connect_irq(busdev, i+1, cs_line); diff --git a/hw/microblaze/petalogix_s3adsp1800_mmu.c b/hw/microblaze/petal= ogix_s3adsp1800_mmu.c index 91c1d64451..b4327ad493 100644 --- a/hw/microblaze/petalogix_s3adsp1800_mmu.c +++ b/hw/microblaze/petalogix_s3adsp1800_mmu.c @@ -107,11 +107,11 @@ petalogix_s3adsp1800_init(MachineState *machine) dinfo ? blk_by_legacy_dinfo(dinfo) : NULL, 64 * KiB, 1, 0x89, 0x18, 0x0000, 0x0, 1); =20 - dev =3D qdev_new_orphan("xlnx.xps-intc"); + dev =3D qdev_new(OBJECT(machine), "intc", "xlnx.xps-intc"); qdev_prop_set_enum(dev, "endianness", endianness); qdev_prop_set_uint32(dev, "kind-of-intr", 1 << ETHLITE_IRQ | 1 << UARTLITE_IRQ); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, INTC_BASEADDR); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, qdev_get_gpio_in(DEVICE(cpu), MB_CPU_IRQ)); @@ -119,28 +119,28 @@ petalogix_s3adsp1800_init(MachineState *machine) irq[i] =3D qdev_get_gpio_in(dev, i); } =20 - dev =3D qdev_new_orphan(TYPE_XILINX_UARTLITE); + dev =3D qdev_new(OBJECT(machine), "uart", TYPE_XILINX_UARTLITE); qdev_prop_set_enum(dev, "endianness", endianness); qdev_prop_set_chr(dev, "chardev", serial_hd(0)); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, UARTLITE_BASEADDR); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, irq[UARTLITE_IRQ]); =20 /* 2 timers at irq 2 @ 62 Mhz. */ - dev =3D qdev_new_orphan("xlnx.xps-timer"); + dev =3D qdev_new(OBJECT(machine), "timer", "xlnx.xps-timer"); qdev_prop_set_enum(dev, "endianness", endianness); qdev_prop_set_uint32(dev, "one-timer-only", 0); qdev_prop_set_uint32(dev, "clock-frequency", 62 * 1000000); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, TIMER_BASEADDR); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, irq[TIMER_IRQ]); =20 - dev =3D qdev_new_orphan("xlnx.xps-ethernetlite"); + dev =3D qdev_new(OBJECT(machine), "eth", "xlnx.xps-ethernetlite"); qdev_prop_set_enum(dev, "endianness", endianness); qemu_configure_nic_device(dev, true, NULL); qdev_prop_set_uint32(dev, "tx-ping-pong", 0); qdev_prop_set_uint32(dev, "rx-ping-pong", 0); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, ETHLITE_BASEADDR); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, irq[ETHLITE_IRQ]); =20 --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411013; cv=none; d=zohomail.com; s=zohoarc; b=By5JuiNbJosAvXhzjP1z565ePEfyYas6TCyN101qXvgCfYM97Eda+iPntsBoOAFxDSdhhALb0Wgucd+/5zxweY2KWyUmjo8c1Z9X9X+2n/nDSlKuOGv3L47rdVmTUoM3VOeE6rmkvgM6zyYm5v9KygRMzPGaG/exr88ra1c54bg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411013; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=naYPeRYfk+D1ZF2GbPXmy6pptIpnqkKxXqkvenBvOwE=; b=k1gqgesHaX5EtCoQ6gnvYpd08DYY9SPE4C4gsVO8tcQ5675H8JQpp2pKQlvwRauH9AtoJ0RGwmiUGypxYbeRuKsOrnq7bsJfW1yCFtI5EfmHcRM+u88/C41JtdhfwXL4FdORr9EMkzbJsdqbJ1+Wd34jCzk7EIYEqf3lMcpMg1g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411013589374.2803114349816; Sat, 18 Jul 2026 14:43:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCnW-0008DP-5c; Sat, 18 Jul 2026 17:42:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCnU-00086d-4V; Sat, 18 Jul 2026 17:42:12 -0400 Received: from pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.42.203.116]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCnS-0002dp-0w; Sat, 18 Jul 2026 17:42:11 -0400 Received: from ip-10-5-9-48.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.9.48]) by internal-pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:42:06 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.104:23309] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.41.246:2525] with esmtp (Farcaster) id 8a030f38-ec10-4261-885e-5303fd3ac82a; Sat, 18 Jul 2026 21:42:06 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB001.ant.amazon.com (10.250.64.248) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:42:06 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:41:56 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784410930; x=1815946930; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=naYPeRYfk+D1ZF2GbPXmy6pptIpnqkKxXqkvenBvOwE=; b=nq4IKtMzCbWm8HvtSvfognIlYANoNBC96ngLk8XaFFnNlXpI1s40lipn i7C8lewy4T7ZslrgoaQ6jmXZ4gRb+y6Rd69dO3v0s60KMOJnRzOiqMUAL Oh/RJttjrGRab4mveP07B3MlYh9OtILhzrrNLLWnq2D1HVd8KcOse/keT MnTeoW5wpdQrCUEGu7WMWSzdiJ0k4RoEi8wL5LObMv0iMpDxZORpLLPO6 TwdDV6WeQlmhTl0yFc3qeKztXxpJ+2b10DjkEEt8Vi0wEAZxQlJnPLIiU 3Gf/zeSILYku1tiD3qCN74LYoMkFmG/7LmtQhkDztnEHWPcmwgmlj529R g==; X-CSE-ConnectionGUID: +B4dnvPHQxGvjjI9B/iYEQ== X-CSE-MsgGUID: 0DbFYgwjQayPsRc6SfYkMg== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23939565" X-Farcaster-Flow-ID: 8a030f38-ec10-4261-885e-5303fd3ac82a From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 018/137] hw/sh4: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:34:53 +0000 Message-ID: <20260718213652.37673-19-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D039UWA002.ant.amazon.com (10.13.139.32) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.42.203.116; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411015708158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/sh4 to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/sh4/r2d.c:254 | cpu_create | OBJECT(machine) | "cpu" | board init: singl= e CPU owned by machine hw/sh4/r2d.c:269 | qdev_new | OBJECT(machine) | "pci-host" | board init: SH= PCI host bridge owned by machine hw/sh4/r2d.c:280 | qdev_new | OBJECT(machine) | "sm501" | board init: on-bo= ard SM501 companion chip owned by machine hw/sh4/r2d.c:292 | qdev_new | OBJECT(machine) | "ide" | board init: on-boar= d CF/IDE controller owned by machine hw/sh4/r2d.c:323 | usb_create_simple | OBJECT(BUS(usb_bus)->parent) | "usb-= kbd" | keyboard hangs off the SM501 OHCI controller that owns the USB bus hw/sh4/sh7750.c:765 | qdev_new | parent | "sci" | SoC helper: threaded Obje= ct *parent from board; on-chip SCI UART hw/sh4/sh7750.c:782 | qdev_new | parent | "scif" | SoC helper: threaded Obj= ect *parent from board; on-chip SCIF UART Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/sh4/r2d.c | 20 +++++++++++--------- hw/sh4/sh7750.c | 11 ++++++----- include/hw/sh4/sh.h | 3 ++- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/hw/sh4/r2d.c b/hw/sh4/r2d.c index 9f313a77cb..c0f8cad335 100644 --- a/hw/sh4/r2d.c +++ b/hw/sh4/r2d.c @@ -251,7 +251,8 @@ static void r2d_init(MachineState *machine) USBBus *usb_bus; r2d_fpga_t *fpga; =20 - cpu =3D SUPERH_CPU(cpu_create_orphan(machine->cpu_type)); + cpu =3D SUPERH_CPU(cpu_create(OBJECT(machine), "cpu", + machine->cpu_type)); env =3D &cpu->env; =20 reset_info =3D g_new0(ResetData, 1); @@ -263,12 +264,12 @@ static void r2d_init(MachineState *machine) memory_region_init_ram(sdram, NULL, "r2d.sdram", SDRAM_SIZE, &error_fa= tal); memory_region_add_subregion(address_space_mem, SDRAM_BASE, sdram); /* Register peripherals */ - s =3D sh7750_init(cpu, address_space_mem); + s =3D sh7750_init(OBJECT(machine), cpu, address_space_mem); fpga =3D r2d_fpga_init(address_space_mem, 0x04000000, sh7750_irl(s)); =20 - dev =3D qdev_new_orphan("sh_pci"); + dev =3D qdev_new(OBJECT(machine), "pci-host", "sh_pci"); busdev =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(busdev, &error_fatal); + sysbus_realize(busdev, &error_fatal); pci_bus =3D PCI_BUS(qdev_get_child_bus(dev, "pci")); sysbus_mmio_map(busdev, 0, P4ADDR(0x1e200000)); sysbus_mmio_map(busdev, 1, A7ADDR(0x1e200000)); @@ -277,23 +278,23 @@ static void r2d_init(MachineState *machine) sysbus_connect_irq(busdev, 2, &fpga->irq[PCI_INTC]); sysbus_connect_irq(busdev, 3, &fpga->irq[PCI_INTD]); =20 - dev =3D qdev_new_orphan("sysbus-sm501"); + dev =3D qdev_new(OBJECT(machine), "sm501", "sysbus-sm501"); busdev =3D SYS_BUS_DEVICE(dev); qdev_prop_set_uint32(dev, "vram-size", SM501_VRAM_SIZE); qdev_prop_set_uint64(dev, "dma-offset", 0x10000000); qdev_prop_set_chr(dev, "chardev", serial_hd(2)); - sysbus_realize_and_unref(busdev, &error_fatal); + sysbus_realize(busdev, &error_fatal); sysbus_mmio_map(busdev, 0, 0x10000000); sysbus_mmio_map(busdev, 1, 0x13e00000); sysbus_connect_irq(busdev, 0, &fpga->irq[SM501]); =20 /* onboard CF (True IDE mode, Master only). */ dinfo =3D drive_get(IF_IDE, 0, 0); - dev =3D qdev_new_orphan("mmio-ide"); + dev =3D qdev_new(OBJECT(machine), "ide", "mmio-ide"); busdev =3D SYS_BUS_DEVICE(dev); sysbus_connect_irq(busdev, 0, &fpga->irq[CF_IDE]); qdev_prop_set_uint32(dev, "shift", 1); - sysbus_realize_and_unref(busdev, &error_fatal); + sysbus_realize(busdev, &error_fatal); sysbus_mmio_map(busdev, 0, 0x14001000); sysbus_mmio_map(busdev, 1, 0x1400080c); mmio_ide_init_drives(dev, dinfo, NULL); @@ -320,7 +321,8 @@ static void r2d_init(MachineState *machine) /* USB keyboard */ usb_bus =3D USB_BUS(object_resolve_type_unambiguous(TYPE_USB_BUS, &error_abort)); - usb_create_simple_orphan(usb_bus, "usb-kbd"); + usb_create_simple(OBJECT(BUS(usb_bus)->parent), "usb-kbd", + usb_bus, "usb-kbd"); =20 /* Todo: register on board registers */ memset(&boot_params, 0, sizeof(boot_params)); diff --git a/hw/sh4/sh7750.c b/hw/sh4/sh7750.c index 3eb47bc660..ff9724fadf 100644 --- a/hw/sh4/sh7750.c +++ b/hw/sh4/sh7750.c @@ -710,7 +710,8 @@ static const MemoryRegionOps sh7750_mmct_ops =3D { .endianness =3D DEVICE_NATIVE_ENDIAN, }; =20 -SH7750State *sh7750_init(SuperHCPU *cpu, MemoryRegion *sysmem) +SH7750State *sh7750_init(Object *parent, SuperHCPU *cpu, + MemoryRegion *sysmem) { SH7750State *s; DeviceState *dev; @@ -762,11 +763,11 @@ SH7750State *sh7750_init(SuperHCPU *cpu, MemoryRegion= *sysmem) cpu->env.intc_handle =3D &s->intc; =20 /* SCI */ - dev =3D qdev_new_orphan(TYPE_SH_SERIAL); + dev =3D qdev_new(parent, "sci", TYPE_SH_SERIAL); dev->id =3D g_strdup("sci"); qdev_prop_set_chr(dev, "chardev", serial_hd(0)); sb =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(sb, &error_fatal); + sysbus_realize(sb, &error_fatal); sysbus_mmio_map(sb, 0, 0xffe00000); alias =3D g_malloc(sizeof(*alias)); mr =3D sysbus_mmio_get_region(sb, 0); @@ -779,12 +780,12 @@ SH7750State *sh7750_init(SuperHCPU *cpu, MemoryRegion= *sysmem) qdev_connect_gpio_out_named(dev, "tei", 0, s->intc.irqs[SCI1_TEI]); =20 /* SCIF */ - dev =3D qdev_new_orphan(TYPE_SH_SERIAL); + dev =3D qdev_new(parent, "scif", TYPE_SH_SERIAL); dev->id =3D g_strdup("scif"); qdev_prop_set_chr(dev, "chardev", serial_hd(1)); qdev_prop_set_uint8(dev, "features", SH_SERIAL_FEAT_SCIF); sb =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(sb, &error_fatal); + sysbus_realize(sb, &error_fatal); sysbus_mmio_map(sb, 0, 0xffe80000); alias =3D g_malloc(sizeof(*alias)); mr =3D sysbus_mmio_get_region(sb, 0); diff --git a/include/hw/sh4/sh.h b/include/hw/sh4/sh.h index c82feef8d0..b7ec234212 100644 --- a/include/hw/sh4/sh.h +++ b/include/hw/sh4/sh.h @@ -36,7 +36,8 @@ /* sh7750.c */ struct SH7750State; =20 -struct SH7750State *sh7750_init(SuperHCPU *cpu, MemoryRegion *sysmem); +struct SH7750State *sh7750_init(Object *parent, SuperHCPU *cpu, + MemoryRegion *sysmem); =20 #define TYPE_SH_SERIAL "sh-serial" #define SH_SERIAL_FEAT_SCIF (1 << 0) --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784410983; cv=none; d=zohomail.com; s=zohoarc; b=T09xjdh3tvlGSGPF3iGcoQki9EIAtpyXkhDSNiqDun62TIp+pHHrPs1KfZ/XXcblx4UeCPnpanEpA9JhdcBpJtGydzwntxgsW9hCeJhm00VuwMMpcQNm7uZMzL7ikQ60C32gDb/46Zf2PulTKeAW+HGkGl4aarzD89mwPeuGUcI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784410983; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=em6rgfP+iQqy87v7/SDRTbIww6oaxtM2e2YTN4pPG28=; b=lJ/YxQMf5S09tPHBDxBVYNqttMoBbzWINRqwBuLmkt9IA9eAkQacdzSU3AfeEXaLr2SfWe8B+bMF6AV5FdJH4/HcR75+NG/oGFteBflDHj9t47mDQTq/Q0DLUXsfok1ivI3ZuY2/j9jBU0qc227Vdy6/IjlXQtRAXtEPEd9UIKc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784410983363232.60612288040045; Sat, 18 Jul 2026 14:43:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCnw-0000CN-53; Sat, 18 Jul 2026 17:42:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCne-0008Pp-HA; Sat, 18 Jul 2026 17:42:26 -0400 Received: from pdx-out-012.esa.us-west-2.outbound.mail-perimeter.amazon.com ([35.162.73.231]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCnc-0002et-7K; Sat, 18 Jul 2026 17:42:22 -0400 Received: from ip-10-5-6-203.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.6.203]) by internal-pdx-out-012.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:42:16 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.51:14236] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.0.115:2525] with esmtp (Farcaster) id fc02224a-a538-4c89-902e-222044210a8b; Sat, 18 Jul 2026 21:42:15 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC002.ant.amazon.com (10.250.64.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:42:15 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:42:06 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784410940; x=1815946940; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=em6rgfP+iQqy87v7/SDRTbIww6oaxtM2e2YTN4pPG28=; b=LCjeK+ZSwhYTX6IunkgfpOQ4W6msosJextMWBeIO9lToqb+AbFrFp/Z0 Z20/jwEQO7sTVXyMNxjQd3n+c8ZgbVtYDAYGyn0lQepuwTuTaP3b946By U9pj9Tx+QGxH96zooNryaZ0+UOmYFyGY7ZiPYKrVTsXmtx1/Y5h8YDvz9 5ysI/HhNzZvB8wCcvI4Nxch2Uoqf4Dpr1pyPuTwRXrs7x1t/Jgvap9gcg XDfIpBnR3nQCHN7pNt6Icsu5okcDxZcJoB+vpFlcM1q/ULh5ciEyV28F4 WA3aZomtjWmyNd6OFcU0pAre4WE0KLjqwY/rPCVXo0zKicgSsQ7r7h/yk Q==; X-CSE-ConnectionGUID: XxjJ5GWbQGCDjC9yAxYWyQ== X-CSE-MsgGUID: TRur33rHR2SeQZkDUDDh+A== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23715600" X-Farcaster-Flow-ID: fc02224a-a538-4c89-902e-222044210a8b From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 019/137] hw/s390x: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:34:54 +0000 Message-ID: <20260718213652.37673-20-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D039UWA002.ant.amazon.com (10.13.139.32) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=35.162.73.231; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-012.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784410985839158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/s390x to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): file:line | parent | name | rationale ap-bridge.c:52 | qdev_get_machine() | TYPE_AP_BRIDGE | already p= arented via object_property_add_child(); collapse into qdev_new() and keep = the same name for QOM-path stability css-bridge.c:95 | qdev_get_machine() | TYPE_VIRTUAL_CSS_BRIDGE | = already parented via object_property_add_child(); collapse into qdev_new() s390-pci-bus.c:970 | OBJECT(s) | "zpci[*]" | auto-created= zPCI companion for a hot-plugged PCI device; the S390pciState host bridge = owns it; auto-index name s390-virtio-ccw.c:256 | OBJECT(ef) | type | already pare= nted to the SCLP event facility; collapse into qdev_new() and keep the type= -derived name s390-virtio-ccw.c:268 | OBJECT(ef) | "sclpcpi" | already pare= nted; collapse into qdev_new() s390-virtio-ccw.c:312 | OBJECT(machine) | TYPE_S390_PCI_HOST_BRIDGE = | already parented to machine; collapse into qdev_new() with the same name Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/s390x/ap-bridge.c | 6 ++---- hw/s390x/css-bridge.c | 7 +++---- hw/s390x/s390-pci-bus.c | 4 ++-- hw/s390x/s390-virtio-ccw.c | 17 +++++++---------- 4 files changed, 14 insertions(+), 20 deletions(-) diff --git a/hw/s390x/ap-bridge.c b/hw/s390x/ap-bridge.c index ce9b09240a..d7b2c4bddc 100644 --- a/hw/s390x/ap-bridge.c +++ b/hw/s390x/ap-bridge.c @@ -49,10 +49,8 @@ void s390_init_ap(void) } =20 /* Create bridge device */ - dev =3D qdev_new_orphan(TYPE_AP_BRIDGE); - object_property_add_child(qdev_get_machine(), TYPE_AP_BRIDGE, - OBJECT(dev)); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + dev =3D qdev_new(qdev_get_machine(), TYPE_AP_BRIDGE, TYPE_AP_BRIDGE); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 /* Create bus on bridge device */ bus =3D qbus_new(TYPE_AP_BUS, dev, TYPE_AP_BUS); diff --git a/hw/s390x/css-bridge.c b/hw/s390x/css-bridge.c index c6be24e5cb..8929d47b1b 100644 --- a/hw/s390x/css-bridge.c +++ b/hw/s390x/css-bridge.c @@ -92,9 +92,8 @@ VirtualCssBus *virtual_css_bus_init(void) DeviceState *dev; =20 /* Create bridge device */ - dev =3D qdev_new_orphan(TYPE_VIRTUAL_CSS_BRIDGE); - object_property_add_child(qdev_get_machine(), TYPE_VIRTUAL_CSS_BRIDGE, - OBJECT(dev)); + dev =3D qdev_new(qdev_get_machine(), TYPE_VIRTUAL_CSS_BRIDGE, + TYPE_VIRTUAL_CSS_BRIDGE); =20 /* Create bus on bridge device */ bus =3D qbus_new(TYPE_VIRTUAL_CSS_BUS, dev, "virtual-css"); @@ -102,7 +101,7 @@ VirtualCssBus *virtual_css_bus_init(void) /* Enable hotplugging */ qbus_set_hotplug_handler(bus, OBJECT(dev)); =20 - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 css_register_io_adapters(CSS_IO_ADAPTER_VIRTIO, true, false, 0, &error_abort); diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c index bc335ca883..4f0a8a787b 100644 --- a/hw/s390x/s390-pci-bus.c +++ b/hw/s390x/s390-pci-bus.c @@ -967,7 +967,7 @@ static S390PCIBusDevice *s390_pci_device_new(S390pciSta= te *s, Error *local_err =3D NULL; DeviceState *dev; =20 - dev =3D qdev_try_new_orphan(TYPE_S390_PCI_DEVICE); + dev =3D qdev_try_new(OBJECT(s), "zpci[*]", TYPE_S390_PCI_DEVICE); if (!dev) { error_setg(errp, "zPCI device could not be created"); return NULL; @@ -979,7 +979,7 @@ static S390PCIBusDevice *s390_pci_device_new(S390pciSta= te *s, "zPCI device could not be created: "); return NULL; } - if (!qdev_realize_and_unref(dev, BUS(s->bus), &local_err)) { + if (!qdev_realize(dev, BUS(s->bus), &local_err)) { object_unparent(OBJECT(dev)); error_propagate_prepend(errp, local_err, "zPCI device could not be created: "); diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c index f9eb6cb411..1848cde0c4 100644 --- a/hw/s390x/s390-virtio-ccw.c +++ b/hw/s390x/s390-virtio-ccw.c @@ -253,10 +253,9 @@ static void s390_create_sclpconsole(SCLPDevice *sclp, BusState *ev_fac_bus =3D sclp_get_event_facility_bus(ef); DeviceState *dev; =20 - dev =3D qdev_new_orphan(type); - object_property_add_child(OBJECT(ef), type, OBJECT(dev)); + dev =3D qdev_new(OBJECT(ef), type, type); qdev_prop_set_chr(dev, "chardev", chardev); - qdev_realize_and_unref(dev, ev_fac_bus, &error_fatal); + qdev_realize(dev, ev_fac_bus, &error_fatal); } =20 static void s390_create_sclpcpi(SCLPDevice *sclp) @@ -265,9 +264,8 @@ static void s390_create_sclpcpi(SCLPDevice *sclp) BusState *ev_fac_bus =3D sclp_get_event_facility_bus(ef); DeviceState *dev; =20 - dev =3D qdev_new_orphan(TYPE_SCLP_EVENT_CPI); - object_property_add_child(OBJECT(ef), "sclpcpi", OBJECT(dev)); - qdev_realize_and_unref(dev, ev_fac_bus, &error_fatal); + dev =3D qdev_new(OBJECT(ef), "sclpcpi", TYPE_SCLP_EVENT_CPI); + qdev_realize(dev, ev_fac_bus, &error_fatal); } =20 static void ccw_init(MachineState *machine) @@ -309,10 +307,9 @@ static void ccw_init(MachineState *machine) machine->firmware ?: "s390-ccw.img", true); =20 - dev =3D qdev_new_orphan(TYPE_S390_PCI_HOST_BRIDGE); - object_property_add_child(qdev_get_machine(), TYPE_S390_PCI_HOST_BRIDG= E, - OBJECT(dev)); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + dev =3D qdev_new(OBJECT(machine), TYPE_S390_PCI_HOST_BRIDGE, + TYPE_S390_PCI_HOST_BRIDGE); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 s390_enable_css_support(s390_cpu_addr2state(0)); =20 --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784410989; cv=none; d=zohomail.com; s=zohoarc; b=DpdRhftOZRXA+uKUhxwm7tBbu9l3TbhQQXzq8gFinNVMPyN7y1k+LqP9BVTRSsiZEG9FwrgLkD5y/5BujEdd+viOOYZDRWYB+WF3yfeb5DLxsjKCSC2yjRmAw3Kc1w7/05g7DP8qAugMeEt3+fYbE/qJ51a38JW97nWSCnprNSE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784410989; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=5f3HzwuXe0MvsCBU0ME0zpexJU3MHLtq9ie+g2sflTM=; b=aUHs9n2xgEty15spYg2MF7+rVOFo63/6KPtKxSuGY4mKvWKen7u0QBxBP2PK9nJ6kZxIinXZik8476bD2859WDwRtjlTm9xRGlYgk8vykVLFLjbonsAOZpjHdu2JQ3YH0PIsMCuqvpYQscz3E689805BCk7zZ1RS9QgFu8omwmk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784410989712720.4724522428054; Sat, 18 Jul 2026 14:43:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCoE-0000Xq-9p; Sat, 18 Jul 2026 17:42:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCnn-00007v-W0; Sat, 18 Jul 2026 17:42:36 -0400 Received: from pdx-out-005.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.13.214.179]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCnl-0002fP-Bz; Sat, 18 Jul 2026 17:42:31 -0400 Received: from ip-10-5-12-219.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.12.219]) by internal-pdx-out-005.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:42:26 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.182:6891] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.58.199:2525] with esmtp (Farcaster) id f206f6b6-4a63-4ecf-9627-73aa492ccfd6; Sat, 18 Jul 2026 21:42:25 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA001.ant.amazon.com (10.250.64.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:42:25 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:42:15 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784410949; x=1815946949; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=5f3HzwuXe0MvsCBU0ME0zpexJU3MHLtq9ie+g2sflTM=; b=Zypekd1FV+MDzw0VPLQJyXXEUe4pbmyNhtB+ea1A0I/TytAyz2++vBBw IjSy9hSoREiaAunF5vx1DntIUtrdRI0gFR3kTABlhCl/o1rkcClL12lRV Cc+CbwRd3NZKCj9bgrNww9Cn44NVqLpRk3PzgW6gSxd03FtOh+7SaIuGI k9sdZ9gPm1YfiaiVrCy2V5urHKxj2CPqhr+ayr5czNB6adUHtmE2sf6C4 ShWQHsVT5In4Ms+ePme4RLniSppCh8bGXLdzUD2OPo7fcRXI7A8IRRsfj 6ATjyNBqlDn4GhiB4OY5U+KiQ85zMIJ/G9vhfgz1OnT9OW3RxdZ2bKuae Q==; X-CSE-ConnectionGUID: K9+R2bHIRgaKIegRivN9sg== X-CSE-MsgGUID: ODEi2OHxRbqb0tBCbjOHOg== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23903655" X-Farcaster-Flow-ID: f206f6b6-4a63-4ecf-9627-73aa492ccfd6 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 020/137] hw/or1k: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:34:55 +0000 Message-ID: <20260718213652.37673-21-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D039UWA002.ant.amazon.com (10.13.139.32) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.13.214.179; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-005.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784410991588158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/or1k to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/or1k/or1k-sim.c:189 | OBJECT(state) | "irq-splitter[*]" | board-init h= elper receives Or1ksimState; auto-index (net + serial share the pool) hw/or1k/or1k-sim.c:224 | OBJECT(state) | "ompic" | board-init helper rece= ives Or1ksimState; single OMPIC per machine hw/or1k/or1k-sim.c:257 | OBJECT(state) | "irq-splitter[*]" | board-init h= elper receives Or1ksimState; auto-index alongside net splitter hw/or1k/or1k-sim.c:302 | OBJECT(machine) | "cpu[*]" | MachineClass.init()= ; auto-index over smp_cpus hw/or1k/virt.c:113 | parent | "irq-splitter[*]" | static helper had no pa= rent-capable arg; add Object *parent first arg, thread OBJECT(state) from a= ll callers; auto-index (serial+rtc+virtio*N) hw/or1k/virt.c:209 | OBJECT(state) | "ompic" | board-init helper receives= OR1KVirtState; single OMPIC hw/or1k/virt.c:303 | OBJECT(state) | "rtc" | board-init helper receives O= R1KVirtState; single Goldfish RTC hw/or1k/virt.c:382 | OBJECT(state) | "pcie" | board-init helper receives = OR1KVirtState; single GPEX host hw/or1k/virt.c:454 | OBJECT(state) | "virtio-mmio[*]" | board-init helper= receives OR1KVirtState; called VIRTIO_COUNT times, auto-index hw/or1k/virt.c:484 | OBJECT(machine) | "cpu[*]" | MachineClass.init(); au= to-index over smp_cpus Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/or1k/or1k-sim.c | 17 ++++++++++------- hw/or1k/virt.c | 37 ++++++++++++++++++++++--------------- 2 files changed, 32 insertions(+), 22 deletions(-) diff --git a/hw/or1k/or1k-sim.c b/hw/or1k/or1k-sim.c index 6962313315..da05d7cbe3 100644 --- a/hw/or1k/or1k-sim.c +++ b/hw/or1k/or1k-sim.c @@ -186,9 +186,10 @@ static void openrisc_sim_net_init(Or1ksimState *state,= hwaddr base, hwaddr size, s =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(s, &error_fatal); if (num_cpus > 1) { - DeviceState *splitter =3D qdev_new_orphan(TYPE_SPLIT_IRQ); + DeviceState *splitter =3D qdev_new(OBJECT(state), "irq-splitter[*]= ", + TYPE_SPLIT_IRQ); qdev_prop_set_uint32(splitter, "num-lines", num_cpus); - qdev_realize_and_unref(splitter, NULL, &error_fatal); + qdev_realize(splitter, NULL, &error_fatal); for (i =3D 0; i < num_cpus; i++) { qdev_connect_gpio_out(splitter, i, get_cpu_irq(cpus, i, irq_pi= n)); } @@ -221,11 +222,11 @@ static void openrisc_sim_ompic_init(Or1ksimState *sta= te, hwaddr base, char *nodename; int i; =20 - dev =3D qdev_new_orphan("or1k-ompic"); + dev =3D qdev_new(OBJECT(state), "ompic", "or1k-ompic"); qdev_prop_set_uint32(dev, "num-cpus", num_cpus); =20 s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); for (i =3D 0; i < num_cpus; i++) { sysbus_connect_irq(s, i, get_cpu_irq(cpus, i, irq_pin)); } @@ -254,9 +255,10 @@ static void openrisc_sim_serial_init(Or1ksimState *sta= te, hwaddr base, int i; =20 if (num_cpus > 1) { - DeviceState *splitter =3D qdev_new_orphan(TYPE_SPLIT_IRQ); + DeviceState *splitter =3D qdev_new(OBJECT(state), "irq-splitter[*]= ", + TYPE_SPLIT_IRQ); qdev_prop_set_uint32(splitter, "num-lines", num_cpus); - qdev_realize_and_unref(splitter, NULL, &error_fatal); + qdev_realize(splitter, NULL, &error_fatal); for (i =3D 0; i < num_cpus; i++) { qdev_connect_gpio_out(splitter, i, get_cpu_irq(cpus, i, irq_pi= n)); } @@ -299,7 +301,8 @@ static void openrisc_sim_init(MachineState *machine) =20 assert(smp_cpus >=3D 1 && smp_cpus <=3D OR1KSIM_CPUS_MAX); for (n =3D 0; n < smp_cpus; n++) { - cpus[n] =3D OPENRISC_CPU(cpu_create_orphan(machine->cpu_type)); + cpus[n] =3D OPENRISC_CPU(cpu_create(OBJECT(machine), "cpu[*]", + machine->cpu_type)); if (cpus[n] =3D=3D NULL) { fprintf(stderr, "Unable to find CPU definition!\n"); exit(1); diff --git a/hw/or1k/virt.c b/hw/or1k/virt.c index f222efafde..7362433a02 100644 --- a/hw/or1k/virt.c +++ b/hw/or1k/virt.c @@ -105,14 +105,16 @@ static qemu_irq get_cpu_irq(OpenRISCCPU *cpus[], int = cpunum, int irq_pin) return qdev_get_gpio_in_named(DEVICE(cpus[cpunum]), "IRQ", irq_pin); } =20 -static qemu_irq get_per_cpu_irq(OpenRISCCPU *cpus[], int num_cpus, int irq= _pin) +static qemu_irq get_per_cpu_irq(Object *parent, OpenRISCCPU *cpus[], + int num_cpus, int irq_pin) { int i; =20 if (num_cpus > 1) { - DeviceState *splitter =3D qdev_new_orphan(TYPE_SPLIT_IRQ); + DeviceState *splitter =3D qdev_new(parent, "irq-splitter[*]", + TYPE_SPLIT_IRQ); qdev_prop_set_uint32(splitter, "num-lines", num_cpus); - qdev_realize_and_unref(splitter, NULL, &error_fatal); + qdev_realize(splitter, NULL, &error_fatal); for (i =3D 0; i < num_cpus; i++) { qdev_connect_gpio_out(splitter, i, get_cpu_irq(cpus, i, irq_pi= n)); } @@ -206,11 +208,11 @@ static void openrisc_virt_ompic_init(OR1KVirtState *s= tate, hwaddr base, char *nodename; int i; =20 - dev =3D qdev_new_orphan("or1k-ompic"); + dev =3D qdev_new(OBJECT(state), "ompic", "or1k-ompic"); qdev_prop_set_uint32(dev, "num-cpus", num_cpus); =20 s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); for (i =3D 0; i < num_cpus; i++) { sysbus_connect_irq(s, i, get_cpu_irq(cpus, i, irq_pin)); } @@ -233,7 +235,8 @@ static void openrisc_virt_serial_init(OR1KVirtState *st= ate, hwaddr base, { void *fdt =3D state->fdt; char *nodename; - qemu_irq serial_irq =3D get_per_cpu_irq(cpus, num_cpus, irq_pin); + qemu_irq serial_irq =3D get_per_cpu_irq(OBJECT(state), cpus, num_cpus, + irq_pin); =20 serial_mm_init(get_system_memory(), base, 0, serial_irq, 115200, serial_hd(0), DEVICE_BIG_ENDIAN); @@ -297,10 +300,12 @@ static void openrisc_virt_rtc_init(OR1KVirtState *sta= te, hwaddr base, { void *fdt =3D state->fdt; char *nodename; - qemu_irq rtc_irq =3D get_per_cpu_irq(cpus, num_cpus, irq_pin); + qemu_irq rtc_irq =3D get_per_cpu_irq(OBJECT(state), cpus, num_cpus, + irq_pin); =20 /* Goldfish RTC */ - sysbus_create_simple_orphan(TYPE_GOLDFISH_RTC, base, rtc_irq); + sysbus_create_simple(OBJECT(state), "rtc", TYPE_GOLDFISH_RTC, base, + rtc_irq); =20 /* Goldfish RTC FDT */ nodename =3D g_strdup_printf("/soc/rtc@%" HWADDR_PRIx, base); @@ -379,8 +384,8 @@ static void openrisc_virt_pcie_init(OR1KVirtState *stat= e, qemu_irq pcie_irq; int i; =20 - dev =3D qdev_new_orphan(TYPE_GPEX_HOST); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + dev =3D qdev_new(OBJECT(state), "pcie", TYPE_GPEX_HOST); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 /* Map ECAM space. */ alias =3D g_new0(MemoryRegion, 1); @@ -410,7 +415,7 @@ static void openrisc_virt_pcie_init(OR1KVirtState *stat= e, =20 /* Connect IRQ lines. */ for (i =3D 0; i < PCI_NUM_PINS; i++) { - pcie_irq =3D get_per_cpu_irq(cpus, num_cpus, irq_base + i); + pcie_irq =3D get_per_cpu_irq(OBJECT(state), cpus, num_cpus, irq_ba= se + i); =20 sysbus_connect_irq(SYS_BUS_DEVICE(dev), i, pcie_irq); gpex_set_irq_num(GPEX_HOST(dev), i, irq_base + i); @@ -448,13 +453,14 @@ static void openrisc_virt_virtio_init(OR1KVirtState *= state, hwaddr base, char *nodename; DeviceState *dev; SysBusDevice *sysbus; - qemu_irq virtio_irq =3D get_per_cpu_irq(cpus, num_cpus, irq_pin); + qemu_irq virtio_irq =3D get_per_cpu_irq(OBJECT(state), cpus, num_cpus, + irq_pin); =20 /* VirtIO MMIO devices */ - dev =3D qdev_new_orphan(TYPE_VIRTIO_MMIO); + dev =3D qdev_new(OBJECT(state), "virtio-mmio[*]", TYPE_VIRTIO_MMIO); qdev_prop_set_bit(dev, "force-legacy", false); sysbus =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(sysbus, &error_fatal); + sysbus_realize(sysbus, &error_fatal); sysbus_connect_irq(sysbus, 0, virtio_irq); sysbus_mmio_map(sysbus, 0, base); =20 @@ -481,7 +487,8 @@ static void openrisc_virt_init(MachineState *machine) =20 assert(smp_cpus >=3D 1 && smp_cpus <=3D VIRT_CPUS_MAX); for (n =3D 0; n < smp_cpus; n++) { - cpus[n] =3D OPENRISC_CPU(cpu_create_orphan(machine->cpu_type)); + cpus[n] =3D OPENRISC_CPU(cpu_create(OBJECT(machine), "cpu[*]", + machine->cpu_type)); if (cpus[n] =3D=3D NULL) { fprintf(stderr, "Unable to find CPU definition!\n"); exit(1); --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784410992; cv=none; d=zohomail.com; s=zohoarc; b=G2R0/+42Qr6PRuy40pDW5nWjV+D+KmmgoWrm9w/E6DjPSLObhMl5Hq/Si755KnH/wUBtQQfEvXr9e52XkQ9tQgJz3Z8rarW24jgm7jBou3ufK4ZHogYQsO29mWmUYSgFpspelhbYf/AjEMqI3yJxLRgfZitUe7Xkl8s8It6ZXog= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784410992; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=I5FWnzvUpueVbZs3g/mAe7MQaCCSMX+O6arKRJA8z10=; b=mJ6Z/fY1P2JcSWMioCAlt7OMVEJTDZ07Yi+1PmcH3SoUaDig+9Y5HD4xueGq1tlXGTEKQhDL5V8sbSRD+ydkWHwvvDgUWdD+bV1qEXL5yUcxDtfbF67ZLSf+p+K/twcDjn8DkvICojGTYsbwWYToZJYqYsh76gFhR+gDxSj914w= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784410992982169.21058423666614; Sat, 18 Jul 2026 14:43:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCoL-0001Hd-P1; Sat, 18 Jul 2026 17:43:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCoK-0001B5-7i; Sat, 18 Jul 2026 17:43:04 -0400 Received: from pdx-out-011.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.35.192.45]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCoH-0002gH-NY; Sat, 18 Jul 2026 17:43:03 -0400 Received: from ip-10-5-6-203.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.6.203]) by internal-pdx-out-011.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:42:57 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.53:30501] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.0.115:2525] with esmtp (Farcaster) id bd2d5380-70cf-44e6-b88e-316755de809e; Sat, 18 Jul 2026 21:42:57 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC001.ant.amazon.com (10.250.64.174) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:42:56 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:42:47 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784410981; x=1815946981; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=I5FWnzvUpueVbZs3g/mAe7MQaCCSMX+O6arKRJA8z10=; b=Ul8bqaVhXZ4XyBRWHz59e/WUjRRRoJvAv7rXS0wtiH+iwMP0h+kIIQWE BcyvKcbbYGxX9GzWkUjxNrTjg1/xM1h9Ero0cENBnf+cW2Bx9pTPHtqew JTEaLlM8FZBvdgQQQ9lclO8hfm1wm/3UHOZVPQj960/4Y5AbmlrMWiDz/ TIGDSgtQ6kD55fZrmVIpeifEOZi+AkQ+bHSkVqfMCyNeF5KKxBNgm3swL 20DqnHgV4UE6ggPfqkwV36JaFsyZMOJ4ZbxpQVYSbfMZnm9srDWqesbE8 D6RC+BdB5qxaklhVNOTb3QHeS2pn8yRuOdBXD7e7D2EwGtgC0n/3ogO1h Q==; X-CSE-ConnectionGUID: ruNifr1oSKO6GRacmtekCA== X-CSE-MsgGUID: a66UDxMhR/S9DGb7leyh0w== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23694135" X-Farcaster-Flow-ID: bd2d5380-70cf-44e6-b88e-316755de809e From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 021/137] hw/loongarch: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:34:56 +0000 Message-ID: <20260718213652.37673-22-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D037UWC002.ant.amazon.com (10.13.139.250) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.35.192.45; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-011.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784410993707158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/loongarch to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): file:line | creator | parent | name | rationale hw/loongarch/virt.c:153 | qdev_new | OBJECT(lvms) | name | board-init helpe= r already receives lvms + child name; drop redundant object_property_add_ch= ild() hw/loongarch/virt.c:298 | qdev_new | OBJECT(lvms) | "acpi-ged" | board-init= helper receives LoongArchVirtMachineState *lvms hw/loongarch/virt.c:325 | qdev_new | parent | "platform-bus" | static helpe= r w/o parent ptr; add Object *parent first arg, thread OBJECT(lvms) from ca= ller hw/loongarch/virt.c:403 | qdev_new | OBJECT(lvms) | "pci-host" | board-init= helper receives lvms hw/loongarch/virt.c:488 | sysbus_create_simple | OBJECT(lvms) | "rtc" | boa= rd-init helper receives lvms hw/loongarch/virt.c:604 | qdev_new | OBJECT(lvms) | "ipi" | virt_irq_init()= receives lvms hw/loongarch/virt.c:610 | qdev_new | OBJECT(lvms) | "dintc" | virt_irq_init= () receives lvms hw/loongarch/virt.c:617 | qdev_new | OBJECT(lvms) | "extioi" | virt_irq_ini= t() receives lvms hw/loongarch/virt.c:625 | qdev_new | OBJECT(lvms) | "pch-pic" | virt_irq_in= it() receives lvms hw/loongarch/virt.c:631 | qdev_new | OBJECT(lvms) | "pch-msi" | virt_irq_in= it() receives lvms Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/loongarch/virt.c | 48 ++++++++++++++++++++------------------------- 1 file changed, 21 insertions(+), 27 deletions(-) diff --git a/hw/loongarch/virt.c b/hw/loongarch/virt.c index 45acdc3ec1..e0129b2f33 100644 --- a/hw/loongarch/virt.c +++ b/hw/loongarch/virt.c @@ -150,7 +150,7 @@ static PFlashCFI01 *virt_flash_create1(LoongArchVirtMac= hineState *lvms, const char *name, const char *alias_prop_name) { - DeviceState *dev =3D qdev_new_orphan(TYPE_PFLASH_CFI01); + DeviceState *dev =3D qdev_new(OBJECT(lvms), name, TYPE_PFLASH_CFI01); =20 qdev_prop_set_uint64(dev, "sector-length", VIRT_FLASH_SECTOR_SIZE); qdev_prop_set_uint8(dev, "width", 4); @@ -161,7 +161,6 @@ static PFlashCFI01 *virt_flash_create1(LoongArchVirtMac= hineState *lvms, qdev_prop_set_uint16(dev, "id2", 0x00); qdev_prop_set_uint16(dev, "id3", 0x00); qdev_prop_set_string(dev, "name", name); - object_property_add_child(OBJECT(lvms), name, OBJECT(dev)); object_property_add_alias(OBJECT(lvms), alias_prop_name, OBJECT(dev), "drive"); return PFLASH_CFI01(dev); @@ -191,7 +190,7 @@ static void virt_flash_map1(PFlashCFI01 *flash, assert(real_size / VIRT_FLASH_SECTOR_SIZE <=3D UINT32_MAX); =20 qdev_prop_set_uint32(dev, "num-blocks", real_size / VIRT_FLASH_SECTOR_= SIZE); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); memory_region_add_subregion(sysmem, base, sysbus_mmio_get_region(SYS_BUS_DEVICE(dev)= , 0)); } @@ -295,9 +294,9 @@ static DeviceState *create_acpi_ged(DeviceState *pch_pi= c, event |=3D ACPI_GED_CPU_HOTPLUG_EVT; } =20 - dev =3D qdev_new_orphan(TYPE_ACPI_GED); + dev =3D qdev_new(OBJECT(lvms), "acpi-ged", TYPE_ACPI_GED); qdev_prop_set_uint32(dev, "ged-event", event); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 /* ged event */ sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, VIRT_GED_EVT_ADDR); @@ -315,18 +314,18 @@ static DeviceState *create_acpi_ged(DeviceState *pch_= pic, return dev; } =20 -static DeviceState *create_platform_bus(DeviceState *pch_pic) +static DeviceState *create_platform_bus(Object *parent, DeviceState *pch_p= ic) { DeviceState *dev; SysBusDevice *sysbus; int i, irq; MemoryRegion *sysmem =3D get_system_memory(); =20 - dev =3D qdev_new_orphan(TYPE_PLATFORM_BUS_DEVICE); + dev =3D qdev_new(parent, "platform-bus", TYPE_PLATFORM_BUS_DEVICE); dev->id =3D g_strdup(TYPE_PLATFORM_BUS_DEVICE); qdev_prop_set_uint32(dev, "num_irqs", VIRT_PLATFORM_BUS_NUM_IRQS); qdev_prop_set_uint32(dev, "mmio_size", VIRT_PLATFORM_BUS_SIZE); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 sysbus =3D SYS_BUS_DEVICE(dev); for (i =3D 0; i < VIRT_PLATFORM_BUS_NUM_IRQS; i++) { @@ -400,9 +399,9 @@ static void virt_devices_init(DeviceState *pch_pic, hwaddr mmio_base, mmio_size; int i, irq; =20 - gpex_dev =3D qdev_new_orphan(TYPE_GPEX_HOST); + gpex_dev =3D qdev_new(OBJECT(lvms), "pci-host", TYPE_GPEX_HOST); d =3D SYS_BUS_DEVICE(gpex_dev); - sysbus_realize_and_unref(d, &error_fatal); + sysbus_realize(d, &error_fatal); pci_bus =3D PCI_HOST_BRIDGE(gpex_dev)->bus; lvms->gpex.pio.base =3D VIRT_PCI_IO_BASE; lvms->gpex.pio.size =3D VIRT_PCI_IO_SIZE; @@ -485,14 +484,14 @@ static void virt_devices_init(DeviceState *pch_pic, * Create some unimplemented devices to emulate this. */ create_unimplemented_device("pci-dma-cfg", 0x1001041c, 0x4); - sysbus_create_simple_orphan("ls7a_rtc", VIRT_RTC_REG_BASE, + sysbus_create_simple(OBJECT(lvms), "rtc", "ls7a_rtc", VIRT_RTC_REG_BAS= E, qdev_get_gpio_in(pch_pic, VIRT_RTC_IRQ - VIRT_GSI_BASE)); =20 /* acpi ged */ lvms->acpi_ged =3D create_acpi_ged(pch_pic, lvms); /* platform bus */ - lvms->platform_bus_dev =3D create_platform_bus(pch_pic); + lvms->platform_bus_dev =3D create_platform_bus(OBJECT(lvms), pch_pic); } =20 static void virt_cpu_irq_init(LoongArchVirtMachineState *lvms) @@ -601,40 +600,40 @@ static void virt_irq_init(LoongArchVirtMachineState *= lvms) */ =20 /* Create IPI device */ - ipi =3D qdev_new_orphan(TYPE_LOONGARCH_IPI); + ipi =3D qdev_new(OBJECT(lvms), "ipi", TYPE_LOONGARCH_IPI); lvms->ipi =3D ipi; - sysbus_realize_and_unref(SYS_BUS_DEVICE(ipi), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(ipi), &error_fatal); =20 /* Create DINTC device*/ if (virt_has_dmsi(lvms)) { - dintc =3D qdev_new_orphan(TYPE_LOONGARCH_DINTC); + dintc =3D qdev_new(OBJECT(lvms), "dintc", TYPE_LOONGARCH_DINTC); lvms->dintc =3D dintc; - sysbus_realize_and_unref(SYS_BUS_DEVICE(dintc), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dintc), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dintc), 0, VIRT_DINTC_BASE); } =20 /* Create EXTIOI device */ - extioi =3D qdev_new_orphan(TYPE_LOONGARCH_EXTIOI); + extioi =3D qdev_new(OBJECT(lvms), "extioi", TYPE_LOONGARCH_EXTIOI); lvms->extioi =3D extioi; if (virt_is_veiointc_enabled(lvms)) { qdev_prop_set_bit(extioi, "has-virtualization-extension", true); } - sysbus_realize_and_unref(SYS_BUS_DEVICE(extioi), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(extioi), &error_fatal); =20 virt_cpu_irq_init(lvms); - pch_pic =3D qdev_new_orphan(TYPE_LOONGARCH_PIC); + pch_pic =3D qdev_new(OBJECT(lvms), "pch-pic", TYPE_LOONGARCH_PIC); num =3D VIRT_PCH_PIC_IRQ_NUM; qdev_prop_set_uint32(pch_pic, "pch_pic_irq_num", num); d =3D SYS_BUS_DEVICE(pch_pic); - sysbus_realize_and_unref(d, &error_fatal); + sysbus_realize(d, &error_fatal); =20 - pch_msi =3D qdev_new_orphan(TYPE_LOONGARCH_PCH_MSI); + pch_msi =3D qdev_new(OBJECT(lvms), "pch-msi", TYPE_LOONGARCH_PCH_MSI); start =3D num; num =3D EXTIOI_IRQS - start; qdev_prop_set_uint32(pch_msi, "msi_irq_base", start); qdev_prop_set_uint32(pch_msi, "msi_irq_num", num); d =3D SYS_BUS_DEVICE(pch_msi); - sysbus_realize_and_unref(d, &error_fatal); + sysbus_realize(d, &error_fatal); sysbus_mmio_map(d, 0, VIRT_PCH_MSI_ADDR_LOW); =20 if (kvm_irqchip_in_kernel()) { @@ -1570,11 +1569,6 @@ static void virt_instance_finalize(Object *obj) { LoongArchVirtMachineState *lvms =3D LOONGARCH_VIRT_MACHINE(obj); =20 - for (int i =3D 0; i < ARRAY_SIZE(lvms->flash); i++) { - if (lvms->flash[i] && !qdev_is_realized(DEVICE(lvms->flash[i]))) { - object_unref(OBJECT(lvms->flash[i])); - } - } g_free(lvms->oem_id); g_free(lvms->oem_table_id); } --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411044; cv=none; d=zohomail.com; s=zohoarc; b=fhME5+/QAYDG4VA5dAPni4N4WMhlG0Fxso74gdOunV9cghQ715ge3ygop3eHwYZfpv5EwbHxdU1n7WO3XopFCrgKMY4skPtmisK/rfdWdBpAvWeYOL2+m9V9sk5GBOfMMlq8XcPqNt3v7K+WFFgz/NvCi24u1g3TxcWsan55Ivo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411044; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Xpc1NUIbCgEQ4fflNyIf+L4stlMYfMfgPjmHbYOodPQ=; b=Kl24vevzE2daTHoTmKuRL3aYDCTTmxQXLz6OhR5aC30AmM4Va4hvvOn+zzefBrKDb9Wkowb6ulIX/SnStvJ+imvEc4xBKs5HKIw/FO1EOB/jSE8s91fgBT2skPAadkZWVYWbuSSLl6bJXkbjbaoTly6N8o+ZQVqkR+pfRXssMUM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178441104459322.733907330862394; Sat, 18 Jul 2026 14:44:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCoX-0001tZ-3q; Sat, 18 Jul 2026 17:43:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCoV-0001qZ-Vb; Sat, 18 Jul 2026 17:43:16 -0400 Received: from pdx-out-015.esa.us-west-2.outbound.mail-perimeter.amazon.com ([50.112.246.219]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCoQ-0002hQ-M8; Sat, 18 Jul 2026 17:43:15 -0400 Received: from ip-10-5-6-203.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.6.203]) by internal-pdx-out-015.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:43:07 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.111:23138] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.40.177:2525] with esmtp (Farcaster) id 8c0b1b70-8b77-45fd-88df-9385bc63c176; Sat, 18 Jul 2026 21:43:06 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB002.ant.amazon.com (10.250.64.231) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:43:06 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:42:56 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784410990; x=1815946990; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Xpc1NUIbCgEQ4fflNyIf+L4stlMYfMfgPjmHbYOodPQ=; b=g8/OB2+JQfnw9t+AaXxHPGYFNufdAm+2T4STHZMI66IVZ7R+WsvPOj4b GkhNY+CIJhcR0tLiAZYa7OR7DdIZksYXFKaryx3vlsZhN1YOOE+N+pfar RsFzCpX2mtDnrCUUdXW2+ADkxnZFzs5YBhXcwn7Kx0D2PPr4sAfrQoNL0 Igs+8/JG9IzoNa96g54cvrpCxGDgitgWMmndTmUokyH3+CO4UQluCerC8 M8M2ugLV0Ei91+hvTXausNbOy3FzFyUghLJt/AuLvqTRK1wjcPdbbwwio SQYu+y2g7Ffz1nPZY12NrS+oMqlrYgMDroYasMJKiyO9SUAIIVQwiCH1J A==; X-CSE-ConnectionGUID: vlcxIj0oQ/KCRdnyXxqAYg== X-CSE-MsgGUID: fqES9RQkSU6p0un+scbHLw== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23724778" X-Farcaster-Flow-ID: 8c0b1b70-8b77-45fd-88df-9385bc63c176 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 022/137] hw/intc: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:34:57 +0000 Message-ID: <20260718213652.37673-23-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D037UWC002.ant.amazon.com (10.13.139.250) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=50.112.246.219; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-015.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411046188158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/intc to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/intc/apic_common.c:285 | sysbus_create_simple | qdev_get_machine() | "kv= mvapic" | function-static singleton shared by all per-CPU APICs; cannot bel= ong to any single APIC, so parent to the machine hw/intc/exynos4210_gic.c:63 | qdev_new | OBJECT(dev) | "gic" | inside exyno= s4210_gic_realize(); inner GIC is a component of the composite Exynos GIC d= evice hw/intc/i8259_common.c:97 | isa_new | Object *parent (new arg) | "i8259[*]"= | i8259_init_chip() is a helper with no parent-capable arg; thread Object = *parent through i8259_init()/kvm_i8259_init() and their callers; two chips = per parent so auto-index hw/intc/riscv_aclint.c:372 | qdev_new | Object *parent (new arg) | "aclint-= mtimer[*]" | riscv_aclint_mtimer_create() helper; parent threaded from boar= d/SoC callers; per-socket instances so auto-index hw/intc/riscv_aclint.c:555 | qdev_new | Object *parent (new arg) | "aclint-= swi[*]" | riscv_aclint_swi_create() helper; parent threaded from board/SoC = callers; per-socket M/S-SWI so auto-index hw/intc/riscv_aplic.c:1116 | qdev_new | Object *parent (new arg) | "aplic[*= ]" | riscv_aplic_create() helper; existing DeviceState *parent (APLIC hiera= rchy) renamed to aplic_parent to avoid clash; multiple M/S instances so aut= o-index hw/intc/riscv_imsic.c:477 | qdev_new | Object *parent (new arg) | "imsic[*]= " | riscv_imsic_create() helper; parent threaded from board/SoC callers; pe= r-hart M/S instances so auto-index hw/intc/s390_flic.c:65 | qdev_new | qdev_get_machine() | TYPE_KVM_S390_FLIC= | already followed by object_property_add_child(machine, ...); collapse in= to parented qdev_new() and drop the redundant add_child hw/intc/s390_flic.c:69 | qdev_new | qdev_get_machine() | TYPE_QEMU_S390_FLI= C | same as above; collapse into parented qdev_new() and drop the redundant= add_child hw/intc/sifive_plic.c:484 | qdev_new | Object *parent (new arg) | "plic[*]"= | sifive_plic_create() helper; parent threaded from board/SoC callers; per= -socket instances so auto-index Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/hppa/machine.c | 8 ++++---- hw/i386/isapc.c | 2 +- hw/i386/kvm/i8259.c | 6 +++--- hw/i386/microvm.c | 2 +- hw/i386/pc.c | 6 +++--- hw/i386/pc_piix.c | 2 +- hw/i386/pc_q35.c | 2 +- hw/intc/apic_common.c | 3 ++- hw/intc/exynos4210_gic.c | 4 ++-- hw/intc/i8259.c | 6 +++--- hw/intc/i8259_common.c | 7 ++++--- hw/intc/riscv_aclint.c | 16 ++++++++++------ hw/intc/riscv_aplic.c | 13 +++++++------ hw/intc/riscv_imsic.c | 7 ++++--- hw/intc/s390_flic.c | 12 +++++------- hw/intc/sifive_plic.c | 7 ++++--- hw/isa/i82378.c | 2 +- hw/isa/piix.c | 2 +- hw/isa/vt82c686.c | 2 +- hw/mips/jazz.c | 2 +- hw/riscv/aia.c | 12 +++++++----- hw/riscv/aia.h | 3 ++- hw/riscv/cps.c | 9 +++++---- hw/riscv/k230.c | 12 +++++++----- hw/riscv/microchip_pfsoc.c | 7 ++++--- hw/riscv/shakti_c.c | 8 +++++--- hw/riscv/sifive_e.c | 7 ++++--- hw/riscv/sifive_u.c | 7 ++++--- hw/riscv/spike.c | 4 ++-- hw/riscv/tt_atlantis.c | 6 ++++-- hw/riscv/virt.c | 27 +++++++++++++++++---------- hw/riscv/xiangshan_kmh.c | 18 ++++++++++-------- include/hw/i386/pc.h | 2 +- include/hw/intc/i8259.h | 4 ++-- include/hw/intc/riscv_aclint.h | 6 ++++-- include/hw/intc/riscv_aplic.h | 5 +++-- include/hw/intc/riscv_imsic.h | 3 ++- include/hw/intc/sifive_plic.h | 3 ++- include/hw/isa/i8259_internal.h | 3 ++- 39 files changed, 146 insertions(+), 111 deletions(-) diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c index 729524e065..e50f9adf41 100644 --- a/hw/hppa/machine.c +++ b/hw/hppa/machine.c @@ -97,7 +97,7 @@ static const MemoryRegionOps hppa_pci_ignore_ops =3D { }, }; =20 -static ISABus *hppa_isa_bus(hwaddr addr) +static ISABus *hppa_isa_bus(Object *parent, hwaddr addr) { ISABus *isa_bus; qemu_irq *isa_irqs; @@ -110,7 +110,7 @@ static ISABus *hppa_isa_bus(hwaddr addr) =20 isa_bus =3D isa_bus_new(NULL, get_system_memory(), isa_region, &error_abort); - isa_irqs =3D i8259_init(isa_bus, NULL); + isa_irqs =3D i8259_init(parent, isa_bus, NULL); isa_bus_register_input_irqs(isa_bus, isa_irqs); =20 return isa_bus; @@ -596,7 +596,7 @@ static void machine_HP_715_init(MachineState *machine) } =20 /* Create ISA bus, needed for PS/2 kbd/mouse port emulation */ - isa_bus =3D hppa_isa_bus(translate(NULL, IDE_HPA)); + isa_bus =3D hppa_isa_bus(OBJECT(machine), translate(NULL, IDE_HPA)); assert(isa_bus); =20 /* Init Lasi chip */ @@ -690,7 +690,7 @@ static void machine_HP_B160L_init(MachineState *machine) assert(pci_bus); =20 /* Create ISA bus, needed for PS/2 kbd/mouse port emulation */ - isa_bus =3D hppa_isa_bus(translate(NULL, IDE_HPA)); + isa_bus =3D hppa_isa_bus(OBJECT(machine), translate(NULL, IDE_HPA)); assert(isa_bus); =20 /* Serial ports: Lasi and Dino use a 7.272727 MHz clock. */ diff --git a/hw/i386/isapc.c b/hw/i386/isapc.c index 03d68f748f..655ec599b5 100644 --- a/hw/i386/isapc.c +++ b/hw/i386/isapc.c @@ -123,7 +123,7 @@ static void pc_init_isa(MachineState *machine) pcms->hpet_enabled =3D false; =20 if (x86ms->pic =3D=3D ON_OFF_AUTO_ON || x86ms->pic =3D=3D ON_OFF_AUTO_= AUTO) { - pc_i8259_create(isa_bus, gsi_state->i8259_irq); + pc_i8259_create(OBJECT(machine), isa_bus, gsi_state->i8259_irq); } =20 if (tcg_enabled()) { diff --git a/hw/i386/kvm/i8259.c b/hw/i386/kvm/i8259.c index 66f37e1303..5fb11d3613 100644 --- a/hw/i386/kvm/i8259.c +++ b/hw/i386/kvm/i8259.c @@ -131,10 +131,10 @@ static void kvm_pic_realize(DeviceState *dev, Error *= *errp) kpc->parent_realize(dev, errp); } =20 -qemu_irq *kvm_i8259_init(ISABus *bus) +qemu_irq *kvm_i8259_init(Object *parent, ISABus *bus) { - i8259_init_chip(TYPE_KVM_I8259, bus, true); - i8259_init_chip(TYPE_KVM_I8259, bus, false); + i8259_init_chip(parent, TYPE_KVM_I8259, bus, true); + i8259_init_chip(parent, TYPE_KVM_I8259, bus, false); =20 return qemu_allocate_irqs(kvm_pic_set_irq, NULL, ISA_NUM_IRQS); } diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c index 22688687c4..16bd885541 100644 --- a/hw/i386/microvm.c +++ b/hw/i386/microvm.c @@ -251,7 +251,7 @@ static void microvm_devices_init(MicrovmMachineState *m= ms) if (x86ms->pic =3D=3D ON_OFF_AUTO_ON || x86ms->pic =3D=3D ON_OFF_AUTO_= AUTO) { qemu_irq *i8259; =20 - i8259 =3D i8259_init(isa_bus, x86_allocate_cpu_irq()); + i8259 =3D i8259_init(OBJECT(mms), isa_bus, x86_allocate_cpu_irq()); for (i =3D 0; i < ISA_NUM_IRQS; i++) { gsi_state->i8259_irq[i] =3D i8259[i]; } diff --git a/hw/i386/pc.c b/hw/i386/pc.c index 905b4960a3..24ba1189d7 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -1159,16 +1159,16 @@ void pc_nic_init(PCMachineClass *pcmc, ISABus *isa_= bus, PCIBus *pci_bus) } } =20 -void pc_i8259_create(ISABus *isa_bus, qemu_irq *i8259_irqs) +void pc_i8259_create(Object *parent, ISABus *isa_bus, qemu_irq *i8259_irqs) { qemu_irq *i8259; =20 if (kvm_pic_in_kernel()) { - i8259 =3D kvm_i8259_init(isa_bus); + i8259 =3D kvm_i8259_init(parent, isa_bus); } else if (xen_enabled()) { i8259 =3D xen_interrupt_controller_init(); } else { - i8259 =3D i8259_init(isa_bus, x86_allocate_cpu_irq()); + i8259 =3D i8259_init(parent, isa_bus, x86_allocate_cpu_irq()); } =20 for (size_t i =3D 0; i < ISA_NUM_IRQS; i++) { diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c index bd4c129143..3f361c8396 100644 --- a/hw/i386/pc_piix.c +++ b/hw/i386/pc_piix.c @@ -281,7 +281,7 @@ static void pc_init1(MachineState *machine, const char = *pci_type) =20 =20 if (x86ms->pic =3D=3D ON_OFF_AUTO_ON || x86ms->pic =3D=3D ON_OFF_AUTO_= AUTO) { - pc_i8259_create(isa_bus, gsi_state->i8259_irq); + pc_i8259_create(OBJECT(machine), isa_bus, gsi_state->i8259_irq); } =20 ioapic_init_gsi(gsi_state, phb); diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c index daa75dbc26..a4a7169398 100644 --- a/hw/i386/pc_q35.c +++ b/hw/i386/pc_q35.c @@ -272,7 +272,7 @@ static void pc_q35_init(MachineState *machine) isa_bus =3D ISA_BUS(qdev_get_child_bus(lpc_dev, "isa.0")); =20 if (x86ms->pic =3D=3D ON_OFF_AUTO_ON || x86ms->pic =3D=3D ON_OFF_AUTO_= AUTO) { - pc_i8259_create(isa_bus, gsi_state->i8259_irq); + pc_i8259_create(OBJECT(machine), isa_bus, gsi_state->i8259_irq); } =20 ioapic_init_gsi(gsi_state, OBJECT(phb)); diff --git a/hw/intc/apic_common.c b/hw/intc/apic_common.c index aaa7dca480..be90fe0d2b 100644 --- a/hw/intc/apic_common.c +++ b/hw/intc/apic_common.c @@ -282,7 +282,8 @@ static void apic_common_realize(DeviceState *dev, Error= **errp) /* Note: We need at least 1M to map the VAPIC option ROM */ if (!vapic && s->vapic_control & VAPIC_ENABLE_MASK && current_machine->ram_size >=3D 1024 * 1024) { - vapic =3D sysbus_create_simple_orphan("kvmvapic", -1, NULL); + vapic =3D sysbus_create_simple(qdev_get_machine(), "kvmvapic", + "kvmvapic", -1, NULL); } s->vapic =3D vapic; if (apic_report_tpr_access && info->enable_tpr_reporting) { diff --git a/hw/intc/exynos4210_gic.c b/hw/intc/exynos4210_gic.c index dd29a86035..d6e987c8c6 100644 --- a/hw/intc/exynos4210_gic.c +++ b/hw/intc/exynos4210_gic.c @@ -60,11 +60,11 @@ static void exynos4210_gic_realize(DeviceState *dev, Er= ror **errp) uint32_t n =3D s->num_cpu; uint32_t i; =20 - s->gic =3D qdev_new_orphan("arm_gic"); + s->gic =3D qdev_new(obj, "gic", "arm_gic"); qdev_prop_set_uint32(s->gic, "num-cpu", s->num_cpu); qdev_prop_set_uint32(s->gic, "num-irq", EXYNOS4210_GIC_NIRQ); gicbusdev =3D SYS_BUS_DEVICE(s->gic); - sysbus_realize_and_unref(gicbusdev, &error_fatal); + sysbus_realize(gicbusdev, &error_fatal); =20 /* Pass through outbound IRQ lines from the GIC */ sysbus_pass_irq(sbd, gicbusdev); diff --git a/hw/intc/i8259.c b/hw/intc/i8259.c index 8f2aa1f0fb..1446d5197a 100644 --- a/hw/intc/i8259.c +++ b/hw/intc/i8259.c @@ -401,7 +401,7 @@ static void pic_realize(DeviceState *dev, Error **errp) pc->parent_realize(dev, errp); } =20 -qemu_irq *i8259_init(ISABus *bus, qemu_irq parent_irq_in) +qemu_irq *i8259_init(Object *parent, ISABus *bus, qemu_irq parent_irq_in) { qemu_irq *irq_set; DeviceState *dev; @@ -410,7 +410,7 @@ qemu_irq *i8259_init(ISABus *bus, qemu_irq parent_irq_i= n) =20 irq_set =3D g_new0(qemu_irq, ISA_NUM_IRQS); =20 - isadev =3D i8259_init_chip(TYPE_I8259, bus, true); + isadev =3D i8259_init_chip(parent, TYPE_I8259, bus, true); dev =3D DEVICE(isadev); =20 qdev_connect_gpio_out(dev, 0, parent_irq_in); @@ -420,7 +420,7 @@ qemu_irq *i8259_init(ISABus *bus, qemu_irq parent_irq_i= n) =20 isa_pic =3D PIC_COMMON(dev); =20 - isadev =3D i8259_init_chip(TYPE_I8259, bus, false); + isadev =3D i8259_init_chip(parent, TYPE_I8259, bus, false); dev =3D DEVICE(isadev); =20 qdev_connect_gpio_out(dev, 0, irq_set[2]); diff --git a/hw/intc/i8259_common.c b/hw/intc/i8259_common.c index 45eb0e14a8..7d3137fe19 100644 --- a/hw/intc/i8259_common.c +++ b/hw/intc/i8259_common.c @@ -89,18 +89,19 @@ static void pic_common_realize(DeviceState *dev, Error = **errp) qdev_set_legacy_instance_id(dev, s->iobase, 1); } =20 -ISADevice *i8259_init_chip(const char *name, ISABus *bus, bool master) +ISADevice *i8259_init_chip(Object *parent, const char *name, ISABus *bus, + bool master) { DeviceState *dev; ISADevice *isadev; =20 - isadev =3D isa_new_orphan(name); + isadev =3D isa_new(parent, "i8259[*]", name); dev =3D DEVICE(isadev); qdev_prop_set_uint32(dev, "iobase", master ? 0x20 : 0xa0); qdev_prop_set_uint32(dev, "elcr_addr", master ? 0x4d0 : 0x4d1); qdev_prop_set_uint8(dev, "elcr_mask", master ? 0xf8 : 0xde); qdev_prop_set_bit(dev, "master", master); - isa_realize_and_unref(isadev, bus, &error_fatal); + qdev_realize(dev, BUS(bus), &error_fatal); =20 return isadev; } diff --git a/hw/intc/riscv_aclint.c b/hw/intc/riscv_aclint.c index 07b5eec742..c5100b94fa 100644 --- a/hw/intc/riscv_aclint.c +++ b/hw/intc/riscv_aclint.c @@ -371,13 +371,15 @@ static const TypeInfo riscv_aclint_mtimer_info =3D { /* * Create ACLINT MTIMER device. */ -DeviceState *riscv_aclint_mtimer_create(hwaddr addr, hwaddr size, +DeviceState *riscv_aclint_mtimer_create(Object *parent, + hwaddr addr, hwaddr size, uint32_t hartid_base, uint32_t num_harts, uint32_t timecmp_base, uint32_t time_base, uint32_t timebase_freq, bool provide_rdtime) { int i; - DeviceState *dev =3D qdev_new_orphan(TYPE_RISCV_ACLINT_MTIMER); + DeviceState *dev =3D qdev_new(parent, "aclint-mtimer[*]", + TYPE_RISCV_ACLINT_MTIMER); RISCVAclintMTimerState *s =3D RISCV_ACLINT_MTIMER(dev); =20 assert(num_harts <=3D RISCV_ACLINT_MAX_HARTS); @@ -391,7 +393,7 @@ DeviceState *riscv_aclint_mtimer_create(hwaddr addr, hw= addr size, qdev_prop_set_uint32(dev, "time-base", time_base); qdev_prop_set_uint32(dev, "aperture-size", size); qdev_prop_set_uint32(dev, "timebase-freq", timebase_freq); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, addr); =20 for (i =3D 0; i < num_harts; i++) { @@ -556,11 +558,13 @@ static const TypeInfo riscv_aclint_swi_info =3D { /* * Create ACLINT [M|S]SWI device. */ -DeviceState *riscv_aclint_swi_create(hwaddr addr, uint32_t hartid_base, +DeviceState *riscv_aclint_swi_create(Object *parent, hwaddr addr, + uint32_t hartid_base, uint32_t num_harts, bool sswi) { int i; - DeviceState *dev =3D qdev_new_orphan(TYPE_RISCV_ACLINT_SWI); + DeviceState *dev =3D qdev_new(parent, "aclint-swi[*]", + TYPE_RISCV_ACLINT_SWI); =20 assert(num_harts <=3D RISCV_ACLINT_MAX_HARTS); assert(!(addr & 0x3)); @@ -568,7 +572,7 @@ DeviceState *riscv_aclint_swi_create(hwaddr addr, uint3= 2_t hartid_base, qdev_prop_set_uint32(dev, "hartid-base", hartid_base); qdev_prop_set_uint32(dev, "num-harts", num_harts); qdev_prop_set_uint32(dev, "sswi", sswi ? true : false); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, addr); =20 for (i =3D 0; i < num_harts; i++) { diff --git a/hw/intc/riscv_aplic.c b/hw/intc/riscv_aplic.c index 977e259cb9..491faaa2cf 100644 --- a/hw/intc/riscv_aplic.c +++ b/hw/intc/riscv_aplic.c @@ -1109,11 +1109,12 @@ void riscv_aplic_add_child(DeviceState *parent, Dev= iceState *child) /* * Create APLIC device. */ -DeviceState *riscv_aplic_create(hwaddr addr, hwaddr size, +DeviceState *riscv_aplic_create(Object *parent, hwaddr addr, hwaddr size, uint32_t hartid_base, uint32_t num_harts, uint32_t num_sources, - uint32_t iprio_bits, bool msimode, bool mmode, DeviceState *parent) + uint32_t iprio_bits, bool msimode, bool mmode, + DeviceState *aplic_parent) { - DeviceState *dev =3D qdev_new_orphan(TYPE_RISCV_APLIC); + DeviceState *dev =3D qdev_new(parent, "aplic[*]", TYPE_RISCV_APLIC); uint32_t i; =20 assert(num_harts < APLIC_MAX_IDC); @@ -1130,11 +1131,11 @@ DeviceState *riscv_aplic_create(hwaddr addr, hwaddr= size, qdev_prop_set_bit(dev, "msimode", msimode); qdev_prop_set_bit(dev, "mmode", mmode); =20 - if (parent) { - riscv_aplic_add_child(parent, dev); + if (aplic_parent) { + riscv_aplic_add_child(aplic_parent, dev); } =20 - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 if (riscv_use_emulated_aplic(msimode)) { sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, addr); diff --git a/hw/intc/riscv_imsic.c b/hw/intc/riscv_imsic.c index 7972f8ce14..d17b180c39 100644 --- a/hw/intc/riscv_imsic.c +++ b/hw/intc/riscv_imsic.c @@ -495,10 +495,11 @@ type_init(riscv_imsic_register_types) /* * Create IMSIC device. */ -DeviceState *riscv_imsic_create(hwaddr addr, uint32_t hartid, bool mmode, +DeviceState *riscv_imsic_create(Object *parent, hwaddr addr, + uint32_t hartid, bool mmode, uint32_t num_pages, uint32_t num_ids) { - DeviceState *dev =3D qdev_new_orphan(TYPE_RISCV_IMSIC); + DeviceState *dev =3D qdev_new(parent, "imsic[*]", TYPE_RISCV_IMSIC); CPUState *cpu =3D cpu_by_arch_id(hartid); uint32_t i; =20 @@ -517,7 +518,7 @@ DeviceState *riscv_imsic_create(hwaddr addr, uint32_t h= artid, bool mmode, qdev_prop_set_uint32(dev, "num-pages", num_pages); qdev_prop_set_uint32(dev, "num-irqs", num_ids + 1); =20 - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, addr); =20 if (!kvm_irqchip_in_kernel()) { diff --git a/hw/intc/s390_flic.c b/hw/intc/s390_flic.c index c86c0e1e60..8d165d6b9e 100644 --- a/hw/intc/s390_flic.c +++ b/hw/intc/s390_flic.c @@ -62,15 +62,13 @@ void s390_flic_init(void) DeviceState *dev; =20 if (kvm_enabled()) { - dev =3D qdev_new_orphan(TYPE_KVM_S390_FLIC); - object_property_add_child(qdev_get_machine(), TYPE_KVM_S390_FLIC, - OBJECT(dev)); + dev =3D qdev_new(qdev_get_machine(), TYPE_KVM_S390_FLIC, + TYPE_KVM_S390_FLIC); } else { - dev =3D qdev_new_orphan(TYPE_QEMU_S390_FLIC); - object_property_add_child(qdev_get_machine(), TYPE_QEMU_S390_FLIC, - OBJECT(dev)); + dev =3D qdev_new(qdev_get_machine(), TYPE_QEMU_S390_FLIC, + TYPE_QEMU_S390_FLIC); } - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); } =20 static int qemu_s390_register_io_adapter(S390FLICState *fs, uint32_t id, diff --git a/hw/intc/sifive_plic.c b/hw/intc/sifive_plic.c index 00e6258403..f2262ed5ae 100644 --- a/hw/intc/sifive_plic.c +++ b/hw/intc/sifive_plic.c @@ -473,7 +473,8 @@ type_init(sifive_plic_register_types) /* * Create PLIC device. */ -DeviceState *sifive_plic_create(hwaddr addr, char *hart_config, +DeviceState *sifive_plic_create(Object *parent, hwaddr addr, + char *hart_config, uint32_t num_harts, uint32_t hartid_base, uint32_t num_sources, uint32_t num_priorities, uint32_t priority_base, @@ -481,7 +482,7 @@ DeviceState *sifive_plic_create(hwaddr addr, char *hart= _config, uint32_t enable_stride, uint32_t context_base, uint32_t context_stride, uint32_t aperture_size) { - DeviceState *dev =3D qdev_new_orphan(TYPE_SIFIVE_PLIC); + DeviceState *dev =3D qdev_new(parent, "plic[*]", TYPE_SIFIVE_PLIC); int i; SiFivePLICState *plic; =20 @@ -498,7 +499,7 @@ DeviceState *sifive_plic_create(hwaddr addr, char *hart= _config, qdev_prop_set_uint32(dev, "context-base", context_base); qdev_prop_set_uint32(dev, "context-stride", context_stride); qdev_prop_set_uint32(dev, "aperture-size", aperture_size); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, addr); =20 plic =3D SIFIVE_PLIC(dev); diff --git a/hw/isa/i82378.c b/hw/isa/i82378.c index 63d4050db2..da09d869f5 100644 --- a/hw/isa/i82378.c +++ b/hw/isa/i82378.c @@ -94,7 +94,7 @@ static void i82378_realize(PCIDevice *pci, Error **errp) */ =20 /* 2 82C59 (irq) */ - s->isa_irqs_in =3D i8259_init(isabus, + s->isa_irqs_in =3D i8259_init(OBJECT(pci), isabus, qemu_allocate_irq(i82378_request_out0_irq, s, 0)); isa_bus_register_input_irqs(isabus, s->isa_irqs_in); diff --git a/hw/isa/piix.c b/hw/isa/piix.c index 31fa53e6a4..6b2946d82c 100644 --- a/hw/isa/piix.c +++ b/hw/isa/piix.c @@ -319,7 +319,7 @@ static void pci_piix_realize(PCIDevice *dev, const char= *uhci_type, =20 qemu_init_irq_child(OBJECT(dev), "i8259-irq", &d->i8259_irq, piix_request_i8259_irq, d, 0); - i8259 =3D i8259_init(isa_bus, &d->i8259_irq); + i8259 =3D i8259_init(OBJECT(dev), isa_bus, &d->i8259_irq); =20 for (size_t i =3D 0; i < ISA_NUM_IRQS; i++) { d->isa_irqs_in[i] =3D i8259[i]; diff --git a/hw/isa/vt82c686.c b/hw/isa/vt82c686.c index 99be41d0ad..de9006bd95 100644 --- a/hw/isa/vt82c686.c +++ b/hw/isa/vt82c686.c @@ -730,7 +730,7 @@ static void via_isa_realize(PCIDevice *d, Error **errp) return; } =20 - s->isa_irqs_in =3D i8259_init(isa_bus, &s->i8259_irq); + s->isa_irqs_in =3D i8259_init(OBJECT(d), isa_bus, &s->i8259_irq); isa_bus_register_input_irqs(isa_bus, s->isa_irqs_in); i8254_pit_init(isa_bus, 0x40, 0, NULL); i8257_dma_init(OBJECT(d), isa_bus, 0); diff --git a/hw/mips/jazz.c b/hw/mips/jazz.c index 849c97eb10..5e34a6582d 100644 --- a/hw/mips/jazz.c +++ b/hw/mips/jazz.c @@ -285,7 +285,7 @@ static void mips_jazz_init(MachineState *machine, isa_bus =3D isa_bus_new(NULL, isa_mem, isa_io, &error_abort); =20 /* ISA devices */ - i8259 =3D i8259_init(isa_bus, env->irq[4]); + i8259 =3D i8259_init(OBJECT(machine), isa_bus, env->irq[4]); isa_bus_register_input_irqs(isa_bus, i8259); i8257_dma_init(OBJECT(rc4030), isa_bus, 0); pit =3D i8254_pit_init(isa_bus, 0x40, 0, NULL); diff --git a/hw/riscv/aia.c b/hw/riscv/aia.c index ed89160029..3ffdfe86fd 100644 --- a/hw/riscv/aia.c +++ b/hw/riscv/aia.c @@ -24,7 +24,8 @@ uint32_t imsic_num_bits(uint32_t count) return ret; } =20 -DeviceState *riscv_create_aia(bool msimode, int aia_guests, +DeviceState *riscv_create_aia(Object *parent, + bool msimode, int aia_guests, uint32_t m_imsic_stride, uint16_t num_sources, const MemMapEntry *aplic_m, @@ -48,7 +49,7 @@ DeviceState *riscv_create_aia(bool msimode, int aia_guest= s, /* Per-socket M-level IMSICs */ addr =3D imsic_m->base + socket * (1U << IMSIC_MMIO_GROUP_MIN_= SHIFT); for (i =3D 0; i < hart_count; i++) { - riscv_imsic_create(addr + i * m_imsic_stride, + riscv_imsic_create(parent, addr + i * m_imsic_stride, base_hartid + i, true, 1, num_msis); } @@ -58,7 +59,8 @@ DeviceState *riscv_create_aia(bool msimode, int aia_guest= s, guest_bits =3D imsic_num_bits(aia_guests + 1); addr =3D imsic_s->base + socket * (1U << IMSIC_MMIO_GROUP_MIN_SHIF= T); for (i =3D 0; i < hart_count; i++) { - riscv_imsic_create(addr + i * IMSIC_HART_SIZE(guest_bits), + riscv_imsic_create(parent, + addr + i * IMSIC_HART_SIZE(guest_bits), base_hartid + i, false, 1 + aia_guests, num_msis); } @@ -66,7 +68,7 @@ DeviceState *riscv_create_aia(bool msimode, int aia_guest= s, =20 if (!kvm_enabled()) { /* Per-socket M-level APLIC */ - aplic_m_dev =3D riscv_aplic_create(aplic_m->base + + aplic_m_dev =3D riscv_aplic_create(parent, aplic_m->base + socket * aplic_m->size, aplic_m->size, (msimode) ? 0 : base_hartid, @@ -77,7 +79,7 @@ DeviceState *riscv_create_aia(bool msimode, int aia_guest= s, } =20 /* Per-socket S-level APLIC */ - aplic_s_dev =3D riscv_aplic_create(aplic_s->base + + aplic_s_dev =3D riscv_aplic_create(parent, aplic_s->base + socket * aplic_s->size, aplic_s->size, (msimode) ? 0 : base_hartid, diff --git a/hw/riscv/aia.h b/hw/riscv/aia.h index 565f91accc..09bae100e3 100644 --- a/hw/riscv/aia.h +++ b/hw/riscv/aia.h @@ -13,7 +13,8 @@ =20 uint32_t imsic_num_bits(uint32_t count); =20 -DeviceState *riscv_create_aia(bool msimode, int aia_guests, +DeviceState *riscv_create_aia(Object *parent, + bool msimode, int aia_guests, uint32_t m_imsic_stride, uint16_t num_sources, const MemMapEntry *aplic_m, diff --git a/hw/riscv/cps.c b/hw/riscv/cps.c index 86172be5b3..b6b30e05e1 100644 --- a/hw/riscv/cps.c +++ b/hw/riscv/cps.c @@ -135,14 +135,15 @@ static void riscv_cps_realize(DeviceState *dev, Error= **errp) for (i =3D 0; i < num_of_clusters; i++) { uint64_t cm_base =3D GLOBAL_CM_BASE + (CM_SIZE * i); uint32_t hartid_base =3D i << MHARTID_CLUSTER_SHIFT; - s->aplic =3D riscv_aplic_create(cm_base + AIA_PLIC_M_OFFSET, + s->aplic =3D riscv_aplic_create(OBJECT(dev), + cm_base + AIA_PLIC_M_OFFSET, AIA_PLIC_M_SIZE, hartid_base, /* hartid_base */ MAX_HARTS, /* num_harts */ APLIC_NUM_SOURCES, APLIC_NUM_PRIO_BITS, false, true, NULL); - riscv_aplic_create(cm_base + AIA_PLIC_S_OFFSET, + riscv_aplic_create(OBJECT(dev), cm_base + AIA_PLIC_S_OFFSET, AIA_PLIC_S_SIZE, hartid_base, /* hartid_base */ MAX_HARTS, /* num_harts */ @@ -151,9 +152,9 @@ static void riscv_cps_realize(DeviceState *dev, Error *= *errp) false, false, s->aplic); /* PLIC changes msi_nonbroken to ture. We revert the change. */ msi_nonbroken =3D false; - riscv_aclint_swi_create(cm_base + AIA_CLINT_OFFSET, + riscv_aclint_swi_create(OBJECT(dev), cm_base + AIA_CLINT_OFFSET, hartid_base, MAX_HARTS, false); - riscv_aclint_mtimer_create(cm_base + AIA_CLINT_OFFSET + + riscv_aclint_mtimer_create(OBJECT(dev), cm_base + AIA_CLINT_OFFSET= + RISCV_ACLINT_SWI_SIZE, RISCV_ACLINT_DEFAULT_MTIMER_SIZE, hartid_base, diff --git a/hw/riscv/k230.c b/hw/riscv/k230.c index 656f28190c..9c67dfb895 100644 --- a/hw/riscv/k230.c +++ b/hw/riscv/k230.c @@ -117,7 +117,8 @@ static void k230_soc_init(Object *obj) memmap[K230_DEV_BOOTROM].base); } =20 -static DeviceState *k230_create_plic(int base_hartid, int hartid_count) +static DeviceState *k230_create_plic(Object *parent, int base_hartid, + int hartid_count) { g_autofree char *plic_hart_config =3D NULL; =20 @@ -125,7 +126,7 @@ static DeviceState *k230_create_plic(int base_hartid, i= nt hartid_count) plic_hart_config =3D riscv_plic_hart_config_string(hartid_count); =20 /* Per-socket PLIC */ - return sifive_plic_create(memmap[K230_DEV_PLIC].base, + return sifive_plic_create(parent, memmap[K230_DEV_PLIC].base, plic_hart_config, hartid_count, base_hartid, K230_PLIC_NUM_SOURCES, K230_PLIC_NUM_PRIORITIES, @@ -174,12 +175,13 @@ static void k230_soc_realize(DeviceState *dev, Error = **errp) &s->bootrom); =20 /* PLIC */ - s->c908_plic =3D k230_create_plic(C908_CPU_HARTID, c908_cpus); + s->c908_plic =3D k230_create_plic(OBJECT(dev), C908_CPU_HARTID, c908_c= pus); =20 /* CLINT */ - riscv_aclint_swi_create(memmap[K230_DEV_CLINT].base, + riscv_aclint_swi_create(OBJECT(dev), memmap[K230_DEV_CLINT].base, C908_CPU_HARTID, c908_cpus, false); - riscv_aclint_mtimer_create(memmap[K230_DEV_CLINT].base + 0x4000, + riscv_aclint_mtimer_create(OBJECT(dev), + memmap[K230_DEV_CLINT].base + 0x4000, RISCV_ACLINT_DEFAULT_MTIMER_SIZE, C908_CPU_HARTID, c908_cpus, RISCV_ACLINT_DEFAULT_MTIMECMP, diff --git a/hw/riscv/microchip_pfsoc.c b/hw/riscv/microchip_pfsoc.c index cc93b5c2ba..18ce57fba4 100644 --- a/hw/riscv/microchip_pfsoc.c +++ b/hw/riscv/microchip_pfsoc.c @@ -250,9 +250,9 @@ static void microchip_pfsoc_soc_realize(DeviceState *de= v, Error **errp) memmap[MICROCHIP_PFSOC_BUSERR_UNIT4].size); =20 /* CLINT */ - riscv_aclint_swi_create(memmap[MICROCHIP_PFSOC_CLINT].base, + riscv_aclint_swi_create(OBJECT(dev), memmap[MICROCHIP_PFSOC_CLINT].bas= e, 0, ms->smp.cpus, false); - riscv_aclint_mtimer_create( + riscv_aclint_mtimer_create(OBJECT(dev), memmap[MICROCHIP_PFSOC_CLINT].base + RISCV_ACLINT_SWI_SIZE, RISCV_ACLINT_DEFAULT_MTIMER_SIZE, 0, ms->smp.cpus, RISCV_ACLINT_DEFAULT_MTIMECMP, RISCV_ACLINT_DEFAULT_MTIME, @@ -281,7 +281,8 @@ static void microchip_pfsoc_soc_realize(DeviceState *de= v, Error **errp) plic_hart_config =3D riscv_plic_hart_config_string(ms->smp.cpus); =20 /* PLIC */ - s->plic =3D sifive_plic_create(memmap[MICROCHIP_PFSOC_PLIC].base, + s->plic =3D sifive_plic_create(OBJECT(dev), + memmap[MICROCHIP_PFSOC_PLIC].base, plic_hart_config, ms->smp.cpus, 0, MICROCHIP_PFSOC_PLIC_NUM_SOURCES, MICROCHIP_PFSOC_PLIC_NUM_PRIORITIES, diff --git a/hw/riscv/shakti_c.c b/hw/riscv/shakti_c.c index 835b1f879b..a6f832dd31 100644 --- a/hw/riscv/shakti_c.c +++ b/hw/riscv/shakti_c.c @@ -115,7 +115,8 @@ static void shakti_c_soc_state_realize(DeviceState *dev= , Error **errp) =20 sysbus_realize(SYS_BUS_DEVICE(&sss->cpus), &error_abort); =20 - sss->plic =3D sifive_plic_create(shakti_c_memmap[SHAKTI_C_PLIC].base, + sss->plic =3D sifive_plic_create(OBJECT(dev), + shakti_c_memmap[SHAKTI_C_PLIC].base, (char *)SHAKTI_C_PLIC_HART_CONFIG, ms->smp.cpus, 0, SHAKTI_C_PLIC_NUM_SOURCES, SHAKTI_C_PLIC_NUM_PRIORITIES, @@ -127,9 +128,10 @@ static void shakti_c_soc_state_realize(DeviceState *de= v, Error **errp) SHAKTI_C_PLIC_CONTEXT_STRIDE, shakti_c_memmap[SHAKTI_C_PLIC].size); =20 - riscv_aclint_swi_create(shakti_c_memmap[SHAKTI_C_CLINT].base, + riscv_aclint_swi_create(OBJECT(dev), shakti_c_memmap[SHAKTI_C_CLINT].b= ase, 0, 1, false); - riscv_aclint_mtimer_create(shakti_c_memmap[SHAKTI_C_CLINT].base + + riscv_aclint_mtimer_create(OBJECT(dev), + shakti_c_memmap[SHAKTI_C_CLINT].base + RISCV_ACLINT_SWI_SIZE, RISCV_ACLINT_DEFAULT_MTIMER_SIZE, 0, 1, RISCV_ACLINT_DEFAULT_MTIMECMP, RISCV_ACLINT_DEFAULT_MTIME, diff --git a/hw/riscv/sifive_e.c b/hw/riscv/sifive_e.c index 71925583bd..dfdb7ae4c1 100644 --- a/hw/riscv/sifive_e.c +++ b/hw/riscv/sifive_e.c @@ -214,7 +214,7 @@ static void sifive_e_soc_realize(DeviceState *dev, Erro= r **errp) memmap[SIFIVE_E_DEV_MROM].base, &s->mask_rom); =20 /* MMIO */ - s->plic =3D sifive_plic_create(memmap[SIFIVE_E_DEV_PLIC].base, + s->plic =3D sifive_plic_create(OBJECT(dev), memmap[SIFIVE_E_DEV_PLIC].= base, (char *)SIFIVE_E_PLIC_HART_CONFIG, ms->smp.cpus, 0, SIFIVE_E_PLIC_NUM_SOURCES, SIFIVE_E_PLIC_NUM_PRIORITIES, @@ -225,9 +225,10 @@ static void sifive_e_soc_realize(DeviceState *dev, Err= or **errp) SIFIVE_E_PLIC_CONTEXT_BASE, SIFIVE_E_PLIC_CONTEXT_STRIDE, memmap[SIFIVE_E_DEV_PLIC].size); - riscv_aclint_swi_create(memmap[SIFIVE_E_DEV_CLINT].base, + riscv_aclint_swi_create(OBJECT(dev), memmap[SIFIVE_E_DEV_CLINT].base, 0, ms->smp.cpus, false); - riscv_aclint_mtimer_create(memmap[SIFIVE_E_DEV_CLINT].base + + riscv_aclint_mtimer_create(OBJECT(dev), + memmap[SIFIVE_E_DEV_CLINT].base + RISCV_ACLINT_SWI_SIZE, RISCV_ACLINT_DEFAULT_MTIMER_SIZE, 0, ms->smp.cpus, RISCV_ACLINT_DEFAULT_MTIMECMP, RISCV_ACLINT_DEFAULT_MTIME, diff --git a/hw/riscv/sifive_u.c b/hw/riscv/sifive_u.c index 47ce75ef11..41eb22dc02 100644 --- a/hw/riscv/sifive_u.c +++ b/hw/riscv/sifive_u.c @@ -771,7 +771,7 @@ static void sifive_u_soc_realize(DeviceState *dev, Erro= r **errp) plic_hart_config =3D riscv_plic_hart_config_string(ms->smp.cpus); =20 /* MMIO */ - s->plic =3D sifive_plic_create(memmap[SIFIVE_U_DEV_PLIC].base, + s->plic =3D sifive_plic_create(OBJECT(dev), memmap[SIFIVE_U_DEV_PLIC].= base, plic_hart_config, ms->smp.cpus, 0, SIFIVE_U_PLIC_NUM_SOURCES, SIFIVE_U_PLIC_NUM_PRIORITIES, @@ -787,9 +787,10 @@ static void sifive_u_soc_realize(DeviceState *dev, Err= or **errp) serial_hd(0), qdev_get_gpio_in(DEVICE(s->plic), SIFIVE_U_UART0_IRQ= )); sifive_uart_create(system_memory, memmap[SIFIVE_U_DEV_UART1].base, serial_hd(1), qdev_get_gpio_in(DEVICE(s->plic), SIFIVE_U_UART1_IRQ= )); - riscv_aclint_swi_create(memmap[SIFIVE_U_DEV_CLINT].base, 0, + riscv_aclint_swi_create(OBJECT(dev), memmap[SIFIVE_U_DEV_CLINT].base, = 0, ms->smp.cpus, false); - riscv_aclint_mtimer_create(memmap[SIFIVE_U_DEV_CLINT].base + + riscv_aclint_mtimer_create(OBJECT(dev), + memmap[SIFIVE_U_DEV_CLINT].base + RISCV_ACLINT_SWI_SIZE, RISCV_ACLINT_DEFAULT_MTIMER_SIZE, 0, ms->smp.cpus, RISCV_ACLINT_DEFAULT_MTIMECMP, RISCV_ACLINT_DEFAULT_MTIME, diff --git a/hw/riscv/spike.c b/hw/riscv/spike.c index 9fde0faf39..c53409e4f1 100644 --- a/hw/riscv/spike.c +++ b/hw/riscv/spike.c @@ -163,10 +163,10 @@ static void spike_board_init(MachineState *machine) sysbus_realize(SYS_BUS_DEVICE(&s->soc[i]), &error_fatal); =20 /* Core Local Interruptor (timer and IPI) for each socket */ - riscv_aclint_swi_create( + riscv_aclint_swi_create(OBJECT(machine), memmap[SPIKE_CLINT].base + i * memmap[SPIKE_CLINT].size, base_hartid, hart_count, false); - riscv_aclint_mtimer_create( + riscv_aclint_mtimer_create(OBJECT(machine), memmap[SPIKE_CLINT].base + i * memmap[SPIKE_CLINT].size + RISCV_ACLINT_SWI_SIZE, RISCV_ACLINT_DEFAULT_MTIMER_SIZE, base_hartid, hart_count, diff --git a/hw/riscv/tt_atlantis.c b/hw/riscv/tt_atlantis.c index 9c63ec7e29..1e9bbc0f0b 100644 --- a/hw/riscv/tt_atlantis.c +++ b/hw/riscv/tt_atlantis.c @@ -493,7 +493,8 @@ static void tt_atlantis_machine_init(MachineState *mach= ine) &error_abort); sysbus_realize(SYS_BUS_DEVICE(&s->soc), &error_fatal); =20 - s->irqchip =3D riscv_create_aia(true, TT_IRQCHIP_GUESTS, + s->irqchip =3D riscv_create_aia(OBJECT(machine), + true, TT_IRQCHIP_GUESTS, TT_IRQCHIP_MIMSIC_STRIDE, TT_IRQCHIP_NUM_SOURCES, &s->memmap[TT_ATL_MAPLIC], @@ -504,7 +505,8 @@ static void tt_atlantis_machine_init(MachineState *mach= ine) TT_IRQCHIP_NUM_MSIS, TT_IRQCHIP_NUM_PRIO_BITS); =20 - riscv_aclint_mtimer_create(s->memmap[TT_ATL_ACLINT].base, + riscv_aclint_mtimer_create(OBJECT(machine), + s->memmap[TT_ATL_ACLINT].base, TT_ACLINT_MTIME_SIZE, 0, hart_count, TT_ACLINT_MTIMECMP, diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index cb1fa3c732..0479005437 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -1114,7 +1114,8 @@ static FWCfgState *create_fw_cfg(const MachineState *= ms, hwaddr base) return fw_cfg; } =20 -static DeviceState *virt_create_plic(const MemMapEntry *memmap, int socket, +static DeviceState *virt_create_plic(Object *parent, + const MemMapEntry *memmap, int socket, int base_hartid, int hart_count) { g_autofree char *plic_hart_config =3D NULL; @@ -1123,7 +1124,7 @@ static DeviceState *virt_create_plic(const MemMapEntr= y *memmap, int socket, plic_hart_config =3D riscv_plic_hart_config_string(hart_count); =20 /* Per-socket PLIC */ - return sifive_plic_create( + return sifive_plic_create(parent, memmap[VIRT_PLIC].base + socket * memmap[VIRT_PLIC].size, plic_hart_config, hart_count, base_hartid, VIRT_IRQCHIP_NUM_SOURCES, @@ -1356,7 +1357,8 @@ static void virt_machine_init(MachineState *machine) if (virt_aclint_allowed() && s->have_aclint) { if (s->aia_type =3D=3D VIRT_AIA_TYPE_APLIC_IMSIC) { /* Per-socket ACLINT MTIMER */ - riscv_aclint_mtimer_create(s->memmap[VIRT_CLINT].base + + riscv_aclint_mtimer_create(OBJECT(machine), + s->memmap[VIRT_CLINT].base + i * RISCV_ACLINT_DEFAULT_MTIMER_SIZE, RISCV_ACLINT_DEFAULT_MTIMER_SIZE, base_hartid, hart_count, @@ -1365,10 +1367,12 @@ static void virt_machine_init(MachineState *machine) RISCV_ACLINT_DEFAULT_TIMEBASE_FREQ, true); } else { /* Per-socket ACLINT MSWI, MTIMER, and SSWI */ - riscv_aclint_swi_create(s->memmap[VIRT_CLINT].base + + riscv_aclint_swi_create(OBJECT(machine), + s->memmap[VIRT_CLINT].base + i * s->memmap[VIRT_CLINT].size, base_hartid, hart_count, false); - riscv_aclint_mtimer_create(s->memmap[VIRT_CLINT].base + + riscv_aclint_mtimer_create(OBJECT(machine), + s->memmap[VIRT_CLINT].base + i * s->memmap[VIRT_CLINT].size + RISCV_ACLINT_SWI_SIZE, RISCV_ACLINT_DEFAULT_MTIMER_SIZE, @@ -1376,16 +1380,18 @@ static void virt_machine_init(MachineState *machine) RISCV_ACLINT_DEFAULT_MTIMECMP, RISCV_ACLINT_DEFAULT_MTIME, RISCV_ACLINT_DEFAULT_TIMEBASE_FREQ, true); - riscv_aclint_swi_create(s->memmap[VIRT_ACLINT_SSWI].base + + riscv_aclint_swi_create(OBJECT(machine), + s->memmap[VIRT_ACLINT_SSWI].base + i * s->memmap[VIRT_ACLINT_SSWI].size, base_hartid, hart_count, true); } } else if (tcg_enabled()) { /* Per-socket SiFive CLINT */ - riscv_aclint_swi_create( + riscv_aclint_swi_create(OBJECT(machine), s->memmap[VIRT_CLINT].base + i * s->memmap[VIRT_CLINT]= .size, base_hartid, hart_count, false); - riscv_aclint_mtimer_create(s->memmap[VIRT_CLINT].base + + riscv_aclint_mtimer_create(OBJECT(machine), + s->memmap[VIRT_CLINT].base + i * s->memmap[VIRT_CLINT].size + RISCV_ACLINT_SWI_SIZE, RISCV_ACLINT_DEFAULT_MTIMER_SIZE, base_hartid, hart_co= unt, RISCV_ACLINT_DEFAULT_MTIMECMP, RISCV_ACLINT_DEFAULT_MT= IME, @@ -1394,10 +1400,11 @@ static void virt_machine_init(MachineState *machine) =20 /* Per-socket interrupt controller */ if (s->aia_type =3D=3D VIRT_AIA_TYPE_NONE) { - s->irqchip[i] =3D virt_create_plic(s->memmap, i, + s->irqchip[i] =3D virt_create_plic(OBJECT(machine), s->memmap,= i, base_hartid, hart_count); } else { - s->irqchip[i] =3D riscv_create_aia(s->aia_type =3D=3D VIRT_AIA= _TYPE_APLIC_IMSIC, + s->irqchip[i] =3D riscv_create_aia(OBJECT(machine), + s->aia_type =3D=3D VIRT_AIA_T= YPE_APLIC_IMSIC, s->aia_guests, IMSIC_HART_SIZE(0), s->num_sources, diff --git a/hw/riscv/xiangshan_kmh.c b/hw/riscv/xiangshan_kmh.c index 384624d69a..c1c10e9456 100644 --- a/hw/riscv/xiangshan_kmh.c +++ b/hw/riscv/xiangshan_kmh.c @@ -55,7 +55,8 @@ static const MemMapEntry xiangshan_kmh_memmap[] =3D { [XIANGSHAN_KMH_DRAM] =3D { 0x80000000, 0x0 }, }; =20 -static DeviceState *xiangshan_kmh_create_aia(uint32_t num_harts) +static DeviceState *xiangshan_kmh_create_aia(Object *parent, + uint32_t num_harts) { int i; const MemMapEntry *memmap =3D xiangshan_kmh_memmap; @@ -65,27 +66,27 @@ static DeviceState *xiangshan_kmh_create_aia(uint32_t n= um_harts) /* M-level IMSICs */ addr =3D memmap[XIANGSHAN_KMH_IMSIC_M].base; for (i =3D 0; i < num_harts; i++) { - riscv_imsic_create(addr + i * IMSIC_HART_SIZE(0), i, true, + riscv_imsic_create(parent, addr + i * IMSIC_HART_SIZE(0), i, true, 1, XIANGSHAN_KMH_IMSIC_NUM_IDS); } =20 /* S-level IMSICs */ addr =3D memmap[XIANGSHAN_KMH_IMSIC_S].base; for (i =3D 0; i < num_harts; i++) { - riscv_imsic_create(addr + + riscv_imsic_create(parent, addr + i * IMSIC_HART_SIZE(XIANGSHAN_KMH_IMSIC_GUEST_B= ITS), i, false, 1 + XIANGSHAN_KMH_IMSIC_GUEST_BITS, XIANGSHAN_KMH_IMSIC_NUM_IDS); } =20 /* M-level APLIC */ - aplic_m =3D riscv_aplic_create(memmap[XIANGSHAN_KMH_APLIC_M].base, + aplic_m =3D riscv_aplic_create(parent, memmap[XIANGSHAN_KMH_APLIC_M].b= ase, memmap[XIANGSHAN_KMH_APLIC_M].size, 0, 0, XIANGSHAN_KMH_APLIC_NUM_SOURCES, 1, true, true, NULL); =20 /* S-level APLIC */ - riscv_aplic_create(memmap[XIANGSHAN_KMH_APLIC_S].base, + riscv_aplic_create(parent, memmap[XIANGSHAN_KMH_APLIC_S].base, memmap[XIANGSHAN_KMH_APLIC_S].size, 0, 0, XIANGSHAN_KMH_APLIC_NUM_SOURCES, 1, true, false, aplic_m); @@ -108,7 +109,7 @@ static void xiangshan_kmh_soc_realize(DeviceState *dev,= Error **errp) sysbus_realize(SYS_BUS_DEVICE(&s->cpus), &error_fatal); =20 /* AIA */ - s->irqchip =3D xiangshan_kmh_create_aia(num_harts); + s->irqchip =3D xiangshan_kmh_create_aia(OBJECT(dev), num_harts); =20 /* UART */ serial_mm_init(system_memory, memmap[XIANGSHAN_KMH_UART0].base, 2, @@ -116,9 +117,10 @@ static void xiangshan_kmh_soc_realize(DeviceState *dev= , Error **errp) 115200, serial_hd(0), DEVICE_LITTLE_ENDIAN); =20 /* CLINT */ - riscv_aclint_swi_create(memmap[XIANGSHAN_KMH_CLINT].base, + riscv_aclint_swi_create(OBJECT(dev), memmap[XIANGSHAN_KMH_CLINT].base, 0, num_harts, false); - riscv_aclint_mtimer_create(memmap[XIANGSHAN_KMH_CLINT].base + + riscv_aclint_mtimer_create(OBJECT(dev), + memmap[XIANGSHAN_KMH_CLINT].base + RISCV_ACLINT_SWI_SIZE, RISCV_ACLINT_DEFAULT_MTIMER_SIZE, 0, num_harts, RISCV_ACLINT_DEFAULT_MTIMECMP, diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h index d4b6d3ed57..dbaf61bcf1 100644 --- a/include/hw/i386/pc.h +++ b/include/hw/i386/pc.h @@ -191,7 +191,7 @@ void pc_basic_device_init(struct PCMachineState *pcms, uint32_t hpet_irqs); void pc_nic_init(PCMachineClass *pcmc, ISABus *isa_bus, PCIBus *pci_bus); =20 -void pc_i8259_create(ISABus *isa_bus, qemu_irq *i8259_irqs); +void pc_i8259_create(Object *parent, ISABus *isa_bus, qemu_irq *i8259_irqs= ); =20 /* port92.c */ #define PORT92_A20_LINE "a20" diff --git a/include/hw/intc/i8259.h b/include/hw/intc/i8259.h index 1f2420231f..9aa89890b1 100644 --- a/include/hw/intc/i8259.h +++ b/include/hw/intc/i8259.h @@ -14,8 +14,8 @@ extern PICCommonState *isa_pic; * connect its output to @parent_irq_in, * return an (allocated) array of 16 input IRQs. */ -qemu_irq *i8259_init(ISABus *bus, qemu_irq parent_irq_in); -qemu_irq *kvm_i8259_init(ISABus *bus); +qemu_irq *i8259_init(Object *parent, ISABus *bus, qemu_irq parent_irq_in); +qemu_irq *kvm_i8259_init(Object *parent, ISABus *bus); int pic_get_output(PICCommonState *s); int pic_read_irq(PICCommonState *s); =20 diff --git a/include/hw/intc/riscv_aclint.h b/include/hw/intc/riscv_aclint.h index 0e0b98acb0..18c70fd3c7 100644 --- a/include/hw/intc/riscv_aclint.h +++ b/include/hw/intc/riscv_aclint.h @@ -46,7 +46,8 @@ typedef struct RISCVAclintMTimerState { qemu_irq *timer_irqs; } RISCVAclintMTimerState; =20 -DeviceState *riscv_aclint_mtimer_create(hwaddr addr, hwaddr size, +DeviceState *riscv_aclint_mtimer_create(Object *parent, + hwaddr addr, hwaddr size, uint32_t hartid_base, uint32_t num_harts, uint32_t timecmp_base, uint32_t time_base, uint32_t timebase_freq, bool provide_rdtime); @@ -68,7 +69,8 @@ typedef struct RISCVAclintSwiState { qemu_irq *soft_irqs; } RISCVAclintSwiState; =20 -DeviceState *riscv_aclint_swi_create(hwaddr addr, uint32_t hartid_base, +DeviceState *riscv_aclint_swi_create(Object *parent, hwaddr addr, + uint32_t hartid_base, uint32_t num_harts, bool sswi); =20 enum { diff --git a/include/hw/intc/riscv_aplic.h b/include/hw/intc/riscv_aplic.h index c7a4d4ad01..8d45120f48 100644 --- a/include/hw/intc/riscv_aplic.h +++ b/include/hw/intc/riscv_aplic.h @@ -80,8 +80,9 @@ bool riscv_is_kvm_aia_aplic_imsic(bool msimode); bool riscv_use_emulated_aplic(bool msimode); void riscv_aplic_set_kvm_msicfgaddr(RISCVAPLICState *aplic, hwaddr addr); =20 -DeviceState *riscv_aplic_create(hwaddr addr, hwaddr size, +DeviceState *riscv_aplic_create(Object *parent, hwaddr addr, hwaddr size, uint32_t hartid_base, uint32_t num_harts, uint32_t num_sources, - uint32_t iprio_bits, bool msimode, bool mmode, DeviceState *parent); + uint32_t iprio_bits, bool msimode, bool mmode, + DeviceState *aplic_parent); =20 #endif diff --git a/include/hw/intc/riscv_imsic.h b/include/hw/intc/riscv_imsic.h index fae999731d..c46232fbc4 100644 --- a/include/hw/intc/riscv_imsic.h +++ b/include/hw/intc/riscv_imsic.h @@ -62,7 +62,8 @@ struct RISCVIMSICState { uint32_t num_irqs; }; =20 -DeviceState *riscv_imsic_create(hwaddr addr, uint32_t hartid, bool mmode, +DeviceState *riscv_imsic_create(Object *parent, hwaddr addr, + uint32_t hartid, bool mmode, uint32_t num_pages, uint32_t num_ids); =20 #endif diff --git a/include/hw/intc/sifive_plic.h b/include/hw/intc/sifive_plic.h index 32973dbf28..9e67098ce4 100644 --- a/include/hw/intc/sifive_plic.h +++ b/include/hw/intc/sifive_plic.h @@ -76,7 +76,8 @@ struct SiFivePLICState { qemu_irq *s_external_irqs; }; =20 -DeviceState *sifive_plic_create(hwaddr addr, char *hart_config, +DeviceState *sifive_plic_create(Object *parent, hwaddr addr, + char *hart_config, uint32_t num_harts, uint32_t hartid_base, uint32_t num_sources, uint32_t num_priorities, uint32_t priority_base, diff --git a/include/hw/isa/i8259_internal.h b/include/hw/isa/i8259_interna= l.h index f9dcc4163e..b351ac2672 100644 --- a/include/hw/isa/i8259_internal.h +++ b/include/hw/isa/i8259_internal.h @@ -71,7 +71,8 @@ struct PICCommonState { }; =20 void pic_reset_common(PICCommonState *s); -ISADevice *i8259_init_chip(const char *name, ISABus *bus, bool master); +ISADevice *i8259_init_chip(Object *parent, const char *name, ISABus *bus, + bool master); void pic_stat_update_irq(int irq, int level); =20 #endif /* QEMU_I8259_INTERNAL_H */ --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411022; cv=none; d=zohomail.com; s=zohoarc; b=b4/D2wh3jilOXBRp95tiPL/FBmHJPzrHMMy70weKQ1lKbb0oDKjDLSB0tHP61Puaq272M/MODVIX/TE1mQynXKSRTSkav9Z9IBcw+uY5e7v6ucHGVm/VXD1KLCkafrmsH8ObJ+/hQMfP+uf6RJGv8xT80UBnJJOgjxTuQfBrVOU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411022; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Xu9OP68cz7KLt15uWNEaAAQ9k7wKLSmWyxxwrGyp3/I=; b=O/23EIghjBwlcfoKejKMZbII1rDCE1Ks4pO2jrzJj2UqvrTQ4RJrm4AK1r+t3V5SbW0tWc7EaI7s5Np6fanD8MrSzyPAGBhqXHaeQFOJ01d5yAfUyTO9Dt/1B+PhUdiwBQO9zlFpdWd83sGzwBkJLmEJocjsRKqijR5C8DDj4tc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411022342826.5948186544606; Sat, 18 Jul 2026 14:43:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCof-0002WK-WD; Sat, 18 Jul 2026 17:43:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCod-0002Jy-Kq; Sat, 18 Jul 2026 17:43:23 -0400 Received: from pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.245.243.92]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCoa-0002mT-EQ; Sat, 18 Jul 2026 17:43:23 -0400 Received: from ip-10-5-6-203.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.6.203]) by internal-pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:43:16 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.234:4920] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.151:2525] with esmtp (Farcaster) id 6b8f73a0-dafc-4a45-8f42-8ca276182d8b; Sat, 18 Jul 2026 21:43:16 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA002.ant.amazon.com (10.250.64.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:43:16 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:43:06 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411000; x=1815947000; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Xu9OP68cz7KLt15uWNEaAAQ9k7wKLSmWyxxwrGyp3/I=; b=eOcjFvW3bCPD99lkiL2kyDWodBvFy4A5uHoPFH+WawsItSbcBgsFjYQZ AKFvx55aoYVpcNj7hF/sDLxJ/+poddSGgxVqCKn1zhRIsul5H3hsBQiwS TyV9heWejxOIj2UyI8WTRWusZcZipXXlD161YWvQz1naR0uAhLPSTXXLU adO1g9bKWXVAC7VRe+kq8uSl/hbdD8Kmq+eHB/vUGJpeH156fcZ8JIojv qPUgPbRpNsD60AUENE4Gt49zjnWky0IoLvrsekK5HLOZ7MfgS05var02W IEHtHzRQQpxqdmm/m5YfJd+v8F3/RimwcG6TRLRo4LsvfymmDMCPOtqT1 A==; X-CSE-ConnectionGUID: vjT6TDXST2+BLpGax7ufog== X-CSE-MsgGUID: wuzA1zuiTsaNXkpNS8S0NQ== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23422643" X-Farcaster-Flow-ID: 6b8f73a0-dafc-4a45-8f42-8ca276182d8b From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 023/137] hw/pci-host: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:34:58 +0000 Message-ID: <20260718213652.37673-24-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D037UWC002.ant.amazon.com (10.13.139.250) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.245.243.92; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411024211158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/pci-host to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/pci-host/articia.c:188 | OBJECT(dev) | "host-func" | articia_realize()= : PCI-facing host function is composite child of the ArticiaS host bridge hw/pci-host/articia.c:191 | OBJECT(dev) | "pci-bridge" | articia_realize(= ): on-chip PCI bridge is composite child of the ArticiaS host bridge hw/pci-host/astro.c:524 | OBJECT(s) | "elroy[*]" | elroy_init() static he= lper called from astro_realize(); Elroy PCI host is composite child of the = Astro chip; thread Object *parent from caller hw/pci-host/bonito.c:744 | OBJECT(machine) | "pci-host" | bonito_init() p= ublic helper called from board init (fuloong2e); thread Object *parent from= caller hw/pci-host/bonito.c:750 | OBJECT(pcihost) | "pci" | PCI-facing Bonito fu= nction is composite child of the Bonito host-bridge SysBus device hw/pci-host/grackle.c:63 | OBJECT(dev) | "pci" | grackle_realize(): PCI-f= acing grackle function is composite child of the host bridge hw/pci-host/gt64120.c:1207 | OBJECT(dev) | "pci" | gt64120_realize(): PCI= -facing GT-64120 function is composite child of the host bridge hw/pci-host/i440fx.c:285 | OBJECT(dev) | "pci" | i440fx_pcihost_realize()= : i440FX PCI function is composite child of the host bridge hw/pci-host/mv64361.c:97 | OBJECT(dev) | "pci" | mv64361_pcihost_realize(= ): PCI-facing MV64361 bridge function is composite child of the host bridge hw/pci-host/pnv_phb.c:170 | OBJECT(dev) | "root-port" | pnv_phb_realize()= : built-in PHB root port is composite child of the PnvPHB proxy device hw/pci-host/pnv_phb4_pec.c:183 | OBJECT(pec) | "phb[*]" | pnv_pec_default= _phb_realize() called from pnv_pec_realize(); already parented via object_p= roperty_add_child(pec,"phb[*]",...); fold into qdev_new() hw/pci-host/ppc4xx_pci.c:335 | OBJECT(dev) | "pci" | ppc4xx_pcihost_reali= ze(): PCI-facing 4xx host bridge function is composite child of the host br= idge hw/pci-host/ppce500.c:476 | OBJECT(dev) | "pci" | e500_pcihost_realize():= PCI-facing e500 bridge function is composite child of the host bridge hw/pci-host/raven.c:284 | OBJECT(d) | "pci" | raven_pcihost_realizefn(Dev= iceState *d,...): PCI-facing Raven function is composite child of the host = bridge hw/pci-host/sabre.c:386 | OBJECT(dev) | "pci" | sabre_realize(): PCI-faci= ng Sabre function is composite child of the host bridge hw/pci-host/sabre.c:394 | OBJECT(dev) | "bridge-b" | sabre_realize(): on-= board Simba PCI bridge B is composite child of the Sabre host bridge hw/pci-host/sabre.c:399 | OBJECT(dev) | "bridge-a" | sabre_realize(): on-= board Simba PCI bridge A is composite child of the Sabre host bridge hw/pci-host/sh_pci.c:145 | OBJECT(dev) | "pci" | sh_pcic_host_realize(): = PCI-facing SH host function is composite child of the host bridge hw/pci-host/uninorth.c:129 | OBJECT(dev) | "pci" | pci_unin_main_realize(= ): PCI-facing UniNorth function is composite child of the host bridge hw/pci-host/uninorth.c:179 | OBJECT(dev) | "pci" | pci_u3_agp_realize(): = PCI-facing U3-AGP function is composite child of the host bridge hw/pci-host/uninorth.c:223 | OBJECT(dev) | "pci" | pci_unin_agp_realize()= : PCI-facing UniNorth-AGP function is composite child of the host bridge hw/pci-host/uninorth.c:256 | OBJECT(dev) | "pci" | pci_unin_internal_real= ize(): PCI-facing internal-UniNorth function is composite child of the host= bridge Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/mips/fuloong2e.c | 2 +- hw/pci-host/articia.c | 6 ++++-- hw/pci-host/astro.c | 8 ++++---- hw/pci-host/bonito.c | 10 +++++----- hw/pci-host/grackle.c | 2 +- hw/pci-host/gt64120.c | 3 ++- hw/pci-host/i440fx.c | 2 +- hw/pci-host/mv64361.c | 2 +- hw/pci-host/pnv_phb.c | 5 +++-- hw/pci-host/pnv_phb4_pec.c | 3 +-- hw/pci-host/ppc4xx_pci.c | 2 +- hw/pci-host/ppce500.c | 2 +- hw/pci-host/raven.c | 3 ++- hw/pci-host/sabre.c | 12 +++++++----- hw/pci-host/sh_pci.c | 3 ++- hw/pci-host/uninorth.c | 11 +++++++---- include/hw/mips/mips.h | 2 +- 17 files changed, 44 insertions(+), 34 deletions(-) diff --git a/hw/mips/fuloong2e.c b/hw/mips/fuloong2e.c index e0cbf4df3d..5e5ade46f3 100644 --- a/hw/mips/fuloong2e.c +++ b/hw/mips/fuloong2e.c @@ -283,7 +283,7 @@ static void mips_fuloong2e_init(MachineState *machine) cpu_mips_clock_init(cpu); =20 /* North bridge, Bonito --> IP2 */ - pci_bus =3D bonito_init((qemu_irq *)&(env->irq[2])); + pci_bus =3D bonito_init(OBJECT(machine), (qemu_irq *)&(env->irq[2])); =20 /* South bridge -> IP5 */ pci_dev =3D pci_new_multifunction_orphan(PCI_DEVFN(FULOONG2E_VIA_SLOT,= 0), diff --git a/hw/pci-host/articia.c b/hw/pci-host/articia.c index 0556c0ccff..5ec0e6a05f 100644 --- a/hw/pci-host/articia.c +++ b/hw/pci-host/articia.c @@ -185,10 +185,12 @@ static void articia_realize(DeviceState *dev, Error *= *errp) h->bus =3D pci_register_root_bus(dev, NULL, articia_pcihost_set_irq, amigaone_pcihost_bus0_map_irq, dev, &s-= >mem, &s->io, PCI_DEVFN(8, 0), 4, TYPE_PCI_BU= S); - pdev =3D pci_create_simple_multifunction_orphan(h->bus, PCI_DEVFN(0, 0= ), + pdev =3D pci_create_simple_multifunction(OBJECT(dev), "host-func", h->= bus, + PCI_DEVFN(0, 0), TYPE_ARTICIA_PCI_HOST); ARTICIA_PCI_HOST(pdev)->as =3D s; - pci_create_simple_orphan(h->bus, PCI_DEVFN(0, 1), TYPE_ARTICIA_PCI_BRI= DGE); + pci_create_simple(OBJECT(dev), "pci-bridge", h->bus, PCI_DEVFN(0, 1), + TYPE_ARTICIA_PCI_BRIDGE); =20 sysbus_init_mmio(SYS_BUS_DEVICE(dev), &s->reg); sysbus_init_mmio(SYS_BUS_DEVICE(dev), &s->mem); diff --git a/hw/pci-host/astro.c b/hw/pci-host/astro.c index 1de3960713..61519d1d29 100644 --- a/hw/pci-host/astro.c +++ b/hw/pci-host/astro.c @@ -517,13 +517,13 @@ static void elroy_register_types(void) type_init(elroy_register_types) =20 =20 -static ElroyState *elroy_init(int num) +static ElroyState *elroy_init(Object *parent, int num) { DeviceState *dev; =20 - dev =3D qdev_new_orphan(TYPE_ELROY_PCI_HOST_BRIDGE); + dev =3D qdev_new(parent, "elroy[*]", TYPE_ELROY_PCI_HOST_BRIDGE); dev->id =3D g_strdup_printf("elroy%d", num); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 return ELROY_PCI_HOST_BRIDGE(dev); } @@ -1015,7 +1015,7 @@ static void astro_realize(DeviceState *obj, Error **e= rrp) addr_offset =3D elroy_hpa_offsets[i]; rope =3D elroy_rope_nr[i]; =20 - elroy =3D elroy_init(i); + elroy =3D elroy_init(OBJECT(s), i); s->elroy[i] =3D elroy; elroy->hpa =3D ASTRO_HPA + addr_offset; elroy->pci_bus_num =3D i; diff --git a/hw/pci-host/bonito.c b/hw/pci-host/bonito.c index 40a62d62b6..83b328840a 100644 --- a/hw/pci-host/bonito.c +++ b/hw/pci-host/bonito.c @@ -733,7 +733,7 @@ static void bonito_pci_realize(PCIDevice *dev, Error **= errp) pci_set_byte(dev->config + PCI_MAX_LAT, 0x00); } =20 -PCIBus *bonito_init(qemu_irq *pic) +PCIBus *bonito_init(Object *parent, qemu_irq *pic) { DeviceState *dev; BonitoState *pcihost; @@ -741,17 +741,17 @@ PCIBus *bonito_init(qemu_irq *pic) PCIBonitoState *s; PCIDevice *d; =20 - dev =3D qdev_new_orphan(TYPE_BONITO_PCI_HOST_BRIDGE); + dev =3D qdev_new(parent, "pci-host", TYPE_BONITO_PCI_HOST_BRIDGE); phb =3D PCI_HOST_BRIDGE(dev); pcihost =3D BONITO_PCI_HOST_BRIDGE(dev); pcihost->pic =3D pic; - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 - d =3D pci_new_orphan(PCI_DEVFN(0, 0), TYPE_PCI_BONITO); + d =3D pci_new(OBJECT(pcihost), "pci-host", PCI_DEVFN(0, 0), TYPE_PCI_B= ONITO); s =3D PCI_BONITO(d); s->pcihost =3D pcihost; pcihost->pci_dev =3D s; - pci_realize_and_unref(d, phb->bus, &error_fatal); + qdev_realize(DEVICE(d), BUS(phb->bus), &error_fatal); =20 return phb->bus; } diff --git a/hw/pci-host/grackle.c b/hw/pci-host/grackle.c index c76cb61dc9..c4c8dc15e4 100644 --- a/hw/pci-host/grackle.c +++ b/hw/pci-host/grackle.c @@ -60,7 +60,7 @@ static void grackle_realize(DeviceState *dev, Error **err= p) &s->pci_io, 0, 4, TYPE_PCI_BUS); =20 - pci_create_simple_orphan(phb->bus, 0, "grackle"); + pci_create_simple(OBJECT(dev), "pci-host", phb->bus, 0, "grackle"); } =20 static void grackle_init(Object *obj) diff --git a/hw/pci-host/gt64120.c b/hw/pci-host/gt64120.c index c1a94a3daa..780c86cd9a 100644 --- a/hw/pci-host/gt64120.c +++ b/hw/pci-host/gt64120.c @@ -1204,7 +1204,8 @@ static void gt64120_realize(DeviceState *dev, Error *= *errp) get_system_io(), PCI_DEVFN(18, 0), TYPE_PCI_BUS); =20 - pci_create_simple_orphan(phb->bus, PCI_DEVFN(0, 0), "gt64120_pci"); + pci_create_simple(OBJECT(dev), "pci-host", phb->bus, PCI_DEVFN(0, 0), + "gt64120_pci"); memory_region_init_io(&phb->conf_mem, OBJECT(phb), &pci_host_conf_le_ops, s, "pci-conf-idx", 4); diff --git a/hw/pci-host/i440fx.c b/hw/pci-host/i440fx.c index e91ddd5d07..c49b5d5c15 100644 --- a/hw/pci-host/i440fx.c +++ b/hw/pci-host/i440fx.c @@ -282,7 +282,7 @@ static void i440fx_pcihost_realize(DeviceState *dev, Er= ror **errp) s->io_memory, 0, TYPE_PCI_BUS); phb->bus =3D b; =20 - d =3D pci_create_simple_orphan(b, 0, s->pci_type); + d =3D pci_create_simple(OBJECT(dev), "pci-host", b, 0, s->pci_type); f =3D I440FX_PCI_DEVICE(d); =20 range_set_bounds(&s->pci_hole, s->below_4g_mem_size, diff --git a/hw/pci-host/mv64361.c b/hw/pci-host/mv64361.c index f75951c873..3ef51fef1b 100644 --- a/hw/pci-host/mv64361.c +++ b/hw/pci-host/mv64361.c @@ -94,7 +94,7 @@ static void mv64361_pcihost_realize(DeviceState *dev, Err= or **errp) pci_swizzle_map_irq_fn, dev, &s->mem, &s->io, 0, 4, TYPE_PCI_BUS); g_free(name); - pci_create_simple_orphan(h->bus, 0, TYPE_MV64361_PCI_BRIDGE); + pci_create_simple(OBJECT(dev), "pci-host", h->bus, 0, TYPE_MV64361_PCI= _BRIDGE); qdev_init_gpio_out(dev, s->irq, ARRAY_SIZE(s->irq)); } =20 diff --git a/hw/pci-host/pnv_phb.c b/hw/pci-host/pnv_phb.c index fc0b226bef..160aa86c48 100644 --- a/hw/pci-host/pnv_phb.c +++ b/hw/pci-host/pnv_phb.c @@ -167,9 +167,10 @@ static void pnv_phb_realize(DeviceState *dev, Error **= errp) } =20 if (defaults_enabled()) { - PCIDevice *root =3D pci_new_orphan(PCI_DEVFN(0, 0), TYPE_PNV_PHB_R= OOT_PORT); + PCIDevice *root =3D pci_new(OBJECT(dev), "root-port", + PCI_DEVFN(0, 0), TYPE_PNV_PHB_ROOT_PORT); =20 - pci_realize_and_unref(root, pci->bus, errp); + qdev_realize(DEVICE(root), BUS(pci->bus), errp); } } =20 diff --git a/hw/pci-host/pnv_phb4_pec.c b/hw/pci-host/pnv_phb4_pec.c index 54dac5e989..b1af93d49b 100644 --- a/hw/pci-host/pnv_phb4_pec.c +++ b/hw/pci-host/pnv_phb4_pec.c @@ -180,10 +180,9 @@ static PnvPHB *pnv_pec_default_phb_realize(PnvPhb4PecS= tate *pec, int stack_no, Error **errp) { - PnvPHB *phb =3D PNV_PHB(qdev_new_orphan(TYPE_PNV_PHB)); + PnvPHB *phb =3D PNV_PHB(qdev_new(OBJECT(pec), "phb[*]", TYPE_PNV_PHB)); int phb_id =3D pnv_phb4_pec_get_phb_id(pec, stack_no); =20 - object_property_add_child(OBJECT(pec), "phb[*]", OBJECT(phb)); object_property_set_link(OBJECT(phb), "pec", OBJECT(pec), &error_abort); object_property_set_int(OBJECT(phb), "chip-id", pec->chip_id, diff --git a/hw/pci-host/ppc4xx_pci.c b/hw/pci-host/ppc4xx_pci.c index cd7b16aa87..223b37354b 100644 --- a/hw/pci-host/ppc4xx_pci.c +++ b/hw/pci-host/ppc4xx_pci.c @@ -332,7 +332,7 @@ static void ppc4xx_pcihost_realize(DeviceState *dev, Er= ror **errp) TYPE_PCI_BUS); h->bus =3D b; =20 - pci_create_simple_orphan(b, 0, TYPE_PPC4xx_HOST_BRIDGE); + pci_create_simple(OBJECT(dev), "pci-host", b, 0, TYPE_PPC4xx_HOST_BRID= GE); =20 /* XXX split into 2 memory regions, one for config space, one for regs= */ memory_region_init(&s->container, OBJECT(s), "pci-container", PCI_ALL_= SIZE); diff --git a/hw/pci-host/ppce500.c b/hw/pci-host/ppce500.c index 838a01608c..01576c1a61 100644 --- a/hw/pci-host/ppce500.c +++ b/hw/pci-host/ppce500.c @@ -473,7 +473,7 @@ static void e500_pcihost_realize(DeviceState *dev, Erro= r **errp) address_space_init(&s->bm_as, &s->bm, "pci-bm"); pci_setup_iommu(b, &ppce500_iommu_ops, s); =20 - pci_create_simple_orphan(b, 0, TYPE_PPC_E500_PCI_BRIDGE); + pci_create_simple(OBJECT(dev), "pci-host", b, 0, TYPE_PPC_E500_PCI_BRI= DGE); =20 memory_region_init(&s->container, OBJECT(h), "pci-container", PCIE500_= ALL_SIZE); memory_region_init_io(&h->conf_mem, OBJECT(h), &pci_host_conf_be_ops, = h, diff --git a/hw/pci-host/raven.c b/hw/pci-host/raven.c index abcf9b28e1..b6ab686ff5 100644 --- a/hw/pci-host/raven.c +++ b/hw/pci-host/raven.c @@ -281,7 +281,8 @@ static void raven_pcihost_realizefn(DeviceState *d, Err= or **errp) "pci-intack", 1); memory_region_add_subregion(address_space_mem, 0xbffffff0, &s->pci_int= ack); =20 - pci_create_simple_orphan(h->bus, PCI_DEVFN(0, 0), TYPE_RAVEN_PCI_DEVIC= E); + pci_create_simple(OBJECT(d), "pci-host", h->bus, PCI_DEVFN(0, 0), + TYPE_RAVEN_PCI_DEVICE); =20 address_space_init(&s->bm_as, &s->bm, "raven-bm"); pci_setup_iommu(h->bus, &raven_iommu_ops, s); diff --git a/hw/pci-host/sabre.c b/hw/pci-host/sabre.c index d8c815d404..3c52fa2727 100644 --- a/hw/pci-host/sabre.c +++ b/hw/pci-host/sabre.c @@ -383,7 +383,7 @@ static void sabre_realize(DeviceState *dev, Error **err= p) &s->pci_ioport, 0, 0x40, TYPE_PCI_BUS); =20 - pci_create_simple_orphan(phb->bus, 0, TYPE_SABRE_PCI_DEVICE); + pci_create_simple(OBJECT(dev), "pci-host", phb->bus, 0, TYPE_SABRE_PCI= _DEVICE); =20 /* IOMMU */ memory_region_add_subregion_overlap(&s->sabre_config, 0x200, @@ -391,15 +391,17 @@ static void sabre_realize(DeviceState *dev, Error **e= rrp) pci_setup_iommu(phb->bus, &sabre_iommu_ops, s->iommu); =20 /* APB secondary busses */ - pci_dev =3D pci_new_multifunction_orphan(PCI_DEVFN(1, 0), TYPE_SIMBA_P= CI_BRIDGE); + pci_dev =3D pci_new_multifunction(OBJECT(dev), "bridge-b", + PCI_DEVFN(1, 0), TYPE_SIMBA_PCI_BRIDGE= ); s->bridgeB =3D PCI_BRIDGE(pci_dev); pci_bridge_map_irq(s->bridgeB, "pciB", pci_simbaB_map_irq); - pci_realize_and_unref(pci_dev, phb->bus, &error_fatal); + qdev_realize(DEVICE(pci_dev), BUS(phb->bus), &error_fatal); =20 - pci_dev =3D pci_new_multifunction_orphan(PCI_DEVFN(1, 1), TYPE_SIMBA_P= CI_BRIDGE); + pci_dev =3D pci_new_multifunction(OBJECT(dev), "bridge-a", + PCI_DEVFN(1, 1), TYPE_SIMBA_PCI_BRIDGE= ); s->bridgeA =3D PCI_BRIDGE(pci_dev); pci_bridge_map_irq(s->bridgeA, "pciA", pci_simbaA_map_irq); - pci_realize_and_unref(pci_dev, phb->bus, &error_fatal); + qdev_realize(DEVICE(pci_dev), BUS(phb->bus), &error_fatal); } =20 static void sabre_init(Object *obj) diff --git a/hw/pci-host/sh_pci.c b/hw/pci-host/sh_pci.c index 749b9d76a1..79ebe36fe1 100644 --- a/hw/pci-host/sh_pci.c +++ b/hw/pci-host/sh_pci.c @@ -142,7 +142,8 @@ static void sh_pcic_host_realize(DeviceState *dev, Erro= r **errp) sysbus_init_mmio(sbd, &s->memconfig_a7); memory_region_add_subregion(get_system_memory(), 0xfe240000, &s->isa); =20 - s->dev =3D pci_create_simple_orphan(phb->bus, PCI_DEVFN(0, 0), "sh_pci= _host"); + s->dev =3D pci_create_simple(OBJECT(dev), "pci-host", phb->bus, PCI_DE= VFN(0, 0), + "sh_pci_host"); } =20 static void sh_pcic_pci_realize(PCIDevice *d, Error **errp) diff --git a/hw/pci-host/uninorth.c b/hw/pci-host/uninorth.c index 4590687bd3..ac22f2dd8c 100644 --- a/hw/pci-host/uninorth.c +++ b/hw/pci-host/uninorth.c @@ -126,7 +126,8 @@ static void pci_unin_main_realize(DeviceState *dev, Err= or **errp) &s->pci_io, PCI_DEVFN(11, 0), 4, TYPE_PCI_BUS); =20 - pci_create_simple_orphan(h->bus, PCI_DEVFN(11, 0), "uni-north-pci"); + pci_create_simple(OBJECT(dev), "pci-host", h->bus, PCI_DEVFN(11, 0), + "uni-north-pci"); =20 /* * DEC 21154 bridge was unused for many years, this comment is @@ -176,7 +177,7 @@ static void pci_u3_agp_realize(DeviceState *dev, Error = **errp) &s->pci_io, PCI_DEVFN(11, 0), 4, TYPE_PCI_BUS); =20 - pci_create_simple_orphan(h->bus, PCI_DEVFN(11, 0), "u3-agp"); + pci_create_simple(OBJECT(dev), "pci-host", h->bus, PCI_DEVFN(11, 0), "= u3-agp"); } =20 static void pci_u3_agp_init(Object *obj) @@ -220,7 +221,8 @@ static void pci_unin_agp_realize(DeviceState *dev, Erro= r **errp) &s->pci_io, PCI_DEVFN(11, 0), 4, TYPE_PCI_BUS); =20 - pci_create_simple_orphan(h->bus, PCI_DEVFN(11, 0), "uni-north-agp"); + pci_create_simple(OBJECT(dev), "pci-host", h->bus, PCI_DEVFN(11, 0), + "uni-north-agp"); } =20 static void pci_unin_agp_init(Object *obj) @@ -253,7 +255,8 @@ static void pci_unin_internal_realize(DeviceState *dev,= Error **errp) &s->pci_io, PCI_DEVFN(14, 0), 4, TYPE_PCI_BUS); =20 - pci_create_simple_orphan(h->bus, PCI_DEVFN(14, 0), "uni-north-internal= -pci"); + pci_create_simple(OBJECT(dev), "pci-host", h->bus, PCI_DEVFN(14, 0), + "uni-north-internal-pci"); } =20 static void pci_unin_internal_init(Object *obj) diff --git a/include/hw/mips/mips.h b/include/hw/mips/mips.h index 1f3672ba5f..cd0ccb4e5d 100644 --- a/include/hw/mips/mips.h +++ b/include/hw/mips/mips.h @@ -10,7 +10,7 @@ #include "system/memory.h" =20 /* bonito.c */ -PCIBus *bonito_init(qemu_irq *pic); +PCIBus *bonito_init(Object *parent, qemu_irq *pic); =20 /* rc4030.c */ typedef struct rc4030DMAState *rc4030_dma; --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411046; cv=none; d=zohomail.com; s=zohoarc; b=iw258mUMAONr7PCWgMZbPwtewHVxHEnDwPr8T3INDJ3hv+e3Es9c3Wh3HE7ujh0EassN3rni+RmNJjoBlGtgh8I0bN3h01hjOzE0j1alNUoK/wdf25qJYoWMz4DZcl4K8jPdP1ib1jSY4GZmMWDy5Cj0hSFYcQBsnOx9N5SfvSI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411046; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=cyObFwjrTXBGXC2CgrSMoCAsLtY8OS8BDGVOZExP5DI=; b=MOwR5JJ/2Aqg3LNe92r4rU+9tSfpt4xBINqT3ukXcTDo1uja+EmYaiIWm2In3xKMWFnCxiIe6u1dB69xcCLnWs0O/vbx+td6ZYr0WIcuIl7SKwDOyW1NHil/9IzCXp3i0RbCyctSAWHy79ms+69TXuY5ydl3DCOI1/bl5DV8DWc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178441104691831.895063454203864; Sat, 18 Jul 2026 14:44:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCpC-0004gu-Um; Sat, 18 Jul 2026 17:43:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCp7-0004TX-50; Sat, 18 Jul 2026 17:43:53 -0400 Received: from pdx-out-010.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.12.53.23]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCp5-0002qj-AF; Sat, 18 Jul 2026 17:43:52 -0400 Received: from ip-10-5-6-203.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.6.203]) by internal-pdx-out-010.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:43:47 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.104:23558] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.58.199:2525] with esmtp (Farcaster) id 4091f71b-7b0a-4267-8a98-bd78f9e41765; Sat, 18 Jul 2026 21:43:47 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB001.ant.amazon.com (10.250.64.248) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:43:47 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:43:37 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411031; x=1815947031; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=cyObFwjrTXBGXC2CgrSMoCAsLtY8OS8BDGVOZExP5DI=; b=cxzQa1lcX8ZwyOrZ+ehw0E3MAXbmLqTXzNVrExoww2a8L6kq7bw+XPzs pq8I4Sp4BsBlm/UWM3GmtAfqB3PlhAqVl1acPMAaJaZMJr5VE+SdqtfND CoR4rijtPHf9avVM/qE1maOTeW3KvTSTkoO+Qg4sWudKimhY9cA1WjPJj aw9TlJDmQODZTG7fENA2z/TBCReYf3cAPS+tYEkTRNH369GvqJi6JtDS8 LQA4z5gwxyb5LTzzGXee4ck7llJJ0VQyoMOVbqGzJRWcrrhVz53ZoK6v8 IOiq58HtjjZVU24oMjbHnp1iof9Kuk9Qgpn0qjhqOhaGoteYlHDqn9l2/ g==; X-CSE-ConnectionGUID: RDkAMgTsQ0qYN8OGVVNcew== X-CSE-MsgGUID: uXGR7nwhSAOuZhWbqhl22w== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23795070" X-Farcaster-Flow-ID: 4091f71b-7b0a-4267-8a98-bd78f9e41765 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 024/137] hw/core: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:34:59 +0000 Message-ID: <20260718213652.37673-25-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D031UWA001.ant.amazon.com (10.13.139.88) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.12.53.23; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-010.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.01, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411047728158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/core to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/core/null-machine.c:28 | cpu_create | OBJECT(mch) | "cpu[*]" | Board ini= t; machine owns CPU lifetime hw/core/qdev.c:167,172 hw/core/sysbus.c:245,254 hw/core/cpu-common.c:71 | (= definitions) | ORPHAN-JUSTIFIED | - | These are the *_orphan() implementati= ons themselves Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/core/null-machine.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/core/null-machine.c b/hw/core/null-machine.c index 7cc4b9ab3b..ac741bdf06 100644 --- a/hw/core/null-machine.c +++ b/hw/core/null-machine.c @@ -25,7 +25,7 @@ static void machine_none_init(MachineState *mch) =20 /* Initialize CPU (if user asked for it) */ if (mch->cpu_type) { - cpu =3D cpu_create_orphan(mch->cpu_type); + cpu =3D cpu_create(OBJECT(mch), "cpu[*]", mch->cpu_type); if (!cpu) { error_report("Unable to initialize CPU"); exit(1); --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411055; cv=none; d=zohomail.com; s=zohoarc; b=bYClgK568TFXZh7aWhVWXAcy3wDbeNS6GOIITsYWuy99ZEKz9fqzX49jOYEEeIH1v3TEk9vsB2YPctweI29XVH5NVPOg7QhdExZ+Nx2bnIMmbHfzDxQ7Nn/pJuuAaf13JiXodPQdjM/3UGu217/y8CIedpq2/L1iaAkD6IimQAA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411055; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=l6EUZMsSoYyzSE5aAzU8Bf6k0Vw3FrchpHoaNpUNdkc=; b=GYKjp60CBvIaCEcfAY4l1v0kyp18454nNI5j/HyRglIZ5fAb6ZDU9DAUTrggdcP/ltrb+5rhp974gAazjvjTr1Ji04oHQOZqMG4ONfKyooHjJmMAr9ZoyrhtAMGd3v57xwEbHHg3aRJD7jXjV21p9VD1R+yDJW+lUFAkh44WXMU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411055354720.3991116987255; Sat, 18 Jul 2026 14:44:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCpR-0005CT-52; Sat, 18 Jul 2026 17:44:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCpI-0004yQ-To; Sat, 18 Jul 2026 17:44:06 -0400 Received: from pdx-out-014.esa.us-west-2.outbound.mail-perimeter.amazon.com ([35.83.148.184]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCpF-0002ra-2y; Sat, 18 Jul 2026 17:44:04 -0400 Received: from ip-10-5-6-203.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.6.203]) by internal-pdx-out-014.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:43:56 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.51:23729] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.0.115:2525] with esmtp (Farcaster) id 91aad185-eda8-41d1-96d8-6ae7ac31e092; Sat, 18 Jul 2026 21:43:56 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC002.ant.amazon.com (10.250.64.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:43:56 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:43:47 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411041; x=1815947041; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=l6EUZMsSoYyzSE5aAzU8Bf6k0Vw3FrchpHoaNpUNdkc=; b=Wu6MAD/en3owSRjIAVyWslR1oexBiLSzM26b2VLhljlXcPJkpBkiZgzO XeZblTKCIPB1KB8tnp9JiqmgctO8EWshq3pko6qf681XNTl4f0v+wtYNB vCZiuTeI3pYLo53yRLh3UVDhnNaji8JGKFikzeWLpeqBJFH24t+xVeqM0 oSdA7gQXmmX6rij97/xG68jpEiMax3L4PzM2AA8FR2o/287U4F7TuIsHS AWF1RfhChaDZkERq8v7UJOf1yM3KpVHaFwSElSlhjl4XSTCK2ivF8IHiO 5PjtHKSzu4GCQZ1wN8uWOQ46cGyhoXe+r0r0ukn6zVBzNT4N4tjNyH3EI Q==; X-CSE-ConnectionGUID: tH1KdSV1Qd64FY/ke9qY8g== X-CSE-MsgGUID: nepMzJgQQW60B4ua3rJ5bg== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23712245" X-Farcaster-Flow-ID: 91aad185-eda8-41d1-96d8-6ae7ac31e092 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 025/137] hw/remote: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:00 +0000 Message-ID: <20260718213652.37673-26-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D031UWA001.ant.amazon.com (10.13.139.88) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=35.83.148.184; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-014.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411055753158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/remote to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/remote/machine.c:42 | qdev_new | OBJECT(s) | "remote-pcihost" | Board in= it; collapses existing object_property_add_child() with same name Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/remote/machine.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/remote/machine.c b/hw/remote/machine.c index 28cb48a4f6..e8e9cf259f 100644 --- a/hw/remote/machine.c +++ b/hw/remote/machine.c @@ -39,7 +39,8 @@ static void remote_machine_init(MachineState *machine) pci_memory =3D g_new(MemoryRegion, 1); memory_region_init(pci_memory, NULL, "pci", UINT64_MAX); =20 - rem_host =3D REMOTE_PCIHOST(qdev_new_orphan(TYPE_REMOTE_PCIHOST)); + rem_host =3D REMOTE_PCIHOST(qdev_new(OBJECT(s), "remote-pcihost", + TYPE_REMOTE_PCIHOST)); =20 rem_host->mr_pci_mem =3D pci_memory; rem_host->mr_sys_mem =3D system_memory; @@ -47,7 +48,6 @@ static void remote_machine_init(MachineState *machine) =20 s->host =3D rem_host; =20 - object_property_add_child(OBJECT(s), "remote-pcihost", OBJECT(rem_host= )); memory_region_add_subregion_overlap(system_memory, 0x0, pci_memory, -1= ); =20 qdev_realize(DEVICE(rem_host), sysbus_get_default(), &error_fatal); --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411061; cv=none; d=zohomail.com; s=zohoarc; b=XjDjqiD3oxzqftSUYjYFvkeW4VqXKNduIwZcuHCZYLBex8KEBcuUR2mLldS99avm/DSGdyYzxSnEzDLFsHaYxXY4TE5gWIop3X3BkyWXaWZLS0XI6KbIyPkjm3l+a8lpwp38X8RWp40I33GKXqBY3FUaka62HDr9BKAqldcPHTM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411061; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Ht3LTPaa+ybXdLfPN4XkOvp4Xczu9SwDPTQHkBjMN/Q=; b=nuJX9z5EGKtjLChpkg1JW5FODe6QOC+wEWngZFQtpbK4zKXgKUsYrsnOJRD/oykPpcVhsNdt3k2RHxoh7DZVlkVwxXQtApuni9hkFfcIQJfw+Vpf6/NQGrtbIOSbkChBI6XXmp8bHYBzYPii9X4NH5+T6hDaI4rLCKifNWRWUXA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411061253780.5145602676488; Sat, 18 Jul 2026 14:44:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCpS-0005Pf-GN; Sat, 18 Jul 2026 17:44:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCpQ-0005A3-Fr; Sat, 18 Jul 2026 17:44:12 -0400 Received: from pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.246.1.125]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCpO-0002sI-N3; Sat, 18 Jul 2026 17:44:12 -0400 Received: from ip-10-5-6-203.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.6.203]) by internal-pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:44:06 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.182:11751] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.40.177:2525] with esmtp (Farcaster) id 08cc2779-f707-4101-8176-7a1a2596663f; Sat, 18 Jul 2026 21:44:06 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA001.ant.amazon.com (10.250.64.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:44:05 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:43:56 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411050; x=1815947050; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Ht3LTPaa+ybXdLfPN4XkOvp4Xczu9SwDPTQHkBjMN/Q=; b=mx2EtfoxILJ8gdl+pxzNf89xPYQW7hiqLbPLqFrpXFRY8EDU9Yht6DNL p4Rusby17SBW+6ipRam5RPnw1YGB4MCEMh5CsvRDdMqz/1oDnPnggXCbd WA4W0QuEEU+LJjN8RwIiodMABt6+tEQ4H9HQcEGGywbizgo7CX0eL90cF 6zOU0Frsmq2AHpjEZoAWzMkgguH110tq8zu1AmnETTtZjrLE6mcuuobPk aKV0v/DHKEqjeU5eBUx5YBXwyPfgxZ052hP6TCfVBhhiT18kFl5doJOJ9 0NPjxj+BmGoK8wax5gP4H2trWYiHZmlBBZoyEtJVB2YCe3KoVujCw+mzb g==; X-CSE-ConnectionGUID: f33hiargQKG80cSbmHxX5A== X-CSE-MsgGUID: fM5kHQgdQBGTr0sOAl10Cg== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23927051" X-Farcaster-Flow-ID: 08cc2779-f707-4101-8176-7a1a2596663f From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 026/137] hw/ufs: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:01 +0000 Message-ID: <20260718213652.37673-27-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D031UWA001.ant.amazon.com (10.13.139.88) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.246.1.125; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411062134158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/ufs to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/ufs/lu.c:475 | qdev_new | OBJECT(lu) | "ufs-scsi" | ufs-lu realize path;= the LU device owns the wrapped scsi-hd (bus is not parent). Re-parent from= bus to lu; drop _and_unref Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/ufs/lu.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/hw/ufs/lu.c b/hw/ufs/lu.c index 219f74e4f3..4e5621f224 100644 --- a/hw/ufs/lu.c +++ b/hw/ufs/lu.c @@ -472,8 +472,7 @@ static void ufs_init_scsi_device(UfsLu *lu, BlockBacken= d *blk, Error **errp) * The ufs-lu is the device that is wrapping the scsi-hd. It owns a vi= rtual * SCSI bus that serves the scsi-hd. */ - scsi_dev =3D qdev_new_orphan("scsi-hd"); - object_property_add_child(OBJECT(&lu->bus), "ufs-scsi", OBJECT(scsi_de= v)); + scsi_dev =3D qdev_new(OBJECT(lu), "ufs-scsi", "scsi-hd"); =20 qdev_prop_set_uint32(scsi_dev, "physical_block_size", UFS_BLOCK_SIZE); qdev_prop_set_uint32(scsi_dev, "logical_block_size", UFS_BLOCK_SIZE); @@ -484,7 +483,7 @@ static void ufs_init_scsi_device(UfsLu *lu, BlockBacken= d *blk, Error **errp) return; } =20 - if (!qdev_realize_and_unref(scsi_dev, &lu->bus.qbus, errp)) { + if (!qdev_realize(scsi_dev, &lu->bus.qbus, errp)) { object_unparent(OBJECT(scsi_dev)); return; } --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411148; cv=none; d=zohomail.com; s=zohoarc; b=IoQFPJIiVTOSSjXACekNmhDwwH3lla8yQSIXKOazIuC3S1NSYA51CCE8AufitkCUPK2Coqf7AVFvEOR6a422J5A5m6ndoqvzd9nnicc3q50zbd0JwVTXuSZDeCJHTq/W84O6H+bFd9pzjMo85h/zxaOJX7vF5A7l6CE3vLQcbqs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411148; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=CN3v+LJuo2aoGGUCi3MnBfy7w8pCG0HXoOGWYL5yOgE=; b=B0tVDe3gb73nqYgzLiHM/TFvOBMR7gFctq2MdSV+hwL3FbG0Oo9sQQcxhDJ6Kkdvzj+xcPGzNNGF/crGutw6ubmM1TgpluWja+UUWIX3yxyP936wtdrQiFRlJttz00H936JtaTKi+OBbU/43/aZzVAPdH2xKo6l8esi8q10rc0M= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411148432364.73250811157413; Sat, 18 Jul 2026 14:45:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCpz-0006w4-Of; Sat, 18 Jul 2026 17:44:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCpv-0006uf-Ml; Sat, 18 Jul 2026 17:44:44 -0400 Received: from pdx-out-007.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.34.181.151]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCpt-0002xF-SE; Sat, 18 Jul 2026 17:44:43 -0400 Received: from ip-10-5-9-48.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.9.48]) by internal-pdx-out-007.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:44:37 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.53:12270] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.19.34:2525] with esmtp (Farcaster) id 88b5f2b4-5b38-4171-9fb2-2d8f735aa1df; Sat, 18 Jul 2026 21:44:37 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC001.ant.amazon.com (10.250.64.174) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:44:36 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:44:27 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411081; x=1815947081; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=CN3v+LJuo2aoGGUCi3MnBfy7w8pCG0HXoOGWYL5yOgE=; b=G4nPM3LCCHuepUMXoS4wVZlKx3KymyFvd+ttBHZXLi1F+do5FI8miulJ dWd/Ch3H/s6qlfd8lAQRt8dnNMig0UEIE22KIAkxXsuIXkNmFzerAiBfj U6VddbafP/CwWe238nlV+GOWIwXpw2h0B3C1bWrINclgZhEDfESYAK6Hw JYTNEBscWm+ZctgNQlfZ452QVvAn3hBRJtIp68i6JnNetWHkQlmek94XW UaQX8w4RoXvuUA0SzF6Ryudbjap0c1O/OidGJzDDY6ZJulfE7Y9fNiZIN Gg/KjSnyyZ/M4W9YshoksI8x9iQ0XPA8OahoJv/kR6qnkm+9UW5K+TKdQ Q==; X-CSE-ConnectionGUID: Pz7InH/bQv6O5OnNd8WcKw== X-CSE-MsgGUID: bC9JP5V9QEOFsfpqBea3uw== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23910348" X-Farcaster-Flow-ID: 88b5f2b4-5b38-4171-9fb2-2d8f735aa1df From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 027/137] hw/nvme: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:02 +0000 Message-ID: <20260718213652.37673-28-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D035UWB002.ant.amazon.com (10.13.138.97) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.34.181.151; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-007.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.01, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411150182158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/nvme to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/nvme/ctrl.c:9559 | qdev_new | OBJECT(n) | "subsys" | Called from nvme co= ntroller realize; the auto-created subsystem is owned by the controller tha= t creates it Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/nvme/ctrl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index 300a5aa835..f247bbce22 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -9556,7 +9556,7 @@ static int nvme_init_subsys(NvmeCtrl *n, Error **errp) int cntlid; =20 if (!n->subsys) { - DeviceState *dev =3D qdev_new_orphan(TYPE_NVME_SUBSYS); + DeviceState *dev =3D qdev_new(OBJECT(n), "auto-subsys", TYPE_NVME_= SUBSYS); =20 qdev_prop_set_string(dev, "nqn", n->params.serial); =20 --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411151; cv=none; d=zohomail.com; s=zohoarc; b=XObmo5UFrjlMg91ckcP8n4Wal6RmXjp2KmLCl08t27cFjAw5eu3HCTQx3e7iTbcARm+PfSahp5NGasvPRuxfoYj+ktyYIz6o7wJ7Z6UzlF32mIENC199hG3XG+rZCG81aYszqYCwkS908Jo/v3fUhHG5Hlfu17TO3DIqEZxcj0o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411151; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=IlAfRgTZKqxlJXJg22OA6rDJEPP0BNN9PWbpHGMM0ic=; b=ltXt3Lmt+1OeoRSifKOyw3D0LlxzFq+Q4RDozmsyhD73iYv4fPAiZdJcRaH7t29vdsiI4vr2NijqiYyCtTeYjGlFfroQI/zBkCo6bbFcfL02nLm+6psb53L+qAV68g0WhNtVlnk6IYshNQIWp2YiA5uc/FkDRKZiJgrO8el+7T8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411151796598.4867623446514; Sat, 18 Jul 2026 14:45:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCq8-00070n-Kw; Sat, 18 Jul 2026 17:44:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCq4-0006zK-Qn; Sat, 18 Jul 2026 17:44:53 -0400 Received: from pdx-out-005.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.13.214.179]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCq2-0002xn-2j; Sat, 18 Jul 2026 17:44:52 -0400 Received: from ip-10-5-6-203.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.6.203]) by internal-pdx-out-005.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:44:46 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.48:2512] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.0.115:2525] with esmtp (Farcaster) id 75caf168-7a0d-4d7d-89f9-717c82ef29a9; Sat, 18 Jul 2026 21:44:46 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB002.ant.amazon.com (10.250.64.231) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:44:46 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:44:36 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411090; x=1815947090; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=IlAfRgTZKqxlJXJg22OA6rDJEPP0BNN9PWbpHGMM0ic=; b=Ek5C8vC4wloyjooQ+bbb8bjWsWcEXyraqAsrdi2UtNq0q0YyqLBOdSep jhdKXphJLgLTCRx1rj8LxOnuD2c7kyhggP5DQTd2tMudClCGSKlaXDxXp kdTwVd7QUzworsPIt84SdzfjsxMbYqD7F57sHLNNm/q2vxAu5WdZ3XHhz ldCWGVmFPcdvAV1t22PQu2ubyOQZ4cJF6rv2Al8jzoIRh1Pc4cIplzVAA O81gXV3Fy6OJyelyv4f2a1IRDaWdQ+U3VGPtzB43Na9e9lSa/+xZNeULG JU27cFtwN0jC17VdAoFdLVH3pIUks77xwuRmRSPP3zYxNSsNin0DpsVC+ A==; X-CSE-ConnectionGUID: 72KlE3H2SLWn/GxwSbecig== X-CSE-MsgGUID: AZes84UNTRy5RQlJ5GuiOg== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23903681" X-Farcaster-Flow-ID: 75caf168-7a0d-4d7d-89f9-717c82ef29a9 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 028/137] hw/vfio: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:03 +0000 Message-ID: <20260718213652.37673-29-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D035UWB002.ant.amazon.com (10.13.138.97) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.13.214.179; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-005.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411152049158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/vfio to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/vfio/igd.c:337 | pci_create_simple | OBJECT(vdev) | "igd-lpc-bridge" | C= alled from IGD quirk during vfio-pci realize; the LPC stub is created by an= d lives with the passed-through IGD device Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/vfio/igd.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/hw/vfio/igd.c b/hw/vfio/igd.c index bea0d57a11..aee40646ed 100644 --- a/hw/vfio/igd.c +++ b/hw/vfio/igd.c @@ -334,8 +334,9 @@ static int vfio_pci_igd_lpc_init(VFIOPCIDevice *vdev, lpc_bridge =3D pci_find_device(pci_device_root_bus(pdev), 0, PCI_DEVFN(0x1f, 0)); if (!lpc_bridge) { - lpc_bridge =3D pci_create_simple_orphan(pci_device_root_bus(pdev), - PCI_DEVFN(0x1f, 0), "vfio-pci-igd-lpc-bri= dge"); + lpc_bridge =3D pci_create_simple(OBJECT(vdev), "igd-lpc-bridge", + pci_device_root_bus(pdev), + PCI_DEVFN(0x1f, 0), "vfio-pci-igd-l= pc-bridge"); } =20 ret =3D vfio_pci_igd_copy(vdev, lpc_bridge, info, igd_lpc_bridge_infos, --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411114; cv=none; d=zohomail.com; s=zohoarc; b=A+32hBRsR0YwLZd9clecm7IlMh6cO1vgvfO2QyIYtDSGY37PE50hGPCgLVMUWoT6prjIoyqx2arftT52dwKW5wy0wvDgZzg1nc0kRBaswJKKBa9teHLswIOWYxHvRJmnQR3hl70IzzNFbiN7nLTQHvRtwOovo6YWxrBIeArGvtQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411114; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=qVCl/LGYfL4UCle58yHXW8mCdP/ph3jgnSmOc1JYYvo=; b=lKfZcbWiIpidrJfmF4qCHWk9Fk+fBCMIJ2GmIygSCUC8brJxSptdiB8wJhVcSn3D/3NrXksDH88W1x44fVFtNhucQiMtcL8QGlE5wTQ6Ynp0XZhQy2/P/BsEziPnrWYGHKb8JzcvTbq9CJB1dijZEAF4KQYA0Npq9jJENqT46Tg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411114492337.7110103384508; Sat, 18 Jul 2026 14:45:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCqG-0007FC-FF; Sat, 18 Jul 2026 17:45:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCqD-0007BW-AM; Sat, 18 Jul 2026 17:45:01 -0400 Received: from pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.245.243.92]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCqB-0002yF-Db; Sat, 18 Jul 2026 17:45:01 -0400 Received: from ip-10-5-6-203.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.6.203]) by internal-pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:44:55 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.234:3753] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.151:2525] with esmtp (Farcaster) id 3a5ed661-dd78-4c44-992b-09c3c211baf5; Sat, 18 Jul 2026 21:44:55 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA002.ant.amazon.com (10.250.64.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:44:55 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:44:46 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411099; x=1815947099; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=qVCl/LGYfL4UCle58yHXW8mCdP/ph3jgnSmOc1JYYvo=; b=ZhkIruUSOh3piSQKjvyBkYCv7yWqrr2JZRCA4RM3InDbNQnWf9i8rp9u +p3lVBRAWvgKSWxec4JUYIw3VxztDuIrlSgrhCAOX6mTTayC/zRpP27mJ CV/tzv1oh2QOxFSRiaC3T6uYVsCeZpn7TDpp5YkzonDG2sAS7hR2L0orl kpSkNjHD8VYSo0GTCkpb8kx6bCwEyUINeYUhuQUQJfyjiTspLvOcjTcYk DV7oeBkLWYLqVoy2VIFLAK0IcqwVUVhJqBnB/NLWw0qEEudemqdMSj4Gw QWxDMXetYQ2r8necpMc4+0YgOcPYDl8R/cVmMYeQ7ZKQk3gS3m51H9Pvp A==; X-CSE-ConnectionGUID: 7j7rb7PISgqsU1wtkjzSIw== X-CSE-MsgGUID: rJ+oC4gXQ96g7IvRC437ig== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23422691" X-Farcaster-Flow-ID: 3a5ed661-dd78-4c44-992b-09c3c211baf5 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 029/137] hw/mem: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:04 +0000 Message-ID: <20260718213652.37673-30-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D035UWB002.ant.amazon.com (10.13.138.97) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.245.243.92; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411116153158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/mem to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/mem/sparse-mem.c:111 | qdev_new | parent (new arg) | "sparse-mem" | Publ= ic helper; thread Object *parent through. Only caller is generic_fuzz which= passes qdev_get_machine() Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/mem/sparse-mem.c | 6 +++--- include/hw/mem/sparse-mem.h | 2 +- tests/qtest/fuzz/generic_fuzz.c | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/hw/mem/sparse-mem.c b/hw/mem/sparse-mem.c index 3310504578..fbf94eb8e7 100644 --- a/hw/mem/sparse-mem.c +++ b/hw/mem/sparse-mem.c @@ -104,14 +104,14 @@ static const Property sparse_mem_properties[] =3D { DEFINE_PROP_UINT64("maxsize", SparseMemState, maxsize, 10 * MiB), }; =20 -MemoryRegion *sparse_mem_init(uint64_t addr, uint64_t length) +MemoryRegion *sparse_mem_init(Object *parent, uint64_t addr, uint64_t leng= th) { DeviceState *dev; =20 - dev =3D qdev_new_orphan(TYPE_SPARSE_MEM); + dev =3D qdev_new(parent, "sparse-mem", TYPE_SPARSE_MEM); qdev_prop_set_uint64(dev, "baseaddr", addr); qdev_prop_set_uint64(dev, "length", length); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map_overlap(SYS_BUS_DEVICE(dev), 0, addr, -10000); return &SPARSE_MEM(dev)->mmio; } diff --git a/include/hw/mem/sparse-mem.h b/include/hw/mem/sparse-mem.h index f9863b154b..79c30cf412 100644 --- a/include/hw/mem/sparse-mem.h +++ b/include/hw/mem/sparse-mem.h @@ -14,6 +14,6 @@ #define SPARSE_MEM_H #define TYPE_SPARSE_MEM "sparse-mem" =20 -MemoryRegion *sparse_mem_init(uint64_t addr, uint64_t length); +MemoryRegion *sparse_mem_init(Object *parent, uint64_t addr, uint64_t leng= th); =20 #endif diff --git a/tests/qtest/fuzz/generic_fuzz.c b/tests/qtest/fuzz/generic_fuz= z.c index e48f868775..99b38a7fd4 100644 --- a/tests/qtest/fuzz/generic_fuzz.c +++ b/tests/qtest/fuzz/generic_fuzz.c @@ -788,7 +788,7 @@ static void generic_pre_fuzz(QTestState *s) * Create a special device that we can use to back DMA buffers at very * high memory addresses */ - sparse_mem_mr =3D sparse_mem_init(0, UINT64_MAX); + sparse_mem_mr =3D sparse_mem_init(qdev_get_machine(), 0, UINT64_MAX); =20 dma_regions =3D g_array_new(false, false, sizeof(address_range)); dma_patterns =3D g_array_new(false, false, sizeof(pattern)); --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411162; cv=none; d=zohomail.com; s=zohoarc; b=FU9dVOd2riMq6YZ9kK2jntK0YSrlezRu+EJm2vmw7wg3RYYHGznqUMA9d00hefPUtaeEuVeuk3p5J9ZHtNfMCMUfyxiVLg8cSXVL+gkYIe8inaG9dTmQH4TG97iP6v0txXhG7+eB3QKCJZYVkgBQNQjfNiAUvdHm+pTH11mtSQ0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411162; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=L0HNnqEa878wZSIDEVLLNIwDBcUK/PY1VQChkuAmyVQ=; b=ZPUBNl/6dDXD+QRCvitQppfDWwul+2VdxTkJDeJYlDgMOd6w2bgVYhOFHi55yd+gNrlFFT1HrpLpkhCLKxG2sLiTat608q1SY7Jom8qPG3bLdJtD8QXosfRrErmayRcVdPqNfnBvwa5w/gojoPNJ6jmXH9La9AaPmlLGTl0a/1Y= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178441116223329.90864736421372; Sat, 18 Jul 2026 14:46:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCr4-00084B-7N; Sat, 18 Jul 2026 17:45:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCqh-0007oX-W3; Sat, 18 Jul 2026 17:45:35 -0400 Received: from pdx-out-005.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.13.214.179]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCqg-0003Bh-75; Sat, 18 Jul 2026 17:45:31 -0400 Received: from ip-10-5-0-115.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.0.115]) by internal-pdx-out-005.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:45:27 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.104:17828] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.30.230:2525] with esmtp (Farcaster) id 3e5df9bf-eed9-4ed9-bd6b-a12e12de8885; Sat, 18 Jul 2026 21:45:26 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB001.ant.amazon.com (10.250.64.248) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:45:26 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:45:16 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411130; x=1815947130; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=L0HNnqEa878wZSIDEVLLNIwDBcUK/PY1VQChkuAmyVQ=; b=fskCX/HjS9FcTyzkt4Sp0PCHMQzicVMygt3o0f1HzdeI5w7kVo4o3TVf cJZmj3u5QUp94qzqYVl/0IMND9/QyYXMZ3SXJQylRyJFIVcuQMmyL1keC SSewKCqzXrlH68QBU+39l/2Gwbj83w04f4Hnkac3/G+hAijg6LPKuH67U gxWX2kv6D3rI17jkWi5gC/1PggjA/+snsADkz3GUqhN2n3nXJqJfwdLbs b4Df/KZHkoGooGh0ZNgBjmZTHTS6/A+vtO+MJ24scyQ1Vgwb7HMU7DBRT UTbPVMAD/45kOTk9aCCeMAIJvvdzAwXYmtKTStG6KaP0aF3gHfkaMFQmH w==; X-CSE-ConnectionGUID: GxqnFJ5DT2qmGjkRqC77cw== X-CSE-MsgGUID: N/m/UYRKTXOjUJGktxAdyQ== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23903703" X-Farcaster-Flow-ID: 3e5df9bf-eed9-4ed9-bd6b-a12e12de8885 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 030/137] hw/cxl: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:05 +0000 Message-ID: <20260718213652.37673-31-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D046UWB003.ant.amazon.com (10.13.139.174) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.13.214.179; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-005.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411164108158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/cxl to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/cxl/cxl-host.c:29 | qdev_new | parent (new arg) | "cxl-fmw[*]" | Propert= y setter machine_set_cfmw() has Object *obj =3D machine; thread it through = as parent for each fixed memory window Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/cxl/cxl-host.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/hw/cxl/cxl-host.c b/hw/cxl/cxl-host.c index c7a40a81f0..91ccd0d57c 100644 --- a/hw/cxl/cxl-host.c +++ b/hw/cxl/cxl-host.c @@ -22,11 +22,12 @@ #include "hw/pci/pcie_port.h" #include "hw/pci-bridge/pci_expander_bridge.h" =20 -static void cxl_fixed_memory_window_config(CXLFixedMemoryWindowOptions *ob= ject, +static void cxl_fixed_memory_window_config(Object *parent, + CXLFixedMemoryWindowOptions *ob= ject, int index, Error **errp) { ERRP_GUARD(); - DeviceState *dev =3D qdev_new_orphan(TYPE_CXL_FMW); + DeviceState *dev =3D qdev_new(parent, "cxl-fmw[*]", TYPE_CXL_FMW); CXLFixedWindow *fw =3D CXL_FMW(dev); strList *target; int i; @@ -67,7 +68,7 @@ static void cxl_fixed_memory_window_config(CXLFixedMemory= WindowOptions *object, fw->targets[i] =3D g_strdup(target->value); } =20 - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), errp); + sysbus_realize(SYS_BUS_DEVICE(dev), errp); } =20 static int cxl_fmws_link(Object *obj, void *opaque) @@ -557,7 +558,7 @@ static void machine_set_cfmw(Object *obj, Visitor *v, c= onst char *name, } =20 for (it =3D cfmw_list, index =3D 0; it; it =3D it->next, index++) { - cxl_fixed_memory_window_config(it->value, index, errp); + cxl_fixed_memory_window_config(obj, it->value, index, errp); } state->cfmw_list =3D cfmw_list; } --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411164; cv=none; d=zohomail.com; s=zohoarc; b=KwIi2prgQa43RpE674lsfG1nw3lBn3Tk40DlwcFiUSbFsN1xAmUUULTaNkxo4pM9ePsMGNIYqjghFBQvIfaOxlCLqDYAMtVR7G+JnYvEi3gtwXp64Gy+VgEYwo5nV1MZDSMNGOkvyyg3eEHcYhDi1xoQNCugNOgnhteCnXWWLiM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411164; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=fZD1WnZ0mWfdYta3eAgKsSlaPes0ejnsjEdNg73jO0E=; b=c+jC17kcL7KYvhXLJQJ+Rmbhsdc3w091/VByVF7mCmVUZFsMNb2uCVse3Lk2TH3pAOR8H0eHk4H9v2Ve05gsPEHB1/pfR2QKQsbjBCU7F/0TJWnz2yva11g8nYC3nFWAhPPhKzv2LG803YKkHmVYJe/BNRYl2XW/dk97NhhCXys= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411164282916.0016126100514; Sat, 18 Jul 2026 14:46:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCrB-0008FP-44; Sat, 18 Jul 2026 17:46:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCqv-0007zB-VL; Sat, 18 Jul 2026 17:45:46 -0400 Received: from pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com ([35.155.198.111]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCqr-0003FY-Ri; Sat, 18 Jul 2026 17:45:45 -0400 Received: from ip-10-5-12-219.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.12.219]) by internal-pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:45:36 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.182:4708] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.29.147:2525] with esmtp (Farcaster) id 66dce21b-701e-40f8-8f56-3074698cc1ab; Sat, 18 Jul 2026 21:45:36 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA001.ant.amazon.com (10.250.64.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:45:36 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:45:26 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411141; x=1815947141; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=fZD1WnZ0mWfdYta3eAgKsSlaPes0ejnsjEdNg73jO0E=; b=n8S5TWWH+Mep8UtIPw/9Y4K6dYQx1dKphTN4K8yOsn7bQuhNn5QegPde q/yp/TgHoigfOtG+33NSbzXLYRVgeDijdbqXJqAkDxG6DqXDcEd+dnDe7 UGUtHcyFRbW1kcJM+h2iBzLtBJAClFDqq7SR3IB3Uxzh70geRrGbSH/8Z DvHKhBICp3KFirsJ8IEbgB/66x97gSaS069b7+2fy6HADPKz0wqij4sdt G8j+eywAzwBth5xX3k4VgECbShqNVdoAl84QHxHSmCzQ/Sazyz3yPJtlP ckQ9I9rkEI93Gvr/ki4ycA+SpMzncYfkzxWde/BaH+w/qVfummgwyJwGn w==; X-CSE-ConnectionGUID: RykFZm12TDaiJWDsTXK77g== X-CSE-MsgGUID: y1xc5WjvR/Kyi7oMD+KUXg== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23816452" X-Farcaster-Flow-ID: 66dce21b-701e-40f8-8f56-3074698cc1ab From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 031/137] hw/hexagon: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:06 +0000 Message-ID: <20260718213652.37673-32-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D046UWB003.ant.amazon.com (10.13.139.174) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=35.155.198.111; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411166190158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/hexagon to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/hexagon/hexagon_dsp.c:134 | qdev_new | OBJECT(machine) | "global-regs" |= board init helper; collapse existing object_property_add_child() hw/hexagon/hexagon_dsp.c:141 | qdev_new | OBJECT(machine) | "tlb" | board i= nit helper; collapse existing object_property_add_child() hw/hexagon/virt.c:132 | qdev_new | OBJECT(vms) | "uart" | board-init helper= receives HexagonVirtMachineState*; drop const on vms hw/hexagon/virt.c:271 | qdev_new | OBJECT(ms) | "global-regs" | board init;= collapse existing object_property_add_child() hw/hexagon/virt.c:277 | qdev_new | OBJECT(ms) | "tlb" | board init; collaps= e existing object_property_add_child() Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/hexagon/hexagon_dsp.c | 12 +++++------- hw/hexagon/virt.c | 16 +++++++--------- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/hw/hexagon/hexagon_dsp.c b/hw/hexagon/hexagon_dsp.c index 712749cda8..ccd9a06f51 100644 --- a/hw/hexagon/hexagon_dsp.c +++ b/hw/hexagon/hexagon_dsp.c @@ -131,18 +131,16 @@ static void hexagon_common_init(MachineState *machine= , Rev_t rev, machine->ram_size, &error_fatal); memory_region_add_subregion(address_space, 0x0, &hms->ram); =20 - glob_regs_dev =3D qdev_new_orphan(TYPE_HEXAGON_GLOBALREG); - object_property_add_child(OBJECT(machine), "global-regs", - OBJECT(glob_regs_dev)); + glob_regs_dev =3D qdev_new(OBJECT(machine), "global-regs", + TYPE_HEXAGON_GLOBALREG); qdev_prop_set_uint64(glob_regs_dev, "config-table-addr", m_cfg->cfgbas= e); qdev_prop_set_uint32(glob_regs_dev, "dsp-rev", rev); - sysbus_realize_and_unref(SYS_BUS_DEVICE(glob_regs_dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(glob_regs_dev), &error_fatal); =20 - tlb_dev =3D qdev_new_orphan(TYPE_HEXAGON_TLB); - object_property_add_child(OBJECT(machine), "tlb", OBJECT(tlb_dev)); + tlb_dev =3D qdev_new(OBJECT(machine), "tlb", TYPE_HEXAGON_TLB); qdev_prop_set_uint32(tlb_dev, "num-entries", m_cfg->cfgtable.jtlb_size_entries); - sysbus_realize_and_unref(SYS_BUS_DEVICE(tlb_dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(tlb_dev), &error_fatal); =20 for (int i =3D 0; i < machine->smp.cpus; i++) { HexagonCPU *cpu =3D HEXAGON_CPU(object_new(machine->cpu_type)); diff --git a/hw/hexagon/virt.c b/hw/hexagon/virt.c index a7a6a8fbeb..0619f06c41 100644 --- a/hw/hexagon/virt.c +++ b/hw/hexagon/virt.c @@ -116,7 +116,7 @@ static int32_t fdt_add_clocks(const HexagonVirtMachineS= tate *vms) return clk_phandle; } =20 -static void fdt_add_uart(const HexagonVirtMachineState *vms, int uart, +static void fdt_add_uart(HexagonVirtMachineState *vms, int uart, int32_t clk_phandle) { char *nodename; @@ -129,11 +129,11 @@ static void fdt_add_uart(const HexagonVirtMachineStat= e *vms, int uart, DeviceState *dev; SysBusDevice *s; =20 - dev =3D qdev_new_orphan(TYPE_PL011); + dev =3D qdev_new(OBJECT(vms), "uart", TYPE_PL011); s =3D SYS_BUS_DEVICE(dev); qdev_prop_set_chr(dev, "chardev", serial_hd(0)); qdev_connect_clock_in(dev, "clk", vms->apb_clk); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); sysbus_mmio_map(s, 0, base); =20 nodename =3D g_strdup_printf("/pl011@%" PRIx64, base); @@ -268,17 +268,15 @@ static void virt_init(MachineState *ms) &vms->parent_obj.cfgtable_rom); fdt_add_hvx(vms, m_cfg); =20 - gsregs_dev =3D qdev_new_orphan(TYPE_HEXAGON_GLOBALREG); - object_property_add_child(OBJECT(ms), "global-regs", OBJECT(gsregs_dev= )); + gsregs_dev =3D qdev_new(OBJECT(ms), "global-regs", TYPE_HEXAGON_GLOBAL= REG); qdev_prop_set_uint64(gsregs_dev, "config-table-addr", m_cfg->cfgbase); qdev_prop_set_uint32(gsregs_dev, "dsp-rev", v68_rev); - sysbus_realize_and_unref(SYS_BUS_DEVICE(gsregs_dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(gsregs_dev), &error_fatal); =20 - tlb_dev =3D qdev_new_orphan(TYPE_HEXAGON_TLB); - object_property_add_child(OBJECT(ms), "tlb", OBJECT(tlb_dev)); + tlb_dev =3D qdev_new(OBJECT(ms), "tlb", TYPE_HEXAGON_TLB); qdev_prop_set_uint32(tlb_dev, "num-entries", m_cfg->cfgtable.jtlb_size_entries); - sysbus_realize_and_unref(SYS_BUS_DEVICE(tlb_dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(tlb_dev), &error_fatal); =20 cpu0 =3D NULL; for (int i =3D 0; i < ms->smp.cpus; i++) { --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411165; cv=none; d=zohomail.com; s=zohoarc; b=f9Ek2sOGWILnQl0m6qmmDcdsbl7MGmRAw4f5rEDMWACRkDP5jLPpLdt3CUtHsZoCVYteaffXoOD+2ZkJGRgkxB3AWuEzGdoxtUGe0Sarjylbt0TJGSQ512EHS0jPKIBPojNb/Utk3zhQUjKmmW9c+gUUb9aRjy3ejhILw4g2Z4c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411165; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=kIqXg1OdwJPh11TP5bRQ/IyTmc21PGKWjjLa0h6kmvc=; b=IW5cwuvSsyeoABpJbJzWWZAfdpBN2HcW3Rn3yTmT5Kxs2UXkVOvulsK8dfk2opzoplTnJKm5HzXQrbf+L9MtC72WZvLy7yNt4JwH78It9uW9C4bWeN7dvQUfs4d88PMiNEqbvkEzZZCgm1B9FTTE6HAzzIPgBH9n6EII4faz6EY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411165947728.9617867527065; Sat, 18 Jul 2026 14:46:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCrD-0000B7-Sn; Sat, 18 Jul 2026 17:46:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCr7-0008A1-EP; Sat, 18 Jul 2026 17:46:00 -0400 Received: from pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.42.203.116]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCqz-0003IG-Oc; Sat, 18 Jul 2026 17:45:52 -0400 Received: from ip-10-5-0-115.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.0.115]) by internal-pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:45:46 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.53:2417] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.48.250:2525] with esmtp (Farcaster) id 81bf1fc7-31b3-494c-badf-17a990ba99e6; Sat, 18 Jul 2026 21:45:45 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC001.ant.amazon.com (10.250.64.174) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:45:45 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:45:36 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411149; x=1815947149; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=kIqXg1OdwJPh11TP5bRQ/IyTmc21PGKWjjLa0h6kmvc=; b=ArWpnEN+2+jCN1sVj5z8+ltOTiTNfLlsyFUwsq4dfPE2zmYBQS0rjV0E akLxVO2f/h+BgxFWCyoXA22nJRrqYf+fIfHKQsnglrz0aXl5aZcFh57Qz eKuPhPxGXVwqdonZtCLvCaG8AhMYBPyrEUWb3j9x6NVgkhgbIGmP7UzfD IyK/A2P7oDoMn/UtfcByFlNaNiOv2uBZsY17ydML6ffgV+RwkWakz88v+ MLXsaosESfa8fHd4rWAWbktIf6ET3jj7zTi/n79Os/wlMP4M82NVJNDGO fOtfDjKLkeFl/OOXf0JvekmA/TCCuSwMG11adUyc1NRywbd0+PtVwUK9Z g==; X-CSE-ConnectionGUID: KfVYoh0+TH6WoRPxy+gqPA== X-CSE-MsgGUID: ZKJ4ghL3T76AdG8Hrs6chQ== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23939628" X-Farcaster-Flow-ID: 81bf1fc7-31b3-494c-badf-17a990ba99e6 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 032/137] hw/xen: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:07 +0000 Message-ID: <20260718213652.37673-33-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D046UWB003.ant.amazon.com (10.13.139.174) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.42.203.116; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411168152158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/xen to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/xen/xen-bus.c:1152 | qdev_new | qdev_get_machine() | "xen-bridge" | init= helper called from 3 board paths with no parent arg; use qdev_get_machine(= ) (already used in this subsystem) hw/xen/xen-legacy-backend.c:601 | qdev_new | qdev_get_machine() | "xen-sysd= ev" | init helper with no parent arg; qdev_get_machine() already used just = above in xen_set_dynamic_sysbus() hw/xen/xen-pvh-common.c:176 | sysbus_create_simple | OBJECT(s) | "virtio-mm= io[*]" | board-init helper receives XenPVHMachineState *s; loop-created hw/xen/xen-pvh-common.c:196 | qdev_new | OBJECT(s) | "tpm" | board-init hel= per receives XenPVHMachineState *s hw/xen/xen_pt_graphics.c:402 | pci_create_simple | OBJECT(s) | "isa-bridge"= | called from XenPCIPassthroughState realize; s is the composite passthrou= gh device Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/xen/xen-bus.c | 5 +++-- hw/xen/xen-legacy-backend.c | 5 +++-- hw/xen/xen-pvh-common.c | 7 ++++--- hw/xen/xen_pt_graphics.c | 3 ++- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/hw/xen/xen-bus.c b/hw/xen/xen-bus.c index 746014416b..934ff33402 100644 --- a/hw/xen/xen-bus.c +++ b/hw/xen/xen-bus.c @@ -1149,10 +1149,11 @@ type_init(xen_register_types) =20 void xen_bus_init(void) { - DeviceState *dev =3D qdev_new_orphan(TYPE_XEN_BRIDGE); + DeviceState *dev =3D qdev_new(qdev_get_machine(), "xen-bridge", + TYPE_XEN_BRIDGE); BusState *bus =3D qbus_new(TYPE_XEN_BUS, dev, NULL); =20 - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); qbus_set_bus_hotplug_handler(bus); =20 qemu_create_nic_bus_devices(bus, TYPE_XEN_DEVICE, "xen-net-device", diff --git a/hw/xen/xen-legacy-backend.c b/hw/xen/xen-legacy-backend.c index 29c90a388c..0e1da18d12 100644 --- a/hw/xen/xen-legacy-backend.c +++ b/hw/xen/xen-legacy-backend.c @@ -598,8 +598,9 @@ void xen_be_init(void) exit(1); } =20 - xen_sysdev =3D qdev_new_orphan(TYPE_XENSYSDEV); - sysbus_realize_and_unref(SYS_BUS_DEVICE(xen_sysdev), &error_fatal); + xen_sysdev =3D qdev_new(qdev_get_machine(), "xen-sysdev", + TYPE_XENSYSDEV); + sysbus_realize(SYS_BUS_DEVICE(xen_sysdev), &error_fatal); xen_sysbus =3D qbus_new(TYPE_XENSYSBUS, xen_sysdev, "xen-sysbus"); qbus_set_bus_hotplug_handler(xen_sysbus); =20 diff --git a/hw/xen/xen-pvh-common.c b/hw/xen/xen-pvh-common.c index 17f545d07c..dae523f723 100644 --- a/hw/xen/xen-pvh-common.c +++ b/hw/xen/xen-pvh-common.c @@ -173,7 +173,8 @@ static void xen_create_virtio_mmio_devices(XenPVHMachin= eState *s) qemu_irq irq =3D qemu_allocate_irq(xen_set_irq, NULL, s->cfg.virtio_mmio_irq_base + i); =20 - sysbus_create_simple_orphan("virtio-mmio", base, irq); + sysbus_create_simple(OBJECT(s), "virtio-mmio[*]", "virtio-mmio", + base, irq); =20 trace_xen_create_virtio_mmio_devices(i, s->cfg.virtio_mmio_irq_base += i, @@ -193,7 +194,7 @@ static void xen_enable_tpm(XenPVHMachineState *s) error_report("Couldn't find tmp0 backend"); return; } - dev =3D qdev_new_orphan(TYPE_TPM_TIS_SYSBUS); + dev =3D qdev_new(OBJECT(s), "tpm", TYPE_TPM_TIS_SYSBUS); /* * FIXME This use of &err is is wrong. If both calls fail, the * second will trip error_setv()'s assertion. If just one call @@ -204,7 +205,7 @@ static void xen_enable_tpm(XenPVHMachineState *s) object_property_set_link(OBJECT(dev), "tpmdev", OBJECT(be), &err); object_property_set_str(OBJECT(dev), "tpmdev", be->id, &err); busdev =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(busdev, &error_fatal); + sysbus_realize(busdev, &error_fatal); sysbus_mmio_map(busdev, 0, s->cfg.tpm.base); =20 trace_xen_enable_tpm(s->cfg.tpm.base); diff --git a/hw/xen/xen_pt_graphics.c b/hw/xen/xen_pt_graphics.c index 4457209e83..2841b45ca1 100644 --- a/hw/xen/xen_pt_graphics.c +++ b/hw/xen/xen_pt_graphics.c @@ -399,7 +399,8 @@ void xen_igd_passthrough_isa_bridge_create(XenPCIPassth= roughState *s, } =20 /* Currently IGD drivers always need to access PCH by 1f.0. */ - bridge_dev =3D pci_create_simple_orphan(bus, PCI_DEVFN(0x1f, 0), + bridge_dev =3D pci_create_simple(OBJECT(s), "isa-bridge", bus, + PCI_DEVFN(0x1f, 0), "igd-passthrough-isa-bridge"); =20 /* --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411198; cv=none; d=zohomail.com; s=zohoarc; b=Vy0TYahHjOrDCX62WS919lQNABmZq0tdWpxoC13wHFgobfT5Wvfsa/gAmMBM3o6CfHEvrP2b3JlAPc7Ht9CcSVoRhlUWqhmnc8TbHZ9IDNSAj7Fa1iY4g04Fc+gNZbX5qtN/TyjpirvLnLfWHUrPFs3+OL09a4nzds4Y7COsTI4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411198; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=tcpsK52XFqezXpOlLJQb4X1gXgJtDN+MPTQXfo8z5K8=; b=J9glT3xOdeWHF/U/V0lvZCAFTQrSQdR19w0Ol04oYPVUceWupb+nejyg5C1oA/9grMqyIlEhuMmlqE8wJ3kL0A2aBrYsPBS4J03x++VCiEeLXSnO8nvO7AD3t0wBajVQt3CsvPxUJyLCgkdK0I45FPFm+JldBbrcelID2v8YbW4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411198900249.5845057679884; Sat, 18 Jul 2026 14:46:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCrh-0001z2-7h; Sat, 18 Jul 2026 17:46:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCrW-0001nx-UJ; Sat, 18 Jul 2026 17:46:23 -0400 Received: from pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com ([35.155.198.111]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCrU-0003Jx-Ru; Sat, 18 Jul 2026 17:46:22 -0400 Received: from ip-10-5-0-115.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.0.115]) by internal-pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:46:17 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.48:29621] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.35.17:2525] with esmtp (Farcaster) id 845e8aec-94d3-454e-9bd4-98384038b8d8; Sat, 18 Jul 2026 21:46:16 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB002.ant.amazon.com (10.250.64.231) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:46:16 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:46:07 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411180; x=1815947180; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=tcpsK52XFqezXpOlLJQb4X1gXgJtDN+MPTQXfo8z5K8=; b=gqSvN/lf9Uk/bVk+RCY3Z5+Rk0IGsXXlELwT0r3rXNtAs1ivoNV/5oSE OrptaiWpu4x9OB003I4FfNr+QB/nBtJLEuYGh88rVVchT6z4Rc9GohxVs xaqDlrCMAv0Bttyrzig0Ps54GrUN5vbz0kKTpGCwwdtcnOXmWT01h60Uw upbhOUnosaka5H5VxU/cuKMyhYXanOo2ITDSoc8y/XG8L6uwV62FH1WTL u+Pw8Kpt3vVhpfCyvjQcZFPp1oxGQjD/PQ2QDxETDVY9pOs9+Y6Ui1rdx gfObNpO6MOrYOK+aNLXQ9WVC5qBaiQHDVEkuiMKktO/GpuckNr01g8Npx g==; X-CSE-ConnectionGUID: xmhSenv8T+e8GhNC+Km8sA== X-CSE-MsgGUID: 1KgPUGwDQHiHnfOc9lmR3g== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23816486" X-Farcaster-Flow-ID: 845e8aec-94d3-454e-9bd4-98384038b8d8 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 033/137] hw/display: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:08 +0000 Message-ID: <20260718213652.37673-34-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D039UWB004.ant.amazon.com (10.13.138.57) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=35.155.198.111; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411200251158500 Convert the *_orphan() device-creation calls in hw/display to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/display/sii9022.c:167 | i2c_slave_create_simple | OBJECT(dev) | "ddc" | = DeviceClass.realize(); DDC slave owned by sii9022 device hw/display/sm501.c:1913 | qdev_new | OBJECT(dev) | "ddc" | sm501_init() hel= per receives realizing DeviceState *dev; drop _and_unref hw/display/xlnx_dp.c:1349 | qdev_new | obj | "dpcd" | instance_init(Object = *obj); collapse existing add_child+unref, keep name hw/display/xlnx_dp.c:1353 | qdev_new | obj | "edid" | instance_init(Object = *obj); collapse existing add_child+unref, keep name Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ Reviewed-by: Philippe Mathieu-Daud=C3=A9 AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/display/sii9022.c | 2 +- hw/display/sm501.c | 4 ++-- hw/display/xlnx_dp.c | 14 +++----------- 3 files changed, 6 insertions(+), 14 deletions(-) diff --git a/hw/display/sii9022.c b/hw/display/sii9022.c index 0bf49195d7..2accebf193 100644 --- a/hw/display/sii9022.c +++ b/hw/display/sii9022.c @@ -164,7 +164,7 @@ static void sii9022_realize(DeviceState *dev, Error **e= rrp) I2CBus *bus; =20 bus =3D I2C_BUS(qdev_get_parent_bus(dev)); - i2c_slave_create_simple_orphan(bus, TYPE_I2CDDC, 0x50); + i2c_slave_create_simple(OBJECT(dev), "ddc", bus, TYPE_I2CDDC, 0x50); } =20 static void sii9022_class_init(ObjectClass *klass, const void *data) diff --git a/hw/display/sm501.c b/hw/display/sm501.c index 1e47e6a32b..56075a0303 100644 --- a/hw/display/sm501.c +++ b/hw/display/sm501.c @@ -1956,9 +1956,9 @@ static void sm501_init(SM501State *s, DeviceState *de= v, /* i2c */ s->i2c_bus =3D i2c_init_bus(dev, "sm501.i2c"); /* ddc */ - I2CDDCState *ddc =3D I2CDDC(qdev_new_orphan(TYPE_I2CDDC)); + I2CDDCState *ddc =3D I2CDDC(qdev_new(OBJECT(dev), "ddc", TYPE_I2CDDC)); i2c_slave_set_address(I2C_SLAVE(ddc), 0x50); - qdev_realize_and_unref(DEVICE(ddc), BUS(s->i2c_bus), &error_abort); + qdev_realize(DEVICE(ddc), BUS(s->i2c_bus), &error_abort); =20 /* mmio */ memory_region_init(&s->mmio_region, OBJECT(dev), "sm501.mmio", MMIO_SI= ZE); diff --git a/hw/display/xlnx_dp.c b/hw/display/xlnx_dp.c index e8490d644d..5968466e79 100644 --- a/hw/display/xlnx_dp.c +++ b/hw/display/xlnx_dp.c @@ -1341,19 +1341,11 @@ static void xlnx_dp_init(Object *obj) */ s->aux_bus =3D aux_bus_init(DEVICE(obj), "aux"); =20 - /* - * Initialize DPCD and EDID. Once we have added the objects as - * child properties of this device, we can drop the reference we - * hold to them, leaving the child-property as the only reference. - */ - s->dpcd =3D DPCD(qdev_new_orphan("dpcd")); - object_property_add_child(OBJECT(s), "dpcd", OBJECT(s->dpcd)); - object_unref(s->dpcd); + /* Initialize DPCD and EDID. */ + s->dpcd =3D DPCD(qdev_new(obj, "dpcd", "dpcd")); =20 - s->edid =3D I2CDDC(qdev_new_orphan("i2c-ddc")); + s->edid =3D I2CDDC(qdev_new(obj, "edid", "i2c-ddc")); i2c_slave_set_address(I2C_SLAVE(s->edid), 0x50); - object_property_add_child(OBJECT(s), "edid", OBJECT(s->edid)); - object_unref(s->edid); =20 fifo8_create(&s->rx_fifo, 16); fifo8_create(&s->tx_fifo, 16); --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411230; cv=none; d=zohomail.com; s=zohoarc; b=BA14s99AUCdH5Vj2H517kBaPx5i4M0kPFnhjZ9A+nXL3sCn0w9fMdzx0RTZ86kjZzIIRigy5rQ3pZj67nZazvY//UWwYwjRXeJWX2OHzDqQLO2d8URYmPYzE1OCfj/0hhMWTR5AgTWMHqjeAjAcxYYreQTrCb33Nv43cwHd78YM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411230; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=9ZufOTJt2VRTFWvQzbx90SPgJlrAPNTbprAWyn+gGOU=; b=QCm+F8u7olutRRVxrrIkhtoAGSCDWv5Zw/DsTCDjxlbiPWtyiNve7GAp4PNEolqKQB6fQMuYW83JkE4/haCTHhTCTdzr9YPEufUeJ7ZEG1k/onKvJL4zVADUOQv1p6HVjeVXHPlCo/YdP9JHeRlLznV2OLUrtpvQL6FhsSfnp5Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411230384306.6049868318023; Sat, 18 Jul 2026 14:47:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCrn-0002BC-Qf; Sat, 18 Jul 2026 17:46:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCrf-0001zk-KW; Sat, 18 Jul 2026 17:46:33 -0400 Received: from pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com ([35.155.198.111]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCrd-0003Jx-Ce; Sat, 18 Jul 2026 17:46:31 -0400 Received: from ip-10-5-0-115.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.0.115]) by internal-pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:46:26 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.234:19989] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.0.115:2525] with esmtp (Farcaster) id ac4b6c22-ff69-4e63-b818-a00715442ac2; Sat, 18 Jul 2026 21:46:26 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA002.ant.amazon.com (10.250.64.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:46:26 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:46:16 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411189; x=1815947189; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=9ZufOTJt2VRTFWvQzbx90SPgJlrAPNTbprAWyn+gGOU=; b=DVo58JO2rijNHLE0ogh8s/+dAeHcm3TFDgpkCd9b7nbtHf2/9vMZ9bro Qw5aTyJsM4PqaMtjevOsKbeEu66u5ROQP0bG1+0eZdhBhkylNRnpTRX55 hY9AYKBi0TrJgxBfSUIrIkIt0qF81ncWMikgTsgcFSkSyqkvELFXI7LWS EtoXwcU+5oVOpTJH7xyf31mTswHFnZ2fawwg6Gpk3VobNWtXUBvRZR2fp 2uquQ8PxrA5HEufb5iqhmdk2gtAVRuCEE7nm8sAKiQtlNJvmdDrBJ9AQ9 5kjVRNwGfiVhA2l+2gibgKe8ALqYFw9D9LGj0QI97+SVlyK9A1mcnSIOA g==; X-CSE-ConnectionGUID: yVbvdho4RrKCdZTRzFKcHg== X-CSE-MsgGUID: tNV55YJrSGOlppi0kjE+ng== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23816500" X-Farcaster-Flow-ID: ac4b6c22-ff69-4e63-b818-a00715442ac2 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 034/137] hw/nvram: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:09 +0000 Message-ID: <20260718213652.37673-35-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D039UWB004.ant.amazon.com (10.13.138.57) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=35.155.198.111; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411232345158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/nvram to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/nvram/eeprom_at24c.c:151 | i2c_slave_new | ORPHAN-JUSTIFIED | - | public= helper with ~80 callers in hw/arm board files; parent threading deferred t= o per-board conversion to keep patch scoped to hw/nvram hw/nvram/fw_cfg.c:1032 | qdev_new | OBJECT(qdev_get_machine()) | TYPE_FW_CF= G | collapse existing add_child(machine, TYPE_FW_CFG, dev); drop _and_unref hw/nvram/fw_cfg.c:1064 | qdev_new | OBJECT(qdev_get_machine()) | TYPE_FW_CF= G | collapse existing add_child(machine, TYPE_FW_CFG, dev); drop _and_unref Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/nvram/fw_cfg.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c index 01fba1c6f6..d3f055718c 100644 --- a/hw/nvram/fw_cfg.c +++ b/hw/nvram/fw_cfg.c @@ -1029,13 +1029,11 @@ FWCfgState *fw_cfg_init_io_dma(uint32_t iobase, Add= ressSpace *dma_as) =20 assert(dma_as); =20 - dev =3D qdev_new_orphan(TYPE_FW_CFG_IO); - - object_property_add_child(OBJECT(qdev_get_machine()), TYPE_FW_CFG, - OBJECT(dev)); + dev =3D qdev_new(OBJECT(qdev_get_machine()), TYPE_FW_CFG, + TYPE_FW_CFG_IO); =20 sbd =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(sbd, &error_fatal); + sysbus_realize(sbd, &error_fatal); ios =3D FW_CFG_IO(dev); memory_region_add_subregion(iomem, iobase, &ios->comb_iomem); =20 @@ -1061,17 +1059,15 @@ static FWCfgState *fw_cfg_init_mem_internal(hwaddr = ctl_addr, FWCfgState *s; bool dma_requested =3D dma_addr && dma_as; =20 - dev =3D qdev_new_orphan(TYPE_FW_CFG_MEM); + dev =3D qdev_new(OBJECT(qdev_get_machine()), TYPE_FW_CFG, + TYPE_FW_CFG_MEM); qdev_prop_set_uint32(dev, "data_width", data_width); if (!dma_requested) { qdev_prop_set_bit(dev, "dma_enabled", false); } =20 - object_property_add_child(OBJECT(qdev_get_machine()), TYPE_FW_CFG, - OBJECT(dev)); - sbd =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(sbd, &error_fatal); + sysbus_realize(sbd, &error_fatal); sysbus_mmio_map(sbd, 0, ctl_addr); sysbus_mmio_map(sbd, 1, data_addr); =20 --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411220; cv=none; d=zohomail.com; s=zohoarc; b=XO7ySZZHTbcD6VhG3k27qynjtovPT1nIK1lhLaiOxYtrxtnsRxw7Q7rUGgBI7bgkz0nCPQR6z4ecJinRjvtCcJrHB6eyaGLBOf/VAnWazRdktEC1FB25GCXFvityHuswU4Su9u51mUIP7Bptn2tzI1jGkUP1Gor2nzuUi7R+3GM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411220; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ylzGdL2hCAzHlWQm4NhQvPDDp5LBcQLJWN3rDbxPs98=; b=Rdu8Y7JlsX6wB3bdSyDwDRSnq562AGMmP9NFlWeRwDWzzNcUo9KY/8m6I81A2y/4fUh/MRBxeqm6ONBCQH8BFfDNNnMyBfchwmXzIXyHqobdJcVOaWuuX1VSC+bruATvUImpZaERfGxveoAAxabHmnLMJv1klVs8/3T7qXVPCjk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411220501408.33161263098384; Sat, 18 Jul 2026 14:47:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCrs-0002Xl-C3; Sat, 18 Jul 2026 17:46:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCrq-0002LV-HN; Sat, 18 Jul 2026 17:46:42 -0400 Received: from pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.245.243.92]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCro-0003LO-IG; Sat, 18 Jul 2026 17:46:42 -0400 Received: from ip-10-5-12-219.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.12.219]) by internal-pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:46:36 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.104:21762] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.0.115:2525] with esmtp (Farcaster) id f2ddba76-9b18-4e75-9fb9-f9620ae3d41c; Sat, 18 Jul 2026 21:46:35 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB001.ant.amazon.com (10.250.64.248) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:46:35 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:46:26 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411200; x=1815947200; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ylzGdL2hCAzHlWQm4NhQvPDDp5LBcQLJWN3rDbxPs98=; b=d3igyu/kj82BSjmpDfY4yhuRKAYo8H6or1kjqMw8qOnV4tARJ1QlGuT/ SsP9OeFLbU3sIDWf2D3KVmV8IfQRv/RGwDLONHr2j6qQBGZUNRfU6wS8V Dsw/SiAAIIhcOO8j/hDaFOCju87TviPwNJriXhJbGO2VfEoS6kO92rjSz ed1JzDpsKM0b3TLRIqc8IgKcOpRmP4fbKHJAMjO3oP9xnvcCIKASg9gPw KBZoYiI24rEVBnjsL+Lxi3b9AIqmpHP8P+Q3nOaeJXDvSQwfTruarAypg haYxgdHokY98vSb4SyDrErYnc1KwUnUGwKBTZQVE83JgjTiXhhudcybhg Q==; X-CSE-ConnectionGUID: 8qZNF+teT8SVS253cRJK3w== X-CSE-MsgGUID: LnLpdT4HQ/+orsKmll1oXg== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23422773" X-Farcaster-Flow-ID: f2ddba76-9b18-4e75-9fb9-f9620ae3d41c From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 035/137] hw/dma: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:10 +0000 Message-ID: <20260718213652.37673-36-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D039UWB004.ant.amazon.com (10.13.138.57) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.245.243.92; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411222479158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/dma to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/dma/i8257.c:654 | isa_new | parent | "dma[*]" | helper already receives = Object *parent; collapse existing add_child, keep name; drop _and_unref hw/dma/i8257.c:663 | isa_new | parent | "dma[*]" | helper already receives = Object *parent; collapse existing add_child, keep name; drop _and_unref hw/dma/rc4030.c:750 | qdev_new | parent | "rc4030" | thread Object *parent = from single caller mips_jazz_init(machine); update header + caller; drop _a= nd_unref Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/dma/i8257.c | 10 ++++------ hw/dma/rc4030.c | 7 ++++--- hw/mips/jazz.c | 2 +- include/hw/mips/mips.h | 3 ++- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/hw/dma/i8257.c b/hw/dma/i8257.c index d1ab17b80d..735d7ca9a7 100644 --- a/hw/dma/i8257.c +++ b/hw/dma/i8257.c @@ -651,23 +651,21 @@ void i8257_dma_init(Object *parent, ISABus *bus, bool= high_page_enable) ISADevice *isa1, *isa2; DeviceState *d; =20 - isa1 =3D isa_new_orphan(TYPE_I8257); - object_property_add_child(parent, "dma[*]", OBJECT(isa1)); + isa1 =3D isa_new(parent, "dma[*]", TYPE_I8257); d =3D DEVICE(isa1); qdev_prop_set_int32(d, "base", 0x00); qdev_prop_set_int32(d, "page-base", 0x80); qdev_prop_set_int32(d, "pageh-base", high_page_enable ? 0x480 : -1); qdev_prop_set_int32(d, "dshift", 0); - isa_realize_and_unref(isa1, bus, &error_fatal); + qdev_realize(d, BUS(bus), &error_fatal); =20 - isa2 =3D isa_new_orphan(TYPE_I8257); - object_property_add_child(parent, "dma[*]", OBJECT(isa2)); + isa2 =3D isa_new(parent, "dma[*]", TYPE_I8257); d =3D DEVICE(isa2); qdev_prop_set_int32(d, "base", 0xc0); qdev_prop_set_int32(d, "page-base", 0x88); qdev_prop_set_int32(d, "pageh-base", high_page_enable ? 0x488 : -1); qdev_prop_set_int32(d, "dshift", 1); - isa_realize_and_unref(isa2, bus, &error_fatal); + qdev_realize(d, BUS(bus), &error_fatal); =20 isa_bus_dma(bus, ISADMA(isa1), ISADMA(isa2)); } diff --git a/hw/dma/rc4030.c b/hw/dma/rc4030.c index ab8aaf7da4..800cdfb42d 100644 --- a/hw/dma/rc4030.c +++ b/hw/dma/rc4030.c @@ -743,12 +743,13 @@ static void rc4030_register_types(void) =20 type_init(rc4030_register_types) =20 -DeviceState *rc4030_init(rc4030_dma **dmas, IOMMUMemoryRegion **dma_mr) +DeviceState *rc4030_init(Object *parent, rc4030_dma **dmas, + IOMMUMemoryRegion **dma_mr) { DeviceState *dev; =20 - dev =3D qdev_new_orphan(TYPE_RC4030); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + dev =3D qdev_new(parent, "rc4030", TYPE_RC4030); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 *dmas =3D rc4030_allocate_dmas(dev, 4); *dma_mr =3D &RC4030(dev)->dma_mr; diff --git a/hw/mips/jazz.c b/hw/mips/jazz.c index 5e34a6582d..62f2350d36 100644 --- a/hw/mips/jazz.c +++ b/hw/mips/jazz.c @@ -261,7 +261,7 @@ static void mips_jazz_init(MachineState *machine, cpu_mips_clock_init(cpu); =20 /* Chipset */ - rc4030 =3D rc4030_init(&dmas, &rc4030_dma_mr); + rc4030 =3D rc4030_init(OBJECT(machine), &dmas, &rc4030_dma_mr); sysbus =3D SYS_BUS_DEVICE(rc4030); sysbus_connect_irq(sysbus, 0, env->irq[6]); sysbus_connect_irq(sysbus, 1, env->irq[3]); diff --git a/include/hw/mips/mips.h b/include/hw/mips/mips.h index cd0ccb4e5d..7fa32eab38 100644 --- a/include/hw/mips/mips.h +++ b/include/hw/mips/mips.h @@ -17,6 +17,7 @@ typedef struct rc4030DMAState *rc4030_dma; void rc4030_dma_read(void *dma, uint8_t *buf, int len); void rc4030_dma_write(void *dma, uint8_t *buf, int len); =20 -DeviceState *rc4030_init(rc4030_dma **dmas, IOMMUMemoryRegion **dma_mr); +DeviceState *rc4030_init(Object *parent, rc4030_dma **dmas, + IOMMUMemoryRegion **dma_mr); =20 #endif --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411238; cv=none; d=zohomail.com; s=zohoarc; b=Mo/769LXipYIgpGn2hNScTyClUC+aKBKsJQRKZfSAxlxbbriLT643S3ipoFxockAh8IRuIhQgewT9GTpiK++0ybP+Hsu306riepIlmyfdzWRsIcWRgoLGzt2bepf++/Zb/vN7INy6SJEATlZAo3NkPo7uV+fG2lwEA/lmg4CpjI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411238; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=fL/yJcxl4RA0CIp3u6PRl8YetVugPVwFHArL8hV4eXA=; b=Jit20jy/qL8RoTeW1OD48ADk59f9ASU/LkVsp4oA4Myr01UwaC8F5jhHyVeSh0JApnwhAOil3hqerhmIpXBGgorA9FC2mBDJzLLPbteVmRgbXA5xmTE/EMJO4SZIdAssq496mNk3jEG4xgy/AlbHwWDjguFH4Th3Ch51jvRmVrA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411238548885.1456512763223; Sat, 18 Jul 2026 14:47:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCsM-0003Pr-Qb; Sat, 18 Jul 2026 17:47:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCsL-0003OR-Hd; Sat, 18 Jul 2026 17:47:13 -0400 Received: from pdx-out-015.esa.us-west-2.outbound.mail-perimeter.amazon.com ([50.112.246.219]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCsI-0003N4-SR; Sat, 18 Jul 2026 17:47:13 -0400 Received: from ip-10-5-6-203.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.6.203]) by internal-pdx-out-015.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:47:07 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.51:29915] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.41.246:2525] with esmtp (Farcaster) id b432189c-9f51-4081-ac8f-31b6570ca702; Sat, 18 Jul 2026 21:47:07 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC002.ant.amazon.com (10.250.64.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:47:06 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:46:57 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411230; x=1815947230; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=fL/yJcxl4RA0CIp3u6PRl8YetVugPVwFHArL8hV4eXA=; b=eBuxxnhVgaWl5FDG5B7J9G9z0bbLZtAMO+AEs1dqfvkw8qkiQaKvqqp9 CQxyHm0BXlo5sWzEJ9AagXI+Yh3rdLSoTgF8Tvgdgh3vSUX5n1vWBmJCO N2YzMG+/Wi94+Mnj5UZGP0A2HvrGzjP8omcl5lEkvf1liYKOe1y3n6ALl Y/SeGqEegamlSxD/paSQmKmsp/Xd43hc3z2TAPFqWx3wmFujZRtt3GfL2 KFKPTCSnF698DYdZVDcIpEOy5dseLqjxh+HWVbpqnOQKG2sB19l89eori QjBr9I4xfVATdjyTeunYpm8wPyxvmwnANQrQkJjTpqCnbL8+xSVUwSW49 g==; X-CSE-ConnectionGUID: kCwStPorRsWQ7rJzAZvg6A== X-CSE-MsgGUID: jwgeimygQxiBXATBA+cTVQ== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23724879" X-Farcaster-Flow-ID: b432189c-9f51-4081-ac8f-31b6570ca702 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 036/137] hw/misc: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:11 +0000 Message-ID: <20260718213652.37673-37-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D046UWA004.ant.amazon.com (10.13.139.76) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=50.112.246.219; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-015.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_FILL_THIS_FORM_SHORT=0.01, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411240526158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/misc to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/misc/empty_slot.c:61 | qdev_new | parent | name | thread Object *parent = as first arg; use existing name arg as child name; 7 callers updated (m68k = next-cube, sparc sun4m, gt64120 realize) hw/misc/led.c:144 | qdev_new | parentobj | name | already receives parentob= j; collapse existing object_property_add_child(); compute name before create hw/misc/sifive_e_prci.c:120 | qdev_new | parent | "prci" | thread Object *p= arent as first arg; single caller in sifive_e_soc_realize passes OBJECT(dev) hw/misc/sifive_test.c:100 | qdev_new | parent | "test" | thread Object *par= ent as first arg; 2 callers (riscv virt, or1k virt) pass machine-state Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/m68k/next-cube.c | 6 +++--- hw/misc/empty_slot.c | 7 ++++--- hw/misc/led.c | 15 ++++++++------- hw/misc/sifive_e_prci.c | 6 +++--- hw/misc/sifive_test.c | 6 +++--- hw/or1k/virt.c | 2 +- hw/pci-host/gt64120.c | 2 +- hw/riscv/sifive_e.c | 2 +- hw/riscv/virt.c | 2 +- hw/sparc/sun4m.c | 7 ++++--- include/hw/misc/empty_slot.h | 3 ++- include/hw/misc/sifive_e_prci.h | 2 +- include/hw/misc/sifive_test.h | 2 +- 13 files changed, 33 insertions(+), 29 deletions(-) diff --git a/hw/m68k/next-cube.c b/hw/m68k/next-cube.c index d97168d9f3..530dc1ab59 100644 --- a/hw/m68k/next-cube.c +++ b/hw/m68k/next-cube.c @@ -1292,9 +1292,9 @@ static void next_cube_init(MachineState *machine) sysbus_mmio_map(SYS_BUS_DEVICE(pcdev), 1, 0x02106000); =20 /* unknown: Brightness control register? */ - empty_slot_init("next.unknown.0", 0x02110000, 0x10); + empty_slot_init(OBJECT(machine), "next.unknown.0", 0x02110000, 0x10); /* unknown: Magneto-Optical drive controller? */ - empty_slot_init("next.unknown.1", 0x02112000, 0x10); + empty_slot_init(OBJECT(machine), "next.unknown.1", 0x02112000, 0x10); =20 /* SCSI */ sysbus_mmio_map(SYS_BUS_DEVICE(pcdev), 2, 0x02114000); @@ -1304,7 +1304,7 @@ static void next_cube_init(MachineState *machine) sysbus_mmio_map(SYS_BUS_DEVICE(pcdev), 4, 0x02118000); =20 /* unknown: Serial clock configuration register? */ - empty_slot_init("next.unknown.2", 0x02118004, 0x10); + empty_slot_init(OBJECT(machine), "next.unknown.2", 0x02118004, 0x10); =20 /* Timer */ sysbus_mmio_map(SYS_BUS_DEVICE(pcdev), 5, 0x0211a000); diff --git a/hw/misc/empty_slot.c b/hw/misc/empty_slot.c index 182211fdcc..64764dfd92 100644 --- a/hw/misc/empty_slot.c +++ b/hw/misc/empty_slot.c @@ -52,16 +52,17 @@ static const MemoryRegionOps empty_slot_ops =3D { .endianness =3D DEVICE_NATIVE_ENDIAN, }; =20 -void empty_slot_init(const char *name, hwaddr addr, uint64_t slot_size) +void empty_slot_init(Object *parent, const char *name, hwaddr addr, + uint64_t slot_size) { if (slot_size > 0) { /* Only empty slots larger than 0 byte need handling. */ DeviceState *dev; =20 - dev =3D qdev_new_orphan(TYPE_EMPTY_SLOT); + dev =3D qdev_new(parent, name, TYPE_EMPTY_SLOT); =20 qdev_prop_set_uint64(dev, "size", slot_size); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 sysbus_mmio_map_overlap(SYS_BUS_DEVICE(dev), 0, addr, -10000); } diff --git a/hw/misc/led.c b/hw/misc/led.c index 620284063b..bed85ec3c6 100644 --- a/hw/misc/led.c +++ b/hw/misc/led.c @@ -141,20 +141,21 @@ LEDState *led_create_simple(Object *parentobj, g_autofree char *name =3D NULL; DeviceState *dev; =20 - dev =3D qdev_new_orphan(TYPE_LED); - qdev_prop_set_bit(dev, "gpio-active-high", - gpio_polarity =3D=3D GPIO_POLARITY_ACTIVE_HIGH); - qdev_prop_set_string(dev, "color", led_color_name[color]); if (!description) { static unsigned undescribed_led_id; name =3D g_strdup_printf("undescribed-led-#%u", undescribed_led_id= ++); } else { - qdev_prop_set_string(dev, "description", description); name =3D g_ascii_strdown(description, -1); name =3D g_strdelimit(name, " #", '-'); } - object_property_add_child(parentobj, name, OBJECT(dev)); - qdev_realize_and_unref(dev, NULL, &error_fatal); + dev =3D qdev_new(parentobj, name, TYPE_LED); + qdev_prop_set_bit(dev, "gpio-active-high", + gpio_polarity =3D=3D GPIO_POLARITY_ACTIVE_HIGH); + qdev_prop_set_string(dev, "color", led_color_name[color]); + if (description) { + qdev_prop_set_string(dev, "description", description); + } + qdev_realize(dev, NULL, &error_fatal); =20 return LED(dev); } diff --git a/hw/misc/sifive_e_prci.c b/hw/misc/sifive_e_prci.c index 7ac5db5933..a466d37735 100644 --- a/hw/misc/sifive_e_prci.c +++ b/hw/misc/sifive_e_prci.c @@ -115,10 +115,10 @@ type_init(sifive_e_prci_register_types) /* * Create PRCI device. */ -DeviceState *sifive_e_prci_create(hwaddr addr) +DeviceState *sifive_e_prci_create(Object *parent, hwaddr addr) { - DeviceState *dev =3D qdev_new_orphan(TYPE_SIFIVE_E_PRCI); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + DeviceState *dev =3D qdev_new(parent, "prci", TYPE_SIFIVE_E_PRCI); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, addr); return dev; } diff --git a/hw/misc/sifive_test.c b/hw/misc/sifive_test.c index f861858d9b..81ae00a110 100644 --- a/hw/misc/sifive_test.c +++ b/hw/misc/sifive_test.c @@ -95,10 +95,10 @@ type_init(sifive_test_register_types) /* * Create Test device. */ -DeviceState *sifive_test_create(hwaddr addr) +DeviceState *sifive_test_create(Object *parent, hwaddr addr) { - DeviceState *dev =3D qdev_new_orphan(TYPE_SIFIVE_TEST); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + DeviceState *dev =3D qdev_new(parent, "test", TYPE_SIFIVE_TEST); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, addr); return dev; } diff --git a/hw/or1k/virt.c b/hw/or1k/virt.c index 7362433a02..276be32648 100644 --- a/hw/or1k/virt.c +++ b/hw/or1k/virt.c @@ -264,7 +264,7 @@ static void openrisc_virt_test_init(OR1KVirtState *stat= e, hwaddr base, char *nodename; =20 /* SiFive Test MMIO device */ - sifive_test_create(base); + sifive_test_create(OBJECT(state), base); =20 /* SiFive Test MMIO Reset device FDT */ nodename =3D g_strdup_printf("/soc/test@%" HWADDR_PRIx, base); diff --git a/hw/pci-host/gt64120.c b/hw/pci-host/gt64120.c index 780c86cd9a..0c49e51ad0 100644 --- a/hw/pci-host/gt64120.c +++ b/hw/pci-host/gt64120.c @@ -1224,7 +1224,7 @@ static void gt64120_realize(DeviceState *dev, Error *= *errp) * exception when accessing invalid memory. Create an empty slot to * emulate this feature. */ - empty_slot_init("GT64120", 0, 0x20000000); + empty_slot_init(OBJECT(dev), "GT64120", 0, 0x20000000); } =20 static void gt64120_pci_realize(PCIDevice *d, Error **errp) diff --git a/hw/riscv/sifive_e.c b/hw/riscv/sifive_e.c index dfdb7ae4c1..d07edde237 100644 --- a/hw/riscv/sifive_e.c +++ b/hw/riscv/sifive_e.c @@ -233,7 +233,7 @@ static void sifive_e_soc_realize(DeviceState *dev, Erro= r **errp) RISCV_ACLINT_DEFAULT_MTIMER_SIZE, 0, ms->smp.cpus, RISCV_ACLINT_DEFAULT_MTIMECMP, RISCV_ACLINT_DEFAULT_MTIME, SIFIVE_E_LFCLK_DEFAULT_FREQ, false); - sifive_e_prci_create(memmap[SIFIVE_E_DEV_PRCI].base); + sifive_e_prci_create(OBJECT(dev), memmap[SIFIVE_E_DEV_PRCI].base); =20 /* AON */ =20 diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index 0479005437..70e31f6327 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -1476,7 +1476,7 @@ static void virt_machine_init(MachineState *machine) rom_set_fw(s->fw_cfg); =20 /* SiFive Test MMIO device */ - sifive_test_create(s->memmap[VIRT_TEST].base); + sifive_test_create(OBJECT(machine), s->memmap[VIRT_TEST].base); =20 /* VirtIO MMIO devices */ for (i =3D 0; i < VIRTIO_COUNT; i++) { diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c index 80e37555b1..52627dbdec 100644 --- a/hw/sparc/sun4m.c +++ b/hw/sparc/sun4m.c @@ -842,7 +842,7 @@ static void sun4m_hw_init(MachineState *machine) =20 /* models without ECC don't trap when missing ram is accessed */ if (!hwdef->ecc_base) { - empty_slot_init("ecc", machine->ram_size, + empty_slot_init(OBJECT(machine), "ecc", machine->ram_size, hwdef->max_mem - machine->ram_size); } =20 @@ -875,7 +875,7 @@ static void sun4m_hw_init(MachineState *machine) Software shouldn't use aliased addresses, neither should it cra= sh when does. Using empty_slot instead of aliasing can help with debugging such accesses */ - empty_slot_init("iommu.alias", + empty_slot_init(OBJECT(machine), "iommu.alias", hwdef->iommu_pad_base, hwdef->iommu_pad_len); } =20 @@ -937,7 +937,8 @@ static void sun4m_hw_init(MachineState *machine) /* vsimm registers probed by OBP */ if (hwdef->vsimm[i].reg_base) { char *name =3D g_strdup_printf("vsimm[%d]", i); - empty_slot_init(name, hwdef->vsimm[i].reg_base, 0x2000); + empty_slot_init(OBJECT(machine), name, + hwdef->vsimm[i].reg_base, 0x2000); g_free(name); } } diff --git a/include/hw/misc/empty_slot.h b/include/hw/misc/empty_slot.h index dec56e56ae..12f03aa16a 100644 --- a/include/hw/misc/empty_slot.h +++ b/include/hw/misc/empty_slot.h @@ -14,6 +14,7 @@ =20 #include "exec/hwaddr.h" =20 -void empty_slot_init(const char *name, hwaddr addr, uint64_t slot_size); +void empty_slot_init(Object *parent, const char *name, hwaddr addr, + uint64_t slot_size); =20 #endif diff --git a/include/hw/misc/sifive_e_prci.h b/include/hw/misc/sifive_e_prc= i.h index d0abd59f4b..6221e95d36 100644 --- a/include/hw/misc/sifive_e_prci.h +++ b/include/hw/misc/sifive_e_prci.h @@ -69,6 +69,6 @@ struct SiFiveEPRCIState { uint32_t plloutdiv; }; =20 -DeviceState *sifive_e_prci_create(hwaddr addr); +DeviceState *sifive_e_prci_create(Object *parent, hwaddr addr); =20 #endif diff --git a/include/hw/misc/sifive_test.h b/include/hw/misc/sifive_test.h index 85afd35263..fd079cfd4c 100644 --- a/include/hw/misc/sifive_test.h +++ b/include/hw/misc/sifive_test.h @@ -42,6 +42,6 @@ enum { FINISHER_RESET =3D 0x7777 }; =20 -DeviceState *sifive_test_create(hwaddr addr); +DeviceState *sifive_test_create(Object *parent, hwaddr addr); =20 #endif --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411277; cv=none; d=zohomail.com; s=zohoarc; b=LPSZImNF4XzMERmrdLJ0rRJezQxaCkfnEdkT+II78R6asZjAy7E6T9Ln2DVweFBZ745RZUcH/r2RYSCH9g5pRWDHfwOMUbX/se8Oss3RQHs7DKLjn3rOGKJliCUXepQ0c9xzl9Qgy/FF/XoUKxgDTEuDeSd5vmYi7CH/dup/V3A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411277; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=t0XKEdkEQnoymn3xwqQx1mU5l9aGlxL12WmIJdArOSw=; b=TjAZlOQ7KAMOwACm2TbasgxLfApL/5Q1id0180AbNC9DgDgvs4zEURZdX7muAexUL/kQT2nuTV9EaA7YXJcyxiXlfrj/xZ7xhlnvZ9RDqziPZ5Pjfkxfj9l7Kp0vynJMl0WMY9b845Y++cRWHO5hLx9vGnjaGUi6t/utjtbVbnw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411277009953.9696710199379; Sat, 18 Jul 2026 14:47:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCsW-0003pE-3P; Sat, 18 Jul 2026 17:47:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCsU-0003iu-EL; Sat, 18 Jul 2026 17:47:22 -0400 Received: from pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.246.1.125]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCsS-0003Ns-6s; Sat, 18 Jul 2026 17:47:22 -0400 Received: from ip-10-5-12-219.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.12.219]) by internal-pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:47:17 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.182:7605] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.0.115:2525] with esmtp (Farcaster) id b636f37e-c9ec-4c2e-aa14-2d755c4d6c4b; Sat, 18 Jul 2026 21:47:16 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA001.ant.amazon.com (10.250.64.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:47:16 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:47:06 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411240; x=1815947240; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=t0XKEdkEQnoymn3xwqQx1mU5l9aGlxL12WmIJdArOSw=; b=WWU2PTF/IbdwUSV27fJUE3HRvLCLCu6U4N5CAQ2FKdOU2N6YKxBSOWWX /piaP3Ygs7WZXDiErk0DA0XJU4u59+zs8POY5ylaqYd0Aiy9DcaT8HfRq HKW+KAim8vyvyuNg8dzN7cfN+RDF193NrdIIlckQiMGCw+3eg1RjM2rmD GC8zQrfCO0sC4T0ukWjyLvVy+tB1yl3zTxIgjOnD+kEqzbPkB9MiHHvfT DtoCL0mKYvRHk23fCbNsT/SGmBAsevTeZ74+Lj03BVFGQDc5t+q8H8jI4 Lg2bsSJsM3VjhtorBhwMhBNOW2YCqh51EOs5HTGJEeUOEl1qinCgE4WAE Q==; X-CSE-ConnectionGUID: y3CmZ3geSZWey8eqjedU9A== X-CSE-MsgGUID: RTOQEwvETdKuHrlO22aTow== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23927116" X-Farcaster-Flow-ID: b636f37e-c9ec-4c2e-aa14-2d755c4d6c4b From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 037/137] hw/scsi: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:12 +0000 Message-ID: <20260718213652.37673-38-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D046UWA004.ant.amazon.com (10.13.139.76) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.246.1.125; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411278579158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/scsi to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/scsi/lasi_ncr710.c:234 | qdev_new | parent | "scsi" | thread Object *par= ent as first arg; single caller in hw/hppa/machine.c board init passes OBJE= CT(machine) hw/scsi/ncr53c710.c:2379 | qdev_new | parent | "scsi" | thread Object *pare= nt as first arg; no in-tree callers, header updated hw/scsi/ncr53c710.c:2397 | qdev_new | parent | "scsi" | thread Object *pare= nt as first arg; no in-tree callers, header updated hw/scsi/scsi-bus.c:448 | qdev_new | OBJECT(bus) | name | collapse existing = object_property_add_child(OBJECT(bus), name, dev); keep dynamic legacy[%d] = name hw/scsi/spapr_vscsi.c:1238 | qdev_new | parent | "vscsi[*]" | thread Object= *parent as first arg; single caller in hw/ppc/spapr.c board init loop pass= es OBJECT(spapr) Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/hppa/machine.c | 2 +- hw/ppc/spapr.c | 2 +- hw/scsi/lasi_ncr710.c | 8 ++++---- hw/scsi/lasi_ncr710.h | 4 ++-- hw/scsi/ncr53c710.c | 15 ++++++++------- hw/scsi/ncr53c710.h | 7 ++++--- hw/scsi/scsi-bus.c | 5 ++--- hw/scsi/spapr_vscsi.c | 6 +++--- include/hw/ppc/spapr_vio.h | 2 +- 9 files changed, 26 insertions(+), 25 deletions(-) diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c index e50f9adf41..e3c9053bf2 100644 --- a/hw/hppa/machine.c +++ b/hw/hppa/machine.c @@ -631,7 +631,7 @@ static void machine_HP_715_init(MachineState *machine) 1)); /* SCSI disk setup. */ if (drive_get_max_bus(IF_SCSI) >=3D 0) { - dev =3D lasi_ncr710_init(addr_space, + dev =3D lasi_ncr710_init(OBJECT(machine), addr_space, translate(NULL, LASI_HPA_715 + 0x6000), qdev_get_gpio_in(lasi_dev, LASI_IRQ_SCSI_HP= A)); assert(dev); diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index e09b529ebc..91f9d873b8 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -3062,7 +3062,7 @@ static void spapr_machine_init(MachineState *machine) pci_init_nic_devices(phb->bus, NULL); =20 for (i =3D 0; i <=3D drive_get_max_bus(IF_SCSI); i++) { - spapr_vscsi_create(spapr->vio_bus); + spapr_vscsi_create(OBJECT(spapr), spapr->vio_bus); } =20 /* Graphics */ diff --git a/hw/scsi/lasi_ncr710.c b/hw/scsi/lasi_ncr710.c index e1a1f68aaa..d40bc62157 100644 --- a/hw/scsi/lasi_ncr710.c +++ b/hw/scsi/lasi_ncr710.c @@ -224,18 +224,18 @@ void lasi_ncr710_handle_legacy_cmdline(DeviceState *l= asi_dev) } } =20 -DeviceState *lasi_ncr710_init(MemoryRegion *addr_space, hwaddr hpa, - qemu_irq irq) +DeviceState *lasi_ncr710_init(Object *parent, MemoryRegion *addr_space, + hwaddr hpa, qemu_irq irq) { DeviceState *dev; LasiNCR710State *s; SysBusDevice *sbd; =20 - dev =3D qdev_new_orphan(TYPE_LASI_NCR710); + dev =3D qdev_new(parent, "scsi", TYPE_LASI_NCR710); s =3D LASI_NCR710(dev); sbd =3D SYS_BUS_DEVICE(dev); s->lasi_irq =3D irq; - sysbus_realize_and_unref(sbd, &error_fatal); + sysbus_realize(sbd, &error_fatal); memory_region_add_subregion(addr_space, hpa, sysbus_mmio_get_region(sbd, 0)); return dev; diff --git a/hw/scsi/lasi_ncr710.h b/hw/scsi/lasi_ncr710.h index 450fb7e1c3..e963a6511f 100644 --- a/hw/scsi/lasi_ncr710.h +++ b/hw/scsi/lasi_ncr710.h @@ -48,8 +48,8 @@ typedef struct LasiNCR710State { NCR710State ncr710; } LasiNCR710State; =20 -DeviceState *lasi_ncr710_init(MemoryRegion *addr_space, hwaddr hpa, - qemu_irq irq); +DeviceState *lasi_ncr710_init(Object *parent, MemoryRegion *addr_space, + hwaddr hpa, qemu_irq irq); void lasi_ncr710_handle_legacy_cmdline(DeviceState *lasi_dev); =20 #endif diff --git a/hw/scsi/ncr53c710.c b/hw/scsi/ncr53c710.c index 54ce2df641..633a76c70b 100644 --- a/hw/scsi/ncr53c710.c +++ b/hw/scsi/ncr53c710.c @@ -2371,22 +2371,23 @@ static const VMStateDescription vmstate_sysbus_ncr7= 10 =3D { } }; =20 -DeviceState *ncr710_device_create_sysbus(hwaddr addr, qemu_irq irq) +DeviceState *ncr710_device_create_sysbus(Object *parent, hwaddr addr, + qemu_irq irq) { DeviceState *dev; SysBusDevice *sysbus; =20 - dev =3D qdev_new_orphan(TYPE_SYSBUS_NCR710_SCSI); + dev =3D qdev_new(parent, "scsi", TYPE_SYSBUS_NCR710_SCSI); sysbus =3D SYS_BUS_DEVICE(dev); =20 - qdev_realize_and_unref(dev, NULL, &error_abort); + qdev_realize(dev, NULL, &error_abort); sysbus_mmio_map(sysbus, 0, addr); sysbus_connect_irq(sysbus, 0, irq); return dev; } =20 -DeviceState *ncr53c710_init(MemoryRegion *address_space, hwaddr addr, - qemu_irq irq) +DeviceState *ncr53c710_init(Object *parent, MemoryRegion *address_space, + hwaddr addr, qemu_irq irq) { DeviceState *dev; SysBusDevice *sysbus; @@ -2394,10 +2395,10 @@ DeviceState *ncr53c710_init(MemoryRegion *address_s= pace, hwaddr addr, =20 /* trace_ncr710_device_init(addr); */ =20 - dev =3D qdev_new_orphan(TYPE_SYSBUS_NCR710_SCSI); + dev =3D qdev_new(parent, "scsi", TYPE_SYSBUS_NCR710_SCSI); sysbus =3D SYS_BUS_DEVICE(dev); =20 - qdev_realize_and_unref(dev, NULL, &error_abort); + qdev_realize(dev, NULL, &error_abort); sysbus_mmio_map(sysbus, 0, addr); sysbus_connect_irq(sysbus, 0, irq); =20 diff --git a/hw/scsi/ncr53c710.h b/hw/scsi/ncr53c710.h index 00b6a01577..6e466d6a36 100644 --- a/hw/scsi/ncr53c710.h +++ b/hw/scsi/ncr53c710.h @@ -229,9 +229,10 @@ static inline SysBusNCR710State *sysbus_from_ncr710(NC= R710State *s) return container_of(s, SysBusNCR710State, ncr710); } =20 -DeviceState *ncr53c710_init(MemoryRegion *address_space, hwaddr addr, - qemu_irq irq); -DeviceState *ncr710_device_create_sysbus(hwaddr addr, qemu_irq irq); +DeviceState *ncr53c710_init(Object *parent, MemoryRegion *address_space, + hwaddr addr, qemu_irq irq); +DeviceState *ncr710_device_create_sysbus(Object *parent, hwaddr addr, + qemu_irq irq); void ncr710_reg_write(void *opaque, hwaddr addr, uint64_t val, unsigned si= ze); uint64_t ncr710_reg_read(void *opaque, hwaddr addr, unsigned size); void ncr710_soft_reset(NCR710State *s); diff --git a/hw/scsi/scsi-bus.c b/hw/scsi/scsi-bus.c index 806a20baee..bc7cfea6ed 100644 --- a/hw/scsi/scsi-bus.c +++ b/hw/scsi/scsi-bus.c @@ -445,9 +445,8 @@ SCSIDevice *scsi_bus_legacy_add_drive(SCSIBus *bus, Blo= ckBackend *blk, driver =3D "scsi-hd"; } } - dev =3D qdev_new_orphan(driver); name =3D g_strdup_printf("legacy[%d]", unit); - object_property_add_child(OBJECT(bus), name, OBJECT(dev)); + dev =3D qdev_new(OBJECT(bus), name, driver); g_free(name); =20 s =3D SCSI_DEVICE(dev); @@ -473,7 +472,7 @@ SCSIDevice *scsi_bus_legacy_add_drive(SCSIBus *bus, Blo= ckBackend *blk, return NULL; } =20 - if (!qdev_realize_and_unref(dev, &bus->qbus, errp)) { + if (!qdev_realize(dev, &bus->qbus, errp)) { object_unparent(OBJECT(dev)); return NULL; } diff --git a/hw/scsi/spapr_vscsi.c b/hw/scsi/spapr_vscsi.c index 492d7d18a2..95cd21ffbb 100644 --- a/hw/scsi/spapr_vscsi.c +++ b/hw/scsi/spapr_vscsi.c @@ -1231,13 +1231,13 @@ static void spapr_vscsi_realize(SpaprVioDevice *dev= , Error **errp) qbus_set_hotplug_handler(BUS(&s->bus), NULL); } =20 -void spapr_vscsi_create(SpaprVioBus *bus) +void spapr_vscsi_create(Object *parent, SpaprVioBus *bus) { DeviceState *dev; =20 - dev =3D qdev_new_orphan("spapr-vscsi"); + dev =3D qdev_new(parent, "vscsi[*]", "spapr-vscsi"); =20 - qdev_realize_and_unref(dev, &bus->bus, &error_fatal); + qdev_realize(dev, &bus->bus, &error_fatal); scsi_bus_legacy_handle_cmdline(&VIO_SPAPR_VSCSI_DEVICE(dev)->bus); } =20 diff --git a/include/hw/ppc/spapr_vio.h b/include/hw/ppc/spapr_vio.h index 0ea0dbae8b..72baef6919 100644 --- a/include/hw/ppc/spapr_vio.h +++ b/include/hw/ppc/spapr_vio.h @@ -139,7 +139,7 @@ SpaprVioDevice *vty_lookup(SpaprMachineState *spapr, ta= rget_ulong reg); void vty_putchars(SpaprVioDevice *sdev, uint8_t *buf, int len); void spapr_vty_create(SpaprVioBus *bus, Chardev *chardev); void spapr_vlan_create(SpaprVioBus *bus, NICInfo *nd); -void spapr_vscsi_create(SpaprVioBus *bus); +void spapr_vscsi_create(Object *parent, SpaprVioBus *bus); =20 SpaprVioDevice *spapr_vty_get_default(SpaprVioBus *bus); =20 --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411262; cv=none; d=zohomail.com; s=zohoarc; b=XkoUGDUEiGP7jaEj/AVlLNFNlU4pkHjrRmrjiQXlapsLMd0GKg8bnb7x5Ot7W5h4zoHooSuszQajrVjA4gZCb5WmQKkwG1ZCeMuVU1Vnv11L39sAk+gbAL+rxnRZploAYSXnX8MkgCi+qg1zIdlL06vH2DhTOQuKv/qsnRgTu4M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411262; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=DcTiWLcvlC8/abn8hIJ99J45gxy0GpztHbEenjChIKk=; b=Ss61qggjd/t/MG9c+9tplinADiUms088fVkX7zfDrV9y/tV8Y9VGTudBsMIT30pBKXIcKIJt0M2am6cSPuWcdKnUgLaDMHtv5WvK715Tm87rwOQHVkGq1liD8d6XGW5ADccVlP9IlNb9oqC/a+nzQMY5Dol/wqS87z05kVahAoU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411262429114.45049067645448; Sat, 18 Jul 2026 14:47:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCsf-000449-58; Sat, 18 Jul 2026 17:47:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCse-00043E-BN; Sat, 18 Jul 2026 17:47:32 -0400 Received: from pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.42.203.116]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCsb-0003OR-US; Sat, 18 Jul 2026 17:47:32 -0400 Received: from ip-10-5-9-48.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.9.48]) by internal-pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:47:26 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.53:21661] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.35.17:2525] with esmtp (Farcaster) id c129490f-c337-4623-a7af-cf9e44a9afe6; Sat, 18 Jul 2026 21:47:26 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC001.ant.amazon.com (10.250.64.174) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:47:25 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:47:16 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411249; x=1815947249; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=DcTiWLcvlC8/abn8hIJ99J45gxy0GpztHbEenjChIKk=; b=QY6ntlIsGxkNnRu054/zoDSI+RXb3DUN60GxDxWeRLyIgl1x33Jblx37 4TlUNr40hpnQtgZ6JJIC/7xquPVyVJBF/OmWBBZAYa6RDHoPqpkRuaWMx VAlC65JEORVM6JrxrLhSSvr+HPx4BYgflYWvnc2sBELw8ugMHd+eSZgXN hz4J2XIblVR3Hx0Gbj/I0jxn0Om+9qFgBr6HskiB3Jr8KYpWG2189YKBy UKnJ8yy171Ph1LctDGCa3fyZN0AgWRlUNAWXpNiw49crMou7aj5ANbBta ltb0ZAysDe9+4I41+LXNpIw4idCUgeP5pIhh1W0PnwwpMAj4C044tCUXg w==; X-CSE-ConnectionGUID: 1DWh0IeFTAaSpNKTd7rI4A== X-CSE-MsgGUID: jze1tS/VQA+C23vJh5Of4Q== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23939685" X-Farcaster-Flow-ID: c129490f-c337-4623-a7af-cf9e44a9afe6 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 038/137] hw/net: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:13 +0000 Message-ID: <20260718213652.37673-39-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D046UWA004.ant.amazon.com (10.13.139.76) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.42.203.116; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411264620158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/net to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/net/lan9118.c:1342 | qdev_new | parent | "eth" | thread Object *parent a= s first arg; 5 board-init callers pass OBJECT(machine) hw/net/smc91c111.c:957 | qdev_new | parent | "eth" | thread Object *parent = as first arg; 3 board-init callers pass OBJECT(machine) hw/net/spapr_llan.c:374 | qdev_new | parent | "vlan[*]" | thread Object *pa= rent as first arg; single caller in hw/ppc/spapr.c board-init loop passes O= BJECT(spapr) hw/net/xen_nic.c:622 | qdev_new | ORPHAN-JUSTIFIED | - | XenBackendOps.crea= te hotplug callback driven by xenstore watch; dynamic device with no board = owner (same pattern as xen-block/xen_console) Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/arm/integratorcp.c | 2 +- hw/arm/kzm.c | 2 +- hw/arm/mps2.c | 2 +- hw/arm/mps3r.c | 2 +- hw/arm/realview.c | 4 ++-- hw/arm/versatilepb.c | 2 +- hw/arm/vexpress.c | 2 +- hw/net/lan9118.c | 6 +++--- hw/net/smc91c111.c | 6 +++--- hw/net/spapr_llan.c | 6 +++--- hw/ppc/spapr.c | 2 +- include/hw/net/lan9118.h | 2 +- include/hw/net/smc91c111.h | 2 +- include/hw/ppc/spapr_vio.h | 2 +- 14 files changed, 21 insertions(+), 21 deletions(-) diff --git a/hw/arm/integratorcp.c b/hw/arm/integratorcp.c index 3df488921a..163012a7bf 100644 --- a/hw/arm/integratorcp.c +++ b/hw/arm/integratorcp.c @@ -670,7 +670,7 @@ static void integratorcp_init(MachineState *machine) sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[25]); =20 if (qemu_find_nic_info("smc91c111", true, NULL)) { - smc91c111_init(0xc8000000, pic[27]); + smc91c111_init(OBJECT(machine), 0xc8000000, pic[27]); } =20 dev =3D qdev_new_orphan("pl110"); diff --git a/hw/arm/kzm.c b/hw/arm/kzm.c index 168ecf35d0..de9919c8cb 100644 --- a/hw/arm/kzm.c +++ b/hw/arm/kzm.c @@ -115,7 +115,7 @@ static void kzm_init(MachineState *machine) } =20 if (qemu_find_nic_info("lan9118", true, NULL)) { - lan9118_init(KZM_LAN9118_ADDR, + lan9118_init(OBJECT(machine), KZM_LAN9118_ADDR, qdev_get_gpio_in(DEVICE(&s->soc.avic), 52)); } =20 diff --git a/hw/arm/mps2.c b/hw/arm/mps2.c index 5a0384a412..e646c7c71e 100644 --- a/hw/arm/mps2.c +++ b/hw/arm/mps2.c @@ -461,7 +461,7 @@ static void mps2_common_init(MachineState *machine) /* In hardware this is a LAN9220; the LAN9118 is software compatible * except that it doesn't support the checksum-offload feature. */ - lan9118_init(mmc->ethernet_base, + lan9118_init(OBJECT(machine), mmc->ethernet_base, qdev_get_gpio_in(armv7m, mmc->fpga_type =3D=3D FPGA_AN511 ? 47 : = 13)); =20 diff --git a/hw/arm/mps3r.c b/hw/arm/mps3r.c index caad820d3b..8e249c9b9d 100644 --- a/hw/arm/mps3r.c +++ b/hw/arm/mps3r.c @@ -549,7 +549,7 @@ static void mps3r_common_init(MachineState *machine) * In hardware this is a LAN9220; the LAN9118 is software compatible * except that it doesn't support the checksum-offload feature. */ - lan9118_init(0xe0300000, + lan9118_init(OBJECT(machine), 0xe0300000, qdev_get_gpio_in(gicdev, 18)); =20 create_unimplemented_device("usb", 0xe0301000, 0x1000); diff --git a/hw/arm/realview.c b/hw/arm/realview.c index f37ddf8073..f51730c487 100644 --- a/hw/arm/realview.c +++ b/hw/arm/realview.c @@ -309,9 +309,9 @@ static void realview_init(MachineState *machine, =20 if (qemu_find_nic_info(is_pb ? "lan9118" : "smc91c111", true, NULL)) { if (is_pb) { - lan9118_init(0x4e000000, pic[28]); + lan9118_init(OBJECT(machine), 0x4e000000, pic[28]); } else { - smc91c111_init(0x4e000000, pic[28]); + smc91c111_init(OBJECT(machine), 0x4e000000, pic[28]); } } =20 diff --git a/hw/arm/versatilepb.c b/hw/arm/versatilepb.c index dcc7b7debd..5de99cb854 100644 --- a/hw/arm/versatilepb.c +++ b/hw/arm/versatilepb.c @@ -265,7 +265,7 @@ static void versatile_init(MachineState *machine, int b= oard_id) pci_bus =3D (PCIBus *)qdev_get_child_bus(dev, "pci"); =20 if (qemu_find_nic_info("smc91c111", true, NULL)) { - smc91c111_init(0x10010000, sic[25]); + smc91c111_init(OBJECT(machine), 0x10010000, sic[25]); } pci_init_nic_devices(pci_bus, "rtl8139"); =20 diff --git a/hw/arm/vexpress.c b/hw/arm/vexpress.c index ffd3c52d4f..5cbb2c44cb 100644 --- a/hw/arm/vexpress.c +++ b/hw/arm/vexpress.c @@ -694,7 +694,7 @@ static void vexpress_common_init(MachineState *machine) =20 /* 0x4e000000 LAN9118 Ethernet */ if (qemu_find_nic_info("lan9118", true, NULL)) { - lan9118_init(map[VE_ETHERNET], pic[15]); + lan9118_init(OBJECT(machine), map[VE_ETHERNET], pic[15]); } =20 /* VE_USB: not modelled */ diff --git a/hw/net/lan9118.c b/hw/net/lan9118.c index 87213c0d8d..91c3533702 100644 --- a/hw/net/lan9118.c +++ b/hw/net/lan9118.c @@ -1334,15 +1334,15 @@ static void lan9118_register_types(void) =20 /* Legacy helper function. Should go away when machine config files are implemented. */ -void lan9118_init(uint32_t base, qemu_irq irq) +void lan9118_init(Object *parent, uint32_t base, qemu_irq irq) { DeviceState *dev; SysBusDevice *s; =20 - dev =3D qdev_new_orphan(TYPE_LAN9118); + dev =3D qdev_new(parent, "eth", TYPE_LAN9118); qemu_configure_nic_device(dev, true, NULL); s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); sysbus_mmio_map(s, 0, base); sysbus_connect_irq(s, 0, irq); } diff --git a/hw/net/smc91c111.c b/hw/net/smc91c111.c index 6186d88717..85f3d4d34a 100644 --- a/hw/net/smc91c111.c +++ b/hw/net/smc91c111.c @@ -949,15 +949,15 @@ static void smc91c111_register_types(void) =20 /* Legacy helper function. Should go away when machine config files are implemented. */ -void smc91c111_init(uint32_t base, qemu_irq irq) +void smc91c111_init(Object *parent, uint32_t base, qemu_irq irq) { DeviceState *dev; SysBusDevice *s; =20 - dev =3D qdev_new_orphan(TYPE_SMC91C111); + dev =3D qdev_new(parent, "eth", TYPE_SMC91C111); qemu_configure_nic_device(dev, true, NULL); s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); sysbus_mmio_map(s, 0, base); sysbus_connect_irq(s, 0, irq); } diff --git a/hw/net/spapr_llan.c b/hw/net/spapr_llan.c index f10ea64798..1d5637f294 100644 --- a/hw/net/spapr_llan.c +++ b/hw/net/spapr_llan.c @@ -367,15 +367,15 @@ static void spapr_vlan_instance_finalize(Object *obj) } } =20 -void spapr_vlan_create(SpaprVioBus *bus, NICInfo *nd) +void spapr_vlan_create(Object *parent, SpaprVioBus *bus, NICInfo *nd) { DeviceState *dev; =20 - dev =3D qdev_new_orphan("spapr-vlan"); + dev =3D qdev_new(parent, "vlan[*]", "spapr-vlan"); =20 qdev_set_nic_properties(dev, nd); =20 - qdev_realize_and_unref(dev, &bus->bus, &error_fatal); + qdev_realize(dev, &bus->bus, &error_fatal); } =20 static int spapr_vlan_devnode(SpaprVioDevice *dev, void *fdt, int node_off) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 91f9d873b8..b81db9e8f3 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -3056,7 +3056,7 @@ static void spapr_machine_init(MachineState *machine) phb =3D spapr_create_default_phb(); =20 while ((nd =3D qemu_find_nic_info("spapr-vlan", true, "ibmveth"))) { - spapr_vlan_create(spapr->vio_bus, nd); + spapr_vlan_create(OBJECT(spapr), spapr->vio_bus, nd); } =20 pci_init_nic_devices(phb->bus, NULL); diff --git a/include/hw/net/lan9118.h b/include/hw/net/lan9118.h index 4bf9da7a63..b199f1912f 100644 --- a/include/hw/net/lan9118.h +++ b/include/hw/net/lan9118.h @@ -15,6 +15,6 @@ =20 #define TYPE_LAN9118 "lan9118" =20 -void lan9118_init(uint32_t, qemu_irq); +void lan9118_init(Object *parent, uint32_t, qemu_irq); =20 #endif diff --git a/include/hw/net/smc91c111.h b/include/hw/net/smc91c111.h index dba32a233f..788f12678e 100644 --- a/include/hw/net/smc91c111.h +++ b/include/hw/net/smc91c111.h @@ -13,6 +13,6 @@ =20 #include "net/net.h" =20 -void smc91c111_init(uint32_t, qemu_irq); +void smc91c111_init(Object *parent, uint32_t, qemu_irq); =20 #endif diff --git a/include/hw/ppc/spapr_vio.h b/include/hw/ppc/spapr_vio.h index 72baef6919..fcb29aebff 100644 --- a/include/hw/ppc/spapr_vio.h +++ b/include/hw/ppc/spapr_vio.h @@ -138,7 +138,7 @@ int spapr_vio_send_crq(SpaprVioDevice *dev, uint8_t *cr= q); SpaprVioDevice *vty_lookup(SpaprMachineState *spapr, target_ulong reg); void vty_putchars(SpaprVioDevice *sdev, uint8_t *buf, int len); void spapr_vty_create(SpaprVioBus *bus, Chardev *chardev); -void spapr_vlan_create(SpaprVioBus *bus, NICInfo *nd); +void spapr_vlan_create(Object *parent, SpaprVioBus *bus, NICInfo *nd); void spapr_vscsi_create(Object *parent, SpaprVioBus *bus); =20 SpaprVioDevice *spapr_vty_get_default(SpaprVioBus *bus); --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411293; cv=none; d=zohomail.com; s=zohoarc; b=FyjT92mTxs0KEfTpiP/ZK0vV3scc6WCzLIUS8dUb9c6TSVcHXThdufYYdgE1MypUKlMjJEoXntC1I6sIHy1Jfem0+66YrIywOt7hNxzIBSaqD0tNT1lSO9p+kfVH11eOg90alv0ibsburloZJbYTkcgsyHuVyT6MXu3nLo6NMec= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411293; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=A0uhA2TQ/67sNL6YBQLGMXY3oNdmgpneOPifszqrkYM=; b=bTD+eEZpv82Q0eBBR5nRO4P/SRq+n9Pvdg5fap/1id1N1TsOZ5VCZ7a79Iar2R7N2MYisEz/Yoii9Eq2BL6yDrSgd8Wd7JyfJwkOp02HGAPnQy2NJ6CSKroa4NlBYuHRhbyXBRri3T0ZYwqp6eXW3cbOqyNY7WeEE93CKY9tK/c= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411293263295.2375854030008; Sat, 18 Jul 2026 14:48:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCtE-0005Vd-Tn; Sat, 18 Jul 2026 17:48:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCtA-0005SZ-5W; Sat, 18 Jul 2026 17:48:04 -0400 Received: from pdx-out-004.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.246.77.92]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCt7-0003QN-W5; Sat, 18 Jul 2026 17:48:03 -0400 Received: from ip-10-5-6-203.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.6.203]) by internal-pdx-out-004.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:47:57 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.48:23502] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.58.199:2525] with esmtp (Farcaster) id 1c6d06f7-c4d4-4a78-aa21-e3d85774003b; Sat, 18 Jul 2026 21:47:57 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB002.ant.amazon.com (10.250.64.231) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:47:57 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:47:47 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411282; x=1815947282; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=A0uhA2TQ/67sNL6YBQLGMXY3oNdmgpneOPifszqrkYM=; b=mVU1zFJwfusnLMZV27Hdzd9aDg0qQePyQ7QSy1Yg6vfRz8/LFQVkpHGb sGgfI8hGzaV4e1VGCIRpcfj9Uws1O62dTnRIQtORuJUhVI21c5+Sf24KU a7umPFZdNpHfXLoJ4X4VkSUor5lF4pdR0PRqmQz19TzGYu35pUfGjF3LE O5fwOoabxc6un2dLp8UlPcR+DLSmOBSILZvixCKlfNkc8Ilm9TPeI46mD 1Iebm42LksEQ3uque2ivsHFy1NDP0r++9CwU58R9hICHxp4Y0y7Ksorgk 9f6o6OiT0Vyxve+d/hDQ44uF85d3yGxWzen8gqLeNICWMy/nSpixnMDjb Q==; X-CSE-ConnectionGUID: I7ClZN3cSJOtUP2c4KKkLQ== X-CSE-MsgGUID: 7AITlsgPT+SPTMg/pkYSgQ== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23917268" X-Farcaster-Flow-ID: 1c6d06f7-c4d4-4a78-aa21-e3d85774003b From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 039/137] hw/ide: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:14 +0000 Message-ID: <20260718213652.37673-40-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D042UWB002.ant.amazon.com (10.13.139.175) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.246.77.92; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-004.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411295098158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/ide to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/ide/ide-bus.c:78 | qdev_new | OBJECT(bus->qbus.parent) | "drive[*]" | dr= ive is child of the IDE controller device that owns the bus; helper called = from many controllers so use bus->qbus.parent hw/ide/isa.c:87 | isa_new | parent | "ide[*]" | helper called from isapc bo= ard init loop; thread Object *parent through isa_ide_init() Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/i386/isapc.c | 3 ++- hw/ide/ide-bus.c | 5 +++-- hw/ide/isa.c | 7 ++++--- include/hw/ide/isa.h | 3 ++- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/hw/i386/isapc.c b/hw/i386/isapc.c index 655ec599b5..c2a3f23f2c 100644 --- a/hw/i386/isapc.c +++ b/hw/i386/isapc.c @@ -142,7 +142,8 @@ static void pc_init_isa(MachineState *machine) for (i =3D 0; i < MAX_IDE_BUS; i++) { ISADevice *dev; char busname[] =3D "ide.0"; - dev =3D isa_ide_init(isa_bus, ide_iobase[i], ide_iobase2[i], + dev =3D isa_ide_init(OBJECT(machine), isa_bus, + ide_iobase[i], ide_iobase2[i], ide_irq[i], hd[MAX_IDE_DEVS * i], hd[MAX_IDE_DEVS * i + 1]= ); /* diff --git a/hw/ide/ide-bus.c b/hw/ide/ide-bus.c index 40ba94235f..4473709a04 100644 --- a/hw/ide/ide-bus.c +++ b/hw/ide/ide-bus.c @@ -75,11 +75,12 @@ IDEDevice *ide_bus_create_drive(IDEBus *bus, int unit, = DriveInfo *drive) { DeviceState *dev; =20 - dev =3D qdev_new_orphan(drive->media_cd ? "ide-cd" : "ide-hd"); + dev =3D qdev_new(OBJECT(bus->qbus.parent), "drive[*]", + drive->media_cd ? "ide-cd" : "ide-hd"); qdev_prop_set_uint32(dev, "unit", unit); qdev_prop_set_drive_err(dev, "drive", blk_by_legacy_dinfo(drive), &error_fatal); - qdev_realize_and_unref(dev, &bus->qbus, &error_fatal); + qdev_realize(dev, &bus->qbus, &error_fatal); return DO_UPCAST(IDEDevice, qdev, dev); } =20 diff --git a/hw/ide/isa.c b/hw/ide/isa.c index c9c997344b..37457be035 100644 --- a/hw/ide/isa.c +++ b/hw/ide/isa.c @@ -77,19 +77,20 @@ static void isa_ide_realizefn(DeviceState *dev, Error *= *errp) ide_bus_register_restart_cb(&s->bus); } =20 -ISADevice *isa_ide_init(ISABus *bus, int iobase, int iobase2, int irqnum, +ISADevice *isa_ide_init(Object *parent, ISABus *bus, + int iobase, int iobase2, int irqnum, DriveInfo *hd0, DriveInfo *hd1) { DeviceState *dev; ISADevice *isadev; ISAIDEState *s; =20 - isadev =3D isa_new_orphan(TYPE_ISA_IDE); + isadev =3D isa_new(parent, "ide[*]", TYPE_ISA_IDE); dev =3D DEVICE(isadev); qdev_prop_set_uint32(dev, "iobase", iobase); qdev_prop_set_uint32(dev, "iobase2", iobase2); qdev_prop_set_uint32(dev, "irq", irqnum); - isa_realize_and_unref(isadev, bus, &error_fatal); + qdev_realize(dev, BUS(bus), &error_fatal); =20 s =3D ISA_IDE(dev); if (hd0) { diff --git a/include/hw/ide/isa.h b/include/hw/ide/isa.h index 1cd0ff1fa6..18fe363a1a 100644 --- a/include/hw/ide/isa.h +++ b/include/hw/ide/isa.h @@ -14,7 +14,8 @@ #define TYPE_ISA_IDE "isa-ide" OBJECT_DECLARE_SIMPLE_TYPE(ISAIDEState, ISA_IDE) =20 -ISADevice *isa_ide_init(ISABus *bus, int iobase, int iobase2, int irqnum, +ISADevice *isa_ide_init(Object *parent, ISABus *bus, + int iobase, int iobase2, int irqnum, DriveInfo *hd0, DriveInfo *hd1); =20 #endif --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411307; cv=none; d=zohomail.com; s=zohoarc; b=EzfVc1Yk43jJYW+wCy9w/yCAV9v4baY7XVoDmdsygJ/GjtI79AbXt8eK2WhWH8DNvqPdSFx483+gdcyTrGNSaNxg2nmzvG/B1DpnqjI5cjPFHh9BdoBhjEiLQcuywM03eZYYC+3AGhgQuE24ZhaIdcTmKApIhlhu2exZqNcF1ss= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411307; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=UhLAmzyz2vuayR3+tp7eAX58tqrCnDdM+m/9YQbf8r8=; b=eKgMRIJA3kWYUzqZ/6bz2cXswWJhZZhpXWtMGCrK+eoqMjy4fy76b5PqjHI2GkywyVrr+uj3aH8uk0IyG2/uD1UWr+jR9eS/myewtrgAZClFr6mC3ECcqbH2qfptaNDopVANMKWYIqRfFcAMDyFobneMvF0SD9S6MhHWY85T3w0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411307524149.80016888302612; Sat, 18 Jul 2026 14:48:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCtO-0005ig-4o; Sat, 18 Jul 2026 17:48:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCtI-0005fn-Ui; Sat, 18 Jul 2026 17:48:13 -0400 Received: from pdx-out-006.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.26.1.71]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCtG-0003Qn-Vf; Sat, 18 Jul 2026 17:48:12 -0400 Received: from ip-10-5-0-115.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.0.115]) by internal-pdx-out-006.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:48:07 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.234:10748] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.40.177:2525] with esmtp (Farcaster) id 3ce8bbf2-eab3-4647-a35a-bbc71a629317; Sat, 18 Jul 2026 21:48:06 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA002.ant.amazon.com (10.250.64.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:48:06 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:47:57 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411290; x=1815947290; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=UhLAmzyz2vuayR3+tp7eAX58tqrCnDdM+m/9YQbf8r8=; b=tBHOpyMgAo84wLJNknil7aKne5qO9+8UoAYIAm/4ydSITHJdVoyB20c8 82l/XRMOuqoNumswtnvjq6FsSfPXAX5x1g0RUrgiZIdyHIlUuWa3ujmEV VmbqWwQsFG9WxsjHJacisZBjWX3jCcHgcRK8gpMXvR3vr/7gPFSHvNrqS WVG+L8Lcu6BR78VZ/sApqil1vh4XphytA+lOnGPpbyWIXZnDncCVOD0p5 5iS1qSJ9FjtNn7chRr5QbnQ0nnXmmtQYvpgEolO8RbeXZWm4priEVPbIS OkJKJP2AtsMmyxZcfm0A/8uh9czKkCk9OA+8O7F898pbXkfOTypsjfbr4 A==; X-CSE-ConnectionGUID: a3KoWJ7wRYyCYSTV3eSg2A== X-CSE-MsgGUID: 8gSd0AYqT2KimmaKDerDLg== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23944067" X-Farcaster-Flow-ID: 3ce8bbf2-eab3-4647-a35a-bbc71a629317 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 040/137] hw/i3c: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:15 +0000 Message-ID: <20260718213652.37673-41-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D042UWB002.ant.amazon.com (10.13.139.175) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.26.1.71; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-006.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411308912158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/i3c to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/i3c/core.c:550 | qdev_new | parent | id | public helper; thread Object *= parent + const char *id through i3c_target_new() and its caller i3c_target_= create_simple() hw/i3c/core.c:626 | i2c_slave_new | parent | id | public helper; thread Obj= ect *parent + const char *id through legacy_i2c_device_create_simple() Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/i3c/core.c | 19 +++++++++++-------- include/hw/i3c/i3c.h | 9 ++++++--- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/hw/i3c/core.c b/hw/i3c/core.c index 469d66f1fb..23b32290e5 100644 --- a/hw/i3c/core.c +++ b/hw/i3c/core.c @@ -542,12 +542,13 @@ static bool i3c_addr_is_rsvd(uint8_t addr) return is_rsvd[addr]; } =20 -I3CTarget *i3c_target_new(const char *name, uint8_t addr, uint8_t dcr, +I3CTarget *i3c_target_new(Object *parent, const char *id, + const char *name, uint8_t addr, uint8_t dcr, uint8_t bcr, uint64_t pid) { DeviceState *dev; =20 - dev =3D qdev_new_orphan(name); + dev =3D qdev_new(parent, id, name); qdev_prop_set_uint8(dev, "static-address", addr); qdev_prop_set_uint8(dev, "dcr", dcr); qdev_prop_set_uint8(dev, "bcr", bcr); @@ -566,12 +567,13 @@ bool i3c_target_realize_and_unref(I3CTarget *dev, I3C= Bus *bus, Error **errp) return qdev_realize_and_unref(&dev->parent_obj, &bus->parent_obj, errp= ); } =20 -I3CTarget *i3c_target_create_simple(I3CBus *bus, const char *name, uint8_t= addr, +I3CTarget *i3c_target_create_simple(Object *parent, const char *id, + I3CBus *bus, const char *name, uint8_t= addr, uint8_t dcr, uint8_t bcr, uint64_t pid) { - I3CTarget *dev =3D i3c_target_new(name, addr, dcr, bcr, pid); + I3CTarget *dev =3D i3c_target_new(parent, id, name, addr, dcr, bcr, pi= d); dev->address =3D 0; - i3c_target_realize_and_unref(dev, bus, &error_abort); + qdev_realize(DEVICE(dev), BUS(bus), &error_abort); =20 return dev; } @@ -620,12 +622,13 @@ void legacy_i2c_end_transfer(I3CBus *bus) i2c_end_transfer(bus->i2c_bus); } =20 -I2CSlave *legacy_i2c_device_create_simple(I3CBus *bus, const char *name, +I2CSlave *legacy_i2c_device_create_simple(Object *parent, const char *id, + I3CBus *bus, const char *name, uint8_t addr) { - I2CSlave *dev =3D i2c_slave_new_orphan(name, addr); + I2CSlave *dev =3D i2c_slave_new(parent, id, name, addr); =20 - i2c_slave_realize_and_unref(dev, bus->i2c_bus, &error_abort); + qdev_realize(DEVICE(dev), BUS(bus->i2c_bus), &error_abort); return dev; } =20 diff --git a/include/hw/i3c/i3c.h b/include/hw/i3c/i3c.h index dcf8d9b143..d0edf7d8bd 100644 --- a/include/hw/i3c/i3c.h +++ b/include/hw/i3c/i3c.h @@ -257,7 +257,8 @@ int legacy_i2c_start_transfer(I3CBus *bus, uint8_t addr= ess, bool is_recv); int legacy_i2c_start_recv(I3CBus *bus, uint8_t address); int legacy_i2c_start_send(I3CBus *bus, uint8_t address); void legacy_i2c_end_transfer(I3CBus *bus); -I2CSlave *legacy_i2c_device_create_simple(I3CBus *bus, const char *name, +I2CSlave *legacy_i2c_device_create_simple(Object *parent, const char *id, + I3CBus *bus, const char *name, uint8_t addr); =20 /** @@ -265,7 +266,8 @@ I2CSlave *legacy_i2c_device_create_simple(I3CBus *bus, = const char *name, * * The target returned from this function still needs to be realized. */ -I3CTarget *i3c_target_new(const char *name, uint8_t addr, uint8_t dcr, +I3CTarget *i3c_target_new(Object *parent, const char *id, + const char *name, uint8_t addr, uint8_t dcr, uint8_t bcr, uint64_t pid); =20 /** @@ -274,7 +276,8 @@ I3CTarget *i3c_target_new(const char *name, uint8_t add= r, uint8_t dcr, * Create the target, initialize it, put it on the specified I3C bus, and * realize it. */ -I3CTarget *i3c_target_create_simple(I3CBus *bus, const char *name, +I3CTarget *i3c_target_create_simple(Object *parent, const char *id, + I3CBus *bus, const char *name, uint8_t addr, uint8_t dcr, uint8_t bcr, uint64_t pid); =20 --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411329; cv=none; d=zohomail.com; s=zohoarc; b=INw7ecvSoXUKPN9FP5bahPwHUT5mUSeTj1fZrzAjyTusB3Ciz9XWXI3RSWn5vHgOPRnM5N+h9Ih2IC++MvhqH/R66gDnD0g9uW2FIl9FyQJhkRSAAThBlKAQgJ9EOQaoxXKoHW68OYOBSLOj+NSZaRH91XnnAETtY9swvx22OY4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411329; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=rGAGY0Wi6cyaSOfwgMEuCJdmHdtO2xjhFVJiVN2futs=; b=YI1FiU4LVKm6UqlspcSBigaYD9kuA4aByaCEctSKqWrOkFcNKifzX4l3mdmAIWjcMrTe4TsSu2cOtz1NDF/vEjiGqSG73S4KyARyVMMmeNexsoy65zgCvAtzAuz9glprKgkF/l3Kg5t5EXDt7fBjMZSgAEnjrReVfG37rO/OzfE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411329365472.9812083830036; Sat, 18 Jul 2026 14:48:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCtb-00063e-6j; Sat, 18 Jul 2026 17:48:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCta-000604-4G; Sat, 18 Jul 2026 17:48:30 -0400 Received: from pdx-out-003.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.246.68.102]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCtY-0003Rd-E2; Sat, 18 Jul 2026 17:48:29 -0400 Received: from ip-10-5-0-115.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.0.115]) by internal-pdx-out-003.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:48:16 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.104:28310] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.19.34:2525] with esmtp (Farcaster) id 863ce089-3c89-49cf-9e94-6f800fb22f07; Sat, 18 Jul 2026 21:48:16 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB001.ant.amazon.com (10.250.64.248) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:48:16 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:48:06 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411308; x=1815947308; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=rGAGY0Wi6cyaSOfwgMEuCJdmHdtO2xjhFVJiVN2futs=; b=snAvnvBoQqiTh0ssfMyMXbJRYqVq7/HIpYGyKQkPovOg9dRAwRGE8kwQ fwncQ2n4DW0BzBzHEtNvIByMr/VuZ8JnioxF21Ws4uUgHbNQ+ZgroRwLk W2FioCOyXmgmRy6oOXBeYnT8+2FQ6WouQ3rrpsiNgedDqTrlpOdxR3/Wx AAiwEsJJBCUxhDiixe6ZtIz6OWG8SsyUmBQ5OQMgmVLp4tdpRpvVOJfyL jIN9jiN/1PaS5VjpoExYhAij366ayZnj13M1KYXokAvP/VoCE7LyIKWDf nXuZIBR3yB8LGEehD+2OSED5KdNV856CA6lQ/5uWJJM+K6r3X7MC1+TXn A==; X-CSE-ConnectionGUID: 7aLDfXvuQ52YPGFfg6tTzg== X-CSE-MsgGUID: ikjamM4BTLOY3s2Qa009Fg== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23941803" X-Farcaster-Flow-ID: 863ce089-3c89-49cf-9e94-6f800fb22f07 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 041/137] hw/core/sysbus: Skip nested devices in foreach_dynamic_sysbus_device() Date: Sat, 18 Jul 2026 21:35:16 +0000 Message-ID: <20260718213652.37673-42-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D042UWB002.ant.amazon.com (10.13.139.175) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.246.68.102; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-003.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411330894158500 Content-Type: text/plain; charset="utf-8" find_sysbus_device() recurses into any non-sysbus child of /machine/peripheral{,-anon} on the assumption that only pure containers appear there. Once user-created devices start QOM-parenting their internal helper sysbus devices under themselves (next patch, and the general direction of this series), those helpers become visible to foreach_dynamic_sysbus_device() and are mis-treated as user-requested dynamic sysbus devices -- sysbus-fdt aborts on the first one it has no binding for. Skip recursion into any non-sysbus TYPE_DEVICE: internal helper devices are board-managed and never candidates for platform-bus placement or FDT node generation. No in-tree caller currently relies on recursion through TYPE_DEVICE: user -device sysbus devices are direct children of the peripheral container. AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/core/sysbus.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/hw/core/sysbus.c b/hw/core/sysbus.c index bbacb07e1a..85f56b68fb 100644 --- a/hw/core/sysbus.c +++ b/hw/core/sysbus.c @@ -42,7 +42,15 @@ static int find_sysbus_device(Object *obj, void *opaque) sbdev =3D (SysBusDevice *)dev; =20 if (!sbdev) { - /* Container, traverse it for children */ + /* + * Only recurse into pure containers. A user-created -device + * may internally instantiate helper sysbus children under + * itself; those are board-managed and must not be treated + * as dynamic sysbus devices. + */ + if (object_dynamic_cast(obj, TYPE_DEVICE)) { + return 0; + } return object_child_foreach(obj, find_sysbus_device, opaque); } =20 --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411352; cv=none; d=zohomail.com; s=zohoarc; b=mo8ttI/n5dPsIvxQWasgBvOob3rZX7NjNOuXEXIfazZxrpgRt4aKXSzudcTUGDl1OcPQJlKox+BSnNLRdfpFLvXEX9YqGUO6kqYtWel8xCObK3sdPGgeLOIHjxXcdZWoITQYtvvf7/MVlDBqu5Io0LLb3Q7Cdc/TpYlxMjxsh0I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411352; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=D3R/nl+VZTc1r1hYI7krx1cfQ7PaYw+oqXIiUfj1ze8=; b=RK7rj53buDZ4yu51Wg/f6DIpkXSeCIiC7N/tSBHnh/JZfAriWduzdtohup2hwhM509ED08uPCvNReO1TX9iplxB7BbV9kPq+GwdjK/VVgH2J43k7+dmmySMQdXTSwzdGHQQo1FcKvYn9aAE/bxOW924ANxUqyzlomf9UbNluI2w= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411352278795.704627266608; Sat, 18 Jul 2026 14:49:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCu0-0007AV-M7; Sat, 18 Jul 2026 17:48:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCtx-00071T-PP; Sat, 18 Jul 2026 17:48:53 -0400 Received: from pdx-out-012.esa.us-west-2.outbound.mail-perimeter.amazon.com ([35.162.73.231]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCtv-0003T4-Oo; Sat, 18 Jul 2026 17:48:53 -0400 Received: from ip-10-5-6-203.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.6.203]) by internal-pdx-out-012.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:48:48 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.51:14327] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.58.199:2525] with esmtp (Farcaster) id 54246748-b9eb-4f41-b5bc-968b8e62a95e; Sat, 18 Jul 2026 21:48:47 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC002.ant.amazon.com (10.250.64.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:48:47 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:48:38 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411331; x=1815947331; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=D3R/nl+VZTc1r1hYI7krx1cfQ7PaYw+oqXIiUfj1ze8=; b=cd2MfMHFxfS0l1atutHui3SzM1gwVdgE6Mq4E5fSDCjCTYxo1WFogs53 hj/PGaX6y/pjb12jWgOiglsHioiA4DZKsOVt3Q1gjjT9repFKILPiAOdL SsYwcx+njcMYUMzC8dZiz4iDTA8Vv+s33UOF8PfpGrUowXNcI8C3dcZuw J5Lmt3jXCsgvBccPQyZxUHo04AIPQ+IISSReqXuvoi7Mgpk6TVrvzLRue m+69tlfUy1B8GtIohJ9QwmB+9RoXIzq68b5qyp5Y2v33MIHQd+rGbauf8 XbNOYMt/5TvhNeDmFGxTjRcj9wL01hUphdKaOpugRP7N/1rOzT2DIgGhJ A==; X-CSE-ConnectionGUID: mgV6HCuwQYaBYit/6UKW2w== X-CSE-MsgGUID: kpMRZiGxTn+n4H1FvbY6uQ== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23715788" X-Farcaster-Flow-ID: 54246748-b9eb-4f41-b5bc-968b8e62a95e From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 042/137] hw/pci-bridge: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:17 +0000 Message-ID: <20260718213652.37673-43-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D033UWC002.ant.amazon.com (10.13.139.196) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=35.162.73.231; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-012.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411353108158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/pci-bridge to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/pci-bridge/pci_expander_bridge.c:362 | qdev_new | OBJECT(dev) | "pxb-hos= t" | pxb_dev_realize_common() is DeviceClass.realize of PXB PCIDevice; chil= d host bridge owned by PXB device hw/pci-bridge/pci_expander_bridge.c:371 | qdev_new | OBJECT(dev) | "pci-bri= dge" | same realize(); internal pci-bridge owned by PXB device; error path = unref->unparent Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/pci-bridge/pci_expander_bridge.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/hw/pci-bridge/pci_expander_bridge.c b/hw/pci-bridge/pci_expand= er_bridge.c index 11a28b5503..bf970dae76 100644 --- a/hw/pci-bridge/pci_expander_bridge.c +++ b/hw/pci-bridge/pci_expander_bridge.c @@ -359,7 +359,8 @@ static bool pxb_dev_realize_common(PCIDevice *dev, enum= BusType type, dev_name =3D dev->qdev.id; } =20 - ds =3D qdev_new_orphan(type =3D=3D CXL ? TYPE_PXB_CXL_HOST : TYPE_PXB_= HOST); + ds =3D qdev_new(OBJECT(dev), "pxb-host", + type =3D=3D CXL ? TYPE_PXB_CXL_HOST : TYPE_PXB_HOST); if (type =3D=3D PCIE) { bus =3D pci_root_bus_new(ds, dev_name, NULL, NULL, 0, TYPE_PXB_PCI= E_BUS); } else if (type =3D=3D CXL) { @@ -368,7 +369,7 @@ static bool pxb_dev_realize_common(PCIDevice *dev, enum= BusType type, PXB_CXL_DEV(dev)->cxl_host_bridge =3D PXB_CXL_HOST(ds); } else { bus =3D pci_root_bus_new(ds, "pxb-internal", NULL, NULL, 0, TYPE_P= XB_BUS); - bds =3D qdev_new_orphan("pci-bridge"); + bds =3D qdev_new(OBJECT(dev), "pci-bridge", "pci-bridge"); bds->id =3D g_strdup(dev_name); qdev_prop_set_uint8(bds, PCI_BRIDGE_DEV_PROP_CHASSIS_NR, pxb->bus_= nr); qdev_prop_set_bit(bds, PCI_BRIDGE_DEV_PROP_SHPC, false); @@ -388,9 +389,9 @@ static bool pxb_dev_realize_common(PCIDevice *dev, enum= BusType type, goto err_register_bus; } =20 - sysbus_realize_and_unref(SYS_BUS_DEVICE(ds), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(ds), &error_fatal); if (bds) { - qdev_realize_and_unref(bds, &bus->qbus, &error_fatal); + qdev_realize(bds, &bus->qbus, &error_fatal); } =20 pci_word_test_and_set_mask(dev->config + PCI_STATUS, @@ -401,9 +402,9 @@ static bool pxb_dev_realize_common(PCIDevice *dev, enum= BusType type, return true; =20 err_register_bus: - object_unref(OBJECT(bds)); + object_unparent(OBJECT(bds)); object_unparent(OBJECT(bus)); - object_unref(OBJECT(ds)); + object_unparent(OBJECT(ds)); return false; } =20 --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411377; cv=none; d=zohomail.com; s=zohoarc; b=fpRxu5WoF6R+Jjt3WFca/zB2AWAmjbkUNR79nTEfuWE6QinwXVbIAQY7alzDsMIF2ha83a61AkIRkg0xUtHqJJvMT8a0uu5cdrwHm9zKvKu91KEUcTk33EgRYdrdZYfmrqBygXjPeLD5xRZS38RSTHpbEWOKhg/+ADJgMBX294A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411377; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=WtI6/LryjcJF/GDGDGWQHJKuVvIXg4pSK5f4cg+pxXM=; b=asem/Kk49Eo0kMemEOivFMWPRmXGEc8AbalfDDdskTs65z0QOqQIU+SWRElXPUUTA20JYnkfW37nJxx6G/YAQofPnv2sqVWzMpC9Pq+9bngFWLB9gBom8BFdjHPeULs/hmZjqkrHn6M7Vs718khNRnVyA1z/4eBpd2WCfFEfe0E= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178441137734930.377272900740422; Sat, 18 Jul 2026 14:49:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCuA-0007KY-AI; Sat, 18 Jul 2026 17:49:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCu8-0007JU-7D; Sat, 18 Jul 2026 17:49:04 -0400 Received: from pdx-out-003.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.246.68.102]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCu5-0003Tp-UB; Sat, 18 Jul 2026 17:49:03 -0400 Received: from ip-10-5-0-115.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.0.115]) by internal-pdx-out-003.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:48:58 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.236:6818] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.29.147:2525] with esmtp (Farcaster) id 79940bbb-02ae-448f-ad99-b901619f5799; Sat, 18 Jul 2026 21:48:57 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA001.ant.amazon.com (10.250.64.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:48:57 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:48:47 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411341; x=1815947341; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=WtI6/LryjcJF/GDGDGWQHJKuVvIXg4pSK5f4cg+pxXM=; b=CbMjintThCz/2yl8ONLzdAhrXs0G5XE2Lj/4GTaUKVbNbdfjdr6lCwY3 idNn57KSEbp3KEcBfvWDrXwULYOj2GIEM6FJaAj9V8FRzCPmRzYBfKKRQ hQ7VOU5KmyZca3ZFpUDwByVk4o4L4OI/7ewy5vSxX6ySJPU1US9xyFQan KyD6wBwP8/LXEclIhhG8uExuPqHBKEBbq/hZcrYvVtWlKmjiznckDS3tH 0D4to9nfvgeEIK986TYJmS4pXVgs/7WRg2gxBjssiElDG4LwmyY6PGN+F X17GnfdhBOXv2iFUF8/q7MTB0R8XymAzVDNqtPj6FYPSA6Up1C2IgZXFp g==; X-CSE-ConnectionGUID: pjHFv9qJTsy5lswvz1uCvQ== X-CSE-MsgGUID: x7kehdEmR46JDyNqTVtgcg== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23941823" X-Farcaster-Flow-ID: 79940bbb-02ae-448f-ad99-b901619f5799 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 043/137] hw/sparc64: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:18 +0000 Message-ID: <20260718213652.37673-44-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D033UWC002.ant.amazon.com (10.13.139.196) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.246.68.102; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-003.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411379463158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/sparc64 to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/sparc64/sun4u.c:332 | isa_create_simple | OBJECT(s) | "i8042" | ebus_rea= lize(): child of EBus device hw/sparc64/sun4u.c:338 | isa_new | OBJECT(s) | "fdc" | ebus_realize(): chil= d of EBus device; drop _and_unref hw/sparc64/sun4u.c:345 | qdev_new | OBJECT(s) | "power" | ebus_realize(): c= hild of EBus device; drop _and_unref hw/sparc64/sun4u.c:426 | qdev_new | parent | "prom" | prom_init() helper: t= hread Object *parent from board init hw/sparc64/sun4u.c:510 | qdev_new | parent | "ram" | ram_init() helper: thr= ead Object *parent from board init hw/sparc64/sun4u.c:562 | qdev_new | OBJECT(machine) | "iommu" | sun4uv_init= () board init hw/sparc64/sun4u.c:571 | qdev_new | OBJECT(machine) | "sabre" | sun4uv_init= () board init; PCI host bridge hw/sparc64/sun4u.c:602 | pci_new_multifunction | OBJECT(machine) | "ebus" |= sun4uv_init() board init; drop _and_unref hw/sparc64/sun4u.c:621 | pci_create_simple | OBJECT(machine) | "vga" | sun4= uv_init() board init hw/sparc64/sun4u.c:635 | pci_new_multifunction | OBJECT(machine) | "nic" | = sun4uv_init() board init; onboard NIC; drop _and_unref hw/sparc64/sun4u.c:651 | pci_new | OBJECT(machine) | "ide" | sun4uv_init() = board init; drop _and_unref hw/sparc64/sun4u.c:657 | qdev_new | OBJECT(machine) | "nvram" | sun4uv_init= () board init; drop _and_unref hw/sparc64/sun4u.c:692 | qdev_new | OBJECT(ebus) | TYPE_FW_CFG | collapse e= xisting object_property_add_child(); keep name; drop _and_unref Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/sparc64/sun4u.c | 60 ++++++++++++++++++++++++---------------------- 1 file changed, 31 insertions(+), 29 deletions(-) diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c index b60588cf7d..19a54b1f8a 100644 --- a/hw/sparc64/sun4u.c +++ b/hw/sparc64/sun4u.c @@ -329,22 +329,22 @@ static void ebus_realize(PCIDevice *pci_dev, Error **= errp) parallel_hds_isa_init(s->isa_bus, MAX_PARALLEL_PORTS); =20 /* Keyboard */ - isa_create_simple_orphan(s->isa_bus, TYPE_I8042); + isa_create_simple(OBJECT(s), "i8042", s->isa_bus, TYPE_I8042); =20 /* Floppy */ for (i =3D 0; i < MAX_FD; i++) { fd[i] =3D drive_get(IF_FLOPPY, 0, i); } - isa_dev =3D isa_new_orphan(TYPE_ISA_FDC); + isa_dev =3D isa_new(OBJECT(s), "fdc", TYPE_ISA_FDC); dev =3D DEVICE(isa_dev); qdev_prop_set_uint32(dev, "dma", -1); - isa_realize_and_unref(isa_dev, s->isa_bus, &error_fatal); + qdev_realize(dev, BUS(s->isa_bus), &error_fatal); isa_fdc_init_drives(isa_dev, fd); =20 /* Power */ - dev =3D qdev_new_orphan(TYPE_SUN4U_POWER); + dev =3D qdev_new(OBJECT(s), "power", TYPE_SUN4U_POWER); sbd =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(sbd, &error_fatal); + sysbus_realize(sbd, &error_fatal); memory_region_add_subregion(pci_address_space_io(pci_dev), 0x7240, sysbus_mmio_get_region(sbd, 0)); =20 @@ -416,16 +416,16 @@ static uint64_t translate_prom_address(void *opaque, = uint64_t addr) } =20 /* Boot PROM (OpenBIOS) */ -static void prom_init(hwaddr addr, const char *bios_name) +static void prom_init(Object *parent, hwaddr addr, const char *bios_name) { DeviceState *dev; SysBusDevice *s; char *filename; int ret; =20 - dev =3D qdev_new_orphan(TYPE_OPENPROM); + dev =3D qdev_new(parent, "prom", TYPE_OPENPROM); s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); =20 sysbus_mmio_map(s, 0, addr); =20 @@ -500,19 +500,19 @@ static void ram_realize(DeviceState *dev, Error **err= p) sysbus_init_mmio(sbd, &d->ram); } =20 -static void ram_init(hwaddr addr, ram_addr_t RAM_size) +static void ram_init(Object *parent, hwaddr addr, ram_addr_t RAM_size) { DeviceState *dev; SysBusDevice *s; RamDevice *d; =20 /* allocate RAM */ - dev =3D qdev_new_orphan(TYPE_SUN4U_MEMORY); + dev =3D qdev_new(parent, "ram", TYPE_SUN4U_MEMORY); s =3D SYS_BUS_DEVICE(dev); =20 d =3D SUN4U_RAM(dev); d->size =3D RAM_size; - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); =20 sysbus_mmio_map(s, 0, addr); } @@ -559,21 +559,21 @@ static void sun4uv_init(MemoryRegion *address_space_m= em, cpu =3D sparc64_cpu_devinit(machine->cpu_type, hwdef->prom_addr); =20 /* IOMMU */ - iommu =3D qdev_new_orphan(TYPE_SUN4U_IOMMU); - sysbus_realize_and_unref(SYS_BUS_DEVICE(iommu), &error_fatal); + iommu =3D qdev_new(OBJECT(machine), "iommu", TYPE_SUN4U_IOMMU); + sysbus_realize(SYS_BUS_DEVICE(iommu), &error_fatal); =20 /* set up devices */ - ram_init(0, machine->ram_size); + ram_init(OBJECT(machine), 0, machine->ram_size); =20 - prom_init(hwdef->prom_addr, machine->firmware); + prom_init(OBJECT(machine), hwdef->prom_addr, machine->firmware); =20 /* Init sabre (PCI host bridge) */ - sabre =3D SABRE(qdev_new_orphan(TYPE_SABRE)); + sabre =3D SABRE(qdev_new(OBJECT(machine), "sabre", TYPE_SABRE)); qdev_prop_set_uint64(DEVICE(sabre), "special-base", PBM_SPECIAL_BASE); qdev_prop_set_uint64(DEVICE(sabre), "mem-base", PBM_MEM_BASE); object_property_set_link(OBJECT(sabre), "iommu", OBJECT(iommu), &error_abort); - sysbus_realize_and_unref(SYS_BUS_DEVICE(sabre), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(sabre), &error_fatal); =20 /* sabre_config */ sysbus_mmio_map(SYS_BUS_DEVICE(sabre), 0, PBM_SPECIAL_BASE); @@ -599,10 +599,11 @@ static void sun4uv_init(MemoryRegion *address_space_m= em, pci_bus_set_slot_reserved_mask(pci_busA, 0xfffffff1); pci_bus_set_slot_reserved_mask(pci_busB, 0xfffffff0); =20 - ebus =3D pci_new_multifunction_orphan(PCI_DEVFN(1, 0), TYPE_EBUS); + ebus =3D pci_new_multifunction(OBJECT(machine), "ebus", PCI_DEVFN(1, 0= ), + TYPE_EBUS); qdev_prop_set_uint64(DEVICE(ebus), "console-serial-base", hwdef->console_serial_base); - pci_realize_and_unref(ebus, pci_busA, &error_fatal); + qdev_realize(DEVICE(ebus), BUS(pci_busA), &error_fatal); =20 /* Wire up "well-known" ISA IRQs to PBM legacy obio IRQs */ qdev_connect_gpio_out_named(DEVICE(ebus), "isa-irq", 7, @@ -618,7 +619,8 @@ static void sun4uv_init(MemoryRegion *address_space_mem, =20 switch (vga_interface_type) { case VGA_STD: - pci_create_simple_orphan(pci_busA, PCI_DEVFN(2, 0), "VGA"); + pci_create_simple(OBJECT(machine), "vga", pci_busA, PCI_DEVFN(2, 0= ), + "VGA"); vga_interface_created =3D true; break; case VGA_NONE: @@ -632,10 +634,11 @@ static void sun4uv_init(MemoryRegion *address_space_m= em, =20 nd =3D qemu_find_nic_info(mc->default_nic, true, NULL); if (nd) { - pci_dev =3D pci_new_multifunction_orphan(PCI_DEVFN(1, 1), mc->defa= ult_nic); + pci_dev =3D pci_new_multifunction(OBJECT(machine), "nic", + PCI_DEVFN(1, 1), mc->default_nic); dev =3D &pci_dev->qdev; qdev_set_nic_properties(dev, nd); - pci_realize_and_unref(pci_dev, pci_busA, &error_fatal); + qdev_realize(dev, BUS(pci_busA), &error_fatal); =20 memcpy(&macaddr, &nd->macaddr.a, sizeof(MACAddr)); onboard_nic =3D true; @@ -648,16 +651,16 @@ static void sun4uv_init(MemoryRegion *address_space_m= em, qemu_macaddr_default_if_unset(&macaddr); } =20 - pci_dev =3D pci_new_orphan(PCI_DEVFN(3, 0), "cmd646-ide"); + pci_dev =3D pci_new(OBJECT(machine), "ide", PCI_DEVFN(3, 0), "cmd646-i= de"); qdev_prop_set_uint32(&pci_dev->qdev, "secondary", 1); - pci_realize_and_unref(pci_dev, pci_busA, &error_fatal); + qdev_realize(DEVICE(pci_dev), BUS(pci_busA), &error_fatal); pci_ide_create_devs(pci_dev); =20 /* Map NVRAM into I/O (ebus) space */ - dev =3D qdev_new_orphan("sysbus-m48t59"); + dev =3D qdev_new(OBJECT(machine), "nvram", "sysbus-m48t59"); qdev_prop_set_int32(dev, "base-year", 1968); s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); memory_region_add_subregion(pci_address_space_io(ebus), 0x2000, sysbus_mmio_get_region(s, 0)); nvram =3D NVRAM(dev); @@ -689,10 +692,9 @@ static void sun4uv_init(MemoryRegion *address_space_me= m, graphic_width, graphic_height, graphic_depth, (uint8_t *)&macaddr); =20 - dev =3D qdev_new_orphan(TYPE_FW_CFG_IO); + dev =3D qdev_new(OBJECT(ebus), TYPE_FW_CFG, TYPE_FW_CFG_IO); qdev_prop_set_bit(dev, "dma_enabled", false); - object_property_add_child(OBJECT(ebus), TYPE_FW_CFG, OBJECT(dev)); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); memory_region_add_subregion(pci_address_space_io(ebus), BIOS_CFG_IOPOR= T, &FW_CFG_IO(dev)->comb_iomem); =20 --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411393; cv=none; d=zohomail.com; s=zohoarc; b=cCb4VYBjLvIIQ/RCtMcQaABnOZaxBeCdRLbT/VRq+xPSRF+rHTONlYsmgsxhiKs+Ub6KdlpchXqxyulbLvtuis0dJhpnqabJV1/SMnHB+IKagtuox+/GGAVUiGQGnFJ+LC75V3kEcczBxwbFVJ6+r9sOlv4DfwJzjU4Zxkkk/RE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411393; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ak5lUlC+HJAOMU1xwYZicm7FJRZpiLtJmAw45A3MxLw=; b=EgMTH6cb0m3nzU+9+uqjHWvW7F3HEJu1kjCz6mewGFf/jLms6GPfCwu3NB5qNXBhCDTt6rKgqZixxLWiSuOaVSgKL7owmvkpcQrtWLkJHn6WDMZB7uzz43/ngyohlKQaARqie8t3Ajmt1QBLoMaIlSsWU8uxTkTdkjLYyut2qmI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411393228368.8518273276288; Sat, 18 Jul 2026 14:49:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCuL-0007nJ-5a; Sat, 18 Jul 2026 17:49:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCuI-0007kF-Nj; Sat, 18 Jul 2026 17:49:14 -0400 Received: from pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.245.243.92]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCuF-0003Uh-8z; Sat, 18 Jul 2026 17:49:14 -0400 Received: from ip-10-5-9-48.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.9.48]) by internal-pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:49:07 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.53:30151] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.19.34:2525] with esmtp (Farcaster) id ebcae6a7-2bac-4341-9754-6bf60654720d; Sat, 18 Jul 2026 21:49:07 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC001.ant.amazon.com (10.250.64.174) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:49:07 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:48:57 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411351; x=1815947351; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ak5lUlC+HJAOMU1xwYZicm7FJRZpiLtJmAw45A3MxLw=; b=U7yC7XOWSbhVyga5raddZf14ObHmg2rcQk5RE1PyaXbn2shDW/Swnt9b oxJHVr+qSg/lxCzoUblSC0q6yVQgs3/+p5EQJIRl8m9U/tda9zB7HQwvM fJyb49gjWt4jcQ85zz1Wgd7Vf3moTVVy/9iwtnPf7ORLjxPd+HUt3tXYN fJGBA1oDTjQHPMT44JajjGxzCxetWM1c8orWoe9UgOXcKenWS3H1DKw6q ZrheE70lsCbH2tI3MmeNZWplXxdsgyOQaifDFhMJ/cJc68rfgvQb0zvrB G9mguYBDB8yumDVz247R9SKVr/oewSiIAoBFOT0vo/nRo+N9n/s98W6IA A==; X-CSE-ConnectionGUID: jMeCUkafTjuKlVbpMu0Q3g== X-CSE-MsgGUID: Z4+WCYnUQLSbJmoc8hg+QQ== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23422835" X-Farcaster-Flow-ID: ebcae6a7-2bac-4341-9754-6bf60654720d From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 044/137] hw/sparc: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:19 +0000 Message-ID: <20260718213652.37673-45-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D033UWC002.ant.amazon.com (10.13.139.196) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.245.243.92; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411395203158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/sparc to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/sparc/leon3.c:295 | qdev_new | OBJECT(machine) | "ahb-pnp" | leon3_gener= ic_hw_init() board init hw/sparc/leon3.c:302 | qdev_new | OBJECT(machine) | "apb-pnp" | leon3_gener= ic_hw_init() board init hw/sparc/leon3.c:310 | qdev_new | OBJECT(machine) | "irqmp" | leon3_generic= _hw_init() board init hw/sparc/leon3.c:409 | qdev_new | OBJECT(machine) | "gptimer" | leon3_gener= ic_hw_init() board init hw/sparc/leon3.c:426 | qdev_new | OBJECT(machine) | "uart" | leon3_generic_= hw_init() board init hw/sparc/sun4m.c:283 | qdev_new | parent | "iommu" | iommu_init() helper: t= hread Object *parent from board init hw/sparc/sun4m.c:305 | qdev_new | parent | "dma" | sparc32_dma_init() helpe= r: thread Object *parent from board init hw/sparc/sun4m.c:350 | qdev_new | parent | "intctl" | slavio_intctl_init() = helper: thread Object *parent from board init hw/sparc/sun4m.c:379 | qdev_new | parent | "timer" | slavio_timer_init_all(= ) helper: thread Object *parent from board init hw/sparc/sun4m.c:417 | qdev_new | parent | "misc" | slavio_misc_init() help= er: thread Object *parent from board init hw/sparc/sun4m.c:454 | qdev_new | parent | "ecc" | ecc_init() helper: threa= d Object *parent from board init hw/sparc/sun4m.c:470 | qdev_new | parent | "apc" | apc_init() helper: threa= d Object *parent from board init hw/sparc/sun4m.c:484 | qdev_new | parent | "tcx" | tcx_init() helper: threa= d Object *parent from board init hw/sparc/sun4m.c:536 | qdev_new | parent | "cgthree" | cg3_init() helper: t= hread Object *parent from board init hw/sparc/sun4m.c:565 | qdev_new | parent | "idreg" | idreg_init() helper: t= hread Object *parent from board init hw/sparc/sun4m.c:624 | qdev_new | parent | "afx" | afx_init() helper: threa= d Object *parent from board init hw/sparc/sun4m.c:681 | qdev_new | parent | "prom" | prom_init() helper: thr= ead Object *parent from board init hw/sparc/sun4m.c:838 | qdev_new | OBJECT(machine) | "ram" | sun4m_hw_init()= board init hw/sparc/sun4m.c:950 | qdev_new | OBJECT(machine) | "nvram" | sun4m_hw_init= () board init hw/sparc/sun4m.c:962 | qdev_new | OBJECT(machine) | "escc-kbd" | sun4m_hw_i= nit() board init; keyboard/mouse ESCC hw/sparc/sun4m.c:975 | qdev_new | OBJECT(machine) | "ms-kb-orgate" | sun4m_= hw_init() board init; drop _and_unref hw/sparc/sun4m.c:982 | qdev_new | OBJECT(machine) | "escc-serial" | sun4m_h= w_init() board init; serial ESCC hw/sparc/sun4m.c:996 | qdev_new | OBJECT(machine) | "serial-orgate" | sun4m= _hw_init() board init; drop _and_unref hw/sparc/sun4m.c:1022 | sysbus_create_simple | OBJECT(machine) | "cs4231" |= sun4m_hw_init() board init hw/sparc/sun4m.c:1055 | qdev_new | OBJECT(machine) | TYPE_FW_CFG | collapse= existing object_property_add_child(); keep name; drop _and_unref Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/sparc/leon3.c | 22 ++++---- hw/sparc/sun4m.c | 142 ++++++++++++++++++++++++----------------------- 2 files changed, 85 insertions(+), 79 deletions(-) diff --git a/hw/sparc/leon3.c b/hw/sparc/leon3.c index d921cd8dc6..a96ccca8e3 100644 --- a/hw/sparc/leon3.c +++ b/hw/sparc/leon3.c @@ -292,25 +292,27 @@ static void leon3_generic_hw_init(MachineState *machi= ne) qemu_register_reset(leon3_cpu_reset, &reset_info->info[i]); } =20 - ahb_pnp =3D GRLIB_AHB_PNP(qdev_new_orphan(TYPE_GRLIB_AHB_PNP)); - sysbus_realize_and_unref(SYS_BUS_DEVICE(ahb_pnp), &error_fatal); + ahb_pnp =3D GRLIB_AHB_PNP(qdev_new(OBJECT(machine), "ahb-pnp", + TYPE_GRLIB_AHB_PNP)); + sysbus_realize(SYS_BUS_DEVICE(ahb_pnp), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(ahb_pnp), 0, LEON3_AHB_PNP_OFFSET); grlib_ahb_pnp_add_entry(ahb_pnp, 0, 0, GRLIB_VENDOR_GAISLER, GRLIB_LEON3_DEV, GRLIB_AHB_MASTER, GRLIB_CPU_AREA); =20 - apb_pnp =3D GRLIB_APB_PNP(qdev_new_orphan(TYPE_GRLIB_APB_PNP)); - sysbus_realize_and_unref(SYS_BUS_DEVICE(apb_pnp), &error_fatal); + apb_pnp =3D GRLIB_APB_PNP(qdev_new(OBJECT(machine), "apb-pnp", + TYPE_GRLIB_APB_PNP)); + sysbus_realize(SYS_BUS_DEVICE(apb_pnp), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(apb_pnp), 0, LEON3_APB_PNP_OFFSET); grlib_ahb_pnp_add_entry(ahb_pnp, LEON3_APB_PNP_OFFSET, 0xFFF, GRLIB_VENDOR_GAISLER, GRLIB_APBMST_DEV, GRLIB_AHB_SLAVE, GRLIB_AHBMEM_AREA); =20 /* Allocate IRQ manager */ - irqmpdev =3D qdev_new_orphan(TYPE_GRLIB_IRQMP); + irqmpdev =3D qdev_new(OBJECT(machine), "irqmp", TYPE_GRLIB_IRQMP); object_property_set_int(OBJECT(irqmpdev), "ncpus", machine->smp.cpus, &error_fatal); - sysbus_realize_and_unref(SYS_BUS_DEVICE(irqmpdev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(irqmpdev), &error_fatal); =20 for (i =3D 0; i < machine->smp.cpus; i++) { cpu =3D reset_info->info[i].cpu; @@ -406,11 +408,11 @@ static void leon3_generic_hw_init(MachineState *machi= ne) } =20 /* Allocate timers */ - dev =3D qdev_new_orphan(TYPE_GRLIB_GPTIMER); + dev =3D qdev_new(OBJECT(machine), "gptimer", TYPE_GRLIB_GPTIMER); qdev_prop_set_uint32(dev, "nr-timers", LEON3_TIMER_COUNT); qdev_prop_set_uint32(dev, "frequency", CPU_CLK); qdev_prop_set_uint32(dev, "irq-line", LEON3_TIMER_IRQ); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, LEON3_TIMER_OFFSET); for (i =3D 0; i < LEON3_TIMER_COUNT; i++) { @@ -423,9 +425,9 @@ static void leon3_generic_hw_init(MachineState *machine) 0, LEON3_TIMER_IRQ, GRLIB_APBIO_AREA); =20 /* Allocate uart */ - dev =3D qdev_new_orphan(TYPE_GRLIB_APB_UART); + dev =3D qdev_new(OBJECT(machine), "uart", TYPE_GRLIB_APB_UART); qdev_prop_set_chr(dev, "chrdev", serial_hd(0)); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, LEON3_UART_OFFSET); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, qdev_get_gpio_in(irqmpdev, LEON3_UART_IRQ)); diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c index 52627dbdec..b0f018a3c5 100644 --- a/hw/sparc/sun4m.c +++ b/hw/sparc/sun4m.c @@ -275,22 +275,23 @@ static unsigned long sun4m_load_kernel(const char *ke= rnel_filename, return kernel_size; } =20 -static void *iommu_init(hwaddr addr, uint32_t version, qemu_irq irq) +static void *iommu_init(Object *parent, hwaddr addr, uint32_t version, + qemu_irq irq) { DeviceState *dev; SysBusDevice *s; =20 - dev =3D qdev_new_orphan(TYPE_SUN4M_IOMMU); + dev =3D qdev_new(parent, "iommu", TYPE_SUN4M_IOMMU); qdev_prop_set_uint32(dev, "version", version); s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); sysbus_connect_irq(s, 0, irq); sysbus_mmio_map(s, 0, addr); =20 return s; } =20 -static void *sparc32_dma_init(hwaddr dma_base, +static void *sparc32_dma_init(Object *parent, hwaddr dma_base, hwaddr esp_base, qemu_irq espdma_irq, hwaddr le_base, qemu_irq ledma_irq, MACAddr *mac) @@ -302,7 +303,7 @@ static void *sparc32_dma_init(hwaddr dma_base, SysBusPCNetState *lance; NICInfo *nd =3D qemu_find_nic_info("lance", true, NULL); =20 - dma =3D qdev_new_orphan(TYPE_SPARC32_DMA); + dma =3D qdev_new(parent, "dma", TYPE_SPARC32_DMA); espdma =3D SPARC32_ESPDMA_DEVICE(object_resolve_path_component( OBJECT(dma), "espdma")); =20 @@ -322,7 +323,7 @@ static void *sparc32_dma_init(hwaddr dma_base, qdev_prop_set_macaddr(DEVICE(lance), "mac", mac->a); } =20 - sysbus_realize_and_unref(SYS_BUS_DEVICE(dma), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dma), &error_fatal); =20 sysbus_connect_irq(SYS_BUS_DEVICE(espdma), 0, espdma_irq); =20 @@ -338,7 +339,7 @@ static void *sparc32_dma_init(hwaddr dma_base, return dma; } =20 -static DeviceState *slavio_intctl_init(hwaddr addr, +static DeviceState *slavio_intctl_init(Object *parent, hwaddr addr, hwaddr addrg, unsigned int smp_cpus, DeviceState **cpus) @@ -347,10 +348,10 @@ static DeviceState *slavio_intctl_init(hwaddr addr, SysBusDevice *s; unsigned int i, j; =20 - dev =3D qdev_new_orphan("slavio_intctl"); + dev =3D qdev_new(parent, "intctl", "slavio_intctl"); =20 s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); =20 for (i =3D 0; i < smp_cpus; i++) { for (j =3D 0; j < MAX_PILS; j++) { @@ -369,17 +370,18 @@ static DeviceState *slavio_intctl_init(hwaddr addr, #define SYS_TIMER_OFFSET 0x10000ULL #define CPU_TIMER_OFFSET(cpu) (0x1000ULL * cpu) =20 -static void slavio_timer_init_all(hwaddr addr, qemu_irq master_irq, +static void slavio_timer_init_all(Object *parent, hwaddr addr, + qemu_irq master_irq, qemu_irq *cpu_irqs, unsigned int num_cpu= s) { DeviceState *dev; SysBusDevice *s; unsigned int i; =20 - dev =3D qdev_new_orphan("slavio_timer"); + dev =3D qdev_new(parent, "timer", "slavio_timer"); qdev_prop_set_uint32(dev, "num_cpus", num_cpus); s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); sysbus_connect_irq(s, 0, master_irq); sysbus_mmio_map(s, 0, addr + SYS_TIMER_OFFSET); =20 @@ -406,7 +408,7 @@ static Notifier slavio_system_powerdown_notifier =3D { #define MISC_MDM 0x01b00000 #define MISC_SYS 0x01f00000 =20 -static void slavio_misc_init(hwaddr base, +static void slavio_misc_init(Object *parent, hwaddr base, hwaddr aux1_base, hwaddr aux2_base, qemu_irq irq, qemu_irq fdc_tc) @@ -414,9 +416,9 @@ static void slavio_misc_init(hwaddr base, DeviceState *dev; SysBusDevice *s; =20 - dev =3D qdev_new_orphan("slavio_misc"); + dev =3D qdev_new(parent, "misc", "slavio_misc"); s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); if (base) { /* 8 bit registers */ /* Slavio control */ @@ -446,15 +448,16 @@ static void slavio_misc_init(hwaddr base, qemu_register_powerdown_notifier(&slavio_system_powerdown_notifier); } =20 -static void ecc_init(hwaddr base, qemu_irq irq, uint32_t version) +static void ecc_init(Object *parent, hwaddr base, qemu_irq irq, + uint32_t version) { DeviceState *dev; SysBusDevice *s; =20 - dev =3D qdev_new_orphan("eccmemctl"); + dev =3D qdev_new(parent, "ecc", "eccmemctl"); qdev_prop_set_uint32(dev, "version", version); s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); sysbus_connect_irq(s, 0, irq); sysbus_mmio_map(s, 0, base); if (version =3D=3D 0) { // SS-600MP only @@ -462,32 +465,32 @@ static void ecc_init(hwaddr base, qemu_irq irq, uint3= 2_t version) } } =20 -static void apc_init(hwaddr power_base, qemu_irq cpu_halt) +static void apc_init(Object *parent, hwaddr power_base, qemu_irq cpu_halt) { DeviceState *dev; SysBusDevice *s; =20 - dev =3D qdev_new_orphan("apc"); + dev =3D qdev_new(parent, "apc", "apc"); s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); /* Power management (APC) XXX: not a Slavio device */ sysbus_mmio_map(s, 0, power_base); sysbus_connect_irq(s, 0, cpu_halt); } =20 -static void tcx_init(hwaddr addr, qemu_irq irq, int vram_size, int width, - int height, int depth) +static void tcx_init(Object *parent, hwaddr addr, qemu_irq irq, int vram_s= ize, + int width, int height, int depth) { DeviceState *dev; SysBusDevice *s; =20 - dev =3D qdev_new_orphan("sun-tcx"); + dev =3D qdev_new(parent, "tcx", "sun-tcx"); qdev_prop_set_uint32(dev, "vram_size", vram_size); qdev_prop_set_uint16(dev, "width", width); qdev_prop_set_uint16(dev, "height", height); qdev_prop_set_uint16(dev, "depth", depth); s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); =20 /* 10/ROM : FCode ROM */ sysbus_mmio_map(s, 0, addr); @@ -527,19 +530,19 @@ static void tcx_init(hwaddr addr, qemu_irq irq, int v= ram_size, int width, sysbus_connect_irq(s, 0, irq); } =20 -static void cg3_init(hwaddr addr, qemu_irq irq, int vram_size, int width, - int height, int depth) +static void cg3_init(Object *parent, hwaddr addr, qemu_irq irq, int vram_s= ize, + int width, int height, int depth) { DeviceState *dev; SysBusDevice *s; =20 - dev =3D qdev_new_orphan("cgthree"); + dev =3D qdev_new(parent, "cgthree", "cgthree"); qdev_prop_set_uint32(dev, "vram-size", vram_size); qdev_prop_set_uint16(dev, "width", width); qdev_prop_set_uint16(dev, "height", height); qdev_prop_set_uint16(dev, "depth", depth); s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); =20 /* FCode ROM */ sysbus_mmio_map(s, 0, addr); @@ -557,14 +560,14 @@ static void cg3_init(hwaddr addr, qemu_irq irq, int v= ram_size, int width, =20 static const uint8_t idreg_data[] =3D { 0xfe, 0x81, 0x01, 0x03 }; =20 -static void idreg_init(hwaddr addr) +static void idreg_init(Object *parent, hwaddr addr) { DeviceState *dev; SysBusDevice *s; =20 - dev =3D qdev_new_orphan(TYPE_MACIO_ID_REGISTER); + dev =3D qdev_new(parent, "idreg", TYPE_MACIO_ID_REGISTER); s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); =20 sysbus_mmio_map(s, 0, addr); address_space_write_rom(&address_space_memory, addr, @@ -616,14 +619,14 @@ struct AFXState { }; =20 /* SS-5 TCX AFX register */ -static void afx_init(hwaddr addr) +static void afx_init(Object *parent, hwaddr addr) { DeviceState *dev; SysBusDevice *s; =20 - dev =3D qdev_new_orphan(TYPE_TCX_AFX); + dev =3D qdev_new(parent, "afx", TYPE_TCX_AFX); s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); =20 sysbus_mmio_map(s, 0, addr); } @@ -671,16 +674,16 @@ static uint64_t translate_prom_address(void *opaque, = uint64_t addr) return addr + *base_addr - PROM_VADDR; } =20 -static void prom_init(hwaddr addr, const char *bios_name) +static void prom_init(Object *parent, hwaddr addr, const char *bios_name) { DeviceState *dev; SysBusDevice *s; char *filename; int ret; =20 - dev =3D qdev_new_orphan(TYPE_OPENPROM); + dev =3D qdev_new(parent, "prom", TYPE_OPENPROM); s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); =20 sysbus_mmio_map(s, 0, addr); =20 @@ -835,9 +838,9 @@ static void sun4m_hw_init(MachineState *machine) } =20 /* Create and map RAM frontend */ - dev =3D qdev_new_orphan("memory"); + dev =3D qdev_new(OBJECT(machine), "ram", "memory"); object_property_set_link(OBJECT(dev), "memdev", OBJECT(ram_memdev), &e= rror_fatal); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, 0); =20 /* models without ECC don't trap when missing ram is accessed */ @@ -846,9 +849,9 @@ static void sun4m_hw_init(MachineState *machine) hwdef->max_mem - machine->ram_size); } =20 - prom_init(hwdef->slavio_base, machine->firmware); + prom_init(OBJECT(machine), hwdef->slavio_base, machine->firmware); =20 - slavio_intctl =3D slavio_intctl_init(hwdef->intctl_base, + slavio_intctl =3D slavio_intctl_init(OBJECT(machine), hwdef->intctl_ba= se, hwdef->intctl_base + 0x10000ULL, smp_cpus, cpus); @@ -861,14 +864,15 @@ static void sun4m_hw_init(MachineState *machine) } =20 if (hwdef->idreg_base) { - idreg_init(hwdef->idreg_base); + idreg_init(OBJECT(machine), hwdef->idreg_base); } =20 if (hwdef->afx_base) { - afx_init(hwdef->afx_base); + afx_init(OBJECT(machine), hwdef->afx_base); } =20 - iommu_init(hwdef->iommu_base, hwdef->iommu_version, slavio_irq[30]); + iommu_init(OBJECT(machine), hwdef->iommu_base, hwdef->iommu_version, + slavio_irq[30]); =20 if (hwdef->iommu_pad_base) { /* On the real hardware (SS-5, LX) the MMU is not padded, but alia= sed. @@ -879,7 +883,7 @@ static void sun4m_hw_init(MachineState *machine) hwdef->iommu_pad_base, hwdef->iommu_pad_len); } =20 - sparc32_dma_init(hwdef->dma_base, + sparc32_dma_init(OBJECT(machine), hwdef->dma_base, hwdef->esp_base, slavio_irq[18], hwdef->le_base, slavio_irq[16], &hostid); =20 @@ -911,7 +915,7 @@ static void sun4m_hw_init(MachineState *machine) } =20 /* sbus irq 5 */ - cg3_init(hwdef->tcx_base, slavio_irq[11], 0x00100000, + cg3_init(OBJECT(machine), hwdef->tcx_base, slavio_irq[11], 0x0= 0100000, graphic_width, graphic_height, graphic_depth); vga_interface_created =3D true; } else { @@ -927,7 +931,7 @@ static void sun4m_hw_init(MachineState *machine) exit(1); } =20 - tcx_init(hwdef->tcx_base, slavio_irq[11], 0x00100000, + tcx_init(OBJECT(machine), hwdef->tcx_base, slavio_irq[11], 0x0= 0100000, graphic_width, graphic_height, graphic_depth); vga_interface_created =3D true; } @@ -947,19 +951,20 @@ static void sun4m_hw_init(MachineState *machine) create_unimplemented_device("sun-sx", hwdef->sx_base, 0x2000); } =20 - dev =3D qdev_new_orphan("sysbus-m48t08"); + dev =3D qdev_new(OBJECT(machine), "nvram", "sysbus-m48t08"); qdev_prop_set_int32(dev, "base-year", 1968); s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); sysbus_connect_irq(s, 0, slavio_irq[0]); sysbus_mmio_map(s, 0, hwdef->nvram_base); nvram =3D NVRAM(dev); =20 - slavio_timer_init_all(hwdef->counter_base, slavio_irq[19], slavio_cpu_= irq, smp_cpus); + slavio_timer_init_all(OBJECT(machine), hwdef->counter_base, slavio_irq= [19], + slavio_cpu_irq, smp_cpus); =20 /* Slavio TTYA (base+4, Linux ttyS0) is the first QEMU serial device Slavio TTYB (base+0, Linux ttyS1) is the second QEMU serial device = */ - dev =3D qdev_new_orphan(TYPE_ESCC); + dev =3D qdev_new(OBJECT(machine), "escc-kbd", TYPE_ESCC); qdev_prop_set_uint32(dev, "disabled", !machine->enable_graphics); qdev_prop_set_uint32(dev, "frequency", ESCC_CLOCK); qdev_prop_set_uint32(dev, "it_shift", 1); @@ -968,18 +973,18 @@ static void sun4m_hw_init(MachineState *machine) qdev_prop_set_uint32(dev, "chnBtype", escc_mouse); qdev_prop_set_uint32(dev, "chnAtype", escc_kbd); s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); sysbus_mmio_map(s, 0, hwdef->ms_kb_base); =20 /* Logically OR both its IRQs together */ - ms_kb_orgate =3D qdev_new_orphan(TYPE_OR_IRQ); + ms_kb_orgate =3D qdev_new(OBJECT(machine), "ms-kb-orgate", TYPE_OR_IRQ= ); object_property_set_int(OBJECT(ms_kb_orgate), "num-lines", 2, &error_f= atal); - qdev_realize_and_unref(ms_kb_orgate, NULL, &error_fatal); + qdev_realize(ms_kb_orgate, NULL, &error_fatal); sysbus_connect_irq(s, 0, qdev_get_gpio_in(ms_kb_orgate, 0)); sysbus_connect_irq(s, 1, qdev_get_gpio_in(ms_kb_orgate, 1)); qdev_connect_gpio_out(ms_kb_orgate, 0, slavio_irq[14]); =20 - dev =3D qdev_new_orphan(TYPE_ESCC); + dev =3D qdev_new(OBJECT(machine), "escc-serial", TYPE_ESCC); qdev_prop_set_uint32(dev, "disabled", 0); qdev_prop_set_uint32(dev, "frequency", ESCC_CLOCK); qdev_prop_set_uint32(dev, "it_shift", 1); @@ -989,20 +994,21 @@ static void sun4m_hw_init(MachineState *machine) qdev_prop_set_uint32(dev, "chnAtype", escc_serial); =20 s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); sysbus_mmio_map(s, 0, hwdef->serial_base); =20 /* Logically OR both its IRQs together */ - serial_orgate =3D qdev_new_orphan(TYPE_OR_IRQ); + serial_orgate =3D qdev_new(OBJECT(machine), "serial-orgate", TYPE_OR_I= RQ); object_property_set_int(OBJECT(serial_orgate), "num-lines", 2, &error_fatal); - qdev_realize_and_unref(serial_orgate, NULL, &error_fatal); + qdev_realize(serial_orgate, NULL, &error_fatal); sysbus_connect_irq(s, 0, qdev_get_gpio_in(serial_orgate, 0)); sysbus_connect_irq(s, 1, qdev_get_gpio_in(serial_orgate, 1)); qdev_connect_gpio_out(serial_orgate, 0, slavio_irq[15]); =20 if (hwdef->apc_base) { - apc_init(hwdef->apc_base, qemu_allocate_irq(cpu_halt_signal, NULL,= 0)); + apc_init(OBJECT(machine), hwdef->apc_base, + qemu_allocate_irq(cpu_halt_signal, NULL, 0)); } =20 if (hwdef->fd_base) { @@ -1015,12 +1021,12 @@ static void sun4m_hw_init(MachineState *machine) fdc_tc =3D qemu_allocate_irq(dummy_fdc_tc, NULL, 0); } =20 - slavio_misc_init(hwdef->slavio_base, hwdef->aux1_base, hwdef->aux2_bas= e, - slavio_irq[30], fdc_tc); + slavio_misc_init(OBJECT(machine), hwdef->slavio_base, hwdef->aux1_base, + hwdef->aux2_base, slavio_irq[30], fdc_tc); =20 if (hwdef->cs_base) { - sysbus_create_simple_orphan("sun-CS4231", hwdef->cs_base, - slavio_irq[5]); + sysbus_create_simple(OBJECT(machine), "cs4231", "sun-CS4231", + hwdef->cs_base, slavio_irq[5]); } =20 if (hwdef->dbri_base) { @@ -1049,17 +1055,15 @@ static void sun4m_hw_init(MachineState *machine) hwdef->nvram_machine_id, "Sun4m"); =20 if (hwdef->ecc_base) - ecc_init(hwdef->ecc_base, slavio_irq[28], + ecc_init(OBJECT(machine), hwdef->ecc_base, slavio_irq[28], hwdef->ecc_version); =20 - dev =3D qdev_new_orphan(TYPE_FW_CFG_MEM); + dev =3D qdev_new(OBJECT(machine), TYPE_FW_CFG, TYPE_FW_CFG_MEM); fw_cfg =3D FW_CFG(dev); qdev_prop_set_uint32(dev, "data_width", 1); qdev_prop_set_bit(dev, "dma_enabled", false); - object_property_add_child(OBJECT(qdev_get_machine()), TYPE_FW_CFG, - OBJECT(fw_cfg)); s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); sysbus_mmio_map(s, 0, CFG_ADDR); sysbus_mmio_map(s, 1, CFG_ADDR + 2); =20 --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411427; cv=none; d=zohomail.com; s=zohoarc; b=gsAmwNZPGni+HfdiKIqxRqDqqdywcyN2ocCdc9Q2QIomQJ2irHtIduTlrebZiJOSYBYe/vsoLHRu7btxoyB37Ladvz/IsH0yTdME4VHEydvOge8IvqS1Tm4e8OcuT+QtQLXa9BKSZ3jvAU27vhOp7AlaWomd7E+H3dA9F58Ly9g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411427; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=1Cq/h0tv8c6CMXGBmywRJ7k2Z/Ryf3WAXv4I2zs4ZUs=; b=ispL9wNIzTwz9cisVyf7qP3qC9aLouMQB9K5mmLFknPgPmwAMMzzmphHdNGZeqY0fZ6es05HHYjk3wKH6N4q1QeRi0KDVr3vu2DxB8sQScJM5KJbU9FnKoNWBzG7n8Yp9aZ7Tb5yUKSKLcrBdNzKhITDLGNlQ9XI/J8Ke5tAXcY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411427002865.3288087601817; Sat, 18 Jul 2026 14:50:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCvC-0008Tn-Eg; Sat, 18 Jul 2026 17:50:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCuo-0008SV-JP; Sat, 18 Jul 2026 17:49:46 -0400 Received: from pdx-out-011.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.35.192.45]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCum-0003WC-3d; Sat, 18 Jul 2026 17:49:46 -0400 Received: from ip-10-5-9-48.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.9.48]) by internal-pdx-out-011.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:49:39 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.48:1132] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.19.34:2525] with esmtp (Farcaster) id 779f9e0f-2f26-4849-aad8-3655a5a9f21f; Sat, 18 Jul 2026 21:49:38 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB002.ant.amazon.com (10.250.64.231) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:49:38 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:49:28 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411384; x=1815947384; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=1Cq/h0tv8c6CMXGBmywRJ7k2Z/Ryf3WAXv4I2zs4ZUs=; b=HpmvdddCJyEUS2oqlqaXIiCHdlDPUa2uasGWfZ/QULXdw/IhPDSXLaQD D1Ung36LoAbSTmJdTEECQI2Bui+x5eU1YSKGeeeD0rfGYt3a9/gznMAGx TJu1WSxJzmtrjYEuaX65Ntwaqb1AfMjsIj4p7hJeTMbwZqAWgq28gCaxR GnJbBBm0/TDX3DVPyNILZggFDVDrfay1mHwak+LS5ZHApdr0SH8YzHami HyNbfWiNADBSxihD4ukX4QmAy30px0Wl/X+3v0OBnAyYobbZ4+PLTbRnl dxUx+oUXVUmthWDvNbFzmJCRzNJFZIAyuQh7yzQG3Kw3KpWGylz7xhInH Q==; X-CSE-ConnectionGUID: /OcFjOjOSQ+TiT2k1ozKUw== X-CSE-MsgGUID: +n8DIQhxSUSj7euFxgUt3Q== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23694315" X-Farcaster-Flow-ID: 779f9e0f-2f26-4849-aad8-3655a5a9f21f From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 045/137] hw/m68k: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:20 +0000 Message-ID: <20260718213652.37673-46-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D040UWA003.ant.amazon.com (10.13.139.6) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.35.192.45; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-011.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411429647158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/m68k to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/m68k/an5206.c:28 | qdev_new | parent | "mbar" | mcf5206_init() helper: t= hread Object *parent from board init hw/m68k/an5206.c:49 | cpu_create | OBJECT(machine) | "cpu" | an5206_init() = board init hw/m68k/mcf5208.c:291 | cpu_create | OBJECT(machine) | "cpu" | mcf5208evb_i= nit() board init hw/m68k/mcf_intc.c:214 | qdev_new | parent | "intc" | mcf_intc_init() globa= l helper: add Object *parent, update header + caller hw/m68k/next-cube.c:1263 | cpu_create | OBJECT(machine) | "cpu" | next_cube= _init() board init hw/m68k/next-cube.c:1275 | qdev_new | OBJECT(machine) | "pc" | next_cube_in= it() board init; peripheral controller hw/m68k/next-cube.c:1283 | sysbus_create_simple | OBJECT(machine) | "fb" | = next_cube_init() board init; framebuffer hw/m68k/next-cube.c:1322 | sysbus_create_simple | OBJECT(machine) | "kbd" |= next_cube_init() board init hw/m68k/q800.c:358 | qdev_new | OBJECT(machine) | "adb-keyboard" | q800_mac= hine_init() board init; drop _and_unref hw/m68k/q800.c:360 | qdev_new | OBJECT(machine) | "adb-mouse" | q800_machin= e_init() board init; drop _and_unref hw/m68k/virt.c:148 | cpu_create | OBJECT(machine) | "cpu" | virt_init() boa= rd init hw/m68k/virt.c:158 | qdev_new | OBJECT(machine) | "irqc" | virt_init() boar= d init hw/m68k/virt.c:172 | qdev_new | OBJECT(machine) | "pic[*]" | virt_init() bo= ard init; loop hw/m68k/virt.c:186 | qdev_new | OBJECT(machine) | "rtc[*]" | virt_init() bo= ard init; loop hw/m68k/virt.c:197 | qdev_new | OBJECT(machine) | "tty" | virt_init() board= init hw/m68k/virt.c:205 | sysbus_create_simple | OBJECT(machine) | "virt-ctrl" |= virt_init() board init hw/m68k/virt.c:211 | qdev_new | OBJECT(machine) | "virtio-mmio[*]" | virt_i= nit() board init; loop Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/m68k/an5206.c | 11 ++++++----- hw/m68k/mcf5208.c | 4 ++-- hw/m68k/mcf_intc.c | 7 ++++--- hw/m68k/next-cube.c | 10 +++++----- hw/m68k/q800.c | 8 ++++---- hw/m68k/virt.c | 25 +++++++++++++------------ include/hw/m68k/mcf.h | 2 +- 7 files changed, 35 insertions(+), 32 deletions(-) diff --git a/hw/m68k/an5206.c b/hw/m68k/an5206.c index b649605140..5027311cad 100644 --- a/hw/m68k/an5206.c +++ b/hw/m68k/an5206.c @@ -20,16 +20,17 @@ #define AN5206_MBAR_ADDR 0x10000000 #define AN5206_RAMBAR_ADDR 0x20000000 =20 -static void mcf5206_init(M68kCPU *cpu, MemoryRegion *sysmem, uint32_t base) +static void mcf5206_init(Object *parent, M68kCPU *cpu, MemoryRegion *sysme= m, + uint32_t base) { DeviceState *dev; SysBusDevice *s; =20 - dev =3D qdev_new_orphan(TYPE_MCF5206_MBAR); + dev =3D qdev_new(parent, "mbar", TYPE_MCF5206_MBAR); object_property_set_link(OBJECT(dev), "m68k-cpu", OBJECT(cpu), &error_abort); s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); =20 memory_region_add_subregion(sysmem, base, sysbus_mmio_get_region(s, 0)= ); } @@ -46,7 +47,7 @@ static void an5206_init(MachineState *machine) MemoryRegion *address_space_mem =3D get_system_memory(); MemoryRegion *sram =3D g_new(MemoryRegion, 1); =20 - cpu =3D M68K_CPU(cpu_create_orphan(machine->cpu_type)); + cpu =3D M68K_CPU(cpu_create(OBJECT(machine), "cpu", machine->cpu_type)= ); env =3D &cpu->env; =20 /* Initialize CPU registers. */ @@ -62,7 +63,7 @@ static void an5206_init(MachineState *machine) memory_region_init_ram(sram, NULL, "an5206.sram", 512, &error_fatal); memory_region_add_subregion(address_space_mem, AN5206_RAMBAR_ADDR, sra= m); =20 - mcf5206_init(cpu, address_space_mem, AN5206_MBAR_ADDR); + mcf5206_init(OBJECT(machine), cpu, address_space_mem, AN5206_MBAR_ADDR= ); =20 /* Load kernel. */ if (!kernel_filename) { diff --git a/hw/m68k/mcf5208.c b/hw/m68k/mcf5208.c index d79ec173e6..0b8636daa9 100644 --- a/hw/m68k/mcf5208.c +++ b/hw/m68k/mcf5208.c @@ -288,7 +288,7 @@ static void mcf5208evb_init(MachineState *machine) MemoryRegion *sram =3D g_new(MemoryRegion, 1); DeviceState *intc; =20 - cpu =3D M68K_CPU(cpu_create_orphan(machine->cpu_type)); + cpu =3D M68K_CPU(cpu_create(OBJECT(machine), "cpu", machine->cpu_type)= ); env =3D &cpu->env; =20 /* Initialize CPU registers. */ @@ -307,7 +307,7 @@ static void mcf5208evb_init(MachineState *machine) memory_region_add_subregion(address_space_mem, 0x80000000, sram); =20 /* Internal peripherals. */ - intc =3D mcf_intc_init(address_space_mem, 0xfc048000, cpu); + intc =3D mcf_intc_init(OBJECT(machine), address_space_mem, 0xfc048000,= cpu); =20 mcf_uart_create_mmap(0xfc060000, qdev_get_gpio_in(intc, 26), serial_hd= (0)); mcf_uart_create_mmap(0xfc064000, qdev_get_gpio_in(intc, 27), serial_hd= (1)); diff --git a/hw/m68k/mcf_intc.c b/hw/m68k/mcf_intc.c index 123bd7e385..5ae8fddc52 100644 --- a/hw/m68k/mcf_intc.c +++ b/hw/m68k/mcf_intc.c @@ -207,14 +207,15 @@ static void mcf_intc_register_types(void) =20 type_init(mcf_intc_register_types) =20 -DeviceState *mcf_intc_init(MemoryRegion *sysmem, hwaddr base, M68kCPU *cpu) +DeviceState *mcf_intc_init(Object *parent, MemoryRegion *sysmem, hwaddr ba= se, + M68kCPU *cpu) { DeviceState *dev; =20 - dev =3D qdev_new_orphan(TYPE_MCF_INTC); + dev =3D qdev_new(parent, "intc", TYPE_MCF_INTC); object_property_set_link(OBJECT(dev), "m68k-cpu", OBJECT(cpu), &error_abort); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); memory_region_add_subregion(sysmem, base, sysbus_mmio_get_region(SYS_BUS_DEVICE(dev)= , 0)); return dev; diff --git a/hw/m68k/next-cube.c b/hw/m68k/next-cube.c index 530dc1ab59..c80d32ef29 100644 --- a/hw/m68k/next-cube.c +++ b/hw/m68k/next-cube.c @@ -1260,7 +1260,7 @@ static void next_cube_init(MachineState *machine) DeviceState *pcdev; =20 /* Initialize the cpu core */ - cpu =3D M68K_CPU(cpu_create_orphan(machine->cpu_type)); + cpu =3D M68K_CPU(cpu_create(OBJECT(machine), "cpu", machine->cpu_type)= ); if (!cpu) { error_report("Unable to find m68k CPU definition"); exit(1); @@ -1272,15 +1272,15 @@ static void next_cube_init(MachineState *machine) env->sr =3D 0x2700; =20 /* Peripheral Controller */ - pcdev =3D qdev_new_orphan(TYPE_NEXT_PC); + pcdev =3D qdev_new(OBJECT(machine), "pc", TYPE_NEXT_PC); object_property_set_link(OBJECT(pcdev), "cpu", OBJECT(cpu), &error_abo= rt); - sysbus_realize_and_unref(SYS_BUS_DEVICE(pcdev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(pcdev), &error_fatal); =20 /* 64MB RAM starting at 0x04000000 */ memory_region_add_subregion(sysmem, 0x04000000, machine->ram); =20 /* Framebuffer */ - sysbus_create_simple_orphan(TYPE_NEXTFB, 0x0B000000, NULL); + sysbus_create_simple(OBJECT(machine), "fb", TYPE_NEXTFB, 0x0B000000, N= ULL); =20 /* MMIO */ sysbus_mmio_map(SYS_BUS_DEVICE(pcdev), 0, 0x02005000); @@ -1319,7 +1319,7 @@ static void next_cube_init(MachineState *machine) memory_region_add_subregion(sysmem, 0x820c0000, &m->bmapm2); =20 /* KBD */ - sysbus_create_simple_orphan(TYPE_NEXTKBD, 0x0200e000, NULL); + sysbus_create_simple(OBJECT(machine), "kbd", TYPE_NEXTKBD, 0x0200e000,= NULL); =20 /* Load ROM here */ memory_region_init_rom(&m->rom, NULL, "next.rom", 0x20000, &error_fata= l); diff --git a/hw/m68k/q800.c b/hw/m68k/q800.c index 688299ee2d..15b3bcab5f 100644 --- a/hw/m68k/q800.c +++ b/hw/m68k/q800.c @@ -355,10 +355,10 @@ static void q800_machine_init(MachineState *machine) "auxmode", 0)); =20 adb_bus =3D qdev_get_child_bus(DEVICE(&m->via1), "adb.0"); - dev =3D qdev_new_orphan(TYPE_ADB_KEYBOARD); - qdev_realize_and_unref(dev, adb_bus, &error_fatal); - dev =3D qdev_new_orphan(TYPE_ADB_MOUSE); - qdev_realize_and_unref(dev, adb_bus, &error_fatal); + dev =3D qdev_new(OBJECT(machine), "adb-keyboard", TYPE_ADB_KEYBOARD); + qdev_realize(dev, adb_bus, &error_fatal); + dev =3D qdev_new(OBJECT(machine), "adb-mouse", TYPE_ADB_MOUSE); + qdev_realize(dev, adb_bus, &error_fatal); =20 /* VIA 2 */ object_initialize_child(OBJECT(machine), "via2", &m->via2, diff --git a/hw/m68k/virt.c b/hw/m68k/virt.c index 64ac8c8166..5d5ea72314 100644 --- a/hw/m68k/virt.c +++ b/hw/m68k/virt.c @@ -145,7 +145,7 @@ static void virt_init(MachineState *machine) reset_info =3D g_new0(ResetInfo, 1); =20 /* init CPUs */ - cpu =3D M68K_CPU(cpu_create_orphan(machine->cpu_type)); + cpu =3D M68K_CPU(cpu_create(OBJECT(machine), "cpu", machine->cpu_type)= ); =20 reset_info->cpu =3D cpu; qemu_register_reset(main_cpu_reset, reset_info); @@ -155,10 +155,10 @@ static void virt_init(MachineState *machine) =20 /* IRQ Controller */ =20 - irqc_dev =3D qdev_new_orphan(TYPE_M68K_IRQC); + irqc_dev =3D qdev_new(OBJECT(machine), "irqc", TYPE_M68K_IRQC); object_property_set_link(OBJECT(irqc_dev), "m68k-cpu", OBJECT(cpu), &error_abort); - sysbus_realize_and_unref(SYS_BUS_DEVICE(irqc_dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(irqc_dev), &error_fatal); =20 /* * 6 goldfish-pic @@ -169,10 +169,10 @@ static void virt_init(MachineState *machine) */ io_base =3D VIRT_GF_PIC_MMIO_BASE; for (i =3D 0; i < VIRT_GF_PIC_NB; i++) { - pic_dev[i] =3D qdev_new_orphan(TYPE_GOLDFISH_PIC); + pic_dev[i] =3D qdev_new(OBJECT(machine), "pic[*]", TYPE_GOLDFISH_P= IC); sysbus =3D SYS_BUS_DEVICE(pic_dev[i]); qdev_prop_set_uint8(pic_dev[i], "index", i); - sysbus_realize_and_unref(sysbus, &error_fatal); + sysbus_realize(sysbus, &error_fatal); =20 sysbus_mmio_map(sysbus, 0, io_base); sysbus_connect_irq(sysbus, 0, qdev_get_gpio_in(irqc_dev, i)); @@ -183,10 +183,10 @@ static void virt_init(MachineState *machine) /* goldfish-rtc */ io_base =3D VIRT_GF_RTC_MMIO_BASE; for (i =3D 0; i < VIRT_GF_RTC_NB; i++) { - dev =3D qdev_new_orphan(TYPE_GOLDFISH_RTC); + dev =3D qdev_new(OBJECT(machine), "rtc[*]", TYPE_GOLDFISH_RTC); qdev_prop_set_bit(dev, "big-endian", true); sysbus =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(sysbus, &error_fatal); + sysbus_realize(sysbus, &error_fatal); sysbus_mmio_map(sysbus, 0, io_base); sysbus_connect_irq(sysbus, 0, PIC_GPIO(VIRT_GF_RTC_IRQ_BASE + i)); =20 @@ -194,24 +194,25 @@ static void virt_init(MachineState *machine) } =20 /* goldfish-tty */ - dev =3D qdev_new_orphan(TYPE_GOLDFISH_TTY); + dev =3D qdev_new(OBJECT(machine), "tty", TYPE_GOLDFISH_TTY); sysbus =3D SYS_BUS_DEVICE(dev); qdev_prop_set_chr(dev, "chardev", serial_hd(0)); - sysbus_realize_and_unref(sysbus, &error_fatal); + sysbus_realize(sysbus, &error_fatal); sysbus_mmio_map(sysbus, 0, VIRT_GF_TTY_MMIO_BASE); sysbus_connect_irq(sysbus, 0, PIC_GPIO(VIRT_GF_TTY_IRQ_BASE)); =20 /* virt controller */ - dev =3D sysbus_create_simple_orphan(TYPE_VIRT_CTRL, VIRT_CTRL_MMIO_BAS= E, + dev =3D sysbus_create_simple(OBJECT(machine), "virt-ctrl", TYPE_VIRT_C= TRL, + VIRT_CTRL_MMIO_BASE, PIC_GPIO(VIRT_CTRL_IRQ_BASE)); =20 /* virtio-mmio */ io_base =3D VIRT_VIRTIO_MMIO_BASE; for (i =3D 0; i < 128; i++) { - dev =3D qdev_new_orphan(TYPE_VIRTIO_MMIO); + dev =3D qdev_new(OBJECT(machine), "virtio-mmio[*]", TYPE_VIRTIO_MM= IO); qdev_prop_set_bit(dev, "force-legacy", false); sysbus =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(sysbus, &error_fatal); + sysbus_realize(sysbus, &error_fatal); sysbus_connect_irq(sysbus, 0, PIC_GPIO(VIRT_VIRTIO_IRQ_BASE + i)); sysbus_mmio_map(sysbus, 0, io_base); io_base +=3D 0x200; diff --git a/include/hw/m68k/mcf.h b/include/hw/m68k/mcf.h index b2a599adaa..ff818c55d0 100644 --- a/include/hw/m68k/mcf.h +++ b/include/hw/m68k/mcf.h @@ -14,7 +14,7 @@ DeviceState *mcf_uart_create(qemu_irq irq, Chardev *chr); DeviceState *mcf_uart_create_mmap(hwaddr base, qemu_irq irq, Chardev *chr); =20 /* mcf_intc.c */ -DeviceState *mcf_intc_init(struct MemoryRegion *sysmem, +DeviceState *mcf_intc_init(Object *parent, struct MemoryRegion *sysmem, hwaddr base, M68kCPU *cpu); =20 /* mcf5206.c */ --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411437; cv=none; d=zohomail.com; s=zohoarc; b=muqk+2t0J8moEPFC2m2gfto0qp8UhNF+CoMVbrS2SCec0K19RSiZ041Aln1kCLjDvKUzdjyLkyeqALw4qVFZWhv4n1G5IKMfwQNxLHBAjGwDnfKEBRNX5jtY4+mXDbIzcYjiNJeFhLlKaIGw34a1GnM1uKE8I1ZyzcPTJ1a+3Hc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411437; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=gHss29LrdlLZd2aMouPNycGZXE1FbMFs6OsrTsLCpP8=; b=FiQhuQ+G+TMPMYL3MxV7kNrhx4+sFmW8XbgUg/WI7Qm9i4Jbm21zmQFMO1Fd9knTRnuWjaFDEo+8b12vBtWwi1hy05Y6VBzTsMBUvXR4a/bNFBE4uK5MS2igkM9rhgOmOxGuo41VjHOlQ/5fqfCm105y4mCIqfaIP6Devr3IKh0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411437610166.0708856570152; Sat, 18 Jul 2026 14:50:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCvW-0000YU-To; Sat, 18 Jul 2026 17:50:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCuz-0008Vq-09; Sat, 18 Jul 2026 17:50:02 -0400 Received: from pdx-out-012.esa.us-west-2.outbound.mail-perimeter.amazon.com ([35.162.73.231]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCuu-0003Wp-9w; Sat, 18 Jul 2026 17:49:56 -0400 Received: from ip-10-5-12-219.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.12.219]) by internal-pdx-out-012.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:49:48 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.234:7180] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.19.34:2525] with esmtp (Farcaster) id cd1471d7-579e-41a0-b0ae-3c6526346a60; Sat, 18 Jul 2026 21:49:48 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA002.ant.amazon.com (10.250.64.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:49:48 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:49:38 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411392; x=1815947392; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=gHss29LrdlLZd2aMouPNycGZXE1FbMFs6OsrTsLCpP8=; b=WFDfxZGvjtRoDuPm0LPmZRrdSxF2CQ5PzmaJIEoZVpCEzLjNTp5gUjhk 7QAEGYb7lYPBHKlA8KIPGCq1WtZ2VjSPB47QFjun9kk8YJybp6ziRxoCY QFe7IOUbA6ku6yx6SZGDCa1AiRtz8PKAJT+MmgJO9yuTOIqyH0f2+LvI/ P4K+w3DxaSOOy1kxt/HrlM5AFqod53qVqgLn585KkkpVeQFf/DKS1XPn/ W/KYK8WAs8OFBBLkEbBAAdFrM5G+Re4QwIT47do/vR9HIZcFxHvSX2tn6 yv5Q2rfi1GNaOhfODQFw6GqcWvi29pMGt/ADm1vlnn1taIKFhssDeiTKh A==; X-CSE-ConnectionGUID: 7FAjPNYrSPCPtmUHKoFWeA== X-CSE-MsgGUID: 1Isr4iXvSOez6rHPXMwvYg== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23715795" X-Farcaster-Flow-ID: cd1471d7-579e-41a0-b0ae-3c6526346a60 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 046/137] hw/rtc: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:21 +0000 Message-ID: <20260718213652.37673-47-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D040UWA003.ant.amazon.com (10.13.139.6) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=35.162.73.231; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-012.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411439759158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/rtc to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/rtc/mc146818rtc.c:933 | isa_new | parent | "rtc" | helper called from bo= ard init; thread Object *parent through mc146818_rtc_init() and its 4 calle= rs (microvm, pnv, jazz, dp264) hw/rtc/sun4v-rtc.c:60 | qdev_new | parent | "rtc" | helper called from niag= ara board init; thread Object *parent through sun4v_rtc_init() Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/alpha/dp264.c | 2 +- hw/i386/microvm.c | 3 ++- hw/mips/jazz.c | 2 +- hw/ppc/pnv.c | 2 +- hw/rtc/mc146818rtc.c | 6 +++--- hw/rtc/sun4v-rtc.c | 6 +++--- hw/sparc64/niagara.c | 2 +- include/hw/rtc/mc146818rtc.h | 2 +- include/hw/rtc/sun4v-rtc.h | 2 +- 9 files changed, 14 insertions(+), 13 deletions(-) diff --git a/hw/alpha/dp264.c b/hw/alpha/dp264.c index 9cd448cff1..40dee88f2d 100644 --- a/hw/alpha/dp264.c +++ b/hw/alpha/dp264.c @@ -119,7 +119,7 @@ static void clipper_init(MachineState *machine) qdev_connect_gpio_out(i82378_dev, 0, isa_irq); =20 /* Since we have an SRM-compatible PALcode, use the SRM epoch. */ - mc146818_rtc_init(isa_bus, 1900, rtc_irq); + mc146818_rtc_init(mo, isa_bus, 1900, rtc_irq); =20 /* VGA setup. Don't bother loading the bios. */ pci_vga_init(pci_bus); diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c index 16bd885541..d13036bd73 100644 --- a/hw/i386/microvm.c +++ b/hw/i386/microvm.c @@ -268,7 +268,8 @@ static void microvm_devices_init(MicrovmMachineState *m= ms) =20 if (mms->rtc =3D=3D ON_OFF_AUTO_ON || (mms->rtc =3D=3D ON_OFF_AUTO_AUTO && !kvm_enabled())) { - microvm_set_rtc(mms, mc146818_rtc_init(isa_bus, 2000, NULL)); + microvm_set_rtc(mms, mc146818_rtc_init(OBJECT(mms), isa_bus, + 2000, NULL)); } =20 if (mms->isa_serial) { diff --git a/hw/mips/jazz.c b/hw/mips/jazz.c index 62f2350d36..938aaf3fe1 100644 --- a/hw/mips/jazz.c +++ b/hw/mips/jazz.c @@ -354,7 +354,7 @@ static void mips_jazz_init(MachineState *machine, fdctrl_init_sysbus(qdev_get_gpio_in(rc4030, 1), 0x80003000, fds); =20 /* Real time clock */ - mc146818_rtc_init(isa_bus, 1980, NULL); + mc146818_rtc_init(OBJECT(machine), isa_bus, 1980, NULL); memory_region_init_io(rtc, NULL, &rtc_ops, NULL, "rtc", 0x1000); memory_region_add_subregion(address_space, 0x80004000, rtc); =20 diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 0a22d854d7..1eb3c09672 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -1314,7 +1314,7 @@ static void pnv_init(MachineState *machine) serial_hds_isa_init(pnv->isa_bus, 0, MAX_ISA_SERIAL_PORTS); =20 /* Create an RTC ISA device too */ - mc146818_rtc_init(pnv->isa_bus, 2000, NULL); + mc146818_rtc_init(OBJECT(machine), pnv->isa_bus, 2000, NULL); =20 /* * Create the machine BMC simulator and the IPMI BT device for diff --git a/hw/rtc/mc146818rtc.c b/hw/rtc/mc146818rtc.c index b9e5ec6ff6..a4d6d59502 100644 --- a/hw/rtc/mc146818rtc.c +++ b/hw/rtc/mc146818rtc.c @@ -923,18 +923,18 @@ static void rtc_realizefn(DeviceState *dev, Error **e= rrp) qdev_init_gpio_out(dev, &s->irq, 1); } =20 -MC146818RtcState *mc146818_rtc_init(ISABus *bus, int base_year, +MC146818RtcState *mc146818_rtc_init(Object *parent, ISABus *bus, int base_= year, qemu_irq intercept_irq) { DeviceState *dev; ISADevice *isadev; MC146818RtcState *s; =20 - isadev =3D isa_new_orphan(TYPE_MC146818_RTC); + isadev =3D isa_new(parent, "rtc[*]", TYPE_MC146818_RTC); dev =3D DEVICE(isadev); s =3D MC146818_RTC(isadev); qdev_prop_set_int32(dev, "base_year", base_year); - isa_realize_and_unref(isadev, bus, &error_fatal); + qdev_realize(dev, BUS(bus), &error_fatal); if (intercept_irq) { qdev_connect_gpio_out(dev, 0, intercept_irq); } else { diff --git a/hw/rtc/sun4v-rtc.c b/hw/rtc/sun4v-rtc.c index 257f70885d..ee07b7a979 100644 --- a/hw/rtc/sun4v-rtc.c +++ b/hw/rtc/sun4v-rtc.c @@ -52,15 +52,15 @@ static const MemoryRegionOps sun4v_rtc_ops =3D { .endianness =3D DEVICE_BIG_ENDIAN, }; =20 -void sun4v_rtc_init(hwaddr addr) +void sun4v_rtc_init(Object *parent, hwaddr addr) { DeviceState *dev; SysBusDevice *s; =20 - dev =3D qdev_new_orphan(TYPE_SUN4V_RTC); + dev =3D qdev_new(parent, "rtc", TYPE_SUN4V_RTC); s =3D SYS_BUS_DEVICE(dev); =20 - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); =20 sysbus_mmio_map(s, 0, addr); } diff --git a/hw/sparc64/niagara.c b/hw/sparc64/niagara.c index 1211ecb82d..d47d62dac7 100644 --- a/hw/sparc64/niagara.c +++ b/hw/sparc64/niagara.c @@ -154,7 +154,7 @@ static void niagara_init(MachineState *machine) serial_mm_init(sysmem, NIAGARA_UART_BASE, 0, NULL, 115200, serial_hd(0), DEVICE_BIG_ENDIAN); create_unimplemented_device("sun4v-iob", NIAGARA_IOBBASE, NIAGARA_IOBS= IZE); - sun4v_rtc_init(NIAGARA_RTC_BASE); + sun4v_rtc_init(OBJECT(machine), NIAGARA_RTC_BASE); } =20 static void niagara_class_init(ObjectClass *oc, const void *data) diff --git a/include/hw/rtc/mc146818rtc.h b/include/hw/rtc/mc146818rtc.h index 64893be151..1bdd63cf5c 100644 --- a/include/hw/rtc/mc146818rtc.h +++ b/include/hw/rtc/mc146818rtc.h @@ -51,7 +51,7 @@ struct MC146818RtcState { =20 #define RTC_ISA_IRQ 8 =20 -MC146818RtcState *mc146818_rtc_init(ISABus *bus, int base_year, +MC146818RtcState *mc146818_rtc_init(Object *parent, ISABus *bus, int base_= year, qemu_irq intercept_irq); void mc146818rtc_set_cmos_data(MC146818RtcState *s, int addr, int val); int mc146818rtc_get_cmos_data(MC146818RtcState *s, int addr); diff --git a/include/hw/rtc/sun4v-rtc.h b/include/hw/rtc/sun4v-rtc.h index 26a9eb6196..9152a0082f 100644 --- a/include/hw/rtc/sun4v-rtc.h +++ b/include/hw/rtc/sun4v-rtc.h @@ -14,6 +14,6 @@ =20 #include "exec/hwaddr.h" =20 -void sun4v_rtc_init(hwaddr addr); +void sun4v_rtc_init(Object *parent, hwaddr addr); =20 #endif --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411497; cv=none; d=zohomail.com; s=zohoarc; b=k8bAMhwvs70HseFJ8DGipwdEy60PZBwH8mbUgRP9NkgwMNHoxSMOcnXCajIimU2J/p+rEh0edwQUlCS40SDK5MUth/TODbISbq8y2lio9dPIthCPvDnAmB8izyYIq+1T312NyHjijPP/eRElSyHlTgkYI0Wz9VZ/SWcNebtyD+k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411497; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=2QjLH+anvZr4y1azA3Iao1EtATgkMOebEYOkqL/C7HY=; b=Ru7UUitoQPlUJM6t/NR4xVZgv2bt/FIoU4RgsGNZRi1tdnDlEdXt5DoLA2jzGYA0aMCM8PvnflePqSKhKSMi2I4kFMMToGvrqDT9bK8iVhsuxDtGTF7FPE8UCA9Tiw4fV3GZuqes8e9EwTpoBHB7v8F8I16TuACB/s7W8HROCUU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411497847720.4007801047819; Sat, 18 Jul 2026 14:51:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCvZ-0000r6-Af; Sat, 18 Jul 2026 17:50:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCv8-00008C-LG; Sat, 18 Jul 2026 17:50:13 -0400 Received: from pdx-out-007.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.34.181.151]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCv3-0003XB-LT; Sat, 18 Jul 2026 17:50:04 -0400 Received: from ip-10-5-9-48.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.9.48]) by internal-pdx-out-007.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:49:58 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.104:14791] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.35.17:2525] with esmtp (Farcaster) id 09e41968-ba38-4bda-bcac-a74b3aa10c57; Sat, 18 Jul 2026 21:49:57 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB001.ant.amazon.com (10.250.64.248) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:49:57 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:49:48 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411401; x=1815947401; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=2QjLH+anvZr4y1azA3Iao1EtATgkMOebEYOkqL/C7HY=; b=GnXgVdgVO3hNjU9GwB4BUyCXjMY5MC2q4WQs+B9aTGqdY4MzLmtMDV6C AWMJVZABhu0bLEGYFdYSPPnZXfJaOHOlAR5WzAa/BUpvQYYcjUXIRneGQ 1S0g1Is59+jra78KCC5ZuH6WqSYMU9bW0p9vUkld/WsRBwJ01DoQaH9ff jtzKOGgntEDG4DAFQ4M6T9Qb6CGRk3jYf1nRT3IaxCYK7ww5TcDp5mRAG z9XkYPeUQNsrpHHlxTyItq/+Z724cXDCxjTG5YuACvsSL3XxDrMcpIhB0 zcsaKGoeYK5Vlg/nay4vE8OfG3fe3aOcNf+WCFRcQPOxYm4oT8rkGqosD w==; X-CSE-ConnectionGUID: PGjvs0ZVRYSYXkfcuacseg== X-CSE-MsgGUID: hkp1ictDQ/OR92cdNSnqkQ== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23910489" X-Farcaster-Flow-ID: 09e41968-ba38-4bda-bcac-a74b3aa10c57 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 047/137] hw/i2c: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:22 +0000 Message-ID: <20260718213652.37673-48-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D040UWA003.ant.amazon.com (10.13.139.6) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.34.181.151; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-007.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.01, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411499787158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/i2c to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/i2c/aspeed_i2c.c:1521 | i2c_slave_create_simple | OBJECT(s) | "slave" | = inside AspeedI2CBus DeviceClass.realize(); slave belongs to the bus device hw/i2c/core.c:367 | - | ORPHAN-JUSTIFIED | - | i2c_slave_new_orphan() is th= e orphan-API implementation itself; parented sibling already exists at :376 hw/i2c/core.c:371 | - | ORPHAN-JUSTIFIED | - | body of i2c_slave_new_orphan= (); intentional orphan wrapper hw/i2c/core.c:401 | - | ORPHAN-JUSTIFIED | - | i2c_slave_create_simple_orph= an() is the orphan-API implementation itself; parented sibling already exis= ts at :386 hw/i2c/core.c:403 | - | ORPHAN-JUSTIFIED | - | body of i2c_slave_create_sim= ple_orphan(); intentional orphan wrapper hw/i2c/smbus_eeprom.c:167 | qdev_new | parent | "eeprom[*]" | helper called= from many board inits; thread Object *parent through smbus_eeprom_init_one= () and smbus_eeprom_init() and update all 17 callers Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/arm/aspeed_ast1040_evb.c | 3 ++- hw/arm/aspeed_ast10x0_evb.c | 3 ++- hw/arm/aspeed_ast2400_palmetto.c | 2 +- hw/arm/aspeed_ast2400_supermicrox11.c | 2 +- hw/arm/aspeed_ast2500_evb.c | 2 +- hw/arm/aspeed_ast2500_g220a.c | 2 +- hw/arm/aspeed_ast2500_supermicro-x11spi.c | 2 +- hw/arm/aspeed_ast2500_witherspoon.c | 2 +- hw/arm/aspeed_ast2600_evb.c | 2 +- hw/i2c/aspeed_i2c.c | 4 ++-- hw/i2c/smbus_eeprom.c | 11 ++++++----- hw/i386/pc_piix.c | 2 +- hw/i386/pc_q35.c | 2 +- hw/mips/fuloong2e.c | 2 +- hw/mips/malta.c | 2 +- hw/ppc/amigaone.c | 4 ++-- hw/ppc/pegasos.c | 2 +- hw/ppc/sam460ex.c | 2 +- include/hw/i2c/smbus_eeprom.h | 5 +++-- 19 files changed, 30 insertions(+), 26 deletions(-) diff --git a/hw/arm/aspeed_ast1040_evb.c b/hw/arm/aspeed_ast1040_evb.c index d0326d39f9..fb83087b13 100644 --- a/hw/arm/aspeed_ast1040_evb.c +++ b/hw/arm/aspeed_ast1040_evb.c @@ -54,7 +54,8 @@ static void ast1040_evb_i2c_init(AspeedMachineState *bmc) AspeedSoCState *soc =3D bmc->soc; uint8_t *eeprom_buf =3D g_malloc0(256); =20 - smbus_eeprom_init_one(aspeed_i2c_get_bus(&soc->i2c, 0), 0x50, eeprom_b= uf); + smbus_eeprom_init_one(OBJECT(bmc), aspeed_i2c_get_bus(&soc->i2c, 0), 0= x50, + eeprom_buf); i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 1), "tmp1= 05", 0x4d); } =20 diff --git a/hw/arm/aspeed_ast10x0_evb.c b/hw/arm/aspeed_ast10x0_evb.c index 52ead37bc7..dc134b555c 100644 --- a/hw/arm/aspeed_ast10x0_evb.c +++ b/hw/arm/aspeed_ast10x0_evb.c @@ -70,7 +70,8 @@ static void ast1030_evb_i2c_init(AspeedMachineState *bmc) =20 /* U10 24C08 connects to SDA/SCL Group 1 by default */ uint8_t *eeprom_buf =3D g_malloc0(32 * 1024); - smbus_eeprom_init_one(aspeed_i2c_get_bus(&soc->i2c, 0), 0x50, eeprom_b= uf); + smbus_eeprom_init_one(OBJECT(bmc), aspeed_i2c_get_bus(&soc->i2c, 0), 0= x50, + eeprom_buf); =20 /* U11 LM75 connects to SDA/SCL Group 2 by default */ i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 1), "tmp1= 05", 0x4d); diff --git a/hw/arm/aspeed_ast2400_palmetto.c b/hw/arm/aspeed_ast2400_palme= tto.c index d89d042ce2..80f9c911b8 100644 --- a/hw/arm/aspeed_ast2400_palmetto.c +++ b/hw/arm/aspeed_ast2400_palmetto.c @@ -39,7 +39,7 @@ static void palmetto_bmc_i2c_init(AspeedMachineState *bmc) */ i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 0), "ds13= 38", 0x68); =20 - smbus_eeprom_init_one(aspeed_i2c_get_bus(&soc->i2c, 0), 0x50, + smbus_eeprom_init_one(OBJECT(bmc), aspeed_i2c_get_bus(&soc->i2c, 0), 0= x50, eeprom_buf); =20 /* add a TMP423 temperature sensor */ diff --git a/hw/arm/aspeed_ast2400_supermicrox11.c b/hw/arm/aspeed_ast2400_= supermicrox11.c index 9c90998754..b18adf3981 100644 --- a/hw/arm/aspeed_ast2400_supermicrox11.c +++ b/hw/arm/aspeed_ast2400_supermicrox11.c @@ -39,7 +39,7 @@ static void supermicrox11_bmc_i2c_init(AspeedMachineState= *bmc) */ i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 0), "ds13= 38", 0x68); =20 - smbus_eeprom_init_one(aspeed_i2c_get_bus(&soc->i2c, 0), 0x50, + smbus_eeprom_init_one(OBJECT(bmc), aspeed_i2c_get_bus(&soc->i2c, 0), 0= x50, eeprom_buf); =20 /* add a TMP423 temperature sensor */ diff --git a/hw/arm/aspeed_ast2500_evb.c b/hw/arm/aspeed_ast2500_evb.c index e46ce4a5aa..ba8a56bafd 100644 --- a/hw/arm/aspeed_ast2500_evb.c +++ b/hw/arm/aspeed_ast2500_evb.c @@ -30,7 +30,7 @@ static void ast2500_evb_i2c_init(AspeedMachineState *bmc) AspeedSoCState *soc =3D bmc->soc; uint8_t *eeprom_buf =3D g_malloc0(8 * 1024); =20 - smbus_eeprom_init_one(aspeed_i2c_get_bus(&soc->i2c, 3), 0x50, + smbus_eeprom_init_one(OBJECT(bmc), aspeed_i2c_get_bus(&soc->i2c, 3), 0= x50, eeprom_buf); =20 /* The AST2500 EVB expects a LM75 but a TMP105 is compatible */ diff --git a/hw/arm/aspeed_ast2500_g220a.c b/hw/arm/aspeed_ast2500_g220a.c index 577ee0aff4..27c9dc436a 100644 --- a/hw/arm/aspeed_ast2500_g220a.c +++ b/hw/arm/aspeed_ast2500_g220a.c @@ -59,7 +59,7 @@ static void g220a_bmc_i2c_init(AspeedMachineState *bmc) 0x46, 0x46, 0xc4, 0x48, 0x48, 0x47, 0x47, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7, }; - smbus_eeprom_init_one(aspeed_i2c_get_bus(&soc->i2c, 4), 0x57, + smbus_eeprom_init_one(OBJECT(bmc), aspeed_i2c_get_bus(&soc->i2c, 4), 0= x57, eeprom_buf); } =20 diff --git a/hw/arm/aspeed_ast2500_supermicro-x11spi.c b/hw/arm/aspeed_ast2= 500_supermicro-x11spi.c index 9e95d26901..bea459eeaa 100644 --- a/hw/arm/aspeed_ast2500_supermicro-x11spi.c +++ b/hw/arm/aspeed_ast2500_supermicro-x11spi.c @@ -35,7 +35,7 @@ static void supermicro_x11spi_bmc_i2c_init(AspeedMachineS= tate *bmc) */ i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 0), "ds13= 38", 0x68); =20 - smbus_eeprom_init_one(aspeed_i2c_get_bus(&soc->i2c, 0), 0x50, + smbus_eeprom_init_one(OBJECT(bmc), aspeed_i2c_get_bus(&soc->i2c, 0), 0= x50, eeprom_buf); =20 /* add a TMP423 temperature sensor */ diff --git a/hw/arm/aspeed_ast2500_witherspoon.c b/hw/arm/aspeed_ast2500_wi= therspoon.c index cb57cb421a..dda090ab60 100644 --- a/hw/arm/aspeed_ast2500_witherspoon.c +++ b/hw/arm/aspeed_ast2500_witherspoon.c @@ -73,7 +73,7 @@ static void witherspoon_bmc_i2c_init(AspeedMachineState *= bmc) */ i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 11), "ds1= 338", 0x32); =20 - smbus_eeprom_init_one(aspeed_i2c_get_bus(&soc->i2c, 11), 0x51, + smbus_eeprom_init_one(OBJECT(bmc), aspeed_i2c_get_bus(&soc->i2c, 11), = 0x51, eeprom_buf); dev =3D DEVICE(i2c_slave_new_orphan(TYPE_PCA9552, 0x60)); qdev_prop_set_string(dev, "description", "pca0"); diff --git a/hw/arm/aspeed_ast2600_evb.c b/hw/arm/aspeed_ast2600_evb.c index cf1e2b006c..ab7667da75 100644 --- a/hw/arm/aspeed_ast2600_evb.c +++ b/hw/arm/aspeed_ast2600_evb.c @@ -23,7 +23,7 @@ static void ast2600_evb_i2c_init(AspeedMachineState *bmc) AspeedSoCState *soc =3D bmc->soc; uint8_t *eeprom_buf =3D g_malloc0(8 * 1024); =20 - smbus_eeprom_init_one(aspeed_i2c_get_bus(&soc->i2c, 7), 0x50, + smbus_eeprom_init_one(OBJECT(bmc), aspeed_i2c_get_bus(&soc->i2c, 7), 0= x50, eeprom_buf); =20 /* LM75 is compatible with TMP105 driver */ diff --git a/hw/i2c/aspeed_i2c.c b/hw/i2c/aspeed_i2c.c index ac09e5f706..c58ecea011 100644 --- a/hw/i2c/aspeed_i2c.c +++ b/hw/i2c/aspeed_i2c.c @@ -1518,8 +1518,8 @@ static void aspeed_i2c_bus_realize(DeviceState *dev, = Error **errp) sysbus_init_irq(SYS_BUS_DEVICE(dev), &s->irq); =20 s->bus =3D i2c_init_bus(dev, s->name); - s->slave =3D i2c_slave_create_simple_orphan(s->bus, TYPE_ASPEED_I2C_BU= S_SLAVE, - 0xff); + s->slave =3D i2c_slave_create_simple(OBJECT(s), "slave", s->bus, + TYPE_ASPEED_I2C_BUS_SLAVE, 0xff); =20 memory_region_init_io(&s->mr, OBJECT(s), &aspeed_i2c_bus_ops, s, s->name, aic->reg_size); diff --git a/hw/i2c/smbus_eeprom.c b/hw/i2c/smbus_eeprom.c index 59fe07b16b..aaf90a10da 100644 --- a/hw/i2c/smbus_eeprom.c +++ b/hw/i2c/smbus_eeprom.c @@ -160,18 +160,19 @@ static const TypeInfo smbus_eeprom_types[] =3D { =20 DEFINE_TYPES(smbus_eeprom_types) =20 -void smbus_eeprom_init_one(I2CBus *smbus, uint8_t address, uint8_t *eeprom= _buf) +void smbus_eeprom_init_one(Object *parent, I2CBus *smbus, uint8_t address, + uint8_t *eeprom_buf) { DeviceState *dev; =20 - dev =3D qdev_new_orphan(TYPE_SMBUS_EEPROM); + dev =3D qdev_new(parent, "eeprom[*]", TYPE_SMBUS_EEPROM); qdev_prop_set_uint8(dev, "address", address); /* FIXME: use an array of byte or block backend property? */ SMBUS_EEPROM(dev)->init_data =3D eeprom_buf; - qdev_realize_and_unref(dev, (BusState *)smbus, &error_fatal); + qdev_realize(dev, (BusState *)smbus, &error_fatal); } =20 -void smbus_eeprom_init(I2CBus *smbus, int nb_eeprom, +void smbus_eeprom_init(Object *parent, I2CBus *smbus, int nb_eeprom, const uint8_t *eeprom_spd, int eeprom_spd_size) { int i; @@ -184,7 +185,7 @@ void smbus_eeprom_init(I2CBus *smbus, int nb_eeprom, } =20 for (i =3D 0; i < nb_eeprom; i++) { - smbus_eeprom_init_one(smbus, 0x50 + i, + smbus_eeprom_init_one(parent, smbus, 0x50 + i, eeprom_buf + (i * SMBUS_EEPROM_SIZE)); } } diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c index 3f361c8396..44ce592ea2 100644 --- a/hw/i386/pc_piix.c +++ b/hw/i386/pc_piix.c @@ -304,7 +304,7 @@ static void pc_init1(MachineState *machine, const char = *pci_type) qdev_connect_gpio_out_named(DEVICE(piix4_pm), "smi-irq", 0, smi_ir= q); pcms->smbus =3D I2C_BUS(qdev_get_child_bus(DEVICE(piix4_pm), "i2c"= )); /* TODO: Populate SPD eeprom data. */ - smbus_eeprom_init(pcms->smbus, 8, NULL, 0); + smbus_eeprom_init(OBJECT(machine), pcms->smbus, 8, NULL, 0); =20 object_property_add_link(OBJECT(machine), PC_MACHINE_ACPI_DEVICE_P= ROP, TYPE_HOTPLUG_HANDLER, diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c index a4a7169398..bfea390825 100644 --- a/hw/i386/pc_q35.c +++ b/hw/i386/pc_q35.c @@ -317,7 +317,7 @@ static void pc_q35_init(MachineState *machine) TYPE_ICH9_SMB_DEVICE); pcms->smbus =3D I2C_BUS(qdev_get_child_bus(DEVICE(smb), "i2c")); =20 - smbus_eeprom_init(pcms->smbus, 8, NULL, 0); + smbus_eeprom_init(OBJECT(machine), pcms->smbus, 8, NULL, 0); } =20 /* the rest devices to which pci devfn is automatically assigned */ diff --git a/hw/mips/fuloong2e.c b/hw/mips/fuloong2e.c index 5e5ade46f3..0046423d40 100644 --- a/hw/mips/fuloong2e.c +++ b/hw/mips/fuloong2e.c @@ -322,7 +322,7 @@ static void mips_fuloong2e_init(MachineState *machine) =20 /* Populate SPD eeprom data */ spd_data =3D spd_data_generate(DDR, machine->ram_size); - smbus_eeprom_init_one(smbus, 0x50, spd_data); + smbus_eeprom_init_one(OBJECT(machine), smbus, 0x50, spd_data); =20 /* Network card: RTL8139D */ network_init(pci_bus); diff --git a/hw/mips/malta.c b/hw/mips/malta.c index da6dd15a59..52aae144da 100644 --- a/hw/mips/malta.c +++ b/hw/mips/malta.c @@ -1249,7 +1249,7 @@ void mips_malta_init(MachineState *machine) smbus =3D I2C_BUS(qdev_get_child_bus(dev, "i2c")); generate_eeprom_spd(&smbus_eeprom_buf[0 * 256], ram_size); generate_eeprom_serial(&smbus_eeprom_buf[6 * 256]); - smbus_eeprom_init(smbus, 8, smbus_eeprom_buf, smbus_eeprom_size); + smbus_eeprom_init(OBJECT(machine), smbus, 8, smbus_eeprom_buf, smbus_e= eprom_size); g_free(smbus_eeprom_buf); =20 /* Super I/O: SMS FDC37M817 */ diff --git a/hw/ppc/amigaone.c b/hw/ppc/amigaone.c index 80802d42c6..866e5547d6 100644 --- a/hw/ppc/amigaone.c +++ b/hw/ppc/amigaone.c @@ -338,9 +338,9 @@ static void amigaone_init(MachineState *machine) spd_data =3D spd_data_generate(SDR, machine->ram_size); } fix_spd_data(spd_data); - smbus_eeprom_init_one(i2c_bus, 0x51, spd_data); + smbus_eeprom_init_one(OBJECT(machine), i2c_bus, 0x51, spd_data); if (machine->ram_size > 512 * MiB) { - smbus_eeprom_init_one(i2c_bus, 0x52, spd_data); + smbus_eeprom_init_one(OBJECT(machine), i2c_bus, 0x52, spd_data); } =20 pci_mem =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 1); diff --git a/hw/ppc/pegasos.c b/hw/ppc/pegasos.c index bba73f60c8..2974625f1c 100644 --- a/hw/ppc/pegasos.c +++ b/hw/ppc/pegasos.c @@ -261,7 +261,7 @@ static void pegasos_init(MachineState *machine) dev =3D PCI_DEVICE(object_resolve_path_component(via, "pm")); i2c_bus =3D I2C_BUS(qdev_get_child_bus(DEVICE(dev), "i2c")); spd_data =3D spd_data_generate(DDR, machine->ram_size); - smbus_eeprom_init_one(i2c_bus, 0x57, spd_data); + smbus_eeprom_init_one(OBJECT(machine), i2c_bus, 0x57, spd_data); =20 /* other PC hardware */ pci_vga_init(pci_bus); diff --git a/hw/ppc/sam460ex.c b/hw/ppc/sam460ex.c index d23d2c2bd8..8623848633 100644 --- a/hw/ppc/sam460ex.c +++ b/hw/ppc/sam460ex.c @@ -343,7 +343,7 @@ static void sam460ex_init(MachineState *machine) spd_data =3D spd_data_generate(machine->ram_size < 128 * MiB ? DDR : D= DR2, machine->ram_size); spd_data[20] =3D 4; /* SO-DIMM module */ - smbus_eeprom_init_one(i2c, 0x50, spd_data); + smbus_eeprom_init_one(OBJECT(machine), i2c, 0x50, spd_data); /* RTC */ i2c_slave_create_simple_orphan(i2c, "m41t80", 0x68); =20 diff --git a/include/hw/i2c/smbus_eeprom.h b/include/hw/i2c/smbus_eeprom.h index 61a54cda76..f3aefada42 100644 --- a/include/hw/i2c/smbus_eeprom.h +++ b/include/hw/i2c/smbus_eeprom.h @@ -26,8 +26,9 @@ #include "system/ram_addr.h" #include "hw/i2c/i2c.h" =20 -void smbus_eeprom_init_one(I2CBus *bus, uint8_t address, uint8_t *eeprom_b= uf); -void smbus_eeprom_init(I2CBus *bus, int nb_eeprom, +void smbus_eeprom_init_one(Object *parent, I2CBus *bus, uint8_t address, + uint8_t *eeprom_buf); +void smbus_eeprom_init(Object *parent, I2CBus *bus, int nb_eeprom, const uint8_t *eeprom_spd, int size); =20 enum sdram_type { SDR =3D 0x4, DDR =3D 0x7, DDR2 =3D 0x8 }; --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411505; cv=none; d=zohomail.com; s=zohoarc; b=LasNjRnLChF0H8MrgfYHknoJpUH+U2MsAUGiUUwO0QjhuTkl0Xeq2fzla0Pmqz7+VoyukBD83Eg3QK4mImcoK6kv6La54D/w2qmpFWNZcmxdnaK7aGS/4Wfw+zlZj4JJY3cw0POt8+YOd6BA44JpAoUb2V65xtQlYKu+l+2dD/Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411505; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=clf52KE9pgM7VesC56IrHnovwJKnJu1ABA8HGPTXyfM=; b=i+KVdbnxz9kj2U6xgL+3oY4HW8W2QZVYiezBeaN0utmCFb6EnCnNF7nUulY2/msKI01Az0XNtiv5cGsPtIrDnuQRljOM/jKa8B9t6AC4dOZcGRa/258jClIEmqBxh1pypgNZ04wV+n+Zm6G7dCqysV3jxRmfdn6HhVP6vEumBzE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411505169666.5548065736286; Sat, 18 Jul 2026 14:51:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCve-0001DK-J4; Sat, 18 Jul 2026 17:50:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCvd-0001A7-DG; Sat, 18 Jul 2026 17:50:37 -0400 Received: from pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com ([35.155.198.111]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCva-0003m6-1J; Sat, 18 Jul 2026 17:50:37 -0400 Received: from ip-10-5-9-48.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.9.48]) by internal-pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:50:29 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.51:31281] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.151:2525] with esmtp (Farcaster) id bfd38e57-1315-49e7-8de3-d4425c8e4339; Sat, 18 Jul 2026 21:50:29 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC002.ant.amazon.com (10.250.64.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:50:29 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:50:19 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411434; x=1815947434; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=clf52KE9pgM7VesC56IrHnovwJKnJu1ABA8HGPTXyfM=; b=dcE4D60EC0zNK39t9Xa6d7HB4rnRQbco8yyg/sWibLULl637C7QlmhB6 KW5JfndQKGHkDOhec9xtx+ieBpHv6/P6750HmcZtPEcmLlIhJpDxMy8dh bG8aX3xT2+Jdy6cfd636t+1fllzfi2rUr6EXdfknvjjyijNPdI0u87Hsu 6Z4NHTv6+rhAVq2uR8q0EDH32OYE6BG47wGvg3KIO11rhKGCSm2U2ncnj ylmI27Ka5fFU+vsY3eVC3NV+jQFzFQBgHcpVsh0N68tvY1GfKyfEDsJHM +nITUOUYgRWykbHmg2VDdbuZbrvZXe88ZTZPe8I7SXa4zgjI2XpAHLN3t g==; X-CSE-ConnectionGUID: wd43qVlCQw+EcaR7lFcqIA== X-CSE-MsgGUID: j6/6sU9uTkGyw1DyTjxHWQ== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23816577" X-Farcaster-Flow-ID: bfd38e57-1315-49e7-8de3-d4425c8e4339 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 048/137] hw/block: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:23 +0000 Message-ID: <20260718213652.37673-49-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D039UWB001.ant.amazon.com (10.13.138.119) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=35.155.198.111; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411506075158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/block to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/block/fdc-sysbus.c:105 | qdev_new | parent | "fdc" | helper called from = mips_jazz board init; thread Object *parent through fdctrl_init_sysbus() hw/block/fdc-sysbus.c:121 | qdev_new | parent | "fdc" | helper called from = sun4m board init; thread Object *parent through sun4m_fdctrl_init() hw/block/fdc.c:2332 | qdev_new | OBJECT(bus->bus.parent) | "floppy[*]" | dr= ive is child of the FDC device that owns the FloppyBus hw/block/pflash_cfi01.c:961 | qdev_new | parent | name | helper already rec= eives QOM name; thread Object *parent through pflash_cfi01_register() and i= ts 9 board callers hw/block/pflash_cfi02.c:1008 | qdev_new | parent | name | helper already re= ceives QOM name; thread Object *parent through pflash_cfi02_register() and = its 4 board callers hw/block/xen-block.c:1077 | qdev_new_orphan | ORPHAN-JUSTIFIED | - | XenBac= kend .create() callback; hotplugged device analogous to qdev_device_add() p= ath, parented later on realize into xenbus Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/arm/collie.c | 2 +- hw/arm/digic_boards.c | 2 +- hw/arm/musicpal.c | 3 ++- hw/arm/omap_sx1.c | 4 ++-- hw/arm/versatilepb.c | 2 +- hw/arm/xilinx_zynq.c | 2 +- hw/block/fdc-sysbus.c | 13 +++++++------ hw/block/fdc.c | 4 ++-- hw/block/pflash_cfi01.c | 6 +++--- hw/block/pflash_cfi02.c | 6 +++--- hw/microblaze/petalogix_ml605_mmu.c | 3 ++- hw/microblaze/petalogix_s3adsp1800_mmu.c | 2 +- hw/mips/jazz.c | 3 ++- hw/mips/malta.c | 2 +- hw/ppc/sam460ex.c | 7 ++++--- hw/ppc/virtex_ml507.c | 2 +- hw/sh4/r2d.c | 2 +- hw/sparc/sun4m.c | 2 +- include/hw/block/fdc.h | 5 +++-- include/hw/block/flash.h | 4 ++-- 20 files changed, 41 insertions(+), 35 deletions(-) diff --git a/hw/arm/collie.c b/hw/arm/collie.c index 81bc019460..b3646daa3b 100644 --- a/hw/arm/collie.c +++ b/hw/arm/collie.c @@ -58,7 +58,7 @@ static void collie_init(MachineState *machine) =20 for (unsigned i =3D 0; i < 2; i++) { DriveInfo *dinfo =3D drive_get(IF_PFLASH, 0, i); - pflash_cfi01_register(i ? SA_CS1 : SA_CS0, + pflash_cfi01_register(OBJECT(machine), i ? SA_CS1 : SA_CS0, i ? "collie.fl2" : "collie.fl1", FLASH_SIZE, dinfo ? blk_by_legacy_dinfo(dinfo) : NULL, FLASH_SECTOR_SIZE, 4, 0x00, 0x00, 0x00, 0x00= , 0); diff --git a/hw/arm/digic_boards.c b/hw/arm/digic_boards.c index ed12f54200..92b66f34f7 100644 --- a/hw/arm/digic_boards.c +++ b/hw/arm/digic_boards.c @@ -117,7 +117,7 @@ static void digic4_add_k8p3215uqb_rom(DigicState *s, hw= addr addr, #define FLASH_K8P3215UQB_SIZE (4 * 1024 * 1024) #define FLASH_K8P3215UQB_SECTOR_SIZE (64 * 1024) =20 - pflash_cfi02_register(addr, "pflash", FLASH_K8P3215UQB_SIZE, + pflash_cfi02_register(OBJECT(s), addr, "pflash", FLASH_K8P3215UQB_SIZE, NULL, FLASH_K8P3215UQB_SECTOR_SIZE, DIGIC4_ROM_MAX_SIZE / FLASH_K8P3215UQB_SIZE, 4, diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c index a07359813e..43e15a4e48 100644 --- a/hw/arm/musicpal.c +++ b/hw/arm/musicpal.c @@ -1279,7 +1279,8 @@ static void musicpal_init(MachineState *machine) * 0xFF800000 (if there is 8 MB flash). So remap flash access if t= he * image is smaller than 32 MB. */ - pflash_cfi02_register(0x100000000ULL - MP_FLASH_SIZE_MAX, + pflash_cfi02_register(OBJECT(machine), + 0x100000000ULL - MP_FLASH_SIZE_MAX, "musicpal.flash", flash_size, blk, FLASH_SECTOR_SIZE, MP_FLASH_SIZE_MAX / flash_size, diff --git a/hw/arm/omap_sx1.c b/hw/arm/omap_sx1.c index bcb7105323..a468b045d4 100644 --- a/hw/arm/omap_sx1.c +++ b/hw/arm/omap_sx1.c @@ -150,7 +150,7 @@ static void sx1_init(MachineState *machine, const int v= ersion) =20 fl_idx =3D 0; if ((dinfo =3D drive_get(IF_PFLASH, 0, fl_idx)) !=3D NULL) { - pflash_cfi01_register(OMAP_CS0_BASE, + pflash_cfi01_register(OBJECT(machine), OMAP_CS0_BASE, "omap_sx1.flash0-1", flash_size, blk_by_legacy_dinfo(dinfo), SECTOR_SIZE, 4, 0, 0, 0, 0, 0); @@ -169,7 +169,7 @@ static void sx1_init(MachineState *machine, const int v= ersion) memory_region_add_subregion(address_space, OMAP_CS1_BASE + FLASH1_SIZE, &cs[1]); =20 - pflash_cfi01_register(OMAP_CS1_BASE, + pflash_cfi01_register(OBJECT(machine), OMAP_CS1_BASE, "omap_sx1.flash1-1", FLASH1_SIZE, blk_by_legacy_dinfo(dinfo), SECTOR_SIZE, 4, 0, 0, 0, 0, 0); diff --git a/hw/arm/versatilepb.c b/hw/arm/versatilepb.c index 5de99cb854..59bb2d1346 100644 --- a/hw/arm/versatilepb.c +++ b/hw/arm/versatilepb.c @@ -391,7 +391,7 @@ static void versatile_init(MachineState *machine, int b= oard_id) /* 0x34000000 NOR Flash */ =20 dinfo =3D drive_get(IF_PFLASH, 0, 0); - pflash_cfi01_register(VERSATILE_FLASH_ADDR, "versatile.flash", + pflash_cfi01_register(OBJECT(machine), VERSATILE_FLASH_ADDR, "versatil= e.flash", VERSATILE_FLASH_SIZE, dinfo ? blk_by_legacy_dinfo(dinfo) : NULL, VERSATILE_FLASH_SECT_SIZE, diff --git a/hw/arm/xilinx_zynq.c b/hw/arm/xilinx_zynq.c index 7f31cd6088..ba00c5a3aa 100644 --- a/hw/arm/xilinx_zynq.c +++ b/hw/arm/xilinx_zynq.c @@ -242,7 +242,7 @@ static void zynq_init(MachineState *machine) DriveInfo *dinfo =3D drive_get(IF_PFLASH, 0, 0); =20 /* AMD */ - pflash_cfi02_register(0xe2000000, "zynq.pflash", FLASH_SIZE, + pflash_cfi02_register(OBJECT(machine), 0xe2000000, "zynq.pflash", FLAS= H_SIZE, dinfo ? blk_by_legacy_dinfo(dinfo) : NULL, FLASH_SECTOR_SIZE, 1, 1, 0x0066, 0x0022, 0x0000, 0x0000, 0x0555, 0x2aa, diff --git a/hw/block/fdc-sysbus.c b/hw/block/fdc-sysbus.c index 4050750e65..955abb9c4c 100644 --- a/hw/block/fdc-sysbus.c +++ b/hw/block/fdc-sysbus.c @@ -96,30 +96,31 @@ static void fdctrl_handle_tc(void *opaque, int irq, int= level) trace_fdctrl_tc_pulse(level); } =20 -void fdctrl_init_sysbus(qemu_irq irq, hwaddr mmio_base, DriveInfo **fds) +void fdctrl_init_sysbus(Object *parent, qemu_irq irq, hwaddr mmio_base, + DriveInfo **fds) { DeviceState *dev; SysBusDevice *sbd; FDCtrlSysBus *sys; =20 - dev =3D qdev_new_orphan("sysbus-fdc"); + dev =3D qdev_new(parent, "fdc", "sysbus-fdc"); sys =3D SYSBUS_FDC(dev); sbd =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(sbd, &error_fatal); + sysbus_realize(sbd, &error_fatal); sysbus_connect_irq(sbd, 0, irq); sysbus_mmio_map(sbd, 0, mmio_base); =20 fdctrl_init_drives(&sys->state.bus, fds); } =20 -void sun4m_fdctrl_init(qemu_irq irq, hwaddr io_base, +void sun4m_fdctrl_init(Object *parent, qemu_irq irq, hwaddr io_base, DriveInfo **fds, qemu_irq *fdc_tc) { DeviceState *dev; FDCtrlSysBus *sys; =20 - dev =3D qdev_new_orphan("sun-fdtwo"); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + dev =3D qdev_new(parent, "fdc", "sun-fdtwo"); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sys =3D SYSBUS_FDC(dev); sysbus_connect_irq(SYS_BUS_DEVICE(sys), 0, irq); sysbus_mmio_map(SYS_BUS_DEVICE(sys), 0, io_base); diff --git a/hw/block/fdc.c b/hw/block/fdc.c index baac5f3c19..02508c79aa 100644 --- a/hw/block/fdc.c +++ b/hw/block/fdc.c @@ -2329,12 +2329,12 @@ void fdctrl_init_drives(FloppyBus *bus, DriveInfo *= *fds) =20 for (i =3D 0; i < MAX_FD; i++) { if (fds[i]) { - dev =3D qdev_new_orphan("floppy"); + dev =3D qdev_new(OBJECT(bus->bus.parent), "floppy[*]", "floppy= "); qdev_prop_set_uint32(dev, "unit", i); qdev_prop_set_enum(dev, "drive-type", FLOPPY_DRIVE_TYPE_AUTO); qdev_prop_set_drive_err(dev, "drive", blk_by_legacy_dinfo(fds[= i]), &error_fatal); - qdev_realize_and_unref(dev, &bus->bus, &error_fatal); + qdev_realize(dev, &bus->bus, &error_fatal); } } } diff --git a/hw/block/pflash_cfi01.c b/hw/block/pflash_cfi01.c index 0466682ca8..d584d7ea9f 100644 --- a/hw/block/pflash_cfi01.c +++ b/hw/block/pflash_cfi01.c @@ -948,7 +948,7 @@ static const TypeInfo pflash_cfi01_types[] =3D { =20 DEFINE_TYPES(pflash_cfi01_types) =20 -PFlashCFI01 *pflash_cfi01_register(hwaddr base, +PFlashCFI01 *pflash_cfi01_register(Object *parent, hwaddr base, const char *name, hwaddr size, BlockBackend *blk, @@ -958,7 +958,7 @@ PFlashCFI01 *pflash_cfi01_register(hwaddr base, uint16_t id2, uint16_t id3, int be) { - DeviceState *dev =3D qdev_new_orphan(TYPE_PFLASH_CFI01); + DeviceState *dev =3D qdev_new(parent, name, TYPE_PFLASH_CFI01); =20 if (blk) { qdev_prop_set_drive(dev, "drive", blk); @@ -973,7 +973,7 @@ PFlashCFI01 *pflash_cfi01_register(hwaddr base, qdev_prop_set_uint16(dev, "id2", id2); qdev_prop_set_uint16(dev, "id3", id3); qdev_prop_set_string(dev, "name", name); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, base); return PFLASH_CFI01(dev); diff --git a/hw/block/pflash_cfi02.c b/hw/block/pflash_cfi02.c index a22bdc5830..0dbd173be0 100644 --- a/hw/block/pflash_cfi02.c +++ b/hw/block/pflash_cfi02.c @@ -993,7 +993,7 @@ static void pflash_cfi02_register_types(void) =20 type_init(pflash_cfi02_register_types) =20 -PFlashCFI02 *pflash_cfi02_register(hwaddr base, +PFlashCFI02 *pflash_cfi02_register(Object *parent, hwaddr base, const char *name, hwaddr size, BlockBackend *blk, @@ -1005,7 +1005,7 @@ PFlashCFI02 *pflash_cfi02_register(hwaddr base, uint16_t unlock_addr1, int be) { - DeviceState *dev =3D qdev_new_orphan(TYPE_PFLASH_CFI02); + DeviceState *dev =3D qdev_new(parent, name, TYPE_PFLASH_CFI02); =20 if (blk) { qdev_prop_set_drive(dev, "drive", blk); @@ -1023,7 +1023,7 @@ PFlashCFI02 *pflash_cfi02_register(hwaddr base, qdev_prop_set_uint16(dev, "unlock-addr0", unlock_addr0); qdev_prop_set_uint16(dev, "unlock-addr1", unlock_addr1); qdev_prop_set_string(dev, "name", name); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, base); return PFLASH_CFI02(dev); diff --git a/hw/microblaze/petalogix_ml605_mmu.c b/hw/microblaze/petalogix_= ml605_mmu.c index 031de37cec..b77df1132b 100644 --- a/hw/microblaze/petalogix_ml605_mmu.c +++ b/hw/microblaze/petalogix_ml605_mmu.c @@ -105,7 +105,8 @@ petalogix_ml605_init(MachineState *machine) dinfo =3D drive_get(IF_PFLASH, 0, 0); /* 5th parameter 2 means bank-width * 10th parameter 0 means little-endian */ - pflash_cfi01_register(FLASH_BASEADDR, "petalogix_ml605.flash", FLASH_S= IZE, + pflash_cfi01_register(OBJECT(machine), FLASH_BASEADDR, + "petalogix_ml605.flash", FLASH_SIZE, dinfo ? blk_by_legacy_dinfo(dinfo) : NULL, 64 * KiB, 2, 0x89, 0x18, 0x0000, 0x0, 0); =20 diff --git a/hw/microblaze/petalogix_s3adsp1800_mmu.c b/hw/microblaze/petal= ogix_s3adsp1800_mmu.c index b4327ad493..0979d3632b 100644 --- a/hw/microblaze/petalogix_s3adsp1800_mmu.c +++ b/hw/microblaze/petalogix_s3adsp1800_mmu.c @@ -102,7 +102,7 @@ petalogix_s3adsp1800_init(MachineState *machine) memory_region_add_subregion(sysmem, ddr_base, phys_ram); =20 dinfo =3D drive_get(IF_PFLASH, 0, 0); - pflash_cfi01_register(FLASH_BASEADDR, + pflash_cfi01_register(OBJECT(machine), FLASH_BASEADDR, "petalogix_s3adsp1800.flash", FLASH_SIZE, dinfo ? blk_by_legacy_dinfo(dinfo) : NULL, 64 * KiB, 1, 0x89, 0x18, 0x0000, 0x0, 1); diff --git a/hw/mips/jazz.c b/hw/mips/jazz.c index 938aaf3fe1..13eaa2d2ec 100644 --- a/hw/mips/jazz.c +++ b/hw/mips/jazz.c @@ -351,7 +351,8 @@ static void mips_jazz_init(MachineState *machine, fds[n] =3D drive_get(IF_FLOPPY, 0, n); } /* FIXME: we should enable DMA with a custom IsaDma device */ - fdctrl_init_sysbus(qdev_get_gpio_in(rc4030, 1), 0x80003000, fds); + fdctrl_init_sysbus(OBJECT(machine), qdev_get_gpio_in(rc4030, 1), + 0x80003000, fds); =20 /* Real time clock */ mc146818_rtc_init(OBJECT(machine), isa_bus, 1980, NULL); diff --git a/hw/mips/malta.c b/hw/mips/malta.c index 52aae144da..8dc7429ac9 100644 --- a/hw/mips/malta.c +++ b/hw/mips/malta.c @@ -1137,7 +1137,7 @@ void mips_malta_init(MachineState *machine) =20 /* Load firmware in flash / BIOS. */ dinfo =3D drive_get(IF_PFLASH, 0, fl_idx); - fl =3D pflash_cfi01_register(FLASH_ADDRESS, "mips_malta.bios", + fl =3D pflash_cfi01_register(OBJECT(machine), FLASH_ADDRESS, "mips_mal= ta.bios", FLASH_SIZE, dinfo ? blk_by_legacy_dinfo(dinfo) : NULL, 65536, diff --git a/hw/ppc/sam460ex.c b/hw/ppc/sam460ex.c index 8623848633..41d4670fa8 100644 --- a/hw/ppc/sam460ex.c +++ b/hw/ppc/sam460ex.c @@ -83,7 +83,7 @@ struct boot_info { uint32_t entry; }; =20 -static int sam460ex_load_uboot(void) +static int sam460ex_load_uboot(Object *parent) { /* * This first creates 1MiB of flash memory mapped at the end of @@ -106,7 +106,8 @@ static int sam460ex_load_uboot(void) DriveInfo *dinfo; =20 dinfo =3D drive_get(IF_PFLASH, 0, 0); - if (!pflash_cfi01_register(FLASH_BASE | ((hwaddr)FLASH_BASE_H << 32), + if (!pflash_cfi01_register(parent, + FLASH_BASE | ((hwaddr)FLASH_BASE_H << 32), "sam460ex.flash", FLASH_SIZE, dinfo ? blk_by_legacy_dinfo(dinfo) : NULL, 64 * KiB, 1, 0x89, 0x18, 0x0000, 0x0, 1)) { @@ -459,7 +460,7 @@ static void sam460ex_init(MachineState *machine) =20 /* Load U-Boot image. */ if (!machine->kernel_filename) { - success =3D sam460ex_load_uboot(); + success =3D sam460ex_load_uboot(OBJECT(machine)); if (success < 0) { error_report("could not load firmware"); exit(1); diff --git a/hw/ppc/virtex_ml507.c b/hw/ppc/virtex_ml507.c index 9163d8acf8..1379c168d3 100644 --- a/hw/ppc/virtex_ml507.c +++ b/hw/ppc/virtex_ml507.c @@ -213,7 +213,7 @@ static void virtex_init(MachineState *machine) memory_region_add_subregion(address_space_mem, ram_base, machine->ram); =20 dinfo =3D drive_get(IF_PFLASH, 0, 0); - pflash_cfi01_register(PFLASH_BASEADDR, "virtex.flash", FLASH_SIZE, + pflash_cfi01_register(OBJECT(machine), PFLASH_BASEADDR, "virtex.flash"= , FLASH_SIZE, dinfo ? blk_by_legacy_dinfo(dinfo) : NULL, 64 * KiB, 1, 0x89, 0x18, 0x0000, 0x0, 1); =20 diff --git a/hw/sh4/r2d.c b/hw/sh4/r2d.c index c0f8cad335..c03df91aca 100644 --- a/hw/sh4/r2d.c +++ b/hw/sh4/r2d.c @@ -309,7 +309,7 @@ static void r2d_init(MachineState *machine) * addressable in words of 16bit. */ dinfo =3D drive_get(IF_PFLASH, 0, 0); - pflash_cfi02_register(0x0, "r2d.flash", FLASH_SIZE, + pflash_cfi02_register(OBJECT(machine), 0x0, "r2d.flash", FLASH_SIZE, dinfo ? blk_by_legacy_dinfo(dinfo) : NULL, 64 * KiB, 1, 2, 0x0001, 0x227e, 0x2220, 0x2200, 0x555, 0x2aa, 0); diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c index b0f018a3c5..144345d46a 100644 --- a/hw/sparc/sun4m.c +++ b/hw/sparc/sun4m.c @@ -1015,7 +1015,7 @@ static void sun4m_hw_init(MachineState *machine) /* there is zero or one floppy drive */ memset(fd, 0, sizeof(fd)); fd[0] =3D drive_get(IF_FLOPPY, 0, 0); - sun4m_fdctrl_init(slavio_irq[22], hwdef->fd_base, fd, + sun4m_fdctrl_init(OBJECT(machine), slavio_irq[22], hwdef->fd_base,= fd, &fdc_tc); } else { fdc_tc =3D qemu_allocate_irq(dummy_fdc_tc, NULL, 0); diff --git a/include/hw/block/fdc.h b/include/hw/block/fdc.h index c367c5efea..7ff6681835 100644 --- a/include/hw/block/fdc.h +++ b/include/hw/block/fdc.h @@ -10,8 +10,9 @@ #define TYPE_ISA_FDC "isa-fdc" =20 void isa_fdc_init_drives(ISADevice *fdc, DriveInfo **fds); -void fdctrl_init_sysbus(qemu_irq irq, hwaddr mmio_base, DriveInfo **fds); -void sun4m_fdctrl_init(qemu_irq irq, hwaddr io_base, +void fdctrl_init_sysbus(Object *parent, qemu_irq irq, hwaddr mmio_base, + DriveInfo **fds); +void sun4m_fdctrl_init(Object *parent, qemu_irq irq, hwaddr io_base, DriveInfo **fds, qemu_irq *fdc_tc); =20 void isa_fdc_set_iobase(ISADevice *fdc, hwaddr iobase); diff --git a/include/hw/block/flash.h b/include/hw/block/flash.h index 3671f0174d..c005b707b2 100644 --- a/include/hw/block/flash.h +++ b/include/hw/block/flash.h @@ -12,7 +12,7 @@ OBJECT_DECLARE_SIMPLE_TYPE(PFlashCFI01, PFLASH_CFI01) =20 =20 -PFlashCFI01 *pflash_cfi01_register(hwaddr base, +PFlashCFI01 *pflash_cfi01_register(Object *parent, hwaddr base, const char *name, hwaddr size, BlockBackend *blk, @@ -31,7 +31,7 @@ void pflash_cfi01_legacy_drive(PFlashCFI01 *dev, DriveInf= o *dinfo); OBJECT_DECLARE_SIMPLE_TYPE(PFlashCFI02, PFLASH_CFI02) =20 =20 -PFlashCFI02 *pflash_cfi02_register(hwaddr base, +PFlashCFI02 *pflash_cfi02_register(Object *parent, hwaddr base, const char *name, hwaddr size, BlockBackend *blk, --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411503; cv=none; d=zohomail.com; s=zohoarc; b=c/gdBK8FCy3WuO+FlIIHlJnpAGg5UgN762xXRbilFEpF8XaCNxgyBvX39LH5gKRpEd9AXSg3ljJJjdj6qLQ5vtrdHZUikytGdB8Zt1PHFo4i4ktKHTh5UGZgnmHwc2+UyoIwvfDGc+PqdBqwbVvIV9mWxDzF+XoglwlEXs9h5fE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411503; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=5LjASN1hs9znu0rglgqwL2J7wlBaZZQroFQNY57/utc=; b=HfyCt0/EDRJBJNm4b0LtxIUwybZpcvta/VQ+Kw4wbh1cuBS8eeMfKGHuPHwTd7KIkwKNvWZh+boK2Sqi2ZLUKoETikJGs+PkJAMr5PwzHFVk/l4eF7zO4oQ8AJCheRcG+SMY7Eb23P/NhXk6Rj5PXcjNLC/Ybth1Lt6dUWyqE2M= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411503916292.7437619428101; Sat, 18 Jul 2026 14:51:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCvq-0001Tu-SF; Sat, 18 Jul 2026 17:50:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCvp-0001RQ-5Q; Sat, 18 Jul 2026 17:50:49 -0400 Received: from pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.42.203.116]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCvj-0003qk-KX; Sat, 18 Jul 2026 17:50:48 -0400 Received: from ip-10-5-12-219.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.12.219]) by internal-pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:50:39 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.53:2616] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.35.17:2525] with esmtp (Farcaster) id a750c74b-d457-4262-aa44-236b3d8eeb6d; Sat, 18 Jul 2026 21:50:39 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC001.ant.amazon.com (10.250.64.174) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:50:39 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:50:29 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411443; x=1815947443; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=5LjASN1hs9znu0rglgqwL2J7wlBaZZQroFQNY57/utc=; b=HEeY6j/ItWaU0qmdianowKFvdTpQBWlK1o59R5KDXqEqM8Ct6GNA9ZcG j9TuCvkOzsAOQzFZ/rvQXC/bp/EBmf9WIhsb+Ow6syytKTIVLS+GEWk/k 0Htp1v11fYLmVH/WBNZNmt2CKP8U77cc0cDI6Re+Mdi5/POh+VTJWRT1+ s6X8Trf7t3iTaRtgeD3bwd02rQRIdnv5pNJjQQboWXvycO20rtDgyAOyc Q2YtQ7b0CmSGtMOGHTvpE0sBc8Afe0doFswxkT8Qnc9/X3j83xpxpOgzW XDZ3jRShUau8tTRJjPB1XbmEJNdl+lUnN1yjLB4VxegOWw/BqH0cwQn8+ w==; X-CSE-ConnectionGUID: QuS7MO9CSZWxK+jKC0IYnw== X-CSE-MsgGUID: r7zneoKGSVeJvNkv7wS8OA== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23939791" X-Farcaster-Flow-ID: a750c74b-d457-4262-aa44-236b3d8eeb6d From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 049/137] hw/char: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:24 +0000 Message-ID: <20260718213652.37673-50-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D039UWB001.ant.amazon.com (10.13.138.119) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.42.203.116; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411506078158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/char to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The public serial helpers serial_mm_init(), serial_hds_isa_init(), parallel_hds_isa_init(), pl011_create(), sifive_uart_create(), xilinx_uartlite_create() and mcf_uart_create*() gain a leading Object *parent argument, threaded through from every board caller. Per-site rationale (reviewers: dispute the modeling here): hw/char/exynos4210_uart.c:662 | qdev_new | parent | "uart[*]" | helper call= ed from Exynos4210 SoC realize; thread Object *parent hw/char/mcf_uart.c:354 | qdev_new | parent | "uart[*]" | helper called from= mcf5206 mbar realize and mcf5208 board init; thread Object *parent through= mcf_uart_create() + mcf_uart_create_mmap() hw/char/mchp_pfsoc_mmuart.c:153 | qdev_new | parent | "uart[*]" | helper ca= lled from PolarFire SoC realize; thread Object *parent; note site already u= ses sysbus_realize (no _and_unref) so leave as-is hw/char/parallel-isa.c:25 | isa_new | parent | "parallel[*]" | static helpe= r called from parallel_hds_isa_init(); thread Object *parent through both a= nd update pc.c + sun4u.c callers hw/char/pl011.c:41 | qdev_new | parent | "uart[*]" | helper called from man= y ARM board inits; thread Object *parent through pl011_create() hw/char/serial-isa.c:168 | isa_new | parent | "serial[*]" | static helper c= alled from serial_hds_isa_init(); thread Object *parent through both and up= date microvm/pc/pnv/sun4u callers hw/char/serial-mm.c:102 | qdev_new | parent | "serial[*]" | very widely use= d helper; thread Object *parent through serial_mm_init() and update all 41 = callers hw/char/sifive_uart.c:402 | qdev_new | parent | "uart[*]" | helper called f= rom SiFive E/U SoC realize; thread Object *parent hw/char/spapr_vty.c:161 | qdev_new | parent | "vty[*]" | helper called from= spapr_machine_init loop; thread Object *parent hw/char/xen_console.c:565 | qdev_new_orphan | ORPHAN-JUSTIFIED | - | XenBac= kend .create() callback; hotplugged device analogous to qdev_device_add() p= ath Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/arm/allwinner-a10.c | 2 +- hw/arm/allwinner-h3.c | 8 ++++---- hw/arm/allwinner-r40.c | 2 +- hw/arm/exynos4210.c | 8 ++++---- hw/arm/integratorcp.c | 4 ++-- hw/arm/kzm.c | 2 +- hw/arm/msf2-soc.c | 2 +- hw/arm/musicpal.c | 4 ++-- hw/arm/npcm7xx.c | 2 +- hw/arm/npcm8xx.c | 2 +- hw/arm/omap1.c | 8 ++++---- hw/arm/omap_sx1.c | 2 +- hw/arm/realview.c | 8 ++++---- hw/arm/versatilepb.c | 8 ++++---- hw/arm/vexpress.c | 8 ++++---- hw/char/exynos4210_uart.c | 6 +++--- hw/char/mcf_uart.c | 11 ++++++----- hw/char/mchp_pfsoc_mmuart.c | 4 ++-- hw/char/omap_uart.c | 4 ++-- hw/char/parallel-isa.c | 10 +++++----- hw/char/pl011.c | 6 +++--- hw/char/serial-isa.c | 11 ++++++----- hw/char/serial-mm.c | 6 +++--- hw/char/sifive_uart.c | 8 ++++---- hw/char/spapr_vty.c | 6 +++--- hw/hppa/machine.c | 9 ++++++--- hw/i386/microvm.c | 2 +- hw/i386/pc.c | 8 ++++---- hw/loongarch/virt.c | 2 +- hw/m68k/mcf5206.c | 4 ++-- hw/m68k/mcf5208.c | 9 ++++++--- hw/microblaze/petalogix_ml605_mmu.c | 2 +- hw/mips/boston.c | 3 ++- hw/mips/jazz.c | 4 ++-- hw/mips/loongson3_virt.c | 2 +- hw/mips/malta.c | 7 ++++--- hw/or1k/or1k-sim.c | 2 +- hw/or1k/virt.c | 2 +- hw/ppc/e500.c | 4 ++-- hw/ppc/pnv.c | 2 +- hw/ppc/ppc440_bamboo.c | 4 ++-- hw/ppc/sam460ex.c | 4 ++-- hw/ppc/spapr.c | 2 +- hw/ppc/virtex_ml507.c | 3 ++- hw/riscv/boston-aia.c | 3 ++- hw/riscv/k230.c | 8 ++++---- hw/riscv/microblaze-v-generic.c | 2 +- hw/riscv/microchip_pfsoc.c | 10 +++++----- hw/riscv/sifive_e.c | 4 ++-- hw/riscv/sifive_u.c | 4 ++-- hw/riscv/tt_atlantis.c | 2 +- hw/riscv/virt.c | 2 +- hw/riscv/xiangshan_kmh.c | 2 +- hw/sparc64/niagara.c | 2 +- hw/sparc64/sun4u.c | 6 +++--- hw/xtensa/xtfpga.c | 2 +- include/hw/arm/exynos4210.h | 2 +- include/hw/arm/omap.h | 4 ++-- include/hw/char/mchp_pfsoc_mmuart.h | 2 +- include/hw/char/parallel.h | 2 +- include/hw/char/pl011.h | 2 +- include/hw/char/serial-isa.h | 2 +- include/hw/char/serial-mm.h | 2 +- include/hw/char/sifive_uart.h | 4 ++-- include/hw/m68k/mcf.h | 5 +++-- include/hw/ppc/spapr_vio.h | 2 +- 66 files changed, 152 insertions(+), 139 deletions(-) diff --git a/hw/arm/allwinner-a10.c b/hw/arm/allwinner-a10.c index 66f30757dd..cbc0b38986 100644 --- a/hw/arm/allwinner-a10.c +++ b/hw/arm/allwinner-a10.c @@ -156,7 +156,7 @@ static void aw_a10_realize(DeviceState *dev, Error **er= rp) sysbus_connect_irq(SYS_BUS_DEVICE(&s->sata), 0, qdev_get_gpio_in(dev, = 56)); =20 /* FIXME use a qdev chardev prop instead of serial_hd() */ - serial_mm_init(get_system_memory(), AW_A10_UART0_REG_BASE, 2, + serial_mm_init(OBJECT(s), get_system_memory(), AW_A10_UART0_REG_BASE, = 2, qdev_get_gpio_in(dev, 1), 115200, serial_hd(0), DEVICE_LITTLE_ENDIAN); =20 diff --git a/hw/arm/allwinner-h3.c b/hw/arm/allwinner-h3.c index 427dbad7c3..ce716d1687 100644 --- a/hw/arm/allwinner-h3.c +++ b/hw/arm/allwinner-h3.c @@ -406,19 +406,19 @@ static void allwinner_h3_realize(DeviceState *dev, Er= ror **errp) AW_H3_GIC_SPI_OHCI3)); =20 /* UART0. For future clocktree API: All UARTS are connected to APB2_CL= K. */ - serial_mm_init(get_system_memory(), s->memmap[AW_H3_DEV_UART0], 2, + serial_mm_init(OBJECT(s), get_system_memory(), s->memmap[AW_H3_DEV_UAR= T0], 2, qdev_get_gpio_in(DEVICE(&s->gic), AW_H3_GIC_SPI_UART0), 115200, serial_hd(0), DEVICE_LITTLE_ENDIAN); /* UART1 */ - serial_mm_init(get_system_memory(), s->memmap[AW_H3_DEV_UART1], 2, + serial_mm_init(OBJECT(s), get_system_memory(), s->memmap[AW_H3_DEV_UAR= T1], 2, qdev_get_gpio_in(DEVICE(&s->gic), AW_H3_GIC_SPI_UART1), 115200, serial_hd(1), DEVICE_LITTLE_ENDIAN); /* UART2 */ - serial_mm_init(get_system_memory(), s->memmap[AW_H3_DEV_UART2], 2, + serial_mm_init(OBJECT(s), get_system_memory(), s->memmap[AW_H3_DEV_UAR= T2], 2, qdev_get_gpio_in(DEVICE(&s->gic), AW_H3_GIC_SPI_UART2), 115200, serial_hd(2), DEVICE_LITTLE_ENDIAN); /* UART3 */ - serial_mm_init(get_system_memory(), s->memmap[AW_H3_DEV_UART3], 2, + serial_mm_init(OBJECT(s), get_system_memory(), s->memmap[AW_H3_DEV_UAR= T3], 2, qdev_get_gpio_in(DEVICE(&s->gic), AW_H3_GIC_SPI_UART3), 115200, serial_hd(3), DEVICE_LITTLE_ENDIAN); =20 diff --git a/hw/arm/allwinner-r40.c b/hw/arm/allwinner-r40.c index a1ae75deb6..4f9d8a606e 100644 --- a/hw/arm/allwinner-r40.c +++ b/hw/arm/allwinner-r40.c @@ -489,7 +489,7 @@ static void allwinner_r40_realize(DeviceState *dev, Err= or **errp) }; const hwaddr addr =3D s->memmap[AW_R40_DEV_UART0 + i]; =20 - serial_mm_init(get_system_memory(), addr, 2, + serial_mm_init(OBJECT(s), get_system_memory(), addr, 2, qdev_get_gpio_in(DEVICE(&s->gic), uart_irqs[i]), 115200, serial_hd(i), DEVICE_LITTLE_ENDIAN); } diff --git a/hw/arm/exynos4210.c b/hw/arm/exynos4210.c index 3199ea9cb7..7d9d87d7ba 100644 --- a/hw/arm/exynos4210.c +++ b/hw/arm/exynos4210.c @@ -723,19 +723,19 @@ static void exynos4210_realize(DeviceState *socdev, E= rror **errp) =20 =20 /*** UARTs ***/ - uart[0] =3D exynos4210_uart_create(EXYNOS4210_UART0_BASE_ADDR, + uart[0] =3D exynos4210_uart_create(OBJECT(s), EXYNOS4210_UART0_BASE_AD= DR, EXYNOS4210_UART0_FIFO_SIZE, 0, serial_hd(0), s->irq_table[exynos4210_get_irq(EXYNOS4210_UART_INT_GRP,= 0)]); =20 - uart[1] =3D exynos4210_uart_create(EXYNOS4210_UART1_BASE_ADDR, + uart[1] =3D exynos4210_uart_create(OBJECT(s), EXYNOS4210_UART1_BASE_AD= DR, EXYNOS4210_UART1_FIFO_SIZE, 1, serial_hd(1), s->irq_table[exynos4210_get_irq(EXYNOS4210_UART_INT_GRP,= 1)]); =20 - uart[2] =3D exynos4210_uart_create(EXYNOS4210_UART2_BASE_ADDR, + uart[2] =3D exynos4210_uart_create(OBJECT(s), EXYNOS4210_UART2_BASE_AD= DR, EXYNOS4210_UART2_FIFO_SIZE, 2, serial_hd(2), s->irq_table[exynos4210_get_irq(EXYNOS4210_UART_INT_GRP,= 2)]); =20 - uart[3] =3D exynos4210_uart_create(EXYNOS4210_UART3_BASE_ADDR, + uart[3] =3D exynos4210_uart_create(OBJECT(s), EXYNOS4210_UART3_BASE_AD= DR, EXYNOS4210_UART3_FIFO_SIZE, 3, serial_hd(3), s->irq_table[exynos4210_get_irq(EXYNOS4210_UART_INT_GRP,= 3)]); =20 diff --git a/hw/arm/integratorcp.c b/hw/arm/integratorcp.c index 163012a7bf..7560ad5983 100644 --- a/hw/arm/integratorcp.c +++ b/hw/arm/integratorcp.c @@ -637,8 +637,8 @@ static void integratorcp_init(MachineState *machine) sysbus_create_varargs_orphan("integrator_pit", 0x13000000, pic[5], pic[6], pic[7], NULL); sysbus_create_simple_orphan("pl031", 0x15000000, pic[8]); - pl011_create(0x16000000, pic[1], serial_hd(0)); - pl011_create(0x17000000, pic[2], serial_hd(1)); + pl011_create(OBJECT(machine), 0x16000000, pic[1], serial_hd(0)); + pl011_create(OBJECT(machine), 0x17000000, pic[2], serial_hd(1)); icp =3D sysbus_create_simple_orphan(TYPE_ICP_CONTROL_REGS, 0xcb000000, qdev_get_gpio_in(sic, 3)); sysbus_create_simple_orphan("pl050_keyboard", 0x18000000, pic[3]); diff --git a/hw/arm/kzm.c b/hw/arm/kzm.c index de9919c8cb..36e12bb362 100644 --- a/hw/arm/kzm.c +++ b/hw/arm/kzm.c @@ -120,7 +120,7 @@ static void kzm_init(MachineState *machine) } =20 if (serial_hd(2)) { /* touchscreen */ - serial_mm_init(get_system_memory(), KZM_FPGA_ADDR+0x10, 0, + serial_mm_init(OBJECT(machine), get_system_memory(), KZM_FPGA_ADDR= +0x10, 0, qdev_get_gpio_in(DEVICE(&s->soc.avic), 52), 14745600, serial_hd(2), DEVICE_NATIVE_ENDIAN); } diff --git a/hw/arm/msf2-soc.c b/hw/arm/msf2-soc.c index 27d77af9dc..76eba752bd 100644 --- a/hw/arm/msf2-soc.c +++ b/hw/arm/msf2-soc.c @@ -146,7 +146,7 @@ static void m2sxxx_soc_realize(DeviceState *dev_soc, Er= ror **errp) =20 for (i =3D 0; i < MSF2_NUM_UARTS; i++) { if (serial_hd(i)) { - serial_mm_init(get_system_memory(), uart_addr[i], 2, + serial_mm_init(OBJECT(s), get_system_memory(), uart_addr[i], 2, qdev_get_gpio_in(armv7m, uart_irq[i]), 115200, serial_hd(i), DEVICE_NATIVE_ENDIAN); } diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c index 43e15a4e48..d9fe08d57b 100644 --- a/hw/arm/musicpal.c +++ b/hw/arm/musicpal.c @@ -1255,10 +1255,10 @@ static void musicpal_init(MachineState *machine) qdev_connect_gpio_out(uart_orgate, 0, qdev_get_gpio_in(pic, MP_UART_SHARED_IRQ)); =20 - serial_mm_init(address_space_mem, MP_UART1_BASE, 2, + serial_mm_init(OBJECT(machine), address_space_mem, MP_UART1_BASE, 2, qdev_get_gpio_in(uart_orgate, 0), 1825000, serial_hd(0), DEVICE_NATIVE_ENDIAN); - serial_mm_init(address_space_mem, MP_UART2_BASE, 2, + serial_mm_init(OBJECT(machine), address_space_mem, MP_UART2_BASE, 2, qdev_get_gpio_in(uart_orgate, 1), 1825000, serial_hd(1), DEVICE_NATIVE_ENDIAN); =20 diff --git a/hw/arm/npcm7xx.c b/hw/arm/npcm7xx.c index 87734c1cfb..8363a04f10 100644 --- a/hw/arm/npcm7xx.c +++ b/hw/arm/npcm7xx.c @@ -588,7 +588,7 @@ static void npcm7xx_realize(DeviceState *dev, Error **e= rrp) =20 /* UART0..3 (16550 compatible) */ for (i =3D 0; i < ARRAY_SIZE(npcm7xx_uart_addr); i++) { - serial_mm_init(get_system_memory(), npcm7xx_uart_addr[i], 2, + serial_mm_init(OBJECT(s), get_system_memory(), npcm7xx_uart_addr[i= ], 2, npcm7xx_irq(s, NPCM7XX_UART0_IRQ + i), 115200, serial_hd(i), DEVICE_LITTLE_ENDIAN); } diff --git a/hw/arm/npcm8xx.c b/hw/arm/npcm8xx.c index 9ce6ea52d9..48fcc65a98 100644 --- a/hw/arm/npcm8xx.c +++ b/hw/arm/npcm8xx.c @@ -602,7 +602,7 @@ static void npcm8xx_realize(DeviceState *dev, Error **e= rrp) =20 /* UART0..6 (16550 compatible) */ for (i =3D 0; i < ARRAY_SIZE(npcm8xx_uart_addr); i++) { - serial_mm_init(get_system_memory(), npcm8xx_uart_addr[i], 2, + serial_mm_init(OBJECT(s), get_system_memory(), npcm8xx_uart_addr[i= ], 2, npcm8xx_irq(s, NPCM8XX_UART0_IRQ + i), 115200, serial_hd(i), DEVICE_LITTLE_ENDIAN); } diff --git a/hw/arm/omap1.c b/hw/arm/omap1.c index eefa2e441a..c86914a464 100644 --- a/hw/arm/omap1.c +++ b/hw/arm/omap1.c @@ -3738,7 +3738,7 @@ static int omap_validate_tipb_mpui_addr(struct omap_m= pu_state_s *s, return range_covers_byte(0xe1010000, 0xe1020004 - 0xe1010000, addr); } =20 -struct omap_mpu_state_s *omap310_mpu_init(MemoryRegion *dram, +struct omap_mpu_state_s *omap310_mpu_init(Object *parent, MemoryRegion *dr= am, const char *cpu_type) { int i; @@ -3842,21 +3842,21 @@ struct omap_mpu_state_s *omap310_mpu_init(MemoryReg= ion *dram, =20 omap_tcmi_init(system_memory, 0xfffecc00, s); =20 - s->uart[0] =3D omap_uart_init(0xfffb0000, + s->uart[0] =3D omap_uart_init(parent, 0xfffb0000, qdev_get_gpio_in(s->ih[1], OMAP_INT_UART1), omap_findclk(s, "uart1_ck"), omap_findclk(s, "uart1_ck"), s->drq[OMAP_DMA_UART1_TX], s->drq[OMAP_DMA_UART1_RX], "uart1", serial_hd(0)); - s->uart[1] =3D omap_uart_init(0xfffb0800, + s->uart[1] =3D omap_uart_init(parent, 0xfffb0800, qdev_get_gpio_in(s->ih[1], OMAP_INT_UART2), omap_findclk(s, "uart2_ck"), omap_findclk(s, "uart2_ck"), s->drq[OMAP_DMA_UART2_TX], s->drq[OMAP_DMA_UART2_RX], "uart2", serial_hd(0) ? serial_hd(1) : NULL); - s->uart[2] =3D omap_uart_init(0xfffb9800, + s->uart[2] =3D omap_uart_init(parent, 0xfffb9800, qdev_get_gpio_in(s->ih[0], OMAP_INT_UART3), omap_findclk(s, "uart3_ck"), omap_findclk(s, "uart3_ck"), diff --git a/hw/arm/omap_sx1.c b/hw/arm/omap_sx1.c index a468b045d4..1bd6c6d4bc 100644 --- a/hw/arm/omap_sx1.c +++ b/hw/arm/omap_sx1.c @@ -125,7 +125,7 @@ static void sx1_init(MachineState *machine, const int v= ersion) =20 memory_region_add_subregion(address_space, OMAP_EMIFF_BASE, machine->r= am); =20 - mpu =3D omap310_mpu_init(machine->ram, machine->cpu_type); + mpu =3D omap310_mpu_init(OBJECT(machine), machine->ram, machine->cpu_t= ype); =20 /* External Flash (EMIFS) */ memory_region_init_rom(flash, NULL, "omap_sx1.flash0-0", flash_size, diff --git a/hw/arm/realview.c b/hw/arm/realview.c index f51730c487..965fef4fcf 100644 --- a/hw/arm/realview.c +++ b/hw/arm/realview.c @@ -224,10 +224,10 @@ static void realview_init(MachineState *machine, sysbus_create_simple_orphan("pl050_keyboard", 0x10006000, pic[20]); sysbus_create_simple_orphan("pl050_mouse", 0x10007000, pic[21]); =20 - pl011_create(0x10009000, pic[12], serial_hd(0)); - pl011_create(0x1000a000, pic[13], serial_hd(1)); - pl011_create(0x1000b000, pic[14], serial_hd(2)); - pl011_create(0x1000c000, pic[15], serial_hd(3)); + pl011_create(OBJECT(machine), 0x10009000, pic[12], serial_hd(0)); + pl011_create(OBJECT(machine), 0x1000a000, pic[13], serial_hd(1)); + pl011_create(OBJECT(machine), 0x1000b000, pic[14], serial_hd(2)); + pl011_create(OBJECT(machine), 0x1000c000, pic[15], serial_hd(3)); =20 /* DMA controller is optional, apparently. */ dev =3D qdev_new_orphan("pl081"); diff --git a/hw/arm/versatilepb.c b/hw/arm/versatilepb.c index 59bb2d1346..6fb7223265 100644 --- a/hw/arm/versatilepb.c +++ b/hw/arm/versatilepb.c @@ -279,10 +279,10 @@ static void versatile_init(MachineState *machine, int= board_id) n--; } =20 - pl011_create(0x101f1000, pic[12], serial_hd(0)); - pl011_create(0x101f2000, pic[13], serial_hd(1)); - pl011_create(0x101f3000, pic[14], serial_hd(2)); - pl011_create(0x10009000, sic[6], serial_hd(3)); + pl011_create(OBJECT(machine), 0x101f1000, pic[12], serial_hd(0)); + pl011_create(OBJECT(machine), 0x101f2000, pic[13], serial_hd(1)); + pl011_create(OBJECT(machine), 0x101f3000, pic[14], serial_hd(2)); + pl011_create(OBJECT(machine), 0x10009000, sic[6], serial_hd(3)); =20 dev =3D qdev_new_orphan("pl080"); object_property_set_link(OBJECT(dev), "downstream", OBJECT(sysmem), diff --git a/hw/arm/vexpress.c b/hw/arm/vexpress.c index 5cbb2c44cb..7c5a69b5a9 100644 --- a/hw/arm/vexpress.c +++ b/hw/arm/vexpress.c @@ -643,10 +643,10 @@ static void vexpress_common_init(MachineState *machin= e) sysbus_create_simple_orphan("pl050_keyboard", map[VE_KMI0], pic[12]); sysbus_create_simple_orphan("pl050_mouse", map[VE_KMI1], pic[13]); =20 - pl011_create(map[VE_UART0], pic[5], serial_hd(0)); - pl011_create(map[VE_UART1], pic[6], serial_hd(1)); - pl011_create(map[VE_UART2], pic[7], serial_hd(2)); - pl011_create(map[VE_UART3], pic[8], serial_hd(3)); + pl011_create(OBJECT(machine), map[VE_UART0], pic[5], serial_hd(0)); + pl011_create(OBJECT(machine), map[VE_UART1], pic[6], serial_hd(1)); + pl011_create(OBJECT(machine), map[VE_UART2], pic[7], serial_hd(2)); + pl011_create(OBJECT(machine), map[VE_UART3], pic[8], serial_hd(3)); =20 sysbus_create_simple_orphan("sp804", map[VE_TIMER01], pic[2]); sysbus_create_simple_orphan("sp804", map[VE_TIMER23], pic[3]); diff --git a/hw/char/exynos4210_uart.c b/hw/char/exynos4210_uart.c index 6bc18851d9..dee0ecb4d7 100644 --- a/hw/char/exynos4210_uart.c +++ b/hw/char/exynos4210_uart.c @@ -650,7 +650,7 @@ static const VMStateDescription vmstate_exynos4210_uart= =3D { } }; =20 -DeviceState *exynos4210_uart_create(hwaddr addr, +DeviceState *exynos4210_uart_create(Object *parent, hwaddr addr, int fifo_size, int channel, Chardev *chr, @@ -659,7 +659,7 @@ DeviceState *exynos4210_uart_create(hwaddr addr, DeviceState *dev; SysBusDevice *bus; =20 - dev =3D qdev_new_orphan(TYPE_EXYNOS4210_UART); + dev =3D qdev_new(parent, "uart[*]", TYPE_EXYNOS4210_UART); =20 qdev_prop_set_chr(dev, "chardev", chr); qdev_prop_set_uint32(dev, "channel", channel); @@ -667,7 +667,7 @@ DeviceState *exynos4210_uart_create(hwaddr addr, qdev_prop_set_uint32(dev, "tx-size", fifo_size); =20 bus =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(bus, &error_fatal); + sysbus_realize(bus, &error_fatal); if (addr !=3D (hwaddr)-1) { sysbus_mmio_map(bus, 0, addr); } diff --git a/hw/char/mcf_uart.c b/hw/char/mcf_uart.c index f4fc47364e..2c5bfa6b67 100644 --- a/hw/char/mcf_uart.c +++ b/hw/char/mcf_uart.c @@ -347,25 +347,26 @@ static void mcf_uart_register(void) =20 type_init(mcf_uart_register) =20 -DeviceState *mcf_uart_create(qemu_irq irq, Chardev *chrdrv) +DeviceState *mcf_uart_create(Object *parent, qemu_irq irq, Chardev *chrdrv) { DeviceState *dev; =20 - dev =3D qdev_new_orphan(TYPE_MCF_UART); + dev =3D qdev_new(parent, "uart[*]", TYPE_MCF_UART); if (chrdrv) { qdev_prop_set_chr(dev, "chardev", chrdrv); } - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, irq); =20 return dev; } =20 -DeviceState *mcf_uart_create_mmap(hwaddr base, qemu_irq irq, Chardev *chrd= rv) +DeviceState *mcf_uart_create_mmap(Object *parent, hwaddr base, qemu_irq ir= q, + Chardev *chrdrv) { DeviceState *dev; =20 - dev =3D mcf_uart_create(irq, chrdrv); + dev =3D mcf_uart_create(parent, irq, chrdrv); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, base); =20 return dev; diff --git a/hw/char/mchp_pfsoc_mmuart.c b/hw/char/mchp_pfsoc_mmuart.c index 1a6d736f56..fb8ee96b1f 100644 --- a/hw/char/mchp_pfsoc_mmuart.c +++ b/hw/char/mchp_pfsoc_mmuart.c @@ -146,11 +146,11 @@ static void mchp_pfsoc_mmuart_register_types(void) =20 type_init(mchp_pfsoc_mmuart_register_types) =20 -MchpPfSoCMMUartState *mchp_pfsoc_mmuart_create(MemoryRegion *sysmem, +MchpPfSoCMMUartState *mchp_pfsoc_mmuart_create(Object *parent, MemoryRegio= n *sysmem, hwaddr base, qemu_irq irq, Chardev *chr) { - DeviceState *dev =3D qdev_new_orphan(TYPE_MCHP_PFSOC_UART); + DeviceState *dev =3D qdev_new(parent, "uart[*]", TYPE_MCHP_PFSOC_UART); SysBusDevice *sbd =3D SYS_BUS_DEVICE(dev); =20 qdev_prop_set_chr(dev, "chardev", chr); diff --git a/hw/char/omap_uart.c b/hw/char/omap_uart.c index 8cbf6ce803..4c7922a435 100644 --- a/hw/char/omap_uart.c +++ b/hw/char/omap_uart.c @@ -47,7 +47,7 @@ void omap_uart_reset(struct omap_uart_s *s) s->clksel =3D 0; } =20 -struct omap_uart_s *omap_uart_init(hwaddr base, +struct omap_uart_s *omap_uart_init(Object *parent, hwaddr base, qemu_irq irq, omap_clk fclk, omap_clk iclk, qemu_irq txdma, qemu_irq rxdma, const char *label, Chardev *chr) @@ -57,7 +57,7 @@ struct omap_uart_s *omap_uart_init(hwaddr base, s->base =3D base; s->fclk =3D fclk; s->irq =3D irq; - s->serial =3D serial_mm_init(get_system_memory(), base, 2, irq, + s->serial =3D serial_mm_init(parent, get_system_memory(), base, 2, irq, omap_clk_getrate(fclk) / 16, chr ?: qemu_chr_new(label, "null", NULL), DEVICE_NATIVE_ENDIAN); diff --git a/hw/char/parallel-isa.c b/hw/char/parallel-isa.c index 19583c0f23..758aa58017 100644 --- a/hw/char/parallel-isa.c +++ b/hw/char/parallel-isa.c @@ -17,19 +17,19 @@ #include "hw/char/parallel.h" #include "qapi/error.h" =20 -static void parallel_init(ISABus *bus, int index, Chardev *chr) +static void parallel_init(Object *parent, ISABus *bus, int index, Chardev = *chr) { DeviceState *dev; ISADevice *isadev; =20 - isadev =3D isa_new_orphan(TYPE_ISA_PARALLEL); + isadev =3D isa_new(parent, "parallel[*]", TYPE_ISA_PARALLEL); dev =3D DEVICE(isadev); qdev_prop_set_uint32(dev, "index", index); qdev_prop_set_chr(dev, "chardev", chr); - isa_realize_and_unref(isadev, bus, &error_fatal); + qdev_realize(dev, BUS(bus), &error_fatal); } =20 -void parallel_hds_isa_init(ISABus *bus, int n) +void parallel_hds_isa_init(Object *parent, ISABus *bus, int n) { int i; =20 @@ -37,7 +37,7 @@ void parallel_hds_isa_init(ISABus *bus, int n) =20 for (i =3D 0; i < n; i++) { if (parallel_hds[i]) { - parallel_init(bus, i, parallel_hds[i]); + parallel_init(parent, bus, i, parallel_hds[i]); } } } diff --git a/hw/char/pl011.c b/hw/char/pl011.c index c8adf964ca..d3227f1df8 100644 --- a/hw/char/pl011.c +++ b/hw/char/pl011.c @@ -33,15 +33,15 @@ #include "qemu/module.h" #include "trace.h" =20 -DeviceState *pl011_create(hwaddr addr, qemu_irq irq, Chardev *chr) +DeviceState *pl011_create(Object *parent, hwaddr addr, qemu_irq irq, Chard= ev *chr) { DeviceState *dev; SysBusDevice *s; =20 - dev =3D qdev_new_orphan("pl011"); + dev =3D qdev_new(parent, "uart[*]", "pl011"); s =3D SYS_BUS_DEVICE(dev); qdev_prop_set_chr(dev, "chardev", chr); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); sysbus_mmio_map(s, 0, addr); sysbus_connect_irq(s, 0, irq); =20 diff --git a/hw/char/serial-isa.c b/hw/char/serial-isa.c index 4dbdc0df91..4fae200e70 100644 --- a/hw/char/serial-isa.c +++ b/hw/char/serial-isa.c @@ -160,19 +160,20 @@ static void serial_register_types(void) =20 type_init(serial_register_types) =20 -static void serial_isa_init(ISABus *bus, int index, Chardev *chr) +static void serial_isa_init(Object *parent, ISABus *bus, int index, + Chardev *chr) { DeviceState *dev; ISADevice *isadev; =20 - isadev =3D isa_new_orphan(TYPE_ISA_SERIAL); + isadev =3D isa_new(parent, "serial[*]", TYPE_ISA_SERIAL); dev =3D DEVICE(isadev); qdev_prop_set_uint32(dev, "index", index); qdev_prop_set_chr(dev, "chardev", chr); - isa_realize_and_unref(isadev, bus, &error_fatal); + qdev_realize(dev, BUS(bus), &error_fatal); } =20 -void serial_hds_isa_init(ISABus *bus, int from, int to) +void serial_hds_isa_init(Object *parent, ISABus *bus, int from, int to) { int i; =20 @@ -181,7 +182,7 @@ void serial_hds_isa_init(ISABus *bus, int from, int to) =20 for (i =3D from; i < to; ++i) { if (serial_hd(i)) { - serial_isa_init(bus, i, serial_hd(i)); + serial_isa_init(parent, bus, i, serial_hd(i)); } } } diff --git a/hw/char/serial-mm.c b/hw/char/serial-mm.c index cd0844c450..bf853bb762 100644 --- a/hw/char/serial-mm.c +++ b/hw/char/serial-mm.c @@ -94,12 +94,12 @@ static const VMStateDescription vmstate_serial_mm =3D { } }; =20 -SerialMM *serial_mm_init(MemoryRegion *address_space, +SerialMM *serial_mm_init(Object *parent, MemoryRegion *address_space, hwaddr base, int regshift, qemu_irq irq, int baudbase, Chardev *chr, enum device_endian end) { - SerialMM *smm =3D SERIAL_MM(qdev_new_orphan(TYPE_SERIAL_MM)); + SerialMM *smm =3D SERIAL_MM(qdev_new(parent, "serial[*]", TYPE_SERIAL_= MM)); MemoryRegion *mr; =20 qdev_prop_set_uint8(DEVICE(smm), "regshift", regshift); @@ -107,7 +107,7 @@ SerialMM *serial_mm_init(MemoryRegion *address_space, qdev_prop_set_chr(DEVICE(smm), "chardev", chr); qdev_set_legacy_instance_id(DEVICE(smm), base, 2); qdev_prop_set_uint8(DEVICE(smm), "endianness", end); - sysbus_realize_and_unref(SYS_BUS_DEVICE(smm), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(smm), &error_fatal); =20 sysbus_connect_irq(SYS_BUS_DEVICE(smm), 0, irq); mr =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(smm), 0); diff --git a/hw/char/sifive_uart.c b/hw/char/sifive_uart.c index 1613a975e0..7a35990c33 100644 --- a/hw/char/sifive_uart.c +++ b/hw/char/sifive_uart.c @@ -393,16 +393,16 @@ type_init(sifive_uart_register_types) /* * Create UART device. */ -SiFiveUARTState *sifive_uart_create(MemoryRegion *address_space, hwaddr ba= se, - Chardev *chr, qemu_irq irq) +SiFiveUARTState *sifive_uart_create(Object *parent, MemoryRegion *address_= space, + hwaddr base, Chardev *chr, qemu_irq irq) { DeviceState *dev; SysBusDevice *s; =20 - dev =3D qdev_new_orphan("riscv.sifive.uart"); + dev =3D qdev_new(parent, "uart[*]", "riscv.sifive.uart"); s =3D SYS_BUS_DEVICE(dev); qdev_prop_set_chr(dev, "chardev", chr); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); memory_region_add_subregion(address_space, base, sysbus_mmio_get_region(s, 0)); sysbus_connect_irq(s, 0, irq); diff --git a/hw/char/spapr_vty.c b/hw/char/spapr_vty.c index a331d4be3b..a5bf6aa851 100644 --- a/hw/char/spapr_vty.c +++ b/hw/char/spapr_vty.c @@ -154,13 +154,13 @@ static target_ulong h_get_term_char(PowerPCCPU *cpu, = SpaprMachineState *spapr, return H_SUCCESS; } =20 -void spapr_vty_create(SpaprVioBus *bus, Chardev *chardev) +void spapr_vty_create(Object *parent, SpaprVioBus *bus, Chardev *chardev) { DeviceState *dev; =20 - dev =3D qdev_new_orphan("spapr-vty"); + dev =3D qdev_new(parent, "vty[*]", "spapr-vty"); qdev_prop_set_chr(dev, "chardev", chardev); - qdev_realize_and_unref(dev, &bus->bus, &error_fatal); + qdev_realize(dev, &bus->bus, &error_fatal); } =20 static const Property spapr_vty_properties[] =3D { diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c index e3c9053bf2..002f4299cc 100644 --- a/hw/hppa/machine.c +++ b/hw/hppa/machine.c @@ -607,7 +607,8 @@ static void machine_HP_715_init(MachineState *machine) SYS_BUS_DEVICE(lasi_dev), 0)); =20 /* Serial ports: Lasi use a 7.272727 MHz clock. */ - serial_mm_init(addr_space, translate(NULL, LASI_HPA_715 + LASI_UART + = 0x800), 0, + serial_mm_init(OBJECT(machine), addr_space, + translate(NULL, LASI_HPA_715 + LASI_UART + 0x800), 0, qdev_get_gpio_in(lasi_dev, LASI_IRQ_UART_HPA), 7272727 / 16, serial_hd(0), DEVICE_BIG_ENDIAN); =20 @@ -694,11 +695,13 @@ static void machine_HP_B160L_init(MachineState *machi= ne) assert(isa_bus); =20 /* Serial ports: Lasi and Dino use a 7.272727 MHz clock. */ - serial_mm_init(addr_space, translate(NULL, LASI_HPA + LASI_UART + 0x80= 0), 0, + serial_mm_init(OBJECT(machine), addr_space, + translate(NULL, LASI_HPA + LASI_UART + 0x800), 0, qdev_get_gpio_in(lasi_dev, LASI_IRQ_UART_HPA), 7272727 / 16, serial_hd(0), DEVICE_BIG_ENDIAN); =20 - serial_mm_init(addr_space, translate(NULL, DINO_UART_HPA + 0x800), 0, + serial_mm_init(OBJECT(machine), addr_space, + translate(NULL, DINO_UART_HPA + 0x800), 0, qdev_get_gpio_in(dino_dev, DINO_IRQ_RS232INT), 7272727 / 16, serial_hd(1), DEVICE_BIG_ENDIAN); =20 diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c index d13036bd73..8e52cdd0db 100644 --- a/hw/i386/microvm.c +++ b/hw/i386/microvm.c @@ -273,7 +273,7 @@ static void microvm_devices_init(MicrovmMachineState *m= ms) } =20 if (mms->isa_serial) { - serial_hds_isa_init(isa_bus, 0, 1); + serial_hds_isa_init(OBJECT(mms), isa_bus, 0, 1); } =20 if (!x86ms->igvm) { diff --git a/hw/i386/pc.c b/hw/i386/pc.c index 24ba1189d7..3d405cb33c 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -981,7 +981,7 @@ static const MemoryRegionOps ioportF0_io_ops =3D { }, }; =20 -static void pc_superio_init(ISABus *isa_bus, bool create_fdctrl, +static void pc_superio_init(Object *parent, ISABus *isa_bus, bool create_f= dctrl, bool create_i8042, bool no_vmport, Error **err= p) { int i; @@ -989,8 +989,8 @@ static void pc_superio_init(ISABus *isa_bus, bool creat= e_fdctrl, qemu_irq *a20_line; ISADevice *i8042, *port92, *vmmouse; =20 - serial_hds_isa_init(isa_bus, 0, MAX_ISA_SERIAL_PORTS); - parallel_hds_isa_init(isa_bus, MAX_PARALLEL_PORTS); + serial_hds_isa_init(parent, isa_bus, 0, MAX_ISA_SERIAL_PORTS); + parallel_hds_isa_init(parent, isa_bus, MAX_PARALLEL_PORTS); =20 for (i =3D 0; i < MAX_FD; i++) { fd[i] =3D drive_get(IF_FLOPPY, 0, i); @@ -1136,7 +1136,7 @@ void pc_basic_device_init(struct PCMachineState *pcms, } =20 /* Super I/O */ - pc_superio_init(isa_bus, create_fdctrl, pcms->i8042_enabled, + pc_superio_init(OBJECT(pcms), isa_bus, create_fdctrl, pcms->i8042_enab= led, pcms->vmport !=3D ON_OFF_AUTO_ON, &error_fatal); =20 pcms->machine_done.notify =3D pc_machine_done; diff --git a/hw/loongarch/virt.c b/hw/loongarch/virt.c index e0129b2f33..20a68ebd44 100644 --- a/hw/loongarch/virt.c +++ b/hw/loongarch/virt.c @@ -471,7 +471,7 @@ static void virt_devices_init(DeviceState *pch_pic, for (i =3D VIRT_UART_COUNT; i-- > 0;) { hwaddr base =3D VIRT_UART_BASE + i * VIRT_UART_SIZE; irq =3D VIRT_UART_IRQ + i - VIRT_GSI_BASE; - serial_mm_init(get_system_memory(), base, 0, + serial_mm_init(OBJECT(lvms), get_system_memory(), base, 0, qdev_get_gpio_in(pch_pic, irq), 115200, serial_hd(i), DEVICE_LITTLE_ENDIAN); } diff --git a/hw/m68k/mcf5206.c b/hw/m68k/mcf5206.c index 9f373b99b1..b3c745d3f9 100644 --- a/hw/m68k/mcf5206.c +++ b/hw/m68k/mcf5206.c @@ -596,8 +596,8 @@ static void mcf5206_mbar_realize(DeviceState *dev, Erro= r **errp) s->pic =3D qemu_allocate_irqs(m5206_mbar_set_irq, s, 14); m5206_timer_init(&s->timer[0], s->pic[9]); m5206_timer_init(&s->timer[1], s->pic[10]); - s->uart[0] =3D mcf_uart_create(s->pic[12], serial_hd(0)); - s->uart[1] =3D mcf_uart_create(s->pic[13], serial_hd(1)); + s->uart[0] =3D mcf_uart_create(OBJECT(s), s->pic[12], serial_hd(0)); + s->uart[1] =3D mcf_uart_create(OBJECT(s), s->pic[13], serial_hd(1)); } =20 static const Property mcf5206_mbar_properties[] =3D { diff --git a/hw/m68k/mcf5208.c b/hw/m68k/mcf5208.c index 0b8636daa9..f305478b8d 100644 --- a/hw/m68k/mcf5208.c +++ b/hw/m68k/mcf5208.c @@ -309,9 +309,12 @@ static void mcf5208evb_init(MachineState *machine) /* Internal peripherals. */ intc =3D mcf_intc_init(OBJECT(machine), address_space_mem, 0xfc048000,= cpu); =20 - mcf_uart_create_mmap(0xfc060000, qdev_get_gpio_in(intc, 26), serial_hd= (0)); - mcf_uart_create_mmap(0xfc064000, qdev_get_gpio_in(intc, 27), serial_hd= (1)); - mcf_uart_create_mmap(0xfc068000, qdev_get_gpio_in(intc, 28), serial_hd= (2)); + mcf_uart_create_mmap(OBJECT(machine), 0xfc060000, + qdev_get_gpio_in(intc, 26), serial_hd(0)); + mcf_uart_create_mmap(OBJECT(machine), 0xfc064000, + qdev_get_gpio_in(intc, 27), serial_hd(1)); + mcf_uart_create_mmap(OBJECT(machine), 0xfc068000, + qdev_get_gpio_in(intc, 28), serial_hd(2)); =20 mcf5208_sys_init(address_space_mem, intc, cpu); =20 diff --git a/hw/microblaze/petalogix_ml605_mmu.c b/hw/microblaze/petalogix_= ml605_mmu.c index b77df1132b..1dc34dc247 100644 --- a/hw/microblaze/petalogix_ml605_mmu.c +++ b/hw/microblaze/petalogix_ml605_mmu.c @@ -122,7 +122,7 @@ petalogix_ml605_init(MachineState *machine) irq[i] =3D qdev_get_gpio_in(dev, i); } =20 - serial_mm_init(address_space_mem, UART16550_BASEADDR + 0x1000, 2, + serial_mm_init(OBJECT(machine), address_space_mem, UART16550_BASEADDR = + 0x1000, 2, irq[UART16550_IRQ], 115200, serial_hd(0), DEVICE_LITTLE_ENDIAN); =20 diff --git a/hw/mips/boston.c b/hw/mips/boston.c index 18ede54ae8..770160c4e5 100644 --- a/hw/mips/boston.c +++ b/hw/mips/boston.c @@ -755,7 +755,8 @@ static void boston_mach_init(MachineState *machine) memory_region_add_subregion_overlap(sys_mem, boston_memmap[BOSTON_PLATREG].base, platreg, 0); =20 - s->uart =3D serial_mm_init(sys_mem, boston_memmap[BOSTON_UART].base, 2, + s->uart =3D serial_mm_init(OBJECT(machine), sys_mem, + boston_memmap[BOSTON_UART].base, 2, get_cps_irq(&s->cps, 3), 10000000, serial_hd(0), DEVICE_LITTLE_ENDIAN); =20 diff --git a/hw/mips/jazz.c b/hw/mips/jazz.c index 13eaa2d2ec..31ef357554 100644 --- a/hw/mips/jazz.c +++ b/hw/mips/jazz.c @@ -375,10 +375,10 @@ static void mips_jazz_init(MachineState *machine, 0)); =20 /* Serial ports */ - serial_mm_init(address_space, 0x80006000, 0, + serial_mm_init(OBJECT(machine), address_space, 0x80006000, 0, qdev_get_gpio_in(rc4030, 8), 8000000 / 16, serial_hd(0), DEVICE_NATIVE_ENDIAN); - serial_mm_init(address_space, 0x80007000, 0, + serial_mm_init(OBJECT(machine), address_space, 0x80007000, 0, qdev_get_gpio_in(rc4030, 9), 8000000 / 16, serial_hd(1), DEVICE_NATIVE_ENDIAN); =20 diff --git a/hw/mips/loongson3_virt.c b/hw/mips/loongson3_virt.c index f43c231004..6f2ac8ba90 100644 --- a/hw/mips/loongson3_virt.c +++ b/hw/mips/loongson3_virt.c @@ -532,7 +532,7 @@ static void mips_loongson3_virt_init(MachineState *mach= ine) =20 sysbus_mmio_map(SYS_BUS_DEVICE(liointc), 0, virt_memmap[VIRT_LIOINTC].= base); =20 - serial_mm_init(address_space_mem, virt_memmap[VIRT_UART].base, 0, + serial_mm_init(OBJECT(machine), address_space_mem, virt_memmap[VIRT_UA= RT].base, 0, qdev_get_gpio_in(liointc, UART_IRQ), 115200, serial_hd(= 0), DEVICE_LITTLE_ENDIAN); =20 diff --git a/hw/mips/malta.c b/hw/mips/malta.c index 8dc7429ac9..ea11299af8 100644 --- a/hw/mips/malta.c +++ b/hw/mips/malta.c @@ -569,7 +569,7 @@ static void malta_fgpa_display_event(void *opaque, QEMU= ChrEvent event) } } =20 -static MaltaFPGAState *malta_fpga_init(MemoryRegion *address_space, +static MaltaFPGAState *malta_fpga_init(Object *parent, MemoryRegion *addre= ss_space, hwaddr base, qemu_irq uart_irq, Chardev *uart_chr) { MaltaFPGAState *s; @@ -592,7 +592,7 @@ static MaltaFPGAState *malta_fpga_init(MemoryRegion *ad= dress_space, qemu_chr_fe_set_handlers(&s->display, NULL, NULL, malta_fgpa_display_event, NULL, s, NULL, true= ); =20 - s->uart =3D serial_mm_init(address_space, base + 0x900, 3, uart_irq, + s->uart =3D serial_mm_init(parent, address_space, base + 0x900, 3, uar= t_irq, 230400, uart_chr, DEVICE_NATIVE_ENDIAN); =20 malta_fpga_reset(s); @@ -1133,7 +1133,8 @@ void mips_malta_init(MachineState *machine) /* FPGA */ =20 /* The CBUS UART is attached to the MIPS CPU INT2 pin, ie interrupt 4 = */ - malta_fpga_init(system_memory, FPGA_ADDRESS, cbus_irq, serial_hd(2)); + malta_fpga_init(OBJECT(machine), system_memory, FPGA_ADDRESS, cbus_irq, + serial_hd(2)); =20 /* Load firmware in flash / BIOS. */ dinfo =3D drive_get(IF_PFLASH, 0, fl_idx); diff --git a/hw/or1k/or1k-sim.c b/hw/or1k/or1k-sim.c index da05d7cbe3..7ea61327c3 100644 --- a/hw/or1k/or1k-sim.c +++ b/hw/or1k/or1k-sim.c @@ -266,7 +266,7 @@ static void openrisc_sim_serial_init(Or1ksimState *stat= e, hwaddr base, } else { serial_irq =3D get_cpu_irq(cpus, 0, irq_pin); } - serial_mm_init(get_system_memory(), base, 0, serial_irq, 115200, + serial_mm_init(OBJECT(state), get_system_memory(), base, 0, serial_irq= , 115200, serial_hd(uart_idx), DEVICE_BIG_ENDIAN); =20 diff --git a/hw/or1k/virt.c b/hw/or1k/virt.c index 276be32648..c0e0e3c48b 100644 --- a/hw/or1k/virt.c +++ b/hw/or1k/virt.c @@ -238,7 +238,7 @@ static void openrisc_virt_serial_init(OR1KVirtState *st= ate, hwaddr base, qemu_irq serial_irq =3D get_per_cpu_irq(OBJECT(state), cpus, num_cpus, irq_pin); =20 - serial_mm_init(get_system_memory(), base, 0, serial_irq, 115200, + serial_mm_init(OBJECT(state), get_system_memory(), base, 0, serial_irq= , 115200, serial_hd(0), DEVICE_BIG_ENDIAN); =20 /* Add device tree node for serial. */ diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c index 85977c8b69..f7a7c136da 100644 --- a/hw/ppc/e500.c +++ b/hw/ppc/e500.c @@ -1006,13 +1006,13 @@ void ppce500_init(MachineState *machine) =20 /* Serial */ if (serial_hd(0)) { - serial_mm_init(ccsr_addr_space, MPC8544_SERIAL0_REGS_OFFSET, + serial_mm_init(OBJECT(machine), ccsr_addr_space, MPC8544_SERIAL0_R= EGS_OFFSET, 0, qdev_get_gpio_in(mpicdev, 42), 399193, serial_hd(0), DEVICE_BIG_ENDIAN); } =20 if (serial_hd(1)) { - serial_mm_init(ccsr_addr_space, MPC8544_SERIAL1_REGS_OFFSET, + serial_mm_init(OBJECT(machine), ccsr_addr_space, MPC8544_SERIAL1_R= EGS_OFFSET, 0, qdev_get_gpio_in(mpicdev, 42), 399193, serial_hd(1), DEVICE_BIG_ENDIAN); } diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 1eb3c09672..40a7559528 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -1311,7 +1311,7 @@ static void pnv_init(MachineState *machine) pnv->isa_bus =3D pnv_isa_create(pnv->chips[0], &error_fatal); =20 /* Create serial port */ - serial_hds_isa_init(pnv->isa_bus, 0, MAX_ISA_SERIAL_PORTS); + serial_hds_isa_init(OBJECT(machine), pnv->isa_bus, 0, MAX_ISA_SERIAL_P= ORTS); =20 /* Create an RTC ISA device too */ mc146818_rtc_init(OBJECT(machine), pnv->isa_bus, 2000, NULL); diff --git a/hw/ppc/ppc440_bamboo.c b/hw/ppc/ppc440_bamboo.c index 68c7328129..499949bfdf 100644 --- a/hw/ppc/ppc440_bamboo.c +++ b/hw/ppc/ppc440_bamboo.c @@ -200,13 +200,13 @@ static void bamboo_init(MachineState *machine) memory_region_add_subregion(get_system_memory(), PPC440EP_PCI_IO, isa); =20 if (serial_hd(0) !=3D NULL) { - serial_mm_init(address_space_mem, 0xef600300, 0, + serial_mm_init(OBJECT(machine), address_space_mem, 0xef600300, 0, qdev_get_gpio_in(uicdev, 0), PPC_SERIAL_MM_BAUDBASE, serial_hd(0), DEVICE_BIG_ENDIAN); } if (serial_hd(1) !=3D NULL) { - serial_mm_init(address_space_mem, 0xef600400, 0, + serial_mm_init(OBJECT(machine), address_space_mem, 0xef600400, 0, qdev_get_gpio_in(uicdev, 1), PPC_SERIAL_MM_BAUDBASE, serial_hd(1), DEVICE_BIG_ENDIAN); diff --git a/hw/ppc/sam460ex.c b/hw/ppc/sam460ex.c index 41d4670fa8..be506b02f2 100644 --- a/hw/ppc/sam460ex.c +++ b/hw/ppc/sam460ex.c @@ -446,13 +446,13 @@ static void sam460ex_init(MachineState *machine) =20 /* SoC has 4 UARTs but board has only one wired and two described in f= dt */ if (serial_hd(0) !=3D NULL) { - serial_mm_init(get_system_memory(), 0x4ef600300, 0, + serial_mm_init(OBJECT(machine), get_system_memory(), 0x4ef600300, = 0, qdev_get_gpio_in(uic[1], 1), PPC_SERIAL_MM_BAUDBASE, serial_hd(0), DEVICE_BIG_ENDIAN); } if (serial_hd(1) !=3D NULL) { - serial_mm_init(get_system_memory(), 0x4ef600400, 0, + serial_mm_init(OBJECT(machine), get_system_memory(), 0x4ef600400, = 0, qdev_get_gpio_in(uic[0], 1), PPC_SERIAL_MM_BAUDBASE, serial_hd(1), DEVICE_BIG_ENDIAN); diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index b81db9e8f3..969f821aca 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -3033,7 +3033,7 @@ static void spapr_machine_init(MachineState *machine) spapr->vio_bus =3D spapr_vio_bus_init(); =20 for (i =3D 0; serial_hd(i); i++) { - spapr_vty_create(spapr->vio_bus, serial_hd(i)); + spapr_vty_create(OBJECT(machine), spapr->vio_bus, serial_hd(i)); } =20 /* We always have at least the nvram device on VIO */ diff --git a/hw/ppc/virtex_ml507.c b/hw/ppc/virtex_ml507.c index 1379c168d3..8f4b8965a9 100644 --- a/hw/ppc/virtex_ml507.c +++ b/hw/ppc/virtex_ml507.c @@ -228,7 +228,8 @@ static void virtex_init(MachineState *machine) irq[i] =3D qdev_get_gpio_in(dev, i); } =20 - serial_mm_init(address_space_mem, UART16550_BASEADDR, 2, irq[UART16550= _IRQ], + serial_mm_init(OBJECT(machine), address_space_mem, UART16550_BASEADDR,= 2, + irq[UART16550_IRQ], 115200, serial_hd(0), DEVICE_LITTLE_ENDIAN); =20 /* 2 timers at irq 2 @ 62 Mhz. */ diff --git a/hw/riscv/boston-aia.c b/hw/riscv/boston-aia.c index 029cf23696..26bacf0e59 100644 --- a/hw/riscv/boston-aia.c +++ b/hw/riscv/boston-aia.c @@ -404,7 +404,8 @@ static void boston_mach_init(MachineState *machine) memory_region_add_subregion_overlap(sys_mem, boston_memmap[BOSTON_PLATREG].base, platreg, 0); =20 - s->uart =3D serial_mm_init(sys_mem, boston_memmap[BOSTON_UART].base, 2, + s->uart =3D serial_mm_init(OBJECT(machine), sys_mem, + boston_memmap[BOSTON_UART].base, 2, qdev_get_gpio_in(s->cps.aplic, UART_INT), 100= 00000, serial_hd(0), DEVICE_LITTLE_ENDIAN); =20 diff --git a/hw/riscv/k230.c b/hw/riscv/k230.c index 9c67dfb895..d51ad08d87 100644 --- a/hw/riscv/k230.c +++ b/hw/riscv/k230.c @@ -137,8 +137,8 @@ static DeviceState *k230_create_plic(Object *parent, in= t base_hartid, memmap[K230_DEV_PLIC].size); } =20 -static void k230_create_uart(MemoryRegion *sys_mem, DeviceState *plic, - int index) +static void k230_create_uart(Object *parent, MemoryRegion *sys_mem, + DeviceState *plic, int index) { int uart_dev =3D K230_DEV_UART0 + index; g_autofree char *name =3D g_strdup_printf("uart%d", index); @@ -147,7 +147,7 @@ static void k230_create_uart(MemoryRegion *sys_mem, Dev= iceState *plic, create_unimplemented_device(name, memmap[uart_dev].base, memmap[uart_dev].size); =20 - serial_mm_init(sys_mem, memmap[uart_dev].base, 2, + serial_mm_init(parent, sys_mem, memmap[uart_dev].base, 2, qdev_get_gpio_in(plic, K230_UART0_IRQ + index), 399193, serial_hd(index), DEVICE_LITTLE_ENDIAN); } @@ -190,7 +190,7 @@ static void k230_soc_realize(DeviceState *dev, Error **= errp) =20 /* UART */ for (int i =3D 0; i < K230_UART_COUNT; i++) { - k230_create_uart(sys_mem, DEVICE(s->c908_plic), i); + k230_create_uart(OBJECT(s), sys_mem, DEVICE(s->c908_plic), i); } =20 /* Watchdog */ diff --git a/hw/riscv/microblaze-v-generic.c b/hw/riscv/microblaze-v-generi= c.c index 5864007f01..063be14b19 100644 --- a/hw/riscv/microblaze-v-generic.c +++ b/hw/riscv/microblaze-v-generic.c @@ -100,7 +100,7 @@ static void mb_v_generic_init(MachineState *machine) sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, irq[UARTLITE_IRQ]); =20 /* Full uart */ - serial_mm_init(sysmem, UART16550_BASEADDR + 0x1000, 2, + serial_mm_init(OBJECT(machine), sysmem, UART16550_BASEADDR + 0x1000, 2, irq[UART16550_IRQ], 115200, serial_hd(1), DEVICE_LITTLE_ENDIAN); =20 diff --git a/hw/riscv/microchip_pfsoc.c b/hw/riscv/microchip_pfsoc.c index 18ce57fba4..52fb5d5970 100644 --- a/hw/riscv/microchip_pfsoc.c +++ b/hw/riscv/microchip_pfsoc.c @@ -346,23 +346,23 @@ static void microchip_pfsoc_soc_realize(DeviceState *= dev, Error **errp) qdev_get_gpio_in(DEVICE(s->plic), MICROCHIP_PFSOC_EMMC_SD_IRQ)); =20 /* MMUARTs */ - s->serial0 =3D mchp_pfsoc_mmuart_create(system_memory, + s->serial0 =3D mchp_pfsoc_mmuart_create(OBJECT(s), system_memory, memmap[MICROCHIP_PFSOC_MMUART0].base, qdev_get_gpio_in(DEVICE(s->plic), MICROCHIP_PFSOC_MMUART0_IRQ), serial_hd(0)); - s->serial1 =3D mchp_pfsoc_mmuart_create(system_memory, + s->serial1 =3D mchp_pfsoc_mmuart_create(OBJECT(s), system_memory, memmap[MICROCHIP_PFSOC_MMUART1].base, qdev_get_gpio_in(DEVICE(s->plic), MICROCHIP_PFSOC_MMUART1_IRQ), serial_hd(1)); - s->serial2 =3D mchp_pfsoc_mmuart_create(system_memory, + s->serial2 =3D mchp_pfsoc_mmuart_create(OBJECT(s), system_memory, memmap[MICROCHIP_PFSOC_MMUART2].base, qdev_get_gpio_in(DEVICE(s->plic), MICROCHIP_PFSOC_MMUART2_IRQ), serial_hd(2)); - s->serial3 =3D mchp_pfsoc_mmuart_create(system_memory, + s->serial3 =3D mchp_pfsoc_mmuart_create(OBJECT(s), system_memory, memmap[MICROCHIP_PFSOC_MMUART3].base, qdev_get_gpio_in(DEVICE(s->plic), MICROCHIP_PFSOC_MMUART3_IRQ), serial_hd(3)); - s->serial4 =3D mchp_pfsoc_mmuart_create(system_memory, + s->serial4 =3D mchp_pfsoc_mmuart_create(OBJECT(s), system_memory, memmap[MICROCHIP_PFSOC_MMUART4].base, qdev_get_gpio_in(DEVICE(s->plic), MICROCHIP_PFSOC_MMUART4_IRQ), serial_hd(4)); diff --git a/hw/riscv/sifive_e.c b/hw/riscv/sifive_e.c index d07edde237..fb62bc9aca 100644 --- a/hw/riscv/sifive_e.c +++ b/hw/riscv/sifive_e.c @@ -266,13 +266,13 @@ static void sifive_e_soc_realize(DeviceState *dev, Er= ror **errp) qdev_get_gpio_in(DEVICE(s->plic), SIFIVE_E_AON_WDT_IRQ)); =20 - sifive_uart_create(sys_mem, memmap[SIFIVE_E_DEV_UART0].base, + sifive_uart_create(OBJECT(s), sys_mem, memmap[SIFIVE_E_DEV_UART0].base, serial_hd(0), qdev_get_gpio_in(DEVICE(s->plic), SIFIVE_E_UART0_IRQ= )); create_unimplemented_device("riscv.sifive.e.qspi0", memmap[SIFIVE_E_DEV_QSPI0].base, memmap[SIFIVE_E_DEV_QSPI0].size); create_unimplemented_device("riscv.sifive.e.pwm0", memmap[SIFIVE_E_DEV_PWM0].base, memmap[SIFIVE_E_DEV_PWM0].size); - sifive_uart_create(sys_mem, memmap[SIFIVE_E_DEV_UART1].base, + sifive_uart_create(OBJECT(s), sys_mem, memmap[SIFIVE_E_DEV_UART1].base, serial_hd(1), qdev_get_gpio_in(DEVICE(s->plic), SIFIVE_E_UART1_IRQ= )); create_unimplemented_device("riscv.sifive.e.qspi1", memmap[SIFIVE_E_DEV_QSPI1].base, memmap[SIFIVE_E_DEV_QSPI1].size); diff --git a/hw/riscv/sifive_u.c b/hw/riscv/sifive_u.c index 41eb22dc02..0ef0124140 100644 --- a/hw/riscv/sifive_u.c +++ b/hw/riscv/sifive_u.c @@ -783,9 +783,9 @@ static void sifive_u_soc_realize(DeviceState *dev, Erro= r **errp) SIFIVE_U_PLIC_CONTEXT_STRIDE, memmap[SIFIVE_U_DEV_PLIC].size); g_free(plic_hart_config); - sifive_uart_create(system_memory, memmap[SIFIVE_U_DEV_UART0].base, + sifive_uart_create(OBJECT(s), system_memory, memmap[SIFIVE_U_DEV_UART0= ].base, serial_hd(0), qdev_get_gpio_in(DEVICE(s->plic), SIFIVE_U_UART0_IRQ= )); - sifive_uart_create(system_memory, memmap[SIFIVE_U_DEV_UART1].base, + sifive_uart_create(OBJECT(s), system_memory, memmap[SIFIVE_U_DEV_UART1= ].base, serial_hd(1), qdev_get_gpio_in(DEVICE(s->plic), SIFIVE_U_UART1_IRQ= )); riscv_aclint_swi_create(OBJECT(dev), memmap[SIFIVE_U_DEV_CLINT].base, = 0, ms->smp.cpus, false); diff --git a/hw/riscv/tt_atlantis.c b/hw/riscv/tt_atlantis.c index 1e9bbc0f0b..4d2f5fbeda 100644 --- a/hw/riscv/tt_atlantis.c +++ b/hw/riscv/tt_atlantis.c @@ -544,7 +544,7 @@ static void tt_atlantis_machine_init(MachineState *mach= ine) bootrom); =20 /* UART1, the soc console (UART0 is for the boot microcontroller) */ - serial_mm_init(system_memory, s->memmap[TT_ATL_UART1].base, 2, + serial_mm_init(OBJECT(machine), system_memory, s->memmap[TT_ATL_UART1]= .base, 2, qdev_get_gpio_in(s->irqchip, TT_ATL_UART1_IRQ), 115200, serial_hd(0), DEVICE_LITTLE_ENDIAN); /* diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index 70e31f6327..cecb221bec 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -1489,7 +1489,7 @@ static void virt_machine_init(MachineState *machine) =20 create_platform_bus(s, mmio_irqchip); =20 - serial_mm_init(system_memory, s->memmap[VIRT_UART0].base, + serial_mm_init(OBJECT(machine), system_memory, s->memmap[VIRT_UART0].b= ase, 0, qdev_get_gpio_in(mmio_irqchip, UART0_IRQ), 399193, serial_hd(0), DEVICE_LITTLE_ENDIAN); =20 diff --git a/hw/riscv/xiangshan_kmh.c b/hw/riscv/xiangshan_kmh.c index c1c10e9456..5f44e36400 100644 --- a/hw/riscv/xiangshan_kmh.c +++ b/hw/riscv/xiangshan_kmh.c @@ -112,7 +112,7 @@ static void xiangshan_kmh_soc_realize(DeviceState *dev,= Error **errp) s->irqchip =3D xiangshan_kmh_create_aia(OBJECT(dev), num_harts); =20 /* UART */ - serial_mm_init(system_memory, memmap[XIANGSHAN_KMH_UART0].base, 2, + serial_mm_init(OBJECT(s), system_memory, memmap[XIANGSHAN_KMH_UART0].b= ase, 2, qdev_get_gpio_in(s->irqchip, XIANGSHAN_KMH_UART0_IRQ), 115200, serial_hd(0), DEVICE_LITTLE_ENDIAN); =20 diff --git a/hw/sparc64/niagara.c b/hw/sparc64/niagara.c index d47d62dac7..bceda70f2e 100644 --- a/hw/sparc64/niagara.c +++ b/hw/sparc64/niagara.c @@ -151,7 +151,7 @@ static void niagara_init(MachineState *machine) exit(1); } } - serial_mm_init(sysmem, NIAGARA_UART_BASE, 0, NULL, + serial_mm_init(OBJECT(machine), sysmem, NIAGARA_UART_BASE, 0, NULL, 115200, serial_hd(0), DEVICE_BIG_ENDIAN); create_unimplemented_device("sun4v-iob", NIAGARA_IOBBASE, NIAGARA_IOBS= IZE); sun4v_rtc_init(OBJECT(machine), NIAGARA_RTC_BASE); diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c index 19a54b1f8a..dbf49ef43d 100644 --- a/hw/sparc64/sun4u.c +++ b/hw/sparc64/sun4u.c @@ -319,14 +319,14 @@ static void ebus_realize(PCIDevice *pci_dev, Error **= errp) /* Serial ports */ i =3D 0; if (s->console_serial_base) { - serial_mm_init(pci_address_space(pci_dev), s->console_serial_base, + serial_mm_init(OBJECT(s), pci_address_space(pci_dev), s->console_s= erial_base, 0, NULL, 115200, serial_hd(i), DEVICE_BIG_ENDIAN); i++; } - serial_hds_isa_init(s->isa_bus, i, MAX_ISA_SERIAL_PORTS); + serial_hds_isa_init(OBJECT(s), s->isa_bus, i, MAX_ISA_SERIAL_PORTS); =20 /* Parallel ports */ - parallel_hds_isa_init(s->isa_bus, MAX_PARALLEL_PORTS); + parallel_hds_isa_init(OBJECT(s), s->isa_bus, MAX_PARALLEL_PORTS); =20 /* Keyboard */ isa_create_simple(OBJECT(s), "i8042", s->isa_bus, TYPE_I8042); diff --git a/hw/xtensa/xtfpga.c b/hw/xtensa/xtfpga.c index 07b791b9bf..10bbc34399 100644 --- a/hw/xtensa/xtfpga.c +++ b/hw/xtensa/xtfpga.c @@ -312,7 +312,7 @@ static void xtfpga_init(const XtfpgaBoardDesc *board, M= achineState *machine) xtfpga_fpga_init(system_io, 0x0d020000, freq); xtfpga_net_init(system_io, 0x0d030000, 0x0d030400, 0x0d800000, extints= [1]); =20 - serial_mm_init(system_io, 0x0d050020, 2, extints[0], + serial_mm_init(OBJECT(machine), system_io, 0x0d050020, 2, extints[0], 115200, serial_hd(0), DEVICE_NATIVE_ENDIAN); =20 dinfo =3D drive_get(IF_PFLASH, 0, 0); diff --git a/include/hw/arm/exynos4210.h b/include/hw/arm/exynos4210.h index b29e7243c7..2770267b4a 100644 --- a/include/hw/arm/exynos4210.h +++ b/include/hw/arm/exynos4210.h @@ -120,7 +120,7 @@ uint32_t exynos4210_get_irq(uint32_t grp, uint32_t bit); /* * exynos4210 UART */ -DeviceState *exynos4210_uart_create(hwaddr addr, +DeviceState *exynos4210_uart_create(Object *parent, hwaddr addr, int fifo_size, int channel, Chardev *chr, diff --git a/include/hw/arm/omap.h b/include/hw/arm/omap.h index 2675d064f2..e000dffe13 100644 --- a/include/hw/arm/omap.h +++ b/include/hw/arm/omap.h @@ -256,7 +256,7 @@ struct omap_dma_lcd_channel_s { #define OMAP_DMA_USB_W2FC_TX2 31 =20 struct omap_uart_s; -struct omap_uart_s *omap_uart_init(hwaddr base, +struct omap_uart_s *omap_uart_init(Object *parent, hwaddr base, qemu_irq irq, omap_clk fclk, omap_clk iclk, qemu_irq txdma, qemu_irq rxdma, const char *label, Chardev *chr); @@ -426,7 +426,7 @@ struct omap_mpu_state_s { }; =20 /* omap1.c */ -struct omap_mpu_state_s *omap310_mpu_init(MemoryRegion *sdram, +struct omap_mpu_state_s *omap310_mpu_init(Object *parent, MemoryRegion *sd= ram, const char *core); =20 #define OMAP_BAD_REG(paddr) \ diff --git a/include/hw/char/mchp_pfsoc_mmuart.h b/include/hw/char/mchp_pfs= oc_mmuart.h index 1e27732df1..af6ab2f2a9 100644 --- a/include/hw/char/mchp_pfsoc_mmuart.h +++ b/include/hw/char/mchp_pfsoc_mmuart.h @@ -62,7 +62,7 @@ typedef struct MchpPfSoCMMUartState { * * @return: a pointer to the device specific control structure */ -MchpPfSoCMMUartState *mchp_pfsoc_mmuart_create(MemoryRegion *sysmem, +MchpPfSoCMMUartState *mchp_pfsoc_mmuart_create(Object *parent, MemoryRegio= n *sysmem, hwaddr base, qemu_irq irq, Chardev *chr); =20 #endif /* HW_MCHP_PFSOC_MMUART_H */ diff --git a/include/hw/char/parallel.h b/include/hw/char/parallel.h index f2c92eb5bc..782cc12602 100644 --- a/include/hw/char/parallel.h +++ b/include/hw/char/parallel.h @@ -23,7 +23,7 @@ typedef struct ParallelState { int it_shift; } ParallelState; =20 -void parallel_hds_isa_init(ISABus *bus, int n); +void parallel_hds_isa_init(Object *parent, ISABus *bus, int n); =20 bool parallel_mm_init(MemoryRegion *address_space, hwaddr base, int it_shift, qemu_irq irq, diff --git a/include/hw/char/pl011.h b/include/hw/char/pl011.h index 5695787650..474cbaa5df 100644 --- a/include/hw/char/pl011.h +++ b/include/hw/char/pl011.h @@ -60,6 +60,6 @@ struct PL011State { uint8_t padding_for_rust[16]; }; =20 -DeviceState *pl011_create(hwaddr addr, qemu_irq irq, Chardev *chr); +DeviceState *pl011_create(Object *parent, hwaddr addr, qemu_irq irq, Chard= ev *chr); =20 #endif diff --git a/include/hw/char/serial-isa.h b/include/hw/char/serial-isa.h index 8517afa128..2653f9c12d 100644 --- a/include/hw/char/serial-isa.h +++ b/include/hw/char/serial-isa.h @@ -31,7 +31,7 @@ #define MAX_ISA_SERIAL_PORTS 4 =20 #define TYPE_ISA_SERIAL "isa-serial" -void serial_hds_isa_init(ISABus *bus, int from, int to); +void serial_hds_isa_init(Object *parent, ISABus *bus, int from, int to); void isa_serial_set_iobase(ISADevice *serial, hwaddr iobase); void isa_serial_set_enabled(ISADevice *serial, bool enabled); =20 diff --git a/include/hw/char/serial-mm.h b/include/hw/char/serial-mm.h index 0076bdc061..7b99a1db71 100644 --- a/include/hw/char/serial-mm.h +++ b/include/hw/char/serial-mm.h @@ -44,7 +44,7 @@ struct SerialMM { uint8_t endianness; }; =20 -SerialMM *serial_mm_init(MemoryRegion *address_space, +SerialMM *serial_mm_init(Object *parent, MemoryRegion *address_space, hwaddr base, int regshift, qemu_irq irq, int baudbase, Chardev *chr, enum device_endian end); diff --git a/include/hw/char/sifive_uart.h b/include/hw/char/sifive_uart.h index 5f3b1327de..fca1c6fdb9 100644 --- a/include/hw/char/sifive_uart.h +++ b/include/hw/char/sifive_uart.h @@ -85,7 +85,7 @@ struct SiFiveUARTState { QEMUTimer *fifo_trigger_handle; }; =20 -SiFiveUARTState *sifive_uart_create(MemoryRegion *address_space, hwaddr ba= se, - Chardev *chr, qemu_irq irq); +SiFiveUARTState *sifive_uart_create(Object *parent, MemoryRegion *address_= space, + hwaddr base, Chardev *chr, qemu_irq irq); =20 #endif diff --git a/include/hw/m68k/mcf.h b/include/hw/m68k/mcf.h index ff818c55d0..af501ee459 100644 --- a/include/hw/m68k/mcf.h +++ b/include/hw/m68k/mcf.h @@ -10,8 +10,9 @@ uint64_t mcf_uart_read(void *opaque, hwaddr addr, unsigned size); void mcf_uart_write(void *opaque, hwaddr addr, uint64_t val, unsigned size); -DeviceState *mcf_uart_create(qemu_irq irq, Chardev *chr); -DeviceState *mcf_uart_create_mmap(hwaddr base, qemu_irq irq, Chardev *chr); +DeviceState *mcf_uart_create(Object *parent, qemu_irq irq, Chardev *chr); +DeviceState *mcf_uart_create_mmap(Object *parent, hwaddr base, qemu_irq ir= q, + Chardev *chr); =20 /* mcf_intc.c */ DeviceState *mcf_intc_init(Object *parent, struct MemoryRegion *sysmem, diff --git a/include/hw/ppc/spapr_vio.h b/include/hw/ppc/spapr_vio.h index fcb29aebff..3ca0c9d261 100644 --- a/include/hw/ppc/spapr_vio.h +++ b/include/hw/ppc/spapr_vio.h @@ -137,7 +137,7 @@ int spapr_vio_send_crq(SpaprVioDevice *dev, uint8_t *cr= q); =20 SpaprVioDevice *vty_lookup(SpaprMachineState *spapr, target_ulong reg); void vty_putchars(SpaprVioDevice *sdev, uint8_t *buf, int len); -void spapr_vty_create(SpaprVioBus *bus, Chardev *chardev); +void spapr_vty_create(Object *parent, SpaprVioBus *bus, Chardev *chardev); void spapr_vlan_create(Object *parent, SpaprVioBus *bus, NICInfo *nd); void spapr_vscsi_create(Object *parent, SpaprVioBus *bus); =20 --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411466; cv=none; d=zohomail.com; s=zohoarc; b=RBvVBeNDSY/THoxxm1yyYFgd7VqVTfPmFhEgKgWzXVhW1T5QYuetBIH7e0P/KV69KL8BDLgmd5IbjMtKMGHzK1hzeRhT36PlnVb/dt7BSeWDrnnJlsksRomsCtm45GhennNFYi3N3JkhUaTDOSqVDjWl8GNYv6dt4rbBqhztFhE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411466; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=+RNJaiqptSSrIdptc8tdkEhBXcnP9xpkHfL4NA622Zo=; b=bsBNUl/XjS5JVC1QU121q+kXLTXpCpjhu6BxAKPYdVTz34c5OUJJDtW/Az2dVgl4atSExW+ImTdHBxQ7vh+m3dbqDHnWDU809SOHxZNlC3gxoVwb3UUy0yB/xkbMO5Uh53NCtmWnf7C9h5zMDxqddRPgz9/3su2scJB9+YUCkjc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411466750947.3726122339932; Sat, 18 Jul 2026 14:51:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCvw-0001Zn-GX; Sat, 18 Jul 2026 17:50:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCvu-0001WZ-BJ; Sat, 18 Jul 2026 17:50:54 -0400 Received: from pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.42.203.116]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCvs-0003qk-1l; Sat, 18 Jul 2026 17:50:54 -0400 Received: from ip-10-5-12-219.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.12.219]) by internal-pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:50:49 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.48:5917] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.30.230:2525] with esmtp (Farcaster) id 9914b55e-c942-4ae4-b510-999ad951e746; Sat, 18 Jul 2026 21:50:49 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB002.ant.amazon.com (10.250.64.231) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:50:48 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:50:39 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411452; x=1815947452; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=+RNJaiqptSSrIdptc8tdkEhBXcnP9xpkHfL4NA622Zo=; b=IvWDkXYggu7gL1XhbW7S2JvTKEANxLiXTW+vkcJAeAO6vefL13TG/n0B bkVnoPWXtjl4j1WZLKm43ZCDh4Z96hsZMYH9EooNPt/xt6Ah/Bj3J41XD cVjN5sxty4oJbdDKhaia0JHDoLQwdXsVyibX0KJo2o83cK1V+RaggJb1T xwkz02SNDzokJNlX3GP+pwXj7P7ywlqSRsLBxtJ7v/D8uu9WSAjb2Hy6n o7c5u0htGlrNAXnLfQbZ/axR3F3Qs4wotzG08gTHDdCT+3wbXEBFRck0b V0hoB7ahoc29+/uihNChcTk/NCCOZoiFmNbvW6XTerHfa9N4lIeK9xLTL g==; X-CSE-ConnectionGUID: mukdyU+ZSBi8tenxBzs+1g== X-CSE-MsgGUID: 1S+k1wGwSzeygliDisBLHg== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23939800" X-Farcaster-Flow-ID: 9914b55e-c942-4ae4-b510-999ad951e746 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 050/137] hw/isa: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:25 +0000 Message-ID: <20260718213652.37673-51-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D039UWB001.ant.amazon.com (10.13.138.119) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.42.203.116; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411467740158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/isa to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/isa/i82378.c:106 | isa_new | OBJECT(s) | "pcspk" | i82378_realize() crea= tes ISA children of the i82378 PCI-ISA bridge hw/isa/i82378.c:113 | isa_create_simple | OBJECT(s) | "dma" | i82378_realiz= e() creates ISA children of the i82378 PCI-ISA bridge hw/isa/isa-bus.c:62 | qdev_new_orphan | ORPHAN-JUSTIFIED | - | fallback isa= bus-bridge when caller passes dev=3D=3DNULL; parenting requires isa_bus_new= () signature change across many callers, deferred hw/isa/isa-bus.c:174 | isa_new_orphan | ORPHAN-JUSTIFIED | - | API definiti= on (transitional _orphan wrapper) hw/isa/isa-bus.c:176 | qdev_new_orphan | ORPHAN-JUSTIFIED | - | API definit= ion body of isa_new_orphan() hw/isa/isa-bus.c:179 | isa_try_new_orphan | ORPHAN-JUSTIFIED | - | API defi= nition (transitional _orphan wrapper) hw/isa/isa-bus.c:181 | qdev_try_new_orphan | ORPHAN-JUSTIFIED | - | API def= inition body of isa_try_new_orphan() hw/isa/isa-bus.c:184 | isa_create_simple_orphan | ORPHAN-JUSTIFIED | - | AP= I definition (transitional _orphan wrapper) hw/isa/isa-bus.c:188 | isa_new_orphan | ORPHAN-JUSTIFIED | - | API definiti= on body of isa_create_simple_orphan() hw/isa/isa-bus.c:208 | isa_create_simple_orphan | ORPHAN-JUSTIFIED | - | is= a_vga_init() is a public helper called from board code (hw/i386/pc.c); need= s Object *parent threaded through include/hw/isa/isa.h; deferred to caller-= side patch hw/isa/isa-bus.c:213 | isa_create_simple_orphan | ORPHAN-JUSTIFIED | - | is= a_vga_init() is a public helper called from board code; deferred to caller-= side patch hw/isa/isa-superio.c:57 | isa_new | OBJECT(dev) | name | isa_superio_realiz= e(); collapse existing object_property_add_child(OBJECT(dev), name, ...) ke= eping dynamic per-index name hw/isa/isa-superio.c:96 | isa_new | OBJECT(dev) | name | isa_superio_realiz= e(); collapse existing object_property_add_child(OBJECT(dev), name, ...) ke= eping dynamic per-index name hw/isa/isa-superio.c:123 | isa_new | OBJECT(sio) | "isa-fdc" | isa_superio_= realize(); collapse existing object_property_add_child(OBJECT(sio), "isa-fd= c", ...) hw/isa/isa-superio.c:147 | isa_new | OBJECT(sio) | TYPE_I8042 | isa_superio= _realize(); collapse existing object_property_add_child(OBJECT(sio), TYPE_I= 8042, ...) hw/isa/isa-superio.c:154 | isa_new | OBJECT(sio) | "isa-ide" | isa_superio_= realize(); collapse existing object_property_add_child(OBJECT(sio), "isa-id= e", ...) Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/isa/i82378.c | 6 +++--- hw/isa/isa-superio.c | 25 ++++++++++--------------- 2 files changed, 13 insertions(+), 18 deletions(-) diff --git a/hw/isa/i82378.c b/hw/isa/i82378.c index da09d869f5..1c0a6ad779 100644 --- a/hw/isa/i82378.c +++ b/hw/isa/i82378.c @@ -103,14 +103,14 @@ static void i82378_realize(PCIDevice *pci, Error **er= rp) pit =3D i8254_pit_init(isabus, 0x40, 0, NULL); =20 /* speaker */ - pcspk =3D isa_new_orphan(TYPE_PC_SPEAKER); + pcspk =3D isa_new(OBJECT(s), "pcspk", TYPE_PC_SPEAKER); object_property_set_link(OBJECT(pcspk), "pit", OBJECT(pit), &error_fat= al); - if (!isa_realize_and_unref(pcspk, isabus, errp)) { + if (!qdev_realize(DEVICE(pcspk), BUS(isabus), errp)) { return; } =20 /* 2 82C37 (dma) */ - isa_create_simple_orphan(isabus, "i82374"); + isa_create_simple(OBJECT(s), "dma", isabus, "i82374"); } =20 static void i82378_init(Object *obj) diff --git a/hw/isa/isa-superio.c b/hw/isa/isa-superio.c index 2d65255f34..d0c3c1dbd3 100644 --- a/hw/isa/isa-superio.c +++ b/hw/isa/isa-superio.c @@ -54,7 +54,7 @@ static void isa_superio_realize(DeviceState *dev, Error *= *errp) } else { name =3D g_strdup_printf("parallel%d", i); } - isa =3D isa_new_orphan(TYPE_ISA_PARALLEL); + isa =3D isa_new(OBJECT(dev), name, TYPE_ISA_PARALLEL); d =3D DEVICE(isa); qdev_prop_set_uint32(d, "index", i); if (k->parallel.get_iobase) { @@ -65,8 +65,7 @@ static void isa_superio_realize(DeviceState *dev, Error *= *errp) qdev_prop_set_uint32(d, "irq", k->parallel.get_irq(sio, i)= ); } qdev_prop_set_chr(d, "chardev", chr); - object_property_add_child(OBJECT(dev), name, OBJECT(isa)); - isa_realize_and_unref(isa, bus, &error_fatal); + qdev_realize(DEVICE(isa), BUS(bus), &error_fatal); sio->parallel[i] =3D isa; trace_superio_create_parallel(i, k->parallel.get_iobase ? @@ -93,7 +92,7 @@ static void isa_superio_realize(DeviceState *dev, Error *= *errp) } else { name =3D g_strdup_printf("serial%d", i); } - isa =3D isa_new_orphan(TYPE_ISA_SERIAL); + isa =3D isa_new(OBJECT(dev), name, TYPE_ISA_SERIAL); d =3D DEVICE(isa); qdev_prop_set_uint32(d, "index", i); if (k->serial.get_iobase) { @@ -104,8 +103,7 @@ static void isa_superio_realize(DeviceState *dev, Error= **errp) qdev_prop_set_uint32(d, "irq", k->serial.get_irq(sio, i)); } qdev_prop_set_chr(d, "chardev", chr); - object_property_add_child(OBJECT(dev), name, OBJECT(isa)); - isa_realize_and_unref(isa, bus, &error_fatal); + qdev_realize(DEVICE(isa), BUS(bus), &error_fatal); sio->serial[i] =3D isa; trace_superio_create_serial(i, k->serial.get_iobase ? @@ -120,7 +118,7 @@ static void isa_superio_realize(DeviceState *dev, Error= **errp) assert(k->floppy.count <=3D 1); if (k->floppy.count && (!k->floppy.is_enabled || k->floppy.is_enabled(sio, 0))) { - isa =3D isa_new_orphan(TYPE_ISA_FDC); + isa =3D isa_new(OBJECT(sio), "isa-fdc", TYPE_ISA_FDC); d =3D DEVICE(isa); if (k->floppy.get_iobase) { qdev_prop_set_uint32(d, "iobase", k->floppy.get_iobase(sio, 0)= ); @@ -132,8 +130,7 @@ static void isa_superio_realize(DeviceState *dev, Error= **errp) for (i =3D 0; i < MAX_FD; i++) { fd[i] =3D drive_get(IF_FLOPPY, 0, i); } - object_property_add_child(OBJECT(sio), "isa-fdc", OBJECT(isa)); - isa_realize_and_unref(isa, bus, &error_fatal); + qdev_realize(DEVICE(isa), BUS(bus), &error_fatal); isa_fdc_init_drives(isa, fd); sio->floppy =3D isa; trace_superio_create_floppy(0, @@ -144,14 +141,13 @@ static void isa_superio_realize(DeviceState *dev, Err= or **errp) } =20 /* Keyboard, mouse */ - isa =3D isa_new_orphan(TYPE_I8042); - object_property_add_child(OBJECT(sio), TYPE_I8042, OBJECT(isa)); - isa_realize_and_unref(isa, bus, &error_fatal); + isa =3D isa_new(OBJECT(sio), TYPE_I8042, TYPE_I8042); + qdev_realize(DEVICE(isa), BUS(bus), &error_fatal); sio->kbc =3D isa; =20 /* IDE */ if (k->ide.count && (!k->ide.is_enabled || k->ide.is_enabled(sio, 0)))= { - isa =3D isa_new_orphan("isa-ide"); + isa =3D isa_new(OBJECT(sio), "isa-ide", "isa-ide"); d =3D DEVICE(isa); if (k->ide.get_iobase) { qdev_prop_set_uint32(d, "iobase", k->ide.get_iobase(sio, 0)); @@ -162,8 +158,7 @@ static void isa_superio_realize(DeviceState *dev, Error= **errp) if (k->ide.get_irq) { qdev_prop_set_uint32(d, "irq", k->ide.get_irq(sio, 0)); } - object_property_add_child(OBJECT(sio), "isa-ide", OBJECT(isa)); - isa_realize_and_unref(isa, bus, &error_fatal); + qdev_realize(DEVICE(isa), BUS(bus), &error_fatal); sio->ide =3D isa; trace_superio_create_ide(0, k->ide.get_iobase ? --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411510; cv=none; d=zohomail.com; s=zohoarc; b=jxGrEweIQKs0xuHN03l6CG6twHb5PEcBWZtVwTcVDwRskTjg8gc/qbcheqYV8WhOiA/l/mFaFDQpyrgWcX+yCWntH/J/nb4/zFhX/7ZHwiDUwWrVrNmWQyvEDY5qj8c3RZqRKNm1/e27m8Ns+c9JlaO6TalSWyt39A2eYQXnxqw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411510; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=kusAj88vV1sqo722Q/UnBwTqKM3LagzQTOwpOxPSAM0=; b=Wap1rRRm2yWQQi4e4nA88tHbJZB9KnROcketOG350+0Ntt9PEyhewqzbvurlnE2V+iVPCuavnhB+zscPf/thQ1DJw2YMOYmq6RARHgCMZL1gvCAN7FjtgBvIOMhux9Z7gF5ZiIvHfTcFhNKtk/jyuMmXryaX/8frOsjmwRBnmgc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411510850694.7692485842298; Sat, 18 Jul 2026 14:51:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCwc-0002Sv-4j; Sat, 18 Jul 2026 17:51:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCwR-0002IM-1H; Sat, 18 Jul 2026 17:51:29 -0400 Received: from pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.42.203.116]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCwO-0003uy-5d; Sat, 18 Jul 2026 17:51:25 -0400 Received: from ip-10-5-6-203.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.6.203]) by internal-pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:51:20 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.234:28066] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.0.115:2525] with esmtp (Farcaster) id 084f9962-b416-49fa-87fe-1631eb551eaa; Sat, 18 Jul 2026 21:51:20 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA002.ant.amazon.com (10.250.64.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:51:20 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:51:10 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411484; x=1815947484; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=kusAj88vV1sqo722Q/UnBwTqKM3LagzQTOwpOxPSAM0=; b=o0k7zXB2qMivK2YdDoxl+B6HrqCdlXCI6oGbfD0/PdVw1s4lRhNgetSt Ts2IITIsr4OH2EzwqJ14CfqRYiX7aQxpM3wrfjkG08GmxYgB0hQ2yoZQM ULO5198Bd968kRRfYN6TdnCfCZDZo33vzGdUia9Nqpolpx07yv6l4Urn4 zgwVZVGgthQSJk9/NziGsP2YgM+dEe/5uMPLA0Ss99CtxC2CFivkQfQj0 4ac1vwgRDgxuEaS8PqngK+Y2SrVaoXdSJGFKXNCPH1EigOswSxqtN8n70 evNDLHbV5vbrW674D8Ah4N+67AFrPu5VM9gYo++a1vooI0tCGvwLNfNf0 A==; X-CSE-ConnectionGUID: dWKSyx9ESouI/M8fUGMl8Q== X-CSE-MsgGUID: QDvZBdERS/muaMDvT35Ubw== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23939853" X-Farcaster-Flow-ID: 084f9962-b416-49fa-87fe-1631eb551eaa From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 051/137] hw/pci: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:26 +0000 Message-ID: <20260718213652.37673-52-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D031UWC002.ant.amazon.com (10.13.139.212) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.42.203.116; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411511996158500 Content-Type: text/plain; charset="utf-8" Convert pcie_sriov_pf_init() to the parented pci_new() API so each VF becomes a child<> of its PF PCIDevice with a stable "vf[N]" name in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. Since object_property_add_child() now holds the sole reference to the VF, drop the extra creator-ref object_unref() on both the realize error path and in unparent_vfs(): object_unparent() drops the last reference and frees the VF. The remaining *_orphan() calls in hw/pci/pci.c are the transitional API definitions themselves plus the public pci_vga_init() / pci_init_nic_in_slot() helpers, which need parent threading through their callers and are converted in the per-board patches. Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/pci/pcie_sriov.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/hw/pci/pcie_sriov.c b/hw/pci/pcie_sriov.c index a69a41cdde..f96b0f45cb 100644 --- a/hw/pci/pcie_sriov.c +++ b/hw/pci/pcie_sriov.c @@ -26,7 +26,6 @@ static void unparent_vfs(PCIDevice *dev, uint16_t total_v= fs) for (uint16_t i =3D 0; i < total_vfs; i++) { PCIDevice *vf =3D dev->exp.sriov_pf.vf[i]; object_unparent(OBJECT(vf)); - object_unref(OBJECT(vf)); } g_free(dev->exp.sriov_pf.vf); dev->exp.sriov_pf.vf =3D NULL; @@ -171,13 +170,13 @@ bool pcie_sriov_pf_init(PCIDevice *dev, uint16_t offs= et, dev->exp.sriov_pf.vf =3D g_new(PCIDevice *, total_vfs); =20 for (uint16_t i =3D 0; i < total_vfs; i++) { - PCIDevice *vf =3D pci_new_orphan(devfn, vfname); + g_autofree char *vf_id =3D g_strdup_printf("vf[%u]", i); + PCIDevice *vf =3D pci_new(OBJECT(dev), vf_id, devfn, vfname); vf->exp.sriov_vf.pf =3D dev; vf->exp.sriov_vf.vf_number =3D i; =20 if (!qdev_realize(&vf->qdev, bus, errp)) { object_unparent(OBJECT(vf)); - object_unref(vf); unparent_vfs(dev, i); return false; } --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411529; cv=none; d=zohomail.com; s=zohoarc; b=T8LhQtHGIrWvPPUjSgfmo/mUVIVlBIaU1dfQG0RM0T/4VMvskcBCLiUV9UeggffnLvSDM0HcBMqyHYo0QCypREXax1VNAJf++EFYDez71LboZrDs+T2LFcyFLrPwpb0dput+G3SapgiMZVrCeoJKfit00Hs1kN2HvtBUzvAoHss= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411529; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=gQXzab3WxKtQdbHEOACFtXwWmwNHyOBMCFK2xrKvKRc=; b=DNE8arw0o9e2VrfLbDgP9E3lRQpZMVkoLieBbmDjrj5U1mIYhfPNFmbM8KlP/VMex27RebJmLjvDv6sFvu3kH9vkELCdNNSh4DwDrpEeQobytyhhVyYFm8RVVS6Ndc6/l6kP9GYDSNKQPsGuzYULrNKwgc8zX4KCFekCMnBKOhk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411529627336.4603437536173; Sat, 18 Jul 2026 14:52:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCwh-0002vG-Ka; Sat, 18 Jul 2026 17:51:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCwe-0002bM-08; Sat, 18 Jul 2026 17:51:40 -0400 Received: from pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com ([35.155.198.111]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCwY-0003vT-Kj; Sat, 18 Jul 2026 17:51:38 -0400 Received: from ip-10-5-0-115.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.0.115]) by internal-pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:51:30 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.51:28085] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.0.115:2525] with esmtp (Farcaster) id 9d786f6a-0d80-44db-b948-2a06f9686ab0; Sat, 18 Jul 2026 21:51:30 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB001.ant.amazon.com (10.250.64.248) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:51:30 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:51:20 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411494; x=1815947494; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=gQXzab3WxKtQdbHEOACFtXwWmwNHyOBMCFK2xrKvKRc=; b=rOwX8u/Trpk7yYL+tUn7FEx4acniikhUvZ2YjkZN99NYN5jLK6wEcHEg 8MkbzEJaKIfjKHhYQotf9htIcdfxFzPG9gfsDXvXaEUJ7JH2PooOrCijC z0pKF0n5OgoF2PDaRtyFlH4acZB76/DOQQsJaiSr9exUIMOHhpFawK3nl 6kb3gYLGA6DIgt1yHIu8MLCJX9gN/EFaaOBRZ5bHzXzVBzkb0YeIgxc2a emYO+80U1a84VqIRNANSX4I9qnYcZOFU+mgMBZeoSUaiu28SDcg9ehaMN kqXx8Ip7A14IZbJqXFNPq86F8I8ugx4PQXQD18QBMxUMyXUPGAgB9+Q4U g==; X-CSE-ConnectionGUID: 9laVQ4BmReypGzUL8gVHEw== X-CSE-MsgGUID: QWR+6E3WSwWiy/t7IrBHDQ== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23816621" X-Farcaster-Flow-ID: 9d786f6a-0d80-44db-b948-2a06f9686ab0 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 052/137] hw/riscv: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:27 +0000 Message-ID: <20260718213652.37673-53-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D031UWC002.ant.amazon.com (10.13.139.212) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=35.155.198.111; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411532011158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/riscv to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/riscv/boston-aia.c:308 | qdev_new | OBJECT(machine) | "pcie" | static he= lper called from board init; thread Object *parent through hw/riscv/boston-aia.c:355 | qdev_new | OBJECT(machine) | "boston" | board M= achineClass.init() hw/riscv/boston-aia.c:422 | pci_create_simple_multifunction | OBJECT(machin= e) | "ahci" | board MachineClass.init() hw/riscv/microblaze-v-generic.c:82 | qdev_new | OBJECT(machine) | "intc" | = board MachineClass.init() hw/riscv/microblaze-v-generic.c:95 | qdev_new | OBJECT(machine) | "uartlite= " | board MachineClass.init() hw/riscv/microblaze-v-generic.c:108 | qdev_new | OBJECT(machine) | "timer[*= ]" | board MachineClass.init(); two timers hw/riscv/microblaze-v-generic.c:117 | qdev_new | OBJECT(machine) | "timer[*= ]" | board MachineClass.init(); two timers hw/riscv/microblaze-v-generic.c:126 | qdev_new | OBJECT(machine) | "ethlite= " | board MachineClass.init() hw/riscv/microblaze-v-generic.c:136 | qdev_new | OBJECT(machine) | "xilinx-= eth" | board init; collapse existing object_property_add_child, keep name hw/riscv/microblaze-v-generic.c:137 | qdev_new | OBJECT(machine) | "xilinx-= dma" | board init; collapse existing object_property_add_child, keep name hw/riscv/microchip_pfsoc.c:584 | qdev_new | OBJECT(machine) | "sd-card" | b= oard MachineClass.init() hw/riscv/sifive_u.c:596 | qdev_new | OBJECT(machine) | "flash" | board Mach= ineClass.init() hw/riscv/sifive_u.c:609 | ssi_create_peripheral | OBJECT(machine) | "ssi-sd= " | board MachineClass.init() hw/riscv/sifive_u.c:616 | qdev_new | OBJECT(machine) | "sd-card" | board Ma= chineClass.init() hw/riscv/tt_atlantis.c:580 | i2c_slave_create_simple | OBJECT(s) | "rtc" | = board init; s is TTAtlantisState (machine) hw/riscv/tt_atlantis.c:581 | i2c_slave_create_simple | OBJECT(s) | "tmp105"= | board init; s is TTAtlantisState (machine) hw/riscv/virt.c:129 | qdev_new | OBJECT(s) | name | helper receives RISCVVi= rtState *s; collapse existing object_property_add_child, keep name arg hw/riscv/virt.c:1054 | qdev_new | OBJECT(s) | "pcie" | helper receives RISC= VVirtState *s (machine) hw/riscv/virt.c:1147 | qdev_new | OBJECT(s) | "platform-bus" | helper recei= ves RISCVVirtState *s (machine) hw/riscv/virt.c:1484 | sysbus_create_simple | OBJECT(machine) | "virtio-mmi= o[*]" | board MachineClass.init(); loop hw/riscv/virt.c:1497 | sysbus_create_simple | OBJECT(machine) | "rtc" | boa= rd MachineClass.init() hw/riscv/virt.c:1519 | qdev_new | OBJECT(machine) | "iommu" | board Machine= Class.init() Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/riscv/boston-aia.c | 17 +++++++++-------- hw/riscv/microblaze-v-generic.c | 32 ++++++++++++++------------------ hw/riscv/microchip_pfsoc.c | 5 +++-- hw/riscv/sifive_u.c | 15 ++++++++------- hw/riscv/tt_atlantis.c | 5 +++-- hw/riscv/virt.c | 29 ++++++++++++----------------- 6 files changed, 49 insertions(+), 54 deletions(-) diff --git a/hw/riscv/boston-aia.c b/hw/riscv/boston-aia.c index 26bacf0e59..3b0eba00a7 100644 --- a/hw/riscv/boston-aia.c +++ b/hw/riscv/boston-aia.c @@ -297,7 +297,7 @@ static void gen_firmware(uint32_t *p) } =20 static inline XilinxPCIEHost * -xilinx_pcie_init(MemoryRegion *sys_mem, uint32_t bus_nr, +xilinx_pcie_init(Object *parent, MemoryRegion *sys_mem, uint32_t bus_nr, hwaddr cfg_base, uint64_t cfg_size, hwaddr mmio_base, uint64_t mmio_size, qemu_irq irq) @@ -305,7 +305,7 @@ xilinx_pcie_init(MemoryRegion *sys_mem, uint32_t bus_nr, DeviceState *dev; MemoryRegion *cfg, *mmio; =20 - dev =3D qdev_new_orphan(TYPE_XILINX_PCIE_HOST); + dev =3D qdev_new(parent, "pcie", TYPE_XILINX_PCIE_HOST); =20 qdev_prop_set_uint32(dev, "bus_nr", bus_nr); qdev_prop_set_uint64(dev, "cfg_base", cfg_base); @@ -313,7 +313,7 @@ xilinx_pcie_init(MemoryRegion *sys_mem, uint32_t bus_nr, qdev_prop_set_uint64(dev, "mmio_base", mmio_base); qdev_prop_set_uint64(dev, "mmio_size", mmio_size); =20 - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 cfg =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0); memory_region_add_subregion_overlap(sys_mem, cfg_base, cfg, 0); @@ -352,8 +352,8 @@ static void boston_mach_init(MachineState *machine) exit(1); } =20 - dev =3D qdev_new_orphan(TYPE_MIPS_BOSTON_AIA); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + dev =3D qdev_new(OBJECT(machine), "boston", TYPE_MIPS_BOSTON_AIA); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 s =3D BOSTON(dev); s->mach =3D machine; @@ -390,7 +390,7 @@ static void boston_mach_init(MachineState *machine) MIN(machine->ram_size, (256 * MiB))); memory_region_add_subregion_overlap(sys_mem, 0, ddr_low_alias, 0); =20 - pcie2 =3D xilinx_pcie_init(sys_mem, 2, + pcie2 =3D xilinx_pcie_init(OBJECT(machine), sys_mem, 2, boston_memmap[BOSTON_PCIE2].base, boston_memmap[BOSTON_PCIE2].size, boston_memmap[BOSTON_PCIE2_MMIO].base, @@ -419,8 +419,9 @@ static void boston_mach_init(MachineState *machine) qemu_chr_fe_set_handlers(&s->lcd_display, NULL, NULL, boston_lcd_event, NULL, s, NULL, true); =20 - pdev =3D pci_create_simple_multifunction_orphan(&PCI_BRIDGE(&pcie2->ro= ot)->sec_bus, - PCI_DEVFN(0, 0), TYPE_ICH9_AHCI= ); + pdev =3D pci_create_simple_multifunction(OBJECT(machine), "ahci", + &PCI_BRIDGE(&pcie2->root)->sec_bus, + PCI_DEVFN(0, 0), TYPE_ICH9_AHCI); ich9 =3D ICH9_AHCI(pdev); g_assert(ARRAY_SIZE(hd) =3D=3D ich9->ahci.ports); ide_drive_get(hd, ich9->ahci.ports); diff --git a/hw/riscv/microblaze-v-generic.c b/hw/riscv/microblaze-v-generi= c.c index 063be14b19..fbfdec7ede 100644 --- a/hw/riscv/microblaze-v-generic.c +++ b/hw/riscv/microblaze-v-generic.c @@ -79,11 +79,11 @@ static void mb_v_generic_init(MachineState *machine) ram_size, &error_fatal); memory_region_add_subregion(sysmem, ddr_base, phys_ram); =20 - dev =3D qdev_new_orphan("xlnx.xps-intc"); + dev =3D qdev_new(OBJECT(machine), "intc", "xlnx.xps-intc"); qdev_prop_set_enum(dev, "endianness", ENDIAN_MODE_LITTLE); qdev_prop_set_uint32(dev, "kind-of-intr", 1 << UARTLITE_IRQ); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, INTC_BASEADDR); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, qdev_get_gpio_in(DEVICE(cpu), 11)); @@ -92,10 +92,10 @@ static void mb_v_generic_init(MachineState *machine) } =20 /* Uartlite */ - dev =3D qdev_new_orphan(TYPE_XILINX_UARTLITE); + dev =3D qdev_new(OBJECT(machine), "uartlite", TYPE_XILINX_UARTLITE); qdev_prop_set_enum(dev, "endianness", ENDIAN_MODE_LITTLE); qdev_prop_set_chr(dev, "chardev", serial_hd(0)); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, UARTLITE_BASEADDR); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, irq[UARTLITE_IRQ]); =20 @@ -105,40 +105,36 @@ static void mb_v_generic_init(MachineState *machine) DEVICE_LITTLE_ENDIAN); =20 /* 2 timers at irq 0 @ 100 Mhz. */ - dev =3D qdev_new_orphan("xlnx.xps-timer"); + dev =3D qdev_new(OBJECT(machine), "timer[*]", "xlnx.xps-timer"); qdev_prop_set_enum(dev, "endianness", ENDIAN_MODE_LITTLE); qdev_prop_set_uint32(dev, "one-timer-only", 0); qdev_prop_set_uint32(dev, "clock-frequency", 100000000); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, TIMER_BASEADDR); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, irq[TIMER_IRQ]); =20 /* 2 timers at irq 3 @ 100 Mhz. */ - dev =3D qdev_new_orphan("xlnx.xps-timer"); + dev =3D qdev_new(OBJECT(machine), "timer[*]", "xlnx.xps-timer"); qdev_prop_set_enum(dev, "endianness", ENDIAN_MODE_LITTLE); qdev_prop_set_uint32(dev, "one-timer-only", 0); qdev_prop_set_uint32(dev, "clock-frequency", 100000000); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, TIMER_BASEADDR2); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, irq[TIMER_IRQ2]); =20 /* Emaclite */ - dev =3D qdev_new_orphan("xlnx.xps-ethernetlite"); + dev =3D qdev_new(OBJECT(machine), "ethlite", "xlnx.xps-ethernetlite"); qdev_prop_set_enum(dev, "endianness", ENDIAN_MODE_LITTLE); qemu_configure_nic_device(dev, true, NULL); qdev_prop_set_uint32(dev, "tx-ping-pong", 0); qdev_prop_set_uint32(dev, "rx-ping-pong", 0); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, ETHLITE_BASEADDR); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, irq[ETHLITE_IRQ]); =20 /* axi ethernet and dma initialization. */ - eth0 =3D qdev_new_orphan("xlnx.axi-ethernet"); - dma =3D qdev_new_orphan("xlnx.axi-dma"); - - /* FIXME: attach to the sysbus instead */ - object_property_add_child(qdev_get_machine(), "xilinx-eth", OBJECT(eth= 0)); - object_property_add_child(qdev_get_machine(), "xilinx-dma", OBJECT(dma= )); + eth0 =3D qdev_new(OBJECT(machine), "xilinx-eth", "xlnx.axi-ethernet"); + dma =3D qdev_new(OBJECT(machine), "xilinx-dma", "xlnx.axi-dma"); =20 ds =3D object_property_get_link(OBJECT(dma), "axistream-connected-target", NULL); @@ -151,7 +147,7 @@ static void mb_v_generic_init(MachineState *machine) &error_abort); object_property_set_link(OBJECT(eth0), "axistream-control-connected", = cs, &error_abort); - sysbus_realize_and_unref(SYS_BUS_DEVICE(eth0), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(eth0), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(eth0), 0, AXIENET_BASEADDR); sysbus_connect_irq(SYS_BUS_DEVICE(eth0), 0, irq[AXIENET_IRQ]); =20 @@ -164,7 +160,7 @@ static void mb_v_generic_init(MachineState *machine) &error_abort); object_property_set_link(OBJECT(dma), "axistream-control-connected", c= s, &error_abort); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dma), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dma), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dma), 0, AXIDMA_BASEADDR); sysbus_connect_irq(SYS_BUS_DEVICE(dma), 0, irq[AXIDMA_IRQ0]); sysbus_connect_irq(SYS_BUS_DEVICE(dma), 1, irq[AXIDMA_IRQ1]); diff --git a/hw/riscv/microchip_pfsoc.c b/hw/riscv/microchip_pfsoc.c index 52fb5d5970..0d298aa3fc 100644 --- a/hw/riscv/microchip_pfsoc.c +++ b/hw/riscv/microchip_pfsoc.c @@ -581,11 +581,12 @@ static void microchip_icicle_kit_machine_init(Machine= State *machine) /* Attach an SD card */ if (dinfo) { CadenceSDHCIState *sdhci =3D &(s->soc.sdhci); - DeviceState *card =3D qdev_new_orphan(TYPE_SD_CARD); + DeviceState *card =3D qdev_new(OBJECT(machine), "sd-card", + TYPE_SD_CARD); =20 qdev_prop_set_drive_err(card, "drive", blk_by_legacy_dinfo(dinfo), &error_fatal); - qdev_realize_and_unref(card, sdhci->bus, &error_fatal); + qdev_realize(card, sdhci->bus, &error_fatal); } =20 /* diff --git a/hw/riscv/sifive_u.c b/hw/riscv/sifive_u.c index 0ef0124140..3d60a501dd 100644 --- a/hw/riscv/sifive_u.c +++ b/hw/riscv/sifive_u.c @@ -593,31 +593,32 @@ static void sifive_u_machine_init(MachineState *machi= ne) sizeof(reset_vec), kernel_entry); =20 /* Connect an SPI flash to SPI0 */ - flash_dev =3D qdev_new_orphan("is25wp256"); + flash_dev =3D qdev_new(OBJECT(machine), "flash", "is25wp256"); dinfo =3D drive_get(IF_MTD, 0, 0); if (dinfo) { qdev_prop_set_drive_err(flash_dev, "drive", blk_by_legacy_dinfo(dinfo), &error_fatal); } - qdev_realize_and_unref(flash_dev, BUS(s->soc.spi0.spi), &error_fatal); + qdev_realize(flash_dev, BUS(s->soc.spi0.spi), &error_fatal); =20 flash_cs =3D qdev_get_gpio_in_named(flash_dev, SSI_GPIO_CS, 0); sysbus_connect_irq(SYS_BUS_DEVICE(&s->soc.spi0), 1, flash_cs); =20 /* Connect an SD card to SPI2 */ - sd_dev =3D ssi_create_peripheral_orphan(s->soc.spi2.spi, "ssi-sd"); + sd_dev =3D ssi_create_peripheral(OBJECT(machine), "ssi-sd", + s->soc.spi2.spi, "ssi-sd"); =20 sd_cs =3D qdev_get_gpio_in_named(sd_dev, SSI_GPIO_CS, 0); sysbus_connect_irq(SYS_BUS_DEVICE(&s->soc.spi2), 1, sd_cs); =20 dinfo =3D drive_get(IF_SD, 0, 0); blk =3D dinfo ? blk_by_legacy_dinfo(dinfo) : NULL; - card_dev =3D qdev_new_orphan(TYPE_SD_CARD_SPI); + card_dev =3D qdev_new(OBJECT(machine), "sd-card", TYPE_SD_CARD_SPI); qdev_prop_set_drive_err(card_dev, "drive", blk, &error_fatal); - qdev_realize_and_unref(card_dev, - qdev_get_child_bus(sd_dev, "sd-bus"), - &error_fatal); + qdev_realize(card_dev, + qdev_get_child_bus(sd_dev, "sd-bus"), + &error_fatal); } =20 static bool sifive_u_machine_get_start_in_flash(Object *obj, Error **errp) diff --git a/hw/riscv/tt_atlantis.c b/hw/riscv/tt_atlantis.c index 4d2f5fbeda..6e0a54fe3c 100644 --- a/hw/riscv/tt_atlantis.c +++ b/hw/riscv/tt_atlantis.c @@ -576,8 +576,9 @@ static void tt_atlantis_machine_init(MachineState *mach= ine) } =20 /* I2C peripherals: qemu specific */ - i2c_slave_create_simple_orphan(i2c_get_bus(s, 0), "ds1338", 0x6f); - i2c_slave_create_simple_orphan(i2c_get_bus(s, 4), "tmp105", 0x48); + i2c_slave_create_simple(OBJECT(s), "rtc", i2c_get_bus(s, 0), "ds1338",= 0x6f); + i2c_slave_create_simple(OBJECT(s), "tmp105", i2c_get_bus(s, 4), + "tmp105", 0x48); =20 /* Load or create device tree */ if (machine->dtb) { diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index cecb221bec..718b730a4d 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -125,7 +125,7 @@ static PFlashCFI01 *virt_flash_create1(RISCVVirtState *= s, * Create a single flash device. We use the same parameters as * the flash devices on the ARM virt board. */ - DeviceState *dev =3D qdev_new_orphan(TYPE_PFLASH_CFI01); + DeviceState *dev =3D qdev_new(OBJECT(s), name, TYPE_PFLASH_CFI01); =20 qdev_prop_set_uint64(dev, "sector-length", VIRT_FLASH_SECTOR_SIZE); qdev_prop_set_uint8(dev, "width", 4); @@ -137,7 +137,6 @@ static PFlashCFI01 *virt_flash_create1(RISCVVirtState *= s, qdev_prop_set_uint16(dev, "id3", 0x00); qdev_prop_set_string(dev, "name", name); =20 - object_property_add_child(OBJECT(s), name, OBJECT(dev)); object_property_add_alias(OBJECT(s), alias_prop_name, OBJECT(dev), "drive"); =20 @@ -159,7 +158,7 @@ static void virt_flash_map1(PFlashCFI01 *flash, assert(QEMU_IS_ALIGNED(size, VIRT_FLASH_SECTOR_SIZE)); assert(size / VIRT_FLASH_SECTOR_SIZE <=3D UINT32_MAX); qdev_prop_set_uint32(dev, "num-blocks", size / VIRT_FLASH_SECTOR_SIZE); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 memory_region_add_subregion(sysmem, base, sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), @@ -1050,7 +1049,7 @@ static inline DeviceState *gpex_pcie_init(MemoryRegio= n *sys_mem, qemu_irq irq; int i; =20 - dev =3D qdev_new_orphan(TYPE_GPEX_HOST); + dev =3D qdev_new(OBJECT(s), "pcie", TYPE_GPEX_HOST); =20 /* Set GPEX object properties for the virt machine */ object_property_set_uint(OBJECT(dev), PCI_HOST_ECAM_BASE, @@ -1070,7 +1069,7 @@ static inline DeviceState *gpex_pcie_init(MemoryRegio= n *sys_mem, object_property_set_int(OBJECT(dev), PCI_HOST_PIO_SIZE, pio_size, NULL); =20 - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 ecam_alias =3D g_new0(MemoryRegion, 1); ecam_reg =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0); @@ -1143,11 +1142,11 @@ static void create_platform_bus(RISCVVirtState *s, = DeviceState *irqchip) int i; MemoryRegion *sysmem =3D get_system_memory(); =20 - dev =3D qdev_new_orphan(TYPE_PLATFORM_BUS_DEVICE); + dev =3D qdev_new(OBJECT(s), "platform-bus", TYPE_PLATFORM_BUS_DEVICE); dev->id =3D g_strdup(TYPE_PLATFORM_BUS_DEVICE); qdev_prop_set_uint32(dev, "num_irqs", VIRT_PLATFORM_BUS_NUM_IRQS); qdev_prop_set_uint32(dev, "mmio_size", s->memmap[VIRT_PLATFORM_BUS].si= ze); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); s->platform_bus_dev =3D dev; =20 sysbus =3D SYS_BUS_DEVICE(dev); @@ -1480,7 +1479,7 @@ static void virt_machine_init(MachineState *machine) =20 /* VirtIO MMIO devices */ for (i =3D 0; i < VIRTIO_COUNT; i++) { - sysbus_create_simple_orphan("virtio-mmio", + sysbus_create_simple(OBJECT(machine), "virtio-mmio[*]", "virtio-mm= io", s->memmap[VIRT_VIRTIO].base + i * s->memmap[VIRT_VIRTIO].size, qdev_get_gpio_in(virtio_irqchip, VIRTIO_IRQ + i)); } @@ -1493,8 +1492,8 @@ static void virt_machine_init(MachineState *machine) 0, qdev_get_gpio_in(mmio_irqchip, UART0_IRQ), 399193, serial_hd(0), DEVICE_LITTLE_ENDIAN); =20 - sysbus_create_simple_orphan("goldfish_rtc", s->memmap[VIRT_RTC].base, - qdev_get_gpio_in(mmio_irqchip, RTC_IRQ)); + sysbus_create_simple(OBJECT(machine), "rtc", "goldfish_rtc", + s->memmap[VIRT_RTC].base, qdev_get_gpio_in(mmio_irqchip, RTC_IRQ)); =20 for (i =3D 0; i < ARRAY_SIZE(s->flash); i++) { /* Map legacy -drive if=3Dpflash to machine properties */ @@ -1515,7 +1514,8 @@ static void virt_machine_init(MachineState *machine) } =20 if (virt_is_iommu_sys_enabled(s)) { - DeviceState *iommu_sys =3D qdev_new_orphan(TYPE_RISCV_IOMMU_SYS); + DeviceState *iommu_sys =3D qdev_new(OBJECT(machine), "iommu", + TYPE_RISCV_IOMMU_SYS); =20 object_property_set_uint(OBJECT(iommu_sys), "addr", s->memmap[VIRT_IOMMU_SYS].base, @@ -1534,7 +1534,7 @@ static void virt_machine_init(MachineState *machine) riscv_is_32bit(&s->soc[0]) ? 34 : 56, &error_fatal); =20 - sysbus_realize_and_unref(SYS_BUS_DEVICE(iommu_sys), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(iommu_sys), &error_fatal); } =20 s->machine_done.notify =3D virt_machine_done; @@ -1545,11 +1545,6 @@ static void virt_machine_instance_finalize(Object *o= bj) { RISCVVirtState *s =3D RISCV_VIRT_MACHINE(obj); =20 - for (int i =3D 0; i < ARRAY_SIZE(s->flash); i++) { - if (s->flash[i] && !qdev_is_realized(DEVICE(s->flash[i]))) { - object_unref(OBJECT(s->flash[i])); - } - } g_free(s->oem_id); g_free(s->oem_table_id); } --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411535; cv=none; d=zohomail.com; s=zohoarc; b=iC40V4jSLAYwPAgRF8TcOJQtZ2d9moZgsQESglmwmyKzKCMk7wY+N534v2v3cm0P+/1+Ek2LC/vFu1uWgHZox14ew2l0CjQPxuWPkvuBu005kcMpzTs7UJx6EVRyNl2Is1nGeRAdh1nZlm+pkXTNkT5vBlop+2Lx7Lfz5ywjW0s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411535; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=67o+dJAgMQu4a2nxLUqSwMFvCmm75QaSyZHK2B38t+w=; b=Dq7qhdZMHPWAMhaeLUVV+dqiQX+WbFcD0tFWmLJAUmEOSQ8CjAa4QXKRVoIslFZ4TzG6lBLlZ3P3K9FgAy1c/I5pJn6bvA+c/1OAfy7qorfISaCmVzHeR5rj9nm/h6qwmt4wwX6ui/TUvms5JqsafaoP6yOgTpp142RMWCnnNwo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411535729118.77193536352479; Sat, 18 Jul 2026 14:52:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCwq-0003dD-3l; Sat, 18 Jul 2026 17:51:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCwm-0003Oa-SZ; Sat, 18 Jul 2026 17:51:48 -0400 Received: from pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.246.1.125]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCwi-0003wJ-MZ; Sat, 18 Jul 2026 17:51:47 -0400 Received: from ip-10-5-0-115.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.0.115]) by internal-pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:51:40 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.51:25143] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.19.34:2525] with esmtp (Farcaster) id 65468b4d-094d-46a7-9bfd-88bfa8e7db87; Sat, 18 Jul 2026 21:51:40 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC002.ant.amazon.com (10.250.64.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:51:40 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:51:30 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411504; x=1815947504; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=67o+dJAgMQu4a2nxLUqSwMFvCmm75QaSyZHK2B38t+w=; b=BQBbI61PTl+3jfLIdEw2xePxeKWtWeA5AC9/1LF2mHCWaUelOwFrGTRK OR+QLSZcFYKYblqpeZd+j+aWfb/5pFAc/vTwaTZRgVdTs8csnsrvWlY/E plMklVJuFwUXqwd9zf1tfiZrWcIT4ZjjFGt8xqV9G53/MTCR47LWF5gFi XrxqUz6n1tJp6rzuGQGrtgNsyK0bf/qSDGSz6t50tlMYyWgtKVHF0kyqk TST4ZcGViPMPBVvY3rQPdGQA6p64JHzCfwXUQ5RmaG5vp6IUTxGDL/VA+ ePvrdtM/8pXsg6zWpPDzZ/3iplebQ6hpT/ZG4oNyDRnUg6cfWeusLfoPQ g==; X-CSE-ConnectionGUID: gV/eL2z7TiaVoogTVDcu0w== X-CSE-MsgGUID: Vp4X2s1AT/eZG9QH79vJ0w== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23927224" X-Farcaster-Flow-ID: 65468b4d-094d-46a7-9bfd-88bfa8e7db87 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 053/137] hw/mips: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:28 +0000 Message-ID: <20260718213652.37673-54-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D031UWC002.ant.amazon.com (10.13.139.212) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.246.1.125; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411538351158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/mips to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/mips/boston.c:435 | qdev_new | parent | "pcie[*]" | static helper called= 3x from board init; thread Object *parent as first arg hw/mips/boston.c:691 | qdev_new | OBJECT(machine) | "boston" | board Machin= eClass.init() hw/mips/boston.c:773 | pci_create_simple_multifunction | OBJECT(machine) | = "ahci" | board MachineClass.init() hw/mips/fuloong2e.c:289 | pci_new_multifunction | OBJECT(machine) | "via" |= board MachineClass.init() hw/mips/fuloong2e.c:315 | pci_new | OBJECT(machine) | "vga" | board Machine= Class.init() hw/mips/jazz.c:130 | qdev_new | parent | "dp8393x" | static helper called f= rom board init; thread Object *parent as first arg hw/mips/jazz.c:292 | isa_new | OBJECT(machine) | "pcspk" | board MachineCla= ss.init() helper receiving MachineState* hw/mips/jazz.c:299 | qdev_new | OBJECT(machine) | "g364" | board MachineCla= ss.init() helper receiving MachineState* hw/mips/jazz.c:316 | qdev_new | OBJECT(machine) | "vga" | board MachineClas= s.init() helper receiving MachineState* hw/mips/jazz.c:332 | qdev_new | OBJECT(machine) | "esp" | board MachineClas= s.init() helper receiving MachineState* hw/mips/jazz.c:363 | qdev_new | OBJECT(machine) | "i8042" | board MachineCl= ass.init() helper receiving MachineState* hw/mips/jazz.c:393 | qdev_new | OBJECT(machine) | "nvram" | board MachineCl= ass.init() helper receiving MachineState* hw/mips/jazz.c:399 | sysbus_create_simple | OBJECT(machine) | "led" | board= MachineClass.init() helper receiving MachineState* hw/mips/loongson3_virt.c:427 | qdev_new | OBJECT(machine) | "pcie" | inline= helper receiving MachineState* from board init hw/mips/loongson3_virt.c:468 | pci_create_simple | OBJECT(machine) | "ohci"= | inline helper receiving MachineState* from board init hw/mips/loongson3_virt.c:471 | usb_create_simple | OBJECT(machine) | "usb-k= bd" | inline helper receiving MachineState* from board init hw/mips/loongson3_virt.c:472 | usb_create_simple | OBJECT(machine) | "usb-t= ablet" | inline helper receiving MachineState* from board init hw/mips/loongson3_virt.c:522 | qdev_new | OBJECT(machine) | "ipi" | board M= achineClass.init() hw/mips/loongson3_virt.c:530 | qdev_new | OBJECT(machine) | "liointc" | boa= rd MachineClass.init() hw/mips/loongson3_virt.c:539 | sysbus_create_simple | OBJECT(machine) | "rt= c" | board MachineClass.init() hw/mips/malta.c:1101 | qdev_new | OBJECT(machine) | "malta" | board Machine= Class.init() hw/mips/malta.c:1230 | qdev_new | OBJECT(machine) | "gt64120" | board Machi= neClass.init() hw/mips/malta.c:1237 | pci_new_multifunction | OBJECT(machine) | "piix4" | = board MachineClass.init() hw/mips/malta.c:1257 | isa_create_simple | OBJECT(machine) | "superio" | bo= ard MachineClass.init() Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/mips/boston.c | 21 +++++++++++---------- hw/mips/fuloong2e.c | 9 +++++---- hw/mips/jazz.c | 36 +++++++++++++++++++----------------- hw/mips/loongson3_virt.c | 22 ++++++++++++---------- hw/mips/malta.c | 16 +++++++++------- 5 files changed, 56 insertions(+), 48 deletions(-) diff --git a/hw/mips/boston.c b/hw/mips/boston.c index 770160c4e5..a156b218fb 100644 --- a/hw/mips/boston.c +++ b/hw/mips/boston.c @@ -424,7 +424,7 @@ static const struct fit_loader boston_fit_loader =3D { }; =20 static inline XilinxPCIEHost * -xilinx_pcie_init(MemoryRegion *sys_mem, uint32_t bus_nr, +xilinx_pcie_init(Object *parent, MemoryRegion *sys_mem, uint32_t bus_nr, hwaddr cfg_base, uint64_t cfg_size, hwaddr mmio_base, uint64_t mmio_size, qemu_irq irq) @@ -432,7 +432,7 @@ xilinx_pcie_init(MemoryRegion *sys_mem, uint32_t bus_nr, DeviceState *dev; MemoryRegion *cfg, *mmio; =20 - dev =3D qdev_new_orphan(TYPE_XILINX_PCIE_HOST); + dev =3D qdev_new(parent, "pcie[*]", TYPE_XILINX_PCIE_HOST); =20 qdev_prop_set_uint32(dev, "bus_nr", bus_nr); qdev_prop_set_uint64(dev, "cfg_base", cfg_base); @@ -440,7 +440,7 @@ xilinx_pcie_init(MemoryRegion *sys_mem, uint32_t bus_nr, qdev_prop_set_uint64(dev, "mmio_base", mmio_base); qdev_prop_set_uint64(dev, "mmio_size", mmio_size); =20 - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 cfg =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0); memory_region_add_subregion_overlap(sys_mem, cfg_base, cfg, 0); @@ -688,8 +688,8 @@ static void boston_mach_init(MachineState *machine) exit(1); } =20 - dev =3D qdev_new_orphan(TYPE_BOSTON); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + dev =3D qdev_new(OBJECT(machine), "boston", TYPE_BOSTON); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 s =3D BOSTON(dev); s->mach =3D machine; @@ -727,21 +727,21 @@ static void boston_mach_init(MachineState *machine) MIN(machine->ram_size, (256 * MiB))); memory_region_add_subregion_overlap(sys_mem, 0, ddr_low_alias, 0); =20 - xilinx_pcie_init(sys_mem, 0, + xilinx_pcie_init(OBJECT(machine), sys_mem, 0, boston_memmap[BOSTON_PCIE0].base, boston_memmap[BOSTON_PCIE0].size, boston_memmap[BOSTON_PCIE0_MMIO].base, boston_memmap[BOSTON_PCIE0_MMIO].size, get_cps_irq(&s->cps, 2)); =20 - xilinx_pcie_init(sys_mem, 1, + xilinx_pcie_init(OBJECT(machine), sys_mem, 1, boston_memmap[BOSTON_PCIE1].base, boston_memmap[BOSTON_PCIE1].size, boston_memmap[BOSTON_PCIE1_MMIO].base, boston_memmap[BOSTON_PCIE1_MMIO].size, get_cps_irq(&s->cps, 1)); =20 - pcie2 =3D xilinx_pcie_init(sys_mem, 2, + pcie2 =3D xilinx_pcie_init(OBJECT(machine), sys_mem, 2, boston_memmap[BOSTON_PCIE2].base, boston_memmap[BOSTON_PCIE2].size, boston_memmap[BOSTON_PCIE2_MMIO].base, @@ -770,8 +770,9 @@ static void boston_mach_init(MachineState *machine) qemu_chr_fe_set_handlers(&s->lcd_display, NULL, NULL, boston_lcd_event, NULL, s, NULL, true); =20 - pdev =3D pci_create_simple_multifunction_orphan(&PCI_BRIDGE(&pcie2->ro= ot)->sec_bus, - PCI_DEVFN(0, 0), TYPE_ICH9_AHCI= ); + pdev =3D pci_create_simple_multifunction(OBJECT(machine), "ahci", + &PCI_BRIDGE(&pcie2->root)->sec_bus, + PCI_DEVFN(0, 0), TYPE_ICH9_AHCI); ich9 =3D ICH9_AHCI(pdev); g_assert(ARRAY_SIZE(hd) =3D=3D ich9->ahci.ports); ide_drive_get(hd, ich9->ahci.ports); diff --git a/hw/mips/fuloong2e.c b/hw/mips/fuloong2e.c index 0046423d40..88d2901829 100644 --- a/hw/mips/fuloong2e.c +++ b/hw/mips/fuloong2e.c @@ -286,7 +286,8 @@ static void mips_fuloong2e_init(MachineState *machine) pci_bus =3D bonito_init(OBJECT(machine), (qemu_irq *)&(env->irq[2])); =20 /* South bridge -> IP5 */ - pci_dev =3D pci_new_multifunction_orphan(PCI_DEVFN(FULOONG2E_VIA_SLOT,= 0), + pci_dev =3D pci_new_multifunction(OBJECT(machine), "via", + PCI_DEVFN(FULOONG2E_VIA_SLOT, 0), TYPE_VT82C686B_ISA); =20 /* Set properties on individual devices before realizing the south bri= dge */ @@ -295,7 +296,7 @@ static void mips_fuloong2e_init(MachineState *machine) qdev_prop_set_string(dev, "audiodev", machine->audiodev); } =20 - pci_realize_and_unref(pci_dev, pci_bus, &error_abort); + qdev_realize(DEVICE(pci_dev), BUS(pci_bus), &error_abort); =20 object_property_add_alias(OBJECT(machine), "rtc-time", object_resolve_path_component(OBJECT(pci_dev= ), @@ -312,12 +313,12 @@ static void mips_fuloong2e_init(MachineState *machine) /* GPU */ if (vga_interface_type !=3D VGA_NONE) { vga_interface_created =3D true; - pci_dev =3D pci_new_orphan(-1, "ati-vga"); + pci_dev =3D pci_new(OBJECT(machine), "vga", -1, "ati-vga"); dev =3D DEVICE(pci_dev); qdev_prop_set_uint32(dev, "vgamem_mb", 16); qdev_prop_set_uint16(dev, "x-device-id", 0x5159); qdev_prop_set_uint64(dev, "x-linear-aper-size", 16 * MiB); - pci_realize_and_unref(pci_dev, pci_bus, &error_fatal); + qdev_realize(DEVICE(pci_dev), BUS(pci_bus), &error_fatal); } =20 /* Populate SPD eeprom data */ diff --git a/hw/mips/jazz.c b/hw/mips/jazz.c index 31ef357554..208e59fbeb 100644 --- a/hw/mips/jazz.c +++ b/hw/mips/jazz.c @@ -113,7 +113,8 @@ static const MemoryRegionOps dma_dummy_ops =3D { .endianness =3D DEVICE_NATIVE_ENDIAN, }; =20 -static void mips_jazz_init_net(IOMMUMemoryRegion *rc4030_dma_mr, +static void mips_jazz_init_net(Object *parent, + IOMMUMemoryRegion *rc4030_dma_mr, DeviceState *rc4030, MemoryRegion *dp8393x_= prom) { DeviceState *dev; @@ -127,14 +128,14 @@ static void mips_jazz_init_net(IOMMUMemoryRegion *rc4= 030_dma_mr, return; } =20 - dev =3D qdev_new_orphan("dp8393x"); + dev =3D qdev_new(parent, "dp8393x", "dp8393x"); qdev_set_nic_properties(dev, nd); qdev_prop_set_uint8(dev, "it_shift", 2); qdev_prop_set_bit(dev, "big_endian", TARGET_BIG_ENDIAN); object_property_set_link(OBJECT(dev), "dma_mr", OBJECT(rc4030_dma_mr), &error_abort); sysbus =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(sysbus, &error_fatal); + sysbus_realize(sysbus, &error_fatal); sysbus_mmio_map(sysbus, 0, 0x80001000); sysbus_connect_irq(sysbus, 0, qdev_get_gpio_in(rc4030, 4)); =20 @@ -289,16 +290,16 @@ static void mips_jazz_init(MachineState *machine, isa_bus_register_input_irqs(isa_bus, i8259); i8257_dma_init(OBJECT(rc4030), isa_bus, 0); pit =3D i8254_pit_init(isa_bus, 0x40, 0, NULL); - pcspk =3D isa_new_orphan(TYPE_PC_SPEAKER); + pcspk =3D isa_new(OBJECT(machine), "pcspk", TYPE_PC_SPEAKER); object_property_set_link(OBJECT(pcspk), "pit", OBJECT(pit), &error_fat= al); - isa_realize_and_unref(pcspk, isa_bus, &error_fatal); + qdev_realize(DEVICE(pcspk), BUS(isa_bus), &error_fatal); =20 /* Video card */ switch (jazz_model) { case JAZZ_MAGNUM: - dev =3D qdev_new_orphan("sysbus-g364"); + dev =3D qdev_new(OBJECT(machine), "g364", "sysbus-g364"); sysbus =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(sysbus, &error_fatal); + sysbus_realize(sysbus, &error_fatal); sysbus_mmio_map(sysbus, 0, 0x60080000); sysbus_mmio_map(sysbus, 1, 0x40000000); sysbus_connect_irq(sysbus, 0, qdev_get_gpio_in(rc4030, 3)); @@ -313,10 +314,10 @@ static void mips_jazz_init(MachineState *machine, } break; case JAZZ_PICA61: - dev =3D qdev_new_orphan(TYPE_VGA_MMIO); + dev =3D qdev_new(OBJECT(machine), "vga", TYPE_VGA_MMIO); qdev_prop_set_uint8(dev, "it_shift", 0); sysbus =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(sysbus, &error_fatal); + sysbus_realize(sysbus, &error_fatal); sysbus_mmio_map(sysbus, 0, 0x60000000); sysbus_mmio_map(sysbus, 1, 0x400a0000); sysbus_mmio_map(sysbus, 2, VBE_DISPI_LFB_PHYSICAL_ADDRESS); @@ -326,10 +327,10 @@ static void mips_jazz_init(MachineState *machine, } =20 /* Network controller */ - mips_jazz_init_net(rc4030_dma_mr, rc4030, dp8393x_prom); + mips_jazz_init_net(OBJECT(machine), rc4030_dma_mr, rc4030, dp8393x_pro= m); =20 /* SCSI adapter */ - dev =3D qdev_new_orphan(TYPE_SYSBUS_ESP); + dev =3D qdev_new(OBJECT(machine), "esp", TYPE_SYSBUS_ESP); sysbus_esp =3D SYSBUS_ESP(dev); esp =3D &sysbus_esp->esp; esp->dma_memory_read =3D rc4030_dma_read; @@ -340,7 +341,7 @@ static void mips_jazz_init(MachineState *machine, esp->dma_enabled =3D 1; =20 sysbus =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(sysbus, &error_fatal); + sysbus_realize(sysbus, &error_fatal); sysbus_connect_irq(sysbus, 0, qdev_get_gpio_in(rc4030, 5)); sysbus_mmio_map(sysbus, 0, 0x80002000); =20 @@ -360,10 +361,10 @@ static void mips_jazz_init(MachineState *machine, memory_region_add_subregion(address_space, 0x80004000, rtc); =20 /* Keyboard (i8042) */ - i8042 =3D I8042_MMIO(qdev_new_orphan(TYPE_I8042_MMIO)); + i8042 =3D I8042_MMIO(qdev_new(OBJECT(machine), "i8042", TYPE_I8042_MMI= O)); qdev_prop_set_uint64(DEVICE(i8042), "mask", 1); qdev_prop_set_uint32(DEVICE(i8042), "size", 0x1000); - sysbus_realize_and_unref(SYS_BUS_DEVICE(i8042), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(i8042), &error_fatal); =20 qdev_connect_gpio_out(DEVICE(i8042), I8042_KBD_IRQ, qdev_get_gpio_in(rc4030, 6)); @@ -390,13 +391,14 @@ static void mips_jazz_init(MachineState *machine, /* FIXME: missing Jazz sound at 0x8000c000, rc4030[2] */ =20 /* NVRAM */ - dev =3D qdev_new_orphan("ds1225y"); + dev =3D qdev_new(OBJECT(machine), "nvram", "ds1225y"); sysbus =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(sysbus, &error_fatal); + sysbus_realize(sysbus, &error_fatal); sysbus_mmio_map(sysbus, 0, 0x80009000); =20 /* LED indicator */ - sysbus_create_simple_orphan("jazz-led", 0x8000f000, NULL); + sysbus_create_simple(OBJECT(machine), "led", "jazz-led", + 0x8000f000, NULL); =20 g_free(dmas); } diff --git a/hw/mips/loongson3_virt.c b/hw/mips/loongson3_virt.c index 6f2ac8ba90..9ab1edceb2 100644 --- a/hw/mips/loongson3_virt.c +++ b/hw/mips/loongson3_virt.c @@ -424,8 +424,8 @@ static inline void loongson3_virt_devices_init(MachineS= tate *machine, MachineClass *mc =3D MACHINE_GET_CLASS(machine); LoongsonMachineState *s =3D LOONGSON_MACHINE(machine); =20 - dev =3D qdev_new_orphan(TYPE_GPEX_HOST); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + dev =3D qdev_new(OBJECT(machine), "pcie", TYPE_GPEX_HOST); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); pci_bus =3D PCI_HOST_BRIDGE(dev)->bus; =20 s->ecam_alias =3D g_new0(MemoryRegion, 1); @@ -465,11 +465,12 @@ static inline void loongson3_virt_devices_init(Machin= eState *machine, if (defaults_enabled() && object_class_by_name("pci-ohci")) { USBBus *usb_bus; =20 - pci_create_simple_orphan(pci_bus, -1, "pci-ohci"); + pci_create_simple(OBJECT(machine), "ohci", pci_bus, -1, "pci-ohci"= ); usb_bus =3D USB_BUS(object_resolve_type_unambiguous(TYPE_USB_BUS, &error_abort)); - usb_create_simple_orphan(usb_bus, "usb-kbd"); - usb_create_simple_orphan(usb_bus, "usb-tablet"); + usb_create_simple(OBJECT(machine), "usb-kbd", usb_bus, "usb-kbd"); + usb_create_simple(OBJECT(machine), "usb-tablet", usb_bus, + "usb-tablet"); } =20 pci_init_nic_devices(pci_bus, mc->default_nic); @@ -519,16 +520,16 @@ static void mips_loongson3_virt_init(MachineState *ma= chine) =20 memory_region_init(iocsr, OBJECT(machine), "loongson3.iocsr", UINT32_M= AX); =20 - ipi =3D qdev_new_orphan(TYPE_LOONGSON_IPI); + ipi =3D qdev_new(OBJECT(machine), "ipi", TYPE_LOONGSON_IPI); qdev_prop_set_uint32(ipi, "num-cpu", machine->smp.cpus); - sysbus_realize_and_unref(SYS_BUS_DEVICE(ipi), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(ipi), &error_fatal); memory_region_add_subregion(iocsr, SMP_IPI_MAILBOX, sysbus_mmio_get_region(SYS_BUS_DEVICE(ipi), 0)= ); memory_region_add_subregion(iocsr, MAIL_SEND_ADDR, sysbus_mmio_get_region(SYS_BUS_DEVICE(ipi), 1)= ); =20 - liointc =3D qdev_new_orphan("loongson.liointc"); - sysbus_realize_and_unref(SYS_BUS_DEVICE(liointc), &error_fatal); + liointc =3D qdev_new(OBJECT(machine), "liointc", "loongson.liointc"); + sysbus_realize(SYS_BUS_DEVICE(liointc), &error_fatal); =20 sysbus_mmio_map(SYS_BUS_DEVICE(liointc), 0, virt_memmap[VIRT_LIOINTC].= base); =20 @@ -536,7 +537,8 @@ static void mips_loongson3_virt_init(MachineState *mach= ine) qdev_get_gpio_in(liointc, UART_IRQ), 115200, serial_hd(= 0), DEVICE_LITTLE_ENDIAN); =20 - sysbus_create_simple_orphan("goldfish_rtc", virt_memmap[VIRT_RTC].base, + sysbus_create_simple(OBJECT(machine), "rtc", "goldfish_rtc", + virt_memmap[VIRT_RTC].base, qdev_get_gpio_in(liointc, RTC_IRQ)); =20 cpuclk =3D clock_new(OBJECT(machine), "cpu-refclk"); diff --git a/hw/mips/malta.c b/hw/mips/malta.c index ea11299af8..ebd1456657 100644 --- a/hw/mips/malta.c +++ b/hw/mips/malta.c @@ -1098,8 +1098,8 @@ void mips_malta_init(MachineState *machine) PCIDevice *piix4; DeviceState *dev; =20 - s =3D MIPS_MALTA(qdev_new_orphan(TYPE_MIPS_MALTA)); - sysbus_realize_and_unref(SYS_BUS_DEVICE(s), &error_fatal); + s =3D MIPS_MALTA(qdev_new(OBJECT(machine), "malta", TYPE_MIPS_MALTA)); + sysbus_realize(SYS_BUS_DEVICE(s), &error_fatal); =20 /* create CPU */ mips_create_cpu(machine, s, &cbus_irq, &i8259_irq); @@ -1227,16 +1227,17 @@ void mips_malta_init(MachineState *machine) stl_p(memory_region_get_ram_ptr(bios_copy) + 0x10, 0x00000420); =20 /* Northbridge */ - dev =3D qdev_new_orphan("gt64120"); + dev =3D qdev_new(OBJECT(machine), "gt64120", "gt64120"); qdev_prop_set_bit(dev, "cpu-little-endian", !TARGET_BIG_ENDIAN); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); pci_bus =3D PCI_BUS(qdev_get_child_bus(dev, "pci")); pci_bus_map_irqs(pci_bus, malta_pci_slot_get_pirq); =20 /* Southbridge */ - piix4 =3D pci_new_multifunction_orphan(PIIX4_PCI_DEVFN, TYPE_PIIX4_PCI= _DEVICE); + piix4 =3D pci_new_multifunction(OBJECT(machine), "piix4", + PIIX4_PCI_DEVFN, TYPE_PIIX4_PCI_DEVICE); qdev_prop_set_uint32(DEVICE(piix4), "smb_io_base", 0x1100); - pci_realize_and_unref(piix4, pci_bus, &error_fatal); + qdev_realize(DEVICE(piix4), BUS(pci_bus), &error_fatal); isa_bus =3D ISA_BUS(qdev_get_child_bus(DEVICE(piix4), "isa.0")); =20 dev =3D DEVICE(object_resolve_path_component(OBJECT(piix4), "ide")); @@ -1254,7 +1255,8 @@ void mips_malta_init(MachineState *machine) g_free(smbus_eeprom_buf); =20 /* Super I/O: SMS FDC37M817 */ - isa_create_simple_orphan(isa_bus, TYPE_FDC37M81X_SUPERIO); + isa_create_simple(OBJECT(machine), "superio", isa_bus, + TYPE_FDC37M81X_SUPERIO); =20 /* Network card */ network_init(pci_bus); --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411548; cv=none; d=zohomail.com; s=zohoarc; b=Vtrhhb9jimRxzN2k2GceeMtaqKI+JDHsbFDPZGp/lhk2xULu01xXQrMlOsATUCCAGpGgojyJyycxI/Le4tyu4q0MiJfUKUfJb2I4uF/wQXxc9sF2A/rOHfAxs8hYSoVWP8oLi+hPC5jf1/UpsnbgsMgneD2C0MzlNrpvImuCaH8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411548; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=zdByMBkcpMZr9GoUkRYLLMcG2ley+YOXCuAbSTQQN+I=; b=Dl8CQ64SkaWJAjzUfVgTJoAZVvy9w8pwdcfkOgjuQgTqP+1BEICPQwUUId4jtYrgmjrj9uyNI91ip8D7bGIhaATTW1SG+WpoZqPyRCNdFAYev6keyFBBiYK/5AWLWjMxgK3+zpleinlf5w2OasQ9XbegXMacK4hDp3qb9YcgKG0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411548724943.8276091862583; Sat, 18 Jul 2026 14:52:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCxP-0005qR-9X; Sat, 18 Jul 2026 17:52:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCxK-0005gl-9B; Sat, 18 Jul 2026 17:52:22 -0400 Received: from pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.246.1.125]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCxE-0003ya-Fb; Sat, 18 Jul 2026 17:52:21 -0400 Received: from ip-10-5-0-115.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.0.115]) by internal-pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:52:12 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.236:16946] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.19.34:2525] with esmtp (Farcaster) id f8ac7780-7698-482f-bb29-89404e36c165; Sat, 18 Jul 2026 21:52:11 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA001.ant.amazon.com (10.250.64.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:52:11 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:52:01 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411536; x=1815947536; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=zdByMBkcpMZr9GoUkRYLLMcG2ley+YOXCuAbSTQQN+I=; b=iXWVqlQZAB1Ca3RNNXtX68/16E2Etosiag+58lf01/CJLaRpuZ0E9W2S 9Xu+IV0ZIVEpGdT4AjauoNH6EDpiMCX4G3kkSQMckeJnssRRct2XWMIvO ysgRT/P0d2jaPazlAMDrUMRh6HXGbS//5efXveUY0CUDFWRHoOtJDSZsQ gn0FmUctis9VgVQQ/iiYjisXEQ2PkXcvgliqUvDgSEVilKf21KqiSeiTQ 4HnlUJQvFIRCJG0dc++dEL1KdPHoJS73F1TSTm3zBXLsGz42uTwlL3nmi HNLxYE5qpAB1/aMdus+8V+doCve/DL00sAjw43CHiB/1J+/vfosAMAolj g==; X-CSE-ConnectionGUID: yjupSh+UR8aU6+9EXpAt4g== X-CSE-MsgGUID: 7NgJ+IdkT0+Mmapbd6WxVw== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23927252" X-Farcaster-Flow-ID: f8ac7780-7698-482f-bb29-89404e36c165 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 054/137] hw/i386: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:29 +0000 Message-ID: <20260718213652.37673-55-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D042UWA001.ant.amazon.com (10.13.139.92) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.246.1.125; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411549955158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/i386 to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. Six of the singletons in hw/i386/kvm/ (kvmclock, xen-evtchn, xen-gnttab, xen-overlay, xen-xenstore, xen-primary-console) are created via a public helper; those helpers gain an Object *parent first argument and all callers are updated in this patch. The pcspk device created in pc_machine_initfn() is left orphan for now: it is created in instance_init and object_unref()ed in instance_finalize when never realized. Making it a child<> would free it via object_property_del_all() before finalize runs, leaving finalize with a dangling pointer. This site needs a separate refactor of pc_machine_finalize() first. Per-site rationale (reviewers: dispute the modeling here): hw/i386/isapc.c:115 | isa_new | OBJECT(machine) | "rtc" | board init pc_ini= t_isa() hw/i386/kvm/clock.c:380 | sysbus_create_simple | parent | "kvmclock" | thre= ad Object *parent into kvmclock_create(); callers pass OBJECT(machine)/OBJE= CT(mms) hw/i386/kvm/xen_evtchn.c:309 | sysbus_create_simple | parent | "xen-evtchn"= | thread Object *parent into xen_evtchn_create(); caller pc_basic_device_i= nit passes OBJECT(pcms) hw/i386/kvm/xen_gnttab.c:155 | sysbus_create_simple | parent | "xen-gnttab"= | thread Object *parent into xen_gnttab_create(); caller passes OBJECT(pcm= s) hw/i386/kvm/xen_overlay.c:172 | sysbus_create_simple | parent | "xen-overla= y" | thread Object *parent into xen_overlay_create(); caller passes OBJECT(= pcms) hw/i386/kvm/xen_primary_console.c:87 | sysbus_create_simple | parent | "xen= -primary-console" | thread Object *parent into xen_primary_console_create()= ; callers: pc.c stub-guarded, xen_console_realize passes OBJECT(xendev) hw/i386/kvm/xen_xenstore.c:279 | sysbus_create_simple | parent | "xen-xenst= ore" | thread Object *parent into xen_xenstore_create(); caller passes OBJE= CT(pcms) hw/i386/microvm.c:111 | qdev_new | OBJECT(mms) | "gpex" | board helper crea= te_gpex(MicrovmMachineState *mms) hw/i386/microvm.c:200 | sysbus_create_simple | OBJECT(mms) | "virtio-mmio[*= ]" | board init loop hw/i386/microvm.c:207 | qdev_new | OBJECT(mms) | "acpi-ged" | board init; a= lready sysbus_realize (no unref), just parent hw/i386/microvm.c:219 | qdev_new | OBJECT(mms) | "xhci" | board init; alrea= dy sysbus_realize (no unref), just parent hw/i386/nitro_enclave.c:49 | qdev_new | OBJECT(nems) | "vsock" | board help= er receiving NitroEnclaveMachineState* hw/i386/nitro_enclave.c:78 | qdev_new | OBJECT(nems) | "nsm" | board helper= receiving NitroEnclaveMachineState* hw/i386/pc.c:1001 | isa_new | parent | "fdc" | pc_superio_init already has = Object *parent hw/i386/pc.c:1017 | isa_create_simple | parent | "i8042" | pc_superio_init = already has Object *parent hw/i386/pc.c:1019 | isa_create_simple | parent | "vmport" | pc_superio_init= already has Object *parent hw/i386/pc.c:1020 | isa_try_new | parent | "vmmouse" | pc_superio_init alre= ady has Object *parent hw/i386/pc.c:1029 | isa_create_simple | parent | "port92" | pc_superio_init= already has Object *parent hw/i386/pc.c:1068 | qdev_try_new | OBJECT(pcms) | "hpet" | pc_basic_device_= init receives PCMachineState* hw/i386/pc.c:1107 | pci_create_simple | OBJECT(pcms) | "xen-platform" | pc_= basic_device_init receives PCMachineState* hw/i386/pc.c:1642 | isa_new | ORPHAN-JUSTIFIED | - | instance_init + explic= it unref in instance_finalize; parenting here would double-free via object_= property_del_all before finalize; needs separate refactor of pc_machine_fin= alize hw/i386/pc_piix.c:196 | qdev_new | OBJECT(machine) | "i440fx" | collapse ex= isting object_property_add_child(machine,"i440fx") hw/i386/pc_piix.c:239 | pci_new_multifunction | OBJECT(machine) | "south-br= idge" | board init pc_init1() hw/i386/pc_piix.c:387 | pci_create_simple | OBJECT(machine) | "xen-platform= " | board init pc_xen_hvm_init() hw/i386/pc_q35.c:117 | pci_new_multifunction | parent | "ehci[*]" | thread = Object *parent into ehci_create_ich9_with_companions(); caller passes OBJEC= T(machine) hw/i386/pc_q35.c:122 | pci_new_multifunction | parent | "uhci[*]" | thread = Object *parent into ehci_create_ich9_with_companions() hw/i386/pc_q35.c:202 | qdev_new | OBJECT(machine) | "q35" | collapse existi= ng object_property_add_child(machine,"q35") hw/i386/pc_q35.c:238 | pci_new_multifunction | OBJECT(machine) | "lpc" | bo= ard init pc_q35_init() hw/i386/pc_q35.c:293 | pci_create_simple_multifunction | OBJECT(machine) | = "sata" | board init pc_q35_init() hw/i386/pc_q35.c:314 | pci_create_simple_multifunction | OBJECT(machine) | = "smbus" | board init pc_q35_init() hw/i386/pc_sysfw.c:82 | qdev_new | OBJECT(pcms) | name | collapse existing = object_property_add_child(pcms,name); drop explicit object_unref hw/i386/sgx.c:314 | qdev_new | OBJECT(pcms) | "sgx-epc[*]" | board helper r= eceiving PCMachineState* hw/i386/x86-common.c:508 | qdev_new | parent | "ioapic" | collapse existing= object_property_add_child(parent,"ioapic") hw/i386/x86-common.c:510 | qdev_new | parent | "ioapic" | collapse existing= object_property_add_child(parent,"ioapic") hw/i386/x86-common.c:528 | qdev_new | parent | "ioapic2" | thread Object *p= arent into ioapic_init_secondary(); caller passes OBJECT(mms) Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/char/xen_console.c | 2 +- hw/i386/isapc.c | 6 +++--- hw/i386/kvm/clock.c | 4 ++-- hw/i386/kvm/clock.h | 2 +- hw/i386/kvm/xen-stubs.c | 2 +- hw/i386/kvm/xen_evtchn.c | 6 ++++-- hw/i386/kvm/xen_evtchn.h | 3 ++- hw/i386/kvm/xen_gnttab.c | 6 ++++-- hw/i386/kvm/xen_gnttab.h | 2 +- hw/i386/kvm/xen_overlay.c | 6 ++++-- hw/i386/kvm/xen_overlay.h | 2 +- hw/i386/kvm/xen_primary_console.c | 5 +++-- hw/i386/kvm/xen_primary_console.h | 2 +- hw/i386/kvm/xen_xenstore.c | 5 +++-- hw/i386/kvm/xen_xenstore.h | 2 +- hw/i386/microvm.c | 15 ++++++++------- hw/i386/nitro_enclave.c | 9 +++++---- hw/i386/pc.c | 29 ++++++++++++++-------------- hw/i386/pc_piix.c | 15 ++++++++------- hw/i386/pc_q35.c | 32 +++++++++++++++++-------------- hw/i386/pc_sysfw.c | 10 ++-------- hw/i386/sgx.c | 5 +++-- hw/i386/x86-common.c | 13 ++++++------- include/hw/i386/x86.h | 2 +- 24 files changed, 98 insertions(+), 87 deletions(-) diff --git a/hw/char/xen_console.c b/hw/char/xen_console.c index 57520192b9..cd440b82f4 100644 --- a/hw/char/xen_console.c +++ b/hw/char/xen_console.c @@ -440,7 +440,7 @@ static void xen_console_realize(XenDevice *xendev, Erro= r **errp) */ if (!con->dev) { if (xen_mode =3D=3D XEN_EMULATE) { - xen_primary_console_create(); + xen_primary_console_create(OBJECT(xendev)); } else if (xen_device_frontend_scanf(xendev, "ring-ref", "%u", &u) !=3D 1 || xen_device_frontend_scanf(xendev, "port", "%u", &u) != =3D 1) { diff --git a/hw/i386/isapc.c b/hw/i386/isapc.c index c2a3f23f2c..c5bba66967 100644 --- a/hw/i386/isapc.c +++ b/hw/i386/isapc.c @@ -90,7 +90,7 @@ static void pc_init_isa(MachineState *machine) x86_cpus_init(x86ms, pcmc->default_cpu_version); =20 if (kvm_enabled()) { - kvmclock_create(pcmc->kvmclock_create_always); + kvmclock_create(OBJECT(machine), pcmc->kvmclock_create_always); } =20 /* allocate ram and load rom/bios */ @@ -112,9 +112,9 @@ static void pc_init_isa(MachineState *machine) &error_abort); isa_bus_register_input_irqs(isa_bus, x86ms->gsi); =20 - x86ms->rtc =3D isa_new_orphan(TYPE_MC146818_RTC); + x86ms->rtc =3D isa_new(OBJECT(machine), "rtc", TYPE_MC146818_RTC); qdev_prop_set_int32(DEVICE(x86ms->rtc), "base_year", 2000); - isa_realize_and_unref(x86ms->rtc, isa_bus, &error_fatal); + qdev_realize(DEVICE(x86ms->rtc), BUS(isa_bus), &error_fatal); irq =3D object_property_get_uint(OBJECT(x86ms->rtc), "irq", &error_fatal); isa_connect_gpio_out(ISA_DEVICE(x86ms->rtc), 0, irq); diff --git a/hw/i386/kvm/clock.c b/hw/i386/kvm/clock.c index de0df2c82a..34abba88f4 100644 --- a/hw/i386/kvm/clock.c +++ b/hw/i386/kvm/clock.c @@ -369,7 +369,7 @@ static const TypeInfo kvmclock_info =3D { }; =20 /* Note: Must be called after VCPU initialization. */ -void kvmclock_create(bool create_always) +void kvmclock_create(Object *parent, bool create_always) { X86CPU *cpu =3D X86_CPU(first_cpu); =20 @@ -377,7 +377,7 @@ void kvmclock_create(bool create_always) if (create_always || cpu->env.features[FEAT_KVM] & (CPUID_KVM_CLOCK | CPUID_KVM_CLOCK2)) { - sysbus_create_simple_orphan(TYPE_KVM_CLOCK, -1, NULL); + sysbus_create_simple(parent, "kvmclock", TYPE_KVM_CLOCK, -1, NULL); } } =20 diff --git a/hw/i386/kvm/clock.h b/hw/i386/kvm/clock.h index 401c7e445b..e86aa3aa88 100644 --- a/hw/i386/kvm/clock.h +++ b/hw/i386/kvm/clock.h @@ -13,6 +13,6 @@ #ifndef HW_I386_KVM_CLOCK_H #define HW_I386_KVM_CLOCK_H =20 -void kvmclock_create(bool create_always); +void kvmclock_create(Object *parent, bool create_always); =20 #endif diff --git a/hw/i386/kvm/xen-stubs.c b/hw/i386/kvm/xen-stubs.c index bf6ac28bef..afdceeeb2a 100644 --- a/hw/i386/kvm/xen-stubs.c +++ b/hw/i386/kvm/xen-stubs.c @@ -32,7 +32,7 @@ bool xen_evtchn_deliver_pirq_msi(uint64_t address, uint32= _t data) return false; } =20 -void xen_primary_console_create(void) +void xen_primary_console_create(Object *parent) { } =20 diff --git a/hw/i386/kvm/xen_evtchn.c b/hw/i386/kvm/xen_evtchn.c index 1a406fbc00..89e59b612a 100644 --- a/hw/i386/kvm/xen_evtchn.c +++ b/hw/i386/kvm/xen_evtchn.c @@ -304,9 +304,11 @@ static void gsi_assert_bh(void *opaque) } } =20 -void xen_evtchn_create(unsigned int nr_gsis, qemu_irq *system_gsis) +void xen_evtchn_create(Object *parent, unsigned int nr_gsis, + qemu_irq *system_gsis) { - XenEvtchnState *s =3D XEN_EVTCHN(sysbus_create_simple_orphan(TYPE_XEN_= EVTCHN, + XenEvtchnState *s =3D XEN_EVTCHN(sysbus_create_simple(parent, "xen-evt= chn", + TYPE_XEN_EVTCHN, -1, NULL)); int i; =20 diff --git a/hw/i386/kvm/xen_evtchn.h b/hw/i386/kvm/xen_evtchn.h index 8d339db560..87e9d4bb9f 100644 --- a/hw/i386/kvm/xen_evtchn.h +++ b/hw/i386/kvm/xen_evtchn.h @@ -16,7 +16,8 @@ =20 typedef uint32_t evtchn_port_t; =20 -void xen_evtchn_create(unsigned int nr_gsis, qemu_irq *system_gsis); +void xen_evtchn_create(Object *parent, unsigned int nr_gsis, + qemu_irq *system_gsis); int xen_evtchn_soft_reset(void); int xen_evtchn_set_callback_param(uint64_t param); void xen_evtchn_set_callback_level(int level); diff --git a/hw/i386/kvm/xen_gnttab.c b/hw/i386/kvm/xen_gnttab.c index eb43e9f385..ea5a561b05 100644 --- a/hw/i386/kvm/xen_gnttab.c +++ b/hw/i386/kvm/xen_gnttab.c @@ -150,9 +150,11 @@ static const TypeInfo xen_gnttab_info =3D { .class_init =3D xen_gnttab_class_init, }; =20 -void xen_gnttab_create(void) +void xen_gnttab_create(Object *parent) { - xen_gnttab_singleton =3D XEN_GNTTAB(sysbus_create_simple_orphan(TYPE_X= EN_GNTTAB, + xen_gnttab_singleton =3D XEN_GNTTAB(sysbus_create_simple(parent, + "xen-gnttab", + TYPE_XEN_GNTTAB, -1, NULL)); } =20 diff --git a/hw/i386/kvm/xen_gnttab.h b/hw/i386/kvm/xen_gnttab.h index ee215239b0..6e9c430476 100644 --- a/hw/i386/kvm/xen_gnttab.h +++ b/hw/i386/kvm/xen_gnttab.h @@ -12,7 +12,7 @@ #ifndef QEMU_XEN_GNTTAB_H #define QEMU_XEN_GNTTAB_H =20 -void xen_gnttab_create(void); +void xen_gnttab_create(Object *parent); int xen_gnttab_reset(void); int xen_gnttab_map_page(uint64_t idx, uint64_t gfn); =20 diff --git a/hw/i386/kvm/xen_overlay.c b/hw/i386/kvm/xen_overlay.c index 1ef47539e4..bfa4807427 100644 --- a/hw/i386/kvm/xen_overlay.c +++ b/hw/i386/kvm/xen_overlay.c @@ -167,9 +167,11 @@ static const TypeInfo xen_overlay_info =3D { .class_init =3D xen_overlay_class_init, }; =20 -void xen_overlay_create(void) +void xen_overlay_create(Object *parent) { - xen_overlay_singleton =3D XEN_OVERLAY(sysbus_create_simple_orphan(TYPE= _XEN_OVERLAY, + xen_overlay_singleton =3D XEN_OVERLAY(sysbus_create_simple(parent, + "xen-overlay", + TYPE_XEN_OVER= LAY, -1, NULL)); =20 /* If xen_domid wasn't explicitly set, at least make sure it isn't zer= o. */ diff --git a/hw/i386/kvm/xen_overlay.h b/hw/i386/kvm/xen_overlay.h index 75ecb6b359..37cd86f7ce 100644 --- a/hw/i386/kvm/xen_overlay.h +++ b/hw/i386/kvm/xen_overlay.h @@ -12,7 +12,7 @@ #ifndef QEMU_XEN_OVERLAY_H #define QEMU_XEN_OVERLAY_H =20 -void xen_overlay_create(void); +void xen_overlay_create(Object *parent); =20 int xen_overlay_map_shinfo_page(uint64_t gpa); void *xen_overlay_get_shinfo_ptr(void); diff --git a/hw/i386/kvm/xen_primary_console.c b/hw/i386/kvm/xen_primary_co= nsole.c index f22ce4b14b..323b0747a2 100644 --- a/hw/i386/kvm/xen_primary_console.c +++ b/hw/i386/kvm/xen_primary_console.c @@ -82,9 +82,10 @@ static const TypeInfo xen_primary_console_info =3D { }; =20 =20 -void xen_primary_console_create(void) +void xen_primary_console_create(Object *parent) { - DeviceState *dev =3D sysbus_create_simple_orphan(TYPE_XEN_PRIMARY_CONS= OLE, -1, NULL); + DeviceState *dev =3D sysbus_create_simple(parent, "xen-primary-console= ", + TYPE_XEN_PRIMARY_CONSOLE, -1, = NULL); =20 trace_xen_primary_console_create(); =20 diff --git a/hw/i386/kvm/xen_primary_console.h b/hw/i386/kvm/xen_primary_co= nsole.h index 7e2989ea0d..240c55f0b0 100644 --- a/hw/i386/kvm/xen_primary_console.h +++ b/hw/i386/kvm/xen_primary_console.h @@ -12,7 +12,7 @@ #ifndef QEMU_XEN_PRIMARY_CONSOLE_H #define QEMU_XEN_PRIMARY_CONSOLE_H =20 -void xen_primary_console_create(void); +void xen_primary_console_create(Object *parent); int xen_primary_console_reset(void); =20 uint16_t xen_primary_console_get_port(void); diff --git a/hw/i386/kvm/xen_xenstore.c b/hw/i386/kvm/xen_xenstore.c index 92493bcb6d..1719eab20e 100644 --- a/hw/i386/kvm/xen_xenstore.c +++ b/hw/i386/kvm/xen_xenstore.c @@ -274,9 +274,10 @@ static const TypeInfo xen_xenstore_info =3D { .class_init =3D xen_xenstore_class_init, }; =20 -void xen_xenstore_create(void) +void xen_xenstore_create(Object *parent) { - DeviceState *dev =3D sysbus_create_simple_orphan(TYPE_XEN_XENSTORE, -1= , NULL); + DeviceState *dev =3D sysbus_create_simple(parent, "xen-xenstore", + TYPE_XEN_XENSTORE, -1, NULL); =20 xen_xenstore_singleton =3D XEN_XENSTORE(dev); =20 diff --git a/hw/i386/kvm/xen_xenstore.h b/hw/i386/kvm/xen_xenstore.h index 8c3768e075..a36626e4ff 100644 --- a/hw/i386/kvm/xen_xenstore.h +++ b/hw/i386/kvm/xen_xenstore.h @@ -12,7 +12,7 @@ #ifndef QEMU_XEN_XENSTORE_H #define QEMU_XEN_XENSTORE_H =20 -void xen_xenstore_create(void); +void xen_xenstore_create(Object *parent); int xen_xenstore_reset(void); =20 uint16_t xen_xenstore_get_port(void); diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c index 8e52cdd0db..d701672c1a 100644 --- a/hw/i386/microvm.c +++ b/hw/i386/microvm.c @@ -108,8 +108,8 @@ static void create_gpex(MicrovmMachineState *mms) DeviceState *dev; int i; =20 - dev =3D qdev_new_orphan(TYPE_GPEX_HOST); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + dev =3D qdev_new(OBJECT(mms), "gpex", TYPE_GPEX_HOST); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 /* Map only the first size_ecam bytes of ECAM space */ ecam_alias =3D g_new0(MemoryRegion, 1); @@ -177,11 +177,11 @@ static void microvm_devices_init(MicrovmMachineState = *mms) =20 ioapic_init_gsi(gsi_state, OBJECT(mms)); if (ioapics > 1) { - x86ms->ioapic2 =3D ioapic_init_secondary(gsi_state); + x86ms->ioapic2 =3D ioapic_init_secondary(OBJECT(mms), gsi_state); } =20 if (kvm_enabled()) { - kvmclock_create(true); + kvmclock_create(OBJECT(mms), true); } =20 mms->virtio_irq_base =3D 5; @@ -197,14 +197,15 @@ static void microvm_devices_init(MicrovmMachineState = *mms) } =20 for (i =3D 0; i < mms->virtio_num_transports; i++) { - sysbus_create_simple_orphan("virtio-mmio", + sysbus_create_simple(OBJECT(mms), "virtio-mmio[*]", "virtio-mmio", VIRTIO_MMIO_BASE + i * 512, x86ms->gsi[mms->virtio_irq_base + i]); } =20 /* Optional and legacy devices */ if (x86_machine_is_acpi_enabled(x86ms)) { - DeviceState *dev =3D qdev_new_orphan(TYPE_ACPI_GED); + DeviceState *dev =3D qdev_new(OBJECT(mms), "acpi-ged", + TYPE_ACPI_GED); qdev_prop_set_uint32(dev, "ged-event", ACPI_GED_PWR_DOWN_EVT); sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, GED_MMIO_BASE); @@ -216,7 +217,7 @@ static void microvm_devices_init(MicrovmMachineState *m= ms) } =20 if (x86_machine_is_acpi_enabled(x86ms) && machine_usb(MACHINE(mms))) { - DeviceState *dev =3D qdev_new_orphan(TYPE_XHCI_SYSBUS); + DeviceState *dev =3D qdev_new(OBJECT(mms), "xhci", TYPE_XHCI_SYSBU= S); qdev_prop_set_uint32(dev, "intrs", 1); qdev_prop_set_uint32(dev, "slots", XHCI_MAXSLOTS); qdev_prop_set_uint32(dev, "p2", 8); diff --git a/hw/i386/nitro_enclave.c b/hw/i386/nitro_enclave.c index fcad27bd9b..359d83dd49 100644 --- a/hw/i386/nitro_enclave.c +++ b/hw/i386/nitro_enclave.c @@ -46,7 +46,8 @@ static BusState *find_free_virtio_mmio_bus(void) =20 static void vhost_user_vsock_init(NitroEnclaveMachineState *nems) { - DeviceState *dev =3D qdev_new_orphan(TYPE_VHOST_USER_VSOCK); + DeviceState *dev =3D qdev_new(OBJECT(nems), "vsock", + TYPE_VHOST_USER_VSOCK); VHostUserVSock *vsock =3D VHOST_USER_VSOCK(dev); BusState *bus; =20 @@ -70,12 +71,12 @@ static void vhost_user_vsock_init(NitroEnclaveMachineSt= ate *nems) =20 vsock->conf.chardev.chr =3D chardev; =20 - qdev_realize_and_unref(dev, bus, &error_fatal); + qdev_realize(dev, bus, &error_fatal); } =20 static void virtio_nsm_init(NitroEnclaveMachineState *nems) { - DeviceState *dev =3D qdev_new_orphan(TYPE_VIRTIO_NSM); + DeviceState *dev =3D qdev_new(OBJECT(nems), "nsm", TYPE_VIRTIO_NSM); VirtIONSM *vnsm =3D VIRTIO_NSM(dev); BusState *bus =3D find_free_virtio_mmio_bus(); =20 @@ -86,7 +87,7 @@ static void virtio_nsm_init(NitroEnclaveMachineState *nem= s) =20 qdev_prop_set_string(dev, "module-id", nems->id); =20 - qdev_realize_and_unref(dev, bus, &error_fatal); + qdev_realize(dev, bus, &error_fatal); nems->vnsm =3D vnsm; } =20 diff --git a/hw/i386/pc.c b/hw/i386/pc.c index 3d405cb33c..1073888b42 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -998,9 +998,9 @@ static void pc_superio_init(Object *parent, ISABus *isa= _bus, bool create_fdctrl, } if (create_fdctrl) { #ifdef CONFIG_FDC_ISA - ISADevice *fdc =3D isa_new_orphan(TYPE_ISA_FDC); + ISADevice *fdc =3D isa_new(parent, "fdc", TYPE_ISA_FDC); if (fdc) { - isa_realize_and_unref(fdc, isa_bus, &error_fatal); + qdev_realize(DEVICE(fdc), BUS(isa_bus), &error_fatal); isa_fdc_init_drives(fdc, fd); } #endif @@ -1014,19 +1014,19 @@ static void pc_superio_init(Object *parent, ISABus = *isa_bus, bool create_fdctrl, return; } =20 - i8042 =3D isa_create_simple_orphan(isa_bus, TYPE_I8042); + i8042 =3D isa_create_simple(parent, "i8042[*]", isa_bus, TYPE_I8042); if (!no_vmport) { - isa_create_simple_orphan(isa_bus, TYPE_VMPORT); - vmmouse =3D isa_try_new_orphan("vmmouse"); + isa_create_simple(parent, "vmport[*]", isa_bus, TYPE_VMPORT); + vmmouse =3D isa_try_new(parent, "vmmouse", "vmmouse"); } else { vmmouse =3D NULL; } if (vmmouse) { object_property_set_link(OBJECT(vmmouse), TYPE_I8042, OBJECT(i8042= ), &error_abort); - isa_realize_and_unref(vmmouse, isa_bus, &error_fatal); + qdev_realize(DEVICE(vmmouse), BUS(isa_bus), &error_fatal); } - port92 =3D isa_create_simple_orphan(isa_bus, TYPE_PORT92); + port92 =3D isa_create_simple(parent, "port92", isa_bus, TYPE_PORT92); =20 a20_line =3D qemu_allocate_irqs(handle_a20_line_change, first_cpu, 2); qdev_connect_gpio_out_named(DEVICE(i8042), @@ -1065,7 +1065,7 @@ void pc_basic_device_init(struct PCMachineState *pcms, if (pcms->hpet_enabled) { qemu_irq rtc_irq; =20 - hpet =3D qdev_try_new_orphan(TYPE_HPET); + hpet =3D qdev_try_new(OBJECT(pcms), "hpet[*]", TYPE_HPET); if (!hpet) { error_report("couldn't create HPET device"); exit(1); @@ -1080,7 +1080,7 @@ void pc_basic_device_init(struct PCMachineState *pcms, if (!compat) { qdev_prop_set_uint32(hpet, HPET_INTCAP, hpet_irqs); } - sysbus_realize_and_unref(SYS_BUS_DEVICE(hpet), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(hpet), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(hpet), 0, HPET_BASE); =20 for (i =3D 0; i < IOAPIC_NUM_PINS; i++) { @@ -1099,12 +1099,13 @@ void pc_basic_device_init(struct PCMachineState *pc= ms, =20 #ifdef CONFIG_XEN_EMU if (xen_mode =3D=3D XEN_EMULATE) { - xen_overlay_create(); - xen_evtchn_create(IOAPIC_NUM_PINS, gsi); - xen_gnttab_create(); - xen_xenstore_create(); + xen_overlay_create(OBJECT(pcms)); + xen_evtchn_create(OBJECT(pcms), IOAPIC_NUM_PINS, gsi); + xen_gnttab_create(OBJECT(pcms)); + xen_xenstore_create(OBJECT(pcms)); if (pcms->pcibus) { - pci_create_simple_orphan(pcms->pcibus, -1, "xen-platform"); + pci_create_simple(OBJECT(pcms), "xen-platform", pcms->pcibus, + -1, "xen-platform"); } xen_bus_init(); } diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c index 44ce592ea2..8ae2108e73 100644 --- a/hw/i386/pc_piix.c +++ b/hw/i386/pc_piix.c @@ -187,14 +187,13 @@ static void pc_init1(MachineState *machine, const cha= r *pci_type) x86_cpus_init(x86ms, pcmc->default_cpu_version); =20 if (kvm_enabled()) { - kvmclock_create(pcmc->kvmclock_create_always); + kvmclock_create(OBJECT(machine), pcmc->kvmclock_create_always); } =20 pci_memory =3D g_new(MemoryRegion, 1); memory_region_init(pci_memory, NULL, "pci", UINT64_MAX); =20 - phb =3D OBJECT(qdev_new_orphan(TYPE_I440FX_PCI_HOST_BRIDGE)); - object_property_add_child(OBJECT(machine), "i440fx", phb); + phb =3D OBJECT(qdev_new(OBJECT(machine), "i440fx", TYPE_I440FX_PCI_HOS= T_BRIDGE)); object_property_set_link(phb, PCI_HOST_PROP_RAM_MEM, OBJECT(ram_memory), &error_fatal); object_property_set_link(phb, PCI_HOST_PROP_PCI_MEM, @@ -209,7 +208,7 @@ static void pc_init1(MachineState *machine, const char = *pci_type) x86ms->above_4g_mem_size, &error_fatal); object_property_set_str(phb, I440FX_HOST_PROP_PCI_TYPE, pci_type, &error_fatal); - sysbus_realize_and_unref(SYS_BUS_DEVICE(phb), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(phb), &error_fatal); =20 pcms->pcibus =3D PCI_BUS(qdev_get_child_bus(DEVICE(phb), "pci.0")); pci_bus_map_irqs(pcms->pcibus, @@ -236,7 +235,8 @@ static void pc_init1(MachineState *machine, const char = *pci_type) =20 gsi_state =3D pc_gsi_create(&x86ms->gsi, true); =20 - pci_dev =3D pci_new_multifunction_orphan(-1, pcms->south_bridge); + pci_dev =3D pci_new_multifunction(OBJECT(machine), "south-bridge", -1, + pcms->south_bridge); object_property_set_bool(OBJECT(pci_dev), "has-usb", machine_usb(machine), &error_abort); object_property_set_bool(OBJECT(pci_dev), "has-acpi", @@ -254,7 +254,7 @@ static void pc_init1(MachineState *machine, const char = *pci_type) for (i =3D 0; i < ISA_NUM_IRQS; i++) { qdev_connect_gpio_out_named(dev, "isa-irqs", i, x86ms->gsi[i]); } - pci_realize_and_unref(pci_dev, pcms->pcibus, &error_fatal); + qdev_realize(DEVICE(pci_dev), BUS(pcms->pcibus), &error_fatal); =20 if (xen_enabled()) { pci_device_set_intx_routing_notifier( @@ -384,7 +384,8 @@ static void pc_xen_hvm_init(MachineState *machine) : TYPE_I440FX_PCI_DEVICE); =20 xen_igd_reserve_slot(pcms->pcibus); - pci_create_simple_orphan(pcms->pcibus, -1, "xen-platform"); + pci_create_simple(OBJECT(machine), "xen-platform", pcms->pcibus, -1, + "xen-platform"); } #endif =20 diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c index bfea390825..1a65811fae 100644 --- a/hw/i386/pc_q35.c +++ b/hw/i386/pc_q35.c @@ -93,7 +93,8 @@ static const struct ehci_companions ich9_1a[] =3D { { .name =3D TYPE_ICH9_USB_UHCI(6), .func =3D 2, .port =3D 4 }, }; =20 -static int ehci_create_ich9_with_companions(PCIBus *bus, int slot) +static int ehci_create_ich9_with_companions(Object *parent, PCIBus *bus, + int slot) { const struct ehci_companions *comp; PCIDevice *ehci, *uhci; @@ -114,16 +115,17 @@ static int ehci_create_ich9_with_companions(PCIBus *b= us, int slot) return -1; } =20 - ehci =3D pci_new_multifunction_orphan(PCI_DEVFN(slot, 7), name); - pci_realize_and_unref(ehci, bus, &error_fatal); + ehci =3D pci_new_multifunction(parent, "ehci[*]", PCI_DEVFN(slot, 7), = name); + qdev_realize(DEVICE(ehci), BUS(bus), &error_fatal); usbbus =3D QLIST_FIRST(&ehci->qdev.child_bus); =20 for (i =3D 0; i < 3; i++) { - uhci =3D pci_new_multifunction_orphan(PCI_DEVFN(slot, comp[i].func= ), + uhci =3D pci_new_multifunction(parent, "uhci[*]", + PCI_DEVFN(slot, comp[i].func), comp[i].name); qdev_prop_set_string(&uhci->qdev, "masterbus", usbbus->name); qdev_prop_set_uint32(&uhci->qdev, "firstport", comp[i].port); - pci_realize_and_unref(uhci, bus, &error_fatal); + qdev_realize(DEVICE(uhci), BUS(bus), &error_fatal); } return 0; } @@ -195,11 +197,11 @@ static void pc_q35_init(MachineState *machine) x86_cpus_init(x86ms, pcmc->default_cpu_version); =20 if (kvm_enabled()) { - kvmclock_create(pcmc->kvmclock_create_always); + kvmclock_create(OBJECT(machine), pcmc->kvmclock_create_always); } =20 /* create pci host bus */ - phb =3D OBJECT(qdev_new_orphan(TYPE_Q35_HOST_DEVICE)); + phb =3D OBJECT(qdev_new(OBJECT(machine), "q35", TYPE_Q35_HOST_DEVICE)); =20 pci_hole64_size =3D object_property_get_uint(phb, PCI_HOST_PROP_PCI_HOLE64_SI= ZE, @@ -209,7 +211,6 @@ static void pc_q35_init(MachineState *machine) memory_region_init(pci_memory, NULL, "pci", UINT64_MAX); pc_memory_init(pcms, system_memory, pci_memory, pci_hole64_size); =20 - object_property_add_child(OBJECT(machine), "q35", phb); object_property_set_link(phb, PCI_HOST_PROP_RAM_MEM, OBJECT(machine->ram), NULL); object_property_set_link(phb, PCI_HOST_PROP_PCI_MEM, @@ -226,7 +227,7 @@ static void pc_q35_init(MachineState *machine) pcms->default_bus_bypass_iommu, NULL); object_property_set_bool(phb, PCI_HOST_PROP_SMM_RANGES, x86_machine_is_smm_enabled(x86ms), NULL); - sysbus_realize_and_unref(SYS_BUS_DEVICE(phb), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(phb), &error_fatal); =20 /* pci */ pcms->pcibus =3D PCI_BUS(qdev_get_child_bus(DEVICE(phb), "pcie.0")); @@ -235,7 +236,8 @@ static void pc_q35_init(MachineState *machine) gsi_state =3D pc_gsi_create(&x86ms->gsi, true); =20 /* create ISA bus */ - lpc =3D pci_new_multifunction_orphan(PCI_DEVFN(ICH9_LPC_DEV, ICH9_LPC_= FUNC), + lpc =3D pci_new_multifunction(OBJECT(machine), "lpc", + PCI_DEVFN(ICH9_LPC_DEV, ICH9_LPC_FUNC), TYPE_ICH9_LPC_DEVICE); lpc_dev =3D DEVICE(lpc); qdev_prop_set_bit(lpc_dev, "smm-enabled", @@ -243,7 +245,7 @@ static void pc_q35_init(MachineState *machine) for (i =3D 0; i < IOAPIC_NUM_PINS; i++) { qdev_connect_gpio_out_named(lpc_dev, ICH9_GPIO_GSI, i, x86ms->gsi[= i]); } - pci_realize_and_unref(lpc, pcms->pcibus, &error_fatal); + qdev_realize(DEVICE(lpc), BUS(pcms->pcibus), &error_fatal); =20 x86ms->rtc =3D ISA_DEVICE(object_resolve_path_component(OBJECT(lpc), "= rtc")); =20 @@ -290,7 +292,8 @@ static void pc_q35_init(MachineState *machine) AHCIPCIState *ich9; =20 /* ahci and SATA device, for q35 1 ahci controller is built-in */ - pdev =3D pci_create_simple_multifunction_orphan(pcms->pcibus, + pdev =3D pci_create_simple_multifunction(OBJECT(machine), "sata[*]= ", + pcms->pcibus, PCI_DEVFN(ICH9_SATA1_DEV, ICH9_SATA1_FUNC), "ich9-ahci"); @@ -304,14 +307,15 @@ static void pc_q35_init(MachineState *machine) =20 if (machine_usb(machine)) { /* Should we create 6 UHCI according to ich9 spec? */ - ehci_create_ich9_with_companions(pcms->pcibus, 0x1d); + ehci_create_ich9_with_companions(OBJECT(machine), pcms->pcibus, 0x= 1d); } =20 if (pcms->smbus_enabled) { PCIDevice *smb; =20 /* TODO: Populate SPD eeprom data. */ - smb =3D pci_create_simple_multifunction_orphan(pcms->pcibus, + smb =3D pci_create_simple_multifunction(OBJECT(machine), "smbus[*]= ", + pcms->pcibus, PCI_DEVFN(ICH9_SMB_DEV, ICH9_SMB_FUNC), TYPE_ICH9_SMB_DEVICE); diff --git a/hw/i386/pc_sysfw.c b/hw/i386/pc_sysfw.c index d351e3da77..02d75e2838 100644 --- a/hw/i386/pc_sysfw.c +++ b/hw/i386/pc_sysfw.c @@ -79,19 +79,13 @@ static PFlashCFI01 *pc_pflash_create(PCMachineState *pc= ms, const char *name, const char *alias_prop_name) { - DeviceState *dev =3D qdev_new_orphan(TYPE_PFLASH_CFI01); + DeviceState *dev =3D qdev_new(OBJECT(pcms), name, TYPE_PFLASH_CFI01); =20 qdev_prop_set_uint64(dev, "sector-length", FLASH_SECTOR_SIZE); qdev_prop_set_uint8(dev, "width", 1); qdev_prop_set_string(dev, "name", name); - object_property_add_child(OBJECT(pcms), name, OBJECT(dev)); object_property_add_alias(OBJECT(pcms), alias_prop_name, OBJECT(dev), "drive"); - /* - * The returned reference is tied to the child property and - * will be removed with object_unparent. - */ - object_unref(OBJECT(dev)); return PFLASH_CFI01(dev); } =20 @@ -189,7 +183,7 @@ static void pc_system_flash_map(PCMachineState *pcms, gpa =3D 0x100000000ULL - total_size; /* where the flash is mapped = */ qdev_prop_set_uint32(DEVICE(system_flash), "num-blocks", size / FLASH_SECTOR_SIZE); - sysbus_realize_and_unref(SYS_BUS_DEVICE(system_flash), &error_fata= l); + sysbus_realize(SYS_BUS_DEVICE(system_flash), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(system_flash), 0, gpa); =20 if (i =3D=3D 0) { diff --git a/hw/i386/sgx.c b/hw/i386/sgx.c index c326385456..c5a8febf29 100644 --- a/hw/i386/sgx.c +++ b/hw/i386/sgx.c @@ -311,7 +311,8 @@ void pc_machine_init_sgx_epc(PCMachineState *pcms) &sgx_epc->mr); =20 for (list =3D x86ms->sgx_epc_list; list; list =3D list->next) { - DeviceState *dev =3D qdev_new_orphan(TYPE_SGX_EPC); + DeviceState *dev =3D qdev_new(OBJECT(pcms), "sgx-epc[*]", + TYPE_SGX_EPC); =20 /* set the memdev link with memory backend */ object_property_parse(OBJECT(dev), SGX_EPC_MEMDEV_PROP, @@ -319,7 +320,7 @@ void pc_machine_init_sgx_epc(PCMachineState *pcms) /* set the numa node property for sgx epc object */ object_property_set_uint(OBJECT(dev), SGX_EPC_NUMA_NODE_PROP, list->value->node, &error_fatal); - qdev_realize_and_unref(dev, NULL, &error_fatal); + qdev_realize(dev, NULL, &error_fatal); } =20 if ((sgx_epc->base + sgx_epc->size) < sgx_epc->base) { diff --git a/hw/i386/x86-common.c b/hw/i386/x86-common.c index b8e541e376..73a53fbf3f 100644 --- a/hw/i386/x86-common.c +++ b/hw/i386/x86-common.c @@ -505,13 +505,12 @@ void ioapic_init_gsi(GSIState *gsi_state, Object *par= ent) =20 assert(parent); if (kvm_ioapic_in_kernel()) { - dev =3D qdev_new_orphan(TYPE_KVM_IOAPIC); + dev =3D qdev_new(parent, "ioapic", TYPE_KVM_IOAPIC); } else { - dev =3D qdev_new_orphan(TYPE_IOAPIC); + dev =3D qdev_new(parent, "ioapic", TYPE_IOAPIC); } - object_property_add_child(parent, "ioapic", OBJECT(dev)); d =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(d, &error_fatal); + sysbus_realize(d, &error_fatal); sysbus_mmio_map(d, 0, IO_APIC_DEFAULT_ADDRESS); =20 for (i =3D 0; i < IOAPIC_NUM_PINS; i++) { @@ -519,15 +518,15 @@ void ioapic_init_gsi(GSIState *gsi_state, Object *par= ent) } } =20 -DeviceState *ioapic_init_secondary(GSIState *gsi_state) +DeviceState *ioapic_init_secondary(Object *parent, GSIState *gsi_state) { DeviceState *dev; SysBusDevice *d; unsigned int i; =20 - dev =3D qdev_new_orphan(TYPE_IOAPIC); + dev =3D qdev_new(parent, "ioapic2[*]", TYPE_IOAPIC); d =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(d, &error_fatal); + sysbus_realize(d, &error_fatal); sysbus_mmio_map(d, 0, IO_APIC_SECONDARY_ADDRESS); =20 for (i =3D 0; i < IOAPIC_NUM_PINS; i++) { diff --git a/include/hw/i386/x86.h b/include/hw/i386/x86.h index 71fe6b5e12..61d6ec1755 100644 --- a/include/hw/i386/x86.h +++ b/include/hw/i386/x86.h @@ -147,7 +147,7 @@ typedef struct GSIState { qemu_irq x86_allocate_cpu_irq(void); void gsi_handler(void *opaque, int n, int level); void ioapic_init_gsi(GSIState *gsi_state, Object *parent); -DeviceState *ioapic_init_secondary(GSIState *gsi_state); +DeviceState *ioapic_init_secondary(Object *parent, GSIState *gsi_state); =20 /* pc_sysfw.c */ void x86_firmware_configure(hwaddr gpa, void *ptr, int size); --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411558; cv=none; d=zohomail.com; s=zohoarc; b=Jmfnu7WJyxgEsUScIegb+aXNOf4bwj9EvNAcOzrCn0MJfryKFXnITmkSlHETRPCjGiu1HiJVWDO7tEmMoSoOpPxHD0TfhQe5SYqq3wnPymKc+cQ0tG7mDzUD+8oYsfDPPXV/WEOr9HkrP00GMV7zXTbuKZHBcMX4/djU4XScBN4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411558; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=AV/ShcvjVyr9HKh3ypirZxDGLrwlo2fMGkVbczMAh6U=; b=KGN3uik8IwPcoCdh/oxzQbL0GyPJWo0F8y48zEnoPo5h8iZupF8iXXO5HGBfSBuptpT1D6IOj3OY9EvHDTg9GyEaDCgHtwWOq5P7NvgpR+lD2/psdxi2KhDyuOC2gHIu74fA5eXDfaJLg/V86Rc1M083+2lugW9kiPszFIesC2U= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411558850429.5966625949138; Sat, 18 Jul 2026 14:52:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCxV-00063W-Jl; Sat, 18 Jul 2026 17:52:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCxT-0005yV-4R; Sat, 18 Jul 2026 17:52:31 -0400 Received: from pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com ([35.155.198.111]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCxN-0003zR-6B; Sat, 18 Jul 2026 17:52:30 -0400 Received: from ip-10-5-0-115.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.0.115]) by internal-pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:52:21 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.53:1825] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.41.246:2525] with esmtp (Farcaster) id bc2af21f-4619-4477-ab2d-1fda3a338cc8; Sat, 18 Jul 2026 21:52:21 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC001.ant.amazon.com (10.250.64.174) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:52:21 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:52:11 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411545; x=1815947545; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=AV/ShcvjVyr9HKh3ypirZxDGLrwlo2fMGkVbczMAh6U=; b=NLPXYl3sCjW9QPvKfecwAf+HFZTwt7GabVZCtuRAtMEB67m58olmUWTi sGSyM6bXgl4EfExIKprGTtM2Mq19rd+n8m9SecfuS2Oq9nmZNcB9Iz0pn bVsmXDQXqOm51I3YjUvs3lOSC+QrJ2bJhVAF7mOmm8VuBwxvkFY+0MR6t 8nI8PEdd9k4ZqlrkL6NoZ5iosJAa50GILh2O5f4+Sh0x2lIyajFa+Sgly aWL01eKYzLIUhqE/qbv/Jm+u4OhQcyDapU3zCcXugDsK9wch8jj7pFz/E IRNP2mewqA3lyqh3qtppY7VK3XHzC34MuT5bAbNY2FjV94BFZHLNC4jcY g==; X-CSE-ConnectionGUID: H1wZflGtQRi6/z1jZnqXUA== X-CSE-MsgGUID: XqpIt7DDTL6FqYQABhgMFg== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23816643" X-Farcaster-Flow-ID: bc2af21f-4619-4477-ab2d-1fda3a338cc8 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 055/137] hw/ppc: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:30 +0000 Message-ID: <20260718213652.37673-56-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D042UWA001.ant.amazon.com (10.13.139.92) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=35.155.198.111; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411560097158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/ppc to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing device for composite children. Names follow existing QOM conventions. pnv_bmc_create() and spapr_vio_bus_init() gain an Object *parent first argument; the callers are updated in this patch. Per-site rationale (reviewers: dispute the modeling here): file:line | creator | parent | name | rationale hw/ppc/amigaone.c:282 | cpu_create | OBJECT(machine) | "cpu" | board init, = single CPU hw/ppc/amigaone.c:305 | qdev_new | OBJECT(machine) | "nvram" | board init hw/ppc/amigaone.c:332 | sysbus_create_simple | OBJECT(machine) | "articia" = | board init, north bridge hw/ppc/amigaone.c:358 | pci_create_simple_multifunction | OBJECT(machine) |= "via" | board init, south bridge hw/ppc/e500.c:818 | qdev_new | OBJECT(machine) | "pic" | collapse existing = add_child; helper receives PPCE500MachineState hw/ppc/e500.c:843 | qdev_new | parent | "pic" | thread Object *parent into = ppce500_init_mpic_kvm(); drop object_unparent on error hw/ppc/e500.c:996 | qdev_new | OBJECT(machine) | "e500-ccsr" | collapse exi= sting add_child, keep name hw/ppc/e500.c:1021 | qdev_new | OBJECT(machine) | "i2c" | board init hw/ppc/e500.c:1028 | i2c_slave_create_simple | OBJECT(machine) | "rtc" | bo= ard init, DS1338 RTC hw/ppc/e500.c:1032 | qdev_new | OBJECT(machine) | "esdhc-stub" | board init= , unimplemented placeholder hw/ppc/e500.c:1040 | qdev_new | OBJECT(machine) | "esdhc" | board init hw/ppc/e500.c:1049 | qdev_new | OBJECT(machine) | "guts" | board init hw/ppc/e500.c:1056 | qdev_new | OBJECT(machine) | "pci-host" | collapse exi= sting add_child, keep name hw/ppc/e500.c:1079 | sysbus_create_simple | OBJECT(machine) | "spin" | boar= d init hw/ppc/e500.c:1084 | qdev_new | OBJECT(machine) | "gpio" | board init hw/ppc/e500.c:1097 | qdev_new | OBJECT(machine) | "platform-bus" | board in= it hw/ppc/e500.c:1139 | qdev_new | OBJECT(machine) | "flash" | board init hw/ppc/mac_newworld.c:162 | cpu_create | OBJECT(machine) | "cpu[*]" | board= init, SMP loop hw/ppc/mac_newworld.c:289 | qdev_new | OBJECT(machine) | "uni-n" | board in= it, UniNorth main hw/ppc/mac_newworld.c:298 | qdev_new | OBJECT(machine) | "u3-agp" | board i= nit, U3 AGP host hw/ppc/mac_newworld.c:313 | qdev_new | OBJECT(machine) | "uni-n-agp" | boar= d init hw/ppc/mac_newworld.c:320 | qdev_new | OBJECT(machine) | "uni-n-internal" |= board init hw/ppc/mac_newworld.c:328 | qdev_new | OBJECT(machine) | "uni-n-pci" | boar= d init hw/ppc/mac_newworld.c:351 | pci_new | OBJECT(machine) | "macio" | board init hw/ppc/mac_newworld.c:411 | qdev_new | OBJECT(machine) | "adb-keyboard" | b= oard init hw/ppc/mac_newworld.c:414 | qdev_new | OBJECT(machine) | "adb-mouse" | boar= d init hw/ppc/mac_newworld.c:419 | pci_create_simple | OBJECT(machine) | "ohci" | = board init hw/ppc/mac_newworld.c:428 | usb_create_simple | OBJECT(machine) | "usb-kbd"= | board init hw/ppc/mac_newworld.c:429 | usb_create_simple | OBJECT(machine) | "usb-mous= e" | board init hw/ppc/mac_newworld.c:456 | qdev_new | OBJECT(machine) | "nvram" | board in= it hw/ppc/mac_newworld.c:465 | qdev_new | OBJECT(machine) | TYPE_FW_CFG | coll= apse existing add_child, keep name hw/ppc/mac_oldworld.c:114 | cpu_create | OBJECT(machine) | "cpu[*]" | board= init, SMP loop hw/ppc/mac_oldworld.c:215 | qdev_new | OBJECT(machine) | "grackle" | board = init hw/ppc/mac_oldworld.c:232 | pci_new | OBJECT(machine) | "macio" | board init hw/ppc/mac_oldworld.c:282 | qdev_new | OBJECT(machine) | "adb-keyboard" | b= oard init hw/ppc/mac_oldworld.c:284 | qdev_new | OBJECT(machine) | "adb-mouse" | boar= d init hw/ppc/mac_oldworld.c:288 | pci_create_simple | OBJECT(machine) | "ohci" | = board init hw/ppc/mac_oldworld.c:306 | qdev_new | OBJECT(machine) | TYPE_FW_CFG | coll= apse existing add_child, keep name hw/ppc/pegasos.c:166 | cpu_create | OBJECT(machine) | "cpu" | board init, s= ingle CPU hw/ppc/pegasos.c:221 | sysbus_create_simple | OBJECT(machine) | "articia" |= board init, north bridge (Pegasos1 branch) hw/ppc/pegasos.c:236 | sysbus_create_simple | OBJECT(machine) | "mv64361" |= board init, north bridge (Pegasos2 branch) hw/ppc/pegasos.c:244 | pci_new_multifunction | OBJECT(machine) | "via" | bo= ard init, south bridge hw/ppc/pnv.c:1013 | isa_new | parent | "ipmi-bt" | thread Object *parent in= to pnv_ipmi_bt_init() hw/ppc/pnv.c:1130 | qdev_new | OBJECT(machine) | "pnor" | board init hw/ppc/pnv.c:1272 | qdev_new | OBJECT(pnv) | chip_name | collapse existing = add_child; move snprintf before create hw/ppc/pnv.c:2828 | i2c_slave_create_simple | OBJECT(pnv) | "pca9552[*]" | = pnv_rainier_i2c_init receives PnvMachineState; per-chip loop hw/ppc/pnv.c:2846 | i2c_slave_create_simple | OBJECT(pnv) | "pca9554[*]" | = pnv_rainier_i2c_init receives PnvMachineState; per-chip loop hw/ppc/pnv_bmc.c:302 | qdev_new | parent | "bmc" | thread Object *parent in= to pnv_bmc_create() (+ header, caller) hw/ppc/ppc440_bamboo.c:151 | cpu_create | OBJECT(machine) | "cpu" | board i= nit, single CPU hw/ppc/ppc440_bamboo.c:165 | qdev_new | OBJECT(machine) | "uic" | board ini= t; drop object_unref hw/ppc/ppc440_bamboo.c:175 | qdev_new | OBJECT(machine) | "sdram" | board i= nit; drop object_unref hw/ppc/ppc440_bamboo.c:186 | sysbus_create_varargs | OBJECT(machine) | "pci= -host" | board init hw/ppc/prep.c:260 | cpu_create | OBJECT(machine) | "cpu" | board init, sing= le CPU hw/ppc/prep.c:292 | qdev_new | OBJECT(machine) | "raven" | collapse existin= g add_child(qdev_get_machine()) hw/ppc/prep.c:303 | pci_new | OBJECT(machine) | "i82378" | board init, ISA = bridge hw/ppc/prep.c:312 | isa_new | OBJECT(machine) | "systemio" | board init hw/ppc/prep.c:319 | isa_new | OBJECT(machine) | "mc" | board init, memory c= ontroller hw/ppc/prep.c:325 | isa_new | OBJECT(machine) | "rtc" | board init hw/ppc/prep.c:337 | isa_create_simple | OBJECT(machine) | "m48t59" | board = init hw/ppc/prep.c:339 | isa_new | OBJECT(machine) | "cs4231a" | board init, aud= io hw/ppc/prep.c:348 | isa_new | OBJECT(machine) | "pc87312" | board init, sup= erio hw/ppc/prep.c:353 | pci_create_simple | OBJECT(machine) | "scsi" | board in= it, LSI SCSI hw/ppc/prep.c:366 | qdev_new | OBJECT(machine) | TYPE_FW_CFG | collapse exi= sting add_child, keep name hw/ppc/sam460ex.c:264 | cpu_create | OBJECT(machine) | "cpu" | board init, = single CPU hw/ppc/sam460ex.c:279 | qdev_new | OBJECT(machine) | "plb" | board init; dr= op object_unref hw/ppc/sam460ex.c:295 | qdev_new | OBJECT(machine) | "uic[*]" | board init = loop; drop object_unref hw/ppc/sam460ex.c:325 | qdev_new | OBJECT(machine) | "sdram" | board init; = drop object_unref hw/ppc/sam460ex.c:340 | sysbus_create_simple | OBJECT(machine) | "i2c[*]" |= board init, first IIC hw/ppc/sam460ex.c:349 | i2c_slave_create_simple | OBJECT(machine) | "rtc" |= board init, M41T80 RTC hw/ppc/sam460ex.c:351 | sysbus_create_simple | OBJECT(machine) | "i2c[*]" |= board init, second IIC hw/ppc/sam460ex.c:355 | qdev_new | OBJECT(machine) | "ebc" | board init; dr= op object_unref hw/ppc/sam460ex.c:369 | qdev_new | OBJECT(machine) | "mal" | board init; dr= op object_unref hw/ppc/sam460ex.c:391 | sysbus_create_simple | OBJECT(machine) | "ehci" | b= oard init hw/ppc/sam460ex.c:393 | qdev_new | OBJECT(machine) | "ohci" | board init hw/ppc/sam460ex.c:402 | usb_create_simple | OBJECT(machine) | "usb-kbd" | b= oard init hw/ppc/sam460ex.c:403 | usb_create_simple | OBJECT(machine) | "usb-mouse" |= board init hw/ppc/sam460ex.c:406 | qdev_new | OBJECT(machine) | "pcie-host[*]" | board= init, first PCIe hw/ppc/sam460ex.c:412 | qdev_new | OBJECT(machine) | "pcie-host[*]" | board= init, second PCIe hw/ppc/sam460ex.c:420 | sysbus_create_simple | OBJECT(machine) | "pcix-host= " | board init hw/ppc/sam460ex.c:426 | pci_create_simple | OBJECT(machine) | "sm501" | boa= rd init, display hw/ppc/sam460ex.c:433 | pci_create_simple | OBJECT(machine) | "sata" | boar= d init, SiI3112 SATA hw/ppc/spapr.c:1888 | qdev_new | OBJECT(spapr) | "nvram" | helper receives = SpaprMachineState hw/ppc/spapr.c:2802 | qdev_new | parent | "phb[*]" | thread Object *parent = into spapr_create_default_phb() hw/ppc/spapr.c:3078 | pci_create_simple | OBJECT(machine) | "xhci" | board = init hw/ppc/spapr.c:3085 | usb_create_simple | OBJECT(machine) | "usb-kbd" | boa= rd init hw/ppc/spapr.c:3086 | usb_create_simple | OBJECT(machine) | "usb-mouse" | b= oard init hw/ppc/spapr_irq.c:315 | qdev_new | OBJECT(spapr) | "xive" | spapr_irq_init= receives SpaprMachineState hw/ppc/spapr_vio.c:567 | qdev_new | parent | "vio-bridge" | thread Object *= parent into spapr_vio_bus_init() (+ header, caller) hw/ppc/virtex_ml507.c:79 | cpu_create | parent | "cpu" | thread Object *par= ent into ppc440_init_xilinx() hw/ppc/virtex_ml507.c:87 | qdev_new | parent | "uic" | ppc440_init_xilinx()= ; drop object_unref hw/ppc/virtex_ml507.c:221 | qdev_new | OBJECT(machine) | "intc" | board init hw/ppc/virtex_ml507.c:236 | qdev_new | OBJECT(machine) | "timer" | board in= it Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/ppc/amigaone.c | 12 ++++---- hw/ppc/e500.c | 58 +++++++++++++++++++------------------- hw/ppc/mac_newworld.c | 54 +++++++++++++++++++---------------- hw/ppc/mac_oldworld.c | 28 +++++++++--------- hw/ppc/pegasos.c | 13 +++++---- hw/ppc/pnv.c | 29 ++++++++++--------- hw/ppc/pnv_bmc.c | 4 +-- hw/ppc/ppc440_bamboo.c | 11 ++++---- hw/ppc/prep.c | 44 ++++++++++++++--------------- hw/ppc/sam460ex.c | 55 +++++++++++++++++------------------- hw/ppc/spapr.c | 21 +++++++------- hw/ppc/spapr_irq.c | 4 +-- hw/ppc/spapr_vio.c | 6 ++-- hw/ppc/virtex_ml507.c | 18 ++++++------ include/hw/ppc/pnv.h | 2 +- include/hw/ppc/spapr_vio.h | 2 +- 16 files changed, 186 insertions(+), 175 deletions(-) diff --git a/hw/ppc/amigaone.c b/hw/ppc/amigaone.c index 866e5547d6..faf76f12be 100644 --- a/hw/ppc/amigaone.c +++ b/hw/ppc/amigaone.c @@ -279,7 +279,7 @@ static void amigaone_init(MachineState *machine) struct boot_info *bi =3D NULL; =20 /* init CPU */ - cpu =3D POWERPC_CPU(cpu_create_orphan(machine->cpu_type)); + cpu =3D POWERPC_CPU(cpu_create(OBJECT(machine), "cpu", machine->cpu_ty= pe)); env =3D &cpu->env; if (PPC_INPUT(env) !=3D PPC_FLAGS_INPUT_6xx) { error_report("Incompatible CPU, only 6xx bus supported"); @@ -302,12 +302,12 @@ static void amigaone_init(MachineState *machine) } =20 /* nvram */ - dev =3D qdev_new_orphan(TYPE_A1_NVRAM); + dev =3D qdev_new(OBJECT(machine), "nvram", TYPE_A1_NVRAM); di =3D drive_get(IF_MTD, 0, 0); if (di) { qdev_prop_set_drive(dev, "drive", blk_by_legacy_dinfo(di)); } - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); memory_region_add_subregion(get_system_memory(), NVRAM_ADDR, sysbus_mmio_get_region(SYS_BUS_DEVICE(dev)= , 0)); =20 @@ -329,7 +329,8 @@ static void amigaone_init(MachineState *machine) } =20 /* Articia S */ - dev =3D sysbus_create_simple_orphan(TYPE_ARTICIA, ARTICIA_ADDR, NULL); + dev =3D sysbus_create_simple(OBJECT(machine), "articia", TYPE_ARTICIA, + ARTICIA_ADDR, NULL); =20 i2c_bus =3D I2C_BUS(qdev_get_child_bus(dev, "smbus")); if (machine->ram_size > 512 * MiB) { @@ -355,7 +356,8 @@ static void amigaone_init(MachineState *machine) pci_bus =3D PCI_BUS(qdev_get_child_bus(dev, "pci.0")); =20 /* VIA VT82c686B South Bridge (multifunction PCI device) */ - via =3D OBJECT(pci_create_simple_multifunction_orphan(pci_bus, PCI_DEV= FN(7, 0), + via =3D OBJECT(pci_create_simple_multifunction(OBJECT(machine), "via", + pci_bus, PCI_DEVFN(7, 0), TYPE_VT82C686B_ISA)); object_property_add_alias(OBJECT(machine), "rtc-time", object_resolve_path_component(via, "rtc"), diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c index f7a7c136da..21e656e87f 100644 --- a/hw/ppc/e500.c +++ b/hw/ppc/e500.c @@ -815,13 +815,12 @@ static DeviceState *ppce500_init_mpic_qemu(PPCE500Mac= hineState *pms, unsigned int smp_cpus =3D machine->smp.cpus; const PPCE500MachineClass *pmc =3D PPCE500_MACHINE_GET_CLASS(pms); =20 - dev =3D qdev_new_orphan(TYPE_OPENPIC); - object_property_add_child(OBJECT(machine), "pic", OBJECT(dev)); + dev =3D qdev_new(OBJECT(machine), "pic", TYPE_OPENPIC); qdev_prop_set_uint32(dev, "model", pmc->mpic_version); qdev_prop_set_uint32(dev, "nb_cpus", smp_cpus); =20 s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); =20 k =3D 0; for (i =3D 0; i < smp_cpus; i++) { @@ -833,17 +832,18 @@ static DeviceState *ppce500_init_mpic_qemu(PPCE500Mac= hineState *pms, return dev; } =20 -static DeviceState *ppce500_init_mpic_kvm(const PPCE500MachineClass *pmc, +static DeviceState *ppce500_init_mpic_kvm(Object *parent, + const PPCE500MachineClass *pmc, Error **errp) { #ifdef CONFIG_KVM DeviceState *dev; CPUState *cs; =20 - dev =3D qdev_new_orphan(TYPE_KVM_OPENPIC); + dev =3D qdev_new(parent, "pic", TYPE_KVM_OPENPIC); qdev_prop_set_uint32(dev, "model", pmc->mpic_version); =20 - if (!sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), errp)) { + if (!sysbus_realize(SYS_BUS_DEVICE(dev), errp)) { object_unparent(OBJECT(dev)); return NULL; } @@ -874,7 +874,7 @@ static DeviceState *ppce500_init_mpic(PPCE500MachineSta= te *pms, Error *err =3D NULL; =20 if (kvm_kernel_irqchip_allowed()) { - dev =3D ppce500_init_mpic_kvm(pmc, &err); + dev =3D ppce500_init_mpic_kvm(OBJECT(pms), pmc, &err); } if (kvm_kernel_irqchip_required() && !dev) { error_reportf_err(err, @@ -993,10 +993,9 @@ void ppce500_init(MachineState *machine) /* Register Memory */ memory_region_add_subregion(address_space_mem, 0, machine->ram); =20 - dev =3D qdev_new_orphan("e500-ccsr"); + dev =3D qdev_new(OBJECT(machine), "e500-ccsr", "e500-ccsr"); s =3D SYS_BUS_DEVICE(dev); - object_property_add_child(OBJECT(machine), "e500-ccsr", OBJECT(dev)); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); ccsr_addr_space =3D sysbus_mmio_get_region(s, 0); memory_region_add_subregion(address_space_mem, pmc->ccsrbar_base, ccsr_addr_space); @@ -1018,47 +1017,47 @@ void ppce500_init(MachineState *machine) } =20 /* I2C */ - dev =3D qdev_new_orphan("mpc-i2c"); + dev =3D qdev_new(OBJECT(machine), "i2c", "mpc-i2c"); s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); sysbus_connect_irq(s, 0, qdev_get_gpio_in(mpicdev, MPC8544_I2C_IRQ)); memory_region_add_subregion(ccsr_addr_space, MPC8544_I2C_REGS_OFFSET, sysbus_mmio_get_region(s, 0)); i2c =3D I2C_BUS(qdev_get_child_bus(dev, "i2c")); - i2c_slave_create_simple_orphan(i2c, "ds1338", RTC_REGS_OFFSET); + i2c_slave_create_simple(OBJECT(machine), "rtc", i2c, "ds1338", + RTC_REGS_OFFSET); =20 /* eSDHC */ if (pmc->has_esdhc) { - dev =3D qdev_new_orphan(TYPE_UNIMPLEMENTED_DEVICE); + dev =3D qdev_new(OBJECT(machine), "esdhc-stub", TYPE_UNIMPLEMENTED= _DEVICE); qdev_prop_set_string(dev, "name", "esdhc"); qdev_prop_set_uint64(dev, "size", MPC85XX_ESDHC_REGS_SIZE); s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); memory_region_add_subregion(ccsr_addr_space, MPC85XX_ESDHC_REGS_OF= FSET, sysbus_mmio_get_region(s, 0)); =20 - dev =3D qdev_new_orphan(TYPE_FSL_ESDHC_BE); + dev =3D qdev_new(OBJECT(machine), "esdhc", TYPE_FSL_ESDHC_BE); s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); sysbus_connect_irq(s, 0, qdev_get_gpio_in(mpicdev, MPC85XX_ESDHC_I= RQ)); memory_region_add_subregion(ccsr_addr_space, MPC85XX_ESDHC_REGS_OF= FSET, sysbus_mmio_get_region(s, 0)); } =20 /* General Utility device */ - dev =3D qdev_new_orphan("mpc8544-guts"); + dev =3D qdev_new(OBJECT(machine), "guts", "mpc8544-guts"); s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); memory_region_add_subregion(ccsr_addr_space, MPC8544_UTIL_OFFSET, sysbus_mmio_get_region(s, 0)); =20 /* PCI */ - dev =3D qdev_new_orphan("e500-pcihost"); - object_property_add_child(OBJECT(machine), "pci-host", OBJECT(dev)); + dev =3D qdev_new(OBJECT(machine), "pci-host", "e500-pcihost"); qdev_prop_set_uint32(dev, "first_slot", pmc->pci_first_slot); qdev_prop_set_uint32(dev, "first_pin_irq", pci_irq_nrs[0]); s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); for (i =3D 0; i < PCI_NUM_PINS; i++) { sysbus_connect_irq(s, i, qdev_get_gpio_in(mpicdev, pci_irq_nrs[i])= ); } @@ -1076,14 +1075,15 @@ void ppce500_init(MachineState *machine) } =20 /* Register spinning region */ - sysbus_create_simple_orphan("e500-spin", pmc->spin_base, NULL); + sysbus_create_simple(OBJECT(machine), "spin", "e500-spin", + pmc->spin_base, NULL); =20 if (pmc->has_mpc8xxx_gpio) { qemu_irq poweroff_irq; =20 - dev =3D qdev_new_orphan("mpc8xxx_gpio"); + dev =3D qdev_new(OBJECT(machine), "gpio", "mpc8xxx_gpio"); s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); sysbus_connect_irq(s, 0, qdev_get_gpio_in(mpicdev, MPC8XXX_GPIO_IR= Q)); memory_region_add_subregion(ccsr_addr_space, MPC8XXX_GPIO_OFFSET, sysbus_mmio_get_region(s, 0)); @@ -1094,11 +1094,11 @@ void ppce500_init(MachineState *machine) } =20 /* Platform Bus Device */ - dev =3D qdev_new_orphan(TYPE_PLATFORM_BUS_DEVICE); + dev =3D qdev_new(OBJECT(machine), "platform-bus", TYPE_PLATFORM_BUS_DE= VICE); dev->id =3D g_strdup(TYPE_PLATFORM_BUS_DEVICE); qdev_prop_set_uint32(dev, "num_irqs", pmc->platform_bus_num_irqs); qdev_prop_set_uint32(dev, "mmio_size", pmc->platform_bus_size); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); pms->pbus_dev =3D PLATFORM_BUS_DEVICE(dev); =20 s =3D SYS_BUS_DEVICE(pms->pbus_dev); @@ -1136,7 +1136,7 @@ void ppce500_init(MachineState *machine) exit(1); } =20 - dev =3D qdev_new_orphan(TYPE_PFLASH_CFI01); + dev =3D qdev_new(OBJECT(machine), "flash", TYPE_PFLASH_CFI01); qdev_prop_set_drive(dev, "drive", blk); qdev_prop_set_uint32(dev, "num-blocks", size / sector_len); qdev_prop_set_uint64(dev, "sector-length", sector_len); @@ -1147,7 +1147,7 @@ void ppce500_init(MachineState *machine) qdev_prop_set_uint16(dev, "id2", 0x0000); qdev_prop_set_uint16(dev, "id3", 0x0); qdev_prop_set_string(dev, "name", "e500.flash"); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 memory_region_add_subregion(&pms->pbus_dev->mmio, 0, pflash_cfi01_get_memory(PFLASH_CFI01(d= ev))); diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c index 8c46ecd6d1..e9ee44a2f1 100644 --- a/hw/ppc/mac_newworld.c +++ b/hw/ppc/mac_newworld.c @@ -159,7 +159,8 @@ static void ppc_core99_init(MachineState *machine) =20 /* init CPUs */ for (i =3D 0; i < machine->smp.cpus; i++) { - cpu =3D POWERPC_CPU(cpu_create_orphan(machine->cpu_type)); + cpu =3D POWERPC_CPU(cpu_create(OBJECT(machine), "cpu[*]", + machine->cpu_type)); env =3D &cpu->env; =20 /* Set time-base frequency to 100 Mhz */ @@ -286,8 +287,8 @@ static void ppc_core99_init(MachineState *machine) } =20 /* UniN init */ - s =3D SYS_BUS_DEVICE(qdev_new_orphan(TYPE_UNI_NORTH)); - sysbus_realize_and_unref(s, &error_fatal); + s =3D SYS_BUS_DEVICE(qdev_new(OBJECT(machine), "uni-n", TYPE_UNI_NORTH= )); + sysbus_realize(s, &error_fatal); memory_region_add_subregion(get_system_memory(), 0xf8000000, sysbus_mmio_get_region(s, 0)); =20 @@ -295,9 +296,10 @@ static void ppc_core99_init(MachineState *machine) machine_arch =3D ARCH_MAC99_U3; /* 970 gets a U3 bus */ /* Uninorth AGP bus */ - uninorth_pci_dev =3D qdev_new_orphan(TYPE_U3_AGP_HOST_BRIDGE); + uninorth_pci_dev =3D qdev_new(OBJECT(machine), "u3-agp", + TYPE_U3_AGP_HOST_BRIDGE); s =3D SYS_BUS_DEVICE(uninorth_pci_dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); sysbus_mmio_map(s, 0, 0xf0800000); sysbus_mmio_map(s, 1, 0xf0c00000); /* PCI hole */ @@ -310,25 +312,27 @@ static void ppc_core99_init(MachineState *machine) machine_arch =3D ARCH_MAC99; /* Use values found on a real PowerMac */ /* Uninorth AGP bus */ - uninorth_agp_dev =3D qdev_new_orphan(TYPE_UNI_NORTH_AGP_HOST_BRIDG= E); + uninorth_agp_dev =3D qdev_new(OBJECT(machine), "uni-n-agp", + TYPE_UNI_NORTH_AGP_HOST_BRIDGE); s =3D SYS_BUS_DEVICE(uninorth_agp_dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); sysbus_mmio_map(s, 0, 0xf0800000); sysbus_mmio_map(s, 1, 0xf0c00000); =20 /* Uninorth internal bus */ - uninorth_internal_dev =3D qdev_new_orphan( + uninorth_internal_dev =3D qdev_new(OBJECT(machine), "uni-n-interna= l", TYPE_UNI_NORTH_INTERNAL_PCI_HOST_BRIDGE); s =3D SYS_BUS_DEVICE(uninorth_internal_dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); sysbus_mmio_map(s, 0, 0xf4800000); sysbus_mmio_map(s, 1, 0xf4c00000); =20 /* Uninorth main bus - this must be last to make it the default */ - uninorth_pci_dev =3D qdev_new_orphan(TYPE_UNI_NORTH_PCI_HOST_BRIDG= E); + uninorth_pci_dev =3D qdev_new(OBJECT(machine), "uni-n-pci", + TYPE_UNI_NORTH_PCI_HOST_BRIDGE); qdev_prop_set_uint32(uninorth_pci_dev, "ofw-addr", 0xf2000000); s =3D SYS_BUS_DEVICE(uninorth_pci_dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); sysbus_mmio_map(s, 0, 0xf2800000); sysbus_mmio_map(s, 1, 0xf2c00000); /* PCI hole */ @@ -348,7 +352,8 @@ static void ppc_core99_init(MachineState *machine) pci_bus =3D PCI_HOST_BRIDGE(uninorth_pci_dev)->bus; =20 /* MacIO */ - macio =3D OBJECT(pci_new_orphan(-1, TYPE_NEWWORLD_MACIO)); + macio =3D OBJECT(pci_new(OBJECT(machine), "macio", -1, + TYPE_NEWWORLD_MACIO)); dev =3D DEVICE(macio); qdev_prop_set_uint64(dev, "frequency", tbfreq); qdev_prop_set_bit(dev, "has-pmu", has_pmu); @@ -358,7 +363,7 @@ static void ppc_core99_init(MachineState *machine) qdev_prop_set_chr(dev, "chrA", serial_hd(0)); qdev_prop_set_chr(dev, "chrB", serial_hd(1)); =20 - pci_realize_and_unref(PCI_DEVICE(macio), pci_bus, &error_fatal); + qdev_realize(DEVICE(macio), BUS(pci_bus), &error_fatal); =20 pic_dev =3D DEVICE(object_resolve_path_component(macio, "pic")); for (i =3D 0; i < 4; i++) { @@ -408,15 +413,15 @@ static void ppc_core99_init(MachineState *machine) } =20 adb_bus =3D qdev_get_child_bus(dev, "adb.0"); - dev =3D qdev_new_orphan(TYPE_ADB_KEYBOARD); - qdev_realize_and_unref(dev, adb_bus, &error_fatal); + dev =3D qdev_new(OBJECT(machine), "adb-keyboard", TYPE_ADB_KEYBOAR= D); + qdev_realize(dev, adb_bus, &error_fatal); =20 - dev =3D qdev_new_orphan(TYPE_ADB_MOUSE); - qdev_realize_and_unref(dev, adb_bus, &error_fatal); + dev =3D qdev_new(OBJECT(machine), "adb-mouse", TYPE_ADB_MOUSE); + qdev_realize(dev, adb_bus, &error_fatal); } =20 if (machine->usb) { - pci_create_simple_orphan(pci_bus, -1, "pci-ohci"); + pci_create_simple(OBJECT(machine), "ohci", pci_bus, -1, "pci-ohci"= ); =20 /* U3 needs to use USB for input because Linux doesn't support via= -cuda on PPC64 */ @@ -425,8 +430,8 @@ static void ppc_core99_init(MachineState *machine) =20 usb_bus =3D USB_BUS(object_resolve_type_unambiguous(TYPE_USB_B= US, &error_abort= )); - usb_create_simple_orphan(usb_bus, "usb-kbd"); - usb_create_simple_orphan(usb_bus, "usb-mouse"); + usb_create_simple(OBJECT(machine), "usb-kbd", usb_bus, "usb-kb= d"); + usb_create_simple(OBJECT(machine), "usb-mouse", usb_bus, "usb-= mouse"); } } =20 @@ -453,22 +458,21 @@ static void ppc_core99_init(MachineState *machine) move the NVRAM out of ROM again for KVM */ nvram_addr =3D 0xFFE00000; } - dev =3D qdev_new_orphan(TYPE_MACIO_NVRAM); + dev =3D qdev_new(OBJECT(machine), "nvram", TYPE_MACIO_NVRAM); qdev_prop_set_uint32(dev, "size", MACIO_NVRAM_SIZE); qdev_prop_set_uint32(dev, "it_shift", 1); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, nvram_addr); nvr =3D MACIO_NVRAM(dev); pmac_format_nvram_partition(nvr, MACIO_NVRAM_SIZE); /* No PCI init: the BIOS will do it */ =20 - dev =3D qdev_new_orphan(TYPE_FW_CFG_MEM); + dev =3D qdev_new(OBJECT(machine), TYPE_FW_CFG, TYPE_FW_CFG_MEM); fw_cfg =3D FW_CFG(dev); qdev_prop_set_uint32(dev, "data_width", 1); qdev_prop_set_bit(dev, "dma_enabled", false); - object_property_add_child(OBJECT(machine), TYPE_FW_CFG, OBJECT(fw_cfg)= ); s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); sysbus_mmio_map(s, 0, CFG_ADDR); sysbus_mmio_map(s, 1, CFG_ADDR + 2); =20 diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c index 4c5746b754..6ef8207f96 100644 --- a/hw/ppc/mac_oldworld.c +++ b/hw/ppc/mac_oldworld.c @@ -111,7 +111,8 @@ static void ppc_heathrow_init(MachineState *machine) =20 /* init CPUs */ for (i =3D 0; i < machine->smp.cpus; i++) { - cpu =3D POWERPC_CPU(cpu_create_orphan(machine->cpu_type)); + cpu =3D POWERPC_CPU(cpu_create(OBJECT(machine), "cpu[*]", + machine->cpu_type)); env =3D &cpu->env; =20 /* Set time-base frequency to 16.6 Mhz */ @@ -212,10 +213,11 @@ static void ppc_heathrow_init(MachineState *machine) } =20 /* Grackle PCI host bridge */ - grackle_dev =3D qdev_new_orphan(TYPE_GRACKLE_PCI_HOST_BRIDGE); + grackle_dev =3D qdev_new(OBJECT(machine), "grackle", + TYPE_GRACKLE_PCI_HOST_BRIDGE); qdev_prop_set_uint32(grackle_dev, "ofw-addr", 0x80000000); s =3D SYS_BUS_DEVICE(grackle_dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); =20 sysbus_mmio_map(s, 0, GRACKLE_BASE); sysbus_mmio_map(s, 1, GRACKLE_BASE + 0x200000); @@ -229,7 +231,8 @@ static void ppc_heathrow_init(MachineState *machine) pci_bus =3D PCI_HOST_BRIDGE(grackle_dev)->bus; =20 /* MacIO */ - macio =3D OBJECT(pci_new_orphan(PCI_DEVFN(16, 0), TYPE_OLDWORLD_MACIO)= ); + macio =3D OBJECT(pci_new(OBJECT(machine), "macio", PCI_DEVFN(16, 0), + TYPE_OLDWORLD_MACIO)); qdev_prop_set_uint64(DEVICE(macio), "frequency", tbfreq); =20 dev =3D DEVICE(object_resolve_path_component(macio, "escc")); @@ -242,7 +245,7 @@ static void ppc_heathrow_init(MachineState *machine) qdev_prop_set_drive(dev, "drive", blk_by_legacy_dinfo(dinfo)); } =20 - pci_realize_and_unref(PCI_DEVICE(macio), pci_bus, &error_fatal); + qdev_realize(DEVICE(macio), BUS(pci_bus), &error_fatal); =20 pic_dev =3D DEVICE(object_resolve_path_component(macio, "pic")); for (i =3D 0; i < 4; i++) { @@ -279,13 +282,13 @@ static void ppc_heathrow_init(MachineState *machine) /* MacIO CUDA/ADB */ dev =3D DEVICE(object_resolve_path_component(macio, "cuda")); adb_bus =3D qdev_get_child_bus(dev, "adb.0"); - dev =3D qdev_new_orphan(TYPE_ADB_KEYBOARD); - qdev_realize_and_unref(dev, adb_bus, &error_fatal); - dev =3D qdev_new_orphan(TYPE_ADB_MOUSE); - qdev_realize_and_unref(dev, adb_bus, &error_fatal); + dev =3D qdev_new(OBJECT(machine), "adb-keyboard", TYPE_ADB_KEYBOARD); + qdev_realize(dev, adb_bus, &error_fatal); + dev =3D qdev_new(OBJECT(machine), "adb-mouse", TYPE_ADB_MOUSE); + qdev_realize(dev, adb_bus, &error_fatal); =20 if (machine_usb(machine)) { - pci_create_simple_orphan(pci_bus, -1, "pci-ohci"); + pci_create_simple(OBJECT(machine), "ohci", pci_bus, -1, "pci-ohci"= ); } =20 if (!graphic_width) { @@ -303,13 +306,12 @@ static void ppc_heathrow_init(MachineState *machine) =20 /* No PCI init: the BIOS will do it */ =20 - dev =3D qdev_new_orphan(TYPE_FW_CFG_MEM); + dev =3D qdev_new(OBJECT(machine), TYPE_FW_CFG, TYPE_FW_CFG_MEM); fw_cfg =3D FW_CFG(dev); qdev_prop_set_uint32(dev, "data_width", 1); qdev_prop_set_bit(dev, "dma_enabled", false); - object_property_add_child(OBJECT(machine), TYPE_FW_CFG, OBJECT(fw_cfg)= ); s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); sysbus_mmio_map(s, 0, CFG_ADDR); sysbus_mmio_map(s, 1, CFG_ADDR + 2); =20 diff --git a/hw/ppc/pegasos.c b/hw/ppc/pegasos.c index 2974625f1c..6ce1e3f174 100644 --- a/hw/ppc/pegasos.c +++ b/hw/ppc/pegasos.c @@ -163,7 +163,7 @@ static void pegasos_init(MachineState *machine) uint8_t *spd_data; =20 /* init CPU */ - pm->cpu =3D POWERPC_CPU(cpu_create_orphan(machine->cpu_type)); + pm->cpu =3D POWERPC_CPU(cpu_create(OBJECT(machine), "cpu", machine->cp= u_type)); env =3D &pm->cpu->env; if (PPC_INPUT(env) !=3D PPC_FLAGS_INPUT_6xx) { error_report("Incompatible CPU, only 6xx bus supported"); @@ -218,7 +218,8 @@ static void pegasos_init(MachineState *machine) MemoryRegion *pci_mem, *mr; =20 /* Articia S */ - pm->nb =3D DEVICE(sysbus_create_simple_orphan(TYPE_ARTICIA, 0xfe00= 0000, NULL)); + pm->nb =3D DEVICE(sysbus_create_simple(OBJECT(machine), "articia", + TYPE_ARTICIA, 0xfe000000, NUL= L)); pci_mem =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(pm->nb), 1); mr =3D g_new(MemoryRegion, 1); memory_region_init_alias(mr, OBJECT(pm->nb), "pci-mem-low", pci_me= m, @@ -233,7 +234,8 @@ static void pegasos_init(MachineState *machine) } case PEGASOS2: /* Marvell Discovery II system controller */ - pm->nb =3D DEVICE(sysbus_create_simple_orphan(TYPE_MV64361, -1, + pm->nb =3D DEVICE(sysbus_create_simple(OBJECT(machine), "mv64361", + TYPE_MV64361, -1, qdev_get_gpio_in(DEVICE(pm->cpu), PPC6xx_INPUT_INT= ))); pci_bus =3D mv64361_get_pci_bus(pm->nb, 1); break; @@ -241,7 +243,8 @@ static void pegasos_init(MachineState *machine) =20 /* VIA VT8231 South Bridge (multifunction PCI device) */ devfn =3D PCI_DEVFN(pm->type =3D=3D PEGASOS1 ? 7 : 12, 0); - pm->sb =3D DEVICE(pci_new_multifunction_orphan(devfn, TYPE_VT8231_ISA)= ); + pm->sb =3D DEVICE(pci_new_multifunction(OBJECT(machine), "via", devfn, + TYPE_VT8231_ISA)); via =3D OBJECT(pm->sb); =20 /* Set properties on individual devices before realizing the south bri= dge */ @@ -250,7 +253,7 @@ static void pegasos_init(MachineState *machine) qdev_prop_set_string(DEVICE(dev), "audiodev", machine->audiodev); } =20 - pci_realize_and_unref(PCI_DEVICE(via), pci_bus, &error_abort); + qdev_realize(DEVICE(via), BUS(pci_bus), &error_abort); object_property_add_alias(OBJECT(machine), "rtc-time", object_resolve_path_component(via, "rtc"), "date"); diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 40a7559528..a53eab1d4f 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -1008,13 +1008,14 @@ static bool pnv_match_cpu(const char *default_type,= const char *cpu_type) return ppc_default->pvr_match(ppc_default, ppc->pvr, false); } =20 -static void pnv_ipmi_bt_init(ISABus *bus, IPMIBmc *bmc, uint32_t irq) +static void pnv_ipmi_bt_init(Object *parent, ISABus *bus, IPMIBmc *bmc, + uint32_t irq) { - ISADevice *dev =3D isa_new_orphan("isa-ipmi-bt"); + ISADevice *dev =3D isa_new(parent, "ipmi-bt", "isa-ipmi-bt"); =20 object_property_set_link(OBJECT(dev), "bmc", OBJECT(bmc), &error_fatal= ); object_property_set_int(OBJECT(dev), "irq", irq, &error_fatal); - isa_realize_and_unref(dev, bus, &error_fatal); + qdev_realize(DEVICE(dev), BUS(bus), &error_fatal); } =20 static void pnv_chip_power10_pic_print_info(PnvChip *chip, GString *buf) @@ -1127,7 +1128,7 @@ static void pnv_init(MachineState *machine) /* * Create our simple PNOR device */ - dev =3D qdev_new_orphan(TYPE_PNV_PNOR); + dev =3D qdev_new(OBJECT(machine), "pnor", TYPE_PNV_PNOR); pnor =3D drive_get(IF_MTD, 0, 0); if (!pnor && defaults_enabled()) { fw_filename =3D qemu_find_file(QEMU_FILE_TYPE_BIOS, PNOR_FILE_NAME= ); @@ -1143,7 +1144,7 @@ static void pnv_init(MachineState *machine) if (pnor) { qdev_prop_set_drive(dev, "drive", blk_by_legacy_dinfo(pnor)); } - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); pnv->pnor =3D PNV_PNOR(dev); =20 /* load skiboot firmware */ @@ -1269,9 +1270,11 @@ static void pnv_init(MachineState *machine) pnv->chips =3D g_new0(PnvChip *, pnv->num_chips); for (i =3D 0; i < pnv->num_chips; i++) { char chip_name[32]; - Object *chip =3D OBJECT(qdev_new_orphan(chip_typename)); + Object *chip; uint64_t chip_ram_size =3D pnv_chip_get_ram_size(pnv, i); =20 + snprintf(chip_name, sizeof(chip_name), "chip[%d]", i); + chip =3D OBJECT(qdev_new(OBJECT(pnv), chip_name, chip_typename)); pnv->chips[i] =3D PNV_CHIP(chip); =20 /* Distribute RAM among the chips */ @@ -1281,8 +1284,6 @@ static void pnv_init(MachineState *machine) &error_fatal); chip_ram_start +=3D chip_ram_size; =20 - snprintf(chip_name, sizeof(chip_name), "chip[%d]", i); - object_property_add_child(OBJECT(pnv), chip_name, chip); object_property_set_int(chip, "chip-id", i, &error_fatal); object_property_set_int(chip, "nr-cores", machine->smp.cores, &error_fatal); @@ -1303,7 +1304,7 @@ static void pnv_init(MachineState *machine) object_property_set_link(chip, "xive-fabric", OBJECT(pnv), &error_abort); } - sysbus_realize_and_unref(SYS_BUS_DEVICE(chip), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(chip), &error_fatal); } g_free(chip_typename); =20 @@ -1321,8 +1322,8 @@ static void pnv_init(MachineState *machine) * communication with the BMC */ if (defaults_enabled()) { - pnv->bmc =3D pnv_bmc_create(pnv->pnor); - pnv_ipmi_bt_init(pnv->isa_bus, pnv->bmc, 10); + pnv->bmc =3D pnv_bmc_create(OBJECT(machine), pnv->pnor); + pnv_ipmi_bt_init(OBJECT(machine), pnv->isa_bus, pnv->bmc, 10); } =20 /* @@ -2825,7 +2826,8 @@ static void pnv_rainier_i2c_init(PnvMachineState *pnv) * Add a PCA9552 I2C device for PCIe hotplug control * to engine 2, bus 1, address 0x63 */ - I2CSlave *dev =3D i2c_slave_create_simple_orphan(chip10->i2c[2].bu= sses[1], + I2CSlave *dev =3D i2c_slave_create_simple(OBJECT(pnv), "pca9552[*]= ", + chip10->i2c[2].busses[1], "pca9552", 0x63); =20 /* @@ -2843,7 +2845,8 @@ static void pnv_rainier_i2c_init(PnvMachineState *pnv) * Add a PCA9554 I2C device for cable card presence detection * to engine 2, bus 1, address 0x25 */ - i2c_slave_create_simple_orphan(chip10->i2c[2].busses[1], "pca9554"= , 0x25); + i2c_slave_create_simple(OBJECT(pnv), "pca9554[*]", + chip10->i2c[2].busses[1], "pca9554", 0x25); } } =20 diff --git a/hw/ppc/pnv_bmc.c b/hw/ppc/pnv_bmc.c index 6f65984f2e..dd4fd20f21 100644 --- a/hw/ppc/pnv_bmc.c +++ b/hw/ppc/pnv_bmc.c @@ -295,11 +295,11 @@ void pnv_bmc_set_pnor(IPMIBmc *bmc, PnvPnor *pnor) * Instantiate the machine BMC. PowerNV uses the QEMU internal * simulator but it could also be external. */ -IPMIBmc *pnv_bmc_create(PnvPnor *pnor) +IPMIBmc *pnv_bmc_create(Object *parent, PnvPnor *pnor) { DeviceState *dev; =20 - dev =3D qdev_new_orphan(TYPE_IPMI_BMC_SIMULATOR); + dev =3D qdev_new(parent, "bmc", TYPE_IPMI_BMC_SIMULATOR); qdev_realize(dev, NULL, &error_fatal); pnv_bmc_set_pnor(IPMI_BMC(dev), pnor); =20 diff --git a/hw/ppc/ppc440_bamboo.c b/hw/ppc/ppc440_bamboo.c index 499949bfdf..2d9efeba77 100644 --- a/hw/ppc/ppc440_bamboo.c +++ b/hw/ppc/ppc440_bamboo.c @@ -148,7 +148,7 @@ static void bamboo_init(MachineState *machine) exit(EXIT_FAILURE); } =20 - cpu =3D POWERPC_CPU(cpu_create_orphan(machine->cpu_type)); + cpu =3D POWERPC_CPU(cpu_create(OBJECT(machine), "cpu", machine->cpu_ty= pe)); env =3D &cpu->env; =20 if (env->mmu_model !=3D POWERPC_MMU_BOOKE) { @@ -162,9 +162,8 @@ static void bamboo_init(MachineState *machine) ppc_dcr_init(env, NULL, NULL); =20 /* interrupt controller */ - uicdev =3D qdev_new_orphan(TYPE_PPC_UIC); + uicdev =3D qdev_new(OBJECT(machine), "uic", TYPE_PPC_UIC); ppc4xx_dcr_realize(PPC4xx_DCR_DEVICE(uicdev), cpu, &error_fatal); - object_unref(OBJECT(uicdev)); uicsbd =3D SYS_BUS_DEVICE(uicdev); sysbus_connect_irq(uicsbd, PPCUIC_OUTPUT_INT, qdev_get_gpio_in(DEVICE(cpu), PPC40x_INPUT_INT)); @@ -172,18 +171,18 @@ static void bamboo_init(MachineState *machine) qdev_get_gpio_in(DEVICE(cpu), PPC40x_INPUT_CINT)); =20 /* SDRAM controller */ - dev =3D qdev_new_orphan(TYPE_PPC4xx_SDRAM_DDR); + dev =3D qdev_new(OBJECT(machine), "sdram", TYPE_PPC4xx_SDRAM_DDR); object_property_set_link(OBJECT(dev), "dram", OBJECT(machine->ram), &error_abort); ppc4xx_dcr_realize(PPC4xx_DCR_DEVICE(dev), cpu, &error_fatal); - object_unref(OBJECT(dev)); /* XXX 440EP's ECC interrupts are on UIC1, but we've only created UIC0= . */ sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, qdev_get_gpio_in(uicdev, 14= )); /* Enable SDRAM memory regions, this should be done by the firmware */ ppc4xx_sdram_ddr_enable(PPC4xx_SDRAM_DDR(dev)); =20 /* PCI */ - dev =3D sysbus_create_varargs_orphan(TYPE_PPC4xx_PCI_HOST, PPC440EP_PC= I_CONFIG, + dev =3D sysbus_create_varargs(OBJECT(machine), "pci-host", + TYPE_PPC4xx_PCI_HOST, PPC440EP_PCI_CONFIG, qdev_get_gpio_in(uicdev, pci_irq_nrs[0]), qdev_get_gpio_in(uicdev, pci_irq_nrs[1]), qdev_get_gpio_in(uicdev, pci_irq_nrs[2]), diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c index c861e022f0..ff85a4e64b 100644 --- a/hw/ppc/prep.c +++ b/hw/ppc/prep.c @@ -257,7 +257,7 @@ static void ibm_40p_init(MachineState *machine) } =20 /* init CPU */ - cpu =3D POWERPC_CPU(cpu_create_orphan(machine->cpu_type)); + cpu =3D POWERPC_CPU(cpu_create(OBJECT(machine), "cpu", machine->cpu_ty= pe)); env =3D &cpu->env; if (PPC_INPUT(env) !=3D PPC_FLAGS_INPUT_6xx) { error_report("only 6xx bus is supported on this machine"); @@ -289,10 +289,9 @@ static void ibm_40p_init(MachineState *machine) g_free(filename); =20 /* PCI host */ - dev =3D qdev_new_orphan("raven-pcihost"); + dev =3D qdev_new(OBJECT(machine), "raven", "raven-pcihost"); pcihost =3D SYS_BUS_DEVICE(dev); - object_property_add_child(qdev_get_machine(), "raven", OBJECT(dev)); - sysbus_realize_and_unref(pcihost, &error_fatal); + sysbus_realize(pcihost, &error_fatal); pci_bus =3D PCI_BUS(qdev_get_child_bus(dev, "pci.0")); if (!pci_bus) { error_report("could not create PCI host controller"); @@ -300,8 +299,9 @@ static void ibm_40p_init(MachineState *machine) } =20 /* PCI -> ISA bridge */ - i82378_dev =3D DEVICE(pci_new_orphan(PCI_DEVFN(11, 0), "i82378")); - qdev_realize_and_unref(i82378_dev, BUS(pci_bus), &error_fatal); + i82378_dev =3D DEVICE(pci_new(OBJECT(machine), "i82378", + PCI_DEVFN(11, 0), "i82378")); + qdev_realize(i82378_dev, BUS(pci_bus), &error_fatal); qdev_connect_gpio_out(i82378_dev, 0, qdev_get_gpio_in(DEVICE(cpu), PPC6xx_INPUT_INT)); =20 @@ -309,23 +309,23 @@ static void ibm_40p_init(MachineState *machine) isa_bus =3D ISA_BUS(qdev_get_child_bus(i82378_dev, "isa.0")); =20 /* system control ports */ - isa_dev =3D isa_new_orphan("prep-systemio"); + isa_dev =3D isa_new(OBJECT(machine), "systemio", "prep-systemio"); dev =3D DEVICE(isa_dev); qdev_prop_set_uint32(dev, "ibm-planar-id", 0xfc); qdev_prop_set_uint32(dev, "equipment", 0xc0); - isa_realize_and_unref(isa_dev, isa_bus, &error_fatal); + qdev_realize(DEVICE(isa_dev), BUS(isa_bus), &error_fatal); =20 /* Memory controller */ - isa_dev =3D isa_new_orphan("rs6000-mc"); + isa_dev =3D isa_new(OBJECT(machine), "mc", "rs6000-mc"); dev =3D DEVICE(isa_dev); qdev_prop_set_uint32(dev, "ram-size", machine->ram_size); - isa_realize_and_unref(isa_dev, isa_bus, &error_fatal); + qdev_realize(DEVICE(isa_dev), BUS(isa_bus), &error_fatal); =20 /* RTC */ - isa_dev =3D isa_new_orphan(TYPE_MC146818_RTC); + isa_dev =3D isa_new(OBJECT(machine), "rtc", TYPE_MC146818_RTC); dev =3D DEVICE(isa_dev); qdev_prop_set_int32(dev, "base_year", 1900); - isa_realize_and_unref(isa_dev, isa_bus, &error_fatal); + qdev_realize(DEVICE(isa_dev), BUS(isa_bus), &error_fatal); =20 /* initialize CMOS checksums */ cmos_checksum =3D 0x6aa9; @@ -334,23 +334,25 @@ static void ibm_40p_init(MachineState *machine) =20 /* add some more devices */ if (defaults_enabled()) { - m48t59 =3D NVRAM(isa_create_simple_orphan(isa_bus, "isa-m48t59")); + m48t59 =3D NVRAM(isa_create_simple(OBJECT(machine), "m48t59", + isa_bus, "isa-m48t59")); =20 - isa_dev =3D isa_new_orphan("cs4231a"); + isa_dev =3D isa_new(OBJECT(machine), "cs4231a", "cs4231a"); dev =3D DEVICE(isa_dev); qdev_prop_set_uint32(dev, "iobase", 0x830); qdev_prop_set_uint32(dev, "irq", 10); if (machine->audiodev) { qdev_prop_set_string(dev, "audiodev", machine->audiodev); } - isa_realize_and_unref(isa_dev, isa_bus, &error_fatal); + qdev_realize(DEVICE(isa_dev), BUS(isa_bus), &error_fatal); =20 - isa_dev =3D isa_new_orphan("pc87312"); + isa_dev =3D isa_new(OBJECT(machine), "pc87312", "pc87312"); dev =3D DEVICE(isa_dev); qdev_prop_set_uint32(dev, "config", 12); - isa_realize_and_unref(isa_dev, isa_bus, &error_fatal); + qdev_realize(DEVICE(isa_dev), BUS(isa_bus), &error_fatal); =20 - dev =3D DEVICE(pci_create_simple_orphan(pci_bus, PCI_DEVFN(1, 0), = "lsi53c810")); + dev =3D DEVICE(pci_create_simple(OBJECT(machine), "scsi", pci_bus, + PCI_DEVFN(1, 0), "lsi53c810")); lsi53c8xx_handle_legacy_cmdline(dev); qdev_connect_gpio_out(dev, 0, qdev_get_gpio_in(i82378_dev, 13)); =20 @@ -363,14 +365,12 @@ static void ibm_40p_init(MachineState *machine) } =20 /* Prepare firmware configuration for OpenBIOS */ - dev =3D qdev_new_orphan(TYPE_FW_CFG_MEM); + dev =3D qdev_new(OBJECT(machine), TYPE_FW_CFG, TYPE_FW_CFG_MEM); fw_cfg =3D FW_CFG(dev); qdev_prop_set_uint32(dev, "data_width", 1); qdev_prop_set_bit(dev, "dma_enabled", false); - object_property_add_child(OBJECT(qdev_get_machine()), TYPE_FW_CFG, - OBJECT(fw_cfg)); s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); sysbus_mmio_map(s, 0, CFG_ADDR); sysbus_mmio_map(s, 1, CFG_ADDR + 2); =20 diff --git a/hw/ppc/sam460ex.c b/hw/ppc/sam460ex.c index be506b02f2..59c217e2b2 100644 --- a/hw/ppc/sam460ex.c +++ b/hw/ppc/sam460ex.c @@ -261,7 +261,7 @@ static void sam460ex_init(MachineState *machine) uint8_t *spd_data; int success; =20 - cpu =3D POWERPC_CPU(cpu_create_orphan(machine->cpu_type)); + cpu =3D POWERPC_CPU(cpu_create(OBJECT(machine), "cpu", machine->cpu_ty= pe)); env =3D &cpu->env; if (env->mmu_model !=3D POWERPC_MMU_BOOKE) { error_report("Only MMU model BookE is supported by this machine."); @@ -276,9 +276,8 @@ static void sam460ex_init(MachineState *machine) ppc_dcr_init(env, NULL, NULL); =20 /* PLB arbitrer */ - dev =3D qdev_new_orphan(TYPE_PPC4xx_PLB); + dev =3D qdev_new(OBJECT(machine), "plb", TYPE_PPC4xx_PLB); ppc4xx_dcr_realize(PPC4xx_DCR_DEVICE(dev), cpu, &error_fatal); - object_unref(OBJECT(dev)); =20 /* interrupt controllers */ for (i =3D 0; i < ARRAY_SIZE(uic); i++) { @@ -292,10 +291,9 @@ static void sam460ex_init(MachineState *machine) */ const int input_ints[] =3D { -1, 30, 10, 16 }; =20 - uic[i] =3D qdev_new_orphan(TYPE_PPC_UIC); + uic[i] =3D qdev_new(OBJECT(machine), "uic[*]", TYPE_PPC_UIC); qdev_prop_set_uint32(uic[i], "dcr-base", 0xc0 + i * 0x10); ppc4xx_dcr_realize(PPC4xx_DCR_DEVICE(uic[i]), cpu, &error_fatal); - object_unref(OBJECT(uic[i])); =20 sbdev =3D SYS_BUS_DEVICE(uic[i]); if (i =3D=3D 0) { @@ -322,7 +320,7 @@ static void sam460ex_init(MachineState *machine) error_report("Memory below 64 MiB is not supported"); exit(1); } - dev =3D qdev_new_orphan(TYPE_PPC4xx_SDRAM_DDR2); + dev =3D qdev_new(OBJECT(machine), "sdram", TYPE_PPC4xx_SDRAM_DDR2); object_property_set_link(OBJECT(dev), "dram", OBJECT(machine->ram), &error_abort); /* @@ -331,14 +329,13 @@ static void sam460ex_init(MachineState *machine) */ object_property_set_int(OBJECT(dev), "nbanks", 1, &error_abort); ppc4xx_dcr_realize(PPC4xx_DCR_DEVICE(dev), cpu, &error_fatal); - object_unref(OBJECT(dev)); /* FIXME: does 460EX have ECC interrupts? */ /* Enable SDRAM memory regions as we may boot without firmware */ ppc4xx_sdram_ddr2_enable(PPC4xx_SDRAM_DDR2(dev)); =20 /* IIC controllers and devices */ - dev =3D sysbus_create_simple_orphan(TYPE_PPC4xx_I2C, 0x4ef600700, - qdev_get_gpio_in(uic[0], 2)); + dev =3D sysbus_create_simple(OBJECT(machine), "i2c[*]", TYPE_PPC4xx_I2= C, + 0x4ef600700, qdev_get_gpio_in(uic[0], 2)); i2c =3D PPC4xx_I2C(dev)->bus; /* SPD EEPROM on RAM module */ spd_data =3D spd_data_generate(machine->ram_size < 128 * MiB ? DDR : D= DR2, @@ -346,15 +343,14 @@ static void sam460ex_init(MachineState *machine) spd_data[20] =3D 4; /* SO-DIMM module */ smbus_eeprom_init_one(OBJECT(machine), i2c, 0x50, spd_data); /* RTC */ - i2c_slave_create_simple_orphan(i2c, "m41t80", 0x68); + i2c_slave_create_simple(OBJECT(machine), "rtc", i2c, "m41t80", 0x68); =20 - dev =3D sysbus_create_simple_orphan(TYPE_PPC4xx_I2C, 0x4ef600800, - qdev_get_gpio_in(uic[0], 3)); + dev =3D sysbus_create_simple(OBJECT(machine), "i2c[*]", TYPE_PPC4xx_I2= C, + 0x4ef600800, qdev_get_gpio_in(uic[0], 3)); =20 /* External bus controller */ - dev =3D qdev_new_orphan(TYPE_PPC4xx_EBC); + dev =3D qdev_new(OBJECT(machine), "ebc", TYPE_PPC4xx_EBC); ppc4xx_dcr_realize(PPC4xx_DCR_DEVICE(dev), cpu, &error_fatal); - object_unref(OBJECT(dev)); =20 /* CPR */ ppc4xx_cpr_init(env); @@ -366,11 +362,10 @@ static void sam460ex_init(MachineState *machine) ppc4xx_sdr_init(env); =20 /* MAL */ - dev =3D qdev_new_orphan(TYPE_PPC4xx_MAL); + dev =3D qdev_new(OBJECT(machine), "mal", TYPE_PPC4xx_MAL); qdev_prop_set_uint8(dev, "txc-num", 4); qdev_prop_set_uint8(dev, "rxc-num", 16); ppc4xx_dcr_realize(PPC4xx_DCR_DEVICE(dev), cpu, &error_fatal); - object_unref(OBJECT(dev)); sbdev =3D SYS_BUS_DEVICE(dev); for (i =3D 0; i < ARRAY_SIZE(PPC4xx_MAL(dev)->irqs); i++) { sysbus_connect_irq(sbdev, i, qdev_get_gpio_in(uic[2], 3 + i)); @@ -388,49 +383,51 @@ static void sam460ex_init(MachineState *machine) l2cache_ram); =20 /* USB */ - sysbus_create_simple_orphan(TYPE_PPC4xx_EHCI, 0x4bffd0400, - qdev_get_gpio_in(uic[2], 29)); - dev =3D qdev_new_orphan("sysbus-ohci"); + sysbus_create_simple(OBJECT(machine), "ehci", TYPE_PPC4xx_EHCI, + 0x4bffd0400, qdev_get_gpio_in(uic[2], 29)); + dev =3D qdev_new(OBJECT(machine), "ohci", "sysbus-ohci"); qdev_prop_set_string(dev, "masterbus", "usb-bus.0"); qdev_prop_set_uint32(dev, "num-ports", 6); sbdev =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(sbdev, &error_fatal); + sysbus_realize(sbdev, &error_fatal); sysbus_mmio_map(sbdev, 0, 0x4bffd0000); sysbus_connect_irq(sbdev, 0, qdev_get_gpio_in(uic[2], 30)); usb_bus =3D USB_BUS(object_resolve_type_unambiguous(TYPE_USB_BUS, &error_abort)); - usb_create_simple_orphan(usb_bus, "usb-kbd"); - usb_create_simple_orphan(usb_bus, "usb-mouse"); + usb_create_simple(OBJECT(machine), "usb-kbd", usb_bus, "usb-kbd"); + usb_create_simple(OBJECT(machine), "usb-mouse", usb_bus, "usb-mouse"); =20 /* PCIe buses */ - dev =3D qdev_new_orphan(TYPE_PPC460EX_PCIE_HOST); + dev =3D qdev_new(OBJECT(machine), "pcie-host[*]", TYPE_PPC460EX_PCIE_H= OST); qdev_prop_set_int32(dev, "busnum", 0); qdev_prop_set_int32(dev, "dcrn-base", PCIE0_DCRN_BASE); object_property_set_link(OBJECT(dev), "cpu", OBJECT(cpu), &error_abort= ); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 - dev =3D qdev_new_orphan(TYPE_PPC460EX_PCIE_HOST); + dev =3D qdev_new(OBJECT(machine), "pcie-host[*]", TYPE_PPC460EX_PCIE_H= OST); qdev_prop_set_int32(dev, "busnum", 1); qdev_prop_set_int32(dev, "dcrn-base", PCIE1_DCRN_BASE); object_property_set_link(OBJECT(dev), "cpu", OBJECT(cpu), &error_abort= ); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 /* PCI bus */ /* All PCI irqs are connected to the same UIC pin (cf. UBoot source) */ - dev =3D sysbus_create_simple_orphan(TYPE_PPC440_PCIX_HOST, 0xc0ec00000, + dev =3D sysbus_create_simple(OBJECT(machine), "pcix-host", + TYPE_PPC440_PCIX_HOST, 0xc0ec00000, qdev_get_gpio_in(uic[1], 0)); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 1, 0xc08000000); pci_bus =3D PCI_BUS(qdev_get_child_bus(dev, "pci.0")); =20 /* PCI devices */ - pci_create_simple_orphan(pci_bus, PCI_DEVFN(6, 0), "sm501"); + pci_create_simple(OBJECT(machine), "sm501", pci_bus, PCI_DEVFN(6, 0), = "sm501"); /* * SoC has a single SATA port but we don't emulate that * However, firmware and usual clients have driver for SiI311x * PCI SATA card so add one for convenience by default */ if (defaults_enabled()) { - PCIIDEState *s =3D PCI_IDE(pci_create_simple_orphan(pci_bus, -1, "= sii3112")); + PCIIDEState *s =3D PCI_IDE(pci_create_simple(OBJECT(machine), "sat= a", + pci_bus, -1, "sii3112")= ); DriveInfo *di; =20 di =3D drive_get_by_index(IF_IDE, 0); diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 969f821aca..fbf6c59516 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -1885,7 +1885,7 @@ static void spapr_machine_reset(MachineState *machine= , ResetType type) =20 static void spapr_create_nvram(SpaprMachineState *spapr) { - DeviceState *dev =3D qdev_new_orphan("spapr-nvram"); + DeviceState *dev =3D qdev_new(OBJECT(spapr), "nvram", "spapr-nvram"); DriveInfo *dinfo =3D drive_get(IF_PFLASH, 0, 0); =20 if (dinfo) { @@ -1893,7 +1893,7 @@ static void spapr_create_nvram(SpaprMachineState *spa= pr) &error_fatal); } =20 - qdev_realize_and_unref(dev, &spapr->vio_bus->bus, &error_fatal); + qdev_realize(dev, &spapr->vio_bus->bus, &error_fatal); =20 spapr->nvram =3D (struct SpaprNvram *)dev; } @@ -2795,13 +2795,13 @@ static void spapr_init_cpus(SpaprMachineState *spap= r) } } =20 -static PCIHostState *spapr_create_default_phb(void) +static PCIHostState *spapr_create_default_phb(Object *parent) { DeviceState *dev; =20 - dev =3D qdev_new_orphan(TYPE_SPAPR_PCI_HOST_BRIDGE); + dev =3D qdev_new(parent, "phb[*]", TYPE_SPAPR_PCI_HOST_BRIDGE); qdev_prop_set_uint32(dev, "index", 0); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 return PCI_HOST_BRIDGE(dev); } @@ -3030,7 +3030,7 @@ static void spapr_machine_init(MachineState *machine) spapr_rtc_create(spapr); =20 /* Set up VIO bus */ - spapr->vio_bus =3D spapr_vio_bus_init(); + spapr->vio_bus =3D spapr_vio_bus_init(OBJECT(machine)); =20 for (i =3D 0; serial_hd(i); i++) { spapr_vty_create(OBJECT(machine), spapr->vio_bus, serial_hd(i)); @@ -3053,7 +3053,7 @@ static void spapr_machine_init(MachineState *machine) /* Set up PCI */ spapr_pci_rtas_init(); =20 - phb =3D spapr_create_default_phb(); + phb =3D spapr_create_default_phb(OBJECT(machine)); =20 while ((nd =3D qemu_find_nic_info("spapr-vlan", true, "ibmveth"))) { spapr_vlan_create(OBJECT(spapr), spapr->vio_bus, nd); @@ -3075,15 +3075,16 @@ static void spapr_machine_init(MachineState *machin= e) } =20 if (machine->usb) { - pci_create_simple_orphan(phb->bus, -1, "nec-usb-xhci"); + pci_create_simple(OBJECT(machine), "xhci", phb->bus, -1, + "nec-usb-xhci"); =20 if (has_vga) { USBBus *usb_bus; =20 usb_bus =3D USB_BUS(object_resolve_type_unambiguous(TYPE_USB_B= US, &error_abort= )); - usb_create_simple_orphan(usb_bus, "usb-kbd"); - usb_create_simple_orphan(usb_bus, "usb-mouse"); + usb_create_simple(OBJECT(machine), "usb-kbd", usb_bus, "usb-kb= d"); + usb_create_simple(OBJECT(machine), "usb-mouse", usb_bus, "usb-= mouse"); } } =20 diff --git a/hw/ppc/spapr_irq.c b/hw/ppc/spapr_irq.c index 76ae80d16e..b9e5f5d710 100644 --- a/hw/ppc/spapr_irq.c +++ b/hw/ppc/spapr_irq.c @@ -312,7 +312,7 @@ void spapr_irq_init(SpaprMachineState *spapr, Error **e= rrp) DeviceState *dev; int i; =20 - dev =3D qdev_new_orphan(TYPE_SPAPR_XIVE); + dev =3D qdev_new(OBJECT(spapr), "xive", TYPE_SPAPR_XIVE); qdev_prop_set_uint32(dev, "nr-irqs", SPAPR_NR_XIRQS + SPAPR_IRQ_NR= _IPIS); /* * 8 XIVE END structures per CPU. One for each available @@ -321,7 +321,7 @@ void spapr_irq_init(SpaprMachineState *spapr, Error **e= rrp) qdev_prop_set_uint32(dev, "nr-ends", nr_servers << 3); object_property_set_link(OBJECT(dev), "xive-fabric", OBJECT(spapr), &error_abort); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 spapr->xive =3D SPAPR_XIVE(dev); =20 diff --git a/hw/ppc/spapr_vio.c b/hw/ppc/spapr_vio.c index 0f22fa61a4..1e9cbf99ea 100644 --- a/hw/ppc/spapr_vio.c +++ b/hw/ppc/spapr_vio.c @@ -557,21 +557,21 @@ static target_ulong h_vio_signal(PowerPCCPU *cpu, Spa= prMachineState *spapr, return H_SUCCESS; } =20 -SpaprVioBus *spapr_vio_bus_init(void) +SpaprVioBus *spapr_vio_bus_init(Object *parent) { SpaprVioBus *bus; BusState *qbus; DeviceState *dev; =20 /* Create bridge device */ - dev =3D qdev_new_orphan(TYPE_SPAPR_VIO_BRIDGE); + dev =3D qdev_new(parent, "vio-bridge", TYPE_SPAPR_VIO_BRIDGE); =20 /* Create bus on bridge device */ qbus =3D qbus_new(TYPE_SPAPR_VIO_BUS, dev, "spapr-vio"); bus =3D SPAPR_VIO_BUS(qbus); bus->next_reg =3D SPAPR_VIO_REG_BASE; =20 - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 /* hcall-vio */ spapr_register_hypercall(H_VIO_SIGNAL, h_vio_signal); diff --git a/hw/ppc/virtex_ml507.c b/hw/ppc/virtex_ml507.c index 8f4b8965a9..d268ce4987 100644 --- a/hw/ppc/virtex_ml507.c +++ b/hw/ppc/virtex_ml507.c @@ -69,14 +69,15 @@ static struct boot_info void *vfdt; } boot_info; =20 -static PowerPCCPU *ppc440_init_xilinx(const char *cpu_type, uint32_t syscl= k) +static PowerPCCPU *ppc440_init_xilinx(Object *parent, const char *cpu_type, + uint32_t sysclk) { PowerPCCPU *cpu; CPUPPCState *env; DeviceState *uicdev; SysBusDevice *uicsbd; =20 - cpu =3D POWERPC_CPU(cpu_create_orphan(cpu_type)); + cpu =3D POWERPC_CPU(cpu_create(parent, "cpu", cpu_type)); env =3D &cpu->env; =20 ppc_booke_timers_init(cpu, sysclk, 0/* no flags */); @@ -84,9 +85,8 @@ static PowerPCCPU *ppc440_init_xilinx(const char *cpu_typ= e, uint32_t sysclk) ppc_dcr_init(env, NULL, NULL); =20 /* interrupt controller */ - uicdev =3D qdev_new_orphan(TYPE_PPC_UIC); + uicdev =3D qdev_new(parent, "uic", TYPE_PPC_UIC); ppc4xx_dcr_realize(PPC4xx_DCR_DEVICE(uicdev), cpu, &error_fatal); - object_unref(OBJECT(uicdev)); uicsbd =3D SYS_BUS_DEVICE(uicdev); sysbus_connect_irq(uicsbd, PPCUIC_OUTPUT_INT, qdev_get_gpio_in(DEVICE(cpu), PPC40x_INPUT_INT)); @@ -199,7 +199,7 @@ static void virtex_init(MachineState *machine) int i; =20 /* init CPUs */ - cpu =3D ppc440_init_xilinx(machine->cpu_type, 400000000); + cpu =3D ppc440_init_xilinx(OBJECT(machine), machine->cpu_type, 4000000= 00); env =3D &cpu->env; =20 if (env->mmu_model !=3D POWERPC_MMU_BOOKE) { @@ -218,10 +218,10 @@ static void virtex_init(MachineState *machine) 64 * KiB, 1, 0x89, 0x18, 0x0000, 0x0, 1); =20 cpu_irq =3D qdev_get_gpio_in(DEVICE(cpu), PPC40x_INPUT_INT); - dev =3D qdev_new_orphan("xlnx.xps-intc"); + dev =3D qdev_new(OBJECT(machine), "intc", "xlnx.xps-intc"); qdev_prop_set_enum(dev, "endianness", ENDIAN_MODE_BIG); qdev_prop_set_uint32(dev, "kind-of-intr", 0); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, INTC_BASEADDR); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, cpu_irq); for (i =3D 0; i < 32; i++) { @@ -233,11 +233,11 @@ static void virtex_init(MachineState *machine) 115200, serial_hd(0), DEVICE_LITTLE_ENDIAN); =20 /* 2 timers at irq 2 @ 62 Mhz. */ - dev =3D qdev_new_orphan("xlnx.xps-timer"); + dev =3D qdev_new(OBJECT(machine), "timer", "xlnx.xps-timer"); qdev_prop_set_enum(dev, "endianness", ENDIAN_MODE_BIG); qdev_prop_set_uint32(dev, "one-timer-only", 0); qdev_prop_set_uint32(dev, "clock-frequency", 62 * 1000000); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, TIMER_BASEADDR); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, irq[TIMER_IRQ]); =20 diff --git a/include/hw/ppc/pnv.h b/include/hw/ppc/pnv.h index 60e902d9c5..6bf8d57972 100644 --- a/include/hw/ppc/pnv.h +++ b/include/hw/ppc/pnv.h @@ -122,7 +122,7 @@ void pnv_cpu_do_nmi_resume(CPUState *cs); */ void pnv_dt_bmc_sensors(IPMIBmc *bmc, void *fdt); void pnv_bmc_powerdown(IPMIBmc *bmc); -IPMIBmc *pnv_bmc_create(PnvPnor *pnor); +IPMIBmc *pnv_bmc_create(Object *parent, PnvPnor *pnor); IPMIBmc *pnv_bmc_find(Error **errp); void pnv_bmc_set_pnor(IPMIBmc *bmc, PnvPnor *pnor); =20 diff --git a/include/hw/ppc/spapr_vio.h b/include/hw/ppc/spapr_vio.h index 3ca0c9d261..b834a963da 100644 --- a/include/hw/ppc/spapr_vio.h +++ b/include/hw/ppc/spapr_vio.h @@ -76,7 +76,7 @@ struct SpaprVioBus { uint32_t next_reg; }; =20 -SpaprVioBus *spapr_vio_bus_init(void); +SpaprVioBus *spapr_vio_bus_init(Object *parent); SpaprVioDevice *spapr_vio_find_by_reg(SpaprVioBus *bus, uint32_t reg); void spapr_dt_vdevice(SpaprVioBus *bus, void *fdt); gchar *spapr_vio_stdout_path(SpaprVioBus *bus); --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411566; cv=none; d=zohomail.com; s=zohoarc; b=WGbkLf5g1y0QmwQKsU3U5ZtUms4oQ+qGliHbKmgm1wy6ERGhpsTZa1QqpsyuwiipIWCHIQA9luG/K32UaNTq87AgwyTDnIVLGlWat0HfuwnJerzlhw1KP3cD/sY4zEfFT/Ho3oacEF2oj/xKqihmMiljAI1CmgsB7jsVVNmYglM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411566; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=VT5Xn5WbVnSZ7ByuXx0hTwhAi7XNb6UyTHSfSUFkxdc=; b=WG3VKg1I0tFbIrjP3mT8G4i2DPVDladxqtdggf3JUIYkBcJ2tvRuuQnIpKX+o5OvY5raz0xuBtV/jjNT3K9PJF7XiOC2d3UyNhPChfedCYpsivqCb1HtQz6GomPHj8+Mnedi9/DWUzwzGKRbQ1mtNDZ3tL1iCGYAKa4UevrRAmE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411566481820.2542527708636; Sat, 18 Jul 2026 14:52:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCxc-0006K2-4i; Sat, 18 Jul 2026 17:52:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCxa-0006DT-KT; Sat, 18 Jul 2026 17:52:38 -0400 Received: from pdx-out-012.esa.us-west-2.outbound.mail-perimeter.amazon.com ([35.162.73.231]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCxW-000407-Bh; Sat, 18 Jul 2026 17:52:37 -0400 Received: from ip-10-5-6-203.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.6.203]) by internal-pdx-out-012.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:52:30 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.48:14792] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.30.230:2525] with esmtp (Farcaster) id bce34910-ea26-41eb-87b9-81931ed62287; Sat, 18 Jul 2026 21:52:30 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB002.ant.amazon.com (10.250.64.231) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:52:30 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:52:20 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411554; x=1815947554; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=VT5Xn5WbVnSZ7ByuXx0hTwhAi7XNb6UyTHSfSUFkxdc=; b=CuOa8nC5YyVHYnQ1llILcrhl1fA4sATjsmB0TYpXuuxTfAJZ3RRpMGxH Ks6/ffEezNLkb37o+/NBzJQ1oje6bX+TOG0GDkdDvnay5L8zFygJZhjtS /vCqQD2jOrr7toEBPiX2fxmotAieCdjJ6v3+pQhwkevTEX1JNYVjuwbtm 064edRmZtDCJOZYwKTdgw+WZOiFpO1aCQYN4enZ4ZnRW+7Y5TeOGwIqjc R9TKcj4IplmJsB8f/PDctAKHNeeBZLTI3MAK1stPqWHq9Wqm1qU2k9OtZ mgprmTYgQpuwUl0ljiuSQCmp7ubBsCcieYXjAQI2IgZyqOiYewtO1CZBs w==; X-CSE-ConnectionGUID: tUPGAHQ1RqmLPiCZ6CJCNA== X-CSE-MsgGUID: xoVE2v16TGaE2nRbRgJLqg== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23715854" X-Farcaster-Flow-ID: bce34910-ea26-41eb-87b9-81931ed62287 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 056/137] hw/pci, hw/isa: Give VGA and slot-NIC helpers a QOM parent Date: Sat, 18 Jul 2026 21:35:31 +0000 Message-ID: <20260718213652.37673-57-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D042UWA001.ant.amazon.com (10.13.139.92) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=35.162.73.231; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-012.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411568172158500 Content-Type: text/plain; charset="utf-8" Now that all callers of pci_vga_init(), pci_init_nic_in_slot() and isa_vga_init() live in already-converted board files, thread an Object *parent through these three convenience helpers so that the default VGA and default NIC created via -vga and -net become proper children of their machine instead of landing under /machine/unattached. pc_vga_init() and the two static network_init() helpers in hw/mips/{fuloong2e,malta}.c gain the parent argument as well and pass it through. Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/alpha/dp264.c | 2 +- hw/i386/isapc.c | 2 +- hw/i386/pc.c | 6 +++--- hw/i386/pc_piix.c | 2 +- hw/i386/pc_q35.c | 2 +- hw/isa/isa-bus.c | 6 +++--- hw/mips/fuloong2e.c | 6 +++--- hw/mips/loongson3_virt.c | 2 +- hw/mips/malta.c | 8 ++++---- hw/pci/pci.c | 18 +++++++++--------- hw/ppc/amigaone.c | 2 +- hw/ppc/mac_newworld.c | 2 +- hw/ppc/mac_oldworld.c | 2 +- hw/ppc/pegasos.c | 2 +- hw/ppc/prep.c | 4 ++-- hw/ppc/spapr.c | 6 +++--- hw/riscv/boston-aia.c | 3 ++- hw/sh4/r2d.c | 2 +- include/hw/i386/pc.h | 2 +- include/hw/isa/isa.h | 2 +- include/hw/pci/pci.h | 4 ++-- 21 files changed, 43 insertions(+), 42 deletions(-) diff --git a/hw/alpha/dp264.c b/hw/alpha/dp264.c index 40dee88f2d..d7d4fe3e8b 100644 --- a/hw/alpha/dp264.c +++ b/hw/alpha/dp264.c @@ -122,7 +122,7 @@ static void clipper_init(MachineState *machine) mc146818_rtc_init(mo, isa_bus, 1900, rtc_irq); =20 /* VGA setup. Don't bother loading the bios. */ - pci_vga_init(pci_bus); + pci_vga_init(OBJECT(machine), pci_bus); =20 /* Network setup. e1000 is good enough, failing Tulip support. */ pci_init_nic_devices(pci_bus, mc->default_nic); diff --git a/hw/i386/isapc.c b/hw/i386/isapc.c index c5bba66967..842ae94acb 100644 --- a/hw/i386/isapc.c +++ b/hw/i386/isapc.c @@ -130,7 +130,7 @@ static void pc_init_isa(MachineState *machine) x86_register_ferr_irq(x86ms->gsi[13]); } =20 - pc_vga_init(isa_bus, NULL); + pc_vga_init(OBJECT(machine), isa_bus, NULL); =20 /* init basic PC hardware */ pc_basic_device_init(pcms, isa_bus, x86ms->gsi, x86ms->rtc, diff --git a/hw/i386/pc.c b/hw/i386/pc.c index 1073888b42..0c89310ab7 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -946,15 +946,15 @@ uint64_t pc_pci_hole64_start(void) return ROUND_UP(hole64_start, 1 * GiB); } =20 -DeviceState *pc_vga_init(ISABus *isa_bus, PCIBus *pci_bus) +DeviceState *pc_vga_init(Object *parent, ISABus *isa_bus, PCIBus *pci_bus) { DeviceState *dev =3D NULL; =20 if (pci_bus) { - PCIDevice *pcidev =3D pci_vga_init(pci_bus); + PCIDevice *pcidev =3D pci_vga_init(parent, pci_bus); dev =3D pcidev ? &pcidev->qdev : NULL; } else if (isa_bus) { - ISADevice *isadev =3D isa_vga_init(isa_bus); + ISADevice *isadev =3D isa_vga_init(parent, isa_bus); dev =3D isadev ? DEVICE(isadev) : NULL; } =20 diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c index 8ae2108e73..c9e6c61734 100644 --- a/hw/i386/pc_piix.c +++ b/hw/i386/pc_piix.c @@ -290,7 +290,7 @@ static void pc_init1(MachineState *machine, const char = *pci_type) x86_register_ferr_irq(x86ms->gsi[13]); } =20 - pc_vga_init(isa_bus, pcms->pcibus); + pc_vga_init(OBJECT(machine), isa_bus, pcms->pcibus); =20 /* init basic PC hardware */ pc_basic_device_init(pcms, isa_bus, x86ms->gsi, x86ms->rtc, diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c index 1a65811fae..62625abed8 100644 --- a/hw/i386/pc_q35.c +++ b/hw/i386/pc_q35.c @@ -325,7 +325,7 @@ static void pc_q35_init(MachineState *machine) } =20 /* the rest devices to which pci devfn is automatically assigned */ - pc_vga_init(isa_bus, pcms->pcibus); + pc_vga_init(OBJECT(machine), isa_bus, pcms->pcibus); pc_nic_init(pcmc, isa_bus, pcms->pcibus); =20 if (machine->nvdimms_state->is_enabled) { diff --git a/hw/isa/isa-bus.c b/hw/isa/isa-bus.c index c15cf53469..fb20c43869 100644 --- a/hw/isa/isa-bus.c +++ b/hw/isa/isa-bus.c @@ -200,17 +200,17 @@ ISABus *isa_bus_from_device(ISADevice *dev) return ISA_BUS(qdev_get_parent_bus(DEVICE(dev))); } =20 -ISADevice *isa_vga_init(ISABus *bus) +ISADevice *isa_vga_init(Object *parent, ISABus *bus) { vga_interface_created =3D true; switch (vga_interface_type) { case VGA_CIRRUS: - return isa_create_simple_orphan(bus, "isa-cirrus-vga"); + return isa_create_simple(parent, "vga", bus, "isa-cirrus-vga"); case VGA_QXL: error_report("%s: qxl: no PCI bus", __func__); return NULL; case VGA_STD: - return isa_create_simple_orphan(bus, "isa-vga"); + return isa_create_simple(parent, "vga", bus, "isa-vga"); case VGA_VMWARE: error_report("%s: vmware_vga: no PCI bus", __func__); return NULL; diff --git a/hw/mips/fuloong2e.c b/hw/mips/fuloong2e.c index 88d2901829..477ad99c87 100644 --- a/hw/mips/fuloong2e.c +++ b/hw/mips/fuloong2e.c @@ -201,10 +201,10 @@ static void main_cpu_reset(void *opaque) } =20 /* Network support */ -static void network_init(PCIBus *pci_bus) +static void network_init(Object *parent, PCIBus *pci_bus) { /* The Fuloong board has a RTL8139 card using PCI SLOT 7 */ - pci_init_nic_in_slot(pci_bus, "rtl8139", NULL, "07"); + pci_init_nic_in_slot(parent, pci_bus, "rtl8139", NULL, "07"); pci_init_nic_devices(pci_bus, "rtl8139"); } =20 @@ -326,7 +326,7 @@ static void mips_fuloong2e_init(MachineState *machine) smbus_eeprom_init_one(OBJECT(machine), smbus, 0x50, spd_data); =20 /* Network card: RTL8139D */ - network_init(pci_bus); + network_init(OBJECT(machine), pci_bus); } =20 static void mips_fuloong2e_machine_init(MachineClass *mc) diff --git a/hw/mips/loongson3_virt.c b/hw/mips/loongson3_virt.c index 9ab1edceb2..99d2016ef1 100644 --- a/hw/mips/loongson3_virt.c +++ b/hw/mips/loongson3_virt.c @@ -460,7 +460,7 @@ static inline void loongson3_virt_devices_init(MachineS= tate *machine, } msi_nonbroken =3D true; =20 - pci_vga_init(pci_bus); + pci_vga_init(OBJECT(machine), pci_bus); =20 if (defaults_enabled() && object_class_by_name("pci-ohci")) { USBBus *usb_bus; diff --git a/hw/mips/malta.c b/hw/mips/malta.c index ebd1456657..e8c130d5bb 100644 --- a/hw/mips/malta.c +++ b/hw/mips/malta.c @@ -602,10 +602,10 @@ static MaltaFPGAState *malta_fpga_init(Object *parent= , MemoryRegion *address_spa } =20 /* Network support */ -static void network_init(PCIBus *pci_bus) +static void network_init(Object *parent, PCIBus *pci_bus) { /* The malta board has a PCNet card using PCI SLOT 11 */ - pci_init_nic_in_slot(pci_bus, "pcnet", NULL, "0b"); + pci_init_nic_in_slot(parent, pci_bus, "pcnet", NULL, "0b"); pci_init_nic_devices(pci_bus, "pcnet"); } =20 @@ -1259,10 +1259,10 @@ void mips_malta_init(MachineState *machine) TYPE_FDC37M81X_SUPERIO); =20 /* Network card */ - network_init(pci_bus); + network_init(OBJECT(machine), pci_bus); =20 /* Optional PCI video card */ - pci_vga_init(pci_bus); + pci_vga_init(OBJECT(machine), pci_bus); } =20 static void mips_malta_instance_init(Object *obj) diff --git a/hw/pci/pci.c b/hw/pci/pci.c index 61b9f2a230..ca5882ba59 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -2083,7 +2083,7 @@ void pci_init_nic_devices(PCIBus *bus, const char *de= fault_model) "virtio", "virtio-net-pci"); } =20 -bool pci_init_nic_in_slot(PCIBus *rootbus, const char *model, +bool pci_init_nic_in_slot(Object *parent, PCIBus *rootbus, const char *mod= el, const char *alias, const char *devaddr) { NICInfo *nd =3D qemu_find_nic_info(model, true, alias); @@ -2118,26 +2118,26 @@ bool pci_init_nic_in_slot(PCIBus *rootbus, const ch= ar *model, exit(1); } =20 - pci_dev =3D pci_new_orphan(devfn, model); + pci_dev =3D pci_new(parent, "nic[*]", devfn, model); qdev_set_nic_properties(&pci_dev->qdev, nd); - pci_realize_and_unref(pci_dev, bus, &error_fatal); + qdev_realize(DEVICE(pci_dev), BUS(bus), &error_fatal); return true; } =20 -PCIDevice *pci_vga_init(PCIBus *bus) +PCIDevice *pci_vga_init(Object *parent, PCIBus *bus) { vga_interface_created =3D true; switch (vga_interface_type) { case VGA_CIRRUS: - return pci_create_simple_orphan(bus, -1, "cirrus-vga"); + return pci_create_simple(parent, "vga", bus, -1, "cirrus-vga"); case VGA_QXL: - return pci_create_simple_orphan(bus, -1, "qxl-vga"); + return pci_create_simple(parent, "vga", bus, -1, "qxl-vga"); case VGA_STD: - return pci_create_simple_orphan(bus, -1, "VGA"); + return pci_create_simple(parent, "vga", bus, -1, "VGA"); case VGA_VMWARE: - return pci_create_simple_orphan(bus, -1, "vmware-svga"); + return pci_create_simple(parent, "vga", bus, -1, "vmware-svga"); case VGA_VIRTIO: - return pci_create_simple_orphan(bus, -1, "virtio-vga"); + return pci_create_simple(parent, "vga", bus, -1, "virtio-vga"); case VGA_NONE: default: /* Other non-PCI types. Checking for unsupported types is alr= eady done in vl.c. */ diff --git a/hw/ppc/amigaone.c b/hw/ppc/amigaone.c index faf76f12be..60aed15a6e 100644 --- a/hw/ppc/amigaone.c +++ b/hw/ppc/amigaone.c @@ -370,7 +370,7 @@ static void amigaone_init(MachineState *machine) "pirq", i)); } pci_ide_create_devs(PCI_DEVICE(object_resolve_path_component(via, "ide= "))); - pci_vga_init(pci_bus); + pci_vga_init(OBJECT(machine), pci_bus); =20 if (!machine->kernel_filename) { return; diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c index e9ee44a2f1..a6af53e21a 100644 --- a/hw/ppc/mac_newworld.c +++ b/hw/ppc/mac_newworld.c @@ -435,7 +435,7 @@ static void ppc_core99_init(MachineState *machine) } } =20 - pci_vga_init(pci_bus); + pci_vga_init(OBJECT(machine), pci_bus); =20 if (!graphic_width) { graphic_width =3D 800; diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c index 6ef8207f96..f9b62a518a 100644 --- a/hw/ppc/mac_oldworld.c +++ b/hw/ppc/mac_oldworld.c @@ -267,7 +267,7 @@ static void ppc_heathrow_init(MachineState *machine) } } =20 - pci_vga_init(pci_bus); + pci_vga_init(OBJECT(machine), pci_bus); =20 pci_init_nic_devices(pci_bus, mc->default_nic); =20 diff --git a/hw/ppc/pegasos.c b/hw/ppc/pegasos.c index 6ce1e3f174..4917d8137a 100644 --- a/hw/ppc/pegasos.c +++ b/hw/ppc/pegasos.c @@ -267,7 +267,7 @@ static void pegasos_init(MachineState *machine) smbus_eeprom_init_one(OBJECT(machine), i2c_bus, 0x57, spd_data); =20 /* other PC hardware */ - pci_vga_init(pci_bus); + pci_vga_init(OBJECT(machine), pci_bus); =20 /* pci interrupt routing */ switch (pm->type) { diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c index ff85a4e64b..52f94b206a 100644 --- a/hw/ppc/prep.c +++ b/hw/ppc/prep.c @@ -357,10 +357,10 @@ static void ibm_40p_init(MachineState *machine) qdev_connect_gpio_out(dev, 0, qdev_get_gpio_in(i82378_dev, 13)); =20 /* XXX: s3-trio at PCI_DEVFN(2, 0) */ - pci_vga_init(pci_bus); + pci_vga_init(OBJECT(machine), pci_bus); =20 /* First PCNET device at PCI_DEVFN(3, 0) */ - pci_init_nic_in_slot(pci_bus, mc->default_nic, NULL, "3"); + pci_init_nic_in_slot(OBJECT(machine), pci_bus, mc->default_nic, NU= LL, "3"); pci_init_nic_devices(pci_bus, mc->default_nic); } =20 diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index fbf6c59516..9b6b5e7257 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -1909,7 +1909,7 @@ static void spapr_rtc_create(SpaprMachineState *spapr) } =20 /* Returns whether we want to use VGA or not */ -static bool spapr_vga_init(PCIBus *pci_bus, Error **errp) +static bool spapr_vga_init(Object *parent, PCIBus *pci_bus, Error **errp) { vga_interface_created =3D true; switch (vga_interface_type) { @@ -1920,7 +1920,7 @@ static bool spapr_vga_init(PCIBus *pci_bus, Error **e= rrp) case VGA_STD: case VGA_VIRTIO: case VGA_CIRRUS: - return pci_vga_init(pci_bus) !=3D NULL; + return pci_vga_init(parent, pci_bus) !=3D NULL; default: error_setg(errp, "Unsupported VGA mode, only -vga std or -vga virtio is = supported"); @@ -3066,7 +3066,7 @@ static void spapr_machine_init(MachineState *machine) } =20 /* Graphics */ - has_vga =3D spapr_vga_init(phb->bus, &error_fatal); + has_vga =3D spapr_vga_init(OBJECT(machine), phb->bus, &error_fatal); if (has_vga) { spapr->want_stdout_path =3D !machine->enable_graphics; machine->usb |=3D defaults_enabled() && !machine->usb_disabled; diff --git a/hw/riscv/boston-aia.c b/hw/riscv/boston-aia.c index 3b0eba00a7..5a9ec28068 100644 --- a/hw/riscv/boston-aia.c +++ b/hw/riscv/boston-aia.c @@ -428,7 +428,8 @@ static void boston_mach_init(MachineState *machine) ahci_ide_create_devs(&ich9->ahci, hd); =20 /* Create e1000e using slot 0 func 1 */ - pci_init_nic_in_slot(&PCI_BRIDGE(&pcie2->root)->sec_bus, "e1000e", NUL= L, + pci_init_nic_in_slot(OBJECT(machine), &PCI_BRIDGE(&pcie2->root)->sec_b= us, + "e1000e", NULL, "00.1"); pci_init_nic_devices(&PCI_BRIDGE(&pcie2->root)->sec_bus, "e1000e"); =20 diff --git a/hw/sh4/r2d.c b/hw/sh4/r2d.c index c03df91aca..6154aed2c4 100644 --- a/hw/sh4/r2d.c +++ b/hw/sh4/r2d.c @@ -315,7 +315,7 @@ static void r2d_init(MachineState *machine) 0x555, 0x2aa, 0); =20 /* NIC: rtl8139 on-board, and 2 slots. */ - pci_init_nic_in_slot(pci_bus, mc->default_nic, NULL, "2"); + pci_init_nic_in_slot(OBJECT(machine), pci_bus, mc->default_nic, NULL, = "2"); pci_init_nic_devices(pci_bus, mc->default_nic); =20 /* USB keyboard */ diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h index dbaf61bcf1..a059409243 100644 --- a/include/hw/i386/pc.h +++ b/include/hw/i386/pc.h @@ -183,7 +183,7 @@ void pc_memory_init(PCMachineState *pcms, MemoryRegion *rom_memory, uint64_t pci_hole64_size); uint64_t pc_pci_hole64_start(void); -DeviceState *pc_vga_init(ISABus *isa_bus, PCIBus *pci_bus); +DeviceState *pc_vga_init(Object *parent, ISABus *isa_bus, PCIBus *pci_bus); void pc_basic_device_init(struct PCMachineState *pcms, ISABus *isa_bus, qemu_irq *gsi, ISADevice *rtc_state, diff --git a/include/hw/isa/isa.h b/include/hw/isa/isa.h index af8e07c253..9e35d88b1e 100644 --- a/include/hw/isa/isa.h +++ b/include/hw/isa/isa.h @@ -89,7 +89,7 @@ ISADevice *isa_try_new_orphan(const char *name); bool isa_realize_and_unref(ISADevice *dev, ISABus *bus, Error **errp); ISADevice *isa_create_simple_orphan(ISABus *bus, const char *name); =20 -ISADevice *isa_vga_init(ISABus *bus); +ISADevice *isa_vga_init(Object *parent, ISABus *bus); =20 qemu_irq isa_get_irq(ISADevice *dev, unsigned isairq); void isa_connect_gpio_out(ISADevice *isadev, int gpioirq, unsigned isairq); diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h index cbbb6a3756..9c6bcc0b96 100644 --- a/include/hw/pci/pci.h +++ b/include/hw/pci/pci.h @@ -337,9 +337,9 @@ void pci_device_set_intx_routing_notifier(PCIDevice *de= v, void pci_device_reset(PCIDevice *dev); =20 void pci_init_nic_devices(PCIBus *bus, const char *default_model); -bool pci_init_nic_in_slot(PCIBus *rootbus, const char *default_model, +bool pci_init_nic_in_slot(Object *parent, PCIBus *rootbus, const char *def= ault_model, const char *alias, const char *devaddr); -PCIDevice *pci_vga_init(PCIBus *bus); +PCIDevice *pci_vga_init(Object *parent, PCIBus *bus); =20 static inline PCIBus *pci_get_bus(const PCIDevice *dev) { --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411602; cv=none; d=zohomail.com; s=zohoarc; b=RXfgkC2lsjnKo6J0Tu9lWcLgpXdHBEvXKFvJwlNZBoWs5014mHvU8yGLLVkq5vZWnPcc14ZW7Ls4LF43xWxeVxVeVW9BypadwAzD5dx4ZE+iY1p/IY/ythyyhoSWSfDslFLwuP0Kjty03puWkQstYmtogpfWozTtco/mJh2Yy0M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411602; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=plv0gjrdMYCF1rCRY9EhOrLWp8nX2WczRtjb97EGJPA=; b=gxjuHXPvGWMTnK7PPy7QxxyARyrskT1KxCF4IhuV7KPzfSpJIBnHrPms5I/g/rGhA5cdmSytb+p8nG/zaz520N3kbrkjvfLAbVNRoz7+Wh8RX0SBNqRUQtVVhpTNPEvDs3SUzr+0fhREpbtE67TziXMo8jPT1Dlxyy6PZleNai8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411602671129.0656100012426; Sat, 18 Jul 2026 14:53:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCy6-0007YD-Cz; Sat, 18 Jul 2026 17:53:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCy4-0007R1-K8; Sat, 18 Jul 2026 17:53:08 -0400 Received: from pdx-out-013.esa.us-west-2.outbound.mail-perimeter.amazon.com ([34.218.115.239]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCy1-00043a-Jn; Sat, 18 Jul 2026 17:53:08 -0400 Received: from ip-10-5-9-48.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.9.48]) by internal-pdx-out-013.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:53:02 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.234:23388] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.41.246:2525] with esmtp (Farcaster) id 995a4f38-e857-48ac-8f41-cdad6060104e; Sat, 18 Jul 2026 21:53:01 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA002.ant.amazon.com (10.250.64.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:53:01 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:52:51 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411585; x=1815947585; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=plv0gjrdMYCF1rCRY9EhOrLWp8nX2WczRtjb97EGJPA=; b=MUIVl1k5qb24DPgEMKmQ3FuT52yt7MHyvH0OhN4NlN2SNxZoWH0kVzdI GCl/OsAhoyN/gkIUvxzuRHPlQAZ+g7x8DsWcLn60D2Ah0KJyIBQnjrMYH 8TGTpfXje4jMPIRStbbJ6Xe99l+GR/war1M6+5+aWQMiOvEgW6FkemERz E+q/1YwFwsaU/giW4QYsXHQ2auWJHrCVKmKN6kbZ25FH2Gb5lguGkCh06 r+TBE5sURSzDjcYcJda3elMqJJkysn/m+uK/U7q9werV072jFwfFl53BB hxb+PuWFCT3eh5bzDFLPto7cc2+evDwPQHLd9/LPj+wCF0EjYmCS6wgKB g==; X-CSE-ConnectionGUID: qTY5uyreRv6Q5udifIyUtw== X-CSE-MsgGUID: tLC9YaEjRiuD86r8Mwbn8w== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23719160" X-Farcaster-Flow-ID: 995a4f38-e857-48ac-8f41-cdad6060104e From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 057/137] hw/arm/virt: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:32 +0000 Message-ID: <20260718213652.37673-58-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D037UWB001.ant.amazon.com (10.13.138.123) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=34.218.115.239; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-013.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.01, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411604295158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/arm/virt.c to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing SoC device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/arm/virt.c:1085 | qdev_new | OBJECT(vms) | "acpi-ged" | helper receives = VirtMachineState* board pointer hw/arm/virt.c:1123 | qdev_new | OBJECT(vms) | "its" | helper receives VirtM= achineState* board pointer hw/arm/virt.c:1140 | qdev_new | OBJECT(vms) | "gicv2m" | helper receives Vi= rtMachineState* board pointer hw/arm/virt.c:1228 | qdev_new | OBJECT(vms) | "gic" | helper receives VirtM= achineState* board pointer hw/arm/virt.c:1359 | qdev_new | OBJECT(vms) | "gic" | helper receives VirtM= achineState* board pointer; only one of gicv2/gicv3/gicv5 created hw/arm/virt.c:1415 | qdev_new | OBJECT(vms) | "gic" | helper receives VirtM= achineState* board pointer; only one of gicv2/gicv3/gicv5 created hw/arm/virt.c:1512 | qdev_new | OBJECT(vms) | "uart[*]" | helper receives V= irtMachineState*; called up to 2x -> auto-index; drop const hw/arm/virt.c:1564 | sysbus_create_simple | OBJECT(vms) | "rtc" | helper re= ceives VirtMachineState* board pointer; drop const hw/arm/virt.c:1609 | sysbus_create_simple | parent | "gpio-key" | helper la= cks parent pointer -> thread Object *parent from create_gpio_devices hw/arm/virt.c:1634 | sysbus_create_simple | parent | "gpio-pwr" | helper la= cks parent pointer -> thread Object *parent from create_gpio_devices hw/arm/virt.c:1673 | qdev_new | OBJECT(vms) | "gpio[*]" | helper receives V= irtMachineState*; called for VIRT_GPIO and VIRT_SECURE_GPIO -> auto-index; = drop const hw/arm/virt.c:1749 | sysbus_create_simple | OBJECT(vms) | "virtio-mmio[*]" = | loop over transports; drop const hw/arm/virt.c:1789 | qdev_new | OBJECT(vms) | name | collapse existing obje= ct_property_add_child(OBJECT(vms), name, ...) into qdev_new; keep existing = name; virt_flash_map1 realize -> sysbus_realize hw/arm/virt.c:2072 | qdev_new | OBJECT(vms) | "smmuv3" | helper receives Vi= rtMachineState* board pointer; drop const hw/arm/virt.c:2165 | qdev_new | OBJECT(vms) | "pcie" | helper receives Virt= MachineState* board pointer hw/arm/virt.c:2293 | qdev_new | OBJECT(vms) | "platform-bus" | helper recei= ves VirtMachineState* board pointer Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/arm/virt.c | 85 ++++++++++++++++++++++++--------------------------- 1 file changed, 40 insertions(+), 45 deletions(-) diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 1845124dc0..8bb20e692e 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -1082,11 +1082,11 @@ static inline DeviceState *create_acpi_ged(VirtMach= ineState *vms) event |=3D ACPI_GED_NVDIMM_HOTPLUG_EVT; } =20 - dev =3D qdev_new_orphan(TYPE_ACPI_GED); + dev =3D qdev_new(OBJECT(vms), "acpi-ged", TYPE_ACPI_GED); qdev_prop_set_uint32(dev, "ged-event", event); object_property_set_link(OBJECT(dev), "bus", OBJECT(vms->bus), &error_= abort); sbdev =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(sbdev, &error_fatal); + sysbus_realize(sbdev, &error_fatal); =20 sysbus_mmio_map_name(sbdev, TYPE_ACPI_GED, vms->memmap[VIRT_ACPI_GED].= base); sysbus_mmio_map_name(sbdev, ACPI_MEMHP_REGION_NAME, @@ -1120,11 +1120,11 @@ static void create_its(VirtMachineState *vms) return; } =20 - dev =3D qdev_new_orphan(its_class_name()); + dev =3D qdev_new(OBJECT(vms), "gic-its", its_class_name()); =20 object_property_set_link(OBJECT(dev), "parent-gicv3", OBJECT(vms->gic), &error_abort); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, vms->memmap[VIRT_GIC_ITS].base= ); =20 fdt_add_its_gic_node(vms); @@ -1137,10 +1137,10 @@ static void create_v2m(VirtMachineState *vms) int irq =3D vms->irqmap[VIRT_GIC_V2M]; DeviceState *dev; =20 - dev =3D qdev_new_orphan("arm-gicv2m"); + dev =3D qdev_new(OBJECT(vms), "gicv2m", "arm-gicv2m"); qdev_prop_set_uint32(dev, "base-spi", irq); qdev_prop_set_uint32(dev, "num-spi", NUM_GICV2M_SPIS); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, vms->memmap[VIRT_GIC_V2M].base= ); =20 for (i =3D 0; i < NUM_GICV2M_SPIS; i++) { @@ -1225,7 +1225,7 @@ static void create_gicv5(VirtMachineState *vms, Memor= yRegion *mem) const char *gictype =3D gicv5_class_name(); QList *cpulist =3D qlist_new(), *iaffidlist =3D qlist_new(); =20 - vms->gic =3D qdev_new_orphan(gictype); + vms->gic =3D qdev_new(OBJECT(vms), "gic", gictype); qdev_prop_set_uint32(vms->gic, "spi-range", NUM_IRQS); =20 object_property_set_link(OBJECT(vms->gic), "sysmem", OBJECT(mem), @@ -1243,7 +1243,7 @@ static void create_gicv5(VirtMachineState *vms, Memor= yRegion *mem) qdev_prop_set_array(vms->gic, "cpu-iaffids", iaffidlist); =20 gicbusdev =3D SYS_BUS_DEVICE(vms->gic); - sysbus_realize_and_unref(gicbusdev, &error_fatal); + sysbus_realize(gicbusdev, &error_fatal); =20 /* * Map the IRS config frames for the interrupt domains. @@ -1356,7 +1356,7 @@ static void create_gicv2(VirtMachineState *vms, Memor= yRegion *mem) exit(1); } =20 - vms->gic =3D qdev_new_orphan(gic_class_name()); + vms->gic =3D qdev_new(OBJECT(vms), "gic", gic_class_name()); qdev_prop_set_uint32(vms->gic, "revision", 2); qdev_prop_set_uint32(vms->gic, "num-cpu", smp_cpus); /* @@ -1370,7 +1370,7 @@ static void create_gicv2(VirtMachineState *vms, Memor= yRegion *mem) } =20 gicbusdev =3D SYS_BUS_DEVICE(vms->gic); - sysbus_realize_and_unref(gicbusdev, &error_fatal); + sysbus_realize(gicbusdev, &error_fatal); sysbus_mmio_map(gicbusdev, 0, vms->memmap[VIRT_GIC_DIST].base); sysbus_mmio_map(gicbusdev, 1, vms->memmap[VIRT_GIC_CPU].base); if (vms->virt) { @@ -1412,7 +1412,7 @@ static void create_gicv3(VirtMachineState *vms, Memor= yRegion *mem) exit(1); } =20 - vms->gic =3D qdev_new_orphan(gicv3_class_name()); + vms->gic =3D qdev_new(OBJECT(vms), "gic", gicv3_class_name()); qdev_prop_set_uint32(vms->gic, "revision", revision); qdev_prop_set_uint32(vms->gic, "num-cpu", smp_cpus); /* @@ -1454,7 +1454,7 @@ static void create_gicv3(VirtMachineState *vms, Memor= yRegion *mem) } =20 gicbusdev =3D SYS_BUS_DEVICE(vms->gic); - sysbus_realize_and_unref(gicbusdev, &error_fatal); + sysbus_realize(gicbusdev, &error_fatal); sysbus_mmio_map(gicbusdev, 0, vms->memmap[VIRT_GIC_DIST].base); sysbus_mmio_map(gicbusdev, 1, vms->memmap[VIRT_GIC_REDIST].base); if (nb_redist_regions =3D=3D 2) { @@ -1500,7 +1500,7 @@ static void create_msi_controller(VirtMachineState *v= ms) } } =20 -static void create_uart(const VirtMachineState *vms, int uart, +static void create_uart(VirtMachineState *vms, int uart, MemoryRegion *mem, Chardev *chr, bool secure) { char *nodename; @@ -1509,12 +1509,12 @@ static void create_uart(const VirtMachineState *vms= , int uart, int irq =3D vms->irqmap[uart]; const char compat[] =3D "arm,pl011\0arm,primecell"; const char clocknames[] =3D "uartclk\0apb_pclk"; - DeviceState *dev =3D qdev_new_orphan(TYPE_PL011); + DeviceState *dev =3D qdev_new(OBJECT(vms), "uart[*]", TYPE_PL011); SysBusDevice *s =3D SYS_BUS_DEVICE(dev); MachineState *ms =3D MACHINE(vms); =20 qdev_prop_set_chr(dev, "chardev", chr); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); memory_region_add_subregion(mem, base, sysbus_mmio_get_region(s, 0)); sysbus_connect_irq(s, 0, qdev_get_gpio_in(vms->gic, irq)); @@ -1552,7 +1552,7 @@ static void create_uart(const VirtMachineState *vms, = int uart, g_free(nodename); } =20 -static void create_rtc(const VirtMachineState *vms) +static void create_rtc(VirtMachineState *vms) { char *nodename; hwaddr base =3D vms->memmap[VIRT_RTC].base; @@ -1561,7 +1561,8 @@ static void create_rtc(const VirtMachineState *vms) const char compat[] =3D "arm,pl031\0arm,primecell"; MachineState *ms =3D MACHINE(vms); =20 - sysbus_create_simple_orphan("pl031", base, qdev_get_gpio_in(vms->gic, = irq)); + sysbus_create_simple(OBJECT(vms), "rtc", "pl031", base, + qdev_get_gpio_in(vms->gic, irq)); =20 nodename =3D g_strdup_printf("/pl031@%" PRIx64, base); qemu_fdt_add_subnode(ms->fdt, nodename); @@ -1603,10 +1604,10 @@ static void virt_generic_error_req(Notifier *n, voi= d *opaque) acpi_send_event(s->acpi_dev, ACPI_GENERIC_ERROR); } =20 -static void create_gpio_keys(char *fdt, DeviceState *pl061_dev, +static void create_gpio_keys(Object *parent, char *fdt, DeviceState *pl061= _dev, uint32_t phandle) { - gpio_key_dev =3D sysbus_create_simple_orphan("gpio-key", -1, + gpio_key_dev =3D sysbus_create_simple(parent, "gpio-key", "gpio-key", = -1, qdev_get_gpio_in(pl061_dev, GPIO_PIN_POWER_BU= TTON)); =20 @@ -1625,13 +1626,13 @@ static void create_gpio_keys(char *fdt, DeviceState= *pl061_dev, #define SECURE_GPIO_POWEROFF 0 #define SECURE_GPIO_RESET 1 =20 -static void create_secure_gpio_pwr(char *fdt, DeviceState *pl061_dev, - uint32_t phandle) +static void create_secure_gpio_pwr(Object *parent, char *fdt, + DeviceState *pl061_dev, uint32_t phandl= e) { DeviceState *gpio_pwr_dev; =20 /* gpio-pwr */ - gpio_pwr_dev =3D sysbus_create_simple_orphan("gpio-pwr", -1, NULL); + gpio_pwr_dev =3D sysbus_create_simple(parent, "gpio-pwr", "gpio-pwr", = -1, NULL); =20 /* connect secure pl061 to gpio-pwr */ qdev_connect_gpio_out(pl061_dev, SECURE_GPIO_RESET, @@ -1658,7 +1659,7 @@ static void create_secure_gpio_pwr(char *fdt, DeviceS= tate *pl061_dev, "okay"); } =20 -static void create_gpio_devices(const VirtMachineState *vms, int gpio, +static void create_gpio_devices(VirtMachineState *vms, int gpio, MemoryRegion *mem) { char *nodename; @@ -1670,12 +1671,12 @@ static void create_gpio_devices(const VirtMachineSt= ate *vms, int gpio, SysBusDevice *s; MachineState *ms =3D MACHINE(vms); =20 - pl061_dev =3D qdev_new_orphan("pl061"); + pl061_dev =3D qdev_new(OBJECT(vms), "gpio[*]", "pl061"); /* Pull lines down to 0 if not driven by the PL061 */ qdev_prop_set_uint8(pl061_dev, "pullups", 0); qdev_prop_set_uint8(pl061_dev, "pulldowns", 0xff); s =3D SYS_BUS_DEVICE(pl061_dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); memory_region_add_subregion(mem, base, sysbus_mmio_get_region(s, 0)); sysbus_connect_irq(s, 0, qdev_get_gpio_in(vms->gic, irq)); =20 @@ -1703,13 +1704,13 @@ static void create_gpio_devices(const VirtMachineSt= ate *vms, int gpio, =20 /* Child gpio devices */ if (gpio =3D=3D VIRT_GPIO) { - create_gpio_keys(ms->fdt, pl061_dev, phandle); + create_gpio_keys(OBJECT(vms), ms->fdt, pl061_dev, phandle); } else { - create_secure_gpio_pwr(ms->fdt, pl061_dev, phandle); + create_secure_gpio_pwr(OBJECT(vms), ms->fdt, pl061_dev, phandle); } } =20 -static void create_virtio_devices(const VirtMachineState *vms) +static void create_virtio_devices(VirtMachineState *vms) { int i; hwaddr size =3D vms->memmap[VIRT_MMIO].size; @@ -1746,8 +1747,8 @@ static void create_virtio_devices(const VirtMachineSt= ate *vms) int irq =3D vms->irqmap[VIRT_MMIO] + i; hwaddr base =3D vms->memmap[VIRT_MMIO].base + i * size; =20 - sysbus_create_simple_orphan("virtio-mmio", base, - qdev_get_gpio_in(vms->gic, irq)); + sysbus_create_simple(OBJECT(vms), "virtio-mmio[*]", "virtio-mmio", + base, qdev_get_gpio_in(vms->gic, irq)); } =20 /* We add dtb nodes in reverse order so that they appear in the finish= ed @@ -1786,7 +1787,7 @@ static PFlashCFI01 *virt_flash_create1(VirtMachineSta= te *vms, * Create a single flash device. We use the same parameters as * the flash devices on the Versatile Express board. */ - DeviceState *dev =3D qdev_new_orphan(TYPE_PFLASH_CFI01); + DeviceState *dev =3D qdev_new(OBJECT(vms), name, TYPE_PFLASH_CFI01); =20 qdev_prop_set_uint64(dev, "sector-length", VIRT_FLASH_SECTOR_SIZE); qdev_prop_set_uint8(dev, "width", 4); @@ -1797,7 +1798,6 @@ static PFlashCFI01 *virt_flash_create1(VirtMachineSta= te *vms, qdev_prop_set_uint16(dev, "id2", 0x00); qdev_prop_set_uint16(dev, "id3", 0x00); qdev_prop_set_string(dev, "name", name); - object_property_add_child(OBJECT(vms), name, OBJECT(dev)); object_property_add_alias(OBJECT(vms), alias_prop_name, OBJECT(dev), "drive"); return PFLASH_CFI01(dev); @@ -1818,7 +1818,7 @@ static void virt_flash_map1(PFlashCFI01 *flash, assert(QEMU_IS_ALIGNED(size, VIRT_FLASH_SECTOR_SIZE)); assert(size / VIRT_FLASH_SECTOR_SIZE <=3D UINT32_MAX); qdev_prop_set_uint32(dev, "num-blocks", size / VIRT_FLASH_SECTOR_SIZE); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 memory_region_add_subregion(sysmem, base, sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), @@ -2056,7 +2056,7 @@ static void create_smmuv3_dev_dtb(VirtMachineState *v= ms, DeviceState *dev, 0x0, vms->iommu_phandle, 0x0, 0x10000); } =20 -static void create_smmu(const VirtMachineState *vms, PCIBus *bus) +static void create_smmu(VirtMachineState *vms, PCIBus *bus) { VirtMachineClass *vmc =3D VIRT_MACHINE_GET_CLASS(vms); int irq =3D vms->irqmap[VIRT_SMMU]; @@ -2069,7 +2069,7 @@ static void create_smmu(const VirtMachineState *vms, = PCIBus *bus) return; } =20 - dev =3D qdev_new_orphan(TYPE_ARM_SMMUV3); + dev =3D qdev_new(OBJECT(vms), "smmuv3", TYPE_ARM_SMMUV3); =20 if (!vmc->no_nested_smmu) { object_property_set_str(OBJECT(dev), "stage", "nested", &error_fat= al); @@ -2080,7 +2080,7 @@ static void create_smmu(const VirtMachineState *vms, = PCIBus *bus) &error_abort); object_property_set_link(OBJECT(dev), "secure-memory", OBJECT(vms->sec= ure_sysmem), &error_abort); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, base); for (i =3D 0; i < NUM_SMMU_IRQS; i++) { sysbus_connect_irq(SYS_BUS_DEVICE(dev), i, @@ -2162,8 +2162,8 @@ static void create_pcie(VirtMachineState *vms) MachineState *ms =3D MACHINE(vms); MachineClass *mc =3D MACHINE_GET_CLASS(ms); =20 - dev =3D qdev_new_orphan(TYPE_GPEX_HOST); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + dev =3D qdev_new(OBJECT(vms), "pcie", TYPE_GPEX_HOST); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 ecam_id =3D VIRT_ECAM_ID(vms->highmem_ecam); base_ecam =3D vms->memmap[ecam_id].base; @@ -2290,11 +2290,11 @@ static void create_platform_bus(VirtMachineState *v= ms) int i; MemoryRegion *sysmem =3D get_system_memory(); =20 - dev =3D qdev_new_orphan(TYPE_PLATFORM_BUS_DEVICE); + dev =3D qdev_new(OBJECT(vms), "platform-bus", TYPE_PLATFORM_BUS_DEVICE= ); dev->id =3D g_strdup(TYPE_PLATFORM_BUS_DEVICE); qdev_prop_set_uint32(dev, "num_irqs", PLATFORM_BUS_NUM_IRQS); qdev_prop_set_uint32(dev, "mmio_size", vms->memmap[VIRT_PLATFORM_BUS].= size); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); vms->platform_bus_dev =3D dev; =20 s =3D SYS_BUS_DEVICE(dev); @@ -4410,11 +4410,6 @@ static void virt_instance_finalize(Object *obj) { VirtMachineState *vms =3D VIRT_MACHINE(obj); =20 - for (int i =3D 0; i < ARRAY_SIZE(vms->flash); i++) { - if (vms->flash[i] && !qdev_is_realized(DEVICE(vms->flash[i]))) { - object_unref(OBJECT(vms->flash[i])); - } - } g_free(vms->oem_id); g_free(vms->oem_table_id); g_ptr_array_free(vms->smmuv3_devices, TRUE); --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411611; cv=none; d=zohomail.com; s=zohoarc; b=fzss1I4Ppa6cGTeuXMxBdVZtN3wJr5jc6Kk4AJlhXtuUId2jbanHvAu1EVooIP+2GKu88CPs68XJjXHbY23NPE/Iwlg0h5QIzt5hRMN9MLht1+RBOfwlMZ40PfD/4MEDzeF6JOrtMCUxfnEHLBxcifUvHZy38juEoPxr3hF38v8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411611; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=YSVHDbm9pGvbCq3x/ZXvqfLKh29t19oRcnpwNquQT6A=; b=RFWgV3hB4V6NfrV46QOJNq/KQsoaweWIsQ1XfMRy0wdfnrmsBjbQ8ed5NuB31BIwVld5B4DhSZW2Fl+ENWGQTWGrCcW8zd58t7nQxksUiNKjDQdoLCP0vApCk/cS/XI6cVM+w5Hz+lsSGat8zFH2YGRufHC70ddoLAFalT5n7LM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178441161182598.21728502726921; Sat, 18 Jul 2026 14:53:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCyG-00087P-QC; Sat, 18 Jul 2026 17:53:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCyE-0007x7-Rs; Sat, 18 Jul 2026 17:53:19 -0400 Received: from pdx-out-014.esa.us-west-2.outbound.mail-perimeter.amazon.com ([35.83.148.184]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCyC-00044j-6n; Sat, 18 Jul 2026 17:53:18 -0400 Received: from ip-10-5-9-48.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.9.48]) by internal-pdx-out-014.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:53:12 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.51:3631] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.41.246:2525] with esmtp (Farcaster) id a5f6152f-118b-4567-b840-9e8dd8250b94; Sat, 18 Jul 2026 21:53:11 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB001.ant.amazon.com (10.250.64.248) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:53:11 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:53:01 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411596; x=1815947596; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=YSVHDbm9pGvbCq3x/ZXvqfLKh29t19oRcnpwNquQT6A=; b=nXTgfN42HiCYERHHOP5K/zgNinUU8+CWn6nyWdPye24UioLNdDHPmrLV kpSCdXo1zFnFPo29UxEohozDtmFwfiIenEZdc39kRd8uv9h0UXBlBNtdU XE3xp1aphdLaqQj5UUFetjnq7Bbr1SpAgoH7q38Dz5L3w1bxyQV2kLiSM uN506CyAZ6AwN+WSerjbV1qk1z/vuFyMKbpHaistT6MAkl37AvKHjKXZF RkSCl+TKfmzV+cGikn4264xbDnk29BvVGw5QmfC5zjBRUwddLqV3Q1bG/ RrECpT29VsX2smEXjE7gfbKg3ZT++K7zYI/Qsnp9SGyAZwS0se0KUQO19 A==; X-CSE-ConnectionGUID: ayOEKACyR3yKaT/udj9Bwg== X-CSE-MsgGUID: YUOt02SxRLWi6XuleHhHYg== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23712484" X-Farcaster-Flow-ID: a5f6152f-118b-4567-b840-9e8dd8250b94 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 058/137] hw/arm/sbsa-ref: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:33 +0000 Message-ID: <20260718213652.37673-59-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D037UWB001.ant.amazon.com (10.13.138.123) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=35.83.148.184; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-014.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411614177158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in the hw/arm sbsa-ref board files to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing SoC device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/arm/sbsa-ref.c:299 | qdev_new | OBJECT(sms) | name | collapse existing o= bject_property_add_child(OBJECT(sms), name, ...); keep existing name; sbsa_= flash_map1 realize -> sysbus_realize hw/arm/sbsa-ref.c:424 | qdev_new | OBJECT(sms) | "its" | helper receives SB= SAMachineState* board pointer hw/arm/sbsa-ref.c:443 | qdev_new | OBJECT(sms) | "gic" | helper receives SB= SAMachineState* board pointer hw/arm/sbsa-ref.c:525 | qdev_new | OBJECT(sms) | "uart[*]" | helper called = 3x from board init -> auto-index; drop const hw/arm/sbsa-ref.c:540 | sysbus_create_simple | OBJECT(sms) | "rtc" | helper= receives SBSAMachineState*; drop const hw/arm/sbsa-ref.c:547 | qdev_new | OBJECT(sms) | "wdt" | helper receives SB= SAMachineState*; drop const hw/arm/sbsa-ref.c:575 | sysbus_create_simple | OBJECT(sms) | "gpio" | helpe= r receives SBSAMachineState*; drop const hw/arm/sbsa-ref.c:578 | sysbus_create_simple | OBJECT(sms) | "gpio-key" | h= elper receives SBSAMachineState* hw/arm/sbsa-ref.c:593 | qdev_new | OBJECT(sms) | "ahci" | helper receives S= BSAMachineState*; drop const hw/arm/sbsa-ref.c:608 | qdev_new | OBJECT(sms) | "xhci" | helper receives S= BSAMachineState*; drop const hw/arm/sbsa-ref.c:625 | qdev_new | OBJECT(sms) | "smmuv3" | helper receives= SBSAMachineState*; drop const hw/arm/sbsa-ref.c:661 | qdev_new | OBJECT(sms) | "pcie" | helper receives S= BSAMachineState* hw/arm/sbsa-ref.c:698 | pci_create_simple | OBJECT(sms) | "bochs-display" |= board owns lifetime; bus is plug location not parent hw/arm/sbsa-ref.c:715 | qdev_new | parent | "sbsa-ec" | helper lacks parent= -capable pointer -> thread Object *parent from sbsa_ref_init Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/arm/sbsa-ref.c | 82 +++++++++++++++++++++-------------------------- 1 file changed, 36 insertions(+), 46 deletions(-) diff --git a/hw/arm/sbsa-ref.c b/hw/arm/sbsa-ref.c index f9fb681d31..bb35de1616 100644 --- a/hw/arm/sbsa-ref.c +++ b/hw/arm/sbsa-ref.c @@ -296,7 +296,7 @@ static PFlashCFI01 *sbsa_flash_create1(SBSAMachineState= *sms, * Create a single flash device. We use the same parameters as * the flash devices on the Versatile Express board. */ - DeviceState *dev =3D qdev_new_orphan(TYPE_PFLASH_CFI01); + DeviceState *dev =3D qdev_new(OBJECT(sms), name, TYPE_PFLASH_CFI01); =20 qdev_prop_set_uint64(dev, "sector-length", SBSA_FLASH_SECTOR_SIZE); qdev_prop_set_uint8(dev, "width", 4); @@ -307,7 +307,6 @@ static PFlashCFI01 *sbsa_flash_create1(SBSAMachineState= *sms, qdev_prop_set_uint16(dev, "id2", 0x00); qdev_prop_set_uint16(dev, "id3", 0x00); qdev_prop_set_string(dev, "name", name); - object_property_add_child(OBJECT(sms), name, OBJECT(dev)); object_property_add_alias(OBJECT(sms), alias_prop_name, OBJECT(dev), "drive"); return PFLASH_CFI01(dev); @@ -328,7 +327,7 @@ static void sbsa_flash_map1(PFlashCFI01 *flash, assert(QEMU_IS_ALIGNED(size, SBSA_FLASH_SECTOR_SIZE)); assert(size / SBSA_FLASH_SECTOR_SIZE <=3D UINT32_MAX); qdev_prop_set_uint32(dev, "num-blocks", size / SBSA_FLASH_SECTOR_SIZE); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 memory_region_add_subregion(sysmem, base, sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), @@ -421,11 +420,11 @@ static void create_its(SBSAMachineState *sms) const char *itsclass =3D its_class_name(); DeviceState *dev; =20 - dev =3D qdev_new_orphan(itsclass); + dev =3D qdev_new(OBJECT(sms), "its", itsclass); =20 object_property_set_link(OBJECT(dev), "parent-gicv3", OBJECT(sms->gic), &error_abort); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, sbsa_ref_memmap[SBSA_GIC_ITS].= base); } =20 @@ -440,7 +439,7 @@ static void create_gic(SBSAMachineState *sms, MemoryReg= ion *mem) =20 gictype =3D gicv3_class_name(); =20 - sms->gic =3D qdev_new_orphan(gictype); + sms->gic =3D qdev_new(OBJECT(sms), "gic", gictype); qdev_prop_set_uint32(sms->gic, "revision", 3); qdev_prop_set_uint32(sms->gic, "num-cpu", smp_cpus); /* @@ -463,7 +462,7 @@ static void create_gic(SBSAMachineState *sms, MemoryReg= ion *mem) qdev_prop_set_bit(sms->gic, "has-lpi", true); =20 gicbusdev =3D SYS_BUS_DEVICE(sms->gic); - sysbus_realize_and_unref(gicbusdev, &error_fatal); + sysbus_realize(gicbusdev, &error_fatal); sysbus_mmio_map(gicbusdev, 0, sbsa_ref_memmap[SBSA_GIC_DIST].base); sysbus_mmio_map(gicbusdev, 1, sbsa_ref_memmap[SBSA_GIC_REDIST].base); =20 @@ -517,39 +516,40 @@ static void create_gic(SBSAMachineState *sms, MemoryR= egion *mem) create_its(sms); } =20 -static void create_uart(const SBSAMachineState *sms, int uart, +static void create_uart(SBSAMachineState *sms, int uart, MemoryRegion *mem, Chardev *chr) { hwaddr base =3D sbsa_ref_memmap[uart].base; int irq =3D sbsa_ref_irqmap[uart]; - DeviceState *dev =3D qdev_new_orphan(TYPE_PL011); + DeviceState *dev =3D qdev_new(OBJECT(sms), "uart[*]", TYPE_PL011); SysBusDevice *s =3D SYS_BUS_DEVICE(dev); =20 qdev_prop_set_chr(dev, "chardev", chr); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); memory_region_add_subregion(mem, base, sysbus_mmio_get_region(s, 0)); sysbus_connect_irq(s, 0, qdev_get_gpio_in(sms->gic, irq)); } =20 -static void create_rtc(const SBSAMachineState *sms) +static void create_rtc(SBSAMachineState *sms) { hwaddr base =3D sbsa_ref_memmap[SBSA_RTC].base; int irq =3D sbsa_ref_irqmap[SBSA_RTC]; =20 - sysbus_create_simple_orphan("pl031", base, qdev_get_gpio_in(sms->gic, = irq)); + sysbus_create_simple(OBJECT(sms), "rtc", "pl031", base, + qdev_get_gpio_in(sms->gic, irq)); } =20 -static void create_wdt(const SBSAMachineState *sms) +static void create_wdt(SBSAMachineState *sms) { hwaddr rbase =3D sbsa_ref_memmap[SBSA_GWDT_REFRESH].base; hwaddr cbase =3D sbsa_ref_memmap[SBSA_GWDT_CONTROL].base; - DeviceState *dev =3D qdev_new_orphan(TYPE_WDT_SBSA); + DeviceState *dev =3D qdev_new(OBJECT(sms), "wdt", TYPE_WDT_SBSA); SysBusDevice *s =3D SYS_BUS_DEVICE(dev); int irq =3D sbsa_ref_irqmap[SBSA_GWDT_WS0]; =20 qdev_prop_set_uint64(dev, "clock-frequency", SBSA_GTIMER_HZ); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); sysbus_mmio_map(s, 0, rbase); sysbus_mmio_map(s, 1, cbase); sysbus_connect_irq(s, 0, qdev_get_gpio_in(sms->gic, irq)); @@ -566,23 +566,23 @@ static Notifier sbsa_ref_powerdown_notifier =3D { .notify =3D sbsa_ref_powerdown_req }; =20 -static void create_gpio(const SBSAMachineState *sms) +static void create_gpio(SBSAMachineState *sms) { DeviceState *pl061_dev; hwaddr base =3D sbsa_ref_memmap[SBSA_GPIO].base; int irq =3D sbsa_ref_irqmap[SBSA_GPIO]; =20 - pl061_dev =3D sysbus_create_simple_orphan("pl061", base, + pl061_dev =3D sysbus_create_simple(OBJECT(sms), "gpio", "pl061", base, qdev_get_gpio_in(sms->gic, irq)); =20 - gpio_key_dev =3D sysbus_create_simple_orphan("gpio-key", -1, - qdev_get_gpio_in(pl061_dev, 3)); + gpio_key_dev =3D sysbus_create_simple(OBJECT(sms), "gpio-key", "gpio-k= ey", + -1, qdev_get_gpio_in(pl061_dev, 3)= ); =20 /* connect powerdown request */ qemu_register_powerdown_notifier(&sbsa_ref_powerdown_notifier); } =20 -static void create_ahci(const SBSAMachineState *sms) +static void create_ahci(SBSAMachineState *sms) { hwaddr base =3D sbsa_ref_memmap[SBSA_AHCI].base; int irq =3D sbsa_ref_irqmap[SBSA_AHCI]; @@ -590,9 +590,9 @@ static void create_ahci(const SBSAMachineState *sms) DriveInfo *hd[NUM_SATA_PORTS]; SysbusAHCIState *sysahci; =20 - dev =3D qdev_new_orphan("sysbus-ahci"); + dev =3D qdev_new(OBJECT(sms), "ahci", "sysbus-ahci"); qdev_prop_set_uint32(dev, "num-ports", NUM_SATA_PORTS); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, base); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, qdev_get_gpio_in(sms->gic, = irq)); =20 @@ -601,19 +601,19 @@ static void create_ahci(const SBSAMachineState *sms) ahci_ide_create_devs(&sysahci->ahci, hd); } =20 -static void create_xhci(const SBSAMachineState *sms) +static void create_xhci(SBSAMachineState *sms) { hwaddr base =3D sbsa_ref_memmap[SBSA_XHCI].base; int irq =3D sbsa_ref_irqmap[SBSA_XHCI]; - DeviceState *dev =3D qdev_new_orphan(TYPE_XHCI_SYSBUS); + DeviceState *dev =3D qdev_new(OBJECT(sms), "xhci", TYPE_XHCI_SYSBUS); qdev_prop_set_uint32(dev, "slots", XHCI_MAXSLOTS); =20 - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, base); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, qdev_get_gpio_in(sms->gic, = irq)); } =20 -static void create_smmu(const SBSAMachineState *sms, PCIBus *bus, +static void create_smmu(SBSAMachineState *sms, PCIBus *bus, MemoryRegion *sysmem, MemoryRegion *secure_sysmem) { @@ -622,7 +622,7 @@ static void create_smmu(const SBSAMachineState *sms, PC= IBus *bus, DeviceState *dev; int i; =20 - dev =3D qdev_new_orphan(TYPE_ARM_SMMUV3); + dev =3D qdev_new(OBJECT(sms), "smmuv3", TYPE_ARM_SMMUV3); =20 object_property_set_str(OBJECT(dev), "stage", "nested", &error_abort); object_property_set_link(OBJECT(dev), "primary-bus", OBJECT(bus), @@ -631,7 +631,7 @@ static void create_smmu(const SBSAMachineState *sms, PC= IBus *bus, &error_abort); object_property_set_link(OBJECT(dev), "secure-memory", OBJECT(secure_s= ysmem), &error_abort); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, base); for (i =3D 0; i < NUM_SMMU_IRQS; i++) { sysbus_connect_irq(SYS_BUS_DEVICE(dev), i, @@ -658,8 +658,8 @@ static void create_pcie(SBSAMachineState *sms, PCIHostState *pci; int i; =20 - dev =3D qdev_new_orphan(TYPE_GPEX_HOST); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + dev =3D qdev_new(OBJECT(sms), "pcie", TYPE_GPEX_HOST); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 /* Map ECAM space */ ecam_alias =3D g_new0(MemoryRegion, 1); @@ -695,7 +695,7 @@ static void create_pcie(SBSAMachineState *sms, =20 pci_init_nic_devices(pci->bus, mc->default_nic); =20 - pci_create_simple_orphan(pci->bus, -1, "bochs-display"); + pci_create_simple(OBJECT(sms), "bochs-display", pci->bus, -1, "bochs-d= isplay"); =20 create_smmu(sms, pci->bus, sysmem, secure_sysmem); } @@ -709,12 +709,14 @@ static void *sbsa_ref_dtb(const struct arm_boot_info = *binfo, int *fdt_size) return board->fdt; } =20 -static void create_secure_ec(MemoryRegion *mem) +static void create_secure_ec(Object *parent, MemoryRegion *mem) { hwaddr base =3D sbsa_ref_memmap[SBSA_SECURE_EC].base; - DeviceState *dev =3D qdev_new_orphan("sbsa-ec"); + DeviceState *dev =3D qdev_new(parent, "sbsa-ec", "sbsa-ec"); SysBusDevice *s =3D SYS_BUS_DEVICE(dev); =20 + sysbus_realize(s, &error_fatal); + memory_region_add_subregion(mem, base, sysbus_mmio_get_region(s, 0)); } @@ -835,7 +837,7 @@ static void sbsa_ref_init(MachineState *machine) =20 create_pcie(sms, sysmem, secure_sysmem); =20 - create_secure_ec(secure_sysmem); + create_secure_ec(OBJECT(sms), secure_sysmem); =20 sms->bootinfo.ram_size =3D machine->ram_size; sms->bootinfo.board_id =3D -1; @@ -892,17 +894,6 @@ static void sbsa_ref_instance_init(Object *obj) sbsa_flash_create(sms); } =20 -static void sbsa_ref_instance_finalize(Object *obj) -{ - SBSAMachineState *sms =3D SBSA_MACHINE(obj); - - for (int i =3D 0; i < ARRAY_SIZE(sms->flash); i++) { - if (sms->flash[i] && !qdev_is_realized(DEVICE(sms->flash[i]))) { - object_unref(OBJECT(sms->flash[i])); - } - } -} - static void sbsa_ref_class_init(ObjectClass *oc, const void *data) { MachineClass *mc =3D MACHINE_CLASS(oc); @@ -941,7 +932,6 @@ static const TypeInfo sbsa_ref_info =3D { .name =3D TYPE_SBSA_MACHINE, .parent =3D TYPE_MACHINE, .instance_init =3D sbsa_ref_instance_init, - .instance_finalize =3D sbsa_ref_instance_finalize, .class_init =3D sbsa_ref_class_init, .instance_size =3D sizeof(SBSAMachineState), .interfaces =3D aarch64_machine_interfaces, --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411611; cv=none; d=zohomail.com; s=zohoarc; b=l6BQKVLIDzVMC5X9Sh/yD+roABN4zONOZw+GNzKdXR03/hrCnQJT3sUxZpb1m1nUJy7rHRVZFvl/OTOXNGZg1m3RRBc66bRGjk8IDyR818TBaCvb1MUT1vJ0aOizpgRquuOURaIWcu+TVQ4jdEThV+QK6xriHWKMFLiLqgOvkwg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411611; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=4YQdQnrp7xnjDNq4HBV3zaDNvDKiBrkcsaDcDukGNdU=; b=EK9dbv6+jtHU66sv9zYL5AI8gsBcAfT23nesoPz6R1SgjxGrZHBDkOvZT7RkO9IWcutnB97Q7sRBFP6yOE1Qc00xHcADBIO6nIqgzQB4DB5RCulYHg/+XJhh+dz7r20f3E62FcBxYqG3AsbLiYePcjNC7CRrMkX8w3EVNqEiaqU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411611817652.1184300744751; Sat, 18 Jul 2026 14:53:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCyP-0000AA-3e; Sat, 18 Jul 2026 17:53:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCyO-00006C-3Z; Sat, 18 Jul 2026 17:53:28 -0400 Received: from pdx-out-006.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.26.1.71]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCyL-00045o-H4; Sat, 18 Jul 2026 17:53:27 -0400 Received: from ip-10-5-9-48.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.9.48]) by internal-pdx-out-006.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:53:21 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.51:29904] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.30.230:2525] with esmtp (Farcaster) id 7b924b66-ad96-4acc-ad9f-01d82394975f; Sat, 18 Jul 2026 21:53:20 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC002.ant.amazon.com (10.250.64.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:53:20 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:53:11 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411605; x=1815947605; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=4YQdQnrp7xnjDNq4HBV3zaDNvDKiBrkcsaDcDukGNdU=; b=G5fbgxuQ0nZ9MhIFdPMtxkOCGwHvuqGkd/KXpthIKyBmgilNNfzIUo4I VcX8tJ/RNBkBxY2vQxFt+d6Skb62nLymuZa+eDryDUNSxytbsoE0m7fCM MZ+jvqYGqU5fszFiodLW5eQjKzTPE2fXDSDdw42YB+iF4xKUfV4X522O1 I1Pbx5A4/4Kreje4m6KHVB4x/0n9JYFWja/UGUHvoQpWeL02DiQMnaSYN NUK0mt7hwtcQlWh2Xn4LjKXcBED4hWWCHgUHSts9q+bphyAdUI5vDnjfq U9nbCIBLudumb56rq0UGPlDBuJHudRRQOYI/cNsveV5tf3pUTNX8kwyL0 g==; X-CSE-ConnectionGUID: p5Jti7seRmi5VXx89N2SZg== X-CSE-MsgGUID: /oJwLT1+T4OVc7QUlh9dcw== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23944219" X-Farcaster-Flow-ID: 7b924b66-ad96-4acc-ad9f-01d82394975f From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 059/137] hw/arm/xilinx-zynq: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:34 +0000 Message-ID: <20260718213652.37673-60-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D037UWB001.ant.amazon.com (10.13.138.123) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.26.1.71; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-006.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411613956158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in the hw/arm xilinx-zynq board files to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing SoC device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/arm/xilinx_zynq.c:113 | qdev_new | parent | "gem[*]" | thread Object *pa= rent into gem_init(); board init callers pass OBJECT(machine); sysbus_reali= ze hw/arm/xilinx_zynq.c:134 | qdev_new | parent | is_qspi?"qspi":"spi[*]" | th= read Object *parent into zynq_init_spi_flashes(); sysbus_realize hw/arm/xilinx_zynq.c:155 | qdev_new | OBJECT(dev) | "flash[*]" | flash owne= d by SPI controller; qdev_realize hw/arm/xilinx_zynq.c:198 | qdev_new | parent | "ddr-ctrl" | thread Object *= parent into ddr_ctrl_init(); sysbus_realize hw/arm/xilinx_zynq.c:259 | qdev_new | OBJECT(machine) | "slcr" | board init= ; sysbus_realize hw/arm/xilinx_zynq.c:265 | qdev_new | OBJECT(machine) | "a9mpcore" | board = init; sysbus_realize hw/arm/xilinx_zynq.c:272 | sysbus_create_varargs | OBJECT(machine) | "l2x0"= | board init; create_simple realizes internally hw/arm/xilinx_zynq.c:290 | sysbus_create_simple | OBJECT(machine) | "usb[*]= " | board init; two ChipIdea USB controllers hw/arm/xilinx_zynq.c:291 | sysbus_create_simple | OBJECT(machine) | "usb[*]= " | board init hw/arm/xilinx_zynq.c:293 | qdev_new | OBJECT(machine) | "uart[*]" | board i= nit; sysbus_realize hw/arm/xilinx_zynq.c:301 | qdev_new | OBJECT(machine) | "uart[*]" | board i= nit; sysbus_realize hw/arm/xilinx_zynq.c:310 | sysbus_create_varargs | OBJECT(machine) | "ttc[*= ]" | board init; two Cadence TTCs hw/arm/xilinx_zynq.c:312 | sysbus_create_varargs | OBJECT(machine) | "ttc[*= ]" | board init hw/arm/xilinx_zynq.c:332 | qdev_new | OBJECT(machine) | "sdhci[*]" | board = init loop; sysbus_realize hw/arm/xilinx_zynq.c:341 | qdev_new | OBJECT(dev) | "sd-card" | card owned = by its SDHCI controller; qdev_realize hw/arm/xilinx_zynq.c:347 | qdev_new | OBJECT(machine) | "xadc" | board init= ; sysbus_realize hw/arm/xilinx_zynq.c:352 | qdev_new | OBJECT(machine) | "dma" | board init = pl330 DMA; sysbus_realize hw/arm/xilinx_zynq.c:375 | qdev_new | OBJECT(machine) | "devcfg" | board in= it; sysbus_realize Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/arm/xilinx_zynq.c | 92 ++++++++++++++++++++++++-------------------- 1 file changed, 50 insertions(+), 42 deletions(-) diff --git a/hw/arm/xilinx_zynq.c b/hw/arm/xilinx_zynq.c index ba00c5a3aa..378ab532a3 100644 --- a/hw/arm/xilinx_zynq.c +++ b/hw/arm/xilinx_zynq.c @@ -105,22 +105,23 @@ static void zynq_write_board_setup(ARMCPU *cpu, =20 static struct arm_boot_info zynq_binfo =3D {}; =20 -static void gem_init(uint32_t base, qemu_irq irq) +static void gem_init(Object *parent, uint32_t base, qemu_irq irq) { DeviceState *dev; SysBusDevice *s; =20 - dev =3D qdev_new_orphan(TYPE_CADENCE_GEM); + dev =3D qdev_new(parent, "gem[*]", TYPE_CADENCE_GEM); qemu_configure_nic_device(dev, true, NULL); object_property_set_int(OBJECT(dev), "phy-addr", 7, &error_abort); s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); sysbus_mmio_map(s, 0, base); sysbus_connect_irq(s, 0, irq); } =20 -static inline int zynq_init_spi_flashes(uint32_t base_addr, qemu_irq irq, - bool is_qspi, int unit0) +static inline int zynq_init_spi_flashes(Object *parent, uint32_t base_addr, + qemu_irq irq, bool is_qspi, + int unit0) { int unit =3D unit0; DeviceState *dev; @@ -131,12 +132,13 @@ static inline int zynq_init_spi_flashes(uint32_t base= _addr, qemu_irq irq, int num_busses =3D is_qspi ? NUM_QSPI_BUSSES : 1; int num_ss =3D is_qspi ? NUM_QSPI_FLASHES : NUM_SPI_FLASHES; =20 - dev =3D qdev_new_orphan(is_qspi ? "xlnx.ps7-qspi" : "xlnx.ps7-spi"); + dev =3D qdev_new(parent, is_qspi ? "qspi" : "spi[*]", + is_qspi ? "xlnx.ps7-qspi" : "xlnx.ps7-spi"); qdev_prop_set_uint8(dev, "num-txrx-bytes", is_qspi ? 4 : 1); qdev_prop_set_uint8(dev, "num-ss-bits", num_ss); qdev_prop_set_uint8(dev, "num-busses", num_busses); busdev =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(busdev, &error_fatal); + sysbus_realize(busdev, &error_fatal); sysbus_mmio_map(busdev, 0, base_addr); if (is_qspi) { sysbus_mmio_map(busdev, 1, 0xFC000000); @@ -152,14 +154,14 @@ static inline int zynq_init_spi_flashes(uint32_t base= _addr, qemu_irq irq, =20 for (j =3D 0; j < num_ss; ++j) { DriveInfo *dinfo =3D drive_get(IF_MTD, 0, unit++); - flash_dev =3D qdev_new_orphan("n25q128"); + flash_dev =3D qdev_new(OBJECT(dev), "flash[*]", "n25q128"); if (dinfo) { qdev_prop_set_drive_err(flash_dev, "drive", blk_by_legacy_dinfo(dinfo), &error_fatal); } qdev_prop_set_uint8(flash_dev, "cs", j); - qdev_realize_and_unref(flash_dev, BUS(spi), &error_fatal); + qdev_realize(flash_dev, BUS(spi), &error_fatal); =20 cs_line =3D qdev_get_gpio_in_named(flash_dev, SSI_GPIO_CS, 0); sysbus_connect_irq(busdev, i * num_ss + j + 1, cs_line); @@ -190,14 +192,14 @@ static void zynq_set_boot_mode(Object *obj, const cha= r *str, m->boot_mode =3D mode; } =20 -static void ddr_ctrl_init(uint32_t base) +static void ddr_ctrl_init(Object *parent, uint32_t base) { DeviceState *dev; SysBusDevice *busdev; =20 - dev =3D qdev_new_orphan("zynq.ddr-ctlr"); + dev =3D qdev_new(parent, "ddr-ctrl", "zynq.ddr-ctlr"); busdev =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(busdev, &error_fatal); + sysbus_realize(busdev, &error_fatal); sysbus_mmio_map(busdev, 0, base); } =20 @@ -256,20 +258,21 @@ static void zynq_init(MachineState *machine) clock_set_hz(zynq_machine->ps_clk, PS_CLK_FREQUENCY); =20 /* Create slcr, keep a pointer to connect clocks */ - slcr =3D qdev_new_orphan("xilinx-zynq_slcr"); + slcr =3D qdev_new(OBJECT(machine), "slcr", "xilinx-zynq_slcr"); qdev_connect_clock_in(slcr, "ps_clk", zynq_machine->ps_clk); qdev_prop_set_uint8(slcr, "boot-mode", zynq_machine->boot_mode); - sysbus_realize_and_unref(SYS_BUS_DEVICE(slcr), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(slcr), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(slcr), 0, 0xF8000000); =20 - dev =3D qdev_new_orphan(TYPE_A9MPCORE_PRIV); + dev =3D qdev_new(OBJECT(machine), "a9mpcore", TYPE_A9MPCORE_PRIV); qdev_prop_set_uint32(dev, "num-cpu", smp_cpus); qdev_prop_set_uint32(dev, "num-irq", GIC_EXT_IRQS + GIC_INTERNAL); busdev =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(busdev, &error_fatal); + sysbus_realize(busdev, &error_fatal); sysbus_mmio_map(busdev, 0, MPCORE_PERIPHBASE); zynq_binfo.gic_cpu_if_addr =3D MPCORE_PERIPHBASE + 0x100; - sysbus_create_varargs_orphan("l2x0", MPCORE_PERIPHBASE + 0x2000, NULL); + sysbus_create_varargs(OBJECT(machine), "l2x0", "l2x0", + MPCORE_PERIPHBASE + 0x2000, NULL); for (n =3D 0; n < smp_cpus; n++) { /* See "hw/intc/arm_gic.h" for the IRQ line association */ DeviceState *cpudev =3D DEVICE(zynq_machine->cpu[n]); @@ -283,39 +286,44 @@ static void zynq_init(MachineState *machine) pic[n] =3D qdev_get_gpio_in(dev, n); } =20 - n =3D zynq_init_spi_flashes(0xE0006000, pic[58 - GIC_INTERNAL], false,= 0); - n =3D zynq_init_spi_flashes(0xE0007000, pic[81 - GIC_INTERNAL], false,= n); - n =3D zynq_init_spi_flashes(0xE000D000, pic[51 - GIC_INTERNAL], true, = n); + n =3D zynq_init_spi_flashes(OBJECT(machine), 0xE0006000, + pic[58 - GIC_INTERNAL], false, 0); + n =3D zynq_init_spi_flashes(OBJECT(machine), 0xE0007000, + pic[81 - GIC_INTERNAL], false, n); + n =3D zynq_init_spi_flashes(OBJECT(machine), 0xE000D000, + pic[51 - GIC_INTERNAL], true, n); =20 - sysbus_create_simple_orphan(TYPE_CHIPIDEA, 0xE0002000, pic[53 - GIC_IN= TERNAL]); - sysbus_create_simple_orphan(TYPE_CHIPIDEA, 0xE0003000, pic[76 - GIC_IN= TERNAL]); + sysbus_create_simple(OBJECT(machine), "usb[*]", TYPE_CHIPIDEA, + 0xE0002000, pic[53 - GIC_INTERNAL]); + sysbus_create_simple(OBJECT(machine), "usb[*]", TYPE_CHIPIDEA, + 0xE0003000, pic[76 - GIC_INTERNAL]); =20 - dev =3D qdev_new_orphan(TYPE_CADENCE_UART); + dev =3D qdev_new(OBJECT(machine), "uart[*]", TYPE_CADENCE_UART); busdev =3D SYS_BUS_DEVICE(dev); qdev_prop_set_chr(dev, "chardev", serial_hd(0)); qdev_connect_clock_in(dev, "refclk", qdev_get_clock_out(slcr, "uart0_ref_clk")); - sysbus_realize_and_unref(busdev, &error_fatal); + sysbus_realize(busdev, &error_fatal); sysbus_mmio_map(busdev, 0, 0xE0000000); sysbus_connect_irq(busdev, 0, pic[59 - GIC_INTERNAL]); - dev =3D qdev_new_orphan(TYPE_CADENCE_UART); + dev =3D qdev_new(OBJECT(machine), "uart[*]", TYPE_CADENCE_UART); busdev =3D SYS_BUS_DEVICE(dev); qdev_prop_set_chr(dev, "chardev", serial_hd(1)); qdev_connect_clock_in(dev, "refclk", qdev_get_clock_out(slcr, "uart1_ref_clk")); - sysbus_realize_and_unref(busdev, &error_fatal); + sysbus_realize(busdev, &error_fatal); sysbus_mmio_map(busdev, 0, 0xE0001000); sysbus_connect_irq(busdev, 0, pic[82 - GIC_INTERNAL]); =20 - sysbus_create_varargs_orphan("cadence_ttc", 0xF8001000, + sysbus_create_varargs(OBJECT(machine), "ttc[*]", "cadence_ttc", 0xF800= 1000, pic[42-GIC_INTERNAL], pic[43-GIC_INTERNAL], pic[44-GIC_INTERNA= L], NULL); - sysbus_create_varargs_orphan("cadence_ttc", 0xF8002000, + sysbus_create_varargs(OBJECT(machine), "ttc[*]", "cadence_ttc", 0xF800= 2000, pic[69-GIC_INTERNAL], pic[70-GIC_INTERNAL], pic[71-GIC_INTERNA= L], NULL); =20 - ddr_ctrl_init(0xF8006000); + ddr_ctrl_init(OBJECT(machine), 0xF8006000); =20 - gem_init(0xE000B000, pic[54 - GIC_INTERNAL]); - gem_init(0xE000C000, pic[77 - GIC_INTERNAL]); + gem_init(OBJECT(machine), 0xE000B000, pic[54 - GIC_INTERNAL]); + gem_init(OBJECT(machine), 0xE000C000, pic[77 - GIC_INTERNAL]); =20 for (n =3D 0; n < 2; n++) { int hci_irq =3D n ? 79 : 56; @@ -329,27 +337,27 @@ static void zynq_init(MachineState *machine) * - SDIO Specification Version 2.0 * - MMC Specification Version 3.31 */ - dev =3D qdev_new_orphan(TYPE_SYSBUS_SDHCI); + dev =3D qdev_new(OBJECT(machine), "sdhci[*]", TYPE_SYSBUS_SDHCI); qdev_prop_set_uint8(dev, "sd-spec-version", 2); qdev_prop_set_uint64(dev, "capareg", ZYNQ_SDHCI_CAPABILITIES); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, hci_addr); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[hci_irq - GIC_INTER= NAL]); =20 di =3D drive_get(IF_SD, 0, n); blk =3D di ? blk_by_legacy_dinfo(di) : NULL; - carddev =3D qdev_new_orphan(TYPE_SD_CARD); + carddev =3D qdev_new(OBJECT(dev), "sd-card", TYPE_SD_CARD); qdev_prop_set_drive_err(carddev, "drive", blk, &error_fatal); - qdev_realize_and_unref(carddev, qdev_get_child_bus(dev, "sd-bus"), - &error_fatal); + qdev_realize(carddev, qdev_get_child_bus(dev, "sd-bus"), + &error_fatal); } =20 - dev =3D qdev_new_orphan(TYPE_ZYNQ_XADC); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + dev =3D qdev_new(OBJECT(machine), "xadc", TYPE_ZYNQ_XADC); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, 0xF8007100); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[39-GIC_INTERNAL]); =20 - dev =3D qdev_new_orphan("pl330"); + dev =3D qdev_new(OBJECT(machine), "dma", "pl330"); object_property_set_link(OBJECT(dev), "memory", OBJECT(address_space_mem), &error_fatal); @@ -365,16 +373,16 @@ static void zynq_init(MachineState *machine) qdev_prop_set_uint16(dev, "data_buffer_dep", 256); =20 busdev =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(busdev, &error_fatal); + sysbus_realize(busdev, &error_fatal); sysbus_mmio_map(busdev, 0, 0xF8003000); sysbus_connect_irq(busdev, 0, pic[45-GIC_INTERNAL]); /* abort irq line= */ for (n =3D 0; n < ARRAY_SIZE(dma_irqs); ++n) { /* event irqs */ sysbus_connect_irq(busdev, n + 1, pic[dma_irqs[n] - GIC_INTERNAL]); } =20 - dev =3D qdev_new_orphan("xlnx.ps7-dev-cfg"); + dev =3D qdev_new(OBJECT(machine), "devcfg", "xlnx.ps7-dev-cfg"); busdev =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(busdev, &error_fatal); + sysbus_realize(busdev, &error_fatal); sysbus_connect_irq(busdev, 0, pic[40 - GIC_INTERNAL]); sysbus_mmio_map(busdev, 0, 0xF8007000); =20 --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411666; cv=none; d=zohomail.com; s=zohoarc; b=fr1XyHpIlDPKdFnupnZJRhVME6CF6jzJIQ5VX7DOQA9z3gqCE86xxdcDDTeSeLGBKJjssZReEaugdCthLfEsh4y1p9ESW0B9Isz1hQfauob2EYB2iTdWp6eUvBDQHvWbBffsS2gJGOaczzV0VVAEP1I/sY2zqEfVnykPkV9h4yo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411666; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Y9SWfp5Nv4FFpcIqCGA2Qn1GxSeHFkLYjhi03dYiZXY=; b=LG1JhxqXWl9kkLENGUtc7NDKW2RaQ46ySrGKsCd1q9W0G+cBFpIDz/GKEHXTlyRQLhE9QEKIx39LJk5cTZDnHgw8swCsmW7yaMiF2mEAN+dmv6BH9vI2/jY24eg8o1yVZ1qtcfxoJ4aqJBx6pQYng3Z5USKn0OqGmgVXjft9mEE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411666970872.8740270732499; Sat, 18 Jul 2026 14:54:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCyv-0001GX-L0; Sat, 18 Jul 2026 17:54:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCyt-0001FQ-T8; Sat, 18 Jul 2026 17:53:59 -0400 Received: from pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.246.1.125]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCyp-00047F-U3; Sat, 18 Jul 2026 17:53:59 -0400 Received: from ip-10-5-0-115.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.0.115]) by internal-pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:53:52 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.236:4937] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.30.230:2525] with esmtp (Farcaster) id acaf731c-0ec1-431e-8d66-0a9b49afe9ae; Sat, 18 Jul 2026 21:53:52 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA001.ant.amazon.com (10.250.64.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:53:52 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:53:42 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411635; x=1815947635; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Y9SWfp5Nv4FFpcIqCGA2Qn1GxSeHFkLYjhi03dYiZXY=; b=Hr/iPojKCbO8JGcAaa9GzBektoyL3wyyKnnECIExD3tBypLfTHeLoRtu Tr3Qc7fo1Gx3z5iyadfbwtNd4rcoj7M5IPdLB6BNjO34VKy3JPREp6Fey y1jwBGsvNI3HtOM5lN96O8Szh5y5sZ9PUQ1uXZOgwXlBMx48VOu/oHf/K nO3ZrAZd+us3v3BK8cVl0QcQXaPZtR7SKVb3xWxTq2Ov2vjDhLNQy0WDG dqOEsRuubc+3OdI3b27h/UGS8hCO1bB+n3dRm3sD/NF9Cmyaz1+pLW0tE o+ij4wgO4bxikK1JPOgzsK35p5/VV5gLG7wjZSUAf7xeqfxbXW96kmYKd g==; X-CSE-ConnectionGUID: gLf8v0PVQyWSdPItNk3Gag== X-CSE-MsgGUID: PNw3KkBETvaDf948IxaICw== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23927277" X-Farcaster-Flow-ID: acaf731c-0ec1-431e-8d66-0a9b49afe9ae From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 060/137] hw/arm/xlnx-versal, xlnx-zynqmp: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:35 +0000 Message-ID: <20260718213652.37673-61-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D045UWC002.ant.amazon.com (10.13.139.230) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.246.1.125; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411668220158501 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in the hw/arm xlnx-versal, xln= x-zynqmp board files to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing SoC device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/arm/xlnx-versal.c:517 | qdev_new | container | name | SoC realize helper= ; collapse existing add_child(container,name); drop _and_unref hw/arm/xlnx-versal.c:565 | qdev_new | container | name | SoC realize helper= ; collapse existing add_child(container,name); drop _and_unref hw/arm/xlnx-versal.c:667 | qdev_new | parent | name | helper already receiv= es parent+name; collapse add_child; drop _and_unref hw/arm/xlnx-versal.c:716 | qdev_new | OBJECT(gic) | "its" | collapse existi= ng add_child(gic,"its"); sysbus_realize hw/arm/xlnx-versal.c:758 | qdev_new | OBJECT(s) | name | SoC realize; hoist= name printf, collapse add_child; sysbus_realize hw/arm/xlnx-versal.c:762 | qdev_new | OBJECT(s) | name | SoC realize; hoist= name printf, collapse add_child; sysbus_realize hw/arm/xlnx-versal.c:912 | qdev_new | OBJECT(qemu_cluster) | name | hoist n= ame printf; collapse add_child; qdev_realize hw/arm/xlnx-versal.c:963 | qdev_new | OBJECT(s) | name | hoist name printf;= collapse add_child; qdev_realize hw/arm/xlnx-versal.c:1031 | qdev_new | OBJECT(s) | "uart[*]" | collapse add= _child; sysbus_realize hw/arm/xlnx-versal.c:1070 | qdev_new | OBJECT(s) | "canfd[*]" | collapse ad= d_child; sysbus_realize hw/arm/xlnx-versal.c:1110 | qdev_new | OBJECT(s) | "usb[*]" | collapse add_= child; sysbus_realize hw/arm/xlnx-versal.c:1170 | qdev_new | OBJECT(s) | "gem[*]" | collapse add_= child; sysbus_realize hw/arm/xlnx-versal.c:1254 | qdev_new | OBJECT(s) | name | collapse add_chil= d; sysbus_realize hw/arm/xlnx-versal.c:1289 | qdev_new | OBJECT(s) | "sdhci[*]" | collapse ad= d_child; sysbus_realize hw/arm/xlnx-versal.c:1323 | qdev_new | OBJECT(s) | "rtc" | collapse add_chi= ld; sysbus_realize hw/arm/xlnx-versal.c:1352 | qdev_new | OBJECT(s) | "trng" | collapse add_ch= ild; sysbus_realize hw/arm/xlnx-versal.c:1373 | qdev_new | OBJECT(s) | "xram[*]" | collapse add= _child; sysbus_realize hw/arm/xlnx-versal.c:1395 | qdev_new | OBJECT(s) | "bbram" | collapse add_c= hild; sysbus_realize hw/arm/xlnx-versal.c:1418 | qdev_new | OBJECT(s) | "efuse-ctrl" | collapse = add_child; sysbus_realize hw/arm/xlnx-versal.c:1419 | qdev_new | OBJECT(s) | "efuse-cache" | collapse= add_child; sysbus_realize hw/arm/xlnx-versal.c:1420 | qdev_new | OBJECT(s) | "efuse" | collapse add_c= hild; qdev_realize hw/arm/xlnx-versal.c:1454 | qdev_new | OBJECT(s) | "pmc-iou-slcr" | collaps= e add_child; sysbus_realize hw/arm/xlnx-versal.c:1476 | qdev_new | OBJECT(s) | "ospi" | collapse add_ch= ild; sysbus_realize hw/arm/xlnx-versal.c:1485 | qdev_new | OBJECT(dev) | "dma-dst-dev" | collap= se add_child under ospi; sysbus_realize hw/arm/xlnx-versal.c:1497 | qdev_new | OBJECT(dev) | "dma-src-dev" | collap= se add_child under ospi; sysbus_realize hw/arm/xlnx-versal.c:1551 | qdev_new | container | "cfu-fdro" | collapse ad= d_child; sysbus_realize hw/arm/xlnx-versal.c:1560 | qdev_new | container | "cframe-bcast" | collaps= e add_child; sysbus_realize hw/arm/xlnx-versal.c:1564 | qdev_new | container | "cfu-apb" | collapse add= _child; sysbus_realize hw/arm/xlnx-versal.c:1568 | qdev_new | container | "cframe-irq-or-gate" | c= ollapse add_child; qdev_realize hw/arm/xlnx-versal.c:1583 | qdev_new | container | "cframe[*]" | collapse a= dd_child; sysbus_realize hw/arm/xlnx-versal.c:1635 | qdev_new | container | "cfu-sfr" | collapse add= _child; sysbus_realize hw/arm/xlnx-versal.c:1679 | qdev_new | OBJECT(s) | "crl" | collapse add_chi= ld; sysbus_realize hw/arm/xlnx-versal.c:1764 | qdev_new | OBJECT(s) | name | collapse add_chil= d; sysbus_realize hw/arm/xlnx-versal.c:1975 | qdev_new | OBJECT(sdhci) | "card[*]" | collapse= add_child; qdev_realize hw/arm/xlnx-versal.c:2018 | qdev_new | OBJECT(ospi) | "flash[*]" | flash on= OSPI SPI bus; parent under ospi; qdev_realize hw/arm/xlnx-versal-virt.c:146 | qdev_new | OBJECT(s) | "virtio-mmio[*]" | m= achine init helper; collapse add_child; sysbus_realize hw/arm/xlnx-zcu102.c:190 | qdev_new | OBJECT(machine) | "sd-card[*]" | boar= d init; qdev_realize hw/arm/xlnx-zcu102.c:205 | qdev_new | OBJECT(machine) | "spi-flash[*]" | bo= ard init; qdev_realize hw/arm/xlnx-zcu102.c:229 | qdev_new | OBJECT(machine) | "qspi-flash[*]" | b= oard init; qdev_realize hw/arm/xlnx-zynqmp.c:368 | qdev_new | OBJECT(s) | info->name | SoC realize;= collapse add_child; sysbus_realize Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/arm/xlnx-versal-virt.c | 5 +- hw/arm/xlnx-versal.c | 197 ++++++++++++++++---------------------- hw/arm/xlnx-zcu102.c | 14 +-- hw/arm/xlnx-zynqmp.c | 6 +- 4 files changed, 98 insertions(+), 124 deletions(-) diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index 48f6e6d463..88bebf1f87 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -143,9 +143,8 @@ static void create_virtio_regions(VersalVirt *s) qemu_irq pic_irq; =20 pic_irq =3D versal_get_reserved_irq(&s->soc, i, &dtb_irq); - dev =3D qdev_new_orphan("virtio-mmio"); - object_property_add_child(OBJECT(s), "virtio-mmio[*]", OBJECT(dev)= ); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + dev =3D qdev_new(OBJECT(s), "virtio-mmio[*]", "virtio-mmio"); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic_irq); mr =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0); memory_region_add_subregion(&s->soc.mr_ps, base, mr); diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 7cb95a4ff8..bf125d6f32 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -514,10 +514,9 @@ static qemu_irq versal_get_gic_irq(Versal *s, int irq_= idx) if (split =3D=3D NULL) { size_t i; =20 - split =3D qdev_new_orphan(TYPE_SPLIT_IRQ); + split =3D qdev_new(container, name, TYPE_SPLIT_IRQ); qdev_prop_set_uint16(split, "num-lines", s->intc->len); - object_property_add_child(container, name, OBJECT(split)); - qdev_realize_and_unref(split, NULL, &error_abort); + qdev_realize(split, NULL, &error_abort); =20 for (i =3D 0; i < s->intc->len; i++) { DeviceState *gic; @@ -562,10 +561,9 @@ static qemu_irq versal_get_irq_or_gate_in(Versal *s, i= nt irq_idx, dev =3D DEVICE(object_resolve_path_at(container, name)); =20 if (dev =3D=3D NULL) { - dev =3D qdev_new_orphan(TYPE_OR_IRQ); - object_property_add_child(container, name, OBJECT(dev)); + dev =3D qdev_new(container, name, TYPE_OR_IRQ); qdev_prop_set_uint16(dev, "num-lines", 1 << R_VERSAL_IRQ_OR_IDX_LE= NGTH); - qdev_realize_and_unref(dev, NULL, &error_abort); + qdev_realize(dev, NULL, &error_abort); qdev_connect_gpio_out(dev, 0, target_irq); } =20 @@ -664,10 +662,9 @@ static inline DeviceState *create_or_gate(Versal *s, O= bject *parent, { DeviceState *or; =20 - or =3D qdev_new_orphan(TYPE_OR_IRQ); + or =3D qdev_new(parent, name, TYPE_OR_IRQ); qdev_prop_set_uint16(or, "num-lines", num_lines); - object_property_add_child(parent, name, OBJECT(or)); - qdev_realize_and_unref(or, NULL, &error_abort); + qdev_realize(or, NULL, &error_abort); versal_qdev_connect_gpio_out(s, or, 0, irq_idx); =20 return or; @@ -713,14 +710,13 @@ static void versal_create_gic_its(Versal *s, return; } =20 - dev =3D qdev_new_orphan(TYPE_ARM_GICV3_ITS); + dev =3D qdev_new(OBJECT(gic), "its", TYPE_ARM_GICV3_ITS); sbd =3D SYS_BUS_DEVICE(dev); =20 - object_property_add_child(OBJECT(gic), "its", OBJECT(dev)); object_property_set_link(OBJECT(dev), "parent-gicv3", OBJECT(gic), &error_abort); =20 - sysbus_realize_and_unref(sbd, &error_abort); + sysbus_realize(sbd, &error_abort); =20 memory_region_add_subregion(mr, map->gic.its, sysbus_mmio_get_region(sbd, 0)); @@ -753,21 +749,21 @@ static DeviceState *versal_create_gic(Versal *s, const char gicv3_compat[] =3D "arm,gic-v3"; const char gicv2_compat[] =3D "arm,cortex-a15-gic"; =20 + name =3D g_strdup_printf("%s-gic[*]", map->name); + switch (map->gic.version) { case 2: - dev =3D qdev_new_orphan(gic_class_name()); + dev =3D qdev_new(OBJECT(s), name, gic_class_name()); break; =20 case 3: - dev =3D qdev_new_orphan(gicv3_class_name()); + dev =3D qdev_new(OBJECT(s), name, gicv3_class_name()); break; =20 default: g_assert_not_reached(); } =20 - name =3D g_strdup_printf("%s-gic[*]", map->name); - object_property_add_child(OBJECT(s), name, OBJECT(dev)); sbd =3D SYS_BUS_DEVICE(dev); qdev_prop_set_uint32(dev, "revision", map->gic.version); qdev_prop_set_uint32(dev, "num-cpu", num_cpu); @@ -787,7 +783,7 @@ static DeviceState *versal_create_gic(Versal *s, =20 } =20 - sysbus_realize_and_unref(sbd, &error_fatal); + sysbus_realize(sbd, &error_fatal); =20 memory_region_add_subregion(mr, map->gic.dist, sysbus_mmio_get_region(sbd, 0)); @@ -909,13 +905,13 @@ static DeviceState *versal_create_cpu(Versal *s, size_t cluster_idx, size_t core_idx) { - DeviceState *cpu =3D qdev_new_orphan(map->cpu_model); - ARMCPU *arm_cpu =3D ARM_CPU(cpu); - Object *obj =3D OBJECT(cpu); + DeviceState *cpu; + ARMCPU *arm_cpu; + Object *obj; uint64_t affinity; bool start_off; size_t idx =3D cluster_idx * map->num_core + core_idx; - g_autofree char *name; + g_autofree char *name =3D g_strdup_printf("%s[*]", map->name); g_autofree char *node =3D NULL; =20 affinity =3D map->mp_affinity.base; @@ -926,14 +922,15 @@ static DeviceState *versal_create_cpu(Versal *s, || ((map->start_powered_off =3D=3D SPO_SECONDARIES) && (cluster_idx || core_idx)); =20 - name =3D g_strdup_printf("%s[*]", map->name); - object_property_add_child(OBJECT(qemu_cluster), name, obj); + cpu =3D qdev_new(OBJECT(qemu_cluster), name, map->cpu_model); + arm_cpu =3D ARM_CPU(cpu); + obj =3D OBJECT(cpu); object_property_set_bool(obj, "start-powered-off", start_off, &error_abort); qdev_prop_set_uint64(cpu, "mp-affinity", affinity); qdev_prop_set_int32(cpu, "core-count", map->num_core); object_property_set_link(obj, "memory", OBJECT(cpu_mr), &error_abort); - qdev_realize_and_unref(cpu, NULL, &error_fatal); + qdev_realize(cpu, NULL, &error_fatal); =20 if (!map->dtb_expose) { return cpu; @@ -955,15 +952,13 @@ static void versal_create_cpu_cluster(Versal *s, cons= t VersalCpuClusterMap *map) size_t i, j; DeviceState *cluster; MemoryRegion *mr; - char *name; + g_autofree char *name =3D g_strdup_printf("%s-cluster", map->name); g_autofree DeviceState **cpus; const char compatible[] =3D "arm,armv8-timer"; bool has_gtimer; =20 - cluster =3D qdev_new_orphan(TYPE_CPU_CLUSTER); - name =3D g_strdup_printf("%s-cluster", map->name); - object_property_add_child(OBJECT(s), name, OBJECT(cluster)); - g_free(name); + cluster =3D qdev_new(OBJECT(s), name, TYPE_CPU_CLUSTER); + qdev_prop_set_uint32(cluster, "cluster-id", map->qemu_cluster_id); =20 mr =3D create_cpu_mr(s, cluster, map); @@ -989,7 +984,7 @@ static void versal_create_cpu_cluster(Versal *s, const = VersalCpuClusterMap *map) } } =20 - qdev_realize_and_unref(cluster, NULL, &error_fatal); + qdev_realize(cluster, NULL, &error_fatal); =20 if (!map->per_cluster_gic) { versal_create_and_connect_gic(s, map, mr, cpus, @@ -1028,10 +1023,9 @@ static void versal_create_uart(Versal *s, const char compatible[] =3D "arm,pl011\0arm,sbsa-uart"; const char clocknames[] =3D "uartclk\0apb_pclk"; =20 - dev =3D qdev_new_orphan(TYPE_PL011); - object_property_add_child(OBJECT(s), "uart[*]", OBJECT(dev)); + dev =3D qdev_new(OBJECT(s), "uart[*]", TYPE_PL011); qdev_prop_set_chr(dev, "chardev", serial_hd(chardev_idx)); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 mr =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0); memory_region_add_subregion(&s->mr_ps, map->addr, mr); @@ -1067,8 +1061,7 @@ static void versal_create_canfd(Versal *s, const Vers= alSimplePeriphMap *map, const char compatible[] =3D "xlnx,canfd-2.0"; const char clocknames[] =3D "can_clk\0s_axi_aclk"; =20 - sbd =3D SYS_BUS_DEVICE(qdev_new_orphan(TYPE_XILINX_CANFD)); - object_property_add_child(OBJECT(s), "canfd[*]", OBJECT(sbd)); + sbd =3D SYS_BUS_DEVICE(qdev_new(OBJECT(s), "canfd[*]", TYPE_XILINX_CAN= FD)); =20 object_property_set_int(OBJECT(sbd), "ext_clk_freq", 25 * 1000 * 1000 , &error_abort); @@ -1076,7 +1069,7 @@ static void versal_create_canfd(Versal *s, const Vers= alSimplePeriphMap *map, object_property_set_link(OBJECT(sbd), "canfdbus", OBJECT(bus), &error_abort); =20 - sysbus_realize_and_unref(sbd, &error_fatal); + sysbus_realize(sbd, &error_fatal); =20 mr =3D sysbus_mmio_get_region(sbd, 0); memory_region_add_subregion(&s->mr_ps, map->addr, mr); @@ -1107,15 +1100,14 @@ static void versal_create_usb(Versal *s, const char compat_versal_dwc3[] =3D "xlnx,versal-dwc3"; const char compat_dwc3[] =3D "snps,dwc3"; =20 - dev =3D qdev_new_orphan(TYPE_XILINX_VERSAL_USB2); - object_property_add_child(OBJECT(s), "usb[*]", OBJECT(dev)); + dev =3D qdev_new(OBJECT(s), "usb[*]", TYPE_XILINX_VERSAL_USB2); =20 object_property_set_link(OBJECT(dev), "dma", OBJECT(&s->mr_ps), &error_abort); qdev_prop_set_uint32(dev, "intrs", 1); qdev_prop_set_uint32(dev, "slots", 2); =20 - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 mr =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0); memory_region_add_subregion(&s->mr_ps, map->xhci, mr); @@ -1167,8 +1159,7 @@ static void versal_create_gem(Versal *s, DeviceState *or; int i; =20 - dev =3D qdev_new_orphan(TYPE_CADENCE_GEM); - object_property_add_child(OBJECT(s), "gem[*]", OBJECT(dev)); + dev =3D qdev_new(OBJECT(s), "gem[*]", TYPE_CADENCE_GEM); =20 qemu_configure_nic_device(dev, true, NULL); object_property_set_int(OBJECT(dev), "phy-addr", 23, &error_abort); @@ -1177,7 +1168,7 @@ static void versal_create_gem(Versal *s, =20 object_property_set_link(OBJECT(dev), "dma", OBJECT(&s->mr_ps), &error_abort); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 mr =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0); memory_region_add_subregion(&s->mr_ps, map->map.addr, mr); @@ -1251,12 +1242,11 @@ static void versal_create_zdma(Versal *s, int irq =3D map->map.irq + map->irq_stride * i; g_autofree char *node; =20 - dev =3D qdev_new_orphan(TYPE_XLNX_ZDMA); - object_property_add_child(OBJECT(s), name, OBJECT(dev)); + dev =3D qdev_new(OBJECT(s), name, TYPE_XLNX_ZDMA); object_property_set_int(OBJECT(dev), "bus-width", 128, &error_abor= t); object_property_set_link(OBJECT(dev), "dma", OBJECT(get_system_memory()), &error_fatal= ); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 mr =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0); memory_region_add_subregion(&s->mr_ps, addr, mr); @@ -1286,15 +1276,14 @@ static void versal_create_sdhci(Versal *s, const char compatible[] =3D "arasan,sdhci-8.9a"; const char clocknames[] =3D "clk_xin\0clk_ahb"; =20 - dev =3D qdev_new_orphan(TYPE_SYSBUS_SDHCI); - object_property_add_child(OBJECT(s), "sdhci[*]", OBJECT(dev)); + dev =3D qdev_new(OBJECT(s), "sdhci[*]", TYPE_SYSBUS_SDHCI); =20 object_property_set_uint(OBJECT(dev), "sd-spec-version", 3, &error_fatal); object_property_set_uint(OBJECT(dev), "capareg", SDHCI_CAPABILITIES, &error_fatal); object_property_set_uint(OBJECT(dev), "uhs", UHS_I, &error_fatal); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 mr =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0); memory_region_add_subregion(&s->mr_ps, map->addr, mr); @@ -1320,9 +1309,8 @@ static void versal_create_rtc(Versal *s, const struct= VersalRtcMap *map) const char compatible[] =3D "xlnx,zynqmp-rtc"; const char interrupt_names[] =3D "alarm\0sec"; =20 - sbd =3D SYS_BUS_DEVICE(qdev_new_orphan(TYPE_XLNX_ZYNQMP_RTC)); - object_property_add_child(OBJECT(s), "rtc", OBJECT(sbd)); - sysbus_realize_and_unref(sbd, &error_abort); + sbd =3D SYS_BUS_DEVICE(qdev_new(OBJECT(s), "rtc", TYPE_XLNX_ZYNQMP_RTC= )); + sysbus_realize(sbd, &error_abort); =20 mr =3D sysbus_mmio_get_region(sbd, 0); memory_region_add_subregion(&s->mr_ps, map->map.addr, mr); @@ -1349,9 +1337,8 @@ static void versal_create_trng(Versal *s, const Versa= lSimplePeriphMap *map) SysBusDevice *sbd; MemoryRegion *mr; =20 - sbd =3D SYS_BUS_DEVICE(qdev_new_orphan(TYPE_XLNX_VERSAL_TRNG)); - object_property_add_child(OBJECT(s), "trng", OBJECT(sbd)); - sysbus_realize_and_unref(sbd, &error_abort); + sbd =3D SYS_BUS_DEVICE(qdev_new(OBJECT(s), "trng", TYPE_XLNX_VERSAL_TR= NG)); + sysbus_realize(sbd, &error_abort); =20 mr =3D sysbus_mmio_get_region(sbd, 0); memory_region_add_subregion(&s->mr_ps, map->addr, mr); @@ -1370,9 +1357,9 @@ static void versal_create_xrams(Versal *s, const stru= ct VersalXramMap *map) for (i =3D 0; i < map->num; i++) { hwaddr ctrl, mem; =20 - sbd =3D SYS_BUS_DEVICE(qdev_new_orphan(TYPE_XLNX_XRAM_CTRL)); - object_property_add_child(OBJECT(s), "xram[*]", OBJECT(sbd)); - sysbus_realize_and_unref(sbd, &error_fatal); + sbd =3D SYS_BUS_DEVICE(qdev_new(OBJECT(s), "xram[*]", + TYPE_XLNX_XRAM_CTRL)); + sysbus_realize(sbd, &error_fatal); =20 ctrl =3D map->ctrl + map->ctrl_stride * i; mem =3D map->mem + map->mem_stride * i; @@ -1392,12 +1379,11 @@ static void versal_create_bbram(Versal *s, DeviceState *dev; SysBusDevice *sbd; =20 - dev =3D qdev_new_orphan(TYPE_XLNX_BBRAM); + dev =3D qdev_new(OBJECT(s), "bbram", TYPE_XLNX_BBRAM); sbd =3D SYS_BUS_DEVICE(dev); =20 - object_property_add_child(OBJECT(s), "bbram", OBJECT(dev)); qdev_prop_set_uint32(dev, "crc-zpads", 0); - sysbus_realize_and_unref(sbd, &error_abort); + sysbus_realize(sbd, &error_abort); memory_region_add_subregion(&s->mr_ps, map->addr, sysbus_mmio_get_region(sbd, 0)); versal_sysbus_connect_irq(s, sbd, 0, map->irq); @@ -1415,26 +1401,24 @@ static void versal_create_efuse(Versal *s, return; } =20 - ctrl =3D qdev_new_orphan(TYPE_XLNX_VERSAL_EFUSE_CTRL); - cache =3D qdev_new_orphan(TYPE_XLNX_VERSAL_EFUSE_CACHE); - bits =3D qdev_new_orphan(TYPE_XLNX_EFUSE); + ctrl =3D qdev_new(OBJECT(s), "efuse-ctrl", TYPE_XLNX_VERSAL_EFUSE_CTRL= ); + cache =3D qdev_new(OBJECT(s), "efuse-cache", + TYPE_XLNX_VERSAL_EFUSE_CACHE); + bits =3D qdev_new(OBJECT(s), "efuse", TYPE_XLNX_EFUSE); =20 qdev_prop_set_uint32(bits, "efuse-nr", 3); qdev_prop_set_uint32(bits, "efuse-size", 8192); =20 - object_property_add_child(OBJECT(s), "efuse", OBJECT(bits)); - qdev_realize_and_unref(bits, NULL, &error_abort); + qdev_realize(bits, NULL, &error_abort); =20 object_property_set_link(OBJECT(ctrl), "efuse", OBJECT(bits), &error_a= bort); =20 object_property_set_link(OBJECT(cache), "efuse", OBJECT(bits), &error_abort); =20 - object_property_add_child(OBJECT(s), "efuse-cache", OBJECT(cache)); - sysbus_realize_and_unref(SYS_BUS_DEVICE(cache), &error_abort); + sysbus_realize(SYS_BUS_DEVICE(cache), &error_abort); =20 - object_property_add_child(OBJECT(s), "efuse-ctrl", OBJECT(ctrl)); - sysbus_realize_and_unref(SYS_BUS_DEVICE(ctrl), &error_abort); + sysbus_realize(SYS_BUS_DEVICE(ctrl), &error_abort); =20 memory_region_add_subregion(&s->mr_ps, map->ctrl, sysbus_mmio_get_region(SYS_BUS_DEVICE(ctrl= ), @@ -1451,11 +1435,11 @@ static DeviceState *versal_create_pmc_iou_slcr(Vers= al *s, SysBusDevice *sbd; DeviceState *dev; =20 - dev =3D qdev_new_orphan(TYPE_XILINX_VERSAL_PMC_IOU_SLCR); - object_property_add_child(OBJECT(s), "pmc-iou-slcr", OBJECT(dev)); + dev =3D qdev_new(OBJECT(s), "pmc-iou-slcr", + TYPE_XILINX_VERSAL_PMC_IOU_SLCR); =20 sbd =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(sbd, &error_fatal); + sysbus_realize(sbd, &error_fatal); =20 memory_region_add_subregion(&s->mr_ps, map->addr, sysbus_mmio_get_region(sbd, 0)); @@ -1473,8 +1457,7 @@ static DeviceState *versal_create_ospi(Versal *s, DeviceState *dev, *dma_dst, *dma_src, *orgate; MemoryRegion *linear_mr =3D g_new(MemoryRegion, 1); =20 - dev =3D qdev_new_orphan(TYPE_XILINX_VERSAL_OSPI); - object_property_add_child(OBJECT(s), "ospi", OBJECT(dev)); + dev =3D qdev_new(OBJECT(s), "ospi", TYPE_XILINX_VERSAL_OSPI); =20 memory_region_init(linear_mr, OBJECT(dev), "linear-mr", map->dac_sz); =20 @@ -1482,20 +1465,18 @@ static DeviceState *versal_create_ospi(Versal *s, memory_region_add_subregion(linear_mr, 0x0, mr_dac); =20 /* Create the OSPI destination DMA */ - dma_dst =3D qdev_new_orphan(TYPE_XLNX_CSU_DMA); - object_property_add_child(OBJECT(dev), "dma-dst-dev", OBJECT(dma_dst)); + dma_dst =3D qdev_new(OBJECT(dev), "dma-dst-dev", TYPE_XLNX_CSU_DMA); object_property_set_link(OBJECT(dma_dst), "dma", OBJECT(get_system_memory()), &error_abort); =20 sbd =3D SYS_BUS_DEVICE(dma_dst); - sysbus_realize_and_unref(sbd, &error_fatal); + sysbus_realize(sbd, &error_fatal); =20 memory_region_add_subregion(&s->mr_ps, map->dma_dst, sysbus_mmio_get_region(sbd, 0)); =20 /* Create the OSPI source DMA */ - dma_src =3D qdev_new_orphan(TYPE_XLNX_CSU_DMA); - object_property_add_child(OBJECT(dev), "dma-src-dev", OBJECT(dma_src)); + dma_src =3D qdev_new(OBJECT(dev), "dma-src-dev", TYPE_XLNX_CSU_DMA); =20 object_property_set_bool(OBJECT(dma_src), "is-dst", false, &error_abor= t); =20 @@ -1506,7 +1487,7 @@ static DeviceState *versal_create_ospi(Versal *s, OBJECT(dma_dst), &error_abort); =20 sbd =3D SYS_BUS_DEVICE(dma_src); - sysbus_realize_and_unref(sbd, &error_fatal); + sysbus_realize(sbd, &error_fatal); =20 memory_region_add_subregion(&s->mr_ps, map->dma_src, sysbus_mmio_get_region(sbd, 0)); @@ -1516,7 +1497,7 @@ static DeviceState *versal_create_ospi(Versal *s, OBJECT(dma_src), &error_abort); =20 sbd =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(sbd, &error_fatal); + sysbus_realize(sbd, &error_fatal); =20 memory_region_add_subregion(&s->mr_ps, map->ctrl, sysbus_mmio_get_region(sbd, 0)); @@ -1548,28 +1529,24 @@ static void versal_create_cfu(Versal *s, const stru= ct VersalCfuMap *map) object_unref(container); =20 /* CFU FDRO */ - cfu_fdro =3D qdev_new_orphan(TYPE_XLNX_VERSAL_CFU_FDRO); - object_property_add_child(container, "cfu-fdro", OBJECT(cfu_fdro)); + cfu_fdro =3D qdev_new(container, "cfu-fdro", TYPE_XLNX_VERSAL_CFU_FDRO= ); sbd =3D SYS_BUS_DEVICE(cfu_fdro); =20 - sysbus_realize_and_unref(sbd, &error_fatal); + sysbus_realize(sbd, &error_fatal); memory_region_add_subregion(&s->mr_ps, map->cfu_fdro, sysbus_mmio_get_region(sbd, 0)); =20 /* cframe bcast */ - cframe_bcast =3D qdev_new_orphan(TYPE_XLNX_VERSAL_CFRAME_BCAST_REG); - object_property_add_child(container, "cframe-bcast", OBJECT(cframe_bca= st)); + cframe_bcast =3D qdev_new(container, "cframe-bcast", + TYPE_XLNX_VERSAL_CFRAME_BCAST_REG); =20 /* CFU APB */ - cfu_apb =3D qdev_new_orphan(TYPE_XLNX_VERSAL_CFU_APB); - object_property_add_child(container, "cfu-apb", OBJECT(cfu_apb)); + cfu_apb =3D qdev_new(container, "cfu-apb", TYPE_XLNX_VERSAL_CFU_APB); =20 /* IRQ or gate for cframes */ - cframe_irq_or =3D qdev_new_orphan(TYPE_OR_IRQ); - object_property_add_child(container, "cframe-irq-or-gate", - OBJECT(cframe_irq_or)); + cframe_irq_or =3D qdev_new(container, "cframe-irq-or-gate", TYPE_OR_IR= Q); qdev_prop_set_uint16(cframe_irq_or, "num-lines", map->num_cframe); - qdev_realize_and_unref(cframe_irq_or, NULL, &error_abort); + qdev_realize(cframe_irq_or, NULL, &error_abort); versal_qdev_connect_gpio_out(s, cframe_irq_or, 0, map->cframe_irq); =20 /* cframe reg */ @@ -1580,8 +1557,8 @@ static void versal_create_cfu(Versal *s, const struct= VersalCfuMap *map) g_autofree char *prop_name; size_t j; =20 - dev =3D qdev_new_orphan(TYPE_XLNX_VERSAL_CFRAME_REG); - object_property_add_child(container, "cframe[*]", OBJECT(dev)); + dev =3D qdev_new(container, "cframe[*]", + TYPE_XLNX_VERSAL_CFRAME_REG); =20 sbd =3D SYS_BUS_DEVICE(dev); =20 @@ -1597,7 +1574,7 @@ static void versal_create_cfu(Versal *s, const struct= VersalCfuMap *map) object_property_set_link(OBJECT(dev), "cfu-fdro", OBJECT(cfu_fdro), &error_abort); =20 - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_abort); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_abort); =20 reg_base =3D map->cframe_base + i * map->cframe_stride * 2; fdri_base =3D reg_base + map->cframe_stride; @@ -1615,14 +1592,14 @@ static void versal_create_cfu(Versal *s, const stru= ct VersalCfuMap *map) } =20 sbd =3D SYS_BUS_DEVICE(cframe_bcast); - sysbus_realize_and_unref(sbd, &error_abort); + sysbus_realize(sbd, &error_abort); memory_region_add_subregion(&s->mr_ps, map->cframe_bcast_reg, sysbus_mmio_get_region(sbd, 0)); memory_region_add_subregion(&s->mr_ps, map->cframe_bcast_fdri, sysbus_mmio_get_region(sbd, 1)); =20 sbd =3D SYS_BUS_DEVICE(cfu_apb); - sysbus_realize_and_unref(sbd, &error_fatal); + sysbus_realize(sbd, &error_fatal); memory_region_add_subregion(&s->mr_ps, map->cfu_apb, sysbus_mmio_get_region(sbd, 0)); memory_region_add_subregion(&s->mr_ps, map->cfu_stream, @@ -1632,13 +1609,12 @@ static void versal_create_cfu(Versal *s, const stru= ct VersalCfuMap *map) versal_sysbus_connect_irq(s, sbd, 0, map->cfu_apb_irq); =20 /* CFU SFR */ - cfu_sfr =3D qdev_new_orphan(TYPE_XLNX_VERSAL_CFU_SFR); - object_property_add_child(container, "cfu-sfr", OBJECT(cfu_sfr)); + cfu_sfr =3D qdev_new(container, "cfu-sfr", TYPE_XLNX_VERSAL_CFU_SFR); sbd =3D SYS_BUS_DEVICE(cfu_sfr); =20 object_property_set_link(OBJECT(cfu_sfr), "cfu", OBJECT(cfu_apb), &error_abort); - sysbus_realize_and_unref(sbd, &error_fatal); + sysbus_realize(sbd, &error_fatal); memory_region_add_subregion(&s->mr_ps, map->cfu_sfr, sysbus_mmio_get_region(sbd, 0)); } @@ -1676,9 +1652,8 @@ static inline void versal_create_crl(Versal *s) ver =3D versal_get_version(s); =20 crl_class =3D xlnx_versal_crl_class_name(ver); - dev =3D qdev_new_orphan(crl_class); + dev =3D qdev_new(OBJECT(s), "crl", crl_class); obj =3D OBJECT(dev); - object_property_add_child(OBJECT(s), "crl", obj); =20 /* * The 3rd GEM controller on versal2 is in the MMI subsystem. @@ -1694,7 +1669,7 @@ static inline void versal_create_crl(Versal *s) crl_connect_dev_by_name(s, obj, "gem", num_gem); crl_connect_dev_by_name(s, obj, "usb", map->num_usb); =20 - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_abort); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_abort); =20 memory_region_add_subregion(&s->mr_ps, map->crl.addr, sysbus_mmio_get_region(SYS_BUS_DEVICE(dev)= , 0)); @@ -1761,13 +1736,12 @@ static void versal_unimp_area(Versal *s, const char= *name, MemoryRegion *mr, hwaddr base, hwaddr size) { - DeviceState *dev =3D qdev_new_orphan(TYPE_UNIMPLEMENTED_DEVICE); + DeviceState *dev =3D qdev_new(OBJECT(s), name, TYPE_UNIMPLEMENTED_DEVI= CE); MemoryRegion *mr_dev; =20 qdev_prop_set_string(dev, "name", name); qdev_prop_set_uint64(dev, "size", size); - object_property_add_child(OBJECT(s), name, OBJECT(dev)); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 mr_dev =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0); memory_region_add_subregion(mr, base, mr_dev); @@ -1972,11 +1946,10 @@ void versal_sdhci_plug_card(Versal *s, int sd_idx, = BlockBackend *blk) return; } =20 - card =3D qdev_new_orphan(TYPE_SD_CARD); - object_property_add_child(OBJECT(sdhci), "card[*]", OBJECT(card)); + card =3D qdev_new(OBJECT(sdhci), "card[*]", TYPE_SD_CARD); qdev_prop_set_drive_err(card, "drive", blk, &error_fatal); - qdev_realize_and_unref(card, qdev_get_child_bus(DEVICE(sdhci), "sd-bus= "), - &error_fatal); + qdev_realize(card, qdev_get_child_bus(DEVICE(sdhci), "sd-bus"), + &error_fatal); } =20 void versal_efuse_attach_drive(Versal *s, BlockBackend *blk) @@ -2015,13 +1988,13 @@ void versal_ospi_create_flash(Versal *s, int flash_= idx, const char *flash_mdl, ospi =3D DEVICE(versal_get_child(s, "ospi")); spi_bus =3D qdev_get_child_bus(ospi, "spi0"); =20 - flash =3D qdev_new_orphan(flash_mdl); + flash =3D qdev_new(OBJECT(ospi), "flash[*]", flash_mdl); =20 if (blk) { qdev_prop_set_drive_err(flash, "drive", blk, &error_fatal); } qdev_prop_set_uint8(flash, "cs", flash_idx); - qdev_realize_and_unref(flash, spi_bus, &error_fatal); + qdev_realize(flash, spi_bus, &error_fatal); =20 cs_line =3D qdev_get_gpio_in_named(flash, SSI_GPIO_CS, 0); =20 diff --git a/hw/arm/xlnx-zcu102.c b/hw/arm/xlnx-zcu102.c index adff52eaf6..473acad060 100644 --- a/hw/arm/xlnx-zcu102.c +++ b/hw/arm/xlnx-zcu102.c @@ -187,9 +187,9 @@ static void xlnx_zcu102_init(MachineState *machine) error_report("No SD bus found for SD card %d", i); exit(1); } - carddev =3D qdev_new_orphan(TYPE_SD_CARD); + carddev =3D qdev_new(OBJECT(machine), "sd-card[*]", TYPE_SD_CARD); qdev_prop_set_drive_err(carddev, "drive", blk, &error_fatal); - qdev_realize_and_unref(carddev, bus, &error_fatal); + qdev_realize(carddev, bus, &error_fatal); } =20 for (i =3D 0; i < XLNX_ZYNQMP_NUM_SPIS; i++) { @@ -202,13 +202,14 @@ static void xlnx_zcu102_init(MachineState *machine) spi_bus =3D qdev_get_child_bus(DEVICE(&s->soc), bus_name); g_free(bus_name); =20 - flash_dev =3D qdev_new_orphan("sst25wf080"); + flash_dev =3D qdev_new(OBJECT(machine), "spi-flash[*]", + "sst25wf080"); if (dinfo) { qdev_prop_set_drive_err(flash_dev, "drive", blk_by_legacy_dinfo(dinfo), &error_fat= al); } qdev_prop_set_uint8(flash_dev, "cs", i); - qdev_realize_and_unref(flash_dev, spi_bus, &error_fatal); + qdev_realize(flash_dev, spi_bus, &error_fatal); =20 cs_line =3D qdev_get_gpio_in_named(flash_dev, SSI_GPIO_CS, 0); =20 @@ -226,13 +227,14 @@ static void xlnx_zcu102_init(MachineState *machine) spi_bus =3D qdev_get_child_bus(DEVICE(&s->soc), bus_name); g_free(bus_name); =20 - flash_dev =3D qdev_new_orphan("n25q512a11"); + flash_dev =3D qdev_new(OBJECT(machine), "qspi-flash[*]", + "n25q512a11"); if (dinfo) { qdev_prop_set_drive_err(flash_dev, "drive", blk_by_legacy_dinfo(dinfo), &error_fat= al); } qdev_prop_set_uint8(flash_dev, "cs", i); - qdev_realize_and_unref(flash_dev, spi_bus, &error_fatal); + qdev_realize(flash_dev, spi_bus, &error_fatal); =20 cs_line =3D qdev_get_gpio_in_named(flash_dev, SSI_GPIO_CS, 0); =20 diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c index 861ee35839..e4a10861a8 100644 --- a/hw/arm/xlnx-zynqmp.c +++ b/hw/arm/xlnx-zynqmp.c @@ -365,15 +365,15 @@ static void xlnx_zynqmp_create_unimp_mmio(XlnxZynqMPS= tate *s) =20 for (nr =3D 0; nr < ARRAY_SIZE(unimp_areas); nr++) { const struct UnimpInfo *info =3D &unimp_areas[nr]; - DeviceState *dev =3D qdev_new_orphan(TYPE_UNIMPLEMENTED_DEVICE); + DeviceState *dev =3D qdev_new(OBJECT(s), info->name, + TYPE_UNIMPLEMENTED_DEVICE); SysBusDevice *sbd =3D SYS_BUS_DEVICE(dev); =20 assert(info->name && info->base && info->size > 0); qdev_prop_set_string(dev, "name", info->name); qdev_prop_set_uint64(dev, "size", info->size); - object_property_add_child(OBJECT(s), info->name, OBJECT(dev)); =20 - sysbus_realize_and_unref(sbd, &error_fatal); + sysbus_realize(sbd, &error_fatal); sysbus_mmio_map(sbd, 0, info->base); } } --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411716; cv=none; d=zohomail.com; s=zohoarc; b=R+ECfXALSBA6HPhxZbSP8PDANjoyqPM4IKvvBOqd8KUFfMc/y57esROg9nyvvnmOmB9tJlCZHld0opbR/GCUqO57hSv2S9DHGZVdx/UASipuo8cRtqPaC6wAmjJtBjKRVlHk8MhCXpQx64iokAzHE9ly9TYHuk2CKMDp4VtyE5o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411716; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ionUFbQKo6suvMYCoW8pa1wrxbYvuz2E/eGsRzs8FGo=; b=VZr3YNNuKFx+4dI/iP+nYjAqvl3hqgM2dU0fgaP+UL9DCMgMs+tZKBQivlGRIJ9Hc113lYK8K3J+up/VPispKmAHT4jCx3bL1EO5LlsKi9xd3JdCTSLmgQbYkEpoSEyAczX2dFDQUFqVkzdAVQjHL+4GrHwEdZBgMNbdHMO1AnY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411716373408.1014145713376; Sat, 18 Jul 2026 14:55:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCz5-0001J4-9B; Sat, 18 Jul 2026 17:54:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCz2-0001Ht-VE; Sat, 18 Jul 2026 17:54:08 -0400 Received: from pdx-out-007.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.34.181.151]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCyz-00047v-V2; Sat, 18 Jul 2026 17:54:08 -0400 Received: from ip-10-5-9-48.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.9.48]) by internal-pdx-out-007.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:54:02 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.53:30696] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.151:2525] with esmtp (Farcaster) id 1bdbb7ba-3b1f-4992-8eaa-58d37f056566; Sat, 18 Jul 2026 21:54:01 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC001.ant.amazon.com (10.250.64.174) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:54:01 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:53:52 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411645; x=1815947645; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ionUFbQKo6suvMYCoW8pa1wrxbYvuz2E/eGsRzs8FGo=; b=IlQO6dny3A7I2VhaxrqM746QbIcJcMrSsS/NQivsXZZG3XBEIr7pnhO9 lA4aIV8wSmu3KppCp0H/tbkxg0Q7VueMsaAF2wnyBGCzyQ6fF17ASNFFQ VIRm4jYgKWJQYR/XoDkPQmRtIIatMv7iqRm/6ga92AypiY5Yb+W/OVdhW junI1ZHV91QyHBpooawKZ21W2ZmsntNGtC8/HStu6NkW740RyF/JRYGqR S4tcaSoMQOz7W/L1RFtttpJ6S/HiF4aQPaVphWD1MNsUVM3eX4M+I2SRO lMalIRsHV5JnCNOR4pOSPyXeFqtK8sqpk9mt0WJRra4csQL/oqYRHxEPk Q==; X-CSE-ConnectionGUID: lh2cR132Si+E+4Px7x6vUw== X-CSE-MsgGUID: JmB9DgHcSimDmFIb5e0rlA== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23910589" X-Farcaster-Flow-ID: 1bdbb7ba-3b1f-4992-8eaa-58d37f056566 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 061/137] hw/arm/realview, integratorcp: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:36 +0000 Message-ID: <20260718213652.37673-62-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D045UWC002.ant.amazon.com (10.13.139.230) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.34.181.151; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-007.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.01, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411718495158500 Convert the *_orphan() device-creation calls in the hw/arm realview, integr= atorcp board files to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing SoC device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/arm/integratorcp.c:624 | qdev_new | OBJECT(machine) | "core" | board ini= t; single core module hw/arm/integratorcp.c:629 | sysbus_create_varargs | OBJECT(machine) | "pic"= | board init; primary PIC hw/arm/integratorcp.c:636 | sysbus_create_simple | OBJECT(machine) | "sic" = | board init; secondary PIC hw/arm/integratorcp.c:637 | sysbus_create_varargs | OBJECT(machine) | "pit"= | board init; single PIT hw/arm/integratorcp.c:639 | sysbus_create_simple | OBJECT(machine) | "rtc" = | board init; single pl031 RTC hw/arm/integratorcp.c:642 | sysbus_create_simple | OBJECT(machine) | "icp" = | board init; ICP control regs hw/arm/integratorcp.c:644 | sysbus_create_simple | OBJECT(machine) | "keybo= ard" | board init; pl050 KMI0 hw/arm/integratorcp.c:645 | sysbus_create_simple | OBJECT(machine) | "mouse= " | board init; pl050 KMI1 hw/arm/integratorcp.c:646 | sysbus_create_simple | OBJECT(machine) | "debug= " | board init; single debug LEDs hw/arm/integratorcp.c:648 | sysbus_create_varargs | OBJECT(machine) | "mmc"= | board init; single pl181 MMC hw/arm/integratorcp.c:657 | qdev_new | OBJECT(machine) | "sd-card" | board = init; single SD card hw/arm/integratorcp.c:664 | qdev_new | OBJECT(machine) | "aaci" | board ini= t; single pl041 audio hw/arm/integratorcp.c:676 | qdev_new | OBJECT(machine) | "clcd" | board ini= t; single pl110 CLCD hw/arm/realview.c:64 | qdev_new | parent | "split-irq[*]" | helper: threade= d Object *parent from board init; called twice =E2=86=92 auto-index hw/arm/realview.c:183 | qdev_new | OBJECT(machine) | "sysctl" | board init;= single sysctl hw/arm/realview.c:191 | qdev_new | OBJECT(machine) | "mpcore" | board init;= A9 mpcore (excl. w/ 194,209) hw/arm/realview.c:194 | qdev_new | OBJECT(machine) | "mpcore" | board init;= 11MP mpcore (excl. w/ 191,209) hw/arm/realview.c:203 | sysbus_create_varargs | OBJECT(machine) | "l2x0" | = board init; single L2 cache ctlr hw/arm/realview.c:209 | sysbus_create_simple | OBJECT(machine) | "gic" | bo= ard init; single GIC (excl. w/ 191,194) hw/arm/realview.c:215 | qdev_new | OBJECT(machine) | "aaci" | board init; s= ingle pl041 audio hw/arm/realview.c:224 | sysbus_create_simple | OBJECT(machine) | "keyboard"= | board init; pl050 KMI0 hw/arm/realview.c:225 | sysbus_create_simple | OBJECT(machine) | "mouse" | = board init; pl050 KMI1 hw/arm/realview.c:233 | qdev_new | OBJECT(machine) | "dma" | board init; si= ngle pl081 DMA hw/arm/realview.c:241 | sysbus_create_simple | OBJECT(machine) | "timer[*]"= | board init; 2=C3=97 sp804 =E2=86=92 auto-index hw/arm/realview.c:242 | sysbus_create_simple | OBJECT(machine) | "timer[*]"= | board init; 2=C3=97 sp804 =E2=86=92 auto-index hw/arm/realview.c:244 | sysbus_create_simple | OBJECT(machine) | "gpio[*]" = | board init; 3=C3=97 pl061 =E2=86=92 auto-index hw/arm/realview.c:245 | sysbus_create_simple | OBJECT(machine) | "gpio[*]" = | board init; 3=C3=97 pl061 =E2=86=92 auto-index hw/arm/realview.c:246 | sysbus_create_simple | OBJECT(machine) | "gpio[*]" = | board init; 3=C3=97 pl061 =E2=86=92 auto-index hw/arm/realview.c:248 | qdev_new | OBJECT(machine) | "clcd" | board init; s= ingle pl111 CLCD hw/arm/realview.c:255 | sysbus_create_varargs | OBJECT(machine) | "mmc" | b= oard init; single pl181 MMC hw/arm/realview.c:274 | qdev_new | OBJECT(machine) | "sd-card" | board init= ; single SD card hw/arm/realview.c:281 | sysbus_create_simple | OBJECT(machine) | "rtc" | bo= ard init; single pl031 RTC hw/arm/realview.c:284 | qdev_new | OBJECT(machine) | "pci-host" | board ini= t; single PCI host bridge hw/arm/realview.c:300 | pci_create_simple | OBJECT(machine) | "ohci" | boar= d init; single OHCI USB hw/arm/realview.c:304 | pci_create_simple | OBJECT(machine) | "scsi[*]" | b= oard init; loop =E2=86=92 auto-index hw/arm/realview.c:322 | sysbus_create_simple | OBJECT(machine) | "i2c" | bo= ard init; single SBCon I2C hw/arm/realview.c:324 | i2c_slave_create_simple | OBJECT(machine) | "ds1338= " | board init; single DS1338 RTC Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/arm/integratorcp.c | 45 ++++++++++++---------- hw/arm/realview.c | 87 +++++++++++++++++++++++++------------------ 2 files changed, 76 insertions(+), 56 deletions(-) diff --git a/hw/arm/integratorcp.c b/hw/arm/integratorcp.c index 7560ad5983..ed715a3eb8 100644 --- a/hw/arm/integratorcp.c +++ b/hw/arm/integratorcp.c @@ -621,31 +621,38 @@ static void integratorcp_init(MachineState *machine) 0, ram_size); memory_region_add_subregion(address_space_mem, 0x80000000, ram_alias); =20 - dev =3D qdev_new_orphan(TYPE_INTEGRATOR_CM); + dev =3D qdev_new(OBJECT(machine), "core", TYPE_INTEGRATOR_CM); qdev_prop_set_uint32(dev, "memsz", ram_size >> 20); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map((SysBusDevice *)dev, 0, 0x10000000); =20 - dev =3D sysbus_create_varargs_orphan(TYPE_INTEGRATOR_PIC, 0x14000000, + dev =3D sysbus_create_varargs(OBJECT(machine), "pic", + TYPE_INTEGRATOR_PIC, 0x14000000, qdev_get_gpio_in(DEVICE(cpu), ARM_CPU_IRQ), qdev_get_gpio_in(DEVICE(cpu), ARM_CPU_FIQ), NULL); for (i =3D 0; i < 32; i++) { pic[i] =3D qdev_get_gpio_in(dev, i); } - sic =3D sysbus_create_simple_orphan(TYPE_INTEGRATOR_PIC, 0xca000000, p= ic[26]); - sysbus_create_varargs_orphan("integrator_pit", 0x13000000, + sic =3D sysbus_create_simple(OBJECT(machine), "sic", + TYPE_INTEGRATOR_PIC, 0xca000000, pic[26]); + sysbus_create_varargs(OBJECT(machine), "pit", "integrator_pit", 0x1300= 0000, pic[5], pic[6], pic[7], NULL); - sysbus_create_simple_orphan("pl031", 0x15000000, pic[8]); + sysbus_create_simple(OBJECT(machine), "rtc", "pl031", 0x15000000, pic[= 8]); pl011_create(OBJECT(machine), 0x16000000, pic[1], serial_hd(0)); pl011_create(OBJECT(machine), 0x17000000, pic[2], serial_hd(1)); - icp =3D sysbus_create_simple_orphan(TYPE_ICP_CONTROL_REGS, 0xcb000000, + icp =3D sysbus_create_simple(OBJECT(machine), "icp", + TYPE_ICP_CONTROL_REGS, 0xcb000000, qdev_get_gpio_in(sic, 3)); - sysbus_create_simple_orphan("pl050_keyboard", 0x18000000, pic[3]); - sysbus_create_simple_orphan("pl050_mouse", 0x19000000, pic[4]); - sysbus_create_simple_orphan(TYPE_INTEGRATOR_DEBUG, 0x1a000000, 0); - - dev =3D sysbus_create_varargs_orphan("pl181", 0x1c000000, pic[23], pic= [24], NULL); + sysbus_create_simple(OBJECT(machine), "keyboard", + "pl050_keyboard", 0x18000000, pic[3]); + sysbus_create_simple(OBJECT(machine), "mouse", + "pl050_mouse", 0x19000000, pic[4]); + sysbus_create_simple(OBJECT(machine), "debug", + TYPE_INTEGRATOR_DEBUG, 0x1a000000, 0); + + dev =3D sysbus_create_varargs(OBJECT(machine), "mmc", "pl181", + 0x1c000000, pic[23], pic[24], NULL); qdev_connect_gpio_out_named(dev, "card-read-only", 0, qdev_get_gpio_in_named(icp, ICP_GPIO_MMC_WPROT, = 0)); qdev_connect_gpio_out_named(dev, "card-inserted", 0, @@ -654,18 +661,18 @@ static void integratorcp_init(MachineState *machine) if (dinfo) { DeviceState *card; =20 - card =3D qdev_new_orphan(TYPE_SD_CARD); + card =3D qdev_new(OBJECT(machine), "sd-card", TYPE_SD_CARD); qdev_prop_set_drive_err(card, "drive", blk_by_legacy_dinfo(dinfo), &error_fatal); - qdev_realize_and_unref(card, qdev_get_child_bus(dev, "sd-bus"), - &error_fatal); + qdev_realize(card, qdev_get_child_bus(dev, "sd-bus"), + &error_fatal); } =20 - dev =3D qdev_new_orphan("pl041"); + dev =3D qdev_new(OBJECT(machine), "aaci", "pl041"); if (machine->audiodev) { qdev_prop_set_string(dev, "audiodev", machine->audiodev); } - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, 0x1d000000); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[25]); =20 @@ -673,10 +680,10 @@ static void integratorcp_init(MachineState *machine) smc91c111_init(OBJECT(machine), 0xc8000000, pic[27]); } =20 - dev =3D qdev_new_orphan("pl110"); + dev =3D qdev_new(OBJECT(machine), "clcd", "pl110"); object_property_set_link(OBJECT(dev), "framebuffer-memory", OBJECT(address_space_mem), &error_fatal); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, 0xc0000000); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[22]); =20 diff --git a/hw/arm/realview.c b/hw/arm/realview.c index 965fef4fcf..2441137222 100644 --- a/hw/arm/realview.c +++ b/hw/arm/realview.c @@ -59,13 +59,14 @@ static const int realview_board_id[] =3D { 0x76d }; =20 -static void split_irq_from_named(DeviceState *src, const char* outname, - qemu_irq out1, qemu_irq out2) { - DeviceState *splitter =3D qdev_new_orphan(TYPE_SPLIT_IRQ); +static void split_irq_from_named(Object *parent, DeviceState *src, + const char *outname, + qemu_irq out1, qemu_irq out2) { + DeviceState *splitter =3D qdev_new(parent, "split-irq[*]", TYPE_SPLIT_= IRQ); =20 qdev_prop_set_uint32(splitter, "num-lines", 2); =20 - qdev_realize_and_unref(splitter, NULL, &error_fatal); + qdev_realize(splitter, NULL, &error_fatal); =20 qdev_connect_gpio_out(splitter, 0, out1); qdev_connect_gpio_out(splitter, 1, out2); @@ -180,49 +181,53 @@ static void realview_init(MachineState *machine, } =20 sys_id =3D is_pb ? 0x01780500 : 0xc1400400; - sysctl =3D qdev_new_orphan("realview_sysctl"); + sysctl =3D qdev_new(OBJECT(machine), "sysctl", "realview_sysctl"); qdev_prop_set_uint32(sysctl, "sys_id", sys_id); qdev_prop_set_uint32(sysctl, "proc_id", proc_id); - sysbus_realize_and_unref(SYS_BUS_DEVICE(sysctl), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(sysctl), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(sysctl), 0, 0x10000000); =20 if (is_mpcore) { if (is_pb) { - dev =3D qdev_new_orphan(TYPE_A9MPCORE_PRIV); + dev =3D qdev_new(OBJECT(machine), "mpcore", TYPE_A9MPCORE_PRIV= ); qdev_prop_set_uint32(dev, "num-irq", GIC_EXT_IRQS + GIC_INTERN= AL); } else { - dev =3D qdev_new_orphan("realview_mpcore"); + dev =3D qdev_new(OBJECT(machine), "mpcore", "realview_mpcore"); } qdev_prop_set_uint32(dev, "num-cpu", smp_cpus); busdev =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(busdev, &error_fatal); + sysbus_realize(busdev, &error_fatal); sysbus_mmio_map(busdev, 0, periphbase); for (n =3D 0; n < smp_cpus; n++) { sysbus_connect_irq(busdev, n, cpu_irq[n]); } - sysbus_create_varargs_orphan("l2x0", periphbase + 0x2000, NULL); + sysbus_create_varargs(OBJECT(machine), "l2x0", "l2x0", + periphbase + 0x2000, NULL); /* Both A9 and 11MPCore put the GIC CPU i/f at base + 0x100 */ realview_binfo.gic_cpu_if_addr =3D periphbase + 0x100; } else { uint32_t gic_addr =3D is_pb ? 0x1e000000 : 0x10040000; /* For now just create the nIRQ GIC, and ignore the others. */ - dev =3D sysbus_create_simple_orphan(TYPE_REALVIEW_GIC, gic_addr, c= pu_irq[0]); + dev =3D sysbus_create_simple(OBJECT(machine), "gic", + TYPE_REALVIEW_GIC, gic_addr, cpu_irq[0]= ); } for (n =3D 0; n < GIC_EXT_IRQS; n++) { pic[n] =3D qdev_get_gpio_in(dev, n); } =20 - pl041 =3D qdev_new_orphan("pl041"); + pl041 =3D qdev_new(OBJECT(machine), "aaci", "pl041"); qdev_prop_set_uint32(pl041, "nc_fifo_depth", 512); if (machine->audiodev) { qdev_prop_set_string(pl041, "audiodev", machine->audiodev); } - sysbus_realize_and_unref(SYS_BUS_DEVICE(pl041), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(pl041), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(pl041), 0, 0x10004000); sysbus_connect_irq(SYS_BUS_DEVICE(pl041), 0, pic[19]); =20 - sysbus_create_simple_orphan("pl050_keyboard", 0x10006000, pic[20]); - sysbus_create_simple_orphan("pl050_mouse", 0x10007000, pic[21]); + sysbus_create_simple(OBJECT(machine), "keyboard", + "pl050_keyboard", 0x10006000, pic[20]); + sysbus_create_simple(OBJECT(machine), "mouse", + "pl050_mouse", 0x10007000, pic[21]); =20 pl011_create(OBJECT(machine), 0x10009000, pic[12], serial_hd(0)); pl011_create(OBJECT(machine), 0x1000a000, pic[13], serial_hd(1)); @@ -230,40 +235,46 @@ static void realview_init(MachineState *machine, pl011_create(OBJECT(machine), 0x1000c000, pic[15], serial_hd(3)); =20 /* DMA controller is optional, apparently. */ - dev =3D qdev_new_orphan("pl081"); + dev =3D qdev_new(OBJECT(machine), "dma", "pl081"); object_property_set_link(OBJECT(dev), "downstream", OBJECT(sysmem), &error_fatal); busdev =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(busdev, &error_fatal); + sysbus_realize(busdev, &error_fatal); sysbus_mmio_map(busdev, 0, 0x10030000); sysbus_connect_irq(busdev, 0, pic[24]); =20 - sysbus_create_simple_orphan("sp804", 0x10011000, pic[4]); - sysbus_create_simple_orphan("sp804", 0x10012000, pic[5]); + sysbus_create_simple(OBJECT(machine), "timer[*]", + "sp804", 0x10011000, pic[4]); + sysbus_create_simple(OBJECT(machine), "timer[*]", + "sp804", 0x10012000, pic[5]); =20 - sysbus_create_simple_orphan("pl061", 0x10013000, pic[6]); - sysbus_create_simple_orphan("pl061", 0x10014000, pic[7]); - gpio2 =3D sysbus_create_simple_orphan("pl061", 0x10015000, pic[8]); + sysbus_create_simple(OBJECT(machine), "gpio[*]", + "pl061", 0x10013000, pic[6]); + sysbus_create_simple(OBJECT(machine), "gpio[*]", + "pl061", 0x10014000, pic[7]); + gpio2 =3D sysbus_create_simple(OBJECT(machine), "gpio[*]", + "pl061", 0x10015000, pic[8]); =20 - dev =3D qdev_new_orphan("pl111"); + dev =3D qdev_new(OBJECT(machine), "clcd", "pl111"); object_property_set_link(OBJECT(dev), "framebuffer-memory", OBJECT(sysmem), &error_fatal); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, 0x10020000); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[23]); =20 - dev =3D sysbus_create_varargs_orphan("pl181", 0x10005000, pic[17], pic= [18], NULL); + dev =3D sysbus_create_varargs(OBJECT(machine), "mmc", "pl181", + 0x10005000, pic[17], pic[18], NULL); /* Wire up MMC card detect and read-only signals. These have * to go to both the PL061 GPIO and the sysctl register. * Note that the PL181 orders these lines (readonly,inserted) * and the PL061 has them the other way about. Also the card * detect line is inverted. */ - split_irq_from_named(dev, "card-read-only", + split_irq_from_named(OBJECT(machine), dev, "card-read-only", qdev_get_gpio_in(sysctl, ARM_SYSCTL_GPIO_MMC_WPROT), qdev_get_gpio_in(gpio2, 1)); =20 - split_irq_from_named(dev, "card-inserted", + split_irq_from_named(OBJECT(machine), dev, "card-inserted", qdev_get_gpio_in(sysctl, ARM_SYSCTL_GPIO_MMC_CARDIN), qemu_irq_invert(qdev_get_gpio_in(gpio2, 0))); =20 @@ -271,19 +282,19 @@ static void realview_init(MachineState *machine, if (dinfo) { DeviceState *card; =20 - card =3D qdev_new_orphan(TYPE_SD_CARD); + card =3D qdev_new(OBJECT(machine), "sd-card", TYPE_SD_CARD); qdev_prop_set_drive_err(card, "drive", blk_by_legacy_dinfo(dinfo), &error_fatal); - qdev_realize_and_unref(card, qdev_get_child_bus(dev, "sd-bus"), - &error_fatal); + qdev_realize(card, qdev_get_child_bus(dev, "sd-bus"), + &error_fatal); } =20 - sysbus_create_simple_orphan("pl031", 0x10017000, pic[10]); + sysbus_create_simple(OBJECT(machine), "rtc", "pl031", 0x10017000, pic[= 10]); =20 if (!is_pb) { - dev =3D qdev_new_orphan("realview_pci"); + dev =3D qdev_new(OBJECT(machine), "pci-host", "realview_pci"); busdev =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(busdev, &error_fatal); + sysbus_realize(busdev, &error_fatal); sysbus_mmio_map(busdev, 0, 0x10019000); /* PCI controller register= s */ sysbus_mmio_map(busdev, 1, 0x60000000); /* PCI self-config */ sysbus_mmio_map(busdev, 2, 0x61000000); /* PCI config */ @@ -297,11 +308,12 @@ static void realview_init(MachineState *machine, sysbus_connect_irq(busdev, 3, pic[51]); pci_bus =3D (PCIBus *)qdev_get_child_bus(dev, "pci"); if (machine_usb(machine)) { - pci_create_simple_orphan(pci_bus, -1, "pci-ohci"); + pci_create_simple(OBJECT(machine), "ohci", pci_bus, -1, "pci-o= hci"); } n =3D drive_get_max_bus(IF_SCSI); while (n >=3D 0) { - dev =3D DEVICE(pci_create_simple_orphan(pci_bus, -1, "lsi53c89= 5a")); + dev =3D DEVICE(pci_create_simple(OBJECT(machine), "scsi[*]", + pci_bus, -1, "lsi53c895a")); lsi53c8xx_handle_legacy_cmdline(dev); n--; } @@ -319,9 +331,10 @@ static void realview_init(MachineState *machine, pci_init_nic_devices(pci_bus, "rtl8139"); } =20 - dev =3D sysbus_create_simple_orphan(TYPE_ARM_SBCON_I2C, 0x10002000, NU= LL); + dev =3D sysbus_create_simple(OBJECT(machine), "i2c", + TYPE_ARM_SBCON_I2C, 0x10002000, NULL); i2c =3D (I2CBus *)qdev_get_child_bus(dev, "i2c"); - i2c_slave_create_simple_orphan(i2c, "ds1338", 0x68); + i2c_slave_create_simple(OBJECT(machine), "ds1338", i2c, "ds1338", 0x68= ); =20 /* Memory map for RealView Emulation Baseboard: */ /* 0x10000000 System registers. */ --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411703; cv=none; d=zohomail.com; s=zohoarc; b=Evpamr8o4zQnrhv2M7gLpUPB02zTlLL1kEJFudCB5YGWB1/O3RAgl+rTDNoZYyH4ASjxzHHhtQCV5f//vwCymTykdFmMAPRu9FfUBdV7hJ75Gux0IIAlNrz98SLOktAnqhDMKC/XgDrgzrtHhSBOx9NiZ9imlL7r0Hl8EUnlEdo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411703; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=wGSoHUI1w2ysq9k0oLJeQXofGfjuqL81xABsv3xHSN0=; b=eL515fN0KlMCH7a/FOP3m5MCcGE3mnzX0Zm4xdZpT9nmOXrj+kfXAiuo6peVKeiarxgZH/SI4AAV4BgzLM1Wh1+evfU0ykaWaAJNXWAkMX7r+ZvLg5o7MVt4htHaz9cJ1Ehg5dsLgLk9NPlD2ZL83NQfwsnYrYvqYz1RI4DLBnw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411703379434.1993110761664; Sat, 18 Jul 2026 14:55:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCzD-0001LL-Hy; Sat, 18 Jul 2026 17:54:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCzB-0001Ku-RP; Sat, 18 Jul 2026 17:54:17 -0400 Received: from pdx-out-010.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.12.53.23]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCz8-00048V-Tf; Sat, 18 Jul 2026 17:54:17 -0400 Received: from ip-10-5-0-115.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.0.115]) by internal-pdx-out-010.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:54:11 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.111:30794] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.29.147:2525] with esmtp (Farcaster) id 1f304f5b-3294-4dc7-bde2-e0b17826e646; Sat, 18 Jul 2026 21:54:11 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB002.ant.amazon.com (10.250.64.231) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:54:10 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:54:01 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411654; x=1815947654; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=wGSoHUI1w2ysq9k0oLJeQXofGfjuqL81xABsv3xHSN0=; b=sHDY9Jj/6YwQBMlRGEbn1kDcU2r9P/4y6WyXpHAgU8QGbg41lnvW3pyK tSZ/bNDyJbon8yTmAuKsAtGzNVVMwjRMHhvEC04/9q3y57nYLVxE7kSIa /Nk5BuzYz/jTKfNfc5g/xLDBkUY3d7kOaf6aKgweAbEnj+v7nXEvEouBp sKAb6Lx3RPWgygQt9if2xvMYa0UC6lfXpskFnHdMK1dFK1QTErC5vQvjN cLBCOJMdZcnBqonPsU7UUxR/eLRGO3LLr/rtT2R0becZxFgQq/DZJJY6D jQI2FI6Egrl5W8WSDILQyN87i/qNCGsGBXIXG5sEmbvkFaRal9rayeE6u w==; X-CSE-ConnectionGUID: 2xvJNwI1Rkq2ujfbdmRUbA== X-CSE-MsgGUID: F6hwDHPmSF2sBx+OJkm7Yw== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23795311" X-Farcaster-Flow-ID: 1f304f5b-3294-4dc7-bde2-e0b17826e646 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 062/137] hw/arm/npcm: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:37 +0000 Message-ID: <20260718213652.37673-63-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D045UWC002.ant.amazon.com (10.13.139.230) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.12.53.23; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-010.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.01, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411704434158500 Convert the *_orphan() device-creation calls in the hw/arm npcm board files to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing SoC device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/arm/npcm7xx_boards.c:87 | qdev_new | parent | "flash[*]" | helper: threa= ded Object *parent from board init; multiple callers/CS =E2=86=92 auto-index hw/arm/npcm7xx_boards.c:116 | qdev_new | parent | "sd-card[*]" | helper: th= readed Object *parent from board init; per-unit =E2=86=92 auto-index hw/arm/npcm7xx_boards.c:201 | i2c_slave_create_simple | parent | "tmp105[*]= " | helper: threaded Object *parent from board init; 4=C3=97 tmp105 =E2=86= =92 auto-index hw/arm/npcm7xx_boards.c:203 | i2c_slave_create_simple | parent | "tmp105[*]= " | helper from board init; auto-index hw/arm/npcm7xx_boards.c:205 | i2c_slave_create_simple | parent | "tmp105[*]= " | helper from board init; auto-index hw/arm/npcm7xx_boards.c:207 | i2c_slave_create_simple | parent | "tmp105[*]= " | helper from board init; auto-index hw/arm/npcm7xx_boards.c:237 | i2c_slave_create_simple | parent | "tmp105[*]= " | helper: threaded Object *parent from board init; 4=C3=97 tmp105 =E2=86= =92 auto-index hw/arm/npcm7xx_boards.c:238 | i2c_slave_create_simple | parent | "tmp105[*]= " | helper from board init; auto-index hw/arm/npcm7xx_boards.c:239 | i2c_slave_create_simple | parent | "tmp105[*]= " | helper from board init; auto-index hw/arm/npcm7xx_boards.c:240 | i2c_slave_create_simple | parent | "tmp105[*]= " | helper from board init; auto-index hw/arm/npcm7xx_boards.c:256 | i2c_slave_create_simple | parent | "pca9548" = | helper from board init; single mux hw/arm/npcm7xx_boards.c:336 | i2c_slave_create_simple | parent | "pca9548[*= ]" | helper: threaded Object *parent from board init; 4=C3=97 pca9548 =E2= =86=92 auto-index hw/arm/npcm7xx_boards.c:340 | i2c_slave_create_simple | parent | "tmp105[*]= " | helper from board init; 8=C3=97 tmp105 =E2=86=92 auto-index hw/arm/npcm7xx_boards.c:341 | i2c_slave_create_simple | parent | "tmp105[*]= " | helper from board init; auto-index hw/arm/npcm7xx_boards.c:342 | i2c_slave_create_simple | parent | "tmp105[*]= " | helper from board init; auto-index hw/arm/npcm7xx_boards.c:343 | i2c_slave_create_simple | parent | "tmp105[*]= " | helper from board init; auto-index hw/arm/npcm7xx_boards.c:345 | i2c_slave_create_simple | parent | "pca9548[*= ]" | helper from board init; auto-index hw/arm/npcm7xx_boards.c:347 | i2c_slave_create_simple | parent | "pca9548[*= ]" | helper from board init; auto-index hw/arm/npcm7xx_boards.c:351 | i2c_slave_create_simple | parent | "pca9548[*= ]" | helper from board init; auto-index hw/arm/npcm7xx_boards.c:355 | i2c_slave_create_simple | parent | "tmp105[*]= " | helper from board init; auto-index hw/arm/npcm7xx_boards.c:356 | i2c_slave_create_simple | parent | "tmp105[*]= " | helper from board init; auto-index hw/arm/npcm7xx_boards.c:357 | i2c_slave_create_simple | parent | "tmp105[*]= " | helper from board init; auto-index hw/arm/npcm7xx_boards.c:358 | i2c_slave_create_simple | parent | "tmp105[*]= " | helper from board init; auto-index hw/arm/npcm7xx.c:524 | sysbus_create_simple | OBJECT(dev) | "l2x0" | SoC De= viceClass.realize(dev); single L2 cache ctlr hw/arm/npcm8xx_boards.c:64 | qdev_new | parent | "flash[*]" | helper: threa= ded Object *parent from board init; auto-index hw/arm/npcm8xx_boards.c:162 | i2c_slave_create_simple | parent | "tmp105" |= helper: threaded Object *parent from board init; single tmp105 Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/arm/npcm7xx.c | 2 +- hw/arm/npcm7xx_boards.c | 107 ++++++++++++++++++++++++---------------- hw/arm/npcm8xx_boards.c | 19 ++++--- 3 files changed, 77 insertions(+), 51 deletions(-) diff --git a/hw/arm/npcm7xx.c b/hw/arm/npcm7xx.c index 8363a04f10..a930f7843a 100644 --- a/hw/arm/npcm7xx.c +++ b/hw/arm/npcm7xx.c @@ -521,7 +521,7 @@ static void npcm7xx_realize(DeviceState *dev, Error **e= rrp) } =20 /* L2 cache controller */ - sysbus_create_simple_orphan("l2x0", NPCM7XX_L2C_BA, NULL); + sysbus_create_simple(OBJECT(dev), "l2x0", "l2x0", NPCM7XX_L2C_BA, NULL= ); =20 /* System Global Control Registers (GCR). Can fail due to user input. = */ object_property_set_int(OBJECT(&s->gcr), "disabled-modules", diff --git a/hw/arm/npcm7xx_boards.c b/hw/arm/npcm7xx_boards.c index 7b5cdd7191..778ef0f232 100644 --- a/hw/arm/npcm7xx_boards.c +++ b/hw/arm/npcm7xx_boards.c @@ -78,17 +78,18 @@ static void npcm7xx_load_bootrom(MachineState *machine,= NPCM7xxState *soc) } } =20 -static void npcm7xx_connect_flash(NPCM7xxFIUState *fiu, int cs_no, - const char *flash_type, DriveInfo *dinfo) +static void npcm7xx_connect_flash(Object *parent, NPCM7xxFIUState *fiu, + int cs_no, const char *flash_type, + DriveInfo *dinfo) { DeviceState *flash; qemu_irq flash_cs; =20 - flash =3D qdev_new_orphan(flash_type); + flash =3D qdev_new(parent, "flash[*]", flash_type); if (dinfo) { qdev_prop_set_drive(flash, "drive", blk_by_legacy_dinfo(dinfo)); } - qdev_realize_and_unref(flash, BUS(fiu->spi), &error_fatal); + qdev_realize(flash, BUS(fiu->spi), &error_fatal); =20 flash_cs =3D qdev_get_gpio_in_named(flash, SSI_GPIO_CS, 0); qdev_connect_gpio_out_named(DEVICE(fiu), "cs", cs_no, flash_cs); @@ -102,7 +103,7 @@ static void npcm7xx_connect_dram(NPCM7xxState *soc, Mem= oryRegion *dram) &error_abort); } =20 -static void sdhci_attach_drive(SDHCIState *sdhci, int unit) +static void sdhci_attach_drive(Object *parent, SDHCIState *sdhci, int unit) { DriveInfo *di =3D drive_get(IF_SD, 0, unit); BlockBackend *blk =3D di ? blk_by_legacy_dinfo(di) : NULL; @@ -113,9 +114,9 @@ static void sdhci_attach_drive(SDHCIState *sdhci, int u= nit) exit(1); } =20 - DeviceState *carddev =3D qdev_new_orphan(TYPE_SD_CARD); + DeviceState *carddev =3D qdev_new(parent, "sd-card[*]", TYPE_SD_CA= RD); qdev_prop_set_drive_err(carddev, "drive", blk, &error_fatal); - qdev_realize_and_unref(carddev, bus, &error_fatal); + qdev_realize(carddev, bus, &error_fatal); } =20 static NPCM7xxState *npcm7xx_create_soc(MachineState *machine, @@ -195,16 +196,20 @@ static void npcm7xx_connect_pwm_fan(NPCM7xxState *soc= , SplitIRQ *splitter, qdev_connect_gpio_out(DEVICE(splitter), output_no, fan_duty_gpio); } =20 -static void npcm750_evb_i2c_init(NPCM7xxState *soc) +static void npcm750_evb_i2c_init(Object *parent, NPCM7xxState *soc) { /* lm75 temperature sensor on SVB, tmp105 is compatible */ - i2c_slave_create_simple_orphan(npcm7xx_i2c_get_bus(soc, 0), "tmp105", = 0x48); + i2c_slave_create_simple(parent, "tmp105[*]", + npcm7xx_i2c_get_bus(soc, 0), "tmp105", 0x48); /* lm75 temperature sensor on EB, tmp105 is compatible */ - i2c_slave_create_simple_orphan(npcm7xx_i2c_get_bus(soc, 1), "tmp105", = 0x48); + i2c_slave_create_simple(parent, "tmp105[*]", + npcm7xx_i2c_get_bus(soc, 1), "tmp105", 0x48); /* tmp100 temperature sensor on EB, tmp105 is compatible */ - i2c_slave_create_simple_orphan(npcm7xx_i2c_get_bus(soc, 2), "tmp105", = 0x48); + i2c_slave_create_simple(parent, "tmp105[*]", + npcm7xx_i2c_get_bus(soc, 2), "tmp105", 0x48); /* tmp100 temperature sensor on SVB, tmp105 is compatible */ - i2c_slave_create_simple_orphan(npcm7xx_i2c_get_bus(soc, 6), "tmp105", = 0x48); + i2c_slave_create_simple(parent, "tmp105[*]", + npcm7xx_i2c_get_bus(soc, 6), "tmp105", 0x48); } =20 static void npcm750_evb_fan_init(NPCM7xxMachine *machine, NPCM7xxState *so= c) @@ -231,13 +236,17 @@ static void npcm750_evb_fan_init(NPCM7xxMachine *mach= ine, NPCM7xxState *soc) npcm7xx_connect_pwm_fan(soc, &splitter[7], 0x0f, 1); } =20 -static void quanta_gsj_i2c_init(NPCM7xxState *soc) +static void quanta_gsj_i2c_init(Object *parent, NPCM7xxState *soc) { /* GSJ machine have 4 max31725 temperature sensors, tmp105 is compatib= le. */ - i2c_slave_create_simple_orphan(npcm7xx_i2c_get_bus(soc, 1), "tmp105", = 0x5c); - i2c_slave_create_simple_orphan(npcm7xx_i2c_get_bus(soc, 2), "tmp105", = 0x5c); - i2c_slave_create_simple_orphan(npcm7xx_i2c_get_bus(soc, 3), "tmp105", = 0x5c); - i2c_slave_create_simple_orphan(npcm7xx_i2c_get_bus(soc, 4), "tmp105", = 0x5c); + i2c_slave_create_simple(parent, "tmp105[*]", + npcm7xx_i2c_get_bus(soc, 1), "tmp105", 0x5c); + i2c_slave_create_simple(parent, "tmp105[*]", + npcm7xx_i2c_get_bus(soc, 2), "tmp105", 0x5c); + i2c_slave_create_simple(parent, "tmp105[*]", + npcm7xx_i2c_get_bus(soc, 3), "tmp105", 0x5c); + i2c_slave_create_simple(parent, "tmp105[*]", + npcm7xx_i2c_get_bus(soc, 4), "tmp105", 0x5c); =20 at24c_eeprom_init(npcm7xx_i2c_get_bus(soc, 9), 0x55, 8192); at24c_eeprom_init(npcm7xx_i2c_get_bus(soc, 10), 0x55, 8192); @@ -253,7 +262,8 @@ static void quanta_gsj_i2c_init(NPCM7xxState *soc) * - ucd90160@6b */ =20 - i2c_slave_create_simple_orphan(npcm7xx_i2c_get_bus(soc, 15), "pca9548"= , 0x75); + i2c_slave_create_simple(parent, "pca9548", + npcm7xx_i2c_get_bus(soc, 15), "pca9548", 0x75); } =20 static void quanta_gsj_fan_init(NPCM7xxMachine *machine, NPCM7xxState *soc) @@ -329,33 +339,45 @@ static void quanta_gbs_i2c_init(NPCM7xxState *soc) */ } =20 -static void kudo_bmc_i2c_init(NPCM7xxState *soc) +static void kudo_bmc_i2c_init(Object *parent, NPCM7xxState *soc) { I2CSlave *i2c_mux; =20 - i2c_mux =3D i2c_slave_create_simple_orphan(npcm7xx_i2c_get_bus(soc, 1), + i2c_mux =3D i2c_slave_create_simple(parent, "pca9548[*]", + npcm7xx_i2c_get_bus(soc, 1), TYPE_PCA9548, 0x75); =20 /* tmp105 is compatible with the lm75 */ - i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 4), "tmp10= 5", 0x5c); - i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 5), "tmp10= 5", 0x5c); - i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 6), "tmp10= 5", 0x5c); - i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 7), "tmp10= 5", 0x5c); + i2c_slave_create_simple(parent, "tmp105[*]", + pca954x_i2c_get_bus(i2c_mux, 4), "tmp105", 0x5= c); + i2c_slave_create_simple(parent, "tmp105[*]", + pca954x_i2c_get_bus(i2c_mux, 5), "tmp105", 0x5= c); + i2c_slave_create_simple(parent, "tmp105[*]", + pca954x_i2c_get_bus(i2c_mux, 6), "tmp105", 0x5= c); + i2c_slave_create_simple(parent, "tmp105[*]", + pca954x_i2c_get_bus(i2c_mux, 7), "tmp105", 0x5= c); =20 - i2c_slave_create_simple_orphan(npcm7xx_i2c_get_bus(soc, 1), TYPE_PCA95= 48, 0x77); + i2c_slave_create_simple(parent, "pca9548[*]", + npcm7xx_i2c_get_bus(soc, 1), TYPE_PCA9548, 0x7= 7); =20 - i2c_slave_create_simple_orphan(npcm7xx_i2c_get_bus(soc, 4), TYPE_PCA95= 48, 0x77); + i2c_slave_create_simple(parent, "pca9548[*]", + npcm7xx_i2c_get_bus(soc, 4), TYPE_PCA9548, 0x7= 7); =20 at24c_eeprom_init(npcm7xx_i2c_get_bus(soc, 4), 0x50, 8192); /* mbfru */ =20 - i2c_mux =3D i2c_slave_create_simple_orphan(npcm7xx_i2c_get_bus(soc, 13= ), + i2c_mux =3D i2c_slave_create_simple(parent, "pca9548[*]", + npcm7xx_i2c_get_bus(soc, 13), TYPE_PCA9548, 0x77); =20 /* tmp105 is compatible with the lm75 */ - i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 2), "tmp10= 5", 0x48); - i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 3), "tmp10= 5", 0x49); - i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 4), "tmp10= 5", 0x48); - i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 5), "tmp10= 5", 0x49); + i2c_slave_create_simple(parent, "tmp105[*]", + pca954x_i2c_get_bus(i2c_mux, 2), "tmp105", 0x4= 8); + i2c_slave_create_simple(parent, "tmp105[*]", + pca954x_i2c_get_bus(i2c_mux, 3), "tmp105", 0x4= 9); + i2c_slave_create_simple(parent, "tmp105[*]", + pca954x_i2c_get_bus(i2c_mux, 4), "tmp105", 0x4= 8); + i2c_slave_create_simple(parent, "tmp105[*]", + pca954x_i2c_get_bus(i2c_mux, 5), "tmp105", 0x4= 9); =20 at24c_eeprom_init(npcm7xx_i2c_get_bus(soc, 14), 0x55, 8192); /* bmcfru= */ =20 @@ -371,8 +393,9 @@ static void npcm750_evb_init(MachineState *machine) qdev_realize(DEVICE(soc), NULL, &error_fatal); =20 npcm7xx_load_bootrom(machine, soc); - npcm7xx_connect_flash(&soc->fiu[0], 0, "w25q256", drive_get(IF_MTD, 0,= 0)); - npcm750_evb_i2c_init(soc); + npcm7xx_connect_flash(OBJECT(machine), &soc->fiu[0], 0, "w25q256", + drive_get(IF_MTD, 0, 0)); + npcm750_evb_i2c_init(OBJECT(machine), soc); npcm750_evb_fan_init(NPCM7XX_MACHINE(machine), soc); npcm7xx_load_kernel(machine, soc); } @@ -386,9 +409,9 @@ static void quanta_gsj_init(MachineState *machine) qdev_realize(DEVICE(soc), NULL, &error_fatal); =20 npcm7xx_load_bootrom(machine, soc); - npcm7xx_connect_flash(&soc->fiu[0], 0, "mx25l25635e", + npcm7xx_connect_flash(OBJECT(machine), &soc->fiu[0], 0, "mx25l25635e", drive_get(IF_MTD, 0, 0)); - quanta_gsj_i2c_init(soc); + quanta_gsj_i2c_init(OBJECT(machine), soc); quanta_gsj_fan_init(NPCM7XX_MACHINE(machine), soc); npcm7xx_load_kernel(machine, soc); } @@ -403,11 +426,11 @@ static void quanta_gbs_init(MachineState *machine) =20 npcm7xx_load_bootrom(machine, soc); =20 - npcm7xx_connect_flash(&soc->fiu[0], 0, "mx66u51235f", + npcm7xx_connect_flash(OBJECT(machine), &soc->fiu[0], 0, "mx66u51235f", drive_get(IF_MTD, 0, 0)); =20 quanta_gbs_i2c_init(soc); - sdhci_attach_drive(&soc->mmc.sdhci, 0); + sdhci_attach_drive(OBJECT(machine), &soc->mmc.sdhci, 0); npcm7xx_load_kernel(machine, soc); } =20 @@ -420,13 +443,13 @@ static void kudo_bmc_init(MachineState *machine) qdev_realize(DEVICE(soc), NULL, &error_fatal); =20 npcm7xx_load_bootrom(machine, soc); - npcm7xx_connect_flash(&soc->fiu[0], 0, "mx66u51235f", + npcm7xx_connect_flash(OBJECT(machine), &soc->fiu[0], 0, "mx66u51235f", drive_get(IF_MTD, 0, 0)); - npcm7xx_connect_flash(&soc->fiu[1], 0, "mx66u51235f", + npcm7xx_connect_flash(OBJECT(machine), &soc->fiu[1], 0, "mx66u51235f", drive_get(IF_MTD, 3, 0)); =20 - kudo_bmc_i2c_init(soc); - sdhci_attach_drive(&soc->mmc.sdhci, 0); + kudo_bmc_i2c_init(OBJECT(machine), soc); + sdhci_attach_drive(OBJECT(machine), &soc->mmc.sdhci, 0); npcm7xx_load_kernel(machine, soc); } =20 @@ -439,7 +462,7 @@ static void mori_bmc_init(MachineState *machine) qdev_realize(DEVICE(soc), NULL, &error_fatal); =20 npcm7xx_load_bootrom(machine, soc); - npcm7xx_connect_flash(&soc->fiu[1], 0, "mx66u51235f", + npcm7xx_connect_flash(OBJECT(machine), &soc->fiu[1], 0, "mx66u51235f", drive_get(IF_MTD, 3, 0)); =20 npcm7xx_load_kernel(machine, soc); diff --git a/hw/arm/npcm8xx_boards.c b/hw/arm/npcm8xx_boards.c index eb0248552f..ff2840b409 100644 --- a/hw/arm/npcm8xx_boards.c +++ b/hw/arm/npcm8xx_boards.c @@ -55,17 +55,18 @@ static void npcm8xx_load_bootrom(MachineState *machine,= NPCM8xxState *soc) } } =20 -static void npcm8xx_connect_flash(NPCM7xxFIUState *fiu, int cs_no, - const char *flash_type, DriveInfo *dinfo) +static void npcm8xx_connect_flash(Object *parent, NPCM7xxFIUState *fiu, + int cs_no, const char *flash_type, + DriveInfo *dinfo) { DeviceState *flash; qemu_irq flash_cs; =20 - flash =3D qdev_new_orphan(flash_type); + flash =3D qdev_new(parent, "flash[*]", flash_type); if (dinfo) { qdev_prop_set_drive(flash, "drive", blk_by_legacy_dinfo(dinfo)); } - qdev_realize_and_unref(flash, BUS(fiu->spi), &error_fatal); + qdev_realize(flash, BUS(fiu->spi), &error_fatal); =20 flash_cs =3D qdev_get_gpio_in_named(flash, SSI_GPIO_CS, 0); qdev_connect_gpio_out_named(DEVICE(fiu), "cs", cs_no, flash_cs); @@ -156,10 +157,11 @@ static void npcm8xx_connect_pwm_fan(NPCM8xxState *soc= , SplitIRQ *splitter, qdev_connect_gpio_out(DEVICE(splitter), output_no, fan_duty_gpio); } =20 -static void npcm845_evb_i2c_init(NPCM8xxState *soc) +static void npcm845_evb_i2c_init(Object *parent, NPCM8xxState *soc) { /* tmp100 temperature sensor on SVB, tmp105 is compatible */ - i2c_slave_create_simple_orphan(npcm8xx_i2c_get_bus(soc, 6), "tmp105", = 0x48); + i2c_slave_create_simple(parent, "tmp105", + npcm8xx_i2c_get_bus(soc, 6), "tmp105", 0x48); } =20 static void npcm845_evb_fan_init(NPCM8xxMachine *machine, NPCM8xxState *so= c) @@ -195,8 +197,9 @@ static void npcm845_evb_init(MachineState *machine) qdev_realize(DEVICE(soc), NULL, &error_fatal); =20 npcm8xx_load_bootrom(machine, soc); - npcm8xx_connect_flash(&soc->fiu[0], 0, "w25q256", drive_get(IF_MTD, 0,= 0)); - npcm845_evb_i2c_init(soc); + npcm8xx_connect_flash(OBJECT(machine), &soc->fiu[0], 0, "w25q256", + drive_get(IF_MTD, 0, 0)); + npcm845_evb_i2c_init(OBJECT(machine), soc); npcm845_evb_fan_init(NPCM8XX_MACHINE(machine), soc); npcm8xx_load_kernel(machine, soc); } --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411704; cv=none; d=zohomail.com; s=zohoarc; b=Oj+6nnjh2h9pCXHFqa3JMTvis14w+quZwBCDdcaYA91gItwJqg9RvcPtuzE8kcN8hOJF/CFHnDfbZAXX2FGbKU3rUIF1WHY2e4nk9aZAerZsgNOWF88yAT6LpskcPtSvKiHz9isPIJLoRiHfN/750p3aXy4X3UbHJ6f6UKiTK2Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411704; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=XXcX6cyNEpmuM55gtPA9WgOb2tto2fQXz4Qv+yiFgAI=; b=J26hRgrDmGz4J5f/SGeiEI6Kd1SB2ZzjKRJK1qVgqCeEG0DlKVNBXE7c6Q47zkLF8SkdaLiMOI33v2FmYg34Hf7W7zFYZQg6+hUe/u04LH9hphkXexYsFI6e2MZ9sK9qyulguykbfktWDk9COac25mby4YLWzdbsHVcIRRBNS40= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17844117039894.496085650532791; Sat, 18 Jul 2026 14:55:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlCzo-000292-Tn; Sat, 18 Jul 2026 17:54:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCzj-00025c-KU; Sat, 18 Jul 2026 17:54:52 -0400 Received: from pdx-out-006.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.26.1.71]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCze-00049M-Qg; Sat, 18 Jul 2026 17:54:49 -0400 Received: from ip-10-5-9-48.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.9.48]) by internal-pdx-out-006.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:54:43 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.234:29108] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.0.115:2525] with esmtp (Farcaster) id 9acfdff6-759e-4fcd-90ae-05d374577bb8; Sat, 18 Jul 2026 21:54:42 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA002.ant.amazon.com (10.250.64.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:54:42 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:54:32 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411686; x=1815947686; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=XXcX6cyNEpmuM55gtPA9WgOb2tto2fQXz4Qv+yiFgAI=; b=rmg09wojh9B09XlwR6cmHI9xMPjYE3GdnQd+poSWdklFCQQ5JWjXJ/QV z27Dt5nMGQDBDLJcVKnXqs5KK7sYwczPiE0Fhp9rvcdYHJFkqrH6RWiEW O/2aeNE0TvTrxgwxeDBkkkb6VJFVLPZltlLhyb+qJ/YLHVxE3ZXlYvxTl 6vYFIk6Kat5YKf6llDldBQJdMRxMKfaTsp0IJQ5WEZrl2z/NcdGuT2APQ jzpWDo3gEjcgIu4q9xnh0MSJPZf3xLY8ngc148t2FnhzgGS9k/CNNaUgK 8hmhWxL+tF5WIXjdgFBIehUAqbc5wkmyFoF/LqrM9tiZnHPUE8iDcAnZ/ Q==; X-CSE-ConnectionGUID: 7epSKBDoQ46DuC3YuSgIdA== X-CSE-MsgGUID: +j0qoYk4QRS/52GKQySUyQ== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23944248" X-Farcaster-Flow-ID: 9acfdff6-759e-4fcd-90ae-05d374577bb8 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 063/137] hw/arm/versatile, vexpress: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:38 +0000 Message-ID: <20260718213652.37673-64-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D043UWC001.ant.amazon.com (10.13.139.202) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.26.1.71; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-006.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411704422158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in the hw/arm versatile, vexpr= ess board files to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing SoC device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/arm/versatilepb.c:229 | qdev_new | OBJECT(machine) | "sysctl" | board in= it(); machine owns onboard sysctl hw/arm/versatilepb.c:235 | sysbus_create_varargs | OBJECT(machine) | "vic" = | board init(); PL190 primary intc hw/arm/versatilepb.c:242 | sysbus_create_simple | OBJECT(machine) | "sic" |= board init(); secondary intc hw/arm/versatilepb.c:248 | sysbus_create_simple | OBJECT(machine) | "keyboa= rd" | board init(); single KMI kbd hw/arm/versatilepb.c:249 | sysbus_create_simple | OBJECT(machine) | "mouse"= | board init(); single KMI mouse hw/arm/versatilepb.c:251 | qdev_new | OBJECT(machine) | "pci-host" | board = init(); versatile PCI host bridge hw/arm/versatilepb.c:273 | pci_create_simple | OBJECT(machine) | "usb" | bo= ard init(); optional OHCI on PCI bus hw/arm/versatilepb.c:277 | pci_create_simple | OBJECT(machine) | "scsi[*]" = | board init(); loop over IF_SCSI buses hw/arm/versatilepb.c:287 | qdev_new | OBJECT(machine) | "dma" | board init(= ); PL080 DMA hw/arm/versatilepb.c:295 | sysbus_create_simple | OBJECT(machine) | "timer[= *]" | board init(); two SP804 blocks hw/arm/versatilepb.c:296 | sysbus_create_simple | OBJECT(machine) | "timer[= *]" | board init(); auto-index sibling hw/arm/versatilepb.c:298 | sysbus_create_simple | OBJECT(machine) | "gpio[*= ]" | board init(); four PL061 ports hw/arm/versatilepb.c:299 | sysbus_create_simple | OBJECT(machine) | "gpio[*= ]" | board init(); auto-index sibling hw/arm/versatilepb.c:300 | sysbus_create_simple | OBJECT(machine) | "gpio[*= ]" | board init(); auto-index sibling hw/arm/versatilepb.c:301 | sysbus_create_simple | OBJECT(machine) | "gpio[*= ]" | board init(); auto-index sibling hw/arm/versatilepb.c:305 | qdev_new | OBJECT(machine) | "clcd" | board init= (); PL110 display hw/arm/versatilepb.c:315 | sysbus_create_varargs | OBJECT(machine) | "mmci[= *]" | board init(); two PL181 MMCI hw/arm/versatilepb.c:320 | qdev_new | OBJECT(machine) | "sd-card[*]" | boar= d init(); removable card owned by machine hw/arm/versatilepb.c:327 | sysbus_create_varargs | OBJECT(machine) | "mmci[= *]" | board init(); auto-index sibling hw/arm/versatilepb.c:332 | qdev_new | OBJECT(machine) | "sd-card[*]" | boar= d init(); auto-index sibling hw/arm/versatilepb.c:340 | sysbus_create_simple | OBJECT(machine) | "rtc" |= board init(); PL031 RTC hw/arm/versatilepb.c:342 | sysbus_create_simple | OBJECT(machine) | "i2c" |= board init(); SBCon I2C bridge hw/arm/versatilepb.c:344 | i2c_slave_create_simple | OBJECT(machine) | "ds1= 338" | board init(); onboard I2C RTC chip hw/arm/versatilepb.c:347 | qdev_new | OBJECT(machine) | "aaci" | board init= (); PL041 audio hw/arm/vexpress.c:244 | qdev_new | OBJECT(ms) | "mpcore" | init_cpus() take= s MachineState *ms; A9/A15 priv block hw/arm/vexpress.c:304 | qdev_new | OBJECT(vms) | "db-clcd" | a9_daughterboa= rd_init() has vms; distinct from motherboard clcd hw/arm/vexpress.c:316 | sysbus_create_simple | OBJECT(vms) | "timer[*]" | a= 9 daughterboard SP804; auto-index shared with motherboard timers hw/arm/vexpress.c:324 | sysbus_create_varargs | OBJECT(vms) | "l2x0" | a9 d= aughterboard L2 cache ctrl hw/arm/vexpress.c:520 | qdev_new | parent | "flash[*]" | helper: thread Obj= ect *parent as first arg; two callers pass OBJECT(machine) hw/arm/vexpress.c:595 | qdev_new | OBJECT(machine) | "sysctl" | vexpress_co= mmon_init(MachineState *machine) hw/arm/vexpress.c:617 | qdev_new | OBJECT(machine) | "aaci" | board init();= PL041 audio hw/arm/vexpress.c:626 | sysbus_create_varargs | OBJECT(machine) | "mmci" | = board init(); single PL181 hw/arm/vexpress.c:636 | qdev_new | OBJECT(machine) | "sd-card" | board init= (); single removable SD hw/arm/vexpress.c:643 | sysbus_create_simple | OBJECT(machine) | "keyboard"= | board init(); KMI0 hw/arm/vexpress.c:644 | sysbus_create_simple | OBJECT(machine) | "mouse" | = board init(); KMI1 hw/arm/vexpress.c:651 | sysbus_create_simple | OBJECT(machine) | "timer[*]"= | board init(); motherboard SP804 hw/arm/vexpress.c:652 | sysbus_create_simple | OBJECT(machine) | "timer[*]"= | board init(); auto-index sibling hw/arm/vexpress.c:654 | sysbus_create_simple | OBJECT(machine) | "i2c" | bo= ard init(); SBCon serial DVI I2C hw/arm/vexpress.c:656 | i2c_slave_create_simple | OBJECT(machine) | "sii902= 2" | board init(); HDMI transmitter chip hw/arm/vexpress.c:658 | sysbus_create_simple | OBJECT(machine) | "rtc" | bo= ard init(); PL031 hw/arm/vexpress.c:662 | qdev_new | OBJECT(machine) | "clcd" | board init();= motherboard PL111 hw/arm/vexpress.c:709 | sysbus_create_simple | OBJECT(machine) | "virtio-mm= io[*]" | board init(); loop of transports Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/arm/versatilepb.c | 70 +++++++++++++++++++++++--------------------- hw/arm/vexpress.c | 66 +++++++++++++++++++++-------------------- 2 files changed, 72 insertions(+), 64 deletions(-) diff --git a/hw/arm/versatilepb.c b/hw/arm/versatilepb.c index 6fb7223265..f68c4765c6 100644 --- a/hw/arm/versatilepb.c +++ b/hw/arm/versatilepb.c @@ -226,31 +226,33 @@ static void versatile_init(MachineState *machine, int= board_id) /* SDRAM at address zero. */ memory_region_add_subregion(sysmem, 0, machine->ram); =20 - sysctl =3D qdev_new_orphan("realview_sysctl"); + sysctl =3D qdev_new(OBJECT(machine), "sysctl", "realview_sysctl"); qdev_prop_set_uint32(sysctl, "sys_id", 0x41007004); qdev_prop_set_uint32(sysctl, "proc_id", 0x02000000); - sysbus_realize_and_unref(SYS_BUS_DEVICE(sysctl), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(sysctl), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(sysctl), 0, 0x10000000); =20 - dev =3D sysbus_create_varargs_orphan("pl190", 0x10140000, + dev =3D sysbus_create_varargs(OBJECT(machine), "vic", "pl190", 0x10140= 000, qdev_get_gpio_in(DEVICE(cpu), ARM_CPU_IRQ), qdev_get_gpio_in(DEVICE(cpu), ARM_CPU_FIQ), NULL); for (n =3D 0; n < 32; n++) { pic[n] =3D qdev_get_gpio_in(dev, n); } - dev =3D sysbus_create_simple_orphan(TYPE_VERSATILE_PB_SIC, 0x10003000,= NULL); + dev =3D sysbus_create_simple(OBJECT(machine), "sic", + TYPE_VERSATILE_PB_SIC, 0x10003000, NULL); for (n =3D 0; n < 32; n++) { sysbus_connect_irq(SYS_BUS_DEVICE(dev), n, pic[n]); sic[n] =3D qdev_get_gpio_in(dev, n); } =20 - sysbus_create_simple_orphan("pl050_keyboard", 0x10006000, sic[3]); - sysbus_create_simple_orphan("pl050_mouse", 0x10007000, sic[4]); + sysbus_create_simple(OBJECT(machine), "keyboard", "pl050_keyboard", + 0x10006000, sic[3]); + sysbus_create_simple(OBJECT(machine), "mouse", "pl050_mouse", 0x100070= 00, sic[4]); =20 - dev =3D qdev_new_orphan("versatile_pci"); + dev =3D qdev_new(OBJECT(machine), "pci-host", "versatile_pci"); busdev =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(busdev, &error_fatal); + sysbus_realize(busdev, &error_fatal); sysbus_mmio_map(busdev, 0, 0x10001000); /* PCI controller regs */ sysbus_mmio_map(busdev, 1, 0x41000000); /* PCI self-config */ sysbus_mmio_map(busdev, 2, 0x42000000); /* PCI config */ @@ -270,11 +272,12 @@ static void versatile_init(MachineState *machine, int= board_id) pci_init_nic_devices(pci_bus, "rtl8139"); =20 if (machine_usb(machine)) { - pci_create_simple_orphan(pci_bus, -1, "pci-ohci"); + pci_create_simple(OBJECT(machine), "usb", pci_bus, -1, "pci-ohci"); } n =3D drive_get_max_bus(IF_SCSI); while (n >=3D 0) { - dev =3D DEVICE(pci_create_simple_orphan(pci_bus, -1, "lsi53c895a")= ); + dev =3D DEVICE(pci_create_simple(OBJECT(machine), "scsi[*]", + pci_bus, -1, "lsi53c895a")); lsi53c8xx_handle_legacy_cmdline(dev); n--; } @@ -284,72 +287,73 @@ static void versatile_init(MachineState *machine, int= board_id) pl011_create(OBJECT(machine), 0x101f3000, pic[14], serial_hd(2)); pl011_create(OBJECT(machine), 0x10009000, sic[6], serial_hd(3)); =20 - dev =3D qdev_new_orphan("pl080"); + dev =3D qdev_new(OBJECT(machine), "dma", "pl080"); object_property_set_link(OBJECT(dev), "downstream", OBJECT(sysmem), &error_fatal); busdev =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(busdev, &error_fatal); + sysbus_realize(busdev, &error_fatal); sysbus_mmio_map(busdev, 0, 0x10130000); sysbus_connect_irq(busdev, 0, pic[17]); =20 - sysbus_create_simple_orphan("sp804", 0x101e2000, pic[4]); - sysbus_create_simple_orphan("sp804", 0x101e3000, pic[5]); + sysbus_create_simple(OBJECT(machine), "timer[*]", "sp804", 0x101e2000,= pic[4]); + sysbus_create_simple(OBJECT(machine), "timer[*]", "sp804", 0x101e3000,= pic[5]); =20 - sysbus_create_simple_orphan("pl061", 0x101e4000, pic[6]); - sysbus_create_simple_orphan("pl061", 0x101e5000, pic[7]); - sysbus_create_simple_orphan("pl061", 0x101e6000, pic[8]); - sysbus_create_simple_orphan("pl061", 0x101e7000, pic[9]); + sysbus_create_simple(OBJECT(machine), "gpio[*]", "pl061", 0x101e4000, = pic[6]); + sysbus_create_simple(OBJECT(machine), "gpio[*]", "pl061", 0x101e5000, = pic[7]); + sysbus_create_simple(OBJECT(machine), "gpio[*]", "pl061", 0x101e6000, = pic[8]); + sysbus_create_simple(OBJECT(machine), "gpio[*]", "pl061", 0x101e7000, = pic[9]); =20 /* The versatile/PB actually has a modified Color LCD controller that includes hardware cursor support from the PL111. */ - dev =3D qdev_new_orphan("pl110_versatile"); + dev =3D qdev_new(OBJECT(machine), "clcd", "pl110_versatile"); object_property_set_link(OBJECT(dev), "framebuffer-memory", OBJECT(sysmem), &error_fatal); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, 0x10120000); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[16]); =20 /* Wire up the mux control signals from the SYS_CLCD register */ qdev_connect_gpio_out(sysctl, 0, qdev_get_gpio_in(dev, 0)); =20 - dev =3D sysbus_create_varargs_orphan("pl181", 0x10005000, sic[22], sic= [1], NULL); + dev =3D sysbus_create_varargs(OBJECT(machine), "mmci[*]", "pl181", + 0x10005000, sic[22], sic[1], NULL); dinfo =3D drive_get(IF_SD, 0, 0); if (dinfo) { DeviceState *card; =20 - card =3D qdev_new_orphan(TYPE_SD_CARD); + card =3D qdev_new(OBJECT(machine), "sd-card[*]", TYPE_SD_CARD); qdev_prop_set_drive_err(card, "drive", blk_by_legacy_dinfo(dinfo), &error_fatal); - qdev_realize_and_unref(card, qdev_get_child_bus(dev, "sd-bus"), - &error_fatal); + qdev_realize(card, qdev_get_child_bus(dev, "sd-bus"), &error_fatal= ); } =20 - dev =3D sysbus_create_varargs_orphan("pl181", 0x1000b000, sic[23], sic= [2], NULL); + dev =3D sysbus_create_varargs(OBJECT(machine), "mmci[*]", "pl181", + 0x1000b000, sic[23], sic[2], NULL); dinfo =3D drive_get(IF_SD, 0, 1); if (dinfo) { DeviceState *card; =20 - card =3D qdev_new_orphan(TYPE_SD_CARD); + card =3D qdev_new(OBJECT(machine), "sd-card[*]", TYPE_SD_CARD); qdev_prop_set_drive_err(card, "drive", blk_by_legacy_dinfo(dinfo), &error_fatal); - qdev_realize_and_unref(card, qdev_get_child_bus(dev, "sd-bus"), - &error_fatal); + qdev_realize(card, qdev_get_child_bus(dev, "sd-bus"), &error_fatal= ); } =20 /* Add PL031 Real Time Clock. */ - sysbus_create_simple_orphan("pl031", 0x101e8000, pic[10]); + sysbus_create_simple(OBJECT(machine), "rtc", "pl031", 0x101e8000, pic[= 10]); =20 - dev =3D sysbus_create_simple_orphan(TYPE_ARM_SBCON_I2C, 0x10002000, NU= LL); + dev =3D sysbus_create_simple(OBJECT(machine), "i2c", + TYPE_ARM_SBCON_I2C, 0x10002000, NULL); i2c =3D (I2CBus *)qdev_get_child_bus(dev, "i2c"); - i2c_slave_create_simple_orphan(i2c, "ds1338", 0x68); + i2c_slave_create_simple(OBJECT(machine), "ds1338", i2c, "ds1338", 0x68= ); =20 /* Add PL041 AACI Interface to the LM4549 codec */ - pl041 =3D qdev_new_orphan("pl041"); + pl041 =3D qdev_new(OBJECT(machine), "aaci", "pl041"); qdev_prop_set_uint32(pl041, "nc_fifo_depth", 512); if (machine->audiodev) { qdev_prop_set_string(pl041, "audiodev", machine->audiodev); } - sysbus_realize_and_unref(SYS_BUS_DEVICE(pl041), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(pl041), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(pl041), 0, 0x10004000); sysbus_connect_irq(SYS_BUS_DEVICE(pl041), 0, sic[24]); =20 diff --git a/hw/arm/vexpress.c b/hw/arm/vexpress.c index 7c5a69b5a9..a643c6b079 100644 --- a/hw/arm/vexpress.c +++ b/hw/arm/vexpress.c @@ -241,11 +241,11 @@ static void init_cpus(MachineState *ms, const char *c= pu_type, * this must happen after the CPUs are created because a15mpcore_priv * wires itself up to the CPU's generic_timer gpio out lines. */ - dev =3D qdev_new_orphan(privdev); + dev =3D qdev_new(OBJECT(ms), "mpcore", privdev); qdev_prop_set_uint32(dev, "num-cpu", smp_cpus); qdev_prop_set_uint32(dev, "num-irq", GIC_EXT_IRQS + GIC_INTERNAL); busdev =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(busdev, &error_fatal); + sysbus_realize(busdev, &error_fatal); sysbus_mmio_map(busdev, 0, periphbase); =20 /* Interrupts [42:0] are from the motherboard; @@ -301,10 +301,10 @@ static void a9_daughterboard_init(VexpressMachineStat= e *vms, /* Daughterboard peripherals : 0x10020000 .. 0x20000000 */ =20 /* 0x10020000 PL111 CLCD (daughterboard) */ - dev =3D qdev_new_orphan("pl111"); + dev =3D qdev_new(OBJECT(vms), "db-clcd", "pl111"); object_property_set_link(OBJECT(dev), "framebuffer-memory", OBJECT(sysmem), &error_fatal); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, 0x10020000); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[44]); =20 @@ -313,7 +313,7 @@ static void a9_daughterboard_init(VexpressMachineState = *vms, /* 0x100e1000 PL354 Static Memory Controller */ /* 0x100e2000 System Configuration Controller */ =20 - sysbus_create_simple_orphan("sp804", 0x100e4000, pic[48]); + sysbus_create_simple(OBJECT(vms), "timer[*]", "sp804", 0x100e4000, pic= [48]); /* 0x100e5000 SP805 Watchdog module */ /* 0x100e6000 BP147 TrustZone Protection Controller */ /* 0x100e9000 PL301 'Fast' AXI matrix */ @@ -321,7 +321,7 @@ static void a9_daughterboard_init(VexpressMachineState = *vms, /* 0x100ec000 TrustZone Address Space Controller */ /* 0x10200000 CoreSight debug APB */ /* 0x1e00a000 PL310 L2 Cache Controller */ - sysbus_create_varargs_orphan("l2x0", 0x1e00a000, NULL); + sysbus_create_varargs(OBJECT(vms), "l2x0", "l2x0", 0x1e00a000, NULL); } =20 /* Voltage values for SYS_CFG_VOLT daughterboard registers; @@ -514,10 +514,11 @@ static void vexpress_modify_dtb(const struct arm_boot= _info *info, void *fdt) /* Open code a private version of pflash registration since we * need to set non-default device width for VExpress platform. */ -static PFlashCFI01 *ve_pflash_cfi01_register(hwaddr base, const char *name, +static PFlashCFI01 *ve_pflash_cfi01_register(Object *parent, + hwaddr base, const char *name, DriveInfo *di) { - DeviceState *dev =3D qdev_new_orphan(TYPE_PFLASH_CFI01); + DeviceState *dev =3D qdev_new(parent, "flash[*]", TYPE_PFLASH_CFI01); =20 if (di) { qdev_prop_set_drive(dev, "drive", blk_by_legacy_dinfo(di)); @@ -534,7 +535,7 @@ static PFlashCFI01 *ve_pflash_cfi01_register(hwaddr bas= e, const char *name, qdev_prop_set_uint16(dev, "id2", 0x00); qdev_prop_set_uint16(dev, "id3", 0x00); qdev_prop_set_string(dev, "name", name); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, base); return PFLASH_CFI01(dev); @@ -592,7 +593,7 @@ static void vexpress_common_init(MachineState *machine) =20 sys_id =3D 0x1190f500; =20 - sysctl =3D qdev_new_orphan("realview_sysctl"); + sysctl =3D qdev_new(OBJECT(machine), "sysctl", "realview_sysctl"); qdev_prop_set_uint32(sysctl, "sys_id", sys_id); qdev_prop_set_uint32(sysctl, "proc_id", daughterboard->proc_id); =20 @@ -608,22 +609,23 @@ static void vexpress_common_init(MachineState *machin= e) } qdev_prop_set_array(sysctl, "db-clock", db_clock); =20 - sysbus_realize_and_unref(SYS_BUS_DEVICE(sysctl), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(sysctl), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(sysctl), 0, map[VE_SYSREGS]); =20 /* VE_SP810: not modelled */ /* VE_SERIALPCI: not modelled */ =20 - pl041 =3D qdev_new_orphan("pl041"); + pl041 =3D qdev_new(OBJECT(machine), "aaci", "pl041"); qdev_prop_set_uint32(pl041, "nc_fifo_depth", 512); if (machine->audiodev) { qdev_prop_set_string(pl041, "audiodev", machine->audiodev); } - sysbus_realize_and_unref(SYS_BUS_DEVICE(pl041), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(pl041), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(pl041), 0, map[VE_PL041]); sysbus_connect_irq(SYS_BUS_DEVICE(pl041), 0, pic[11]); =20 - dev =3D sysbus_create_varargs_orphan("pl181", map[VE_MMCI], pic[9], pi= c[10], NULL); + dev =3D sysbus_create_varargs(OBJECT(machine), "mmci", "pl181", + map[VE_MMCI], pic[9], pic[10], NULL); /* Wire up MMC card detect and read-only signals */ qdev_connect_gpio_out_named(dev, "card-read-only", 0, qdev_get_gpio_in(sysctl, ARM_SYSCTL_GPIO_MMC_WPR= OT)); @@ -633,42 +635,43 @@ static void vexpress_common_init(MachineState *machin= e) if (dinfo) { DeviceState *card; =20 - card =3D qdev_new_orphan(TYPE_SD_CARD); + card =3D qdev_new(OBJECT(machine), "sd-card", TYPE_SD_CARD); qdev_prop_set_drive_err(card, "drive", blk_by_legacy_dinfo(dinfo), &error_fatal); - qdev_realize_and_unref(card, qdev_get_child_bus(dev, "sd-bus"), - &error_fatal); + qdev_realize(card, qdev_get_child_bus(dev, "sd-bus"), &error_fatal= ); } =20 - sysbus_create_simple_orphan("pl050_keyboard", map[VE_KMI0], pic[12]); - sysbus_create_simple_orphan("pl050_mouse", map[VE_KMI1], pic[13]); + sysbus_create_simple(OBJECT(machine), "keyboard", "pl050_keyboard", + map[VE_KMI0], pic[12]); + sysbus_create_simple(OBJECT(machine), "mouse", "pl050_mouse", map[VE_K= MI1], pic[13]); =20 pl011_create(OBJECT(machine), map[VE_UART0], pic[5], serial_hd(0)); pl011_create(OBJECT(machine), map[VE_UART1], pic[6], serial_hd(1)); pl011_create(OBJECT(machine), map[VE_UART2], pic[7], serial_hd(2)); pl011_create(OBJECT(machine), map[VE_UART3], pic[8], serial_hd(3)); =20 - sysbus_create_simple_orphan("sp804", map[VE_TIMER01], pic[2]); - sysbus_create_simple_orphan("sp804", map[VE_TIMER23], pic[3]); + sysbus_create_simple(OBJECT(machine), "timer[*]", "sp804", map[VE_TIME= R01], pic[2]); + sysbus_create_simple(OBJECT(machine), "timer[*]", "sp804", map[VE_TIME= R23], pic[3]); =20 - dev =3D sysbus_create_simple_orphan(TYPE_ARM_SBCON_I2C, map[VE_SERIALD= VI], NULL); + dev =3D sysbus_create_simple(OBJECT(machine), "i2c", + TYPE_ARM_SBCON_I2C, map[VE_SERIALDVI], NULL= ); i2c =3D (I2CBus *)qdev_get_child_bus(dev, "i2c"); - i2c_slave_create_simple_orphan(i2c, "sii9022", 0x39); + i2c_slave_create_simple(OBJECT(machine), "sii9022", i2c, "sii9022", 0x= 39); =20 - sysbus_create_simple_orphan("pl031", map[VE_RTC], pic[4]); /* RTC */ + sysbus_create_simple(OBJECT(machine), "rtc", "pl031", map[VE_RTC], pic= [4]); /* RTC */ =20 /* VE_COMPACTFLASH: not modelled */ =20 - dev =3D qdev_new_orphan("pl111"); + dev =3D qdev_new(OBJECT(machine), "clcd", "pl111"); object_property_set_link(OBJECT(dev), "framebuffer-memory", OBJECT(sysmem), &error_fatal); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, map[VE_CLCD]); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[14]); =20 dinfo =3D drive_get(IF_PFLASH, 0, 0); - pflash0 =3D ve_pflash_cfi01_register(map[VE_NORFLASH0], "vexpress.flas= h0", - dinfo); + pflash0 =3D ve_pflash_cfi01_register(OBJECT(machine), map[VE_NORFLASH0= ], + "vexpress.flash0", dinfo); =20 if (map[VE_NORFLASHALIAS] !=3D -1) { /* Map flash 0 as an alias into low memory */ @@ -680,7 +683,8 @@ static void vexpress_common_init(MachineState *machine) } =20 dinfo =3D drive_get(IF_PFLASH, 0, 1); - ve_pflash_cfi01_register(map[VE_NORFLASH1], "vexpress.flash1", dinfo); + ve_pflash_cfi01_register(OBJECT(machine), map[VE_NORFLASH1], + "vexpress.flash1", dinfo); =20 sram_size =3D 0x2000000; memory_region_init_ram(&vms->sram, NULL, "vexpress.sram", sram_size, @@ -706,8 +710,8 @@ static void vexpress_common_init(MachineState *machine) * no backend is created the transport will just sit harmlessly idle. */ for (i =3D 0; i < NUM_VIRTIO_TRANSPORTS; i++) { - sysbus_create_simple_orphan("virtio-mmio", map[VE_VIRTIO] + 0x200 = * i, - pic[40 + i]); + sysbus_create_simple(OBJECT(machine), "virtio-mmio[*]", "virtio-mm= io", + map[VE_VIRTIO] + 0x200 * i, pic[40 + i]); } =20 daughterboard->bootinfo.ram_size =3D machine->ram_size; --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411716; cv=none; d=zohomail.com; s=zohoarc; b=Wh/v1BPGGH1qvTghu42zqRtamrCaWXjYZRaCuR2cPDK8dugmTIi3+0+n8NlhN0pmQ9bgJEbPmDeDSu/LiXW42L7lQ3R8pW3zkxaHT6Z1nqpdSzU/zpufc7DDcF29OcJ/5xcLDqbc+QOPDmR8LixPLLc7KipFUaWFS0YN6lBWrmY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411716; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=za0RLMOMxGkTlwWmMS3rOm8N+JlQW3UQ8Fp+WBfUphw=; b=CkuhSdM6Iq0Y1YZTT9Eb7/xQoqPuReEH786dPhAwkFlHkt3M8kYCltfVxNInGIR3U7JmKazlriC9tVZIcKNkWxhDYvzeMuuIf7/pgZkAiQIHAflmrKH5uWslmKAi31qMToPLqpe1IdItYsRdsH8zJZEemDdz/z+EvA4zEC5Z1yE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411716147523.8270137677532; Sat, 18 Jul 2026 14:55:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlD02-0002a0-VS; Sat, 18 Jul 2026 17:55:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCzr-0002Ad-9w; Sat, 18 Jul 2026 17:55:00 -0400 Received: from pdx-out-003.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.246.68.102]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCzo-0004A3-B3; Sat, 18 Jul 2026 17:54:59 -0400 Received: from ip-10-5-0-115.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.0.115]) by internal-pdx-out-003.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:54:52 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.51:16158] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.29.147:2525] with esmtp (Farcaster) id 8fc6a5a6-31fc-4ef9-86a7-a093b87aa09d; Sat, 18 Jul 2026 21:54:52 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB001.ant.amazon.com (10.250.64.248) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:54:52 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:54:42 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411696; x=1815947696; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=za0RLMOMxGkTlwWmMS3rOm8N+JlQW3UQ8Fp+WBfUphw=; b=HLVKZulPTgLBGcUEh1W6qMJTsVVfAMw2Eefp+uq1CJai2cBd4yC9GEa4 jrLhOZIkDaixNPNigq9DVN3MrX3K6SFrUFDhli0oUPPT52VYhAbu7MKHK h0zZKvw16/O/l/p2Sa8Ida+66wRClfk3ju3aGh6vQhYvY+wQQyUFgcnIQ OfPzcSL4gEc0rpyMTirXtDU90KwsxRdoPB4k3HZsEkqtdoloBrXYmNL0N IX2nzYQQ0TQvkBCNeVwx2x2IWe5SHcFi7puXwBJK2LcEVZVWGSTWjm5Dz 2SOe0TN/8qKyzMKGx67VHHkzqryp8+XZD1/zi+TGSBFivlQKnmZWcj8Ni g==; X-CSE-ConnectionGUID: qMg1BX01TF6/x1YX1vmg8g== X-CSE-MsgGUID: /XSFAtslSgWrXKXdQNBFug== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23941976" X-Farcaster-Flow-ID: 8fc6a5a6-31fc-4ef9-86a7-a093b87aa09d From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 064/137] hw/arm/stellaris, musicpal: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:39 +0000 Message-ID: <20260718213652.37673-65-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D043UWC001.ant.amazon.com (10.13.139.202) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.246.68.102; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-003.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411716812158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in the hw/arm stellaris, music= pal board files to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing SoC device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/arm/musicpal.c:1235 | cpu_create | OBJECT(machine) | "cpu" | musicpal_in= it(MachineState *machine); single CPU hw/arm/musicpal.c:1243 | sysbus_create_simple | OBJECT(machine) | "pic" | b= oard init(); primary intc hw/arm/musicpal.c:1245 | sysbus_create_varargs | OBJECT(machine) | "pit" | = board init(); MV88W8618 timer block hw/arm/musicpal.c:1252 | qdev_new | OBJECT(machine) | "uart-orgate" | board= init(); OR-IRQ combiner hw/arm/musicpal.c:1290 | sysbus_create_simple | OBJECT(machine) | "flashcfg= " | board init(); flash config regs hw/arm/musicpal.c:1292 | qdev_new | OBJECT(machine) | "eth" | board init();= on-chip ethernet hw/arm/musicpal.c:1301 | sysbus_create_simple | OBJECT(machine) | "wlan" | = board init(); WLAN stub hw/arm/musicpal.c:1303 | sysbus_create_simple | OBJECT(machine) | "misc" | = board init(); misc regs hw/arm/musicpal.c:1305 | sysbus_create_simple | OBJECT(machine) | "gpio" | = board init(); GPIO block hw/arm/musicpal.c:1307 | sysbus_create_simple | OBJECT(machine) | "i2c" | b= oard init(); bit-bang GPIO I2C hw/arm/musicpal.c:1310 | sysbus_create_simple | OBJECT(machine) | "lcd" | b= oard init(); front-panel LCD hw/arm/musicpal.c:1311 | sysbus_create_simple | OBJECT(machine) | "keys" | = board init(); front-panel buttons hw/arm/musicpal.c:1331 | i2c_slave_new | OBJECT(machine) | "wm8750" | board= init(); audio codec on I2C bus hw/arm/musicpal.c:1337 | qdev_new | OBJECT(machine) | "audio" | board init(= ); audio DMA controller hw/arm/stellaris.c:1099 | qdev_new | soc_container | "sys" | collapse exist= ing add_child; keep name hw/arm/stellaris.c:1126 | qdev_new | soc_container | "v7m" | collapse exist= ing add_child; keep name hw/arm/stellaris.c:1146 | sysbus_create_varargs | soc_container | "adc" | b= oard init(); on-SoC ADC hw/arm/stellaris.c:1160 | qdev_new | soc_container | "gptm[*]" | collapse e= xisting add_child; keep name hw/arm/stellaris.c:1175 | qdev_new | soc_container | "wdg" | collapse exist= ing add_child; keep name hw/arm/stellaris.c:1192 | sysbus_create_simple | soc_container | "gpio[*]" = | board init(); loop over PL061 ports hw/arm/stellaris.c:1204 | sysbus_create_simple | soc_container | "i2c[*]" |= board init(); loop over I2C blocks hw/arm/stellaris.c:1212 | i2c_slave_create_simple | OBJECT(ms) | "oled-i2c"= | board init(); external I2C OLED panel hw/arm/stellaris.c:1219 | qdev_new | soc_container | "uart[*]" | collapse e= xisting add_child; keep name hw/arm/stellaris.c:1229 | sysbus_create_simple | soc_container | "ssi" | bo= ard init(); PL022 SPI hw/arm/stellaris.c:1303 | ssi_create_peripheral | OBJECT(ms) | "ssi-sd" | b= oard init(); external SD adapter on SSI bus hw/arm/stellaris.c:1307 | qdev_new | OBJECT(ms) | "sd-card" | board init();= removable SD card hw/arm/stellaris.c:1313 | qdev_new | OBJECT(ms) | "oled" | collapse existin= g add_child; keep name hw/arm/stellaris.c:1318 | qdev_new | OBJECT(ms) | "splitter" | collapse exi= sting add_child; keep name hw/arm/stellaris.c:1340 | qdev_new | soc_container | "enet" | collapse exis= ting add_child; keep name hw/arm/stellaris.c:1360 | qdev_new | OBJECT(ms) | "gamepad" | collapse exis= ting add_child; keep name Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/arm/musicpal.c | 41 ++++++++++++++++------------ hw/arm/stellaris.c | 68 ++++++++++++++++++++-------------------------- 2 files changed, 53 insertions(+), 56 deletions(-) diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c index d9fe08d57b..86ea348d3d 100644 --- a/hw/arm/musicpal.c +++ b/hw/arm/musicpal.c @@ -1232,7 +1232,7 @@ static void musicpal_init(MachineState *machine) exit(EXIT_FAILURE); } =20 - cpu =3D ARM_CPU(cpu_create_orphan(machine->cpu_type)); + cpu =3D ARM_CPU(cpu_create(OBJECT(machine), "cpu", machine->cpu_type)); =20 memory_region_add_subregion(address_space_mem, 0, machine->ram); =20 @@ -1240,18 +1240,20 @@ static void musicpal_init(MachineState *machine) &error_fatal); memory_region_add_subregion(address_space_mem, MP_SRAM_BASE, sram); =20 - pic =3D sysbus_create_simple_orphan(TYPE_MV88W8618_PIC, MP_PIC_BASE, + pic =3D sysbus_create_simple(OBJECT(machine), "pic", + TYPE_MV88W8618_PIC, MP_PIC_BASE, qdev_get_gpio_in(DEVICE(cpu), ARM_CPU_IRQ)); - sysbus_create_varargs_orphan(TYPE_MV88W8618_PIT, MP_PIT_BASE, + sysbus_create_varargs(OBJECT(machine), "pit", + TYPE_MV88W8618_PIT, MP_PIT_BASE, qdev_get_gpio_in(pic, MP_TIMER1_IRQ), qdev_get_gpio_in(pic, MP_TIMER2_IRQ), qdev_get_gpio_in(pic, MP_TIMER3_IRQ), qdev_get_gpio_in(pic, MP_TIMER4_IRQ), NULL); =20 /* Logically OR both UART IRQs together */ - uart_orgate =3D qdev_new_orphan(TYPE_OR_IRQ); + uart_orgate =3D qdev_new(OBJECT(machine), "uart-orgate", TYPE_OR_IRQ); object_property_set_int(OBJECT(uart_orgate), "num-lines", 2, &error_fa= tal); - qdev_realize_and_unref(uart_orgate, NULL, &error_fatal); + qdev_realize(uart_orgate, NULL, &error_fatal); qdev_connect_gpio_out(uart_orgate, 0, qdev_get_gpio_in(pic, MP_UART_SHARED_IRQ)); =20 @@ -1287,28 +1289,31 @@ static void musicpal_init(MachineState *machine) 2, 0x00BF, 0x236D, 0x0000, 0x0000, 0x5555, 0x2AAA, 0); } - sysbus_create_simple_orphan(TYPE_MV88W8618_FLASHCFG, MP_FLASHCFG_BASE,= NULL); + sysbus_create_simple(OBJECT(machine), "flashcfg", + TYPE_MV88W8618_FLASHCFG, MP_FLASHCFG_BASE, NULL); =20 - dev =3D qdev_new_orphan(TYPE_MV88W8618_ETH); + dev =3D qdev_new(OBJECT(machine), "eth", TYPE_MV88W8618_ETH); qemu_configure_nic_device(dev, true, "mv88w8618"); object_property_set_link(OBJECT(dev), "dma-memory", OBJECT(get_system_memory()), &error_fatal); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, MP_ETH_BASE); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, qdev_get_gpio_in(pic, MP_ETH_IRQ)); =20 - sysbus_create_simple_orphan("mv88w8618_wlan", MP_WLAN_BASE, NULL); + sysbus_create_simple(OBJECT(machine), "wlan", "mv88w8618_wlan", MP_WLA= N_BASE, NULL); =20 - sysbus_create_simple_orphan(TYPE_MUSICPAL_MISC, MP_MISC_BASE, NULL); + sysbus_create_simple(OBJECT(machine), "misc", TYPE_MUSICPAL_MISC, MP_M= ISC_BASE, NULL); =20 - dev =3D sysbus_create_simple_orphan(TYPE_MUSICPAL_GPIO, MP_GPIO_BASE, + dev =3D sysbus_create_simple(OBJECT(machine), "gpio", + TYPE_MUSICPAL_GPIO, MP_GPIO_BASE, qdev_get_gpio_in(pic, MP_GPIO_IRQ)); - i2c_dev =3D sysbus_create_simple_orphan(TYPE_GPIO_I2C, -1, NULL); + i2c_dev =3D sysbus_create_simple(OBJECT(machine), "i2c", TYPE_GPIO_I2C= , -1, NULL); i2c =3D (I2CBus *)qdev_get_child_bus(i2c_dev, "i2c"); =20 - lcd_dev =3D sysbus_create_simple_orphan(TYPE_MUSICPAL_LCD, MP_LCD_BASE= , NULL); - key_dev =3D sysbus_create_simple_orphan(TYPE_MUSICPAL_KEY, -1, NULL); + lcd_dev =3D sysbus_create_simple(OBJECT(machine), "lcd", + TYPE_MUSICPAL_LCD, MP_LCD_BASE, NULL); + key_dev =3D sysbus_create_simple(OBJECT(machine), "keys", TYPE_MUSICPA= L_KEY, -1, NULL); =20 /* I2C read data */ qdev_connect_gpio_out(i2c_dev, 0, @@ -1328,17 +1333,17 @@ static void musicpal_init(MachineState *machine) qdev_connect_gpio_out(key_dev, i, qdev_get_gpio_in(dev, i + 15)); } =20 - wm8750_dev =3D i2c_slave_new_orphan(TYPE_WM8750, MP_WM_ADDR); + wm8750_dev =3D i2c_slave_new(OBJECT(machine), "wm8750", TYPE_WM8750, M= P_WM_ADDR); if (machine->audiodev) { qdev_prop_set_string(DEVICE(wm8750_dev), "audiodev", machine->audi= odev); } - i2c_slave_realize_and_unref(wm8750_dev, i2c, &error_abort); + qdev_realize(DEVICE(wm8750_dev), BUS(i2c), &error_abort); =20 - dev =3D qdev_new_orphan(TYPE_MV88W8618_AUDIO); + dev =3D qdev_new(OBJECT(machine), "audio", TYPE_MV88W8618_AUDIO); s =3D SYS_BUS_DEVICE(dev); object_property_set_link(OBJECT(dev), "wm8750", OBJECT(wm8750_dev), NULL); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); sysbus_mmio_map(s, 0, MP_AUDIO_BASE); sysbus_connect_irq(s, 0, qdev_get_gpio_in(pic, MP_AUDIO_IRQ)); =20 diff --git a/hw/arm/stellaris.c b/hw/arm/stellaris.c index 7a18d98477..b2ff6f4d97 100644 --- a/hw/arm/stellaris.c +++ b/hw/arm/stellaris.c @@ -1096,8 +1096,7 @@ static void stellaris_init(MachineState *ms, stellari= s_board_info *board) * Create the system-registers object early, because we will * need its sysclk output. */ - ssys_dev =3D qdev_new_orphan(TYPE_STELLARIS_SYS); - object_property_add_child(soc_container, "sys", OBJECT(ssys_dev)); + ssys_dev =3D qdev_new(soc_container, "sys", TYPE_STELLARIS_SYS); =20 /* * Most devices come preprogrammed with a MAC address in the user data. @@ -1121,10 +1120,9 @@ static void stellaris_init(MachineState *ms, stellar= is_board_info *board) qdev_prop_set_uint32(ssys_dev, "dc2", board->dc2); qdev_prop_set_uint32(ssys_dev, "dc3", board->dc3); qdev_prop_set_uint32(ssys_dev, "dc4", board->dc4); - sysbus_realize_and_unref(SYS_BUS_DEVICE(ssys_dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(ssys_dev), &error_fatal); =20 - armv7m =3D qdev_new_orphan(TYPE_ARMV7M); - object_property_add_child(soc_container, "v7m", OBJECT(armv7m)); + armv7m =3D qdev_new(soc_container, "v7m", TYPE_ARMV7M); qdev_prop_set_uint32(armv7m, "num-irq", NUM_IRQ_LINES); qdev_prop_set_uint8(armv7m, "num-prio-bits", NUM_PRIO_BITS); qdev_prop_set_string(armv7m, "cpu-type", ms->cpu_type); @@ -1135,7 +1133,7 @@ static void stellaris_init(MachineState *ms, stellari= s_board_info *board) object_property_set_link(OBJECT(armv7m), "memory", OBJECT(get_system_memory()), &error_abort); /* This will exit with an error if the user passed us a bad cpu_type */ - sysbus_realize_and_unref(SYS_BUS_DEVICE(armv7m), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(armv7m), &error_fatal); nvic =3D armv7m; =20 /* Now we can wire up the IRQ and MMIO of the system registers */ @@ -1143,7 +1141,8 @@ static void stellaris_init(MachineState *ms, stellari= s_board_info *board) sysbus_connect_irq(SYS_BUS_DEVICE(ssys_dev), 0, qdev_get_gpio_in(nvic,= 28)); =20 if (DEV_CAP(1, ADC)) { - dev =3D sysbus_create_varargs_orphan(TYPE_STELLARIS_ADC, 0x4003800= 0, + dev =3D sysbus_create_varargs(soc_container, "adc", + TYPE_STELLARIS_ADC, 0x40038000, qdev_get_gpio_in(nvic, 14), qdev_get_gpio_in(nvic, 15), qdev_get_gpio_in(nvic, 16), @@ -1157,12 +1156,11 @@ static void stellaris_init(MachineState *ms, stella= ris_board_info *board) if (DEV_CAP(2, GPTM(i))) { SysBusDevice *sbd; =20 - dev =3D qdev_new_orphan(TYPE_STELLARIS_GPTM); + dev =3D qdev_new(soc_container, "gptm[*]", TYPE_STELLARIS_GPTM= ); sbd =3D SYS_BUS_DEVICE(dev); - object_property_add_child(soc_container, "gptm[*]", OBJECT(dev= )); qdev_connect_clock_in(dev, "clk", qdev_get_clock_out(ssys_dev, "SYSCLK")); - sysbus_realize_and_unref(sbd, &error_fatal); + sysbus_realize(sbd, &error_fatal); sysbus_mmio_map(sbd, 0, 0x40030000 + i * 0x1000); sysbus_connect_irq(sbd, 0, qdev_get_gpio_in(nvic, timer_irq[i]= )); /* TODO: This is incorrect, but we get away with it because @@ -1172,12 +1170,11 @@ static void stellaris_init(MachineState *ms, stella= ris_board_info *board) } =20 if (DEV_CAP(1, WDT)) { - dev =3D qdev_new_orphan(TYPE_LUMINARY_WATCHDOG); - object_property_add_child(soc_container, "wdg", OBJECT(dev)); + dev =3D qdev_new(soc_container, "wdg", TYPE_LUMINARY_WATCHDOG); qdev_connect_clock_in(dev, "WDOGCLK", qdev_get_clock_out(ssys_dev, "SYSCLK")); =20 - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, 0x40000000u); @@ -1189,7 +1186,8 @@ static void stellaris_init(MachineState *ms, stellari= s_board_info *board) =20 for (i =3D 0; i < NUM_GPIO; i++) { if (DEV_CAP(4, GPIO(i))) { - gpio_dev[i] =3D sysbus_create_simple_orphan("pl061_luminary", = gpio_addr[i], + gpio_dev[i] =3D sysbus_create_simple(soc_container, "gpio[*]", + "pl061_luminary", gpio_addr= [i], qdev_get_gpio_in(nvic, gpio_irq[i= ])); for (j =3D 0; j < 8; j++) { @@ -1201,7 +1199,8 @@ static void stellaris_init(MachineState *ms, stellari= s_board_info *board) =20 for (i =3D 0; i < NUM_I2C; i++) { if (DEV_CAP(2, I2C(i))) { - i2c_dev[i] =3D sysbus_create_simple_orphan(TYPE_STELLARIS_I2C,= i2c_addr[i], + i2c_dev[i] =3D sysbus_create_simple(soc_container, "i2c[*]", + TYPE_STELLARIS_I2C, i2c_addr= [i], qdev_get_gpio_in(nvic, i2c_irq[i])= ); } @@ -1209,24 +1208,23 @@ static void stellaris_init(MachineState *ms, stella= ris_board_info *board) if (board->peripherals & BP_OLED_I2C) { I2CBus *bus =3D (I2CBus *)qdev_get_child_bus(i2c_dev[0], "i2c"); =20 - i2c_slave_create_simple_orphan(bus, "ssd0303", 0x3d); + i2c_slave_create_simple(OBJECT(ms), "oled-i2c", bus, "ssd0303", 0x= 3d); } =20 for (i =3D 0; i < NUM_UART; i++) { if (DEV_CAP(2, UART(i))) { SysBusDevice *sbd; =20 - dev =3D qdev_new_orphan("pl011_luminary"); - object_property_add_child(soc_container, "uart[*]", OBJECT(dev= )); + dev =3D qdev_new(soc_container, "uart[*]", "pl011_luminary"); sbd =3D SYS_BUS_DEVICE(dev); qdev_prop_set_chr(dev, "chardev", serial_hd(i)); - sysbus_realize_and_unref(sbd, &error_fatal); + sysbus_realize(sbd, &error_fatal); sysbus_mmio_map(sbd, 0, 0x4000c000 + i * 0x1000); sysbus_connect_irq(sbd, 0, qdev_get_gpio_in(nvic, uart_irq[i])= ); } } if (DEV_CAP(2, SSI)) { - dev =3D sysbus_create_simple_orphan("pl022", 0x40008000, + dev =3D sysbus_create_simple(soc_container, "ssi", "pl022", 0x4000= 8000, qdev_get_gpio_in(nvic, 7)); if (board->peripherals & BP_OLED_SSI) { void *bus; @@ -1300,26 +1298,22 @@ static void stellaris_init(MachineState *ms, stella= ris_board_info *board) * - Make the ssd0323 OLED controller chipselect active-low */ bus =3D qdev_get_child_bus(dev, "ssi"); - sddev =3D ssi_create_peripheral_orphan(bus, "ssi-sd"); + sddev =3D ssi_create_peripheral(OBJECT(ms), "ssi-sd", bus, "ss= i-sd"); =20 dinfo =3D drive_get(IF_SD, 0, 0); blk =3D dinfo ? blk_by_legacy_dinfo(dinfo) : NULL; - carddev =3D qdev_new_orphan(TYPE_SD_CARD_SPI); + carddev =3D qdev_new(OBJECT(ms), "sd-card", TYPE_SD_CARD_SPI); qdev_prop_set_drive_err(carddev, "drive", blk, &error_fatal); - qdev_realize_and_unref(carddev, - qdev_get_child_bus(sddev, "sd-bus"), - &error_fatal); + qdev_realize(carddev, qdev_get_child_bus(sddev, "sd-bus"), + &error_fatal); =20 - ssddev =3D qdev_new_orphan("ssd0323"); - object_property_add_child(OBJECT(ms), "oled", OBJECT(ssddev)); + ssddev =3D qdev_new(OBJECT(ms), "oled", "ssd0323"); qdev_prop_set_uint8(ssddev, "cs", 1); - qdev_realize_and_unref(ssddev, bus, &error_fatal); + qdev_realize(ssddev, bus, &error_fatal); =20 - gpio_d_splitter =3D qdev_new_orphan(TYPE_SPLIT_IRQ); - object_property_add_child(OBJECT(ms), "splitter", - OBJECT(gpio_d_splitter)); + gpio_d_splitter =3D qdev_new(OBJECT(ms), "splitter", TYPE_SPLI= T_IRQ); qdev_prop_set_uint32(gpio_d_splitter, "num-lines", 2); - qdev_realize_and_unref(gpio_d_splitter, NULL, &error_fatal); + qdev_realize(gpio_d_splitter, NULL, &error_fatal); qdev_connect_gpio_out( gpio_d_splitter, 0, qdev_get_gpio_in_named(sddev, SSI_GPIO_CS, 0)); @@ -1337,15 +1331,14 @@ static void stellaris_init(MachineState *ms, stella= ris_board_info *board) if (DEV_CAP(4, EMAC)) { DeviceState *enet; =20 - enet =3D qdev_new_orphan("stellaris_enet"); - object_property_add_child(soc_container, "enet", OBJECT(enet)); + enet =3D qdev_new(soc_container, "enet", "stellaris_enet"); if (nd) { qdev_set_nic_properties(enet, nd); } else { qdev_prop_set_macaddr(enet, "mac", mac.a); } =20 - sysbus_realize_and_unref(SYS_BUS_DEVICE(enet), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(enet), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(enet), 0, 0x40048000); sysbus_connect_irq(SYS_BUS_DEVICE(enet), 0, qdev_get_gpio_in(nvic,= 42)); } @@ -1357,13 +1350,12 @@ static void stellaris_init(MachineState *ms, stella= ris_board_info *board) }; DeviceState *gpad; =20 - gpad =3D qdev_new_orphan(TYPE_STELLARIS_GAMEPAD); - object_property_add_child(OBJECT(ms), "gamepad", OBJECT(gpad)); + gpad =3D qdev_new(OBJECT(ms), "gamepad", TYPE_STELLARIS_GAMEPAD); for (i =3D 0; i < ARRAY_SIZE(gpad_keycode); i++) { qlist_append_int(gpad_keycode_list, gpad_keycode[i]); } qdev_prop_set_array(gpad, "keycodes", gpad_keycode_list); - sysbus_realize_and_unref(SYS_BUS_DEVICE(gpad), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(gpad), &error_fatal); =20 qdev_connect_gpio_out(gpad, 0, qemu_irq_invert(gpio_in[GPIO_E][0])); /* up = */ --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411747; cv=none; d=zohomail.com; s=zohoarc; b=ZtH7cLa5F0S2hTGs+rA5BhE+3hD3J9zLQ7cBvNk/m9Lbluzw1PINCFYtiedh35EDG9UcR19PGttRdNqSDZFw9MhhC3+kkPYv0pecIrLiiQ9MVGf+i7H4ZCeNpXhlCFqPQ+sQvnxDvNE0pe5aTogM5McizycNiOV/8inyt4PTUHM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411747; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=piG5i0Kw/mZf3qHVMQIIrj0TNSz9zrPVWmSDq4bnoEg=; b=LY2vzzKu+OeZYqZgkkd9Z/cX8oad52CQTdfbxT5m+Ze76e0lM/U1coZabJO1H8nw++K/PHm4ZZ6xGNxiBjMOYOX0sAX30RiK9B1xvopzbACRohvGLMWYGcK5xSTkZIt1onMQQUyseKtuOXHmYOsq+nTSlkJJlPPZ5pSZ16xbKro= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411747178151.2084378783452; Sat, 18 Jul 2026 14:55:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlD04-0002jK-RO; Sat, 18 Jul 2026 17:55:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD00-0002Sd-Jp; Sat, 18 Jul 2026 17:55:10 -0400 Received: from pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.245.243.92]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlCzy-0004Bc-0R; Sat, 18 Jul 2026 17:55:08 -0400 Received: from ip-10-5-9-48.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.9.48]) by internal-pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:55:02 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.51:9413] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.30.230:2525] with esmtp (Farcaster) id 0aca974a-d9f7-429c-a693-a2e670e44ff1; Sat, 18 Jul 2026 21:55:02 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC002.ant.amazon.com (10.250.64.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:55:01 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:54:52 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411706; x=1815947706; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=piG5i0Kw/mZf3qHVMQIIrj0TNSz9zrPVWmSDq4bnoEg=; b=bV0EITH1tuojdExmxhvlDTEODB2OcJDX0nYbZpiDPDIeH2MbPDKpr+al oaOj1yeTWn0+710qTiiopETjMg1Y9oiXETdVjTgG1rDD4GmKsdbdJrNfp 6sDIAqXudATLSu4aps8+8hHUVUW0QocUyz0E5ITJM/SDFdTlg3rwy6qpj 3KkUjKvIgIcknE66SKoqN8AfLmLaB/59Nt8dkvLu9EMX8g2S7KH6/Dm1/ j3HhWRQYR9+esyJA7s/EvgQc4DhDRRWO/tBk4mnkwlCJFdTfTVYG6NRcH FqhAGoP8LNWlnq8+E4edf7EqXYiuhzz3CpOhqHvaRjbJjTE8fCrBJnkZp g==; X-CSE-ConnectionGUID: v9HHeFCgRM+Sjthrlh2CcQ== X-CSE-MsgGUID: cp++HSuCTWOXRWW9vOgL6g== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23423041" X-Farcaster-Flow-ID: 0aca974a-d9f7-429c-a693-a2e670e44ff1 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 065/137] hw/arm/exynos: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:40 +0000 Message-ID: <20260718213652.37673-66-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D043UWC001.ant.amazon.com (10.13.139.202) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.245.243.92; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411748923158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in the hw/arm exynos board files to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing SoC device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/arm/exynos4210.c:522 | qdev_new | parent (threaded) | "pl330[*]" | pl330= _create() static helper: added Object *parent as first arg, threaded from e= xynos4210_realize() with OBJECT(s). Paired sysbus_realize_and_unref -> sysb= us_realize. hw/arm/exynos4210.c:603 | sysbus_create_simple | OBJECT(s) | "l2x0" | SoC r= ealize(); s =3D Exynos4210State being realized. hw/arm/exynos4210.c:670 | sysbus_create_simple | OBJECT(s) | "pmu" | SoC re= alize(); single instance. hw/arm/exynos4210.c:672 | sysbus_create_simple | OBJECT(s) | "clk" | SoC re= alize(); single instance. hw/arm/exynos4210.c:673 | sysbus_create_simple | OBJECT(s) | "rng" | SoC re= alize(); single instance. hw/arm/exynos4210.c:676 | sysbus_create_varargs | OBJECT(s) | "pwm" | SoC r= ealize(); single instance. hw/arm/exynos4210.c:684 | sysbus_create_varargs | OBJECT(s) | "rtc" | SoC r= ealize(); single instance. hw/arm/exynos4210.c:690 | qdev_new | OBJECT(s) | "mct" | SoC realize(); pai= red sysbus_realize_and_unref -> sysbus_realize. hw/arm/exynos4210.c:716 | qdev_new | OBJECT(s) | "i2c[*]" | SoC realize(); = loop over EXYNOS4210_I2C_NUMBER, auto-index. Paired sysbus_realize_and_unre= f -> sysbus_realize. hw/arm/exynos4210.c:760 | qdev_new | OBJECT(s) | "sdhci[*]" | SoC realize()= ; loop over EXYNOS4210_SDHCI_NUMBER. Paired sysbus_realize_and_unref -> sys= bus_realize. hw/arm/exynos4210.c:770 | qdev_new | OBJECT(s) | "sd-card[*]" | SoC realize= (); SD cards owned by SoC (bus is not parent). Paired qdev_realize_and_unre= f -> qdev_realize. hw/arm/exynos4210.c:777 | qdev_new | OBJECT(s) | "fimd" | SoC realize(); si= ngle instance. Paired sysbus_realize_and_unref -> sysbus_realize. hw/arm/exynos4210.c:787 | sysbus_create_simple | OBJECT(s) | "ehci" | SoC r= ealize(); single instance. Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/arm/exynos4210.c | 60 +++++++++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 26 deletions(-) diff --git a/hw/arm/exynos4210.c b/hw/arm/exynos4210.c index 7d9d87d7ba..74ce36c1e6 100644 --- a/hw/arm/exynos4210.c +++ b/hw/arm/exynos4210.c @@ -512,14 +512,15 @@ static uint64_t exynos4210_calc_affinity(int cpu) return (0x9 << ARM_AFF1_SHIFT) | cpu; } =20 -static DeviceState *pl330_create(uint32_t base, OrIRQState *orgate, - qemu_irq irq, int nreq, int nevents, int = width) +static DeviceState *pl330_create(Object *parent, uint32_t base, + OrIRQState *orgate, qemu_irq irq, + int nreq, int nevents, int width) { SysBusDevice *busdev; DeviceState *dev; int i; =20 - dev =3D qdev_new_orphan("pl330"); + dev =3D qdev_new(parent, "pl330[*]", "pl330"); object_property_set_link(OBJECT(dev), "memory", OBJECT(get_system_memory()), &error_fatal); @@ -534,7 +535,7 @@ static DeviceState *pl330_create(uint32_t base, OrIRQSt= ate *orgate, qdev_prop_set_uint8(dev, "data_width", width); qdev_prop_set_uint16(dev, "data_buffer_dep", width); busdev =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(busdev, &error_fatal); + sysbus_realize(busdev, &error_fatal); sysbus_mmio_map(busdev, 0, base); =20 object_property_set_int(OBJECT(orgate), "num-lines", nevents + 1, @@ -600,7 +601,8 @@ static void exynos4210_realize(DeviceState *socdev, Err= or **errp) } =20 /* Cache controller */ - sysbus_create_simple_orphan("l2x0", EXYNOS4210_L2X0_BASE_ADDR, NULL); + sysbus_create_simple(OBJECT(s), "l2x0", "l2x0", + EXYNOS4210_L2X0_BASE_ADDR, NULL); =20 /* External GIC */ qdev_prop_set_uint32(DEVICE(&s->ext_gic), "num-cpu", EXYNOS4210_NCPUS); @@ -667,13 +669,17 @@ static void exynos4210_realize(DeviceState *socdev, E= rror **errp) * The only reason of existence at the moment is that secondary CPU boot * loader uses PMU INFORM5 register as a holding pen. */ - sysbus_create_simple_orphan("exynos4210.pmu", EXYNOS4210_PMU_BASE_ADDR= , NULL); + sysbus_create_simple(OBJECT(s), "pmu", "exynos4210.pmu", + EXYNOS4210_PMU_BASE_ADDR, NULL); =20 - sysbus_create_simple_orphan("exynos4210.clk", EXYNOS4210_CLK_BASE_ADDR= , NULL); - sysbus_create_simple_orphan("exynos4210.rng", EXYNOS4210_RNG_BASE_ADDR= , NULL); + sysbus_create_simple(OBJECT(s), "clk", "exynos4210.clk", + EXYNOS4210_CLK_BASE_ADDR, NULL); + sysbus_create_simple(OBJECT(s), "rng", "exynos4210.rng", + EXYNOS4210_RNG_BASE_ADDR, NULL); =20 /* PWM */ - sysbus_create_varargs_orphan("exynos4210.pwm", EXYNOS4210_PWM_BASE_ADD= R, + sysbus_create_varargs(OBJECT(s), "pwm", "exynos4210.pwm", + EXYNOS4210_PWM_BASE_ADDR, s->irq_table[exynos4210_get_irq(22, 0)], s->irq_table[exynos4210_get_irq(22, 1)], s->irq_table[exynos4210_get_irq(22, 2)], @@ -681,15 +687,16 @@ static void exynos4210_realize(DeviceState *socdev, E= rror **errp) s->irq_table[exynos4210_get_irq(22, 4)], NULL); /* RTC */ - sysbus_create_varargs_orphan("exynos4210.rtc", EXYNOS4210_RTC_BASE_ADD= R, + sysbus_create_varargs(OBJECT(s), "rtc", "exynos4210.rtc", + EXYNOS4210_RTC_BASE_ADDR, s->irq_table[exynos4210_get_irq(23, 0)], s->irq_table[exynos4210_get_irq(23, 1)], NULL); =20 /* Multi Core Timer */ - dev =3D qdev_new_orphan("exynos4210.mct"); + dev =3D qdev_new(OBJECT(s), "mct", "exynos4210.mct"); busdev =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(busdev, &error_fatal); + sysbus_realize(busdev, &error_fatal); for (n =3D 0; n < 4; n++) { /* Connect global timer interrupts to Combiner gpio_in */ sysbus_connect_irq(busdev, n, @@ -713,9 +720,9 @@ static void exynos4210_realize(DeviceState *socdev, Err= or **errp) i2c_irq =3D s->irq_table[exynos4210_get_irq(EXYNOS4210_HDMI_IN= TG, 1)]; } =20 - dev =3D qdev_new_orphan("exynos4210.i2c"); + dev =3D qdev_new(OBJECT(s), "i2c[*]", "exynos4210.i2c"); busdev =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(busdev, &error_fatal); + sysbus_realize(busdev, &error_fatal); sysbus_connect_irq(busdev, 0, i2c_irq); sysbus_mmio_map(busdev, 0, addr); s->i2c_if[n] =3D (I2CBus *)qdev_get_child_bus(dev, "i2c"); @@ -757,46 +764,47 @@ static void exynos4210_realize(DeviceState *socdev, E= rror **errp) * public datasheet which is very similar (implementing * MMC Specification Version 4.0 being the only difference noted) */ - dev =3D qdev_new_orphan(TYPE_S3C_SDHCI); + dev =3D qdev_new(OBJECT(s), "sdhci[*]", TYPE_S3C_SDHCI); qdev_prop_set_uint64(dev, "capareg", EXYNOS4210_SDHCI_CAPABILITIES= ); =20 busdev =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(busdev, &error_fatal); + sysbus_realize(busdev, &error_fatal); sysbus_mmio_map(busdev, 0, EXYNOS4210_SDHCI_ADDR(n)); sysbus_connect_irq(busdev, 0, s->irq_table[exynos4210_get_irq(29, = n)]); =20 di =3D drive_get(IF_SD, 0, n); blk =3D di ? blk_by_legacy_dinfo(di) : NULL; - carddev =3D qdev_new_orphan(TYPE_SD_CARD); + carddev =3D qdev_new(OBJECT(s), "sd-card[*]", TYPE_SD_CARD); qdev_prop_set_drive(carddev, "drive", blk); - qdev_realize_and_unref(carddev, qdev_get_child_bus(dev, "sd-bus"), - &error_fatal); + qdev_realize(carddev, qdev_get_child_bus(dev, "sd-bus"), + &error_fatal); } =20 /*** Display controller (FIMD) ***/ - dev =3D qdev_new_orphan("exynos4210.fimd"); + dev =3D qdev_new(OBJECT(s), "fimd", "exynos4210.fimd"); object_property_set_link(OBJECT(dev), "framebuffer-memory", OBJECT(system_mem), &error_fatal); busdev =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(busdev, &error_fatal); + sysbus_realize(busdev, &error_fatal); sysbus_mmio_map(busdev, 0, EXYNOS4210_FIMD0_BASE_ADDR); for (n =3D 0; n < 3; n++) { sysbus_connect_irq(busdev, n, s->irq_table[exynos4210_get_irq(11, = n)]); } =20 - sysbus_create_simple_orphan(TYPE_EXYNOS4210_EHCI, EXYNOS4210_EHCI_BASE= _ADDR, - s->irq_table[exynos4210_get_irq(28, 3)]); + sysbus_create_simple(OBJECT(s), "ehci", TYPE_EXYNOS4210_EHCI, + EXYNOS4210_EHCI_BASE_ADDR, + s->irq_table[exynos4210_get_irq(28, 3)]); =20 /*** DMA controllers ***/ - pl330[0] =3D pl330_create(EXYNOS4210_PL330_BASE0_ADDR, + pl330[0] =3D pl330_create(OBJECT(s), EXYNOS4210_PL330_BASE0_ADDR, &s->pl330_irq_orgate[0], s->irq_table[exynos4210_get_irq(21, 0)], 32, 32, 32); - pl330[1] =3D pl330_create(EXYNOS4210_PL330_BASE1_ADDR, + pl330[1] =3D pl330_create(OBJECT(s), EXYNOS4210_PL330_BASE1_ADDR, &s->pl330_irq_orgate[1], s->irq_table[exynos4210_get_irq(21, 1)], 32, 32, 32); - pl330[2] =3D pl330_create(EXYNOS4210_PL330_BASE2_ADDR, + pl330[2] =3D pl330_create(OBJECT(s), EXYNOS4210_PL330_BASE2_ADDR, &s->pl330_irq_orgate[2], s->irq_table[exynos4210_get_irq(20, 1)], 1, 31, 64); --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411753; cv=none; d=zohomail.com; s=zohoarc; b=Lw741mUk7J3owLGQhNuir46KM/VqNgNh5i7Q+VCsOYQktlBQmqxMPh01AqZ8X3XwF3abPjIrvOccCdbYQ20eM3uUHD1+ITuPa4/wzuxVmN0M70z84BtdxlT1qcmWjWQ/YzvSrfds4Zj24VrrB0lNhmWhQyruUaVlJsOryIweyts= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411753; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=cYN1CqVkHnd7rjYF8Nv9TACjJSq4vFWbCxR5bx7AHz8=; b=K35g7DYHvuWHA8kbYZJiH3wgATrnpW6EDQpBsSYceFzUe0NimUb6dtE28fWGxKnMOVixMlFCZueQbLrMscyB18MpryGrfYZW7E+3unCxV5XR/IIBwHVjt1zeiO8UOqbmbjriAl8sv5RDm0bxmQ2qKJCoRcPnGOKQGLSFDXUqpsY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411753002343.22218370324345; Sat, 18 Jul 2026 14:55:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlD0e-0003zs-QA; Sat, 18 Jul 2026 17:55:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD0W-0003kJ-Id; Sat, 18 Jul 2026 17:55:42 -0400 Received: from pdx-out-013.esa.us-west-2.outbound.mail-perimeter.amazon.com ([34.218.115.239]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD0U-0004YT-AP; Sat, 18 Jul 2026 17:55:40 -0400 Received: from ip-10-5-0-115.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.0.115]) by internal-pdx-out-013.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:55:33 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.51:13401] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.48.250:2525] with esmtp (Farcaster) id b7c53ff7-61ec-47f1-9fbc-b6039fd1a2ef; Sat, 18 Jul 2026 21:55:33 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB001.ant.amazon.com (10.250.64.248) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:55:33 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:55:23 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411738; x=1815947738; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=cYN1CqVkHnd7rjYF8Nv9TACjJSq4vFWbCxR5bx7AHz8=; b=MjIJeX5cB0kcl49QpY3+6FCA5cleng0voIzYG4ST/IJITCF+pfjoPBLt t1L7fjT0q0h/3+X2sZ0sKna4Fg2e3NPUH9IfwdcGwcVwzf9Q2qqsiSKjl 527PzLbTghFnYRqH1mCUs7+umQJyJw5qJXWmdvmvnITMOjhMgCwuexQGT iwe2BlalaLf3shOMwWpohm9HhKhXcjo/3q2EzlELdtLIw3Lfc/906Tx89 DVQf3Efb7NNV607Mm2XtfW2fYJX8YpQOmXVlfFxQfs4OXMDdMT5+WdUN/ GFhREXC9Vt+Q1BpDuXmuvEmkAenz1HHhuyYLtcNXmr6I3r/5MmdQG/2bF g==; X-CSE-ConnectionGUID: wSmFik+dRvuYFBl5C5xmxw== X-CSE-MsgGUID: /rYntoWZR1is3Aw96EFq3Q== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23719204" X-Farcaster-Flow-ID: b7c53ff7-61ec-47f1-9fbc-b6039fd1a2ef From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 066/137] hw/arm/allwinner: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:41 +0000 Message-ID: <20260718213652.37673-67-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D031UWC003.ant.amazon.com (10.13.139.252) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=34.218.115.239; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-013.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.01, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411754730158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in the hw/arm allwinner board files to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing SoC device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/arm/allwinner-h3.c:382 | sysbus_create_simple | OBJECT(s) | "ehci[*]" | = allwinner_h3_realize() SoC realize; 4 instances, auto-index. hw/arm/allwinner-h3.c:385 | sysbus_create_simple | OBJECT(s) | "ehci[*]" | = SoC realize; auto-index. hw/arm/allwinner-h3.c:388 | sysbus_create_simple | OBJECT(s) | "ehci[*]" | = SoC realize; auto-index. hw/arm/allwinner-h3.c:391 | sysbus_create_simple | OBJECT(s) | "ehci[*]" | = SoC realize; auto-index. hw/arm/allwinner-h3.c:395 | sysbus_create_simple | OBJECT(s) | "ohci[*]" | = SoC realize; 4 instances, auto-index. hw/arm/allwinner-h3.c:398 | sysbus_create_simple | OBJECT(s) | "ohci[*]" | = SoC realize; auto-index. hw/arm/allwinner-h3.c:401 | sysbus_create_simple | OBJECT(s) | "ohci[*]" | = SoC realize; auto-index. hw/arm/allwinner-h3.c:404 | sysbus_create_simple | OBJECT(s) | "ohci[*]" | = SoC realize; auto-index. hw/arm/bananapi_m2u.c:53 | qdev_new | OBJECT(s) | "sd-card[*]" | mmc_attach= _drive() helper receives AwR40State *s (SoC, itself child of machine); use = it as parent. Multiple units -> auto-index. Paired qdev_realize_and_unref -= > qdev_realize. hw/arm/bananapi_m2u.c:117 | i2c_slave_create_simple | OBJECT(machine) | "ax= p221" | Board init(); PMU is board-level peripheral on i2c bus. hw/arm/cubieboard.c:84 | i2c_slave_create_simple | OBJECT(machine) | "axp20= 9" | Board init(); PMU is board-level peripheral. hw/arm/cubieboard.c:92 | qdev_new | OBJECT(machine) | "sd-card" | Board ini= t(); single SD card. Paired qdev_realize_and_unref -> qdev_realize. hw/arm/orangepi.c:88 | qdev_new | OBJECT(machine) | "sd-card" | Board init(= ); single SD card. Paired qdev_realize_and_unref -> qdev_realize. Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/arm/allwinner-h3.c | 24 ++++++++++++++++-------- hw/arm/bananapi_m2u.c | 6 +++--- hw/arm/cubieboard.c | 6 +++--- hw/arm/orangepi.c | 4 ++-- 4 files changed, 24 insertions(+), 16 deletions(-) diff --git a/hw/arm/allwinner-h3.c b/hw/arm/allwinner-h3.c index ce716d1687..6f9a07610f 100644 --- a/hw/arm/allwinner-h3.c +++ b/hw/arm/allwinner-h3.c @@ -379,29 +379,37 @@ static void allwinner_h3_realize(DeviceState *dev, Er= ror **errp) qdev_get_gpio_in(DEVICE(&s->gic), AW_H3_GIC_SPI_EMA= C)); =20 /* Universal Serial Bus */ - sysbus_create_simple_orphan(TYPE_AW_H3_EHCI, s->memmap[AW_H3_DEV_EHCI0= ], + sysbus_create_simple(OBJECT(s), "ehci[*]", TYPE_AW_H3_EHCI, + s->memmap[AW_H3_DEV_EHCI0], qdev_get_gpio_in(DEVICE(&s->gic), AW_H3_GIC_SPI_EHCI0)); - sysbus_create_simple_orphan(TYPE_AW_H3_EHCI, s->memmap[AW_H3_DEV_EHCI1= ], + sysbus_create_simple(OBJECT(s), "ehci[*]", TYPE_AW_H3_EHCI, + s->memmap[AW_H3_DEV_EHCI1], qdev_get_gpio_in(DEVICE(&s->gic), AW_H3_GIC_SPI_EHCI1)); - sysbus_create_simple_orphan(TYPE_AW_H3_EHCI, s->memmap[AW_H3_DEV_EHCI2= ], + sysbus_create_simple(OBJECT(s), "ehci[*]", TYPE_AW_H3_EHCI, + s->memmap[AW_H3_DEV_EHCI2], qdev_get_gpio_in(DEVICE(&s->gic), AW_H3_GIC_SPI_EHCI2)); - sysbus_create_simple_orphan(TYPE_AW_H3_EHCI, s->memmap[AW_H3_DEV_EHCI3= ], + sysbus_create_simple(OBJECT(s), "ehci[*]", TYPE_AW_H3_EHCI, + s->memmap[AW_H3_DEV_EHCI3], qdev_get_gpio_in(DEVICE(&s->gic), AW_H3_GIC_SPI_EHCI3)); =20 - sysbus_create_simple_orphan("sysbus-ohci", s->memmap[AW_H3_DEV_OHCI0], + sysbus_create_simple(OBJECT(s), "ohci[*]", "sysbus-ohci", + s->memmap[AW_H3_DEV_OHCI0], qdev_get_gpio_in(DEVICE(&s->gic), AW_H3_GIC_SPI_OHCI0)); - sysbus_create_simple_orphan("sysbus-ohci", s->memmap[AW_H3_DEV_OHCI1], + sysbus_create_simple(OBJECT(s), "ohci[*]", "sysbus-ohci", + s->memmap[AW_H3_DEV_OHCI1], qdev_get_gpio_in(DEVICE(&s->gic), AW_H3_GIC_SPI_OHCI1)); - sysbus_create_simple_orphan("sysbus-ohci", s->memmap[AW_H3_DEV_OHCI2], + sysbus_create_simple(OBJECT(s), "ohci[*]", "sysbus-ohci", + s->memmap[AW_H3_DEV_OHCI2], qdev_get_gpio_in(DEVICE(&s->gic), AW_H3_GIC_SPI_OHCI2)); - sysbus_create_simple_orphan("sysbus-ohci", s->memmap[AW_H3_DEV_OHCI3], + sysbus_create_simple(OBJECT(s), "ohci[*]", "sysbus-ohci", + s->memmap[AW_H3_DEV_OHCI3], qdev_get_gpio_in(DEVICE(&s->gic), AW_H3_GIC_SPI_OHCI3)); =20 diff --git a/hw/arm/bananapi_m2u.c b/hw/arm/bananapi_m2u.c index 809c8bbc43..ae2d8bd2f7 100644 --- a/hw/arm/bananapi_m2u.c +++ b/hw/arm/bananapi_m2u.c @@ -50,9 +50,9 @@ static void mmc_attach_drive(AwR40State *s, AwSdHostState= *mmc, int unit, exit(1); } =20 - carddev =3D qdev_new_orphan(TYPE_SD_CARD); + carddev =3D qdev_new(OBJECT(s), "sd-card[*]", TYPE_SD_CARD); qdev_prop_set_drive_err(carddev, "drive", blk, &error_fatal); - qdev_realize_and_unref(carddev, bus, &error_fatal); + qdev_realize(carddev, bus, &error_fatal); =20 if (load_bootroom && blk && blk_is_available(blk)) { /* Use Boot ROM to copy data from SD card to SRAM */ @@ -114,7 +114,7 @@ static void bpim2u_init(MachineState *machine) =20 /* Connect AXP221 */ i2c =3D I2C_BUS(qdev_get_child_bus(DEVICE(&r40->i2c0), "i2c")); - i2c_slave_create_simple_orphan(i2c, "axp221_pmu", 0x34); + i2c_slave_create_simple(OBJECT(machine), "axp221", i2c, "axp221_pmu", = 0x34); =20 /* SDRAM */ memory_region_add_subregion(get_system_memory(), diff --git a/hw/arm/cubieboard.c b/hw/arm/cubieboard.c index 7ce5179345..fa5eaa5378 100644 --- a/hw/arm/cubieboard.c +++ b/hw/arm/cubieboard.c @@ -81,7 +81,7 @@ static void cubieboard_init(MachineState *machine) =20 /* Connect AXP 209 */ i2c =3D I2C_BUS(qdev_get_child_bus(DEVICE(&a10->i2c0), "i2c")); - i2c_slave_create_simple_orphan(i2c, "axp209_pmu", 0x34); + i2c_slave_create_simple(OBJECT(machine), "axp209", i2c, "axp209_pmu", = 0x34); =20 /* Retrieve SD bus */ di =3D drive_get(IF_SD, 0, 0); @@ -89,9 +89,9 @@ static void cubieboard_init(MachineState *machine) bus =3D qdev_get_child_bus(DEVICE(a10), "sd-bus"); =20 /* Plug in SD card */ - carddev =3D qdev_new_orphan(TYPE_SD_CARD); + carddev =3D qdev_new(OBJECT(machine), "sd-card", TYPE_SD_CARD); qdev_prop_set_drive_err(carddev, "drive", blk, &error_fatal); - qdev_realize_and_unref(carddev, bus, &error_fatal); + qdev_realize(carddev, bus, &error_fatal); =20 memory_region_add_subregion(get_system_memory(), AW_A10_SDRAM_BASE, machine->ram); diff --git a/hw/arm/orangepi.c b/hw/arm/orangepi.c index d705cc43b4..1a37c97eef 100644 --- a/hw/arm/orangepi.c +++ b/hw/arm/orangepi.c @@ -85,9 +85,9 @@ static void orangepi_init(MachineState *machine) bus =3D qdev_get_child_bus(DEVICE(h3), "sd-bus"); =20 /* Plug in SD card */ - carddev =3D qdev_new_orphan(TYPE_SD_CARD); + carddev =3D qdev_new(OBJECT(machine), "sd-card", TYPE_SD_CARD); qdev_prop_set_drive_err(carddev, "drive", blk, &error_fatal); - qdev_realize_and_unref(carddev, bus, &error_fatal); + qdev_realize(carddev, bus, &error_fatal); =20 /* SDRAM */ memory_region_add_subregion(get_system_memory(), h3->memmap[AW_H3_DEV_= SDRAM], --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411766; cv=none; d=zohomail.com; s=zohoarc; b=FVdKPtTI35F1O2hqGcsFNDlSpz8Z3pTLYYydOngGoa/qJmTF/eKah+00CkBkq3O0ExGntPhJBeTPMwrYpEMrTec/ukaujRlDsIpKNz94XmBYn6HTYBzwhBFED3iJlej5M9EQpnZgF/x3P1w0/5NyNnhMsQrED/HpiQnz/IX4XKM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411766; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=dKzfer9ZfJv7EUeLtSaSW1MA9kxz2rl8TgAOt4P8l24=; b=k/sBU312P7Y2ZiSo6vnhHVWkUM+U6avYfv4Juv1Zuzv22u1SVzjB1vrtbyyNzIOe34y0Tp8sgPe5OHeRnYFmJB7KQT12o3w3sOyI0/bEDSTW2HNT9ljIzr1TU3ydsI6+2KUDyhtc5DjOQSISIET7Khdexul2toaplwGt+gHpWac= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411766179326.8970206538353; Sat, 18 Jul 2026 14:56:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlD0j-0004DQ-9m; Sat, 18 Jul 2026 17:55:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD0e-00040D-KU; Sat, 18 Jul 2026 17:55:48 -0400 Received: from pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.245.243.92]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD0c-0004Zq-Fi; Sat, 18 Jul 2026 17:55:48 -0400 Received: from ip-10-5-6-203.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.6.203]) by internal-pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:55:43 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.51:12402] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.35.17:2525] with esmtp (Farcaster) id bdb54ba2-6c82-4779-ae62-9539c1132905; Sat, 18 Jul 2026 21:55:42 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC002.ant.amazon.com (10.250.64.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:55:42 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:55:33 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411746; x=1815947746; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=dKzfer9ZfJv7EUeLtSaSW1MA9kxz2rl8TgAOt4P8l24=; b=E9YSag9peTZErV09XThptKkqlVfGN5e2+kNw5FKTQP82XjCSTXU/H0p5 WEqUAkzBoO8HA9bw75sfopzPEvftH51QqFjN+e9fv2DYA59G/6j7Q9cec C5SXRIDzBJL2zwC9u9Q1mTR034t5ccnInFUBUZ4dAbRJccBSAtbZbWBwa MKmbNYlXJ31glkM5f9I7XABbZspPV5Mn6Il2l5w4exadbA0CNR5T4p/66 mBOaSLUmxeMXY9BbM61mozPjfo0kJSL8WlGcT0lgNRzKebDqrnqQYUltH A+haDyBl6E6+5ECKjqLQA3UD7lcTK8Flfgjy4t3XVf0Z8XuFP7vNrVcv4 Q==; X-CSE-ConnectionGUID: 84eN5zcnTUCgRCgrhfkoZA== X-CSE-MsgGUID: wgEVQXpmT0+sbDKeVRdE2w== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23423058" X-Farcaster-Flow-ID: bdb54ba2-6c82-4779-ae62-9539c1132905 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 067/137] hw/arm/strongarm: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:42 +0000 Message-ID: <20260718213652.37673-68-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D031UWC003.ant.amazon.com (10.13.139.252) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.245.243.92; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411766561158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in the hw/arm strongarm board files to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing SoC device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/arm/collie.c:67 | sysbus_create_simple | OBJECT(machine) | "scoop" | Boa= rd .init(MachineState *machine); single instance. hw/arm/strongarm.c:649 | qdev_new | parent (threaded) | "gpio" | strongarm_= gpio_init() static helper: added Object *parent as first arg, threaded from= sa1110_init(). Paired sysbus_realize_and_unref -> sysbus_realize. hw/arm/strongarm.c:1623 | cpu_create | parent (threaded) | "cpu" | sa1110_i= nit() has no parent-capable pointer; added Object *parent as first arg (pro= totype in strongarm.h updated), threaded from collie_init() with OBJECT(mac= hine). hw/arm/strongarm.c:1625 | sysbus_create_varargs | parent | "pic" | sa1110_i= nit(); single PIC. hw/arm/strongarm.c:1630 | sysbus_create_varargs | parent | "timer" | sa1110= _init(); single timer. hw/arm/strongarm.c:1637 | sysbus_create_simple | parent | "rtc" | sa1110_in= it(); single RTC. hw/arm/strongarm.c:1642 | sysbus_create_varargs | parent | "ppc" | sa1110_i= nit(); single PPC. hw/arm/strongarm.c:1645 | qdev_new | parent | "uart[*]" | sa1110_init(); lo= op over sa_serial[]. Paired sysbus_realize_and_unref -> sysbus_realize. hw/arm/strongarm.c:1654 | sysbus_create_varargs | parent | "ssp" | sa1110_i= nit(); single SSP. Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/arm/collie.c | 4 ++-- hw/arm/strongarm.c | 27 ++++++++++++++------------- hw/arm/strongarm.h | 2 +- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/hw/arm/collie.c b/hw/arm/collie.c index b3646daa3b..afd4e14315 100644 --- a/hw/arm/collie.c +++ b/hw/arm/collie.c @@ -52,7 +52,7 @@ static void collie_init(MachineState *machine) exit(EXIT_FAILURE); } =20 - cms->sa1110 =3D sa1110_init(machine->cpu_type); + cms->sa1110 =3D sa1110_init(OBJECT(machine), machine->cpu_type); =20 memory_region_add_subregion(get_system_memory(), SA_SDCS0, machine->ra= m); =20 @@ -64,7 +64,7 @@ static void collie_init(MachineState *machine) FLASH_SECTOR_SIZE, 4, 0x00, 0x00, 0x00, 0x00= , 0); } =20 - sysbus_create_simple_orphan("scoop", 0x40800000, NULL); + sysbus_create_simple(OBJECT(machine), "scoop", "scoop", 0x40800000, NU= LL); =20 collie_binfo.board_id =3D 0x208; arm_load_kernel(cms->sa1110->cpu, machine, &collie_binfo); diff --git a/hw/arm/strongarm.c b/hw/arm/strongarm.c index 1704db8baa..0b3b56218a 100644 --- a/hw/arm/strongarm.c +++ b/hw/arm/strongarm.c @@ -640,14 +640,14 @@ static const MemoryRegionOps strongarm_gpio_ops =3D { .endianness =3D DEVICE_NATIVE_ENDIAN, }; =20 -static DeviceState *strongarm_gpio_init(hwaddr base, +static DeviceState *strongarm_gpio_init(Object *parent, hwaddr base, DeviceState *pic) { DeviceState *dev; int i; =20 - dev =3D qdev_new_orphan(TYPE_STRONGARM_GPIO); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + dev =3D qdev_new(parent, "gpio", TYPE_STRONGARM_GPIO); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, base); for (i =3D 0; i < 12; i++) @@ -1608,7 +1608,7 @@ static const TypeInfo strongarm_ssp_info =3D { }; =20 /* Main CPU functions */ -StrongARMState *sa1110_init(const char *cpu_type) +StrongARMState *sa1110_init(Object *parent, const char *cpu_type) { StrongARMState *s; int i; @@ -1620,38 +1620,39 @@ StrongARMState *sa1110_init(const char *cpu_type) exit(1); } =20 - s->cpu =3D ARM_CPU(cpu_create_orphan(cpu_type)); + s->cpu =3D ARM_CPU(cpu_create(parent, "cpu", cpu_type)); =20 - s->pic =3D sysbus_create_varargs_orphan("strongarm_pic", 0x90050000, + s->pic =3D sysbus_create_varargs(parent, "pic", "strongarm_pic", 0x900= 50000, qdev_get_gpio_in(DEVICE(s->cpu), ARM_CPU_IRQ), qdev_get_gpio_in(DEVICE(s->cpu), ARM_CPU_FIQ), NULL); =20 - sysbus_create_varargs_orphan("pxa25x-timer", 0x90000000, + sysbus_create_varargs(parent, "timer", "pxa25x-timer", 0x90000000, qdev_get_gpio_in(s->pic, SA_PIC_OSTC0), qdev_get_gpio_in(s->pic, SA_PIC_OSTC1), qdev_get_gpio_in(s->pic, SA_PIC_OSTC2), qdev_get_gpio_in(s->pic, SA_PIC_OSTC3), NULL); =20 - sysbus_create_simple_orphan(TYPE_STRONGARM_RTC, 0x90010000, + sysbus_create_simple(parent, "rtc", TYPE_STRONGARM_RTC, 0x90010000, qdev_get_gpio_in(s->pic, SA_PIC_RTC_ALARM)); =20 - s->gpio =3D strongarm_gpio_init(0x90040000, s->pic); + s->gpio =3D strongarm_gpio_init(parent, 0x90040000, s->pic); =20 - s->ppc =3D sysbus_create_varargs_orphan(TYPE_STRONGARM_PPC, 0x90060000= , NULL); + s->ppc =3D sysbus_create_varargs(parent, "ppc", TYPE_STRONGARM_PPC, + 0x90060000, NULL); =20 for (i =3D 0; sa_serial[i].io_base; i++) { - DeviceState *dev =3D qdev_new_orphan(TYPE_STRONGARM_UART); + DeviceState *dev =3D qdev_new(parent, "uart[*]", TYPE_STRONGARM_UA= RT); qdev_prop_set_chr(dev, "chardev", serial_hd(i)); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, sa_serial[i].io_base); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, qdev_get_gpio_in(s->pic, sa_serial[i].irq)); } =20 - s->ssp =3D sysbus_create_varargs_orphan(TYPE_STRONGARM_SSP, 0x80070000, + s->ssp =3D sysbus_create_varargs(parent, "ssp", TYPE_STRONGARM_SSP, 0x= 80070000, qdev_get_gpio_in(s->pic, SA_PIC_SSP), NULL); s->ssp_bus =3D (SSIBus *)qdev_get_child_bus(s->ssp, "ssi"); =20 diff --git a/hw/arm/strongarm.h b/hw/arm/strongarm.h index b11b3a3379..72bb9e075c 100644 --- a/hw/arm/strongarm.h +++ b/hw/arm/strongarm.h @@ -62,6 +62,6 @@ typedef struct { SSIBus *ssp_bus; } StrongARMState; =20 -StrongARMState *sa1110_init(const char *cpu_type); +StrongARMState *sa1110_init(Object *parent, const char *cpu_type); =20 #endif --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411761; cv=none; d=zohomail.com; s=zohoarc; b=NbbPclOUWC3n0L6gWKRH4Bf41LhvT2OIj9m8fxgifxL4LsidAAo5xrn/IdMV4/l7p649YUxtmf/wwm+FdStW1B4j85tbM4qt9XvQReyiX4uNB/FTusF5bTUWdpEc+bF/dqANqDtu8EPD/u2Wb/kB2CbWoSl8VikrR6lXkn607iA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411761; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=vtF2mHSj4Wqtsp1DClFR9ycudV7uUUq9K0sm6ktNWlk=; b=nJ1JxKYcxGt9/L/Vmp/DWYsT19hipV0fwjLDA2XJe7Y+OhU6u5xn4YgnKcWCFq/X8Qi70eXBUG6KSK7wpWvxuUT94KOnGl/3QEy0jSas+Me3h+gs0RQY/gGZuEDLLV2KiGN3v5IdAxYfGQ0ziX5KXTjxoh745uc3AK+woOp+5II= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411761807251.74288522114807; Sat, 18 Jul 2026 14:56:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlD0p-0004m3-U8; Sat, 18 Jul 2026 17:55:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD0o-0004fs-O1; Sat, 18 Jul 2026 17:55:58 -0400 Received: from pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.42.203.116]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD0m-0004bb-0h; Sat, 18 Jul 2026 17:55:58 -0400 Received: from ip-10-5-0-115.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.0.115]) by internal-pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:55:52 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.236:5317] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.58.199:2525] with esmtp (Farcaster) id 43934e5c-535c-4d3a-8c72-461f94c9b459; Sat, 18 Jul 2026 21:55:52 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA001.ant.amazon.com (10.250.64.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:55:52 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:55:42 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411756; x=1815947756; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=vtF2mHSj4Wqtsp1DClFR9ycudV7uUUq9K0sm6ktNWlk=; b=fHvr4eOEo+9oYJeDDpiquTjIymMrD5Q6t4LXAhfiiIg7spVzEVAEVrdR IYMt+/Fzey8Q+k5adoSuW9ELUtysai+2tG0ajUi9CrehC4DpOyeHHvBp2 ss2b5KFgcErsDLwbWS47V1fSOx1oQvuVia8pWgGQSFABHkJ5L5qiSApui ZA0e10UJj6zeaWeZWcqIIS/CEKw+aW7P33ez/j1W1pq8qODn68QbDZu97 vGVw1wEbrSs1woy6r0G+ud6BIoyynxF3VzUFH1vtIBIGR4rPHwkF9thdB sFGOjKoSWaRt0KKpDsYLw6aMiJZzQrdHT+V+yuHFXp5VNS1xQdVj9a2QP A==; X-CSE-ConnectionGUID: Hs2luzm0QvOJjB4PRZpiMw== X-CSE-MsgGUID: U1TMboK0TEWs/NNEEBooDg== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23940014" X-Farcaster-Flow-ID: 43934e5c-535c-4d3a-8c72-461f94c9b459 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 068/137] hw/arm/omap: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:43 +0000 Message-ID: <20260718213652.37673-69-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D031UWC003.ant.amazon.com (10.13.139.252) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.42.203.116; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411762555158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in the hw/arm omap board files to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing SoC device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/arm/omap1.c:3752 | cpu_create | parent | "cpu" | omap310_mpu_init() alre= ady receives Object *parent; use it directly. hw/arm/omap1.c:3766 | qdev_new | parent | "intc[0]" | Two interrupt control= lers, explicit index. Paired sysbus_realize_and_unref -> sysbus_realize. hw/arm/omap1.c:3776 | qdev_new | parent | "intc[1]" | Second intc. Paired s= ysbus_realize_and_unref -> sysbus_realize. hw/arm/omap1.c:3879 | qdev_new | parent | "mmc" | Single MMC. Paired sysbus= _realize_and_unref -> sysbus_realize. hw/arm/omap1.c:3891 | qdev_new | parent | "sd-card" | Single SD card (bus i= s not parent). Paired qdev_realize_and_unref -> qdev_realize. hw/arm/omap1.c:3903 | qdev_new | parent | "gpio" | Single GPIO. Paired sysb= us_realize_and_unref -> sysbus_realize. hw/arm/omap1.c:3920 | qdev_new | parent | "i2c" | Single i2c (only i2c[0] p= opulated on omap1). Paired sysbus_realize_and_unref -> sysbus_realize. Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/arm/omap1.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/hw/arm/omap1.c b/hw/arm/omap1.c index c86914a464..e5e092e074 100644 --- a/hw/arm/omap1.c +++ b/hw/arm/omap1.c @@ -3749,7 +3749,7 @@ struct omap_mpu_state_s *omap310_mpu_init(Object *par= ent, MemoryRegion *dram, MemoryRegion *system_memory =3D get_system_memory(); =20 /* Core */ - s->cpu =3D ARM_CPU(cpu_create_orphan(cpu_type)); + s->cpu =3D ARM_CPU(cpu_create(parent, "cpu", cpu_type)); s->sdram_size =3D memory_region_size(dram); s->sram_size =3D OMAP15XX_SRAM_SIZE; =20 @@ -3763,21 +3763,21 @@ struct omap_mpu_state_s *omap310_mpu_init(Object *p= arent, MemoryRegion *dram, =20 omap_clkm_init(system_memory, 0xfffece00, 0xe1008000, s); =20 - s->ih[0] =3D qdev_new_orphan("omap-intc"); + s->ih[0] =3D qdev_new(parent, "intc[0]", "omap-intc"); qdev_prop_set_uint32(s->ih[0], "size", 0x100); omap_intc_set_iclk(OMAP_INTC(s->ih[0]), omap_findclk(s, "arminth_ck")); busdev =3D SYS_BUS_DEVICE(s->ih[0]); - sysbus_realize_and_unref(busdev, &error_fatal); + sysbus_realize(busdev, &error_fatal); sysbus_connect_irq(busdev, 0, qdev_get_gpio_in(DEVICE(s->cpu), ARM_CPU_IRQ)); sysbus_connect_irq(busdev, 1, qdev_get_gpio_in(DEVICE(s->cpu), ARM_CPU_FIQ)); sysbus_mmio_map(busdev, 0, 0xfffecb00); - s->ih[1] =3D qdev_new_orphan("omap-intc"); + s->ih[1] =3D qdev_new(parent, "intc[1]", "omap-intc"); qdev_prop_set_uint32(s->ih[1], "size", 0x800); omap_intc_set_iclk(OMAP_INTC(s->ih[1]), omap_findclk(s, "arminth_ck")); busdev =3D SYS_BUS_DEVICE(s->ih[1]); - sysbus_realize_and_unref(busdev, &error_fatal); + sysbus_realize(busdev, &error_fatal); sysbus_connect_irq(busdev, 0, qdev_get_gpio_in(s->ih[0], OMAP_INT_15XX_IH2_IRQ)); /* The second interrupt controller's FIQ output is not wired up */ @@ -3876,8 +3876,8 @@ struct omap_mpu_state_s *omap310_mpu_init(Object *par= ent, MemoryRegion *dram, warn_report("missing SecureDigital device"); } =20 - s->mmc =3D qdev_new_orphan(TYPE_OMAP_MMC); - sysbus_realize_and_unref(SYS_BUS_DEVICE(s->mmc), &error_fatal); + s->mmc =3D qdev_new(parent, "mmc", TYPE_OMAP_MMC); + sysbus_realize(SYS_BUS_DEVICE(s->mmc), &error_fatal); omap_mmc_set_clk(s->mmc, omap_findclk(s, "mmc_ck")); =20 memory_region_add_subregion(system_memory, 0xfffb7800, @@ -3888,11 +3888,11 @@ struct omap_mpu_state_s *omap310_mpu_init(Object *p= arent, MemoryRegion *dram, qdev_get_gpio_in(s->ih[1], OMAP_INT_OQN)); =20 if (dinfo) { - DeviceState *card =3D qdev_new_orphan(TYPE_SD_CARD); + DeviceState *card =3D qdev_new(parent, "sd-card", TYPE_SD_CARD); qdev_prop_set_drive_err(card, "drive", blk_by_legacy_dinfo(dinfo), &error_fatal); - qdev_realize_and_unref(card, qdev_get_child_bus(s->mmc, "sd-bus"), - &error_fatal); + qdev_realize(card, qdev_get_child_bus(s->mmc, "sd-bus"), + &error_fatal); } =20 s->mpuio =3D omap_mpuio_init(system_memory, 0xfffb5000, @@ -3900,9 +3900,9 @@ struct omap_mpu_state_s *omap310_mpu_init(Object *par= ent, MemoryRegion *dram, qdev_get_gpio_in(s->ih[1], OMAP_INT_MPUIO), omap_findclk(s, "clk32-kHz")); =20 - s->gpio =3D qdev_new_orphan("omap-gpio"); + s->gpio =3D qdev_new(parent, "gpio", "omap-gpio"); omap_gpio_set_clk(OMAP1_GPIO(s->gpio), omap_findclk(s, "arm_gpio_ck")); - sysbus_realize_and_unref(SYS_BUS_DEVICE(s->gpio), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(s->gpio), &error_fatal); sysbus_connect_irq(SYS_BUS_DEVICE(s->gpio), 0, qdev_get_gpio_in(s->ih[0], OMAP_INT_GPIO_BANK1)); sysbus_mmio_map(SYS_BUS_DEVICE(s->gpio), 0, 0xfffce000); @@ -3917,11 +3917,11 @@ struct omap_mpu_state_s *omap310_mpu_init(Object *p= arent, MemoryRegion *dram, s->pwt =3D omap_pwt_init(system_memory, 0xfffb6000, omap_findclk(s, "armxor_ck")); =20 - s->i2c[0] =3D qdev_new_orphan("omap_i2c"); + s->i2c[0] =3D qdev_new(parent, "i2c", "omap_i2c"); qdev_prop_set_uint8(s->i2c[0], "revision", 0x11); omap_i2c_set_fclk(OMAP_I2C(s->i2c[0]), omap_findclk(s, "mpuper_ck")); busdev =3D SYS_BUS_DEVICE(s->i2c[0]); - sysbus_realize_and_unref(busdev, &error_fatal); + sysbus_realize(busdev, &error_fatal); sysbus_connect_irq(busdev, 0, qdev_get_gpio_in(s->ih[1], OMAP_INT_I2C)= ); sysbus_connect_irq(busdev, 1, s->drq[OMAP_DMA_I2C_TX]); sysbus_connect_irq(busdev, 2, s->drq[OMAP_DMA_I2C_RX]); --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411796; cv=none; d=zohomail.com; s=zohoarc; b=eM+jK5Nu8iX92KLOpJnR4Pwb8QpuGUjQL1Oqs9e3O4pbyQ/ygUlV/e09tkSnjPG1qmn1YETJlfvMOyqINRWoMaik8OkL/VvEGfBewi3ombn3W8ioI6AA5PWvvMvUZF0Pt9TtLsE8pIpdk1AnWYfhp+v9zaR5KgMBpLAm/VberaQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411796; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ryD4CYKSXv6OLvpmUHtpBkHhhYgwrqqNbJwAKFj2HhM=; b=PYrvd8fJ1bXmJ4oR3pwM3S+ZDwkly0+LWEFg6tlwICHdC1m9fCnPQxfld1CmjKr/AVHZF0FOeGBC/K3TombQbo9PorLyvEVE2FgBTv5/+ItR+8kB/U92a7BerbdyqqSRhffj6PaNBeXBXShrR4F5vBq8TYj1xbjsyuyrVQs5aZ8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411796378903.5917339176209; Sat, 18 Jul 2026 14:56:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlD1O-0006lN-3f; Sat, 18 Jul 2026 17:56:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD1M-0006kx-1I; Sat, 18 Jul 2026 17:56:32 -0400 Received: from pdx-out-015.esa.us-west-2.outbound.mail-perimeter.amazon.com ([50.112.246.219]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD1H-0004fX-Q2; Sat, 18 Jul 2026 17:56:31 -0400 Received: from ip-10-5-12-219.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.12.219]) by internal-pdx-out-015.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:56:24 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.53:14107] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.41.246:2525] with esmtp (Farcaster) id 0427b51b-9d43-4a6b-a523-ca14d6c5c609; Sat, 18 Jul 2026 21:56:23 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC001.ant.amazon.com (10.250.64.174) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:56:23 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:56:13 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411787; x=1815947787; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ryD4CYKSXv6OLvpmUHtpBkHhhYgwrqqNbJwAKFj2HhM=; b=GX46IRNYLI7B/b8HU4x1LlaHs5bsRphy0Og4yyzNlAbvhG+xiE7ZgXw0 6LapMZx16Yq+wVkhfzxUQSXw5RwNYkjP+8uEBMdqbvVo+mPqAnAfineGO 5CzDLwmbB99p8dS158uqNN8StWUUkLSpuCJ/tKtVNXg3Bq9/ULfkHLJaC RLcBk5bR08T1TqRa67inildRHo29R/WadfHjaMYdaHrS6Nyd0dl3vdRb+ 8k6vjAiK7It7CDZWJgILGVTSbukCSqz7eibxSZ5hsNNn1e0r+o9qiFjfn MCr5D9wJqvkya48hbIorN79iPtzXcdoVmyLDtbSMps+NbmR6KLZ6umljF g==; X-CSE-ConnectionGUID: h/bIFewwTuOr0G2bBUaKXA== X-CSE-MsgGUID: Eo++Umx3RJWFCJrSKr2SkA== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23725094" X-Farcaster-Flow-ID: 0427b51b-9d43-4a6b-a523-ca14d6c5c609 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 069/137] hw/arm/mps2: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:44 +0000 Message-ID: <20260718213652.37673-70-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D042UWA001.ant.amazon.com (10.13.139.92) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=50.112.246.219; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-015.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411796701158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in the hw/arm mps2 board files to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing SoC device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/arm/mps2.c:302 | qdev_new_orphan | OBJECT(mms) | "uart[*]" | board init = (mps2_common_init), MPS2MachineState *mms is machine; indexed loop; drop _a= nd_unref hw/arm/mps2.c:346 | qdev_new_orphan | OBJECT(mms) | "uart[*]" | board init,= second FPGA variant loop; auto-index; drop _and_unref hw/arm/mps2.c:419 | sysbus_create_simple_orphan | OBJECT(mms) | "spi[*]" | = board init; PL022 external ADC; auto-index shared with loop below hw/arm/mps2.c:438 | sysbus_create_simple_orphan | OBJECT(mms) | "spi[*]" | = board init; PL022 in nested loop; auto-index hw/arm/mps2.c:449 | sysbus_create_simple_orphan | OBJECT(mms) | "i2c[*]" | = board init; SBCON I2C in loop; auto-index hw/arm/mps2-tz.c:511 | qdev_new_orphan | OBJECT(mms) | "lan9118" | make_eth= _dev helper receives MPS2TZMachineState *mms (board state); single instance= ; drop _and_unref hw/arm/mps2-tz.c:538 | qdev_new_orphan | OBJECT(mms) | "lan9118" | make_eth= _usb helper receives mms; single instance (mutually exclusive with make_eth= _dev per board); drop _and_unref Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/arm/mps2-tz.c | 8 ++++---- hw/arm/mps2.c | 18 ++++++++++-------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/hw/arm/mps2-tz.c b/hw/arm/mps2-tz.c index c0ab898f2e..17945d2b71 100644 --- a/hw/arm/mps2-tz.c +++ b/hw/arm/mps2-tz.c @@ -508,11 +508,11 @@ static MemoryRegion *make_eth_dev(MPS2TZMachineState = *mms, void *opaque, /* In hardware this is a LAN9220; the LAN9118 is software compatible * except that it doesn't support the checksum-offload feature. */ - mms->lan9118 =3D qdev_new_orphan(TYPE_LAN9118); + mms->lan9118 =3D qdev_new(OBJECT(mms), "lan9118", TYPE_LAN9118); qemu_configure_nic_device(mms->lan9118, true, NULL); =20 s =3D SYS_BUS_DEVICE(mms->lan9118); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); sysbus_connect_irq(s, 0, get_sse_irq_in(mms, irqs[0])); return sysbus_mmio_get_region(s, 0); } @@ -535,11 +535,11 @@ static MemoryRegion *make_eth_usb(MPS2TZMachineState = *mms, void *opaque, * In hardware this is a LAN9220; the LAN9118 is software compatible * except that it doesn't support the checksum-offload feature. */ - mms->lan9118 =3D qdev_new_orphan(TYPE_LAN9118); + mms->lan9118 =3D qdev_new(OBJECT(mms), "lan9118", TYPE_LAN9118); qemu_configure_nic_device(mms->lan9118, true, NULL); =20 s =3D SYS_BUS_DEVICE(mms->lan9118); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); sysbus_connect_irq(s, 0, get_sse_irq_in(mms, irqs[0])); =20 memory_region_add_subregion(&mms->eth_usb_container, diff --git a/hw/arm/mps2.c b/hw/arm/mps2.c index e646c7c71e..2edd222674 100644 --- a/hw/arm/mps2.c +++ b/hw/arm/mps2.c @@ -299,11 +299,11 @@ static void mps2_common_init(MachineState *machine) rxovrint =3D qdev_get_gpio_in(orgate_dev, i * 2 + 1); } =20 - dev =3D qdev_new_orphan(TYPE_CMSDK_APB_UART); + dev =3D qdev_new(OBJECT(mms), "uart[*]", TYPE_CMSDK_APB_UART); s =3D SYS_BUS_DEVICE(dev); qdev_prop_set_chr(dev, "chardev", serial_hd(i)); qdev_prop_set_uint32(dev, "pclk-frq", SYSCLK_FRQ); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); sysbus_mmio_map(s, 0, uartbase[i]); sysbus_connect_irq(s, 0, qdev_get_gpio_in(armv7m, uartirq[i] += 1)); sysbus_connect_irq(s, 1, qdev_get_gpio_in(armv7m, uartirq[i])); @@ -343,11 +343,11 @@ static void mps2_common_init(MachineState *machine) qdev_connect_gpio_out(txrx_orgate_dev, 0, qdev_get_gpio_in(armv7m, uart_txrx_irqno= [i])); =20 - dev =3D qdev_new_orphan(TYPE_CMSDK_APB_UART); + dev =3D qdev_new(OBJECT(mms), "uart[*]", TYPE_CMSDK_APB_UART); s =3D SYS_BUS_DEVICE(dev); qdev_prop_set_chr(dev, "chardev", serial_hd(i)); qdev_prop_set_uint32(dev, "pclk-frq", SYSCLK_FRQ); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); sysbus_mmio_map(s, 0, uartbase[i]); sysbus_connect_irq(s, 0, qdev_get_gpio_in(txrx_orgate_dev, 0)); sysbus_connect_irq(s, 1, qdev_get_gpio_in(txrx_orgate_dev, 1)); @@ -416,8 +416,8 @@ static void mps2_common_init(MachineState *machine) qdev_prop_set_uint32(DEVICE(&mms->fpgaio), "prescale-clk", 25000000); sysbus_realize(SYS_BUS_DEVICE(&mms->fpgaio), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(&mms->fpgaio), 0, 0x40028000); - sysbus_create_simple_orphan(TYPE_PL022, 0x40025000, /* External= ADC */ - qdev_get_gpio_in(armv7m, 22)); + sysbus_create_simple(OBJECT(mms), "spi[*]", TYPE_PL022, 0x40025000, + qdev_get_gpio_in(armv7m, 22)); /* External ADC */ for (i =3D 0; i < 2; i++) { static const int spi_irqno[] =3D {11, 24}; static const hwaddr spibase[] =3D {0x40020000, /* APB */ @@ -435,7 +435,8 @@ static void mps2_common_init(MachineState *machine) qdev_connect_gpio_out(orgate_dev, 0, qdev_get_gpio_in(armv7m, spi_irqno[i])); for (j =3D 0; j < 2; j++) { - sysbus_create_simple_orphan(TYPE_PL022, spibase[2 * i + j], + sysbus_create_simple(OBJECT(mms), "spi[*]", TYPE_PL022, + spibase[2 * i + j], qdev_get_gpio_in(orgate_dev, j)); } } @@ -446,7 +447,8 @@ static void mps2_common_init(MachineState *machine) 0x4002a000}; /* Shield1 */ DeviceState *dev; =20 - dev =3D sysbus_create_simple_orphan(TYPE_ARM_SBCON_I2C, i2cbase[i]= , NULL); + dev =3D sysbus_create_simple(OBJECT(mms), "i2c[*]", + TYPE_ARM_SBCON_I2C, i2cbase[i], NULL); if (i < 2) { /* * internal-only bus: mark it full to avoid user-created --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411809; cv=none; d=zohomail.com; s=zohoarc; b=nIUCYhAuKTBuUhS2f763gSqNppceAv5Sk1Jc3NzT1kIqTo8szxhR3ZmjN6XhzMraZP6S0+ErKFXfET/k8v5tuBXB+aiSo6uJ395a3tzjCrQz19wmzQAq8tGHXucLW5zlpS5SwFYsh3csNa0YsA7DYwvwV1YfLO6bsgYr3X76oGk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411809; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=jlOGAdStmn18YNthMQ1V323+hKhmvN2yrpAYrt47LxA=; b=Hor1ufPvAcGdVxEngis8kB8/RkXlXvTMvGHxweX2fyWHbX0Z6brhVX3EivZDZvH6yGAhh/nkXOm8tGrCEyWawlHYkva7BzDHAPMYoT75SOZaO7yoBr6HGb5X49lrftzCXtYQeFVlwG628mcg8XusnVXLRrZqhr2QTI13ePhldT8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411809762269.48846388174013; Sat, 18 Jul 2026 14:56:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlD1Y-0006wE-Jb; Sat, 18 Jul 2026 17:56:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD1T-0006to-TO; Sat, 18 Jul 2026 17:56:40 -0400 Received: from pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.42.203.116]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD1R-0004g2-PW; Sat, 18 Jul 2026 17:56:39 -0400 Received: from ip-10-5-6-203.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.6.203]) by internal-pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:56:33 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.111:4084] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.29.147:2525] with esmtp (Farcaster) id e01b40c2-1667-4667-bad7-6863ee0051f5; Sat, 18 Jul 2026 21:56:32 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB002.ant.amazon.com (10.250.64.231) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:56:32 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:56:23 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411797; x=1815947797; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=jlOGAdStmn18YNthMQ1V323+hKhmvN2yrpAYrt47LxA=; b=jwvOkRSb3AjmHuCe7cEiPi7cZGdvxtgTNQu08KPcSVxGJ5KgUgHUyKxz 0xx8I2e3H38lq5F26DMvDTxJjbRZND3SyBtXOa+OvDrMlB8KJe0b4R8Gm k6ijEsD/7YDYh6PkJrwzxdCJ642x734r8ytu18NWMEmTOUs2WjS5gMHFn /PguN0Ta+s8kozEA3ss/U8I+3pU8y2wYBhnQaRXd/TZm/UmF5xQlYP6dT yOtQ+Xm8PQZS4RpLYiIj8pARz3XjGeFYi3K+0Ak1FXltAyrKmyg3PVmTN KQ3SmWjVthTCdwxHVcKD0JgkZH3+ffGLrC6wMrtrCmpUe+pkCjGvwDmsq Q==; X-CSE-ConnectionGUID: jQWsJQAnRPuGVTTVbu8UBg== X-CSE-MsgGUID: TzDmUDRLTP27C+fEll7EAg== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23940038" X-Farcaster-Flow-ID: e01b40c2-1667-4667-bad7-6863ee0051f5 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 070/137] hw/arm/imx: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:45 +0000 Message-ID: <20260718213652.37673-71-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D042UWA001.ant.amazon.com (10.13.139.92) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.42.203.116; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411810767158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in the hw/arm imx board files to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing SoC device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/arm/fsl-imx6.c:171 | sysbus_create_simple_orphan | OBJECT(dev) | "l2x0" = | SoC DeviceClass.realize(DeviceState *dev); parent is the SoC device being= realized; single instance hw/arm/imx25_pdk.c:130 | qdev_new_orphan | OBJECT(machine) | "sd-card[*]" |= board init(MachineState *machine); loop over ESDHC slots; auto-index; drop= _and_unref hw/arm/imx8mm-evk.c:100 | qdev_new_orphan | OBJECT(machine) | "sd-card[*]" = | board init; loop over USDHC slots; auto-index; drop _and_unref hw/arm/imx8mp-evk.c:113 | qdev_new_orphan | OBJECT(machine) | "sd-card[*]" = | board init; loop over USDHC slots; auto-index; drop _and_unref hw/arm/mcimx6ul-evk.c:62 | qdev_new_orphan | OBJECT(machine) | "sd-card[*]"= | board init; loop over USDHC slots; auto-index; drop _and_unref hw/arm/mcimx7d-sabre.c:62 | qdev_new_orphan | OBJECT(machine) | "sd-card[*]= " | board init; loop over USDHC slots; auto-index; drop _and_unref hw/arm/sabrelite.c:99 | qdev_new_orphan | OBJECT(machine) | "spi-flash" | b= oard init; single NOR flash on SPI bus; drop _and_unref Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/arm/fsl-imx6.c | 3 ++- hw/arm/imx25_pdk.c | 4 ++-- hw/arm/imx8mm-evk.c | 4 ++-- hw/arm/imx8mp-evk.c | 4 ++-- hw/arm/mcimx6ul-evk.c | 4 ++-- hw/arm/mcimx7d-sabre.c | 4 ++-- hw/arm/sabrelite.c | 5 +++-- 7 files changed, 15 insertions(+), 13 deletions(-) diff --git a/hw/arm/fsl-imx6.c b/hw/arm/fsl-imx6.c index 103adcc2bd..44046953be 100644 --- a/hw/arm/fsl-imx6.c +++ b/hw/arm/fsl-imx6.c @@ -168,7 +168,8 @@ static void fsl_imx6_realize(DeviceState *dev, Error **= errp) } =20 /* L2 cache controller */ - sysbus_create_simple_orphan("l2x0", FSL_IMX6_PL310_ADDR, NULL); + sysbus_create_simple(OBJECT(dev), "l2x0", "l2x0", FSL_IMX6_PL310_ADDR, + NULL); =20 if (!sysbus_realize(SYS_BUS_DEVICE(&s->ccm), errp)) { return; diff --git a/hw/arm/imx25_pdk.c b/hw/arm/imx25_pdk.c index 6976652370..9351d53850 100644 --- a/hw/arm/imx25_pdk.c +++ b/hw/arm/imx25_pdk.c @@ -127,9 +127,9 @@ static void imx25_pdk_init(MachineState *machine) di =3D drive_get(IF_SD, 0, i); blk =3D di ? blk_by_legacy_dinfo(di) : NULL; bus =3D qdev_get_child_bus(DEVICE(&s->soc.esdhc[i]), "sd-bus"); - carddev =3D qdev_new_orphan(TYPE_SD_CARD); + carddev =3D qdev_new(OBJECT(machine), "sd-card[*]", TYPE_SD_CARD); qdev_prop_set_drive_err(carddev, "drive", blk, &error_fatal); - qdev_realize_and_unref(carddev, bus, &error_fatal); + qdev_realize(carddev, bus, &error_fatal); } =20 /* diff --git a/hw/arm/imx8mm-evk.c b/hw/arm/imx8mm-evk.c index ce7693ca7a..72fa1930ae 100644 --- a/hw/arm/imx8mm-evk.c +++ b/hw/arm/imx8mm-evk.c @@ -97,9 +97,9 @@ static void imx8mm_evk_init(MachineState *machine) =20 blk =3D blk_by_legacy_dinfo(di); bus =3D qdev_get_child_bus(DEVICE(&s->usdhc[i]), "sd-bus"); - carddev =3D qdev_new_orphan(TYPE_SD_CARD); + carddev =3D qdev_new(OBJECT(machine), "sd-card[*]", TYPE_SD_CARD); qdev_prop_set_drive_err(carddev, "drive", blk, &error_fatal); - qdev_realize_and_unref(carddev, bus, &error_fatal); + qdev_realize(carddev, bus, &error_fatal); } =20 if (!qtest_enabled()) { diff --git a/hw/arm/imx8mp-evk.c b/hw/arm/imx8mp-evk.c index 90cda63b49..6116e6e9dc 100644 --- a/hw/arm/imx8mp-evk.c +++ b/hw/arm/imx8mp-evk.c @@ -110,9 +110,9 @@ static void imx8mp_evk_init(MachineState *machine) =20 blk =3D blk_by_legacy_dinfo(di); bus =3D qdev_get_child_bus(DEVICE(&s->soc.usdhc[i]), "sd-bus"); - carddev =3D qdev_new_orphan(TYPE_SD_CARD); + carddev =3D qdev_new(OBJECT(machine), "sd-card[*]", TYPE_SD_CARD); qdev_prop_set_drive_err(carddev, "drive", blk, &error_fatal); - qdev_realize_and_unref(carddev, bus, &error_fatal); + qdev_realize(carddev, bus, &error_fatal); } =20 if (!qtest_enabled()) { diff --git a/hw/arm/mcimx6ul-evk.c b/hw/arm/mcimx6ul-evk.c index 96309e1bfc..be4c4ca316 100644 --- a/hw/arm/mcimx6ul-evk.c +++ b/hw/arm/mcimx6ul-evk.c @@ -59,9 +59,9 @@ static void mcimx6ul_evk_init(MachineState *machine) di =3D drive_get(IF_SD, 0, i); blk =3D di ? blk_by_legacy_dinfo(di) : NULL; bus =3D qdev_get_child_bus(DEVICE(&s->usdhc[i]), "sd-bus"); - carddev =3D qdev_new_orphan(TYPE_SD_CARD); + carddev =3D qdev_new(OBJECT(machine), "sd-card[*]", TYPE_SD_CARD); qdev_prop_set_drive_err(carddev, "drive", blk, &error_fatal); - qdev_realize_and_unref(carddev, bus, &error_fatal); + qdev_realize(carddev, bus, &error_fatal); } =20 if (!qtest_enabled()) { diff --git a/hw/arm/mcimx7d-sabre.c b/hw/arm/mcimx7d-sabre.c index be9d0d6993..d8b1e7fc7e 100644 --- a/hw/arm/mcimx7d-sabre.c +++ b/hw/arm/mcimx7d-sabre.c @@ -59,9 +59,9 @@ static void mcimx7d_sabre_init(MachineState *machine) di =3D drive_get(IF_SD, 0, i); blk =3D di ? blk_by_legacy_dinfo(di) : NULL; bus =3D qdev_get_child_bus(DEVICE(&s->usdhc[i]), "sd-bus"); - carddev =3D qdev_new_orphan(TYPE_SD_CARD); + carddev =3D qdev_new(OBJECT(machine), "sd-card[*]", TYPE_SD_CARD); qdev_prop_set_drive_err(carddev, "drive", blk, &error_fatal); - qdev_realize_and_unref(carddev, bus, &error_fatal); + qdev_realize(carddev, bus, &error_fatal); } =20 if (!qtest_enabled()) { diff --git a/hw/arm/sabrelite.c b/hw/arm/sabrelite.c index af4dfef7f2..04c764f82f 100644 --- a/hw/arm/sabrelite.c +++ b/hw/arm/sabrelite.c @@ -96,13 +96,14 @@ static void sabrelite_init(MachineState *machine) qemu_irq cs_line; DriveInfo *dinfo =3D drive_get(IF_MTD, 0, 0); =20 - flash_dev =3D qdev_new_orphan("sst25vf016b"); + flash_dev =3D qdev_new(OBJECT(machine), "spi-flash", + "sst25vf016b"); if (dinfo) { qdev_prop_set_drive_err(flash_dev, "drive", blk_by_legacy_dinfo(dinfo), &error_fatal); } - qdev_realize_and_unref(flash_dev, BUS(spi_bus), &error_fat= al); + qdev_realize(flash_dev, BUS(spi_bus), &error_fatal); =20 cs_line =3D qdev_get_gpio_in_named(flash_dev, SSI_GPIO_CS,= 0); qdev_connect_gpio_out(DEVICE(&s->soc.gpio[2]), 19, cs_line= ); --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411829; cv=none; d=zohomail.com; s=zohoarc; b=YQh7PewJa42vqCLVHq4bDla9Q702QUMGhuDtnP8s7xuY0+bmtS9pDtxdNChcmJn3z/sOpidLhScb/2SfOkeRIbp/fWzPUwhWmzYvxNknrwLOgthFfh/4ixOWtQoz8mrGMH48Vl8JbC1hENPVi6UFBRJIL688HFWJUA5VRTwwHYc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411829; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=RFej6oM5oC0mWz/9aAFhqnduo5g5BPd0goE2ENrwDhw=; b=iXd1v3Da/OL00OvK3HiLvdZORznSx68L0ovUUmeYw4RwTBM9JeimgWTBNrzdpiO1cpoDMnhwsUpt63LmA1zaOy1rNa+xQTz6y9zGygU8L6AuNGfl67ePUKyVNfImhb/flWaGVKM/5OUchALPlFvH2JqodMhs8Qg0gUDBFmADtTI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411829680706.6729464659574; Sat, 18 Jul 2026 14:57:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlD1h-00075s-6z; Sat, 18 Jul 2026 17:56:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD1c-0006zL-Fq; Sat, 18 Jul 2026 17:56:50 -0400 Received: from pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.245.243.92]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD1a-0004gW-77; Sat, 18 Jul 2026 17:56:48 -0400 Received: from ip-10-5-6-203.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.6.203]) by internal-pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:56:42 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.234:28296] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.30.230:2525] with esmtp (Farcaster) id 92c5bffa-22eb-4b6f-b051-332befbf2bff; Sat, 18 Jul 2026 21:56:42 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA002.ant.amazon.com (10.250.64.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:56:42 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:56:32 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411806; x=1815947806; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=RFej6oM5oC0mWz/9aAFhqnduo5g5BPd0goE2ENrwDhw=; b=BcMYhY02X6wQt5YtqAGSjTQtINg6epOECEnCAdYz0kgzEgKoT4gYZ7FK /fnPseDMSnLTCLJvYZOVl+GjSqrZwxuzYbJFwk6g8L8UuaU2FoJFZlzQA nYqaoNAMZRu3TgdMTT9Birt4gYs77hrnuixecrUPl1X9cYE567ivn5wS0 3Di0rnARCpfEwXMK6JJCM+Eh1PEiodqLHh/YcKq8g82Uv5bWvZrpu+gUA lNR6UVc2XagJsWHG51FfPaw551U911R/vA3Otv8Kx5lVwmoR9Qy5Z2HfF dcolaQsHxkKp/OPq/biU9Ius6Iw295pkMTtQIdl9LYCpK54xSMAK29XGE g==; X-CSE-ConnectionGUID: Yd1Fo18WR8CT0PcWW/Mn4g== X-CSE-MsgGUID: tY5ZVIapTiSRTWDh1BouVw== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23423091" X-Farcaster-Flow-ID: 92c5bffa-22eb-4b6f-b051-332befbf2bff From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 071/137] hw/arm/misc: Give onboard devices a QOM parent Date: Sat, 18 Jul 2026 21:35:46 +0000 Message-ID: <20260718213652.37673-72-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D042UWA001.ant.amazon.com (10.13.139.92) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.245.243.92; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411831082158500 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in the hw/arm misc board files to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine for board-created devices, the containing SoC device for composite children. Names follow existing QOM conventions. Per-site rationale (reviewers: dispute the modeling here): hw/arm/max78000fthr.c:29 | qdev_new_orphan | OBJECT(machine) | "soc" | boar= d init; existing add_child(machine,"soc") collapsed; drop _and_unref hw/arm/msf2-som.c:62 | qdev_new_orphan | OBJECT(machine) | "soc" | board in= it; existing add_child(machine,"soc") collapsed; drop _and_unref hw/arm/msf2-som.c:86 | qdev_new_orphan | OBJECT(machine) | "spi-flash" | bo= ard init; single m25p80 flash on SPI bus; drop _and_unref hw/arm/netduino2.c:47 | qdev_new_orphan | OBJECT(machine) | "soc" | board i= nit; existing add_child(machine,"soc") collapsed; drop _and_unref hw/arm/netduinoplus2.c:47 | qdev_new_orphan | OBJECT(machine) | "soc" | boa= rd init; existing add_child(machine,"soc") collapsed; drop _and_unref hw/arm/olimex-stm32-h405.c:50 | qdev_new_orphan | OBJECT(machine) | "soc" |= board init; existing add_child(machine,"soc") collapsed; drop _and_unref hw/arm/raspi.c:286 | qdev_new_orphan | OBJECT(machine) | "sd-card" | raspi_= base_machine_init(MachineState *machine); single SD card; drop _and_unref hw/arm/stm32vldiscovery.c:50 | qdev_new_orphan | OBJECT(machine) | "soc" | = board init; existing add_child(machine,"soc") collapsed; drop _and_unref Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/arm/max78000fthr.c | 5 ++--- hw/arm/msf2-som.c | 10 +++++----- hw/arm/netduino2.c | 5 ++--- hw/arm/netduinoplus2.c | 5 ++--- hw/arm/olimex-stm32-h405.c | 5 ++--- hw/arm/raspi.c | 4 ++-- hw/arm/stm32vldiscovery.c | 5 ++--- 7 files changed, 17 insertions(+), 22 deletions(-) diff --git a/hw/arm/max78000fthr.c b/hw/arm/max78000fthr.c index d2fb4c018b..e38a3340a4 100644 --- a/hw/arm/max78000fthr.c +++ b/hw/arm/max78000fthr.c @@ -26,10 +26,9 @@ static void max78000_init(MachineState *machine) sysclk =3D clock_new(OBJECT(machine), "SYSCLK"); clock_set_hz(sysclk, SYSCLK_FRQ); =20 - dev =3D qdev_new_orphan(TYPE_MAX78000_SOC); - object_property_add_child(OBJECT(machine), "soc", OBJECT(dev)); + dev =3D qdev_new(OBJECT(machine), "soc", TYPE_MAX78000_SOC); qdev_connect_clock_in(dev, "sysclk", sysclk); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 armv7m_load_kernel(ARM_CPU(first_cpu), machine->kernel_filename, diff --git a/hw/arm/msf2-som.c b/hw/arm/msf2-som.c index bb1e774764..0d0e2514dd 100644 --- a/hw/arm/msf2-som.c +++ b/hw/arm/msf2-som.c @@ -59,8 +59,7 @@ static void emcraft_sf2_s2s010_init(MachineState *machine) &error_fatal); memory_region_add_subregion(sysmem, DDR_BASE_ADDRESS, ddr); =20 - dev =3D qdev_new_orphan(TYPE_MSF2_SOC); - object_property_add_child(OBJECT(machine), "soc", OBJECT(dev)); + dev =3D qdev_new(OBJECT(machine), "soc", TYPE_MSF2_SOC); qdev_prop_set_string(dev, "part-name", "M2S010"); qdev_prop_set_uint64(dev, "eNVM-size", M2S010_ENVM_SIZE); qdev_prop_set_uint64(dev, "eSRAM-size", M2S010_ESRAM_SIZE); @@ -77,19 +76,20 @@ static void emcraft_sf2_s2s010_init(MachineState *machi= ne) qdev_prop_set_uint32(dev, "apb0div", 2); qdev_prop_set_uint32(dev, "apb1div", 2); =20 - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 soc =3D MSF2_SOC(dev); =20 /* Attach SPI flash to SPI0 controller */ spi_bus =3D qdev_get_child_bus(dev, "spi0"); - spi_flash =3D qdev_new_orphan("s25sl12801"); /* Spansion S25FL128SDPBH= ICO */ + /* Spansion S25FL128SDPBHICO */ + spi_flash =3D qdev_new(OBJECT(machine), "spi-flash", "s25sl12801"); qdev_prop_set_uint8(spi_flash, "spansion-cr2nv", 0x8); if (dinfo) { qdev_prop_set_drive_err(spi_flash, "drive", blk_by_legacy_dinfo(dinfo), &error_fatal); } - qdev_realize_and_unref(spi_flash, spi_bus, &error_fatal); + qdev_realize(spi_flash, spi_bus, &error_fatal); cs_line =3D qdev_get_gpio_in_named(spi_flash, SSI_GPIO_CS, 0); sysbus_connect_irq(SYS_BUS_DEVICE(&soc->spi[0]), 1, cs_line); =20 diff --git a/hw/arm/netduino2.c b/hw/arm/netduino2.c index cee887c194..9a1caf06a1 100644 --- a/hw/arm/netduino2.c +++ b/hw/arm/netduino2.c @@ -44,10 +44,9 @@ static void netduino2_init(MachineState *machine) sysclk =3D clock_new(OBJECT(machine), "SYSCLK"); clock_set_hz(sysclk, SYSCLK_FRQ); =20 - dev =3D qdev_new_orphan(TYPE_STM32F205_SOC); - object_property_add_child(OBJECT(machine), "soc", OBJECT(dev)); + dev =3D qdev_new(OBJECT(machine), "soc", TYPE_STM32F205_SOC); qdev_connect_clock_in(dev, "sysclk", sysclk); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 armv7m_load_kernel(STM32F205_SOC(dev)->armv7m.cpu, machine->kernel_fil= ename, 0, FLASH_SIZE); diff --git a/hw/arm/netduinoplus2.c b/hw/arm/netduinoplus2.c index 65251dfe96..564dae1f16 100644 --- a/hw/arm/netduinoplus2.c +++ b/hw/arm/netduinoplus2.c @@ -44,10 +44,9 @@ static void netduinoplus2_init(MachineState *machine) sysclk =3D clock_new(OBJECT(machine), "SYSCLK"); clock_set_hz(sysclk, SYSCLK_FRQ); =20 - dev =3D qdev_new_orphan(TYPE_STM32F405_SOC); - object_property_add_child(OBJECT(machine), "soc", OBJECT(dev)); + dev =3D qdev_new(OBJECT(machine), "soc", TYPE_STM32F405_SOC); qdev_connect_clock_in(dev, "sysclk", sysclk); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 armv7m_load_kernel(STM32F405_SOC(dev)->armv7m.cpu, machine->kernel_filename, diff --git a/hw/arm/olimex-stm32-h405.c b/hw/arm/olimex-stm32-h405.c index 70f7791695..b24142e909 100644 --- a/hw/arm/olimex-stm32-h405.c +++ b/hw/arm/olimex-stm32-h405.c @@ -47,10 +47,9 @@ static void olimex_stm32_h405_init(MachineState *machine) sysclk =3D clock_new(OBJECT(machine), "SYSCLK"); clock_set_hz(sysclk, SYSCLK_FRQ); =20 - dev =3D qdev_new_orphan(TYPE_STM32F405_SOC); - object_property_add_child(OBJECT(machine), "soc", OBJECT(dev)); + dev =3D qdev_new(OBJECT(machine), "soc", TYPE_STM32F405_SOC); qdev_connect_clock_in(dev, "sysclk", sysclk); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 armv7m_load_kernel(STM32F405_SOC(dev)->armv7m.cpu, machine->kernel_filename, diff --git a/hw/arm/raspi.c b/hw/arm/raspi.c index 2d5f51506d..55ca84cd1d 100644 --- a/hw/arm/raspi.c +++ b/hw/arm/raspi.c @@ -283,9 +283,9 @@ void raspi_base_machine_init(MachineState *machine, error_report("No SD bus found in SOC object"); exit(1); } - carddev =3D qdev_new_orphan(TYPE_SD_CARD); + carddev =3D qdev_new(OBJECT(machine), "sd-card", TYPE_SD_CARD); qdev_prop_set_drive_err(carddev, "drive", blk, &error_fatal); - qdev_realize_and_unref(carddev, bus, &error_fatal); + qdev_realize(carddev, bus, &error_fatal); =20 vcram_size =3D object_property_get_uint(OBJECT(soc), "vcram-size", &error_abort); diff --git a/hw/arm/stm32vldiscovery.c b/hw/arm/stm32vldiscovery.c index 8c37d41e63..69503805cb 100644 --- a/hw/arm/stm32vldiscovery.c +++ b/hw/arm/stm32vldiscovery.c @@ -47,10 +47,9 @@ static void stm32vldiscovery_init(MachineState *machine) sysclk =3D clock_new(OBJECT(machine), "SYSCLK"); clock_set_hz(sysclk, SYSCLK_FRQ); =20 - dev =3D qdev_new_orphan(TYPE_STM32F100_SOC); - object_property_add_child(OBJECT(machine), "soc", OBJECT(dev)); + dev =3D qdev_new(OBJECT(machine), "soc", TYPE_STM32F100_SOC); qdev_connect_clock_in(dev, "sysclk", sysclk); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 armv7m_load_kernel(STM32F100_SOC(dev)->armv7m.cpu, machine->kernel_filename, --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411850; cv=none; d=zohomail.com; s=zohoarc; b=N0evcxoKFEUhv+703TAYobbSPXi0HA3glTqXC0KZicw1W1K49RKTWuElqv82ZziKPmX04zDlBKntkiMV756uEbCkG/NdnUZ0KFVVx7Sg6DOQi71ZljL0vaRtKEn2HhRIikWbDSWWyPr/bpeQGwJDiD9wJRGO5aG2I/KYaFHceVE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411850; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=orvUCNqnxbf08yMEjUYSrAszh34NavapBueyCqJ8a/s=; b=Zsyhw7JWpCPq47j4QVbci7NQMs3gO3puZulYDI2BDUBjKQfjnwLfm6qOloaBh8/+l6x4WvrRbvt5prTkb5ByLqgAaxfggc9stb2+HPWkqOs5FNVTAbgfJk9KtVM3Knox9jwGcHBJiSOfkWOJpHZdVA2AOmiATF3S5iRX367XOXs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411850069814.7870140519763; Sat, 18 Jul 2026 14:57:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlD2E-000057-Ir; Sat, 18 Jul 2026 17:57:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD2C-0008Lq-AJ; Sat, 18 Jul 2026 17:57:24 -0400 Received: from pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com ([35.155.198.111]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD25-0004hl-Th; Sat, 18 Jul 2026 17:57:23 -0400 Received: from ip-10-5-0-115.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.0.115]) by internal-pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:57:14 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.104:5805] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.29.147:2525] with esmtp (Farcaster) id 631edbb6-0654-4f35-9d2c-8b251f3b056b; Sat, 18 Jul 2026 21:57:14 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB001.ant.amazon.com (10.250.64.248) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:57:13 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:57:03 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411837; x=1815947837; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=orvUCNqnxbf08yMEjUYSrAszh34NavapBueyCqJ8a/s=; b=rXIsJ8TqC+sWgsivdVg3I1D6d0nq1vp+Qb4UWXiBh6VhtsnHtsdVlFOQ QbjeUuGK+FpqpZe1cAcR7X8PKc/kmLOYliLwu0LjoSbuxtxE5BcW/j3Cj aOTv3okpVIQGrTrofLS6nNZC46DQEBJeQ1LFOMiBCNDBvH3/GP+Lgi4Zf Kn9fwJZv3YnFJ/XZxOUSP2EvE3K3RWYvsSDmqEtnfLtc3zPp0sgzyyVfd L1oKlcfFszUc8S18sirESeOevCyFtxYUvkUC8RcTsuiYFFYdXkYXuriKv zMEPV+ALGlb2RV7ddNVorO512fl8xuRXTvaavU8vt3ggiWmck41RMyFwK g==; X-CSE-ConnectionGUID: 8opYG5W8TYe2EflEo9NWGA== X-CSE-MsgGUID: IfgeOj8rS0KM/lg9rVjknQ== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23816836" X-Farcaster-Flow-ID: 631edbb6-0654-4f35-9d2c-8b251f3b056b From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 072/137] hw/arm/aspeed: Give onboard devices a QOM parent (part 1) Date: Sat, 18 Jul 2026 21:35:47 +0000 Message-ID: <20260718213652.37673-73-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D031UWC003.ant.amazon.com (10.13.139.252) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=35.155.198.111; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411850955158500 Convert the *_orphan() device-creation calls in the smaller hw/arm/aspeed_* board files and the shared aspeed helpers to the new parented API introduced earlier in this series, so every onboard device gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the object that owns its lifetime: the machine (AspeedMachineState) for board-created I2C peripherals, the containing SoC device for composite children. Names follow existing QOM conventions. The shared helpers aspeed_create_pca9552(), aspeed_create_pca9554() and aspeed_soc_uart_realize() gain an Object *parent first argument; callers in the four large aspeed board files are updated here so this commit builds standalone, but the direct *_orphan() calls in those four files are converted in the next commit. Per-site rationale (reviewers: dispute the modeling here): hw/arm/aspeed_* boards =E2=80=94 per-callsite rationale (62 sites) =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Common context: all *_i2c_init(AspeedMachineState *bmc) callbacks are invok= ed from aspeed_machine_init() (mc->init) via amc->i2c_init(bmc). bmc is the MachineState =E2=86=92 parent =3D OBJECT(bmc). i2c_slave_create_simple real= izes internally, so no realize-call change needed. i2c_slave_new pairs with qdev_realize (i2c_slave_realize does not exist). File:Line Old call = Parent Name Notes --------------------------------------- ----------------------------------= -- -------------- ------------ ------------------------------------------ aspeed_ast1040_evb.c:59 i2c_slave_create_simple_orphan = OBJECT(bmc) "tmp105" board i2c_init callback aspeed_ast10x0_evb.c:77 i2c_slave_create_simple_orphan = OBJECT(bmc) "tmp105" board i2c_init callback aspeed_ast2400_palmetto.c:40 i2c_slave_create_simple_orphan = OBJECT(bmc) "rtc" ds1338 RTC aspeed_ast2400_palmetto.c:46 i2c_slave_create_simple_orphan = OBJECT(bmc) "tmp423" single instance aspeed_ast2400_quanta-q71l.c:36 i2c_slave_create_simple_orphan = OBJECT(bmc) "tmp105[*]" 3=C3=97 tmp105 =E2=86=92 auto-index aspeed_ast2400_quanta-q71l.c:37 i2c_slave_create_simple_orphan = OBJECT(bmc) "tmp105[*]" aspeed_ast2400_quanta-q71l.c:38 i2c_slave_create_simple_orphan = OBJECT(bmc) "tmp105[*]" aspeed_ast2400_quanta-q71l.c:44 i2c_slave_create_simple_orphan = OBJECT(bmc) "i2c-mux[*]" pca954x muxes aspeed_ast2400_quanta-q71l.c:45 i2c_slave_create_simple_orphan = OBJECT(bmc) "i2c-mux[*]" aspeed_ast2400_quanta-q71l.c:50 i2c_slave_create_simple_orphan = OBJECT(bmc) "i2c-mux[*]" aspeed_ast2400_supermicrox11.c:40 i2c_slave_create_simple_orphan = OBJECT(bmc) "rtc" ds1338 aspeed_ast2400_supermicrox11.c:46 i2c_slave_create_simple_orphan = OBJECT(bmc) "tmp423" aspeed_ast2500_evb.c:37 i2c_slave_create_simple_orphan = OBJECT(bmc) "tmp105" aspeed_ast2500_g220a.c:35 i2c_slave_create_simple_orphan = OBJECT(bmc) "emc1413[*]" 3=C3=97 emc1413 aspeed_ast2500_g220a.c:41 i2c_slave_create_simple_orphan = OBJECT(bmc) "emc1413[*]" aspeed_ast2500_g220a.c:47 i2c_slave_create_simple_orphan = OBJECT(bmc) "emc1413[*]" aspeed_ast2500_romulus.c:33 i2c_slave_create_simple_orphan = OBJECT(bmc) "rtc" ds1338 aspeed_ast2500_supermicro-x11spi.c:36 i2c_slave_create_simple_orphan = OBJECT(bmc) "rtc" ds1338 aspeed_ast2500_supermicro-x11spi.c:42 i2c_slave_create_simple_orphan = OBJECT(bmc) "tmp423" aspeed_ast2500_tiogapass.c:58 i2c_slave_create_simple_orphan = OBJECT(bmc) "tmp421[*]" 3=C3=97 tmp421 aspeed_ast2500_tiogapass.c:59 i2c_slave_create_simple_orphan = OBJECT(bmc) "tmp421[*]" aspeed_ast2500_tiogapass.c:60 i2c_slave_create_simple_orphan = OBJECT(bmc) "tmp421[*]" aspeed_ast2500_witherspoon.c:47 i2c_slave_new_orphan = OBJECT(bmc) "pca9552[*]" =E2=86=92 i2c_slave_new; realize_and_unre= f =E2=86=92 qdev_realize(dev, BUS(bus), ...) aspeed_ast2500_witherspoon.c:61 i2c_slave_create_simple_orphan = OBJECT(bmc) "dps310" aspeed_ast2500_witherspoon.c:62 i2c_slave_create_simple_orphan = OBJECT(bmc) "max31785" aspeed_ast2500_witherspoon.c:63 i2c_slave_create_simple_orphan = OBJECT(bmc) "tmp423[*]" 2=C3=97 tmp423 aspeed_ast2500_witherspoon.c:64 i2c_slave_create_simple_orphan = OBJECT(bmc) "tmp423[*]" aspeed_ast2500_witherspoon.c:67 i2c_slave_create_simple_orphan = OBJECT(bmc) "tmp105" aspeed_ast2500_witherspoon.c:74 i2c_slave_create_simple_orphan = OBJECT(bmc) "rtc" ds1338 aspeed_ast2500_witherspoon.c:78 i2c_slave_new_orphan = OBJECT(bmc) "pca9552[*]" =E2=86=92 i2c_slave_new; realize_and_unre= f =E2=86=92 qdev_realize aspeed_ast2500_yosemitev2.c:58 i2c_slave_create_simple_orphan = OBJECT(bmc) "tmp421[*]" 3=C3=97 tmp421 aspeed_ast2500_yosemitev2.c:59 i2c_slave_create_simple_orphan = OBJECT(bmc) "tmp421[*]" aspeed_ast2500_yosemitev2.c:60 i2c_slave_create_simple_orphan = OBJECT(bmc) "tmp421[*]" aspeed_ast2600_bletchley.c:38 i2c_slave_create_simple_orphan = OBJECT(bmc) "tmp421[*]" loop 0..5 aspeed_ast2600_bletchley.c:40 i2c_slave_create_simple_orphan = OBJECT(bmc) "pca9552[*]" loop 0..5 aspeed_ast2600_bletchley.c:41 i2c_slave_create_simple_orphan = OBJECT(bmc) "pca9552[*]" loop 0..5 aspeed_ast2600_bletchley.c:48 i2c_slave_create_simple_orphan = OBJECT(bmc) "rtc" ds1338 aspeed_ast2600_bletchley.c:55 i2c_slave_create_simple_orphan = OBJECT(bmc) "tmp421[*]" aspeed_ast2600_bletchley.c:58 i2c_slave_create_simple_orphan = OBJECT(bmc) "tmp421[*]" aspeed_ast2600_bletchley.c:60 i2c_slave_create_simple_orphan = OBJECT(bmc) "pca9552[*]" aspeed_ast2600_bletchley.c:64 i2c_slave_create_simple_orphan = OBJECT(bmc) "tmp421[*]" aspeed_ast2600_bletchley.c:65 i2c_slave_create_simple_orphan = OBJECT(bmc) "tmp421[*]" aspeed_ast2600_bletchley.c:66 i2c_slave_create_simple_orphan = OBJECT(bmc) "pca9552[*]" aspeed_ast2600_evb.c:30 i2c_slave_create_simple_orphan = OBJECT(bmc) "tmp105" aspeed_ast2600_fby35.c:105 i2c_slave_create_simple_orphan = OBJECT(bmc) "lm75[*]" 3=C3=97 LM75 total aspeed_ast2600_fby35.c:106 i2c_slave_create_simple_orphan = OBJECT(bmc) "tmp421" aspeed_ast2600_fby35.c:108 i2c_slave_create_simple_orphan = OBJECT(bmc) "adm1272" aspeed_ast2600_fby35.c:109 i2c_slave_create_simple_orphan = OBJECT(bmc) "lm75[*]" aspeed_ast2600_fby35.c:110 i2c_slave_create_simple_orphan = OBJECT(bmc) "lm75[*]" aspeed_ast2600_gb200nvl.c:57 i2c_slave_create_simple_orphan = OBJECT(bmc) "i2c-mux[*]" 6=C3=97 pca9546 aspeed_ast2600_gb200nvl.c:58 i2c_slave_create_simple_orphan = OBJECT(bmc) "i2c-mux[*]" aspeed_ast2600_gb200nvl.c:59 i2c_slave_create_simple_orphan = OBJECT(bmc) "i2c-mux[*]" aspeed_ast2600_gb200nvl.c:60 i2c_slave_create_simple_orphan = OBJECT(bmc) "i2c-mux[*]" aspeed_ast2600_gb200nvl.c:61 i2c_slave_create_simple_orphan = OBJECT(bmc) "i2c-mux[*]" aspeed_ast2600_gb200nvl.c:62 i2c_slave_create_simple_orphan = OBJECT(bmc) "i2c-mux[*]" aspeed_ast27x0_evb.c:27 i2c_slave_create_simple_orphan = OBJECT(bmc) "tmp105" aspeed_ast27x0-fc.c:112 i2c_slave_create_simple_orphan = OBJECT(machine) "tmp105" ast2700fc_ca35_init(MachineState *machine) aspeed.c:93 qdev_new_orphan = parent "sd-card[*]" static helper sdhci_attach_drive(): threa= ded = Object *parent as first arg; callers pass = OBJECT(bmc) from aspeed_machine_init. = qdev_realize_and_unref =E2=86=92 qdev_rea= lize. aspeed.c:256 i2c_slave_create_simple_orphan = parent "pca9552[*]" aspeed_create_pca9552(): threaded Object = *parent = first arg. Prototype in include/hw/arm/as= peed.h = updated. Callers in rainier.c, gb200nvl.c= updated = to pass OBJECT(bmc). aspeed.c:262 i2c_slave_create_simple_orphan = parent "pca9554[*]" aspeed_create_pca9554(): threaded Object = *parent = first arg. Prototype updated. Callers in = gb200nvl.c updated to pass OBJECT(bmc). aspeed_soc_common.c:84 qdev_new_orphan = OBJECT(s) "ram-empty" aspeed_soc_dram_init(AspeedSoCState *s) c= alled = from SoC realize (ast2400/2600). Parent = =3D SoC. = sysbus_realize_and_unref =E2=86=92 sysbus= _realize. aspeed_soc_common.c:131 qdev_new_orphan = parent "flash[*]" aspeed_board_init_flashes(): threaded Obj= ect = *parent first arg. Called from board init = (aspeed.c, ast10x0_evb.c, ast27x0-fc.c) = =E2=80=94 all = callers pass OBJECT(bmc)/OBJECT(machine). = Prototype in include/hw/arm/aspeed_soc.h = updated. = qdev_realize_and_unref =E2=86=92 qdev_rea= lize. Threaded-parent helper changes (all callers updated in same diff): sdhci_attach_drive() hw/arm/aspeed.c (static) =E2=80=94 2 call= ers in aspeed.c aspeed_create_pca9552() hw/arm/aspeed.c + aspeed.h =E2=80=94 16 cal= lers in aspeed_ast2600_rainier.c aspeed_create_pca9554() hw/arm/aspeed.c + aspeed.h =E2=80=94 3 call= ers in aspeed_ast2600_gb200nvl.c aspeed_board_init_flashes() hw/arm/aspeed_soc_common.c + aspeed_soc.h =E2= =80=94 8 callers (aspeed.c =C3=973, ast10x0_evb.c =C3=973, ast= 27x0-fc.c =C3=972) Not touched (per instructions): at24c_eeprom_init*(), smbus_eeprom_init*(). orphan_justified =3D 0 Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/arm/aspeed.c | 37 +++++++++++++---------- hw/arm/aspeed_ast1040_evb.c | 3 +- hw/arm/aspeed_ast10x0_evb.c | 9 +++--- hw/arm/aspeed_ast2400_palmetto.c | 6 ++-- hw/arm/aspeed_ast2400_quanta-q71l.c | 18 +++++++---- hw/arm/aspeed_ast2400_supermicrox11.c | 6 ++-- hw/arm/aspeed_ast2500_evb.c | 5 +-- hw/arm/aspeed_ast2500_g220a.c | 9 ++++-- hw/arm/aspeed_ast2500_romulus.c | 3 +- hw/arm/aspeed_ast2500_supermicro-x11spi.c | 6 ++-- hw/arm/aspeed_ast2500_tiogapass.c | 9 ++++-- hw/arm/aspeed_ast2500_witherspoon.c | 32 +++++++++++--------- hw/arm/aspeed_ast2500_yosemitev2.c | 9 ++++-- hw/arm/aspeed_ast2600_bletchley.c | 29 ++++++++++++------ hw/arm/aspeed_ast2600_evb.c | 5 +-- hw/arm/aspeed_ast2600_fby35.c | 10 +++--- hw/arm/aspeed_ast2600_gb200nvl.c | 18 +++++------ hw/arm/aspeed_ast2600_rainier.c | 32 ++++++++++---------- hw/arm/aspeed_ast27x0-fc.c | 9 ++++-- hw/arm/aspeed_ast27x0_evb.c | 3 +- hw/arm/aspeed_soc_common.c | 12 +++++--- include/hw/arm/aspeed.h | 10 +++--- include/hw/arm/aspeed_soc.h | 3 +- 23 files changed, 167 insertions(+), 116 deletions(-) diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c index 4a4c1f1556..2e76e09f8f 100644 --- a/hw/arm/aspeed.c +++ b/hw/arm/aspeed.c @@ -82,15 +82,16 @@ static void aspeed_reset_secondary(ARMCPU *cpu, cpu_set_pc(cs, info->smp_loader_start); } =20 -static void sdhci_attach_drive(SDHCIState *sdhci, DriveInfo *dinfo, bool e= mmc, - bool boot_emmc) +static void sdhci_attach_drive(Object *parent, SDHCIState *sdhci, + DriveInfo *dinfo, bool emmc, bool boot_emmc) { DeviceState *card; =20 if (!dinfo) { return; } - card =3D qdev_new_orphan(emmc ? TYPE_EMMC : TYPE_SD_CARD); + card =3D qdev_new(parent, "sd-card[*]", + emmc ? TYPE_EMMC : TYPE_SD_CARD); =20 /* * Force the boot properties of the eMMC device only when the @@ -108,9 +109,8 @@ static void sdhci_attach_drive(SDHCIState *sdhci, Drive= Info *dinfo, bool emmc, } qdev_prop_set_drive_err(card, "drive", blk_by_legacy_dinfo(dinfo), &error_fatal); - qdev_realize_and_unref(card, - qdev_get_child_bus(DEVICE(sdhci), "sd-bus"), - &error_fatal); + qdev_realize(card, qdev_get_child_bus(DEVICE(sdhci), "sd-bus"), + &error_fatal); } =20 void aspeed_connect_serial_hds_to_uarts(AspeedMachineState *bmc) @@ -188,13 +188,13 @@ static void aspeed_machine_init(MachineState *machine) qdev_realize(DEVICE(bmc->soc), NULL, &error_abort); =20 if (defaults_enabled()) { - aspeed_board_init_flashes(&bmc->soc->fmc, + aspeed_board_init_flashes(OBJECT(bmc), &bmc->soc->fmc, bmc->fmc_model ? bmc->fmc_model : amc->fmc_m= odel, amc->num_cs, 0); - aspeed_board_init_flashes(&bmc->soc->spi[0], + aspeed_board_init_flashes(OBJECT(bmc), &bmc->soc->spi[0], bmc->spi_model ? bmc->spi_model : amc->spi_m= odel, 1, amc->num_cs); - aspeed_board_init_flashes(&bmc->soc->spi[1], + aspeed_board_init_flashes(OBJECT(bmc), &bmc->soc->spi[1], amc->spi2_model, 1, amc->num_cs2); } =20 @@ -219,7 +219,7 @@ static void aspeed_machine_init(MachineState *machine) } =20 for (i =3D 0; i < bmc->soc->sdhci.num_slots && defaults_enabled(); i++= ) { - sdhci_attach_drive(&bmc->soc->sdhci.slots[i], + sdhci_attach_drive(OBJECT(bmc), &bmc->soc->sdhci.slots[i], drive_get(IF_SD, 0, i), false, false); } =20 @@ -227,7 +227,8 @@ static void aspeed_machine_init(MachineState *machine) =20 if (bmc->soc->emmc.num_slots && defaults_enabled()) { emmc0 =3D drive_get(IF_SD, 0, bmc->soc->sdhci.num_slots); - sdhci_attach_drive(&bmc->soc->emmc.slots[0], emmc0, true, boot_emm= c); + sdhci_attach_drive(OBJECT(bmc), &bmc->soc->emmc.slots[0], emmc0, + true, boot_emmc); } =20 if (!bmc->mmio_exec) { @@ -251,16 +252,20 @@ static void aspeed_machine_init(MachineState *machine) arm_load_kernel(ARM_CPU(first_cpu), machine, &aspeed_board_binfo); } =20 -void aspeed_create_pca9552(AspeedSoCState *soc, int bus_id, int addr) +void aspeed_create_pca9552(Object *parent, AspeedSoCState *soc, int bus_id, + int addr) { - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, bus_id), + i2c_slave_create_simple(parent, "pca9552[*]", + aspeed_i2c_get_bus(&soc->i2c, bus_id), TYPE_PCA9552, addr); } =20 -I2CSlave *aspeed_create_pca9554(AspeedSoCState *soc, int bus_id, int addr) +I2CSlave *aspeed_create_pca9554(Object *parent, AspeedSoCState *soc, + int bus_id, int addr) { - return i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, bu= s_id), - TYPE_PCA9554, addr); + return i2c_slave_create_simple(parent, "pca9554[*]", + aspeed_i2c_get_bus(&soc->i2c, bus_id), + TYPE_PCA9554, addr); } =20 static bool aspeed_get_mmio_exec(Object *obj, Error **errp) diff --git a/hw/arm/aspeed_ast1040_evb.c b/hw/arm/aspeed_ast1040_evb.c index fb83087b13..bbb1ebb104 100644 --- a/hw/arm/aspeed_ast1040_evb.c +++ b/hw/arm/aspeed_ast1040_evb.c @@ -56,7 +56,8 @@ static void ast1040_evb_i2c_init(AspeedMachineState *bmc) =20 smbus_eeprom_init_one(OBJECT(bmc), aspeed_i2c_get_bus(&soc->i2c, 0), 0= x50, eeprom_buf); - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 1), "tmp1= 05", 0x4d); + i2c_slave_create_simple(OBJECT(bmc), "tmp105", + aspeed_i2c_get_bus(&soc->i2c, 1), "tmp105", 0x= 4d); } =20 static void aspeed_machine_ast1040_evb_class_init(ObjectClass *oc, diff --git a/hw/arm/aspeed_ast10x0_evb.c b/hw/arm/aspeed_ast10x0_evb.c index dc134b555c..5153cf7c55 100644 --- a/hw/arm/aspeed_ast10x0_evb.c +++ b/hw/arm/aspeed_ast10x0_evb.c @@ -40,16 +40,16 @@ static void aspeed_minibmc_machine_init(MachineState *m= achine) qdev_realize(DEVICE(bmc->soc), NULL, &error_abort); =20 if (defaults_enabled()) { - aspeed_board_init_flashes(&bmc->soc->fmc, + aspeed_board_init_flashes(OBJECT(bmc), &bmc->soc->fmc, bmc->fmc_model ? bmc->fmc_model : amc->fmc_mod= el, amc->num_cs, 0); =20 - aspeed_board_init_flashes(&bmc->soc->spi[0], + aspeed_board_init_flashes(OBJECT(bmc), &bmc->soc->spi[0], bmc->spi_model ? bmc->spi_model : amc->spi_mod= el, amc->num_cs, amc->num_cs); =20 - aspeed_board_init_flashes(&bmc->soc->spi[1], + aspeed_board_init_flashes(OBJECT(bmc), &bmc->soc->spi[1], bmc->spi_model ? bmc->spi_model : amc->spi_mod= el, amc->num_cs, (amc->num_cs * 2)); } @@ -74,7 +74,8 @@ static void ast1030_evb_i2c_init(AspeedMachineState *bmc) eeprom_buf); =20 /* U11 LM75 connects to SDA/SCL Group 2 by default */ - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 1), "tmp1= 05", 0x4d); + i2c_slave_create_simple(OBJECT(bmc), "tmp105", + aspeed_i2c_get_bus(&soc->i2c, 1), "tmp105", 0x= 4d); } =20 static void aspeed_minibmc_machine_ast1030_evb_class_init(ObjectClass *oc, diff --git a/hw/arm/aspeed_ast2400_palmetto.c b/hw/arm/aspeed_ast2400_palme= tto.c index 80f9c911b8..3ca52cc7a5 100644 --- a/hw/arm/aspeed_ast2400_palmetto.c +++ b/hw/arm/aspeed_ast2400_palmetto.c @@ -37,13 +37,15 @@ static void palmetto_bmc_i2c_init(AspeedMachineState *b= mc) * The palmetto platform expects a ds3231 RTC but a ds1338 is * enough to provide basic RTC features. Alarms will be missing */ - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 0), "ds13= 38", 0x68); + i2c_slave_create_simple(OBJECT(bmc), "rtc", + aspeed_i2c_get_bus(&soc->i2c, 0), "ds1338", 0x= 68); =20 smbus_eeprom_init_one(OBJECT(bmc), aspeed_i2c_get_bus(&soc->i2c, 0), 0= x50, eeprom_buf); =20 /* add a TMP423 temperature sensor */ - dev =3D DEVICE(i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc-= >i2c, 2), + dev =3D DEVICE(i2c_slave_create_simple(OBJECT(bmc), "tmp423", + aspeed_i2c_get_bus(&soc->i2c, 2), "tmp423", 0x4c)); object_property_set_int(OBJECT(dev), "temperature0", 31000, &error_abo= rt); object_property_set_int(OBJECT(dev), "temperature1", 28000, &error_abo= rt); diff --git a/hw/arm/aspeed_ast2400_quanta-q71l.c b/hw/arm/aspeed_ast2400_qu= anta-q71l.c index 802ae49604..cc358b9ecf 100644 --- a/hw/arm/aspeed_ast2400_quanta-q71l.c +++ b/hw/arm/aspeed_ast2400_quanta-q71l.c @@ -33,21 +33,27 @@ static void quanta_q71l_bmc_i2c_init(AspeedMachineState= *bmc) * The quanta-q71l platform expects tmp75s which are compatible with * tmp105s. */ - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 1), "tmp1= 05", 0x4c); - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 1), "tmp1= 05", 0x4e); - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 1), "tmp1= 05", 0x4f); + i2c_slave_create_simple(OBJECT(bmc), "tmp105[*]", + aspeed_i2c_get_bus(&soc->i2c, 1), "tmp105", 0x= 4c); + i2c_slave_create_simple(OBJECT(bmc), "tmp105[*]", + aspeed_i2c_get_bus(&soc->i2c, 1), "tmp105", 0x= 4e); + i2c_slave_create_simple(OBJECT(bmc), "tmp105[*]", + aspeed_i2c_get_bus(&soc->i2c, 1), "tmp105", 0x= 4f); =20 /* TODO: i2c-1: Add baseboard FRU eeprom@54 24c64 */ /* TODO: i2c-1: Add Frontpanel FRU eeprom@57 24c64 */ /* TODO: Add Memory Riser i2c mux and eeproms. */ =20 - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 2), "pca9= 546", 0x74); - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 2), "pca9= 548", 0x77); + i2c_slave_create_simple(OBJECT(bmc), "i2c-mux[*]", + aspeed_i2c_get_bus(&soc->i2c, 2), "pca9546", 0= x74); + i2c_slave_create_simple(OBJECT(bmc), "i2c-mux[*]", + aspeed_i2c_get_bus(&soc->i2c, 2), "pca9548", 0= x77); =20 /* TODO: i2c-3: Add BIOS FRU eeprom@56 24c64 */ =20 /* i2c-7 */ - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 7), "pca9= 546", 0x70); + i2c_slave_create_simple(OBJECT(bmc), "i2c-mux[*]", + aspeed_i2c_get_bus(&soc->i2c, 7), "pca9546", 0= x70); /* - i2c@0: pmbus@59 */ /* - i2c@1: pmbus@58 */ /* - i2c@2: pmbus@58 */ diff --git a/hw/arm/aspeed_ast2400_supermicrox11.c b/hw/arm/aspeed_ast2400_= supermicrox11.c index b18adf3981..cabeb951f9 100644 --- a/hw/arm/aspeed_ast2400_supermicrox11.c +++ b/hw/arm/aspeed_ast2400_supermicrox11.c @@ -37,13 +37,15 @@ static void supermicrox11_bmc_i2c_init(AspeedMachineSta= te *bmc) * The palmetto platform expects a ds3231 RTC but a ds1338 is * enough to provide basic RTC features. Alarms will be missing */ - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 0), "ds13= 38", 0x68); + i2c_slave_create_simple(OBJECT(bmc), "rtc", + aspeed_i2c_get_bus(&soc->i2c, 0), "ds1338", 0x= 68); =20 smbus_eeprom_init_one(OBJECT(bmc), aspeed_i2c_get_bus(&soc->i2c, 0), 0= x50, eeprom_buf); =20 /* add a TMP423 temperature sensor */ - dev =3D DEVICE(i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc-= >i2c, 2), + dev =3D DEVICE(i2c_slave_create_simple(OBJECT(bmc), "tmp423", + aspeed_i2c_get_bus(&soc->i2c, 2), "tmp423", 0x4c)); object_property_set_int(OBJECT(dev), "temperature0", 31000, &error_abo= rt); object_property_set_int(OBJECT(dev), "temperature1", 28000, &error_abo= rt); diff --git a/hw/arm/aspeed_ast2500_evb.c b/hw/arm/aspeed_ast2500_evb.c index ba8a56bafd..933ffa087a 100644 --- a/hw/arm/aspeed_ast2500_evb.c +++ b/hw/arm/aspeed_ast2500_evb.c @@ -34,8 +34,9 @@ static void ast2500_evb_i2c_init(AspeedMachineState *bmc) eeprom_buf); =20 /* The AST2500 EVB expects a LM75 but a TMP105 is compatible */ - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 7), - TYPE_TMP105, 0x4d); + i2c_slave_create_simple(OBJECT(bmc), "tmp105", + aspeed_i2c_get_bus(&soc->i2c, 7), + TYPE_TMP105, 0x4d); } =20 static void aspeed_machine_ast2500_evb_class_init(ObjectClass *oc, diff --git a/hw/arm/aspeed_ast2500_g220a.c b/hw/arm/aspeed_ast2500_g220a.c index 27c9dc436a..c7c3e3efd3 100644 --- a/hw/arm/aspeed_ast2500_g220a.c +++ b/hw/arm/aspeed_ast2500_g220a.c @@ -32,19 +32,22 @@ static void g220a_bmc_i2c_init(AspeedMachineState *bmc) AspeedSoCState *soc =3D bmc->soc; DeviceState *dev; =20 - dev =3D DEVICE(i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc-= >i2c, 3), + dev =3D DEVICE(i2c_slave_create_simple(OBJECT(bmc), "emc1413[*]", + aspeed_i2c_get_bus(&soc->i2c, 3), "emc1413", 0x4c)); object_property_set_int(OBJECT(dev), "temperature0", 31000, &error_abo= rt); object_property_set_int(OBJECT(dev), "temperature1", 28000, &error_abo= rt); object_property_set_int(OBJECT(dev), "temperature2", 20000, &error_abo= rt); =20 - dev =3D DEVICE(i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc-= >i2c, 12), + dev =3D DEVICE(i2c_slave_create_simple(OBJECT(bmc), "emc1413[*]", + aspeed_i2c_get_bus(&soc->i2c, 12), "emc1413", 0x4c)); object_property_set_int(OBJECT(dev), "temperature0", 31000, &error_abo= rt); object_property_set_int(OBJECT(dev), "temperature1", 28000, &error_abo= rt); object_property_set_int(OBJECT(dev), "temperature2", 20000, &error_abo= rt); =20 - dev =3D DEVICE(i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc-= >i2c, 13), + dev =3D DEVICE(i2c_slave_create_simple(OBJECT(bmc), "emc1413[*]", + aspeed_i2c_get_bus(&soc->i2c, 13), "emc1413", 0x4c)); object_property_set_int(OBJECT(dev), "temperature0", 31000, &error_abo= rt); object_property_set_int(OBJECT(dev), "temperature1", 28000, &error_abo= rt); diff --git a/hw/arm/aspeed_ast2500_romulus.c b/hw/arm/aspeed_ast2500_romulu= s.c index 1bbd2802f1..9abb69d6a1 100644 --- a/hw/arm/aspeed_ast2500_romulus.c +++ b/hw/arm/aspeed_ast2500_romulus.c @@ -30,7 +30,8 @@ static void romulus_bmc_i2c_init(AspeedMachineState *bmc) * The romulus board expects Epson RX8900 I2C RTC but a ds1338 is * good enough */ - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 11), "ds1= 338", 0x32); + i2c_slave_create_simple(OBJECT(bmc), "rtc", + aspeed_i2c_get_bus(&soc->i2c, 11), "ds1338", 0= x32); } =20 static void aspeed_machine_romulus_class_init(ObjectClass *oc, diff --git a/hw/arm/aspeed_ast2500_supermicro-x11spi.c b/hw/arm/aspeed_ast2= 500_supermicro-x11spi.c index bea459eeaa..f20b2d5efb 100644 --- a/hw/arm/aspeed_ast2500_supermicro-x11spi.c +++ b/hw/arm/aspeed_ast2500_supermicro-x11spi.c @@ -33,13 +33,15 @@ static void supermicro_x11spi_bmc_i2c_init(AspeedMachin= eState *bmc) * The palmetto platform expects a ds3231 RTC but a ds1338 is * enough to provide basic RTC features. Alarms will be missing */ - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 0), "ds13= 38", 0x68); + i2c_slave_create_simple(OBJECT(bmc), "rtc", + aspeed_i2c_get_bus(&soc->i2c, 0), "ds1338", 0x= 68); =20 smbus_eeprom_init_one(OBJECT(bmc), aspeed_i2c_get_bus(&soc->i2c, 0), 0= x50, eeprom_buf); =20 /* add a TMP423 temperature sensor */ - dev =3D DEVICE(i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc-= >i2c, 2), + dev =3D DEVICE(i2c_slave_create_simple(OBJECT(bmc), "tmp423", + aspeed_i2c_get_bus(&soc->i2c, 2), "tmp423", 0x4c)); object_property_set_int(OBJECT(dev), "temperature0", 31000, &error_abo= rt); object_property_set_int(OBJECT(dev), "temperature1", 28000, &error_abo= rt); diff --git a/hw/arm/aspeed_ast2500_tiogapass.c b/hw/arm/aspeed_ast2500_tiog= apass.c index a6b3c0d051..13d1db9cfa 100644 --- a/hw/arm/aspeed_ast2500_tiogapass.c +++ b/hw/arm/aspeed_ast2500_tiogapass.c @@ -55,9 +55,12 @@ static void tiogapass_bmc_i2c_init(AspeedMachineState *b= mc) at24c_eeprom_init_rom(aspeed_i2c_get_bus(&soc->i2c, 6), 0x54, 128 * Ki= B, tiogapass_bmc_fruid, tiogapass_bmc_fruid_len); /* TMP421 */ - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 8), "tmp4= 21", 0x1f); - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 6), "tmp4= 21", 0x4f); - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 6), "tmp4= 21", 0x4e); + i2c_slave_create_simple(OBJECT(bmc), "tmp421[*]", + aspeed_i2c_get_bus(&soc->i2c, 8), "tmp421", 0x= 1f); + i2c_slave_create_simple(OBJECT(bmc), "tmp421[*]", + aspeed_i2c_get_bus(&soc->i2c, 6), "tmp421", 0x= 4f); + i2c_slave_create_simple(OBJECT(bmc), "tmp421[*]", + aspeed_i2c_get_bus(&soc->i2c, 6), "tmp421", 0x= 4e); } =20 static void aspeed_machine_tiogapass_class_init(ObjectClass *oc, diff --git a/hw/arm/aspeed_ast2500_witherspoon.c b/hw/arm/aspeed_ast2500_wi= therspoon.c index dda090ab60..2ba7ebb461 100644 --- a/hw/arm/aspeed_ast2500_witherspoon.c +++ b/hw/arm/aspeed_ast2500_witherspoon.c @@ -44,11 +44,9 @@ static void witherspoon_bmc_i2c_init(AspeedMachineState = *bmc) LEDState *led; =20 /* Bus 3: TODO bmp280@77 */ - dev =3D DEVICE(i2c_slave_new_orphan(TYPE_PCA9552, 0x60)); + dev =3D DEVICE(i2c_slave_new(OBJECT(bmc), "pca9552[*]", TYPE_PCA9552, = 0x60)); qdev_prop_set_string(dev, "description", "pca1"); - i2c_slave_realize_and_unref(I2C_SLAVE(dev), - aspeed_i2c_get_bus(&soc->i2c, 3), - &error_fatal); + qdev_realize(dev, BUS(aspeed_i2c_get_bus(&soc->i2c, 3)), &error_fatal); =20 for (size_t i =3D 0; i < ARRAY_SIZE(pca1_leds); i++) { led =3D led_create_simple(OBJECT(bmc), @@ -58,28 +56,32 @@ static void witherspoon_bmc_i2c_init(AspeedMachineState= *bmc) qdev_connect_gpio_out(dev, pca1_leds[i].gpio_id, qdev_get_gpio_in(DEVICE(led), 0)); } - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 3), "dps3= 10", 0x76); - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 3), "max3= 1785", 0x52); - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 4), "tmp4= 23", 0x4c); - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 5), "tmp4= 23", 0x4c); + i2c_slave_create_simple(OBJECT(bmc), "dps310", + aspeed_i2c_get_bus(&soc->i2c, 3), "dps310", 0x= 76); + i2c_slave_create_simple(OBJECT(bmc), "max31785", + aspeed_i2c_get_bus(&soc->i2c, 3), "max31785", = 0x52); + i2c_slave_create_simple(OBJECT(bmc), "tmp423[*]", + aspeed_i2c_get_bus(&soc->i2c, 4), "tmp423", 0x= 4c); + i2c_slave_create_simple(OBJECT(bmc), "tmp423[*]", + aspeed_i2c_get_bus(&soc->i2c, 5), "tmp423", 0x= 4c); =20 /* The Witherspoon expects a TMP275 but a TMP105 is compatible */ - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 9), TYPE_= TMP105, - 0x4a); + i2c_slave_create_simple(OBJECT(bmc), "tmp105", + aspeed_i2c_get_bus(&soc->i2c, 9), TYPE_TMP105, + 0x4a); =20 /* * The witherspoon board expects Epson RX8900 I2C RTC but a ds1338 is * good enough */ - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 11), "ds1= 338", 0x32); + i2c_slave_create_simple(OBJECT(bmc), "rtc", + aspeed_i2c_get_bus(&soc->i2c, 11), "ds1338", 0= x32); =20 smbus_eeprom_init_one(OBJECT(bmc), aspeed_i2c_get_bus(&soc->i2c, 11), = 0x51, eeprom_buf); - dev =3D DEVICE(i2c_slave_new_orphan(TYPE_PCA9552, 0x60)); + dev =3D DEVICE(i2c_slave_new(OBJECT(bmc), "pca9552[*]", TYPE_PCA9552, = 0x60)); qdev_prop_set_string(dev, "description", "pca0"); - i2c_slave_realize_and_unref(I2C_SLAVE(dev), - aspeed_i2c_get_bus(&soc->i2c, 11), - &error_fatal); + qdev_realize(dev, BUS(aspeed_i2c_get_bus(&soc->i2c, 11)), &error_fatal= ); /* Bus 11: TODO ucd90160@64 */ } =20 diff --git a/hw/arm/aspeed_ast2500_yosemitev2.c b/hw/arm/aspeed_ast2500_yos= emitev2.c index 905758c345..4e3c19bc07 100644 --- a/hw/arm/aspeed_ast2500_yosemitev2.c +++ b/hw/arm/aspeed_ast2500_yosemitev2.c @@ -55,9 +55,12 @@ static void yosemitev2_bmc_i2c_init(AspeedMachineState *= bmc) at24c_eeprom_init_rom(aspeed_i2c_get_bus(&soc->i2c, 8), 0x51, 128 * Ki= B, yosemitev2_bmc_fruid, yosemitev2_bmc_fruid_len); /* TMP421 */ - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 11), "tmp= 421", 0x1f); - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 9), "tmp4= 21", 0x4e); - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 9), "tmp4= 21", 0x4f); + i2c_slave_create_simple(OBJECT(bmc), "tmp421[*]", + aspeed_i2c_get_bus(&soc->i2c, 11), "tmp421", 0= x1f); + i2c_slave_create_simple(OBJECT(bmc), "tmp421[*]", + aspeed_i2c_get_bus(&soc->i2c, 9), "tmp421", 0x= 4e); + i2c_slave_create_simple(OBJECT(bmc), "tmp421[*]", + aspeed_i2c_get_bus(&soc->i2c, 9), "tmp421", 0x= 4f); =20 } =20 diff --git a/hw/arm/aspeed_ast2600_bletchley.c b/hw/arm/aspeed_ast2600_blet= chley.c index 4930bddb39..58f0bc89bd 100644 --- a/hw/arm/aspeed_ast2600_bletchley.c +++ b/hw/arm/aspeed_ast2600_bletchley.c @@ -35,35 +35,44 @@ static void bletchley_bmc_i2c_init(AspeedMachineState *= bmc) for (int i =3D 0; i < 6; i++) { /* Missing model: ti,ina230 @ 0x45 */ /* Missing model: mps,mp5023 @ 0x40 */ - i2c_slave_create_simple_orphan(i2c[i], TYPE_TMP421, 0x4f); + i2c_slave_create_simple(OBJECT(bmc), "tmp421[*]", + i2c[i], TYPE_TMP421, 0x4f); /* Missing model: nxp,pca9539 @ 0x76, but PCA9552 works enough */ - i2c_slave_create_simple_orphan(i2c[i], TYPE_PCA9552, 0x76); - i2c_slave_create_simple_orphan(i2c[i], TYPE_PCA9552, 0x67); + i2c_slave_create_simple(OBJECT(bmc), "pca9552[*]", + i2c[i], TYPE_PCA9552, 0x76); + i2c_slave_create_simple(OBJECT(bmc), "pca9552[*]", + i2c[i], TYPE_PCA9552, 0x67); /* Missing model: fsc,fusb302 @ 0x22 */ } =20 /* Bus 6 */ at24c_eeprom_init(i2c[6], 0x56, 65536); /* Missing model: nxp,pcf85263 @ 0x51 , but ds1338 works enough */ - i2c_slave_create_simple_orphan(i2c[6], "ds1338", 0x51); + i2c_slave_create_simple(OBJECT(bmc), "rtc", i2c[6], "ds1338", 0x51); =20 =20 /* Bus 7 */ at24c_eeprom_init(i2c[7], 0x54, 65536); =20 /* Bus 9 */ - i2c_slave_create_simple_orphan(i2c[9], TYPE_TMP421, 0x4f); + i2c_slave_create_simple(OBJECT(bmc), "tmp421[*]", + i2c[9], TYPE_TMP421, 0x4f); =20 /* Bus 10 */ - i2c_slave_create_simple_orphan(i2c[10], TYPE_TMP421, 0x4f); + i2c_slave_create_simple(OBJECT(bmc), "tmp421[*]", + i2c[10], TYPE_TMP421, 0x4f); /* Missing model: ti,hdc1080 @ 0x40 */ - i2c_slave_create_simple_orphan(i2c[10], TYPE_PCA9552, 0x67); + i2c_slave_create_simple(OBJECT(bmc), "pca9552[*]", + i2c[10], TYPE_PCA9552, 0x67); =20 /* Bus 12 */ /* Missing model: adi,adm1278 @ 0x11 */ - i2c_slave_create_simple_orphan(i2c[12], TYPE_TMP421, 0x4c); - i2c_slave_create_simple_orphan(i2c[12], TYPE_TMP421, 0x4d); - i2c_slave_create_simple_orphan(i2c[12], TYPE_PCA9552, 0x67); + i2c_slave_create_simple(OBJECT(bmc), "tmp421[*]", + i2c[12], TYPE_TMP421, 0x4c); + i2c_slave_create_simple(OBJECT(bmc), "tmp421[*]", + i2c[12], TYPE_TMP421, 0x4d); + i2c_slave_create_simple(OBJECT(bmc), "pca9552[*]", + i2c[12], TYPE_PCA9552, 0x67); } =20 static void aspeed_machine_bletchley_class_init(ObjectClass *oc, diff --git a/hw/arm/aspeed_ast2600_evb.c b/hw/arm/aspeed_ast2600_evb.c index ab7667da75..8e389dbe80 100644 --- a/hw/arm/aspeed_ast2600_evb.c +++ b/hw/arm/aspeed_ast2600_evb.c @@ -27,8 +27,9 @@ static void ast2600_evb_i2c_init(AspeedMachineState *bmc) eeprom_buf); =20 /* LM75 is compatible with TMP105 driver */ - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 8), - TYPE_TMP105, 0x4d); + i2c_slave_create_simple(OBJECT(bmc), "tmp105", + aspeed_i2c_get_bus(&soc->i2c, 8), + TYPE_TMP105, 0x4d); } =20 static void aspeed_machine_ast2600_evb_class_init(ObjectClass *oc, diff --git a/hw/arm/aspeed_ast2600_fby35.c b/hw/arm/aspeed_ast2600_fby35.c index fcd1acdc17..dedc273ee3 100644 --- a/hw/arm/aspeed_ast2600_fby35.c +++ b/hw/arm/aspeed_ast2600_fby35.c @@ -102,12 +102,12 @@ static void fby35_i2c_init(AspeedMachineState *bmc) i2c[i] =3D aspeed_i2c_get_bus(&soc->i2c, i); } =20 - i2c_slave_create_simple_orphan(i2c[2], TYPE_LM75, 0x4f); - i2c_slave_create_simple_orphan(i2c[8], TYPE_TMP421, 0x1f); + i2c_slave_create_simple(OBJECT(bmc), "lm75[*]", i2c[2], TYPE_LM75, 0x4= f); + i2c_slave_create_simple(OBJECT(bmc), "tmp421", i2c[8], TYPE_TMP421, 0x= 1f); /* Hotswap controller is actually supposed to be mp5920 or ltc4282. */ - i2c_slave_create_simple_orphan(i2c[11], "adm1272", 0x44); - i2c_slave_create_simple_orphan(i2c[12], TYPE_LM75, 0x4e); - i2c_slave_create_simple_orphan(i2c[12], TYPE_LM75, 0x4f); + i2c_slave_create_simple(OBJECT(bmc), "adm1272", i2c[11], "adm1272", 0x= 44); + i2c_slave_create_simple(OBJECT(bmc), "lm75[*]", i2c[12], TYPE_LM75, 0x= 4e); + i2c_slave_create_simple(OBJECT(bmc), "lm75[*]", i2c[12], TYPE_LM75, 0x= 4f); =20 at24c_eeprom_init(i2c[4], 0x51, 128 * KiB); at24c_eeprom_init(i2c[6], 0x51, 128 * KiB); diff --git a/hw/arm/aspeed_ast2600_gb200nvl.c b/hw/arm/aspeed_ast2600_gb200= nvl.c index 2c1c513674..1cf35f96bd 100644 --- a/hw/arm/aspeed_ast2600_gb200nvl.c +++ b/hw/arm/aspeed_ast2600_gb200nvl.c @@ -51,23 +51,23 @@ static void gb200nvl_bmc_i2c_init(AspeedMachineState *b= mc) } =20 /* Bus 5 Expander */ - aspeed_create_pca9554(soc, 4, 0x21); + aspeed_create_pca9554(OBJECT(bmc), soc, 4, 0x21); =20 /* Mux I2c Expanders */ - i2c_slave_create_simple_orphan(i2c[5], "pca9546", 0x71); - i2c_slave_create_simple_orphan(i2c[5], "pca9546", 0x72); - i2c_slave_create_simple_orphan(i2c[5], "pca9546", 0x73); - i2c_slave_create_simple_orphan(i2c[5], "pca9546", 0x75); - i2c_slave_create_simple_orphan(i2c[5], "pca9546", 0x76); - i2c_slave_create_simple_orphan(i2c[5], "pca9546", 0x77); + i2c_slave_create_simple(OBJECT(bmc), "i2c-mux[*]", i2c[5], "pca9546", = 0x71); + i2c_slave_create_simple(OBJECT(bmc), "i2c-mux[*]", i2c[5], "pca9546", = 0x72); + i2c_slave_create_simple(OBJECT(bmc), "i2c-mux[*]", i2c[5], "pca9546", = 0x73); + i2c_slave_create_simple(OBJECT(bmc), "i2c-mux[*]", i2c[5], "pca9546", = 0x75); + i2c_slave_create_simple(OBJECT(bmc), "i2c-mux[*]", i2c[5], "pca9546", = 0x76); + i2c_slave_create_simple(OBJECT(bmc), "i2c-mux[*]", i2c[5], "pca9546", = 0x77); =20 /* Bus 10 */ - dev =3D DEVICE(aspeed_create_pca9554(soc, 9, 0x20)); + dev =3D DEVICE(aspeed_create_pca9554(OBJECT(bmc), soc, 9, 0x20)); =20 /* Set FPGA_READY */ object_property_set_str(OBJECT(dev), "pin1", "high", &error_fatal); =20 - aspeed_create_pca9554(soc, 9, 0x21); + aspeed_create_pca9554(OBJECT(bmc), soc, 9, 0x21); at24c_eeprom_init(i2c[9], 0x50, 64 * KiB); at24c_eeprom_init(i2c[9], 0x51, 64 * KiB); =20 diff --git a/hw/arm/aspeed_ast2600_rainier.c b/hw/arm/aspeed_ast2600_rainie= r.c index 0495c2880c..8ba15aceca 100644 --- a/hw/arm/aspeed_ast2600_rainier.c +++ b/hw/arm/aspeed_ast2600_rainier.c @@ -70,7 +70,7 @@ static void rainier_bmc_i2c_init(AspeedMachineState *bmc) =20 at24c_eeprom_init(aspeed_i2c_get_bus(&soc->i2c, 0), 0x51, 32 * KiB); =20 - aspeed_create_pca9552(soc, 3, 0x61); + aspeed_create_pca9552(OBJECT(bmc), soc, 3, 0x61); =20 /* The rainier expects a TMP275 but a TMP105 is compatible */ i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 4), TYPE_= TMP105, @@ -84,14 +84,14 @@ static void rainier_bmc_i2c_init(AspeedMachineState *bm= c) at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 0), 0x50, 64 * KiB); at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 1), 0x51, 64 * KiB); at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 2), 0x52, 64 * KiB); - aspeed_create_pca9552(soc, 4, 0x60); + aspeed_create_pca9552(OBJECT(bmc), soc, 4, 0x60); =20 i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 5), TYPE_= TMP105, 0x48); i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 5), TYPE_= TMP105, 0x49); - aspeed_create_pca9552(soc, 5, 0x60); - aspeed_create_pca9552(soc, 5, 0x61); + aspeed_create_pca9552(OBJECT(bmc), soc, 5, 0x60); + aspeed_create_pca9552(OBJECT(bmc), soc, 5, 0x61); i2c_mux =3D i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2= c, 5), "pca9546", 0x70); at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 0), 0x50, 64 * KiB); @@ -110,12 +110,12 @@ static void rainier_bmc_i2c_init(AspeedMachineState *= bmc) at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 2), 0x50, 64 * KiB); at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 3), 0x51, 64 * KiB); =20 - aspeed_create_pca9552(soc, 7, 0x30); - aspeed_create_pca9552(soc, 7, 0x31); - aspeed_create_pca9552(soc, 7, 0x32); - aspeed_create_pca9552(soc, 7, 0x33); - aspeed_create_pca9552(soc, 7, 0x60); - aspeed_create_pca9552(soc, 7, 0x61); + aspeed_create_pca9552(OBJECT(bmc), soc, 7, 0x30); + aspeed_create_pca9552(OBJECT(bmc), soc, 7, 0x31); + aspeed_create_pca9552(OBJECT(bmc), soc, 7, 0x32); + aspeed_create_pca9552(OBJECT(bmc), soc, 7, 0x33); + aspeed_create_pca9552(OBJECT(bmc), soc, 7, 0x60); + aspeed_create_pca9552(OBJECT(bmc), soc, 7, 0x61); i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 7), "dps3= 10", 0x76); /* Bus 7: TODO si7021-a20@20 */ i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 7), TYPE_= TMP105, @@ -132,8 +132,8 @@ static void rainier_bmc_i2c_init(AspeedMachineState *bm= c) 64 * KiB, rainier_bb_fruid, rainier_bb_fruid_len= ); at24c_eeprom_init_rom(aspeed_i2c_get_bus(&soc->i2c, 8), 0x51, 64 * KiB, rainier_bmc_fruid, rainier_bmc_fruid_l= en); - aspeed_create_pca9552(soc, 8, 0x60); - aspeed_create_pca9552(soc, 8, 0x61); + aspeed_create_pca9552(OBJECT(bmc), soc, 8, 0x60); + aspeed_create_pca9552(OBJECT(bmc), soc, 8, 0x61); /* Bus 8: ucd90320@11 */ /* Bus 8: ucd90320@b */ /* Bus 8: ucd90320@c */ @@ -154,17 +154,17 @@ static void rainier_bmc_i2c_init(AspeedMachineState *= bmc) "pca9546", 0x70); at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 0), 0x50, 64 * KiB); at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 1), 0x51, 64 * KiB); - aspeed_create_pca9552(soc, 11, 0x60); + aspeed_create_pca9552(OBJECT(bmc), soc, 11, 0x60); =20 =20 at24c_eeprom_init(aspeed_i2c_get_bus(&soc->i2c, 13), 0x50, 64 * KiB); - aspeed_create_pca9552(soc, 13, 0x60); + aspeed_create_pca9552(OBJECT(bmc), soc, 13, 0x60); =20 at24c_eeprom_init(aspeed_i2c_get_bus(&soc->i2c, 14), 0x50, 64 * KiB); - aspeed_create_pca9552(soc, 14, 0x60); + aspeed_create_pca9552(OBJECT(bmc), soc, 14, 0x60); =20 at24c_eeprom_init(aspeed_i2c_get_bus(&soc->i2c, 15), 0x50, 64 * KiB); - aspeed_create_pca9552(soc, 15, 0x60); + aspeed_create_pca9552(OBJECT(bmc), soc, 15, 0x60); } =20 static void aspeed_machine_rainier_class_init(ObjectClass *oc, const void = *data) diff --git a/hw/arm/aspeed_ast27x0-fc.c b/hw/arm/aspeed_ast27x0-fc.c index f21c842315..74626973bc 100644 --- a/hw/arm/aspeed_ast27x0-fc.c +++ b/hw/arm/aspeed_ast27x0-fc.c @@ -109,10 +109,13 @@ static bool ast2700fc_ca35_init(MachineState *machine= , Error **errp) /* * AST2700 EVB has a LM75 temperature sensor on I2C bus 0 at address 0= x4d. */ - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 0), "tmp1= 05", 0x4d); + i2c_slave_create_simple(OBJECT(machine), "tmp105", + aspeed_i2c_get_bus(&soc->i2c, 0), "tmp105", 0x= 4d); =20 - aspeed_board_init_flashes(&soc->fmc, AST2700FC_FMC_MODEL, 2, 0); - aspeed_board_init_flashes(&soc->spi[0], AST2700FC_SPI_MODEL, 1, 2); + aspeed_board_init_flashes(OBJECT(machine), &soc->fmc, + AST2700FC_FMC_MODEL, 2, 0); + aspeed_board_init_flashes(OBJECT(machine), &soc->spi[0], + AST2700FC_SPI_MODEL, 1, 2); =20 ast2700fc_board_info.ram_size =3D machine->ram_size; ast2700fc_board_info.loader_start =3D sc->memmap[ASPEED_DEV_SDRAM]; diff --git a/hw/arm/aspeed_ast27x0_evb.c b/hw/arm/aspeed_ast27x0_evb.c index a59714372d..1892a59cce 100644 --- a/hw/arm/aspeed_ast27x0_evb.c +++ b/hw/arm/aspeed_ast27x0_evb.c @@ -24,7 +24,8 @@ static void ast2700_evb_i2c_init(AspeedMachineState *bmc) AspeedSoCState *soc =3D bmc->soc; =20 /* LM75 is compatible with TMP105 driver */ - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 0), + i2c_slave_create_simple(OBJECT(bmc), "tmp105", + aspeed_i2c_get_bus(&soc->i2c, 0), TYPE_TMP105, 0x4d); } =20 diff --git a/hw/arm/aspeed_soc_common.c b/hw/arm/aspeed_soc_common.c index 33f7f10531..780a9659cc 100644 --- a/hw/arm/aspeed_soc_common.c +++ b/hw/arm/aspeed_soc_common.c @@ -81,11 +81,12 @@ bool aspeed_soc_dram_init(AspeedSoCState *s, Error **er= rp) * SoC has. */ if (ram_size < max_ram_size) { - DeviceState *dev =3D qdev_new_orphan(TYPE_UNIMPLEMENTED_DEVICE); + DeviceState *dev =3D qdev_new(OBJECT(s), "ram-empty", + TYPE_UNIMPLEMENTED_DEVICE); =20 qdev_prop_set_string(dev, "name", "ram-empty"); qdev_prop_set_uint64(dev, "size", max_ram_size - ram_size); - if (!sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), errp)) { + if (!sysbus_realize(SYS_BUS_DEVICE(dev), errp)) { return false; } =20 @@ -115,7 +116,8 @@ void aspeed_mmio_map_unimplemented(MemoryRegion *memory= , SysBusDevice *dev, sysbus_mmio_get_region(dev, 0), -1= 000); } =20 -void aspeed_board_init_flashes(AspeedSMCState *s, const char *flashtype, +void aspeed_board_init_flashes(Object *parent, AspeedSMCState *s, + const char *flashtype, unsigned int count, int unit0) { int i; @@ -128,12 +130,12 @@ void aspeed_board_init_flashes(AspeedSMCState *s, con= st char *flashtype, DriveInfo *dinfo =3D drive_get(IF_MTD, 0, unit0 + i); DeviceState *dev; =20 - dev =3D qdev_new_orphan(flashtype); + dev =3D qdev_new(parent, "flash[*]", flashtype); if (dinfo) { qdev_prop_set_drive(dev, "drive", blk_by_legacy_dinfo(dinfo)); } qdev_prop_set_uint8(dev, "cs", i); - qdev_realize_and_unref(dev, BUS(s->spi), &error_fatal); + qdev_realize(dev, BUS(s->spi), &error_fatal); } } =20 diff --git a/include/hw/arm/aspeed.h b/include/hw/arm/aspeed.h index e1c0323cb6..743f7282ae 100644 --- a/include/hw/arm/aspeed.h +++ b/include/hw/arm/aspeed.h @@ -83,9 +83,10 @@ void aspeed_machine_class_init_cpus_defaults(MachineClas= s *mc); * * Create and attach a PCA9552 LED controller device to the specified I2C = bus * of the given Aspeed SoC. The device is instantiated using - * i2c_slave_create_simple_orphan() with the PCA9552 device type. + * i2c_slave_create_simple() with the PCA9552 device type. */ -void aspeed_create_pca9552(AspeedSoCState *soc, int bus_id, int addr); +void aspeed_create_pca9552(Object *parent, AspeedSoCState *soc, int bus_id, + int addr); =20 /* * aspeed_create_pca9554: @@ -95,11 +96,12 @@ void aspeed_create_pca9552(AspeedSoCState *soc, int bus= _id, int addr); * * Create and attach a PCA9554 I/O expander to the specified I2C bus * of the given Aspeed SoC. The device is created via - * i2c_slave_create_simple_orphan() and returned as an #I2CSlave pointer. + * i2c_slave_create_simple() and returned as an #I2CSlave pointer. * * Returns: a pointer to the newly created #I2CSlave instance. */ -I2CSlave *aspeed_create_pca9554(AspeedSoCState *soc, int bus_id, int addr); +I2CSlave *aspeed_create_pca9554(Object *parent, AspeedSoCState *soc, + int bus_id, int addr); =20 /* * aspeed_machine_ast2600_class_emmc_init: diff --git a/include/hw/arm/aspeed_soc.h b/include/hw/arm/aspeed_soc.h index 41dc04e293..d1ad82e00a 100644 --- a/include/hw/arm/aspeed_soc.h +++ b/include/hw/arm/aspeed_soc.h @@ -311,7 +311,8 @@ void aspeed_mmio_map(MemoryRegion *memory, SysBusDevice= *dev, int n, void aspeed_mmio_map_unimplemented(MemoryRegion *memory, SysBusDevice *dev, const char *name, hwaddr addr, uint64_t size); -void aspeed_board_init_flashes(AspeedSMCState *s, const char *flashtype, +void aspeed_board_init_flashes(Object *parent, AspeedSMCState *s, + const char *flashtype, unsigned int count, int unit0); void aspeed_write_boot_rom(BlockBackend *blk, hwaddr addr, size_t rom_size, Error **errp); --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411865; cv=none; d=zohomail.com; s=zohoarc; b=LhbVnaFQV9wyTutouSLalCPHgBq3UtBnUR7TSorpRuAxFweF41o3fwDUzthXZSmpN/MshFNtVwVTqyibhHfpgNI0tvq2XHDEKPw+stZvHE5VrpM4myXHoln+P8DlCE/5E0mmFDdilkJ/g7ZtjUzQjoX6VLL7eFYsH/O7dkOklJ0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411865; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Le9vjnawM0Pqb4yas2OCqQLMlV1EK1sxm3PrVUfZs4A=; b=UGTKilGVVlmDOo0z5p1MOGwzhnYRYCu01iVCBTeBt1ltKCUY8NHm6uAe+JVqv89Ib2e/Yqm3USfG+YOiXnStFJt9HxpyRf7LduLZ9XFVRpJIBy4I2EFlaKPqjdbvGz7kJjUx5nd6PwxLySmgLNbIywt3Z2AdNvFKoq3mSqCFUMc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411865007265.8672253595256; Sat, 18 Jul 2026 14:57:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlD2N-0000YM-3K; Sat, 18 Jul 2026 17:57:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD2K-0000UU-VO; Sat, 18 Jul 2026 17:57:32 -0400 Received: from pdx-out-015.esa.us-west-2.outbound.mail-perimeter.amazon.com ([50.112.246.219]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD2G-0004iO-D8; Sat, 18 Jul 2026 17:57:32 -0400 Received: from ip-10-5-0-115.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.0.115]) by internal-pdx-out-015.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:57:24 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.51:10181] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.41.246:2525] with esmtp (Farcaster) id 26fa4542-6096-4599-a9be-d99b92839ea1; Sat, 18 Jul 2026 21:57:24 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC002.ant.amazon.com (10.250.64.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:57:23 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:57:13 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411848; x=1815947848; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Le9vjnawM0Pqb4yas2OCqQLMlV1EK1sxm3PrVUfZs4A=; b=qmRa3gyQl5Ef5SWpjaMuJBauBlsSXok/tSznUv3tGLmy9pRfq5oAm3Bt j6LoPjeLg5dB6I/w2ArjQHZGlOtEThw+SeEATKG8uWzHPfHxMj6NnbUT7 eKOuXvUWyLvjyA5AzmKQt7dCFWAsZJP0n4pENSs2vrfG885vYTczLiUl+ YAXJJWv4YFQfwjuwq7MX9MVagup1VcT2Z83GavjRjn1CNVl4BWifrNsTj 2XBqvbYvfwreNcBokqCp9+ehstNgb6DgOLMvlVZM+ZJFM15h2T9rY8AnM HZpgddCRQu/CCI10LZCStTFSxdHrSUDAlq/ci1zgJVIGvuP6K6ann+66U Q==; X-CSE-ConnectionGUID: deCcAM5TTlKaMutLQx33NA== X-CSE-MsgGUID: uC6MkdSdRButL4zlN97B+A== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23725138" X-Farcaster-Flow-ID: 26fa4542-6096-4599-a9be-d99b92839ea1 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 073/137] hw/arm/aspeed: Give onboard devices a QOM parent (part 2) Date: Sat, 18 Jul 2026 21:35:48 +0000 Message-ID: <20260718213652.37673-74-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D031UWC003.ant.amazon.com (10.13.139.252) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=50.112.246.219; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-015.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411866960158500 Convert the *_orphan() device-creation calls in the four large hw/arm/aspeed_ast2600_{anacapa,catalina,fuji,rainier}.c board files to the new parented API introduced earlier in this series, so every onboard I2C peripheral gets a stable path in the composition tree instead of landing in /machine/unattached with an unstable device[N] name. The parent for each device is the machine (AspeedMachineState); the board's .i2c_init() callback receives it directly. Names are derived from the device type and auto-indexed. Per-site rationale (reviewers: dispute the modeling here): hw/arm/aspeed_ast2600_anacapa.c:240 | i2c_slave_create_simple | OBJECT(bmc)= | "i2c-mux[*]" | anacapa_bmc_i2c_init(AspeedMachineState *bmc) is amc->i2c= _init callback invoked from board init; bmc IS the MachineState. Multiple P= CA954x muxes -> auto-index. Local Object *o =3D OBJECT(bmc) added. hw/arm/aspeed_ast2600_anacapa.c:246 | i2c_slave_create_simple | OBJECT(bmc)= | "i2c-mux[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_anacapa.c:250 | i2c_slave_create_simple | OBJECT(bmc)= | "i2c-mux[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_anacapa.c:259 | i2c_slave_create_simple | OBJECT(bmc)= | "i2c-mux[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_anacapa.c:264 | i2c_slave_create_simple | OBJECT(bmc)= | "gpio[*]" | Board i2c_init; PCA9552 GPIO expander behind mux, many insta= nces -> auto-index. hw/arm/aspeed_ast2600_anacapa.c:267 | i2c_slave_create_simple | OBJECT(bmc)= | "gpio[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_anacapa.c:275 | i2c_slave_create_simple | OBJECT(bmc)= | "gpio[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_anacapa.c:278 | i2c_slave_create_simple | OBJECT(bmc)= | "gpio[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_anacapa.c:294 | i2c_slave_create_simple | OBJECT(bmc)= | "i2c-mux[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_anacapa.c:298 | i2c_slave_create_simple | OBJECT(bmc)= | "gpio[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_anacapa.c:306 | i2c_slave_create_simple | OBJECT(bmc)= | "i2c-mux[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_anacapa.c:312 | i2c_slave_create_simple | OBJECT(bmc)= | "gpio[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_anacapa.c:320 | i2c_slave_create_simple | OBJECT(bmc)= | "i2c-mux[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_catalina.c:475 | i2c_slave_create_simple | OBJECT(bmc= ) | "i2c-mux[*]" | catalina_bmc_i2c_init(AspeedMachineState *bmc) board i2c= _init callback. Local Object *o =3D OBJECT(bmc) added. Many PCA954x -> auto= -index. hw/arm/aspeed_ast2600_catalina.c:478 | i2c_slave_create_simple | OBJECT(bmc= ) | "i2c-mux[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_catalina.c:482 | i2c_slave_create_simple | OBJECT(bmc= ) | "gpio[*]" | Board i2c_init; PCA9535 GPIO expander -> auto-index. hw/arm/aspeed_ast2600_catalina.c:489 | i2c_slave_create_simple | OBJECT(bmc= ) | "i2c-mux[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_catalina.c:492 | i2c_slave_create_simple | OBJECT(bmc= ) | "i2c-mux[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_catalina.c:495 | i2c_slave_create_simple | OBJECT(bmc= ) | "i2c-mux[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_catalina.c:499 | i2c_slave_create_simple | OBJECT(bmc= ) | "gpio[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_catalina.c:506 | i2c_slave_create_simple | OBJECT(bmc= ) | "i2c-mux[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_catalina.c:511 | i2c_slave_create_simple | OBJECT(bmc= ) | "i2c-mux[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_catalina.c:528 | i2c_slave_create_simple | OBJECT(bmc= ) | "tmp75[*]" | Board i2c_init; multiple TMP75 -> auto-index. hw/arm/aspeed_ast2600_catalina.c:532 | i2c_slave_create_simple | OBJECT(bmc= ) | "gpio[*]" | Board i2c_init; PCA9554 GPIO expander -> auto-index with ot= her GPIO expanders. hw/arm/aspeed_ast2600_catalina.c:535 | i2c_slave_create_simple | OBJECT(bmc= ) | "gpio[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_catalina.c:546 | i2c_slave_create_simple | OBJECT(bmc= ) | "tmp75[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_catalina.c:550 | i2c_slave_create_simple | OBJECT(bmc= ) | "gpio[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_catalina.c:552 | i2c_slave_create_simple | OBJECT(bmc= ) | "gpio[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_catalina.c:554 | i2c_slave_create_simple | OBJECT(bmc= ) | "gpio[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_catalina.c:562 | i2c_slave_create_simple | OBJECT(bmc= ) | "i2c-mux[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_catalina.c:575 | i2c_slave_create_simple | OBJECT(bmc= ) | "gpio[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_catalina.c:577 | i2c_slave_create_simple | OBJECT(bmc= ) | "rtc" | Board i2c_init; single DS1338 RTC. hw/arm/aspeed_ast2600_catalina.c:581 | i2c_slave_create_simple | OBJECT(bmc= ) | "gpio[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_catalina.c:583 | i2c_slave_create_simple | OBJECT(bmc= ) | "tmp75[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_catalina.c:591 | i2c_slave_create_simple | OBJECT(bmc= ) | "tmp421[*]" | Board i2c_init; two TMP421 -> auto-index. hw/arm/aspeed_ast2600_catalina.c:618 | i2c_slave_create_simple | OBJECT(bmc= ) | "gpio[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_catalina.c:620 | i2c_slave_create_simple | OBJECT(bmc= ) | "gpio[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_catalina.c:622 | i2c_slave_create_simple | OBJECT(bmc= ) | "gpio[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_catalina.c:624 | i2c_slave_create_simple | OBJECT(bmc= ) | "gpio[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_catalina.c:626 | i2c_slave_create_simple | OBJECT(bmc= ) | "gpio[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_catalina.c:628 | i2c_slave_create_simple | OBJECT(bmc= ) | "gpio[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_catalina.c:632 | i2c_slave_create_simple | OBJECT(bmc= ) | "tmp421[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_fuji.c:30 | i2c_slave_create_simple | parent | "i2c-m= ux[*]" | get_pca9548_channels() static helper called only from fuji_bmc_i2c= _init(); no parent-capable pointer -> add Object *parent as first arg and t= hread OBJECT(bmc) from all 8 direct + 1 loop callers. 15 muxes total -> aut= o-index. hw/arm/aspeed_ast2600_fuji.c:60 | i2c_slave_create_simple | OBJECT(bmc) | "= lm75[*]" | fuji_bmc_i2c_init(AspeedMachineState *bmc) board i2c_init. Local= Object *o =3D OBJECT(bmc) added. LM75/TMP75 both alias TYPE_TMP105 but kee= p source-macro-derived names for readability; auto-index. hw/arm/aspeed_ast2600_fuji.c:61 | i2c_slave_create_simple | OBJECT(bmc) | "= lm75[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_fuji.c:71 | i2c_slave_create_simple | OBJECT(bmc) | "= lm75[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_fuji.c:72 | i2c_slave_create_simple | OBJECT(bmc) | "= lm75[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_fuji.c:73 | i2c_slave_create_simple | OBJECT(bmc) | "= lm75[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_fuji.c:74 | i2c_slave_create_simple | OBJECT(bmc) | "= tmp422" | Board i2c_init; single TMP422. hw/arm/aspeed_ast2600_fuji.c:77 | i2c_slave_create_simple | OBJECT(bmc) | "= lm75[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_fuji.c:79 | i2c_slave_create_simple | OBJECT(bmc) | "= lm75[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_fuji.c:81 | i2c_slave_create_simple | OBJECT(bmc) | "= tmp75[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_fuji.c:82 | i2c_slave_create_simple | OBJECT(bmc) | "= tmp75[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_fuji.c:84 | i2c_slave_create_simple | OBJECT(bmc) | "= tmp75[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_fuji.c:85 | i2c_slave_create_simple | OBJECT(bmc) | "= tmp75[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_fuji.c:88 | i2c_slave_create_simple | OBJECT(bmc) | "= tmp75[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_fuji.c:89 | i2c_slave_create_simple | OBJECT(bmc) | "= tmp75[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_fuji.c:96 | i2c_slave_create_simple | OBJECT(bmc) | "= tmp75[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_fuji.c:97 | i2c_slave_create_simple | OBJECT(bmc) | "= tmp75[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_fuji.c:106 | i2c_slave_create_simple | OBJECT(bmc) | = "tmp75[*]" | Board i2c_init; loop x8 -> auto-index. hw/arm/aspeed_ast2600_fuji.c:107 | i2c_slave_create_simple | OBJECT(bmc) | = "tmp75[*]" | Board i2c_init; loop x8 -> auto-index. hw/arm/aspeed_ast2600_fuji.c:108 | i2c_slave_create_simple | OBJECT(bmc) | = "tmp75[*]" | Board i2c_init; loop x8 -> auto-index. hw/arm/aspeed_ast2600_rainier.c:76 | i2c_slave_create_simple | OBJECT(bmc) = | "tmp105[*]" | rainier_bmc_i2c_init(AspeedMachineState *bmc) board i2c_ini= t. Local Object *o =3D OBJECT(bmc) added. Many TMP105 -> auto-index. hw/arm/aspeed_ast2600_rainier.c:78 | i2c_slave_create_simple | OBJECT(bmc) = | "tmp105[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_rainier.c:80 | i2c_slave_create_simple | OBJECT(bmc) = | "tmp105[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_rainier.c:82 | i2c_slave_create_simple | OBJECT(bmc) = | "i2c-mux[*]" | Board i2c_init; multiple PCA9546 -> auto-index. hw/arm/aspeed_ast2600_rainier.c:89 | i2c_slave_create_simple | OBJECT(bmc) = | "tmp105[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_rainier.c:91 | i2c_slave_create_simple | OBJECT(bmc) = | "tmp105[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_rainier.c:95 | i2c_slave_create_simple | OBJECT(bmc) = | "i2c-mux[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_rainier.c:100 | i2c_slave_create_simple | OBJECT(bmc)= | "tmp105[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_rainier.c:102 | i2c_slave_create_simple | OBJECT(bmc)= | "tmp105[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_rainier.c:104 | i2c_slave_create_simple | OBJECT(bmc)= | "tmp105[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_rainier.c:106 | i2c_slave_create_simple | OBJECT(bmc)= | "i2c-mux[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_rainier.c:119 | i2c_slave_create_simple | OBJECT(bmc)= | "dps310" | Board i2c_init; single dps310 pressure sensor. hw/arm/aspeed_ast2600_rainier.c:121 | i2c_slave_create_simple | OBJECT(bmc)= | "tmp105[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_rainier.c:123 | i2c_slave_create_simple | OBJECT(bmc)= | "max31785" | Board i2c_init; single max31785 fan controller. hw/arm/aspeed_ast2600_rainier.c:127 | i2c_slave_create_simple | OBJECT(bmc)= | "tmp105[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_rainier.c:129 | i2c_slave_create_simple | OBJECT(bmc)= | "tmp105[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_rainier.c:141 | i2c_slave_create_simple | OBJECT(bmc)= | "tmp423[*]" | Board i2c_init; four tmp423 -> auto-index. hw/arm/aspeed_ast2600_rainier.c:142 | i2c_slave_create_simple | OBJECT(bmc)= | "tmp423[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_rainier.c:145 | i2c_slave_create_simple | OBJECT(bmc)= | "tmp423[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_rainier.c:146 | i2c_slave_create_simple | OBJECT(bmc)= | "tmp423[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_rainier.c:149 | i2c_slave_create_simple | OBJECT(bmc)= | "tmp105[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_rainier.c:151 | i2c_slave_create_simple | OBJECT(bmc)= | "tmp105[*]" | Board i2c_init; auto-index. hw/arm/aspeed_ast2600_rainier.c:153 | i2c_slave_create_simple | OBJECT(bmc)= | "i2c-mux[*]" | Board i2c_init; auto-index. Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/arm/aspeed_ast2600_anacapa.c | 31 ++++++---- hw/arm/aspeed_ast2600_catalina.c | 65 +++++++++++--------- hw/arm/aspeed_ast2600_fuji.c | 65 +++++++++++--------- hw/arm/aspeed_ast2600_rainier.c | 102 ++++++++++++++++++++----------- 4 files changed, 155 insertions(+), 108 deletions(-) diff --git a/hw/arm/aspeed_ast2600_anacapa.c b/hw/arm/aspeed_ast2600_anacap= a.c index 98395f196b..d6412f5b0c 100644 --- a/hw/arm/aspeed_ast2600_anacapa.c +++ b/hw/arm/aspeed_ast2600_anacapa.c @@ -228,6 +228,7 @@ static void anacapa_bmc_i2c_init(AspeedMachineState *bm= c) AspeedSoCState *soc =3D bmc->soc; I2CBus *i2c[16] =3D {}; I2CSlave *i2c_mux; + Object *o =3D OBJECT(bmc); =20 for (int i =3D 0; i < ARRAY_SIZE(i2c); i++) { i2c[i] =3D aspeed_i2c_get_bus(&soc->i2c, i); @@ -237,17 +238,17 @@ static void anacapa_bmc_i2c_init(AspeedMachineState *= bmc) /* eeprom@50 */ at24c_eeprom_init(i2c[0], 0x50, 256 * KiB); /* i2c-mux@70 */ - i2c_slave_create_simple_orphan(i2c[0], TYPE_PCA9546, 0x70); + i2c_slave_create_simple(o, "i2c-mux[*]", i2c[0], TYPE_PCA9546, 0x70); =20 /* &i2c1 */ /* eeprom@50 */ at24c_eeprom_init(i2c[1], 0x50, 256 * KiB); /* i2c-mux@70 (PCA9546) =E2=80=94 4 channels, empty */ - i2c_slave_create_simple_orphan(i2c[1], TYPE_PCA9546, 0x70); + i2c_slave_create_simple(o, "i2c-mux[*]", i2c[1], TYPE_PCA9546, 0x70); =20 /* &i2c4 */ /* i2c-mux@70 (PCA9548) */ - i2c_slave_create_simple_orphan(i2c[4], TYPE_PCA9548, 0x70); + i2c_slave_create_simple(o, "i2c-mux[*]", i2c[4], TYPE_PCA9548, 0x70); =20 /* &i2c6 */ /* eeprom@50 */ @@ -256,15 +257,16 @@ static void anacapa_bmc_i2c_init(AspeedMachineState *= bmc) =20 /* &i2c8 */ /* i2c-mux@72 (PCA9546) */ - i2c_mux =3D i2c_slave_create_simple_orphan(i2c[8], TYPE_PCA9546, 0x72); + i2c_mux =3D i2c_slave_create_simple(o, "i2c-mux[*]", i2c[8], + TYPE_PCA9546, 0x72); =20 /* i2c8mux ch0 */ /* adc128d818@1f =E2=80=94 no model */ /* pca9555@22 */ - i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 0), + i2c_slave_create_simple(o, "gpio[*]", pca954x_i2c_get_bus(i2c_mux, 0), TYPE_PCA9552, 0x22); /* pca9555@24 */ - i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 0), + i2c_slave_create_simple(o, "gpio[*]", pca954x_i2c_get_bus(i2c_mux, 0), TYPE_PCA9552, 0x24); /* eeprom@50 */ at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 0), 0x50, 16 * KiB, @@ -272,10 +274,10 @@ static void anacapa_bmc_i2c_init(AspeedMachineState *= bmc) =20 /* i2c8mux ch1 */ /* pca9555@22 */ - i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 1), + i2c_slave_create_simple(o, "gpio[*]", pca954x_i2c_get_bus(i2c_mux, 1), TYPE_PCA9552, 0x22); /* pca9555@24 */ - i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 1), + i2c_slave_create_simple(o, "gpio[*]", pca954x_i2c_get_bus(i2c_mux, 1), TYPE_PCA9552, 0x24); /* eeprom@50 */ at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 1), 0x50, 16 * KiB, @@ -291,11 +293,12 @@ static void anacapa_bmc_i2c_init(AspeedMachineState *= bmc) =20 /* &i2c10 */ /* i2c-mux@71 (PCA9548) */ - i2c_mux =3D i2c_slave_create_simple_orphan(i2c[10], TYPE_PCA9548, 0x71= ); + i2c_mux =3D i2c_slave_create_simple(o, "i2c-mux[*]", i2c[10], + TYPE_PCA9548, 0x71); =20 /* i2c10mux ch5 */ /* pca9555@22*/ - i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 5), + i2c_slave_create_simple(o, "gpio[*]", pca954x_i2c_get_bus(i2c_mux, 5), TYPE_PCA9552, 0x22); /* eeprom@52 */ at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 5), 0x52, 32 * KiB, @@ -303,13 +306,14 @@ static void anacapa_bmc_i2c_init(AspeedMachineState *= bmc) =20 /* &i2c11 */ /* i2c-mux@71 (PCA9548) */ - i2c_mux =3D i2c_slave_create_simple_orphan(i2c[11], TYPE_PCA9548, 0x71= ); + i2c_mux =3D i2c_slave_create_simple(o, "i2c-mux[*]", i2c[11], + TYPE_PCA9548, 0x71); =20 /* i2c11mux ch0-ch4 =E2=80=94 empty */ =20 /* i2c11mux ch5 */ /* pca9555@22 */ - i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 5), + i2c_slave_create_simple(o, "gpio[*]", pca954x_i2c_get_bus(i2c_mux, 5), TYPE_PCA9552, 0x22); /* eeprom@52 */ at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 5), 0x52, 32 * KiB, @@ -317,7 +321,8 @@ static void anacapa_bmc_i2c_init(AspeedMachineState *bm= c) =20 /* &i2c13 */ /* i2c-mux@70 (PCA9548) */ - i2c_mux =3D i2c_slave_create_simple_orphan(i2c[13], TYPE_PCA9548, 0x70= ); + i2c_mux =3D i2c_slave_create_simple(o, "i2c-mux[*]", i2c[13], + TYPE_PCA9548, 0x70); =20 /* i2c13mux ch3 */ /* adc128d818@1f - no model */ diff --git a/hw/arm/aspeed_ast2600_catalina.c b/hw/arm/aspeed_ast2600_catal= ina.c index c2c949ace3..59fc0d2437 100644 --- a/hw/arm/aspeed_ast2600_catalina.c +++ b/hw/arm/aspeed_ast2600_catalina.c @@ -464,6 +464,7 @@ static void catalina_bmc_i2c_init(AspeedMachineState *b= mc) AspeedSoCState *soc =3D bmc->soc; I2CBus *i2c[16] =3D {}; I2CSlave *i2c_mux; + Object *o =3D OBJECT(bmc); =20 /* busses 0-15 are all used. */ for (int i =3D 0; i < ARRAY_SIZE(i2c); i++) { @@ -472,43 +473,46 @@ static void catalina_bmc_i2c_init(AspeedMachineState = *bmc) =20 /* &i2c0 */ /* i2c-mux@71 (PCA9546) on i2c0 */ - i2c_slave_create_simple_orphan(i2c[0], TYPE_PCA9546, 0x71); + i2c_slave_create_simple(o, "i2c-mux[*]", i2c[0], TYPE_PCA9546, 0x71); =20 /* i2c-mux@72 (PCA9546) on i2c0 */ - i2c_mux =3D i2c_slave_create_simple_orphan(i2c[0], TYPE_PCA9546, 0x72); + i2c_mux =3D i2c_slave_create_simple(o, "i2c-mux[*]", i2c[0], + TYPE_PCA9546, 0x72); =20 /* i2c0mux1ch1 */ /* io_expander7 - pca9535@20 */ - i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 1), + i2c_slave_create_simple(o, "gpio[*]", pca954x_i2c_get_bus(i2c_mux, 1), TYPE_PCA9535, 0x20); /* eeprom@50 */ at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 1), 0x50, 8 * KiB, gb200io_eeprom, gb200io_eeprom_len); =20 /* i2c-mux@73 (PCA9546) on i2c0 */ - i2c_slave_create_simple_orphan(i2c[0], TYPE_PCA9546, 0x73); + i2c_slave_create_simple(o, "i2c-mux[*]", i2c[0], TYPE_PCA9546, 0x73); =20 /* i2c-mux@75 (PCA9546) on i2c0 */ - i2c_slave_create_simple_orphan(i2c[0], TYPE_PCA9546, 0x75); + i2c_slave_create_simple(o, "i2c-mux[*]", i2c[0], TYPE_PCA9546, 0x75); =20 /* i2c-mux@76 (PCA9546) on i2c0 */ - i2c_mux =3D i2c_slave_create_simple_orphan(i2c[0], TYPE_PCA9546, 0x76); + i2c_mux =3D i2c_slave_create_simple(o, "i2c-mux[*]", i2c[0], + TYPE_PCA9546, 0x76); =20 /* i2c0mux4ch1 */ /* io_expander8 - pca9535@21 */ - i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 1), + i2c_slave_create_simple(o, "gpio[*]", pca954x_i2c_get_bus(i2c_mux, 1), TYPE_PCA9535, 0x21); /* eeprom@50 */ at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 1), 0x50, 8 * KiB, gb200io_eeprom, gb200io_eeprom_len); =20 /* i2c-mux@77 (PCA9546) on i2c0 */ - i2c_slave_create_simple_orphan(i2c[0], TYPE_PCA9546, 0x77); + i2c_slave_create_simple(o, "i2c-mux[*]", i2c[0], TYPE_PCA9546, 0x77); =20 =20 /* &i2c1 */ /* i2c-mux@70 (PCA9548) on i2c1 */ - i2c_mux =3D i2c_slave_create_simple_orphan(i2c[1], TYPE_PCA9548, 0x70); + i2c_mux =3D i2c_slave_create_simple(o, "i2c-mux[*]", i2c[1], + TYPE_PCA9548, 0x70); /* i2c1mux0ch0 */ /* ina238@41 - no model */ /* ina238@42 - no model */ @@ -525,14 +529,15 @@ static void catalina_bmc_i2c_init(AspeedMachineState = *bmc) at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 5), 0x54, 8 * KiB, pdb_eeprom, pdb_eeprom_len); /* tpm75@4f */ - i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 5), TYPE_T= MP75, 0x4f); + i2c_slave_create_simple(o, "tmp75[*]", pca954x_i2c_get_bus(i2c_mux, 5), + TYPE_TMP75, 0x4f); =20 /* i2c1mux0ch6 */ /* io_expander5 - pca9554@27 */ - i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 6), + i2c_slave_create_simple(o, "gpio[*]", pca954x_i2c_get_bus(i2c_mux, 6), TYPE_PCA9554, 0x27); /* io_expander6 - pca9555@25 */ - i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 6), + i2c_slave_create_simple(o, "gpio[*]", pca954x_i2c_get_bus(i2c_mux, 6), TYPE_PCA9552, 0x25); /* eeprom@51 */ at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 6), 0x51, 8 * KiB, @@ -543,15 +548,16 @@ static void catalina_bmc_i2c_init(AspeedMachineState = *bmc) at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 7), 0x53, 8 * KiB, fio_eeprom, fio_eeprom_len); /* temperature-sensor@4b - tmp75 */ - i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 7), TYPE_T= MP75, 0x4b); + i2c_slave_create_simple(o, "tmp75[*]", pca954x_i2c_get_bus(i2c_mux, 7), + TYPE_TMP75, 0x4b); =20 /* &i2c2 */ /* io_expander0 - pca9555@20 */ - i2c_slave_create_simple_orphan(i2c[2], TYPE_PCA9552, 0x20); + i2c_slave_create_simple(o, "gpio[*]", i2c[2], TYPE_PCA9552, 0x20); /* io_expander0 - pca9555@21 */ - i2c_slave_create_simple_orphan(i2c[2], TYPE_PCA9552, 0x21); + i2c_slave_create_simple(o, "gpio[*]", i2c[2], TYPE_PCA9552, 0x21); /* io_expander0 - pca9555@27 */ - i2c_slave_create_simple_orphan(i2c[2], TYPE_PCA9552, 0x27); + i2c_slave_create_simple(o, "gpio[*]", i2c[2], TYPE_PCA9552, 0x27); /* eeprom@50 */ at24c_eeprom_init(i2c[2], 0x50, 8 * KiB); /* eeprom@51 */ @@ -559,7 +565,8 @@ static void catalina_bmc_i2c_init(AspeedMachineState *b= mc) =20 /* &i2c5 */ /* i2c-mux@70 (PCA9548) on i2c5 */ - i2c_mux =3D i2c_slave_create_simple_orphan(i2c[5], TYPE_PCA9548, 0x70); + i2c_mux =3D i2c_slave_create_simple(o, "i2c-mux[*]", i2c[5], + TYPE_PCA9548, 0x70); /* i2c5mux0ch6 */ /* eeprom@52 */ at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 6), 0x52, 8 * KiB, @@ -572,15 +579,15 @@ static void catalina_bmc_i2c_init(AspeedMachineState = *bmc) =20 /* &i2c6 */ /* io_expander3 - pca9555@21 */ - i2c_slave_create_simple_orphan(i2c[6], TYPE_PCA9552, 0x21); + i2c_slave_create_simple(o, "gpio[*]", i2c[6], TYPE_PCA9552, 0x21); /* rtc@6f - nct3018y */ - i2c_slave_create_simple_orphan(i2c[6], TYPE_DS1338, 0x6f); + i2c_slave_create_simple(o, "rtc", i2c[6], TYPE_DS1338, 0x6f); =20 /* &i2c9 */ /* io_expander4 - pca9555@4f */ - i2c_slave_create_simple_orphan(i2c[9], TYPE_PCA9552, 0x4f); + i2c_slave_create_simple(o, "gpio[*]", i2c[9], TYPE_PCA9552, 0x4f); /* temperature-sensor@4b - tpm75 */ - i2c_slave_create_simple_orphan(i2c[9], TYPE_TMP75, 0x4b); + i2c_slave_create_simple(o, "tmp75[*]", i2c[9], TYPE_TMP75, 0x4b); /* eeprom@50 */ at24c_eeprom_init_rom(i2c[9], 0x50, 8 * KiB, scm_eeprom, scm_eeprom_le= n); /* eeprom@56 */ @@ -588,7 +595,7 @@ static void catalina_bmc_i2c_init(AspeedMachineState *b= mc) =20 /* &i2c10 */ /* temperature-sensor@1f - tpm421 */ - i2c_slave_create_simple_orphan(i2c[10], TYPE_TMP421, 0x1f); + i2c_slave_create_simple(o, "tmp421[*]", i2c[10], TYPE_TMP421, 0x1f); /* eeprom@50 */ at24c_eeprom_init_rom(i2c[10], 0x50, 8 * KiB, nic_eeprom, nic_eeprom_l= en); =20 @@ -615,21 +622,21 @@ static void catalina_bmc_i2c_init(AspeedMachineState = *bmc) =20 /* &i2c14 */ /* io_expander9 - pca9555@10 */ - i2c_slave_create_simple_orphan(i2c[14], TYPE_PCA9552, 0x10); + i2c_slave_create_simple(o, "gpio[*]", i2c[14], TYPE_PCA9552, 0x10); /* io_expander10 - pca9555@11 */ - i2c_slave_create_simple_orphan(i2c[14], TYPE_PCA9552, 0x11); + i2c_slave_create_simple(o, "gpio[*]", i2c[14], TYPE_PCA9552, 0x11); /* io_expander11 - pca9555@12 */ - i2c_slave_create_simple_orphan(i2c[14], TYPE_PCA9552, 0x12); + i2c_slave_create_simple(o, "gpio[*]", i2c[14], TYPE_PCA9552, 0x12); /* io_expander12 - pca9555@13 */ - i2c_slave_create_simple_orphan(i2c[14], TYPE_PCA9552, 0x13); + i2c_slave_create_simple(o, "gpio[*]", i2c[14], TYPE_PCA9552, 0x13); /* io_expander13 - pca9555@14 */ - i2c_slave_create_simple_orphan(i2c[14], TYPE_PCA9552, 0x14); + i2c_slave_create_simple(o, "gpio[*]", i2c[14], TYPE_PCA9552, 0x14); /* io_expander14 - pca9555@15 */ - i2c_slave_create_simple_orphan(i2c[14], TYPE_PCA9552, 0x15); + i2c_slave_create_simple(o, "gpio[*]", i2c[14], TYPE_PCA9552, 0x15); =20 /* &i2c15 */ /* temperature-sensor@1f - tmp421 */ - i2c_slave_create_simple_orphan(i2c[15], TYPE_TMP421, 0x1f); + i2c_slave_create_simple(o, "tmp421[*]", i2c[15], TYPE_TMP421, 0x1f); /* eeprom@52 */ at24c_eeprom_init_rom(i2c[15], 0x52, 8 * KiB, nic_eeprom, nic_eeprom_l= en); } diff --git a/hw/arm/aspeed_ast2600_fuji.c b/hw/arm/aspeed_ast2600_fuji.c index 59b2da1ccf..1e681d0090 100644 --- a/hw/arm/aspeed_ast2600_fuji.c +++ b/hw/arm/aspeed_ast2600_fuji.c @@ -24,10 +24,11 @@ #define FUJI_BMC_HW_STRAP2 0x00000000 #define FUJI_BMC_RAM_SIZE ASPEED_RAM_SIZE(2 * GiB) =20 -static void get_pca9548_channels(I2CBus *bus, uint8_t mux_addr, - I2CBus **channels) +static void get_pca9548_channels(Object *parent, I2CBus *bus, + uint8_t mux_addr, I2CBus **channels) { - I2CSlave *mux =3D i2c_slave_create_simple_orphan(bus, "pca9548", mux_a= ddr); + I2CSlave *mux =3D i2c_slave_create_simple(parent, "i2c-mux[*]", bus, + "pca9548", mux_addr); for (int i =3D 0; i < 8; i++) { channels[i] =3D pca954x_i2c_get_bus(mux, i); } @@ -37,6 +38,7 @@ static void fuji_bmc_i2c_init(AspeedMachineState *bmc) { AspeedSoCState *soc =3D bmc->soc; I2CBus *i2c[144] =3D {}; + Object *o =3D OBJECT(bmc); =20 for (int i =3D 0; i < 16; i++) { i2c[i] =3D aspeed_i2c_get_bus(&soc->i2c, i); @@ -45,20 +47,20 @@ static void fuji_bmc_i2c_init(AspeedMachineState *bmc) I2CBus *i2c480 =3D i2c[8]; I2CBus *i2c600 =3D i2c[11]; =20 - get_pca9548_channels(i2c180, 0x70, &i2c[16]); - get_pca9548_channels(i2c480, 0x70, &i2c[24]); + get_pca9548_channels(o, i2c180, 0x70, &i2c[16]); + get_pca9548_channels(o, i2c480, 0x70, &i2c[24]); /* NOTE: The device tree skips [32, 40) in the alias numbering */ - get_pca9548_channels(i2c600, 0x77, &i2c[40]); - get_pca9548_channels(i2c[24], 0x71, &i2c[48]); - get_pca9548_channels(i2c[25], 0x72, &i2c[56]); - get_pca9548_channels(i2c[26], 0x76, &i2c[64]); - get_pca9548_channels(i2c[27], 0x76, &i2c[72]); + get_pca9548_channels(o, i2c600, 0x77, &i2c[40]); + get_pca9548_channels(o, i2c[24], 0x71, &i2c[48]); + get_pca9548_channels(o, i2c[25], 0x72, &i2c[56]); + get_pca9548_channels(o, i2c[26], 0x76, &i2c[64]); + get_pca9548_channels(o, i2c[27], 0x76, &i2c[72]); for (int i =3D 0; i < 8; i++) { - get_pca9548_channels(i2c[40 + i], 0x76, &i2c[80 + i * 8]); + get_pca9548_channels(o, i2c[40 + i], 0x76, &i2c[80 + i * 8]); } =20 - i2c_slave_create_simple_orphan(i2c[17], TYPE_LM75, 0x4c); - i2c_slave_create_simple_orphan(i2c[17], TYPE_LM75, 0x4d); + i2c_slave_create_simple(o, "lm75[*]", i2c[17], TYPE_LM75, 0x4c); + i2c_slave_create_simple(o, "lm75[*]", i2c[17], TYPE_LM75, 0x4d); =20 /* * EEPROM 24c64 size is 64Kbits or 8 Kbytes @@ -68,33 +70,33 @@ static void fuji_bmc_i2c_init(AspeedMachineState *bmc) at24c_eeprom_init(i2c[20], 0x50, 256); at24c_eeprom_init(i2c[22], 0x52, 256); =20 - i2c_slave_create_simple_orphan(i2c[3], TYPE_LM75, 0x48); - i2c_slave_create_simple_orphan(i2c[3], TYPE_LM75, 0x49); - i2c_slave_create_simple_orphan(i2c[3], TYPE_LM75, 0x4a); - i2c_slave_create_simple_orphan(i2c[3], TYPE_TMP422, 0x4c); + i2c_slave_create_simple(o, "lm75[*]", i2c[3], TYPE_LM75, 0x48); + i2c_slave_create_simple(o, "lm75[*]", i2c[3], TYPE_LM75, 0x49); + i2c_slave_create_simple(o, "lm75[*]", i2c[3], TYPE_LM75, 0x4a); + i2c_slave_create_simple(o, "tmp422", i2c[3], TYPE_TMP422, 0x4c); =20 at24c_eeprom_init(i2c[8], 0x51, 8 * KiB); - i2c_slave_create_simple_orphan(i2c[8], TYPE_LM75, 0x4a); + i2c_slave_create_simple(o, "lm75[*]", i2c[8], TYPE_LM75, 0x4a); =20 - i2c_slave_create_simple_orphan(i2c[50], TYPE_LM75, 0x4c); + i2c_slave_create_simple(o, "lm75[*]", i2c[50], TYPE_LM75, 0x4c); at24c_eeprom_init(i2c[50], 0x52, 8 * KiB); - i2c_slave_create_simple_orphan(i2c[51], TYPE_TMP75, 0x48); - i2c_slave_create_simple_orphan(i2c[52], TYPE_TMP75, 0x49); + i2c_slave_create_simple(o, "tmp75[*]", i2c[51], TYPE_TMP75, 0x48); + i2c_slave_create_simple(o, "tmp75[*]", i2c[52], TYPE_TMP75, 0x49); =20 - i2c_slave_create_simple_orphan(i2c[59], TYPE_TMP75, 0x48); - i2c_slave_create_simple_orphan(i2c[60], TYPE_TMP75, 0x49); + i2c_slave_create_simple(o, "tmp75[*]", i2c[59], TYPE_TMP75, 0x48); + i2c_slave_create_simple(o, "tmp75[*]", i2c[60], TYPE_TMP75, 0x49); =20 at24c_eeprom_init(i2c[65], 0x53, 8 * KiB); - i2c_slave_create_simple_orphan(i2c[66], TYPE_TMP75, 0x49); - i2c_slave_create_simple_orphan(i2c[66], TYPE_TMP75, 0x48); + i2c_slave_create_simple(o, "tmp75[*]", i2c[66], TYPE_TMP75, 0x49); + i2c_slave_create_simple(o, "tmp75[*]", i2c[66], TYPE_TMP75, 0x48); at24c_eeprom_init(i2c[68], 0x52, 8 * KiB); at24c_eeprom_init(i2c[69], 0x52, 8 * KiB); at24c_eeprom_init(i2c[70], 0x52, 8 * KiB); at24c_eeprom_init(i2c[71], 0x52, 8 * KiB); =20 at24c_eeprom_init(i2c[73], 0x53, 8 * KiB); - i2c_slave_create_simple_orphan(i2c[74], TYPE_TMP75, 0x49); - i2c_slave_create_simple_orphan(i2c[74], TYPE_TMP75, 0x48); + i2c_slave_create_simple(o, "tmp75[*]", i2c[74], TYPE_TMP75, 0x49); + i2c_slave_create_simple(o, "tmp75[*]", i2c[74], TYPE_TMP75, 0x48); at24c_eeprom_init(i2c[76], 0x52, 8 * KiB); at24c_eeprom_init(i2c[77], 0x52, 8 * KiB); at24c_eeprom_init(i2c[78], 0x52, 8 * KiB); @@ -103,9 +105,12 @@ static void fuji_bmc_i2c_init(AspeedMachineState *bmc) =20 for (int i =3D 0; i < 8; i++) { at24c_eeprom_init(i2c[81 + i * 8], 0x56, 64 * KiB); - i2c_slave_create_simple_orphan(i2c[82 + i * 8], TYPE_TMP75, 0x48); - i2c_slave_create_simple_orphan(i2c[83 + i * 8], TYPE_TMP75, 0x4b); - i2c_slave_create_simple_orphan(i2c[84 + i * 8], TYPE_TMP75, 0x4a); + i2c_slave_create_simple(o, "tmp75[*]", i2c[82 + i * 8], + TYPE_TMP75, 0x48); + i2c_slave_create_simple(o, "tmp75[*]", i2c[83 + i * 8], + TYPE_TMP75, 0x4b); + i2c_slave_create_simple(o, "tmp75[*]", i2c[84 + i * 8], + TYPE_TMP75, 0x4a); } } =20 diff --git a/hw/arm/aspeed_ast2600_rainier.c b/hw/arm/aspeed_ast2600_rainie= r.c index 8ba15aceca..2f5e3daf3b 100644 --- a/hw/arm/aspeed_ast2600_rainier.c +++ b/hw/arm/aspeed_ast2600_rainier.c @@ -67,43 +67,55 @@ static void rainier_bmc_i2c_init(AspeedMachineState *bm= c) { AspeedSoCState *soc =3D bmc->soc; I2CSlave *i2c_mux; + Object *o =3D OBJECT(bmc); =20 at24c_eeprom_init(aspeed_i2c_get_bus(&soc->i2c, 0), 0x51, 32 * KiB); =20 aspeed_create_pca9552(OBJECT(bmc), soc, 3, 0x61); =20 /* The rainier expects a TMP275 but a TMP105 is compatible */ - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 4), TYPE_= TMP105, - 0x48); - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 4), TYPE_= TMP105, - 0x49); - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 4), TYPE_= TMP105, - 0x4a); - i2c_mux =3D i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2= c, 4), + i2c_slave_create_simple(o, "tmp105[*]", + aspeed_i2c_get_bus(&soc->i2c, 4), + TYPE_TMP105, 0x48); + i2c_slave_create_simple(o, "tmp105[*]", + aspeed_i2c_get_bus(&soc->i2c, 4), + TYPE_TMP105, 0x49); + i2c_slave_create_simple(o, "tmp105[*]", + aspeed_i2c_get_bus(&soc->i2c, 4), + TYPE_TMP105, 0x4a); + i2c_mux =3D i2c_slave_create_simple(o, "i2c-mux[*]", + aspeed_i2c_get_bus(&soc->i2c, 4), "pca9546", 0x70); at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 0), 0x50, 64 * KiB); at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 1), 0x51, 64 * KiB); at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 2), 0x52, 64 * KiB); aspeed_create_pca9552(OBJECT(bmc), soc, 4, 0x60); =20 - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 5), TYPE_= TMP105, - 0x48); - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 5), TYPE_= TMP105, - 0x49); + i2c_slave_create_simple(o, "tmp105[*]", + aspeed_i2c_get_bus(&soc->i2c, 5), + TYPE_TMP105, 0x48); + i2c_slave_create_simple(o, "tmp105[*]", + aspeed_i2c_get_bus(&soc->i2c, 5), + TYPE_TMP105, 0x49); aspeed_create_pca9552(OBJECT(bmc), soc, 5, 0x60); aspeed_create_pca9552(OBJECT(bmc), soc, 5, 0x61); - i2c_mux =3D i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2= c, 5), + i2c_mux =3D i2c_slave_create_simple(o, "i2c-mux[*]", + aspeed_i2c_get_bus(&soc->i2c, 5), "pca9546", 0x70); at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 0), 0x50, 64 * KiB); at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 1), 0x51, 64 * KiB); =20 - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 6), TYPE_= TMP105, - 0x48); - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 6), TYPE_= TMP105, - 0x4a); - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 6), TYPE_= TMP105, - 0x4b); - i2c_mux =3D i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2= c, 6), + i2c_slave_create_simple(o, "tmp105[*]", + aspeed_i2c_get_bus(&soc->i2c, 6), + TYPE_TMP105, 0x48); + i2c_slave_create_simple(o, "tmp105[*]", + aspeed_i2c_get_bus(&soc->i2c, 6), + TYPE_TMP105, 0x4a); + i2c_slave_create_simple(o, "tmp105[*]", + aspeed_i2c_get_bus(&soc->i2c, 6), + TYPE_TMP105, 0x4b); + i2c_mux =3D i2c_slave_create_simple(o, "i2c-mux[*]", + aspeed_i2c_get_bus(&soc->i2c, 6), "pca9546", 0x70); at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 0), 0x50, 64 * KiB); at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 1), 0x51, 64 * KiB); @@ -116,18 +128,25 @@ static void rainier_bmc_i2c_init(AspeedMachineState *= bmc) aspeed_create_pca9552(OBJECT(bmc), soc, 7, 0x33); aspeed_create_pca9552(OBJECT(bmc), soc, 7, 0x60); aspeed_create_pca9552(OBJECT(bmc), soc, 7, 0x61); - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 7), "dps3= 10", 0x76); + i2c_slave_create_simple(o, "dps310", + aspeed_i2c_get_bus(&soc->i2c, 7), + "dps310", 0x76); /* Bus 7: TODO si7021-a20@20 */ - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 7), TYPE_= TMP105, - 0x48); - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 7), "max3= 1785", 0x52); + i2c_slave_create_simple(o, "tmp105[*]", + aspeed_i2c_get_bus(&soc->i2c, 7), + TYPE_TMP105, 0x48); + i2c_slave_create_simple(o, "max31785", + aspeed_i2c_get_bus(&soc->i2c, 7), + "max31785", 0x52); at24c_eeprom_init(aspeed_i2c_get_bus(&soc->i2c, 7), 0x50, 64 * KiB); at24c_eeprom_init(aspeed_i2c_get_bus(&soc->i2c, 7), 0x51, 64 * KiB); =20 - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 8), TYPE_= TMP105, - 0x48); - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 8), TYPE_= TMP105, - 0x4a); + i2c_slave_create_simple(o, "tmp105[*]", + aspeed_i2c_get_bus(&soc->i2c, 8), + TYPE_TMP105, 0x48); + i2c_slave_create_simple(o, "tmp105[*]", + aspeed_i2c_get_bus(&soc->i2c, 8), + TYPE_TMP105, 0x4a); at24c_eeprom_init_rom(aspeed_i2c_get_bus(&soc->i2c, 8), 0x50, 64 * KiB, rainier_bb_fruid, rainier_bb_fruid_len= ); at24c_eeprom_init_rom(aspeed_i2c_get_bus(&soc->i2c, 8), 0x51, @@ -138,19 +157,30 @@ static void rainier_bmc_i2c_init(AspeedMachineState *= bmc) /* Bus 8: ucd90320@b */ /* Bus 8: ucd90320@c */ =20 - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 9), "tmp4= 23", 0x4c); - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 9), "tmp4= 23", 0x4d); + i2c_slave_create_simple(o, "tmp423[*]", + aspeed_i2c_get_bus(&soc->i2c, 9), + "tmp423", 0x4c); + i2c_slave_create_simple(o, "tmp423[*]", + aspeed_i2c_get_bus(&soc->i2c, 9), + "tmp423", 0x4d); at24c_eeprom_init(aspeed_i2c_get_bus(&soc->i2c, 9), 0x50, 128 * KiB); =20 - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 10), "tmp= 423", 0x4c); - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 10), "tmp= 423", 0x4d); + i2c_slave_create_simple(o, "tmp423[*]", + aspeed_i2c_get_bus(&soc->i2c, 10), + "tmp423", 0x4c); + i2c_slave_create_simple(o, "tmp423[*]", + aspeed_i2c_get_bus(&soc->i2c, 10), + "tmp423", 0x4d); at24c_eeprom_init(aspeed_i2c_get_bus(&soc->i2c, 10), 0x50, 128 * KiB); =20 - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 11), TYPE= _TMP105, - 0x48); - i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 11), TYPE= _TMP105, - 0x49); - i2c_mux =3D i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2= c, 11), + i2c_slave_create_simple(o, "tmp105[*]", + aspeed_i2c_get_bus(&soc->i2c, 11), + TYPE_TMP105, 0x48); + i2c_slave_create_simple(o, "tmp105[*]", + aspeed_i2c_get_bus(&soc->i2c, 11), + TYPE_TMP105, 0x49); + i2c_mux =3D i2c_slave_create_simple(o, "i2c-mux[*]", + aspeed_i2c_get_bus(&soc->i2c, 11), "pca9546", 0x70); at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 0), 0x50, 64 * KiB); at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 1), 0x51, 64 * KiB); --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411886; cv=none; d=zohomail.com; s=zohoarc; b=J69M5S/OfXqKaMMXaKmbnpf7aJEjF2BkUVT8jsWM53BRhA3nCAAzJe8AEJvOt8u0GybksxBOYr8XepzvL9GNOLqwFboXREo9yjdtFt+u5A9VnI+/ei7pKmZJcM5VL/7e2Of/LAHbf9LJYY+QOF9AEeTePzT1D7LHPUrh6Gi2KCQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411886; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=7CyRs+6QRfcregKC1pInw+5Dy34b/w3plRdIgTj9Fro=; b=WeafcXW90gdHBf9EZR+hGfGtpvERzmq26v4cTk5K0rCTCz+6SJQiEVASZFWo7/jlZutx9DIENnkzmX7OFyHzvcqZ10dE8WEhi4IGJXAyhW9G1PShKfouVxecd7VI11/TZTXi74BddUNrZMkPW+JHNEo/ISEYvMH1Qy/q9d2LMjc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411886607371.3421386174206; Sat, 18 Jul 2026 14:58:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlD2V-000134-Fv; Sat, 18 Jul 2026 17:57:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD2T-0000uM-6n; Sat, 18 Jul 2026 17:57:41 -0400 Received: from pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.42.203.116]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD2P-0004jG-G9; Sat, 18 Jul 2026 17:57:40 -0400 Received: from ip-10-5-12-219.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.12.219]) by internal-pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:57:34 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.236:8585] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.19.34:2525] with esmtp (Farcaster) id 7980c613-4913-4cac-b55b-313142e49694; Sat, 18 Jul 2026 21:57:33 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA001.ant.amazon.com (10.250.64.218) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:57:33 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:57:23 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411857; x=1815947857; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=7CyRs+6QRfcregKC1pInw+5Dy34b/w3plRdIgTj9Fro=; b=aH0KUExd9ifAmwPv36kAYiiJQweRi++/cBoE1s0VPCo0XrRShmJtS/TP Cswhxaf5agm9pAzABSda7HcSfiUKHm4C2hRKO8eYSUWJtujAiCvvKvuUH fceWzHwp+igHZFXaSB+mjanye4tCIfv+l+o18E8QnCGX64vczuFJbpfV+ rycl9Sj/4iYPs46GOvQxCDe42ZtIUWO8Smv/GpEFlmXfws7RFc9yrLLNr q7g/eEcONMdn7rcGE0rhtKc2wsEm7RDVt9uvrFKYddZ6Jp0vY65zGf183 oNZ8VzX0N30uFyDgSzzv7mqD0mrwpAIReyUKKGdmMXrJjPZ7/yKRjdduA g==; X-CSE-ConnectionGUID: jBUuMl1+QT+ioBq9lQmZdA== X-CSE-MsgGUID: jbUfGmpLQZ+ILiKdv5dfSA== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23940113" X-Farcaster-Flow-ID: 7980c613-4913-4cac-b55b-313142e49694 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 074/137] hw/nvram/at24c: Give at24c_eeprom_init() a QOM parent Date: Sat, 18 Jul 2026 21:35:49 +0000 Message-ID: <20260718213652.37673-75-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D031UWC003.ant.amazon.com (10.13.139.252) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.42.203.116; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411886889158500 Now that all callers of at24c_eeprom_init() and at24c_eeprom_init_rom() live in already-converted hw/arm aspeed and npcm board files, thread an Object *parent through these two convenience helpers so that every I2C EEPROM created by an aspeed or npcm board becomes a proper child of its machine instead of landing under /machine/unattached. Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/arm/aspeed_ast2500_tiogapass.c | 4 +-- hw/arm/aspeed_ast2500_yosemitev2.c | 4 +-- hw/arm/aspeed_ast2600_anacapa.c | 20 +++++++------- hw/arm/aspeed_ast2600_bletchley.c | 4 +-- hw/arm/aspeed_ast2600_catalina.c | 34 ++++++++++++------------ hw/arm/aspeed_ast2600_fby35.c | 10 +++---- hw/arm/aspeed_ast2600_fuji.c | 34 ++++++++++++------------ hw/arm/aspeed_ast2600_gb200nvl.c | 6 ++--- hw/arm/aspeed_ast2600_rainier.c | 42 +++++++++++++++--------------- hw/arm/npcm7xx_boards.c | 8 +++--- hw/nvram/eeprom_at24c.c | 12 +++++---- include/hw/nvram/eeprom_at24c.h | 6 +++-- 12 files changed, 94 insertions(+), 90 deletions(-) diff --git a/hw/arm/aspeed_ast2500_tiogapass.c b/hw/arm/aspeed_ast2500_tiog= apass.c index 13d1db9cfa..c813fc7301 100644 --- a/hw/arm/aspeed_ast2500_tiogapass.c +++ b/hw/arm/aspeed_ast2500_tiogapass.c @@ -51,8 +51,8 @@ static void tiogapass_bmc_i2c_init(AspeedMachineState *bm= c) { AspeedSoCState *soc =3D bmc->soc; =20 - at24c_eeprom_init(aspeed_i2c_get_bus(&soc->i2c, 4), 0x54, 128 * KiB); - at24c_eeprom_init_rom(aspeed_i2c_get_bus(&soc->i2c, 6), 0x54, 128 * Ki= B, + at24c_eeprom_init(OBJECT(bmc), aspeed_i2c_get_bus(&soc->i2c, 4), 0x54,= 128 * KiB); + at24c_eeprom_init_rom(OBJECT(bmc), aspeed_i2c_get_bus(&soc->i2c, 6), 0= x54, 128 * KiB, tiogapass_bmc_fruid, tiogapass_bmc_fruid_len); /* TMP421 */ i2c_slave_create_simple(OBJECT(bmc), "tmp421[*]", diff --git a/hw/arm/aspeed_ast2500_yosemitev2.c b/hw/arm/aspeed_ast2500_yos= emitev2.c index 4e3c19bc07..57c9976051 100644 --- a/hw/arm/aspeed_ast2500_yosemitev2.c +++ b/hw/arm/aspeed_ast2500_yosemitev2.c @@ -51,8 +51,8 @@ static void yosemitev2_bmc_i2c_init(AspeedMachineState *b= mc) { AspeedSoCState *soc =3D bmc->soc; =20 - at24c_eeprom_init(aspeed_i2c_get_bus(&soc->i2c, 4), 0x51, 128 * KiB); - at24c_eeprom_init_rom(aspeed_i2c_get_bus(&soc->i2c, 8), 0x51, 128 * Ki= B, + at24c_eeprom_init(OBJECT(bmc), aspeed_i2c_get_bus(&soc->i2c, 4), 0x51,= 128 * KiB); + at24c_eeprom_init_rom(OBJECT(bmc), aspeed_i2c_get_bus(&soc->i2c, 8), 0= x51, 128 * KiB, yosemitev2_bmc_fruid, yosemitev2_bmc_fruid_len); /* TMP421 */ i2c_slave_create_simple(OBJECT(bmc), "tmp421[*]", diff --git a/hw/arm/aspeed_ast2600_anacapa.c b/hw/arm/aspeed_ast2600_anacap= a.c index d6412f5b0c..faf3fc070d 100644 --- a/hw/arm/aspeed_ast2600_anacapa.c +++ b/hw/arm/aspeed_ast2600_anacapa.c @@ -236,13 +236,13 @@ static void anacapa_bmc_i2c_init(AspeedMachineState *= bmc) =20 /* &i2c0 */ /* eeprom@50 */ - at24c_eeprom_init(i2c[0], 0x50, 256 * KiB); + at24c_eeprom_init(o, i2c[0], 0x50, 256 * KiB); /* i2c-mux@70 */ i2c_slave_create_simple(o, "i2c-mux[*]", i2c[0], TYPE_PCA9546, 0x70); =20 /* &i2c1 */ /* eeprom@50 */ - at24c_eeprom_init(i2c[1], 0x50, 256 * KiB); + at24c_eeprom_init(o, i2c[1], 0x50, 256 * KiB); /* i2c-mux@70 (PCA9546) =E2=80=94 4 channels, empty */ i2c_slave_create_simple(o, "i2c-mux[*]", i2c[1], TYPE_PCA9546, 0x70); =20 @@ -252,7 +252,7 @@ static void anacapa_bmc_i2c_init(AspeedMachineState *bm= c) =20 /* &i2c6 */ /* eeprom@50 */ - at24c_eeprom_init_rom(i2c[6], 0x50, 32 * KiB, + at24c_eeprom_init_rom(o, i2c[6], 0x50, 32 * KiB, hpm_eeprom, hpm_eeprom_len); =20 /* &i2c8 */ @@ -269,7 +269,7 @@ static void anacapa_bmc_i2c_init(AspeedMachineState *bm= c) i2c_slave_create_simple(o, "gpio[*]", pca954x_i2c_get_bus(i2c_mux, 0), TYPE_PCA9552, 0x24); /* eeprom@50 */ - at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 0), 0x50, 16 * KiB, + at24c_eeprom_init_rom(o, pca954x_i2c_get_bus(i2c_mux, 0), 0x50, 16 * K= iB, rpdb_eeprom, rpdb_eeprom_len); =20 /* i2c8mux ch1 */ @@ -280,15 +280,15 @@ static void anacapa_bmc_i2c_init(AspeedMachineState *= bmc) i2c_slave_create_simple(o, "gpio[*]", pca954x_i2c_get_bus(i2c_mux, 1), TYPE_PCA9552, 0x24); /* eeprom@50 */ - at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 1), 0x50, 16 * KiB, + at24c_eeprom_init_rom(o, pca954x_i2c_get_bus(i2c_mux, 1), 0x50, 16 * K= iB, lpdb_eeprom, lpdb_eeprom_len); =20 /* &i2c9 */ /* eeprom@50 */ - at24c_eeprom_init_rom(i2c[9], 0x50, 16 * KiB, + at24c_eeprom_init_rom(o, i2c[9], 0x50, 16 * KiB, scm_eeprom, scm_eeprom_len); /* eeprom@56 */ - at24c_eeprom_init_rom(i2c[9], 0x56, 8 * KiB, + at24c_eeprom_init_rom(o, i2c[9], 0x56, 8 * KiB, bsm_eeprom, bsm_eeprom_len); =20 /* &i2c10 */ @@ -301,7 +301,7 @@ static void anacapa_bmc_i2c_init(AspeedMachineState *bm= c) i2c_slave_create_simple(o, "gpio[*]", pca954x_i2c_get_bus(i2c_mux, 5), TYPE_PCA9552, 0x22); /* eeprom@52 */ - at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 5), 0x52, 32 * KiB, + at24c_eeprom_init_rom(o, pca954x_i2c_get_bus(i2c_mux, 5), 0x52, 32 * K= iB, rbb_eeprom, rbb_eeprom_len); =20 /* &i2c11 */ @@ -316,7 +316,7 @@ static void anacapa_bmc_i2c_init(AspeedMachineState *bm= c) i2c_slave_create_simple(o, "gpio[*]", pca954x_i2c_get_bus(i2c_mux, 5), TYPE_PCA9552, 0x22); /* eeprom@52 */ - at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 5), 0x52, 32 * KiB, + at24c_eeprom_init_rom(o, pca954x_i2c_get_bus(i2c_mux, 5), 0x52, 32 * K= iB, lbb_eeprom, lbb_eeprom_len); =20 /* &i2c13 */ @@ -329,7 +329,7 @@ static void anacapa_bmc_i2c_init(AspeedMachineState *bm= c) =20 /* i2c13mux ch4 */ /* eeprom@51 */ - at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 4), 0x51, 32 * KiB, + at24c_eeprom_init_rom(o, pca954x_i2c_get_bus(i2c_mux, 4), 0x51, 32 * K= iB, hpm_brd_id_eeprom, hpm_brd_id_eeprom_len); =20 /* i2c13mux ch7 */ diff --git a/hw/arm/aspeed_ast2600_bletchley.c b/hw/arm/aspeed_ast2600_blet= chley.c index 58f0bc89bd..a9ae61f864 100644 --- a/hw/arm/aspeed_ast2600_bletchley.c +++ b/hw/arm/aspeed_ast2600_bletchley.c @@ -46,13 +46,13 @@ static void bletchley_bmc_i2c_init(AspeedMachineState *= bmc) } =20 /* Bus 6 */ - at24c_eeprom_init(i2c[6], 0x56, 65536); + at24c_eeprom_init(OBJECT(bmc), i2c[6], 0x56, 65536); /* Missing model: nxp,pcf85263 @ 0x51 , but ds1338 works enough */ i2c_slave_create_simple(OBJECT(bmc), "rtc", i2c[6], "ds1338", 0x51); =20 =20 /* Bus 7 */ - at24c_eeprom_init(i2c[7], 0x54, 65536); + at24c_eeprom_init(OBJECT(bmc), i2c[7], 0x54, 65536); =20 /* Bus 9 */ i2c_slave_create_simple(OBJECT(bmc), "tmp421[*]", diff --git a/hw/arm/aspeed_ast2600_catalina.c b/hw/arm/aspeed_ast2600_catal= ina.c index 59fc0d2437..e33e40590d 100644 --- a/hw/arm/aspeed_ast2600_catalina.c +++ b/hw/arm/aspeed_ast2600_catalina.c @@ -484,7 +484,7 @@ static void catalina_bmc_i2c_init(AspeedMachineState *b= mc) i2c_slave_create_simple(o, "gpio[*]", pca954x_i2c_get_bus(i2c_mux, 1), TYPE_PCA9535, 0x20); /* eeprom@50 */ - at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 1), 0x50, 8 * KiB, + at24c_eeprom_init_rom(o, pca954x_i2c_get_bus(i2c_mux, 1), 0x50, 8 * Ki= B, gb200io_eeprom, gb200io_eeprom_len); =20 /* i2c-mux@73 (PCA9546) on i2c0 */ @@ -502,7 +502,7 @@ static void catalina_bmc_i2c_init(AspeedMachineState *b= mc) i2c_slave_create_simple(o, "gpio[*]", pca954x_i2c_get_bus(i2c_mux, 1), TYPE_PCA9535, 0x21); /* eeprom@50 */ - at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 1), 0x50, 8 * KiB, + at24c_eeprom_init_rom(o, pca954x_i2c_get_bus(i2c_mux, 1), 0x50, 8 * Ki= B, gb200io_eeprom, gb200io_eeprom_len); =20 /* i2c-mux@77 (PCA9546) on i2c0 */ @@ -526,7 +526,7 @@ static void catalina_bmc_i2c_init(AspeedMachineState *b= mc) =20 /* i2c1mux0ch5 */ /* eeprom@54 */ - at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 5), 0x54, 8 * KiB, + at24c_eeprom_init_rom(o, pca954x_i2c_get_bus(i2c_mux, 5), 0x54, 8 * Ki= B, pdb_eeprom, pdb_eeprom_len); /* tpm75@4f */ i2c_slave_create_simple(o, "tmp75[*]", pca954x_i2c_get_bus(i2c_mux, 5), @@ -540,12 +540,12 @@ static void catalina_bmc_i2c_init(AspeedMachineState = *bmc) i2c_slave_create_simple(o, "gpio[*]", pca954x_i2c_get_bus(i2c_mux, 6), TYPE_PCA9552, 0x25); /* eeprom@51 */ - at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 6), 0x51, 8 * KiB, + at24c_eeprom_init_rom(o, pca954x_i2c_get_bus(i2c_mux, 6), 0x51, 8 * Ki= B, osfp_eeprom, osfp_eeprom_len); =20 /* i2c1mux0ch7 */ /* eeprom@53 */ - at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 7), 0x53, 8 * KiB, + at24c_eeprom_init_rom(o, pca954x_i2c_get_bus(i2c_mux, 7), 0x53, 8 * Ki= B, fio_eeprom, fio_eeprom_len); /* temperature-sensor@4b - tmp75 */ i2c_slave_create_simple(o, "tmp75[*]", pca954x_i2c_get_bus(i2c_mux, 7), @@ -559,9 +559,9 @@ static void catalina_bmc_i2c_init(AspeedMachineState *b= mc) /* io_expander0 - pca9555@27 */ i2c_slave_create_simple(o, "gpio[*]", i2c[2], TYPE_PCA9552, 0x27); /* eeprom@50 */ - at24c_eeprom_init(i2c[2], 0x50, 8 * KiB); + at24c_eeprom_init(o, i2c[2], 0x50, 8 * KiB); /* eeprom@51 */ - at24c_eeprom_init(i2c[2], 0x51, 8 * KiB); + at24c_eeprom_init(o, i2c[2], 0x51, 8 * KiB); =20 /* &i2c5 */ /* i2c-mux@70 (PCA9548) on i2c5 */ @@ -569,7 +569,7 @@ static void catalina_bmc_i2c_init(AspeedMachineState *b= mc) TYPE_PCA9548, 0x70); /* i2c5mux0ch6 */ /* eeprom@52 */ - at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 6), 0x52, 8 * KiB, + at24c_eeprom_init_rom(o, pca954x_i2c_get_bus(i2c_mux, 6), 0x52, 8 * Ki= B, hdd_eeprom, hdd_eeprom_len); /* i2c5mux0ch7 */ /* ina230@40 - no model */ @@ -589,36 +589,36 @@ static void catalina_bmc_i2c_init(AspeedMachineState = *bmc) /* temperature-sensor@4b - tpm75 */ i2c_slave_create_simple(o, "tmp75[*]", i2c[9], TYPE_TMP75, 0x4b); /* eeprom@50 */ - at24c_eeprom_init_rom(i2c[9], 0x50, 8 * KiB, scm_eeprom, scm_eeprom_le= n); + at24c_eeprom_init_rom(o, i2c[9], 0x50, 8 * KiB, scm_eeprom, scm_eeprom= _len); /* eeprom@56 */ - at24c_eeprom_init_rom(i2c[9], 0x56, 8 * KiB, bsm_eeprom, bsm_eeprom_le= n); + at24c_eeprom_init_rom(o, i2c[9], 0x56, 8 * KiB, bsm_eeprom, bsm_eeprom= _len); =20 /* &i2c10 */ /* temperature-sensor@1f - tpm421 */ i2c_slave_create_simple(o, "tmp421[*]", i2c[10], TYPE_TMP421, 0x1f); /* eeprom@50 */ - at24c_eeprom_init_rom(i2c[10], 0x50, 8 * KiB, nic_eeprom, nic_eeprom_l= en); + at24c_eeprom_init_rom(o, i2c[10], 0x50, 8 * KiB, nic_eeprom, nic_eepro= m_len); =20 /* &i2c11 */ /* ssif-bmc@10 - no model */ =20 /* &i2c12 */ /* eeprom@50 */ - at24c_eeprom_init_rom(i2c[12], 0x50, 8 * KiB, + at24c_eeprom_init_rom(o, i2c[12], 0x50, 8 * KiB, gb200_eeprom, gb200_eeprom_len); /* eeprom@54 */ - at24c_eeprom_init_rom(i2c[12], 0x54, 256, + at24c_eeprom_init_rom(o, i2c[12], 0x54, 256, cable_eeprom, cable_eeprom_len); =20 /* &i2c13 */ /* eeprom@50 */ - at24c_eeprom_init_rom(i2c[13], 0x50, 8 * KiB, + at24c_eeprom_init_rom(o, i2c[13], 0x50, 8 * KiB, gb200_eeprom, gb200_eeprom_len); /* eeprom@54 */ - at24c_eeprom_init_rom(i2c[13], 0x54, 256, + at24c_eeprom_init_rom(o, i2c[13], 0x54, 256, cable_eeprom, cable_eeprom_len); /* eeprom@57 */ - at24c_eeprom_init_rom(i2c[13], 0x57, 256, hmc_eeprom, hmc_eeprom_len); + at24c_eeprom_init_rom(o, i2c[13], 0x57, 256, hmc_eeprom, hmc_eeprom_le= n); =20 /* &i2c14 */ /* io_expander9 - pca9555@10 */ @@ -638,7 +638,7 @@ static void catalina_bmc_i2c_init(AspeedMachineState *b= mc) /* temperature-sensor@1f - tmp421 */ i2c_slave_create_simple(o, "tmp421[*]", i2c[15], TYPE_TMP421, 0x1f); /* eeprom@52 */ - at24c_eeprom_init_rom(i2c[15], 0x52, 8 * KiB, nic_eeprom, nic_eeprom_l= en); + at24c_eeprom_init_rom(o, i2c[15], 0x52, 8 * KiB, nic_eeprom, nic_eepro= m_len); } =20 static void aspeed_machine_catalina_class_init(ObjectClass *oc, diff --git a/hw/arm/aspeed_ast2600_fby35.c b/hw/arm/aspeed_ast2600_fby35.c index dedc273ee3..d7bea13706 100644 --- a/hw/arm/aspeed_ast2600_fby35.c +++ b/hw/arm/aspeed_ast2600_fby35.c @@ -109,13 +109,13 @@ static void fby35_i2c_init(AspeedMachineState *bmc) i2c_slave_create_simple(OBJECT(bmc), "lm75[*]", i2c[12], TYPE_LM75, 0x= 4e); i2c_slave_create_simple(OBJECT(bmc), "lm75[*]", i2c[12], TYPE_LM75, 0x= 4f); =20 - at24c_eeprom_init(i2c[4], 0x51, 128 * KiB); - at24c_eeprom_init(i2c[6], 0x51, 128 * KiB); - at24c_eeprom_init_rom(i2c[8], 0x50, 32 * KiB, fby35_nic_fruid, + at24c_eeprom_init(OBJECT(bmc), i2c[4], 0x51, 128 * KiB); + at24c_eeprom_init(OBJECT(bmc), i2c[6], 0x51, 128 * KiB); + at24c_eeprom_init_rom(OBJECT(bmc), i2c[8], 0x50, 32 * KiB, fby35_nic_f= ruid, fby35_nic_fruid_len); - at24c_eeprom_init_rom(i2c[11], 0x51, 128 * KiB, fby35_bb_fruid, + at24c_eeprom_init_rom(OBJECT(bmc), i2c[11], 0x51, 128 * KiB, fby35_bb_= fruid, fby35_bb_fruid_len); - at24c_eeprom_init_rom(i2c[11], 0x54, 128 * KiB, fby35_bmc_fruid, + at24c_eeprom_init_rom(OBJECT(bmc), i2c[11], 0x54, 128 * KiB, fby35_bmc= _fruid, fby35_bmc_fruid_len); =20 /* diff --git a/hw/arm/aspeed_ast2600_fuji.c b/hw/arm/aspeed_ast2600_fuji.c index 1e681d0090..396bd6c8b7 100644 --- a/hw/arm/aspeed_ast2600_fuji.c +++ b/hw/arm/aspeed_ast2600_fuji.c @@ -66,45 +66,45 @@ static void fuji_bmc_i2c_init(AspeedMachineState *bmc) * EEPROM 24c64 size is 64Kbits or 8 Kbytes * 24c02 size is 2Kbits or 256 bytes */ - at24c_eeprom_init(i2c[19], 0x52, 8 * KiB); - at24c_eeprom_init(i2c[20], 0x50, 256); - at24c_eeprom_init(i2c[22], 0x52, 256); + at24c_eeprom_init(o, i2c[19], 0x52, 8 * KiB); + at24c_eeprom_init(o, i2c[20], 0x50, 256); + at24c_eeprom_init(o, i2c[22], 0x52, 256); =20 i2c_slave_create_simple(o, "lm75[*]", i2c[3], TYPE_LM75, 0x48); i2c_slave_create_simple(o, "lm75[*]", i2c[3], TYPE_LM75, 0x49); i2c_slave_create_simple(o, "lm75[*]", i2c[3], TYPE_LM75, 0x4a); i2c_slave_create_simple(o, "tmp422", i2c[3], TYPE_TMP422, 0x4c); =20 - at24c_eeprom_init(i2c[8], 0x51, 8 * KiB); + at24c_eeprom_init(o, i2c[8], 0x51, 8 * KiB); i2c_slave_create_simple(o, "lm75[*]", i2c[8], TYPE_LM75, 0x4a); =20 i2c_slave_create_simple(o, "lm75[*]", i2c[50], TYPE_LM75, 0x4c); - at24c_eeprom_init(i2c[50], 0x52, 8 * KiB); + at24c_eeprom_init(o, i2c[50], 0x52, 8 * KiB); i2c_slave_create_simple(o, "tmp75[*]", i2c[51], TYPE_TMP75, 0x48); i2c_slave_create_simple(o, "tmp75[*]", i2c[52], TYPE_TMP75, 0x49); =20 i2c_slave_create_simple(o, "tmp75[*]", i2c[59], TYPE_TMP75, 0x48); i2c_slave_create_simple(o, "tmp75[*]", i2c[60], TYPE_TMP75, 0x49); =20 - at24c_eeprom_init(i2c[65], 0x53, 8 * KiB); + at24c_eeprom_init(o, i2c[65], 0x53, 8 * KiB); i2c_slave_create_simple(o, "tmp75[*]", i2c[66], TYPE_TMP75, 0x49); i2c_slave_create_simple(o, "tmp75[*]", i2c[66], TYPE_TMP75, 0x48); - at24c_eeprom_init(i2c[68], 0x52, 8 * KiB); - at24c_eeprom_init(i2c[69], 0x52, 8 * KiB); - at24c_eeprom_init(i2c[70], 0x52, 8 * KiB); - at24c_eeprom_init(i2c[71], 0x52, 8 * KiB); + at24c_eeprom_init(o, i2c[68], 0x52, 8 * KiB); + at24c_eeprom_init(o, i2c[69], 0x52, 8 * KiB); + at24c_eeprom_init(o, i2c[70], 0x52, 8 * KiB); + at24c_eeprom_init(o, i2c[71], 0x52, 8 * KiB); =20 - at24c_eeprom_init(i2c[73], 0x53, 8 * KiB); + at24c_eeprom_init(o, i2c[73], 0x53, 8 * KiB); i2c_slave_create_simple(o, "tmp75[*]", i2c[74], TYPE_TMP75, 0x49); i2c_slave_create_simple(o, "tmp75[*]", i2c[74], TYPE_TMP75, 0x48); - at24c_eeprom_init(i2c[76], 0x52, 8 * KiB); - at24c_eeprom_init(i2c[77], 0x52, 8 * KiB); - at24c_eeprom_init(i2c[78], 0x52, 8 * KiB); - at24c_eeprom_init(i2c[79], 0x52, 8 * KiB); - at24c_eeprom_init(i2c[28], 0x50, 256); + at24c_eeprom_init(o, i2c[76], 0x52, 8 * KiB); + at24c_eeprom_init(o, i2c[77], 0x52, 8 * KiB); + at24c_eeprom_init(o, i2c[78], 0x52, 8 * KiB); + at24c_eeprom_init(o, i2c[79], 0x52, 8 * KiB); + at24c_eeprom_init(o, i2c[28], 0x50, 256); =20 for (int i =3D 0; i < 8; i++) { - at24c_eeprom_init(i2c[81 + i * 8], 0x56, 64 * KiB); + at24c_eeprom_init(o, i2c[81 + i * 8], 0x56, 64 * KiB); i2c_slave_create_simple(o, "tmp75[*]", i2c[82 + i * 8], TYPE_TMP75, 0x48); i2c_slave_create_simple(o, "tmp75[*]", i2c[83 + i * 8], diff --git a/hw/arm/aspeed_ast2600_gb200nvl.c b/hw/arm/aspeed_ast2600_gb200= nvl.c index 1cf35f96bd..357f30cf83 100644 --- a/hw/arm/aspeed_ast2600_gb200nvl.c +++ b/hw/arm/aspeed_ast2600_gb200nvl.c @@ -68,11 +68,11 @@ static void gb200nvl_bmc_i2c_init(AspeedMachineState *b= mc) object_property_set_str(OBJECT(dev), "pin1", "high", &error_fatal); =20 aspeed_create_pca9554(OBJECT(bmc), soc, 9, 0x21); - at24c_eeprom_init(i2c[9], 0x50, 64 * KiB); - at24c_eeprom_init(i2c[9], 0x51, 64 * KiB); + at24c_eeprom_init(OBJECT(bmc), i2c[9], 0x50, 64 * KiB); + at24c_eeprom_init(OBJECT(bmc), i2c[9], 0x51, 64 * KiB); =20 /* Bus 11 */ - at24c_eeprom_init_rom(i2c[10], 0x50, 256, gb200nvl_bmc_fruid, + at24c_eeprom_init_rom(OBJECT(bmc), i2c[10], 0x50, 256, gb200nvl_bmc_fr= uid, gb200nvl_bmc_fruid_len); } =20 diff --git a/hw/arm/aspeed_ast2600_rainier.c b/hw/arm/aspeed_ast2600_rainie= r.c index 2f5e3daf3b..4ec36e6129 100644 --- a/hw/arm/aspeed_ast2600_rainier.c +++ b/hw/arm/aspeed_ast2600_rainier.c @@ -69,7 +69,7 @@ static void rainier_bmc_i2c_init(AspeedMachineState *bmc) I2CSlave *i2c_mux; Object *o =3D OBJECT(bmc); =20 - at24c_eeprom_init(aspeed_i2c_get_bus(&soc->i2c, 0), 0x51, 32 * KiB); + at24c_eeprom_init(o, aspeed_i2c_get_bus(&soc->i2c, 0), 0x51, 32 * KiB); =20 aspeed_create_pca9552(OBJECT(bmc), soc, 3, 0x61); =20 @@ -86,9 +86,9 @@ static void rainier_bmc_i2c_init(AspeedMachineState *bmc) i2c_mux =3D i2c_slave_create_simple(o, "i2c-mux[*]", aspeed_i2c_get_bus(&soc->i2c, 4), "pca9546", 0x70); - at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 0), 0x50, 64 * KiB); - at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 1), 0x51, 64 * KiB); - at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 2), 0x52, 64 * KiB); + at24c_eeprom_init(o, pca954x_i2c_get_bus(i2c_mux, 0), 0x50, 64 * KiB); + at24c_eeprom_init(o, pca954x_i2c_get_bus(i2c_mux, 1), 0x51, 64 * KiB); + at24c_eeprom_init(o, pca954x_i2c_get_bus(i2c_mux, 2), 0x52, 64 * KiB); aspeed_create_pca9552(OBJECT(bmc), soc, 4, 0x60); =20 i2c_slave_create_simple(o, "tmp105[*]", @@ -102,8 +102,8 @@ static void rainier_bmc_i2c_init(AspeedMachineState *bm= c) i2c_mux =3D i2c_slave_create_simple(o, "i2c-mux[*]", aspeed_i2c_get_bus(&soc->i2c, 5), "pca9546", 0x70); - at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 0), 0x50, 64 * KiB); - at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 1), 0x51, 64 * KiB); + at24c_eeprom_init(o, pca954x_i2c_get_bus(i2c_mux, 0), 0x50, 64 * KiB); + at24c_eeprom_init(o, pca954x_i2c_get_bus(i2c_mux, 1), 0x51, 64 * KiB); =20 i2c_slave_create_simple(o, "tmp105[*]", aspeed_i2c_get_bus(&soc->i2c, 6), @@ -117,10 +117,10 @@ static void rainier_bmc_i2c_init(AspeedMachineState *= bmc) i2c_mux =3D i2c_slave_create_simple(o, "i2c-mux[*]", aspeed_i2c_get_bus(&soc->i2c, 6), "pca9546", 0x70); - at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 0), 0x50, 64 * KiB); - at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 1), 0x51, 64 * KiB); - at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 2), 0x50, 64 * KiB); - at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 3), 0x51, 64 * KiB); + at24c_eeprom_init(o, pca954x_i2c_get_bus(i2c_mux, 0), 0x50, 64 * KiB); + at24c_eeprom_init(o, pca954x_i2c_get_bus(i2c_mux, 1), 0x51, 64 * KiB); + at24c_eeprom_init(o, pca954x_i2c_get_bus(i2c_mux, 2), 0x50, 64 * KiB); + at24c_eeprom_init(o, pca954x_i2c_get_bus(i2c_mux, 3), 0x51, 64 * KiB); =20 aspeed_create_pca9552(OBJECT(bmc), soc, 7, 0x30); aspeed_create_pca9552(OBJECT(bmc), soc, 7, 0x31); @@ -138,8 +138,8 @@ static void rainier_bmc_i2c_init(AspeedMachineState *bm= c) i2c_slave_create_simple(o, "max31785", aspeed_i2c_get_bus(&soc->i2c, 7), "max31785", 0x52); - at24c_eeprom_init(aspeed_i2c_get_bus(&soc->i2c, 7), 0x50, 64 * KiB); - at24c_eeprom_init(aspeed_i2c_get_bus(&soc->i2c, 7), 0x51, 64 * KiB); + at24c_eeprom_init(o, aspeed_i2c_get_bus(&soc->i2c, 7), 0x50, 64 * KiB); + at24c_eeprom_init(o, aspeed_i2c_get_bus(&soc->i2c, 7), 0x51, 64 * KiB); =20 i2c_slave_create_simple(o, "tmp105[*]", aspeed_i2c_get_bus(&soc->i2c, 8), @@ -147,9 +147,9 @@ static void rainier_bmc_i2c_init(AspeedMachineState *bm= c) i2c_slave_create_simple(o, "tmp105[*]", aspeed_i2c_get_bus(&soc->i2c, 8), TYPE_TMP105, 0x4a); - at24c_eeprom_init_rom(aspeed_i2c_get_bus(&soc->i2c, 8), 0x50, + at24c_eeprom_init_rom(o, aspeed_i2c_get_bus(&soc->i2c, 8), 0x50, 64 * KiB, rainier_bb_fruid, rainier_bb_fruid_len= ); - at24c_eeprom_init_rom(aspeed_i2c_get_bus(&soc->i2c, 8), 0x51, + at24c_eeprom_init_rom(o, aspeed_i2c_get_bus(&soc->i2c, 8), 0x51, 64 * KiB, rainier_bmc_fruid, rainier_bmc_fruid_l= en); aspeed_create_pca9552(OBJECT(bmc), soc, 8, 0x60); aspeed_create_pca9552(OBJECT(bmc), soc, 8, 0x61); @@ -163,7 +163,7 @@ static void rainier_bmc_i2c_init(AspeedMachineState *bm= c) i2c_slave_create_simple(o, "tmp423[*]", aspeed_i2c_get_bus(&soc->i2c, 9), "tmp423", 0x4d); - at24c_eeprom_init(aspeed_i2c_get_bus(&soc->i2c, 9), 0x50, 128 * KiB); + at24c_eeprom_init(o, aspeed_i2c_get_bus(&soc->i2c, 9), 0x50, 128 * KiB= ); =20 i2c_slave_create_simple(o, "tmp423[*]", aspeed_i2c_get_bus(&soc->i2c, 10), @@ -171,7 +171,7 @@ static void rainier_bmc_i2c_init(AspeedMachineState *bm= c) i2c_slave_create_simple(o, "tmp423[*]", aspeed_i2c_get_bus(&soc->i2c, 10), "tmp423", 0x4d); - at24c_eeprom_init(aspeed_i2c_get_bus(&soc->i2c, 10), 0x50, 128 * KiB); + at24c_eeprom_init(o, aspeed_i2c_get_bus(&soc->i2c, 10), 0x50, 128 * Ki= B); =20 i2c_slave_create_simple(o, "tmp105[*]", aspeed_i2c_get_bus(&soc->i2c, 11), @@ -182,18 +182,18 @@ static void rainier_bmc_i2c_init(AspeedMachineState *= bmc) i2c_mux =3D i2c_slave_create_simple(o, "i2c-mux[*]", aspeed_i2c_get_bus(&soc->i2c, 11), "pca9546", 0x70); - at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 0), 0x50, 64 * KiB); - at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 1), 0x51, 64 * KiB); + at24c_eeprom_init(o, pca954x_i2c_get_bus(i2c_mux, 0), 0x50, 64 * KiB); + at24c_eeprom_init(o, pca954x_i2c_get_bus(i2c_mux, 1), 0x51, 64 * KiB); aspeed_create_pca9552(OBJECT(bmc), soc, 11, 0x60); =20 =20 - at24c_eeprom_init(aspeed_i2c_get_bus(&soc->i2c, 13), 0x50, 64 * KiB); + at24c_eeprom_init(o, aspeed_i2c_get_bus(&soc->i2c, 13), 0x50, 64 * KiB= ); aspeed_create_pca9552(OBJECT(bmc), soc, 13, 0x60); =20 - at24c_eeprom_init(aspeed_i2c_get_bus(&soc->i2c, 14), 0x50, 64 * KiB); + at24c_eeprom_init(o, aspeed_i2c_get_bus(&soc->i2c, 14), 0x50, 64 * KiB= ); aspeed_create_pca9552(OBJECT(bmc), soc, 14, 0x60); =20 - at24c_eeprom_init(aspeed_i2c_get_bus(&soc->i2c, 15), 0x50, 64 * KiB); + at24c_eeprom_init(o, aspeed_i2c_get_bus(&soc->i2c, 15), 0x50, 64 * KiB= ); aspeed_create_pca9552(OBJECT(bmc), soc, 15, 0x60); } =20 diff --git a/hw/arm/npcm7xx_boards.c b/hw/arm/npcm7xx_boards.c index 778ef0f232..1862d0d007 100644 --- a/hw/arm/npcm7xx_boards.c +++ b/hw/arm/npcm7xx_boards.c @@ -248,8 +248,8 @@ static void quanta_gsj_i2c_init(Object *parent, NPCM7xx= State *soc) i2c_slave_create_simple(parent, "tmp105[*]", npcm7xx_i2c_get_bus(soc, 4), "tmp105", 0x5c); =20 - at24c_eeprom_init(npcm7xx_i2c_get_bus(soc, 9), 0x55, 8192); - at24c_eeprom_init(npcm7xx_i2c_get_bus(soc, 10), 0x55, 8192); + at24c_eeprom_init(parent, npcm7xx_i2c_get_bus(soc, 9), 0x55, 8192); + at24c_eeprom_init(parent, npcm7xx_i2c_get_bus(soc, 10), 0x55, 8192); =20 /* * i2c-11: @@ -363,7 +363,7 @@ static void kudo_bmc_i2c_init(Object *parent, NPCM7xxSt= ate *soc) i2c_slave_create_simple(parent, "pca9548[*]", npcm7xx_i2c_get_bus(soc, 4), TYPE_PCA9548, 0x7= 7); =20 - at24c_eeprom_init(npcm7xx_i2c_get_bus(soc, 4), 0x50, 8192); /* mbfru */ + at24c_eeprom_init(parent, npcm7xx_i2c_get_bus(soc, 4), 0x50, 8192); /*= mbfru */ =20 i2c_mux =3D i2c_slave_create_simple(parent, "pca9548[*]", npcm7xx_i2c_get_bus(soc, 13), @@ -379,7 +379,7 @@ static void kudo_bmc_i2c_init(Object *parent, NPCM7xxSt= ate *soc) i2c_slave_create_simple(parent, "tmp105[*]", pca954x_i2c_get_bus(i2c_mux, 5), "tmp105", 0x4= 9); =20 - at24c_eeprom_init(npcm7xx_i2c_get_bus(soc, 14), 0x55, 8192); /* bmcfru= */ + at24c_eeprom_init(parent, npcm7xx_i2c_get_bus(soc, 14), 0x55, 8192); /= * bmcfru */ =20 /* TODO: Add remaining i2c devices. */ } diff --git a/hw/nvram/eeprom_at24c.c b/hw/nvram/eeprom_at24c.c index b6d314447c..036955feee 100644 --- a/hw/nvram/eeprom_at24c.c +++ b/hw/nvram/eeprom_at24c.c @@ -138,17 +138,19 @@ int at24c_eeprom_send(I2CSlave *s, uint8_t data) return 0; } =20 -I2CSlave *at24c_eeprom_init(I2CBus *bus, uint8_t address, uint32_t rom_siz= e) +I2CSlave *at24c_eeprom_init(Object *parent, I2CBus *bus, uint8_t address, + uint32_t rom_size) { - return at24c_eeprom_init_rom(bus, address, rom_size, NULL, 0); + return at24c_eeprom_init_rom(parent, bus, address, rom_size, NULL, 0); } =20 -I2CSlave *at24c_eeprom_init_rom(I2CBus *bus, uint8_t address, uint32_t rom= _size, +I2CSlave *at24c_eeprom_init_rom(Object *parent, I2CBus *bus, uint8_t addre= ss, + uint32_t rom_size, const uint8_t *init_rom, uint32_t init_rom= _size) { EEPROMState *s; =20 - s =3D AT24C_EE(i2c_slave_new_orphan(TYPE_AT24C_EE, address)); + s =3D AT24C_EE(i2c_slave_new(parent, "eeprom[*]", TYPE_AT24C_EE, addre= ss)); =20 qdev_prop_set_uint32(DEVICE(s), "rom-size", rom_size); =20 @@ -156,7 +158,7 @@ I2CSlave *at24c_eeprom_init_rom(I2CBus *bus, uint8_t ad= dress, uint32_t rom_size, s->init_rom =3D init_rom; s->init_rom_size =3D init_rom_size; =20 - i2c_slave_realize_and_unref(I2C_SLAVE(s), bus, &error_abort); + qdev_realize(DEVICE(s), BUS(bus), &error_abort); =20 return I2C_SLAVE(s); } diff --git a/include/hw/nvram/eeprom_at24c.h b/include/hw/nvram/eeprom_at24= c.h index acb9857b2a..6686c7ff46 100644 --- a/include/hw/nvram/eeprom_at24c.h +++ b/include/hw/nvram/eeprom_at24c.h @@ -18,7 +18,8 @@ * Create the device state structure, initialize it, put it on the specifi= ed * @bus, and drop the reference to it (the device is realized). */ -I2CSlave *at24c_eeprom_init(I2CBus *bus, uint8_t address, uint32_t rom_siz= e); +I2CSlave *at24c_eeprom_init(Object *parent, I2CBus *bus, uint8_t address, + uint32_t rom_size); =20 =20 /* @@ -33,7 +34,8 @@ I2CSlave *at24c_eeprom_init(I2CBus *bus, uint8_t address,= uint32_t rom_size); * @bus, and drop the reference to it (the device is realized). Copies the= data * from @init_rom to the beginning of the EEPROM memory buffer. */ -I2CSlave *at24c_eeprom_init_rom(I2CBus *bus, uint8_t address, uint32_t rom= _size, +I2CSlave *at24c_eeprom_init_rom(Object *parent, I2CBus *bus, uint8_t addre= ss, + uint32_t rom_size, const uint8_t *init_rom, uint32_t init_rom= _size); =20 #endif --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411898; cv=none; d=zohomail.com; s=zohoarc; b=mfBT+/GeV8RwjzAlBiAZ9GY9hSbknxGwYBxK9Xl8Pnm+4dNcsKCDelMk0dKe2OOrQATGjwYxhqnkpopvqLszTRoXyUKKPqIu1CD0WdhCgDanMYwD/pZH4lfWDsLLhVcb1o12LIb/mPMqSIwyHsWbEJA6E5PHtdNE9knJlvHftfc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411898; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=gxHiNKurvgM4dPIgEMtro+SGuzHoQRrOCrlzVC5BtiU=; b=SbQVYJFfBneKmMp7nJ7kiQAQO9bZ+3rUGC0eLNHOxGwSzLke8NTaj7oqmsSgub9lfV4DOM9X2YG3VgKs4xamVdzmMuZM4+f53GpxTyZ4ORfbmkQJV/37hw07iiOxEZu2XMzcny2PUFhURFICPP1Cvh5xMoIGxJM1CSojvgbiSXM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411898626503.8412543481164; Sat, 18 Jul 2026 14:58:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlD2z-00024U-LE; Sat, 18 Jul 2026 17:58:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD2x-0001vH-9y; Sat, 18 Jul 2026 17:58:11 -0400 Received: from pdx-out-011.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.35.192.45]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD2v-0004ks-Hs; Sat, 18 Jul 2026 17:58:11 -0400 Received: from ip-10-5-0-115.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.0.115]) by internal-pdx-out-011.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:58:05 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.53:21600] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.41.246:2525] with esmtp (Farcaster) id a72cc95d-0d95-4d53-98dd-9674fbdaea9d; Sat, 18 Jul 2026 21:58:04 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC001.ant.amazon.com (10.250.64.174) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:58:04 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:57:55 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411889; x=1815947889; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=gxHiNKurvgM4dPIgEMtro+SGuzHoQRrOCrlzVC5BtiU=; b=Dzjwd6XqcuKekHxeU54Wcqm3B+ztHDnKKPXPSlKlmen1sf0GZW1q0Fka Qegtyhr3VWf715TqiXnxR9BCjnL/pj6VlIJl+Dt0DkJDS//5ViFARg3p/ duRMdoTKjaropfd95cHTTkJncWlyQEUchjt4qszXEw3XZdjbiAl+UpEdx DKkXY+4ThgxkjXD0BYC3gdHOnhURCVsfJptkKHRjPVAKtS20boHtF/RIl AyfxrIByIhmqA8/VFClZTVHwUHvoTJ1KEgvYEGUTF55z+si/nzCwQeKXx Ila7EoT/ZlLWBn29YdT2iDz39mPfJg+CIZ/Tynnx0cyz5EhxtKyFhkvRm A==; X-CSE-ConnectionGUID: r5Z3sCasQUGBVDIyDY4wdg== X-CSE-MsgGUID: Q/C3CAgsScCr5iEWiKj7og== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23694566" X-Farcaster-Flow-ID: a72cc95d-0d95-4d53-98dd-9674fbdaea9d From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 075/137] hw/i386/pc: Give pcspk a QOM parent Date: Sat, 18 Jul 2026 21:35:50 +0000 Message-ID: <20260718213652.37673-76-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D043UWC003.ant.amazon.com (10.13.139.240) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.35.192.45; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-011.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411898956158500 pcspk was created in pc_machine_initfn() as an orphan and manually unref'd in pc_machine_finalize() when the machine was never realized (e.g. -M pc,help). Making it a child<> of the machine at creation time lets the QOM property teardown in object_property_del_all() handle that lifecycle for free, so pc_machine_finalize() and its open-coded refcount juggling can go. The realize path switches from isa_realize_and_unref() to plain qdev_realize() because the reference is now held by the parent's child<> property, not the caller. Reviewed-by: Philippe Mathieu-Daud=C3=A9 AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/i386/pc.c | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/hw/i386/pc.c b/hw/i386/pc.c index 0c89310ab7..a00d53b582 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -1128,7 +1128,7 @@ void pc_basic_device_init(struct PCMachineState *pcms, } object_property_set_link(OBJECT(pcms->pcspk), "pit", OBJECT(pit), &error_fatal); - isa_realize_and_unref(pcms->pcspk, isa_bus, &error_fatal); + qdev_realize(DEVICE(pcms->pcspk), BUS(isa_bus), &error_fatal); } =20 if (pcms->vmport =3D=3D ON_OFF_AUTO_AUTO) { @@ -1640,7 +1640,7 @@ static void pc_machine_initfn(Object *obj) pcms->default_bus_bypass_iommu =3D false; =20 pc_system_flash_create(pcms); - pcms->pcspk =3D isa_new_orphan(TYPE_PC_SPEAKER); + pcms->pcspk =3D isa_new(obj, "pcspk", TYPE_PC_SPEAKER); object_property_add_alias(OBJECT(pcms), "pcspk-audiodev", OBJECT(pcms->pcspk), "audiodev"); if (pcmc->pci_enabled) { @@ -1648,15 +1648,6 @@ static void pc_machine_initfn(Object *obj) } } =20 -static void pc_machine_finalize(Object *obj) -{ - PCMachineState *pcms =3D PC_MACHINE(obj); - - if (pcms->pcspk && !qdev_is_realized(DEVICE(pcms->pcspk))) { - object_unref(OBJECT(pcms->pcspk)); - } -} - static void pc_machine_reset(MachineState *machine, ResetType type) { CPUState *cs; @@ -1795,7 +1786,6 @@ static const TypeInfo pc_machine_info =3D { .abstract =3D true, .instance_size =3D sizeof(PCMachineState), .instance_init =3D pc_machine_initfn, - .instance_finalize =3D pc_machine_finalize, .class_size =3D sizeof(PCMachineClass), .class_init =3D pc_machine_class_init, .interfaces =3D (const InterfaceInfo[]) { --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411914; cv=none; d=zohomail.com; s=zohoarc; b=LSSGQBuyaLB0ujSeW8RunxxC7eNEowB5AFDWsh/PXMnPUkt2OmQTUE6dNF94pB5gnlmA+ELasa1PoKFkW5cMgYFK6zF7K+Qe0OQMGKgaxXQ8Qy+zfpjTH+m7eg80zTwBU3xroaFM/QjaFcBsqoqc2MSoy4IwcTpdR/5WI/IHnlQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411914; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=cOM34gniRP3oMk0fbihyw0r83H/PRYSC/L2cazxn2B4=; b=fj4abXaA4M7tquGSJzq8T1QkGCYdimDzHq7ucdaqlgLA0QtS2mKMovYflQ9A2acqlvVyLQiRheGPkmJX3VBLc2EYZc0njYNXr5RDDoHOV+itnG75DbW4Cx+BUWdw40EcFaBMK4q3/N2CqCGv35WzeW3ktmTxPIs0OXAd/qe9Q4Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411914504580.7620252494656; Sat, 18 Jul 2026 14:58:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlD39-0002d8-Dw; Sat, 18 Jul 2026 17:58:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD36-0002XO-Vu; Sat, 18 Jul 2026 17:58:21 -0400 Received: from pdx-out-007.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.34.181.151]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD34-0004lo-Nw; Sat, 18 Jul 2026 17:58:20 -0400 Received: from ip-10-5-12-219.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.12.219]) by internal-pdx-out-007.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:58:14 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.111:24713] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.29.147:2525] with esmtp (Farcaster) id 8238088b-50bb-4576-acf5-00b51b9259c3; Sat, 18 Jul 2026 21:58:14 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB002.ant.amazon.com (10.250.64.231) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:58:14 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:58:04 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411898; x=1815947898; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=cOM34gniRP3oMk0fbihyw0r83H/PRYSC/L2cazxn2B4=; b=Ir2oktWNGrGh8EoXfiNDwfpgQy/dKch2Y+H/zXLYcnDJhSRJDIPt5CRp ICxrl6lhi/yG6iLJeBTVYO2AOMs+Zb6ATtytx/cXOtfhP9DVJN19VeHsa ARTKZPzHNXL7EyxvWfgzpYQ/1Fw9e1lfJX/31XLAu/xd2KpjjtIoJu/rc 4Gn3ynH/lEQp+6eC+51MMxrEOit5yGrztAHga4LRm81A2Js+l7JtGM5wl MCKjbHw+oAJ4VMGoEizUDyZs1tqlnB/eKX/fsqSBN/T2r6TomwrqSoSgC wuhY4/gZc7Z5eWY9I4PPPnJnRr9EIdFUtzWA4+YKWj5GNTiD5IYK4s4W7 g==; X-CSE-ConnectionGUID: q9jHp6BjQRSsBQj23rT0kQ== X-CSE-MsgGUID: y8bjsUltTpmyDf5ZdeGmFQ== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23910729" X-Farcaster-Flow-ID: 8238088b-50bb-4576-acf5-00b51b9259c3 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 076/137] hw/timer, hw/net: Give i8254 and isa-ne2000 helpers a QOM parent Date: Sat, 18 Jul 2026 21:35:51 +0000 Message-ID: <20260718213652.37673-77-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D043UWC003.ant.amazon.com (10.13.139.240) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.34.181.151; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-007.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.01, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411915197158500 Content-Type: text/plain; charset="utf-8" The i8254_pit_init(), kvm_pit_init() and isa_ne2000_init() inline helpers still created their ISA device as an orphan. Thread an Object *parent through and switch to isa_new()/isa_try_new() with qdev_realize(). While at it, drop the dead vmport_init() inline: it has had no callers since vmmouse got a proper board-level creator, and it was the last user of isa_create_simple_orphan() outside the ISA layer itself. Callers pick the composition-tree owner: hw/i386/pc.c pcms (board) hw/i386/microvm.c mms (board) hw/isa/piix.c d (south-bridge realize) hw/isa/i82378.c dev (bridge realize) hw/isa/vt82c686.c d (super-io realize) hw/mips/jazz.c machine (board) AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/i386/microvm.c | 4 ++-- hw/i386/pc.c | 6 +++--- hw/isa/i82378.c | 2 +- hw/isa/piix.c | 2 +- hw/isa/vt82c686.c | 2 +- hw/mips/jazz.c | 2 +- include/hw/i386/vmport.h | 5 ----- include/hw/net/ne2000-isa.h | 8 ++++---- include/hw/timer/i8254.h | 13 +++++++------ 9 files changed, 20 insertions(+), 24 deletions(-) diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c index d701672c1a..8c61106516 100644 --- a/hw/i386/microvm.c +++ b/hw/i386/microvm.c @@ -261,9 +261,9 @@ static void microvm_devices_init(MicrovmMachineState *m= ms) =20 if (x86ms->pit =3D=3D ON_OFF_AUTO_ON || x86ms->pit =3D=3D ON_OFF_AUTO_= AUTO) { if (kvm_pit_in_kernel()) { - kvm_pit_init(isa_bus, 0x40); + kvm_pit_init(OBJECT(mms), isa_bus, 0x40); } else { - i8254_pit_init(isa_bus, 0x40, 0, NULL); + i8254_pit_init(OBJECT(mms), isa_bus, 0x40, 0, NULL); } } =20 diff --git a/hw/i386/pc.c b/hw/i386/pc.c index a00d53b582..e505391985 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -505,7 +505,7 @@ static gboolean pc_init_ne2k_isa(ISABus *bus, NICInfo *= nd, Error **errp) "maximum number of ISA NE2000 devices exceeded"); return false; } - isa_ne2000_init(bus, ne2000_io[nb_ne2k], + isa_ne2000_init(qdev_get_machine(), bus, ne2000_io[nb_ne2k], ne2000_irq[nb_ne2k], nd); nb_ne2k++; return true; @@ -1118,9 +1118,9 @@ void pc_basic_device_init(struct PCMachineState *pcms, if (!xen_enabled() && (x86ms->pit =3D=3D ON_OFF_AUTO_AUTO || x86ms->pit =3D=3D ON_OFF_AU= TO_ON)) { if (kvm_pit_in_kernel()) { - pit =3D kvm_pit_init(isa_bus, 0x40); + pit =3D kvm_pit_init(OBJECT(pcms), isa_bus, 0x40); } else { - pit =3D i8254_pit_init(isa_bus, 0x40, pit_isa_irq, pit_alt_irq= ); + pit =3D i8254_pit_init(OBJECT(pcms), isa_bus, 0x40, pit_isa_ir= q, pit_alt_irq); } if (hpet) { /* connect PIT to output control line of the HPET */ diff --git a/hw/isa/i82378.c b/hw/isa/i82378.c index 1c0a6ad779..995d1eaa53 100644 --- a/hw/isa/i82378.c +++ b/hw/isa/i82378.c @@ -100,7 +100,7 @@ static void i82378_realize(PCIDevice *pci, Error **errp) isa_bus_register_input_irqs(isabus, s->isa_irqs_in); =20 /* 1 82C54 (pit) */ - pit =3D i8254_pit_init(isabus, 0x40, 0, NULL); + pit =3D i8254_pit_init(OBJECT(dev), isabus, 0x40, 0, NULL); =20 /* speaker */ pcspk =3D isa_new(OBJECT(s), "pcspk", TYPE_PC_SPEAKER); diff --git a/hw/isa/piix.c b/hw/isa/piix.c index 6b2946d82c..d96bc3a873 100644 --- a/hw/isa/piix.c +++ b/hw/isa/piix.c @@ -334,7 +334,7 @@ static void pci_piix_realize(PCIDevice *dev, const char= *uhci_type, =20 /* PIT */ if (d->has_pit) { - i8254_pit_init(isa_bus, 0x40, 0, NULL); + i8254_pit_init(OBJECT(d), isa_bus, 0x40, 0, NULL); } =20 i8257_dma_init(OBJECT(dev), isa_bus, 0); diff --git a/hw/isa/vt82c686.c b/hw/isa/vt82c686.c index de9006bd95..2337c3115b 100644 --- a/hw/isa/vt82c686.c +++ b/hw/isa/vt82c686.c @@ -732,7 +732,7 @@ static void via_isa_realize(PCIDevice *d, Error **errp) =20 s->isa_irqs_in =3D i8259_init(OBJECT(d), isa_bus, &s->i8259_irq); isa_bus_register_input_irqs(isa_bus, s->isa_irqs_in); - i8254_pit_init(isa_bus, 0x40, 0, NULL); + i8254_pit_init(OBJECT(d), isa_bus, 0x40, 0, NULL); i8257_dma_init(OBJECT(d), isa_bus, 0); =20 /* RTC */ diff --git a/hw/mips/jazz.c b/hw/mips/jazz.c index 208e59fbeb..23d717d96a 100644 --- a/hw/mips/jazz.c +++ b/hw/mips/jazz.c @@ -289,7 +289,7 @@ static void mips_jazz_init(MachineState *machine, i8259 =3D i8259_init(OBJECT(machine), isa_bus, env->irq[4]); isa_bus_register_input_irqs(isa_bus, i8259); i8257_dma_init(OBJECT(rc4030), isa_bus, 0); - pit =3D i8254_pit_init(isa_bus, 0x40, 0, NULL); + pit =3D i8254_pit_init(OBJECT(machine), isa_bus, 0x40, 0, NULL); pcspk =3D isa_new(OBJECT(machine), "pcspk", TYPE_PC_SPEAKER); object_property_set_link(OBJECT(pcspk), "pit", OBJECT(pit), &error_fat= al); qdev_realize(DEVICE(pcspk), BUS(isa_bus), &error_fatal); diff --git a/include/hw/i386/vmport.h b/include/hw/i386/vmport.h index 22dd3645d2..02e422029d 100644 --- a/include/hw/i386/vmport.h +++ b/include/hw/i386/vmport.h @@ -18,11 +18,6 @@ typedef enum { VMPORT_ENTRIES } VMPortCommand; =20 -static inline void vmport_init(ISABus *bus) -{ - isa_create_simple_orphan(bus, TYPE_VMPORT); -} - void vmport_register(VMPortCommand command, VMPortReadFunc *func, void *op= aque); =20 #endif diff --git a/include/hw/net/ne2000-isa.h b/include/hw/net/ne2000-isa.h index ef8b3334d7..f504a03db7 100644 --- a/include/hw/net/ne2000-isa.h +++ b/include/hw/net/ne2000-isa.h @@ -17,19 +17,19 @@ =20 #define TYPE_ISA_NE2000 "ne2k_isa" =20 -static inline ISADevice *isa_ne2000_init(ISABus *bus, int base, int irq, - NICInfo *nd) +static inline ISADevice *isa_ne2000_init(Object *parent, ISABus *bus, + int base, int irq, NICInfo *nd) { ISADevice *d; =20 - d =3D isa_try_new_orphan(TYPE_ISA_NE2000); + d =3D isa_try_new(parent, "ne2k[*]", TYPE_ISA_NE2000); if (d) { DeviceState *dev =3D DEVICE(d); =20 qdev_prop_set_uint32(dev, "iobase", base); qdev_prop_set_uint32(dev, "irq", irq); qdev_set_nic_properties(dev, nd); - isa_realize_and_unref(d, bus, &error_fatal); + qdev_realize(dev, BUS(bus), &error_fatal); } return d; } diff --git a/include/hw/timer/i8254.h b/include/hw/timer/i8254.h index 38f896063e..b7bc98b688 100644 --- a/include/hw/timer/i8254.h +++ b/include/hw/timer/i8254.h @@ -45,16 +45,17 @@ OBJECT_DECLARE_TYPE(PITCommonState, PITCommonClass, PIT= _COMMON) #define TYPE_I8254 "isa-pit" #define TYPE_KVM_I8254 "kvm-pit" =20 -static inline ISADevice *i8254_pit_init(ISABus *bus, int base, int isa_irq, +static inline ISADevice *i8254_pit_init(Object *parent, ISABus *bus, + int base, int isa_irq, qemu_irq alt_irq) { DeviceState *dev; ISADevice *d; =20 - d =3D isa_new_orphan(TYPE_I8254); + d =3D isa_new(parent, "pit[*]", TYPE_I8254); dev =3D DEVICE(d); qdev_prop_set_uint32(dev, "iobase", base); - isa_realize_and_unref(d, bus, &error_fatal); + qdev_realize(dev, BUS(bus), &error_fatal); qdev_connect_gpio_out(dev, 0, isa_irq >=3D 0 ? isa_bus_get_irq(bus, isa_irq) : alt_irq); @@ -62,15 +63,15 @@ static inline ISADevice *i8254_pit_init(ISABus *bus, in= t base, int isa_irq, return d; } =20 -static inline ISADevice *kvm_pit_init(ISABus *bus, int base) +static inline ISADevice *kvm_pit_init(Object *parent, ISABus *bus, int bas= e) { DeviceState *dev; ISADevice *d; =20 - d =3D isa_new_orphan(TYPE_KVM_I8254); + d =3D isa_new(parent, "pit[*]", TYPE_KVM_I8254); dev =3D DEVICE(d); qdev_prop_set_uint32(dev, "iobase", base); - isa_realize_and_unref(d, bus, &error_fatal); + qdev_realize(dev, BUS(bus), &error_fatal); =20 return d; } --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411923; cv=none; d=zohomail.com; s=zohoarc; b=nnAaMWl/RMB2uWet4fIBYheT2SIuCPnksocf6iR50gfwqMRRX8yr8OpaqKkZshfDOPEI1lPsODDdQpnbvTKr/s2+SpfgoLcD8WISVxfxKuguu6nKmZ2EkdcWmx0CpyWtntJnovNiByJIXqWex1jcMurLWB9XsP1e8G7uNdjPkWM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411923; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Ebcd7WqkKmtnKQS6szp08fKMgmlqMo1enH2NE0lisY8=; b=crrS4Zr+6nr4EQfT4JMpSk4xeqDcOvE5yBG68umv1XiUYEEAhHtXs+caQJlyHn2qtP3BsGnednZI1wNfMoR8X0dwP/ofH7KIpWFROSxepBfxnwtoqQzEnWeDDFxE89C3vlUP020L/4UFAxOcOeudk3cOn/jf7VDxZRtcjBRkj40= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411923543246.9910926698725; Sat, 18 Jul 2026 14:58:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlD3P-00039Z-08; Sat, 18 Jul 2026 17:58:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD3J-0002zl-P7; Sat, 18 Jul 2026 17:58:35 -0400 Received: from pdx-out-004.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.246.77.92]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD3E-0004mr-Fw; Sat, 18 Jul 2026 17:58:33 -0400 Received: from ip-10-5-12-219.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.12.219]) by internal-pdx-out-004.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:58:24 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.234:9693] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.48.250:2525] with esmtp (Farcaster) id 7519f9d8-c9a5-4f96-a9a6-5d9afbfa1e7b; Sat, 18 Jul 2026 21:58:24 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA002.ant.amazon.com (10.250.64.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:58:24 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:58:14 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411908; x=1815947908; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Ebcd7WqkKmtnKQS6szp08fKMgmlqMo1enH2NE0lisY8=; b=WMBldoEatNU0/dX3fus898hnjEGxeTHOhyd+V/9gjIqfSiJ/fcJyTp+w CGKWbSnzNHav7Jq/f4NXCsU7fdnBGS90lRhwOTWqHPJfE2PQD5kGwcy1F i7akoTw9btY5cKe5Nb6qP3/s6/BTyCr8DoMgm/m7UyCMiSxClrLS7lg+m Kvix3zVpWkj3UHVcASAjeJxjYFZY3LZOrVSvQfB5tDFDTpAH5328j7yML hTaVg6dXpB1O9SHGCnbevDnr97YUpjmmJexGHNqAI+nQ0PMQH/gC8xrgp OSU2MhEIA+j+Wz6uVda7CUOdWUXS3PFjaP4NOrM9qx6Rav7GZYYV33Kn/ Q==; X-CSE-ConnectionGUID: zUa3SqKTRYuPxX6aLhI5Ag== X-CSE-MsgGUID: 7u4HRjgtRauDJU1n08KwGw== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23917558" X-Farcaster-Flow-ID: 7519f9d8-c9a5-4f96-a9a6-5d9afbfa1e7b From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 077/137] hw/misc/unimp: Give create_unimplemented_device() a QOM parent Date: Sat, 18 Jul 2026 21:35:52 +0000 Message-ID: <20260718213652.37673-78-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D043UWC003.ant.amazon.com (10.13.139.240) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.246.77.92; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-004.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411925338158500 Content-Type: text/plain; charset="utf-8" Every one of the ~500 call sites already sits inside a SoC .realize() or a board .init() where the natural composition-tree owner is in scope. Thread that owner through as the first argument, reuse the existing @name string as the child<> id, and switch the internal qdev_new_orphan()+sysbus_realize_and_unref() pair to the parented qdev_new()+sysbus_realize(). Parent expression per caller class: *_realize(DeviceState *dev, ...) OBJECT(dev) *_soc_realize(DeviceState *dev_soc,) OBJECT(dev_soc) board_init(MachineState *machine) OBJECT(machine) / OBJECT(ms) etc. No behavioural change: the low-priority overlap mapping still lets real device models take precedence. All 20 softmmu targets build. AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/arm/allwinner-a10.c | 2 +- hw/arm/allwinner-h3.c | 2 +- hw/arm/allwinner-r40.c | 2 +- hw/arm/fsl-imx6.c | 2 +- hw/arm/fsl-imx6ul.c | 35 +++--- hw/arm/fsl-imx7.c | 33 +++--- hw/arm/fsl-imx8mm.c | 2 +- hw/arm/fsl-imx8mp.c | 2 +- hw/arm/max78000_soc.c | 105 ++++++++-------- hw/arm/mps2-tz.c | 7 +- hw/arm/mps2.c | 27 +++-- hw/arm/mps3r.c | 10 +- hw/arm/msf2-soc.c | 20 ++-- hw/arm/npcm7xx.c | 91 +++++++------- hw/arm/npcm8xx.c | 145 ++++++++++++----------- hw/arm/nrf51_soc.c | 4 +- hw/arm/stellaris.c | 12 +- hw/arm/stm32f100_soc.c | 60 +++++----- hw/arm/stm32f405_soc.c | 84 ++++++------- hw/arm/stm32l4x5_soc.c | 88 +++++++------- hw/arm/xilinx_zynq.c | 61 +++++----- hw/avr/atmega.c | 20 ++-- hw/loongarch/virt.c | 2 +- hw/microblaze/petalogix_s3adsp1800_mmu.c | 2 +- hw/mips/loongson3_virt.c | 5 +- hw/pci-host/bonito.c | 14 +-- hw/riscv/k230.c | 107 ++++++++--------- hw/riscv/microblaze-v-generic.c | 10 +- hw/riscv/microchip_pfsoc.c | 54 ++++----- hw/riscv/opentitan.c | 52 ++++---- hw/riscv/sifive_e.c | 12 +- hw/riscv/sifive_u.c | 6 +- hw/riscv/tt_atlantis.c | 2 +- hw/sparc/sun4m.c | 8 +- hw/sparc64/niagara.c | 3 +- include/hw/misc/unimp.h | 9 +- 36 files changed, 557 insertions(+), 543 deletions(-) diff --git a/hw/arm/allwinner-a10.c b/hw/arm/allwinner-a10.c index cbc0b38986..8b37fd61f3 100644 --- a/hw/arm/allwinner-a10.c +++ b/hw/arm/allwinner-a10.c @@ -131,7 +131,7 @@ static void aw_a10_realize(DeviceState *dev, Error **er= rp) memory_region_init_ram(&s->sram_a, OBJECT(dev), "sram A", 48 * KiB, &error_fatal); memory_region_add_subregion(get_system_memory(), 0x00000000, &s->sram_= a); - create_unimplemented_device("a10-sram-ctrl", 0x01c00000, 4 * KiB); + create_unimplemented_device(OBJECT(dev), "a10-sram-ctrl", 0x01c00000, = 4 * KiB); =20 /* Clock Control Module */ sysbus_realize(SYS_BUS_DEVICE(&s->ccm), &error_fatal); diff --git a/hw/arm/allwinner-h3.c b/hw/arm/allwinner-h3.c index 6f9a07610f..711bfae095 100644 --- a/hw/arm/allwinner-h3.c +++ b/hw/arm/allwinner-h3.c @@ -468,7 +468,7 @@ static void allwinner_h3_realize(DeviceState *dev, Erro= r **errp) =20 /* Unimplemented devices */ for (i =3D 0; i < ARRAY_SIZE(unimplemented); i++) { - create_unimplemented_device(unimplemented[i].device_name, + create_unimplemented_device(OBJECT(dev), unimplemented[i].device_n= ame, unimplemented[i].base, unimplemented[i].size); } diff --git a/hw/arm/allwinner-r40.c b/hw/arm/allwinner-r40.c index 4f9d8a606e..9c15d361b4 100644 --- a/hw/arm/allwinner-r40.c +++ b/hw/arm/allwinner-r40.c @@ -532,7 +532,7 @@ static void allwinner_r40_realize(DeviceState *dev, Err= or **errp) =20 /* Unimplemented devices */ for (unsigned i =3D 0; i < ARRAY_SIZE(r40_unimplemented); i++) { - create_unimplemented_device(r40_unimplemented[i].device_name, + create_unimplemented_device(OBJECT(dev), r40_unimplemented[i].devi= ce_name, r40_unimplemented[i].base, r40_unimplemented[i].size); } diff --git a/hw/arm/fsl-imx6.c b/hw/arm/fsl-imx6.c index 44046953be..f0fbdc1a68 100644 --- a/hw/arm/fsl-imx6.c +++ b/hw/arm/fsl-imx6.c @@ -471,7 +471,7 @@ static void fsl_imx6_realize(DeviceState *dev, Error **= errp) /* * PCIe PHY */ - create_unimplemented_device("pcie-phy", FSL_IMX6_PCIe_ADDR, + create_unimplemented_device(OBJECT(dev), "pcie-phy", FSL_IMX6_PCIe_ADD= R, FSL_IMX6_PCIe_SIZE); =20 /* ROM memory */ diff --git a/hw/arm/fsl-imx6ul.c b/hw/arm/fsl-imx6ul.c index 1863558a0d..adbb896fd1 100644 --- a/hw/arm/fsl-imx6ul.c +++ b/hw/arm/fsl-imx6ul.c @@ -161,6 +161,7 @@ static void fsl_imx6ul_init(Object *obj) =20 static void fsl_imx6ul_realize(DeviceState *dev, Error **errp) { + Object *obj =3D OBJECT(dev); MachineState *ms =3D MACHINE(qdev_get_machine()); FslIMX6ULState *s =3D FSL_IMX6UL(dev); DeviceState *mpcore =3D DEVICE(&s->a7mpcore); @@ -198,37 +199,37 @@ static void fsl_imx6ul_realize(DeviceState *dev, Erro= r **errp) /* * A7MPCORE DAP */ - create_unimplemented_device("a7mpcore-dap", FSL_IMX6UL_A7MPCORE_DAP_AD= DR, + create_unimplemented_device(obj, "a7mpcore-dap", FSL_IMX6UL_A7MPCORE_D= AP_ADDR, FSL_IMX6UL_A7MPCORE_DAP_SIZE); =20 /* * MMDC */ - create_unimplemented_device("a7mpcore-mmdc", FSL_IMX6UL_MMDC_CFG_ADDR, + create_unimplemented_device(obj, "a7mpcore-mmdc", FSL_IMX6UL_MMDC_CFG_= ADDR, FSL_IMX6UL_MMDC_CFG_SIZE); =20 /* * OCOTP */ - create_unimplemented_device("a7mpcore-ocotp", FSL_IMX6UL_OCOTP_CTRL_AD= DR, + create_unimplemented_device(obj, "a7mpcore-ocotp", FSL_IMX6UL_OCOTP_CT= RL_ADDR, FSL_IMX6UL_OCOTP_CTRL_SIZE); =20 /* * QSPI */ - create_unimplemented_device("a7mpcore-qspi", FSL_IMX6UL_QSPI_ADDR, + create_unimplemented_device(obj, "a7mpcore-qspi", FSL_IMX6UL_QSPI_ADDR, FSL_IMX6UL_QSPI_SIZE); =20 /* * CAAM */ - create_unimplemented_device("a7mpcore-qspi", FSL_IMX6UL_CAAM_ADDR, + create_unimplemented_device(obj, "a7mpcore-qspi", FSL_IMX6UL_CAAM_ADDR, FSL_IMX6UL_CAAM_SIZE); =20 /* * USBMISC */ - create_unimplemented_device("a7mpcore-usbmisc", FSL_IMX6UL_USBO2_USBMI= SC_ADDR, + create_unimplemented_device(obj, "a7mpcore-usbmisc", FSL_IMX6UL_USBO2_= USBMISC_ADDR, FSL_IMX6UL_USBO2_USBMISC_SIZE); =20 /* @@ -322,9 +323,9 @@ static void fsl_imx6ul_realize(DeviceState *dev, Error = **errp) /* * IOMUXC */ - create_unimplemented_device("iomuxc", FSL_IMX6UL_IOMUXC_ADDR, + create_unimplemented_device(obj, "iomuxc", FSL_IMX6UL_IOMUXC_ADDR, FSL_IMX6UL_IOMUXC_SIZE); - create_unimplemented_device("iomuxc_gpr", FSL_IMX6UL_IOMUXC_GPR_ADDR, + create_unimplemented_device(obj, "iomuxc_gpr", FSL_IMX6UL_IOMUXC_GPR_A= DDR, FSL_IMX6UL_IOMUXC_GPR_SIZE); =20 /* @@ -581,7 +582,7 @@ static void fsl_imx6ul_realize(DeviceState *dev, Error = **errp) /* * SDMA */ - create_unimplemented_device("sdma", FSL_IMX6UL_SDMA_ADDR, + create_unimplemented_device(obj, "sdma", FSL_IMX6UL_SDMA_ADDR, FSL_IMX6UL_SDMA_SIZE); =20 /* @@ -595,7 +596,7 @@ static void fsl_imx6ul_realize(DeviceState *dev, Error = **errp) }; =20 snprintf(name, NAME_SIZE, "sai%d", i); - create_unimplemented_device(name, FSL_IMX6UL_SAIn_ADDR[i], + create_unimplemented_device(obj, name, FSL_IMX6UL_SAIn_ADDR[i], FSL_IMX6UL_SAIn_SIZE); } =20 @@ -615,14 +616,14 @@ static void fsl_imx6ul_realize(DeviceState *dev, Erro= r **errp) }; =20 snprintf(name, NAME_SIZE, "pwm%d", i); - create_unimplemented_device(name, FSL_IMX6UL_PWMn_ADDR[i], + create_unimplemented_device(obj, name, FSL_IMX6UL_PWMn_ADDR[i], FSL_IMX6UL_PWMn_SIZE); } =20 /* * Audio ASRC (asynchronous sample rate converter) */ - create_unimplemented_device("asrc", FSL_IMX6UL_ASRC_ADDR, + create_unimplemented_device(obj, "asrc", FSL_IMX6UL_ASRC_ADDR, FSL_IMX6UL_ASRC_SIZE); =20 /* @@ -635,14 +636,14 @@ static void fsl_imx6ul_realize(DeviceState *dev, Erro= r **errp) }; =20 snprintf(name, NAME_SIZE, "can%d", i); - create_unimplemented_device(name, FSL_IMX6UL_CANn_ADDR[i], + create_unimplemented_device(obj, name, FSL_IMX6UL_CANn_ADDR[i], FSL_IMX6UL_CANn_SIZE); } =20 /* * APHB_DMA */ - create_unimplemented_device("aphb_dma", FSL_IMX6UL_APBH_DMA_ADDR, + create_unimplemented_device(obj, "aphb_dma", FSL_IMX6UL_APBH_DMA_ADDR, FSL_IMX6UL_APBH_DMA_SIZE); =20 /* @@ -655,7 +656,7 @@ static void fsl_imx6ul_realize(DeviceState *dev, Error = **errp) }; =20 snprintf(name, NAME_SIZE, "adc%d", i); - create_unimplemented_device(name, FSL_IMX6UL_ADCn_ADDR[i], + create_unimplemented_device(obj, name, FSL_IMX6UL_ADCn_ADDR[i], FSL_IMX6UL_ADCn_SIZE); } =20 @@ -670,13 +671,13 @@ static void fsl_imx6ul_realize(DeviceState *dev, Erro= r **errp) /* * CSU */ - create_unimplemented_device("csu", FSL_IMX6UL_CSU_ADDR, + create_unimplemented_device(obj, "csu", FSL_IMX6UL_CSU_ADDR, FSL_IMX6UL_CSU_SIZE); =20 /* * TZASC */ - create_unimplemented_device("tzasc", FSL_IMX6UL_TZASC_ADDR, + create_unimplemented_device(obj, "tzasc", FSL_IMX6UL_TZASC_ADDR, FSL_IMX6UL_TZASC_SIZE); =20 /* diff --git a/hw/arm/fsl-imx7.c b/hw/arm/fsl-imx7.c index 2defa498d3..07a5ae8cd0 100644 --- a/hw/arm/fsl-imx7.c +++ b/hw/arm/fsl-imx7.c @@ -154,6 +154,7 @@ static void fsl_imx7_init(Object *obj) =20 static void fsl_imx7_realize(DeviceState *dev, Error **errp) { + Object *obj =3D OBJECT(dev); MachineState *ms =3D MACHINE(qdev_get_machine()); FslIMX7State *s =3D FSL_IMX7(dev); DeviceState *mpcore =3D DEVICE(&s->a7mpcore); @@ -229,7 +230,7 @@ static void fsl_imx7_realize(DeviceState *dev, Error **= errp) /* * A7MPCORE DAP */ - create_unimplemented_device("a7mpcore-dap", FSL_IMX7_A7MPCORE_DAP_ADDR, + create_unimplemented_device(obj, "a7mpcore-dap", FSL_IMX7_A7MPCORE_DAP= _ADDR, FSL_IMX7_A7MPCORE_DAP_SIZE); =20 /* @@ -305,9 +306,9 @@ static void fsl_imx7_realize(DeviceState *dev, Error **= errp) /* * IOMUXC and IOMUXC_LPSR */ - create_unimplemented_device("iomuxc", FSL_IMX7_IOMUXC_ADDR, + create_unimplemented_device(obj, "iomuxc", FSL_IMX7_IOMUXC_ADDR, FSL_IMX7_IOMUXC_SIZE); - create_unimplemented_device("iomuxc_lspr", FSL_IMX7_IOMUXC_LPSR_ADDR, + create_unimplemented_device(obj, "iomuxc_lspr", FSL_IMX7_IOMUXC_LPSR_A= DDR, FSL_IMX7_IOMUXC_LPSR_SIZE); =20 /* @@ -520,12 +521,12 @@ static void fsl_imx7_realize(DeviceState *dev, Error = **errp) /* * SDMA */ - create_unimplemented_device("sdma", FSL_IMX7_SDMA_ADDR, FSL_IMX7_SDMA_= SIZE); + create_unimplemented_device(obj, "sdma", FSL_IMX7_SDMA_ADDR, FSL_IMX7_= SDMA_SIZE); =20 /* * CAAM */ - create_unimplemented_device("caam", FSL_IMX7_CAAM_ADDR, FSL_IMX7_CAAM_= SIZE); + create_unimplemented_device(obj, "caam", FSL_IMX7_CAAM_ADDR, FSL_IMX7_= CAAM_SIZE); =20 /* * PWMs @@ -539,7 +540,7 @@ static void fsl_imx7_realize(DeviceState *dev, Error **= errp) }; =20 snprintf(name, NAME_SIZE, "pwm%d", i); - create_unimplemented_device(name, FSL_IMX7_PWMn_ADDR[i], + create_unimplemented_device(obj, name, FSL_IMX7_PWMn_ADDR[i], FSL_IMX7_PWMn_SIZE); } =20 @@ -553,7 +554,7 @@ static void fsl_imx7_realize(DeviceState *dev, Error **= errp) }; =20 snprintf(name, NAME_SIZE, "can%d", i); - create_unimplemented_device(name, FSL_IMX7_CANn_ADDR[i], + create_unimplemented_device(obj, name, FSL_IMX7_CANn_ADDR[i], FSL_IMX7_CANn_SIZE); } =20 @@ -568,14 +569,14 @@ static void fsl_imx7_realize(DeviceState *dev, Error = **errp) }; =20 snprintf(name, NAME_SIZE, "sai%d", i); - create_unimplemented_device(name, FSL_IMX7_SAIn_ADDR[i], + create_unimplemented_device(obj, name, FSL_IMX7_SAIn_ADDR[i], FSL_IMX7_SAIn_SIZE); } =20 /* * OCOTP */ - create_unimplemented_device("ocotp", FSL_IMX7_OCOTP_ADDR, + create_unimplemented_device(obj, "ocotp", FSL_IMX7_OCOTP_ADDR, FSL_IMX7_OCOTP_SIZE); =20 /* @@ -638,7 +639,7 @@ static void fsl_imx7_realize(DeviceState *dev, Error **= errp) sysbus_connect_irq(SYS_BUS_DEVICE(&s->usb[i]), 0, irq); =20 snprintf(name, NAME_SIZE, "usbmisc%d", i); - create_unimplemented_device(name, FSL_IMX7_USBMISCn_ADDR[i], + create_unimplemented_device(obj, name, FSL_IMX7_USBMISCn_ADDR[i], FSL_IMX7_USBMISCn_SIZE); } =20 @@ -652,37 +653,37 @@ static void fsl_imx7_realize(DeviceState *dev, Error = **errp) }; =20 snprintf(name, NAME_SIZE, "adc%d", i); - create_unimplemented_device(name, FSL_IMX7_ADCn_ADDR[i], + create_unimplemented_device(obj, name, FSL_IMX7_ADCn_ADDR[i], FSL_IMX7_ADCn_SIZE); } =20 /* * LCD */ - create_unimplemented_device("lcdif", FSL_IMX7_LCDIF_ADDR, + create_unimplemented_device(obj, "lcdif", FSL_IMX7_LCDIF_ADDR, FSL_IMX7_LCDIF_SIZE); =20 /* * DMA APBH */ - create_unimplemented_device("dma-apbh", FSL_IMX7_DMA_APBH_ADDR, + create_unimplemented_device(obj, "dma-apbh", FSL_IMX7_DMA_APBH_ADDR, FSL_IMX7_DMA_APBH_SIZE); /* * PCIe PHY */ - create_unimplemented_device("pcie-phy", FSL_IMX7_PCIE_PHY_ADDR, + create_unimplemented_device(obj, "pcie-phy", FSL_IMX7_PCIE_PHY_ADDR, FSL_IMX7_PCIE_PHY_SIZE); =20 /* * CSU */ - create_unimplemented_device("csu", FSL_IMX7_CSU_ADDR, + create_unimplemented_device(obj, "csu", FSL_IMX7_CSU_ADDR, FSL_IMX7_CSU_SIZE); =20 /* * TZASC */ - create_unimplemented_device("tzasc", FSL_IMX7_TZASC_ADDR, + create_unimplemented_device(obj, "tzasc", FSL_IMX7_TZASC_ADDR, FSL_IMX7_TZASC_SIZE); =20 /* diff --git a/hw/arm/fsl-imx8mm.c b/hw/arm/fsl-imx8mm.c index 875e92bb34..a38298c4a6 100644 --- a/hw/arm/fsl-imx8mm.c +++ b/hw/arm/fsl-imx8mm.c @@ -669,7 +669,7 @@ static void fsl_imx8mm_realize(DeviceState *dev, Error = **errp) break; =20 default: - create_unimplemented_device(fsl_imx8mm_memmap[i].name, + create_unimplemented_device(OBJECT(dev), fsl_imx8mm_memmap[i].= name, fsl_imx8mm_memmap[i].addr, fsl_imx8mm_memmap[i].size); break; diff --git a/hw/arm/fsl-imx8mp.c b/hw/arm/fsl-imx8mp.c index bcd91739d9..c5bace6605 100644 --- a/hw/arm/fsl-imx8mp.c +++ b/hw/arm/fsl-imx8mp.c @@ -738,7 +738,7 @@ static void fsl_imx8mp_realize(DeviceState *dev, Error = **errp) break; =20 default: - create_unimplemented_device(fsl_imx8mp_memmap[i].name, + create_unimplemented_device(OBJECT(dev), fsl_imx8mp_memmap[i].= name, fsl_imx8mp_memmap[i].addr, fsl_imx8mp_memmap[i].size); break; diff --git a/hw/arm/max78000_soc.c b/hw/arm/max78000_soc.c index 321e63723e..b8e0265de2 100644 --- a/hw/arm/max78000_soc.c +++ b/hw/arm/max78000_soc.c @@ -52,6 +52,7 @@ static void max78000_soc_initfn(Object *obj) =20 static void max78000_soc_realize(DeviceState *dev_soc, Error **errp) { + Object *obj =3D OBJECT(dev_soc); MAX78000State *s =3D MAX78000_SOC(dev_soc); MemoryRegion *system_memory =3D get_system_memory(); DeviceState *dev, *gcrdev, *armv7m; @@ -146,52 +147,52 @@ static void max78000_soc_realize(DeviceState *dev_soc= , Error **errp) sysbus_realize(SYS_BUS_DEVICE(dev), errp); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, 0x40000000); =20 - create_unimplemented_device("systemInterface", 0x40000400, 0x400); - create_unimplemented_device("functionControl", 0x40000800, 0x400); - create_unimplemented_device("watchdogTimer0", 0x40003000, 0x400); - create_unimplemented_device("dynamicVoltScale", 0x40003c00, 0x40); - create_unimplemented_device("SIMO", 0x40004400, 0x400); - create_unimplemented_device("trimSystemInit", 0x40005400, 0x400); - create_unimplemented_device("generalCtrlFunc", 0x40005800, 0x400); - create_unimplemented_device("wakeupTimer", 0x40006400, 0x400); - create_unimplemented_device("powerSequencer", 0x40006800, 0x400); - create_unimplemented_device("miscControl", 0x40006c00, 0x400); - - create_unimplemented_device("gpio0", 0x40008000, 0x1000= ); - create_unimplemented_device("gpio1", 0x40009000, 0x1000= ); - - create_unimplemented_device("parallelCamInterface", 0x4000e000, 0x1000= ); - create_unimplemented_device("CRC", 0x4000f000, 0x1000= ); - - create_unimplemented_device("timer0", 0x40010000, 0x1000= ); - create_unimplemented_device("timer1", 0x40011000, 0x1000= ); - create_unimplemented_device("timer2", 0x40012000, 0x1000= ); - create_unimplemented_device("timer3", 0x40013000, 0x1000= ); - - create_unimplemented_device("i2c0", 0x4001d000, 0x1000= ); - create_unimplemented_device("i2c1", 0x4001e000, 0x1000= ); - create_unimplemented_device("i2c2", 0x4001f000, 0x1000= ); - - create_unimplemented_device("standardDMA", 0x40028000, 0x1000= ); - create_unimplemented_device("flashController0", 0x40029000, 0x400); - - create_unimplemented_device("adc", 0x40034000, 0x1000= ); - create_unimplemented_device("pulseTrainEngine", 0x4003c000, 0xa0); - create_unimplemented_device("oneWireMaster", 0x4003d000, 0x1000= ); - create_unimplemented_device("semaphore", 0x4003e000, 0x1000= ); - - create_unimplemented_device("spi1", 0x40046000, 0x2000= ); - create_unimplemented_device("i2s", 0x40060000, 0x1000= ); - create_unimplemented_device("lowPowerControl", 0x40080000, 0x400); - create_unimplemented_device("gpio2", 0x40080400, 0x200); - create_unimplemented_device("lowPowerWatchdogTimer", 0x40080800, 0x= 400); - create_unimplemented_device("lowPowerTimer4", 0x40080c00, 0x400); - - create_unimplemented_device("lowPowerTimer5", 0x40081000, 0x400); - create_unimplemented_device("lowPowerUART0", 0x40081400, 0x400); - create_unimplemented_device("lowPowerComparator", 0x40088000, 0x400); - - create_unimplemented_device("spi0", 0x400be000, 0x400); + create_unimplemented_device(obj, "systemInterface", 0x40000400, 0= x400); + create_unimplemented_device(obj, "functionControl", 0x40000800, 0= x400); + create_unimplemented_device(obj, "watchdogTimer0", 0x40003000, 0= x400); + create_unimplemented_device(obj, "dynamicVoltScale", 0x40003c00, 0= x40); + create_unimplemented_device(obj, "SIMO", 0x40004400, 0= x400); + create_unimplemented_device(obj, "trimSystemInit", 0x40005400, 0= x400); + create_unimplemented_device(obj, "generalCtrlFunc", 0x40005800, 0= x400); + create_unimplemented_device(obj, "wakeupTimer", 0x40006400, 0= x400); + create_unimplemented_device(obj, "powerSequencer", 0x40006800, 0= x400); + create_unimplemented_device(obj, "miscControl", 0x40006c00, 0= x400); + + create_unimplemented_device(obj, "gpio0", 0x40008000, 0= x1000); + create_unimplemented_device(obj, "gpio1", 0x40009000, 0= x1000); + + create_unimplemented_device(obj, "parallelCamInterface", 0x4000e000, 0= x1000); + create_unimplemented_device(obj, "CRC", 0x4000f000, 0= x1000); + + create_unimplemented_device(obj, "timer0", 0x40010000, 0= x1000); + create_unimplemented_device(obj, "timer1", 0x40011000, 0= x1000); + create_unimplemented_device(obj, "timer2", 0x40012000, 0= x1000); + create_unimplemented_device(obj, "timer3", 0x40013000, 0= x1000); + + create_unimplemented_device(obj, "i2c0", 0x4001d000, 0= x1000); + create_unimplemented_device(obj, "i2c1", 0x4001e000, 0= x1000); + create_unimplemented_device(obj, "i2c2", 0x4001f000, 0= x1000); + + create_unimplemented_device(obj, "standardDMA", 0x40028000, 0= x1000); + create_unimplemented_device(obj, "flashController0", 0x40029000, 0= x400); + + create_unimplemented_device(obj, "adc", 0x40034000, 0= x1000); + create_unimplemented_device(obj, "pulseTrainEngine", 0x4003c000, 0= xa0); + create_unimplemented_device(obj, "oneWireMaster", 0x4003d000, 0= x1000); + create_unimplemented_device(obj, "semaphore", 0x4003e000, 0= x1000); + + create_unimplemented_device(obj, "spi1", 0x40046000, 0= x2000); + create_unimplemented_device(obj, "i2s", 0x40060000, 0= x1000); + create_unimplemented_device(obj, "lowPowerControl", 0x40080000, 0= x400); + create_unimplemented_device(obj, "gpio2", 0x40080400, 0= x200); + create_unimplemented_device(obj, "lowPowerWatchdogTimer", 0x4008080= 0, 0x400); + create_unimplemented_device(obj, "lowPowerTimer4", 0x40080c00, 0= x400); + + create_unimplemented_device(obj, "lowPowerTimer5", 0x40081000, 0= x400); + create_unimplemented_device(obj, "lowPowerUART0", 0x40081400, 0= x400); + create_unimplemented_device(obj, "lowPowerComparator", 0x40088000, 0= x400); + + create_unimplemented_device(obj, "spi0", 0x400be000, 0= x400); =20 /* * The MAX78000 user guide's base address map lists the CNN TX FIFO as @@ -199,13 +200,13 @@ static void max78000_soc_realize(DeviceState *dev_soc= , Error **errp) * is listed as having data accessible up to offset 0x1000, the user * guide is likely incorrect. */ - create_unimplemented_device("cnnTxFIFO", 0x400c0400, 0x2000= ); + create_unimplemented_device(obj, "cnnTxFIFO", 0x400c0400, 0= x2000); =20 - create_unimplemented_device("cnnGlobalControl", 0x50000000, 0x1000= 0); - create_unimplemented_device("cnnx16quad0", 0x50100000, 0x4000= 0); - create_unimplemented_device("cnnx16quad1", 0x50500000, 0x4000= 0); - create_unimplemented_device("cnnx16quad2", 0x50900000, 0x4000= 0); - create_unimplemented_device("cnnx16quad3", 0x50d00000, 0x4000= 0); + create_unimplemented_device(obj, "cnnGlobalControl", 0x50000000, 0= x10000); + create_unimplemented_device(obj, "cnnx16quad0", 0x50100000, 0= x40000); + create_unimplemented_device(obj, "cnnx16quad1", 0x50500000, 0= x40000); + create_unimplemented_device(obj, "cnnx16quad2", 0x50900000, 0= x40000); + create_unimplemented_device(obj, "cnnx16quad3", 0x50d00000, 0= x40000); =20 } =20 diff --git a/hw/arm/mps2-tz.c b/hw/arm/mps2-tz.c index 17945d2b71..32e3db1134 100644 --- a/hw/arm/mps2-tz.c +++ b/hw/arm/mps2-tz.c @@ -800,6 +800,7 @@ static uint32_t boot_ram_size(MPS2TZMachineState *mms) =20 static void mps2tz_common_init(MachineState *machine) { + Object *obj =3D OBJECT(machine); MPS2TZMachineState *mms =3D MPS2TZ_MACHINE(machine); MPS2TZMachineClass *mmc =3D MPS2TZ_MACHINE_GET_CLASS(mms); MachineClass *mc =3D MACHINE_GET_CLASS(machine); @@ -1193,11 +1194,11 @@ static void mps2tz_common_init(MachineState *machin= e) "cfg_sec_resp", 0)); } =20 - create_unimplemented_device("FPGA NS PC", 0x48007000, 0x1000); + create_unimplemented_device(obj, "FPGA NS PC", 0x48007000, 0x1000); =20 if (mmc->fpga_type =3D=3D FPGA_AN547) { - create_unimplemented_device("U55 timing adapter 0", 0x48102000, 0x= 1000); - create_unimplemented_device("U55 timing adapter 1", 0x48103000, 0x= 1000); + create_unimplemented_device(obj, "U55 timing adapter 0", 0x4810200= 0, 0x1000); + create_unimplemented_device(obj, "U55 timing adapter 1", 0x4810300= 0, 0x1000); } =20 create_non_mpc_ram(mms); diff --git a/hw/arm/mps2.c b/hw/arm/mps2.c index 2edd222674..23a814e4e4 100644 --- a/hw/arm/mps2.c +++ b/hw/arm/mps2.c @@ -135,6 +135,7 @@ static void make_ram_alias(MemoryRegion *mr, const char= *name, =20 static void mps2_common_init(MachineState *machine) { + Object *obj =3D OBJECT(machine); MPS2MachineState *mms =3D MPS2_MACHINE(machine); MPS2MachineClass *mmc =3D MPS2_MACHINE_GET_CLASS(machine); MemoryRegion *system_memory =3D get_system_memory(); @@ -246,25 +247,25 @@ static void mps2_common_init(MachineState *machine) OBJECT(system_memory), &error_abort); sysbus_realize(SYS_BUS_DEVICE(&mms->armv7m), &error_fatal); =20 - create_unimplemented_device("zbtsmram mirror", 0x00400000, 0x00400000); - create_unimplemented_device("RESERVED 1", 0x00800000, 0x00800000); - create_unimplemented_device("Block RAM", 0x01000000, 0x00010000); - create_unimplemented_device("RESERVED 2", 0x01010000, 0x1EFF0000); - create_unimplemented_device("RESERVED 3", 0x20800000, 0x00800000); - create_unimplemented_device("PSRAM", 0x21000000, 0x01000000); + create_unimplemented_device(obj, "zbtsmram mirror", 0x00400000, 0x0040= 0000); + create_unimplemented_device(obj, "RESERVED 1", 0x00800000, 0x00800000); + create_unimplemented_device(obj, "Block RAM", 0x01000000, 0x00010000); + create_unimplemented_device(obj, "RESERVED 2", 0x01010000, 0x1EFF0000); + create_unimplemented_device(obj, "RESERVED 3", 0x20800000, 0x00800000); + create_unimplemented_device(obj, "PSRAM", 0x21000000, 0x01000000); /* These three ranges all cover multiple devices; we may implement * some of them below (in which case the real device takes precedence * over the unimplemented-region mapping). */ - create_unimplemented_device("CMSDK APB peripheral region @0x40000000", + create_unimplemented_device(obj, "CMSDK APB peripheral region @0x40000= 000", 0x40000000, 0x00010000); - create_unimplemented_device("CMSDK AHB peripheral region @0x40010000", + create_unimplemented_device(obj, "CMSDK AHB peripheral region @0x40010= 000", 0x40010000, 0x00010000); - create_unimplemented_device("Extra peripheral region @0x40020000", + create_unimplemented_device(obj, "Extra peripheral region @0x40020000", 0x40020000, 0x00010000); =20 - create_unimplemented_device("RESERVED 4", 0x40030000, 0x001D0000); - create_unimplemented_device("VGA", 0x41000000, 0x0200000); + create_unimplemented_device(obj, "RESERVED 4", 0x40030000, 0x001D0000); + create_unimplemented_device(obj, "VGA", 0x41000000, 0x0200000); =20 switch (mmc->fpga_type) { case FPGA_AN385: @@ -362,7 +363,7 @@ static void mps2_common_init(MachineState *machine) for (i =3D 0; i < 4; i++) { static const hwaddr gpiobase[] =3D {0x40010000, 0x40011000, 0x40012000, 0x40013000}; - create_unimplemented_device("cmsdk-ahb-gpio", gpiobase[i], 0x1000); + create_unimplemented_device(obj, "cmsdk-ahb-gpio", gpiobase[i], 0x= 1000); } =20 /* CMSDK APB subsystem */ @@ -458,7 +459,7 @@ static void mps2_common_init(MachineState *machine) qbus_mark_full(qbus); } } - create_unimplemented_device("i2s", 0x40024000, 0x400); + create_unimplemented_device(obj, "i2s", 0x40024000, 0x400); =20 /* In hardware this is a LAN9220; the LAN9118 is software compatible * except that it doesn't support the checksum-offload feature. diff --git a/hw/arm/mps3r.c b/hw/arm/mps3r.c index 8e249c9b9d..4d432de6ba 100644 --- a/hw/arm/mps3r.c +++ b/hw/arm/mps3r.c @@ -458,7 +458,7 @@ static void mps3r_common_init(MachineState *machine) for (int i =3D 0; i < 4; i++) { /* CMSDK GPIO controllers */ g_autofree char *s =3D g_strdup_printf("gpio%d", i); - create_unimplemented_device(s, 0xe0000000 + i * 0x1000, 0x1000); + create_unimplemented_device(OBJECT(machine), s, 0xe0000000 + i * 0= x1000, 0x1000); } =20 object_initialize_child(OBJECT(mms), "watchdog", &mms->watchdog, @@ -526,7 +526,7 @@ static void mps3r_common_init(MachineState *machine) sysbus_realize(SYS_BUS_DEVICE(&mms->scc), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(&mms->scc), 0, 0xe0200000); =20 - create_unimplemented_device("i2s-audio", 0xe0201000, 0x1000); + create_unimplemented_device(OBJECT(machine), "i2s-audio", 0xe0201000, = 0x1000); =20 object_initialize_child(OBJECT(mms), "fpgaio", &mms->fpgaio, TYPE_MPS2_FPGAIO); @@ -537,7 +537,7 @@ static void mps3r_common_init(MachineState *machine) sysbus_realize(SYS_BUS_DEVICE(&mms->fpgaio), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(&mms->fpgaio), 0, 0xe0202000); =20 - create_unimplemented_device("clcd", 0xe0209000, 0x1000); + create_unimplemented_device(OBJECT(machine), "clcd", 0xe0209000, 0x100= 0); =20 object_initialize_child(OBJECT(mms), "rtc", &mms->rtc, TYPE_PL031); sysbus_realize(SYS_BUS_DEVICE(&mms->rtc), &error_fatal); @@ -552,8 +552,8 @@ static void mps3r_common_init(MachineState *machine) lan9118_init(OBJECT(machine), 0xe0300000, qdev_get_gpio_in(gicdev, 18)); =20 - create_unimplemented_device("usb", 0xe0301000, 0x1000); - create_unimplemented_device("qspi-write-config", 0xe0600000, 0x1000); + create_unimplemented_device(OBJECT(machine), "usb", 0xe0301000, 0x1000= ); + create_unimplemented_device(OBJECT(machine), "qspi-write-config", 0xe0= 600000, 0x1000); =20 mms->bootinfo.ram_size =3D machine->ram_size; mms->bootinfo.board_id =3D -1; diff --git a/hw/arm/msf2-soc.c b/hw/arm/msf2-soc.c index 76eba752bd..c03778c439 100644 --- a/hw/arm/msf2-soc.c +++ b/hw/arm/msf2-soc.c @@ -210,16 +210,16 @@ static void m2sxxx_soc_realize(DeviceState *dev_soc, = Error **errp) qdev_get_gpio_in(armv7m, MSF2_EMAC_IRQ)); =20 /* Below devices are not modelled yet. */ - create_unimplemented_device("i2c_0", 0x40002000, 0x1000); - create_unimplemented_device("dma", 0x40003000, 0x1000); - create_unimplemented_device("watchdog", 0x40005000, 0x1000); - create_unimplemented_device("i2c_1", 0x40012000, 0x1000); - create_unimplemented_device("gpio", 0x40013000, 0x1000); - create_unimplemented_device("hs-dma", 0x40014000, 0x1000); - create_unimplemented_device("can", 0x40015000, 0x1000); - create_unimplemented_device("rtc", 0x40017000, 0x1000); - create_unimplemented_device("apb_config", 0x40020000, 0x10000); - create_unimplemented_device("usb", 0x40043000, 0x1000); + create_unimplemented_device(OBJECT(dev_soc), "i2c_0", 0x40002000, 0x10= 00); + create_unimplemented_device(OBJECT(dev_soc), "dma", 0x40003000, 0x1000= ); + create_unimplemented_device(OBJECT(dev_soc), "watchdog", 0x40005000, 0= x1000); + create_unimplemented_device(OBJECT(dev_soc), "i2c_1", 0x40012000, 0x10= 00); + create_unimplemented_device(OBJECT(dev_soc), "gpio", 0x40013000, 0x100= 0); + create_unimplemented_device(OBJECT(dev_soc), "hs-dma", 0x40014000, 0x1= 000); + create_unimplemented_device(OBJECT(dev_soc), "can", 0x40015000, 0x1000= ); + create_unimplemented_device(OBJECT(dev_soc), "rtc", 0x40017000, 0x1000= ); + create_unimplemented_device(OBJECT(dev_soc), "apb_config", 0x40020000,= 0x10000); + create_unimplemented_device(OBJECT(dev_soc), "usb", 0x40043000, 0x1000= ); } =20 static const Property m2sxxx_soc_properties[] =3D { diff --git a/hw/arm/npcm7xx.c b/hw/arm/npcm7xx.c index a930f7843a..1ee8820070 100644 --- a/hw/arm/npcm7xx.c +++ b/hw/arm/npcm7xx.c @@ -479,6 +479,7 @@ static void npcm7xx_init(Object *obj) =20 static void npcm7xx_realize(DeviceState *dev, Error **errp) { + Object *obj =3D OBJECT(dev); NPCM7xxState *s =3D NPCM7XX(dev); NPCM7xxClass *nc =3D NPCM7XX_GET_CLASS(s); int i; @@ -600,30 +601,30 @@ static void npcm7xx_realize(DeviceState *dev, Error *= *errp) /* GPIO modules. Cannot fail. */ QEMU_BUILD_BUG_ON(ARRAY_SIZE(npcm7xx_gpio) !=3D ARRAY_SIZE(s->gpio)); for (i =3D 0; i < ARRAY_SIZE(s->gpio); i++) { - Object *obj =3D OBJECT(&s->gpio[i]); + Object *gobj =3D OBJECT(&s->gpio[i]); =20 - object_property_set_uint(obj, "reset-pullup", + object_property_set_uint(gobj, "reset-pullup", npcm7xx_gpio[i].reset_pu, &error_abort); - object_property_set_uint(obj, "reset-pulldown", + object_property_set_uint(gobj, "reset-pulldown", npcm7xx_gpio[i].reset_pd, &error_abort); - object_property_set_uint(obj, "reset-osrc", + object_property_set_uint(gobj, "reset-osrc", npcm7xx_gpio[i].reset_osrc, &error_abort); - object_property_set_uint(obj, "reset-odsc", + object_property_set_uint(gobj, "reset-odsc", npcm7xx_gpio[i].reset_odsc, &error_abort); - sysbus_realize(SYS_BUS_DEVICE(obj), &error_abort); - sysbus_mmio_map(SYS_BUS_DEVICE(obj), 0, npcm7xx_gpio[i].regs_addr); - sysbus_connect_irq(SYS_BUS_DEVICE(obj), 0, + sysbus_realize(SYS_BUS_DEVICE(gobj), &error_abort); + sysbus_mmio_map(SYS_BUS_DEVICE(gobj), 0, npcm7xx_gpio[i].regs_addr= ); + sysbus_connect_irq(SYS_BUS_DEVICE(gobj), 0, npcm7xx_irq(s, NPCM7XX_GPIO0_IRQ + i)); } =20 /* SMBus modules. Cannot fail. */ QEMU_BUILD_BUG_ON(ARRAY_SIZE(npcm7xx_smbus_addr) !=3D ARRAY_SIZE(s->sm= bus)); for (i =3D 0; i < ARRAY_SIZE(s->smbus); i++) { - Object *obj =3D OBJECT(&s->smbus[i]); + Object *sobj =3D OBJECT(&s->smbus[i]); =20 - sysbus_realize(SYS_BUS_DEVICE(obj), &error_abort); - sysbus_mmio_map(SYS_BUS_DEVICE(obj), 0, npcm7xx_smbus_addr[i]); - sysbus_connect_irq(SYS_BUS_DEVICE(obj), 0, + sysbus_realize(SYS_BUS_DEVICE(sobj), &error_abort); + sysbus_mmio_map(SYS_BUS_DEVICE(sobj), 0, npcm7xx_smbus_addr[i]); + sysbus_connect_irq(SYS_BUS_DEVICE(sobj), 0, npcm7xx_irq(s, NPCM7XX_SMBUS0_IRQ + i)); } =20 @@ -781,39 +782,39 @@ static void npcm7xx_realize(DeviceState *dev, Error *= *errp) sysbus_connect_irq(sbd, 0, npcm7xx_irq(s, irq)); } =20 - create_unimplemented_device("npcm7xx.shm", 0xc0001000, 4 * = KiB); - create_unimplemented_device("npcm7xx.vdmx", 0xe0800000, 4 * = KiB); - create_unimplemented_device("npcm7xx.pcierc", 0xe1000000, 64 * = KiB); - create_unimplemented_device("npcm7xx.kcs", 0xf0007000, 4 * = KiB); - create_unimplemented_device("npcm7xx.gfxi", 0xf000e000, 4 * = KiB); - create_unimplemented_device("npcm7xx.espi", 0xf009f000, 4 * = KiB); - create_unimplemented_device("npcm7xx.peci", 0xf0100000, 4 * = KiB); - create_unimplemented_device("npcm7xx.siox[1]", 0xf0101000, 4 * = KiB); - create_unimplemented_device("npcm7xx.siox[2]", 0xf0102000, 4 * = KiB); - create_unimplemented_device("npcm7xx.ahbpci", 0xf0400000, 1 * = MiB); - create_unimplemented_device("npcm7xx.mcphy", 0xf05f0000, 64 * = KiB); - create_unimplemented_device("npcm7xx.vcd", 0xf0810000, 64 * = KiB); - create_unimplemented_device("npcm7xx.ece", 0xf0820000, 8 * = KiB); - create_unimplemented_device("npcm7xx.vdma", 0xf0822000, 8 * = KiB); - create_unimplemented_device("npcm7xx.usbd[0]", 0xf0830000, 4 * = KiB); - create_unimplemented_device("npcm7xx.usbd[1]", 0xf0831000, 4 * = KiB); - create_unimplemented_device("npcm7xx.usbd[2]", 0xf0832000, 4 * = KiB); - create_unimplemented_device("npcm7xx.usbd[3]", 0xf0833000, 4 * = KiB); - create_unimplemented_device("npcm7xx.usbd[4]", 0xf0834000, 4 * = KiB); - create_unimplemented_device("npcm7xx.usbd[5]", 0xf0835000, 4 * = KiB); - create_unimplemented_device("npcm7xx.usbd[6]", 0xf0836000, 4 * = KiB); - create_unimplemented_device("npcm7xx.usbd[7]", 0xf0837000, 4 * = KiB); - create_unimplemented_device("npcm7xx.usbd[8]", 0xf0838000, 4 * = KiB); - create_unimplemented_device("npcm7xx.usbd[9]", 0xf0839000, 4 * = KiB); - create_unimplemented_device("npcm7xx.sd", 0xf0840000, 8 * = KiB); - create_unimplemented_device("npcm7xx.pcimbx", 0xf0848000, 512 * = KiB); - create_unimplemented_device("npcm7xx.aes", 0xf0858000, 4 * = KiB); - create_unimplemented_device("npcm7xx.des", 0xf0859000, 4 * = KiB); - create_unimplemented_device("npcm7xx.sha", 0xf085a000, 4 * = KiB); - create_unimplemented_device("npcm7xx.secacc", 0xf085b000, 4 * = KiB); - create_unimplemented_device("npcm7xx.spixcs0", 0xf8000000, 16 * = MiB); - create_unimplemented_device("npcm7xx.spixcs1", 0xf9000000, 16 * = MiB); - create_unimplemented_device("npcm7xx.spix", 0xfb001000, 4 * = KiB); + create_unimplemented_device(obj, "npcm7xx.shm", 0xc0001000, = 4 * KiB); + create_unimplemented_device(obj, "npcm7xx.vdmx", 0xe0800000, = 4 * KiB); + create_unimplemented_device(obj, "npcm7xx.pcierc", 0xe1000000, = 64 * KiB); + create_unimplemented_device(obj, "npcm7xx.kcs", 0xf0007000, = 4 * KiB); + create_unimplemented_device(obj, "npcm7xx.gfxi", 0xf000e000, = 4 * KiB); + create_unimplemented_device(obj, "npcm7xx.espi", 0xf009f000, = 4 * KiB); + create_unimplemented_device(obj, "npcm7xx.peci", 0xf0100000, = 4 * KiB); + create_unimplemented_device(obj, "npcm7xx.siox[1]", 0xf0101000, = 4 * KiB); + create_unimplemented_device(obj, "npcm7xx.siox[2]", 0xf0102000, = 4 * KiB); + create_unimplemented_device(obj, "npcm7xx.ahbpci", 0xf0400000, = 1 * MiB); + create_unimplemented_device(obj, "npcm7xx.mcphy", 0xf05f0000, = 64 * KiB); + create_unimplemented_device(obj, "npcm7xx.vcd", 0xf0810000, = 64 * KiB); + create_unimplemented_device(obj, "npcm7xx.ece", 0xf0820000, = 8 * KiB); + create_unimplemented_device(obj, "npcm7xx.vdma", 0xf0822000, = 8 * KiB); + create_unimplemented_device(obj, "npcm7xx.usbd[0]", 0xf0830000, = 4 * KiB); + create_unimplemented_device(obj, "npcm7xx.usbd[1]", 0xf0831000, = 4 * KiB); + create_unimplemented_device(obj, "npcm7xx.usbd[2]", 0xf0832000, = 4 * KiB); + create_unimplemented_device(obj, "npcm7xx.usbd[3]", 0xf0833000, = 4 * KiB); + create_unimplemented_device(obj, "npcm7xx.usbd[4]", 0xf0834000, = 4 * KiB); + create_unimplemented_device(obj, "npcm7xx.usbd[5]", 0xf0835000, = 4 * KiB); + create_unimplemented_device(obj, "npcm7xx.usbd[6]", 0xf0836000, = 4 * KiB); + create_unimplemented_device(obj, "npcm7xx.usbd[7]", 0xf0837000, = 4 * KiB); + create_unimplemented_device(obj, "npcm7xx.usbd[8]", 0xf0838000, = 4 * KiB); + create_unimplemented_device(obj, "npcm7xx.usbd[9]", 0xf0839000, = 4 * KiB); + create_unimplemented_device(obj, "npcm7xx.sd", 0xf0840000, = 8 * KiB); + create_unimplemented_device(obj, "npcm7xx.pcimbx", 0xf0848000, 5= 12 * KiB); + create_unimplemented_device(obj, "npcm7xx.aes", 0xf0858000, = 4 * KiB); + create_unimplemented_device(obj, "npcm7xx.des", 0xf0859000, = 4 * KiB); + create_unimplemented_device(obj, "npcm7xx.sha", 0xf085a000, = 4 * KiB); + create_unimplemented_device(obj, "npcm7xx.secacc", 0xf085b000, = 4 * KiB); + create_unimplemented_device(obj, "npcm7xx.spixcs0", 0xf8000000, = 16 * MiB); + create_unimplemented_device(obj, "npcm7xx.spixcs1", 0xf9000000, = 16 * MiB); + create_unimplemented_device(obj, "npcm7xx.spix", 0xfb001000, = 4 * KiB); } =20 static const Property npcm7xx_properties[] =3D { diff --git a/hw/arm/npcm8xx.c b/hw/arm/npcm8xx.c index 48fcc65a98..c7c371cac6 100644 --- a/hw/arm/npcm8xx.c +++ b/hw/arm/npcm8xx.c @@ -471,6 +471,7 @@ static void npcm8xx_init(Object *obj) =20 static void npcm8xx_realize(DeviceState *dev, Error **errp) { + Object *obj =3D OBJECT(dev); NPCM8xxState *s =3D NPCM8XX(dev); NPCM8xxClass *nc =3D NPCM8XX_GET_CLASS(s); int i; @@ -614,30 +615,30 @@ static void npcm8xx_realize(DeviceState *dev, Error *= *errp) /* GPIO modules. Cannot fail. */ QEMU_BUILD_BUG_ON(ARRAY_SIZE(npcm8xx_gpio) !=3D ARRAY_SIZE(s->gpio)); for (i =3D 0; i < ARRAY_SIZE(s->gpio); i++) { - Object *obj =3D OBJECT(&s->gpio[i]); + Object *gobj =3D OBJECT(&s->gpio[i]); =20 - object_property_set_uint(obj, "reset-pullup", + object_property_set_uint(gobj, "reset-pullup", npcm8xx_gpio[i].reset_pu, &error_abort); - object_property_set_uint(obj, "reset-pulldown", + object_property_set_uint(gobj, "reset-pulldown", npcm8xx_gpio[i].reset_pd, &error_abort); - object_property_set_uint(obj, "reset-osrc", + object_property_set_uint(gobj, "reset-osrc", npcm8xx_gpio[i].reset_osrc, &error_abort); - object_property_set_uint(obj, "reset-odsc", + object_property_set_uint(gobj, "reset-odsc", npcm8xx_gpio[i].reset_odsc, &error_abort); - sysbus_realize(SYS_BUS_DEVICE(obj), &error_abort); - sysbus_mmio_map(SYS_BUS_DEVICE(obj), 0, npcm8xx_gpio[i].regs_addr); - sysbus_connect_irq(SYS_BUS_DEVICE(obj), 0, + sysbus_realize(SYS_BUS_DEVICE(gobj), &error_abort); + sysbus_mmio_map(SYS_BUS_DEVICE(gobj), 0, npcm8xx_gpio[i].regs_addr= ); + sysbus_connect_irq(SYS_BUS_DEVICE(gobj), 0, npcm8xx_irq(s, NPCM8XX_GPIO0_IRQ + i)); } =20 /* SMBus modules. Cannot fail. */ QEMU_BUILD_BUG_ON(ARRAY_SIZE(npcm8xx_smbus_addr) !=3D ARRAY_SIZE(s->sm= bus)); for (i =3D 0; i < ARRAY_SIZE(s->smbus); i++) { - Object *obj =3D OBJECT(&s->smbus[i]); + Object *sobj =3D OBJECT(&s->smbus[i]); =20 - sysbus_realize(SYS_BUS_DEVICE(obj), &error_abort); - sysbus_mmio_map(SYS_BUS_DEVICE(obj), 0, npcm8xx_smbus_addr[i]); - sysbus_connect_irq(SYS_BUS_DEVICE(obj), 0, + sysbus_realize(SYS_BUS_DEVICE(sobj), &error_abort); + sysbus_mmio_map(SYS_BUS_DEVICE(sobj), 0, npcm8xx_smbus_addr[i]); + sysbus_connect_irq(SYS_BUS_DEVICE(sobj), 0, npcm8xx_irq(s, NPCM8XX_SMBUS0_IRQ + i)); } =20 @@ -766,66 +767,66 @@ static void npcm8xx_realize(DeviceState *dev, Error *= *errp) sysbus_connect_irq(SYS_BUS_DEVICE(&s->pspi), 0, npcm8xx_irq(s, NPCM8XX_PSPI_IRQ)); =20 - create_unimplemented_device("npcm8xx.shm", 0xc0001000, 4 * = KiB); - create_unimplemented_device("npcm8xx.gicextra", 0xdfffa000, 24 * = KiB); - create_unimplemented_device("npcm8xx.vdmx", 0xe0800000, 4 * = KiB); - create_unimplemented_device("npcm8xx.pcierc", 0xe1000000, 64 * = KiB); - create_unimplemented_device("npcm8xx.rootc", 0xe8000000, 128 * = MiB); - create_unimplemented_device("npcm8xx.kcs", 0xf0007000, 4 * = KiB); - create_unimplemented_device("npcm8xx.gfxi", 0xf000e000, 4 * = KiB); - create_unimplemented_device("npcm8xx.fsw", 0xf000f000, 4 * = KiB); - create_unimplemented_device("npcm8xx.bt", 0xf0030000, 4 * = KiB); - create_unimplemented_device("npcm8xx.espi", 0xf009f000, 4 * = KiB); - create_unimplemented_device("npcm8xx.peci", 0xf0100000, 4 * = KiB); - create_unimplemented_device("npcm8xx.siox[1]", 0xf0101000, 4 * = KiB); - create_unimplemented_device("npcm8xx.siox[2]", 0xf0102000, 4 * = KiB); - create_unimplemented_device("npcm8xx.tmps", 0xf0188000, 4 * = KiB); - create_unimplemented_device("npcm8xx.viru1", 0xf0204000, 4 * = KiB); - create_unimplemented_device("npcm8xx.viru2", 0xf0205000, 4 * = KiB); - create_unimplemented_device("npcm8xx.jtm1", 0xf0208000, 4 * = KiB); - create_unimplemented_device("npcm8xx.jtm2", 0xf0209000, 4 * = KiB); - create_unimplemented_device("npcm8xx.flm0", 0xf0210000, 4 * = KiB); - create_unimplemented_device("npcm8xx.flm1", 0xf0211000, 4 * = KiB); - create_unimplemented_device("npcm8xx.flm2", 0xf0212000, 4 * = KiB); - create_unimplemented_device("npcm8xx.flm3", 0xf0213000, 4 * = KiB); - create_unimplemented_device("npcm8xx.ahbpci", 0xf0400000, 1 * = MiB); - create_unimplemented_device("npcm8xx.dap", 0xf0500000, 960 * = KiB); - create_unimplemented_device("npcm8xx.mcphy", 0xf05f0000, 64 * = KiB); - create_unimplemented_device("npcm8xx.tsgen", 0xf07fc000, 8 * = KiB); - create_unimplemented_device("npcm8xx.copctl", 0xf080c000, 4 * = KiB); - create_unimplemented_device("npcm8xx.tipctl", 0xf080d000, 4 * = KiB); - create_unimplemented_device("npcm8xx.rst", 0xf080e000, 4 * = KiB); - create_unimplemented_device("npcm8xx.vcd", 0xf0810000, 64 * = KiB); - create_unimplemented_device("npcm8xx.ece", 0xf0820000, 8 * = KiB); - create_unimplemented_device("npcm8xx.vdma", 0xf0822000, 8 * = KiB); - create_unimplemented_device("npcm8xx.usbd[0]", 0xf0830000, 4 * = KiB); - create_unimplemented_device("npcm8xx.usbd[1]", 0xf0831000, 4 * = KiB); - create_unimplemented_device("npcm8xx.usbd[2]", 0xf0832000, 4 * = KiB); - create_unimplemented_device("npcm8xx.usbd[3]", 0xf0833000, 4 * = KiB); - create_unimplemented_device("npcm8xx.usbd[4]", 0xf0834000, 4 * = KiB); - create_unimplemented_device("npcm8xx.usbd[5]", 0xf0835000, 4 * = KiB); - create_unimplemented_device("npcm8xx.usbd[6]", 0xf0836000, 4 * = KiB); - create_unimplemented_device("npcm8xx.usbd[7]", 0xf0837000, 4 * = KiB); - create_unimplemented_device("npcm8xx.usbd[8]", 0xf0838000, 4 * = KiB); - create_unimplemented_device("npcm8xx.usbd[9]", 0xf0839000, 4 * = KiB); - create_unimplemented_device("npcm8xx.pci_mbox1", 0xf0848000, 64 * = KiB); - create_unimplemented_device("npcm8xx.gdma0", 0xf0850000, 4 * = KiB); - create_unimplemented_device("npcm8xx.gdma1", 0xf0851000, 4 * = KiB); - create_unimplemented_device("npcm8xx.gdma2", 0xf0852000, 4 * = KiB); - create_unimplemented_device("npcm8xx.aes", 0xf0858000, 4 * = KiB); - create_unimplemented_device("npcm8xx.des", 0xf0859000, 4 * = KiB); - create_unimplemented_device("npcm8xx.sha", 0xf085a000, 4 * = KiB); - create_unimplemented_device("npcm8xx.pci_mbox2", 0xf0868000, 64 * = KiB); - create_unimplemented_device("npcm8xx.i3c0", 0xfff10000, 4 * = KiB); - create_unimplemented_device("npcm8xx.i3c1", 0xfff11000, 4 * = KiB); - create_unimplemented_device("npcm8xx.i3c2", 0xfff12000, 4 * = KiB); - create_unimplemented_device("npcm8xx.i3c3", 0xfff13000, 4 * = KiB); - create_unimplemented_device("npcm8xx.i3c4", 0xfff14000, 4 * = KiB); - create_unimplemented_device("npcm8xx.i3c5", 0xfff15000, 4 * = KiB); - create_unimplemented_device("npcm8xx.spixcs0", 0xf8000000, 16 * = MiB); - create_unimplemented_device("npcm8xx.spixcs1", 0xf9000000, 16 * = MiB); - create_unimplemented_device("npcm8xx.spix", 0xfb001000, 4 * = KiB); - create_unimplemented_device("npcm8xx.vect", 0xffff0000, 256); + create_unimplemented_device(obj, "npcm8xx.shm", 0xc0001000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.gicextra", 0xdfffa000, = 24 * KiB); + create_unimplemented_device(obj, "npcm8xx.vdmx", 0xe0800000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.pcierc", 0xe1000000, = 64 * KiB); + create_unimplemented_device(obj, "npcm8xx.rootc", 0xe8000000, 1= 28 * MiB); + create_unimplemented_device(obj, "npcm8xx.kcs", 0xf0007000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.gfxi", 0xf000e000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.fsw", 0xf000f000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.bt", 0xf0030000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.espi", 0xf009f000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.peci", 0xf0100000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.siox[1]", 0xf0101000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.siox[2]", 0xf0102000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.tmps", 0xf0188000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.viru1", 0xf0204000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.viru2", 0xf0205000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.jtm1", 0xf0208000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.jtm2", 0xf0209000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.flm0", 0xf0210000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.flm1", 0xf0211000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.flm2", 0xf0212000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.flm3", 0xf0213000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.ahbpci", 0xf0400000, = 1 * MiB); + create_unimplemented_device(obj, "npcm8xx.dap", 0xf0500000, 9= 60 * KiB); + create_unimplemented_device(obj, "npcm8xx.mcphy", 0xf05f0000, = 64 * KiB); + create_unimplemented_device(obj, "npcm8xx.tsgen", 0xf07fc000, = 8 * KiB); + create_unimplemented_device(obj, "npcm8xx.copctl", 0xf080c000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.tipctl", 0xf080d000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.rst", 0xf080e000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.vcd", 0xf0810000, = 64 * KiB); + create_unimplemented_device(obj, "npcm8xx.ece", 0xf0820000, = 8 * KiB); + create_unimplemented_device(obj, "npcm8xx.vdma", 0xf0822000, = 8 * KiB); + create_unimplemented_device(obj, "npcm8xx.usbd[0]", 0xf0830000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.usbd[1]", 0xf0831000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.usbd[2]", 0xf0832000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.usbd[3]", 0xf0833000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.usbd[4]", 0xf0834000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.usbd[5]", 0xf0835000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.usbd[6]", 0xf0836000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.usbd[7]", 0xf0837000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.usbd[8]", 0xf0838000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.usbd[9]", 0xf0839000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.pci_mbox1", 0xf0848000, = 64 * KiB); + create_unimplemented_device(obj, "npcm8xx.gdma0", 0xf0850000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.gdma1", 0xf0851000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.gdma2", 0xf0852000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.aes", 0xf0858000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.des", 0xf0859000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.sha", 0xf085a000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.pci_mbox2", 0xf0868000, = 64 * KiB); + create_unimplemented_device(obj, "npcm8xx.i3c0", 0xfff10000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.i3c1", 0xfff11000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.i3c2", 0xfff12000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.i3c3", 0xfff13000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.i3c4", 0xfff14000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.i3c5", 0xfff15000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.spixcs0", 0xf8000000, = 16 * MiB); + create_unimplemented_device(obj, "npcm8xx.spixcs1", 0xf9000000, = 16 * MiB); + create_unimplemented_device(obj, "npcm8xx.spix", 0xfb001000, = 4 * KiB); + create_unimplemented_device(obj, "npcm8xx.vect", 0xffff0000, = 256); } =20 static const Property npcm8xx_properties[] =3D { diff --git a/hw/arm/nrf51_soc.c b/hw/arm/nrf51_soc.c index 8d8ea71da4..f75b742242 100644 --- a/hw/arm/nrf51_soc.c +++ b/hw/arm/nrf51_soc.c @@ -171,9 +171,9 @@ static void nrf51_soc_realize(DeviceState *dev_soc, Err= or **errp) memory_region_add_subregion_overlap(&s->container, NRF51_IOMEM_BASE, &s->clock, -1); =20 - create_unimplemented_device("nrf51_soc.io", NRF51_IOMEM_BASE, + create_unimplemented_device(OBJECT(dev_soc), "nrf51_soc.io", NRF51_IOM= EM_BASE, NRF51_IOMEM_SIZE); - create_unimplemented_device("nrf51_soc.private", + create_unimplemented_device(OBJECT(dev_soc), "nrf51_soc.private", NRF51_PRIVATE_BASE, NRF51_PRIVATE_SIZE); } =20 diff --git a/hw/arm/stellaris.c b/hw/arm/stellaris.c index b2ff6f4d97..6a732a3c11 100644 --- a/hw/arm/stellaris.c +++ b/hw/arm/stellaris.c @@ -1381,12 +1381,12 @@ static void stellaris_init(MachineState *ms, stella= ris_board_info *board) /* Add dummy regions for the devices we don't implement yet, * so guest accesses don't cause unlogged crashes. */ - create_unimplemented_device("PWM", 0x40028000, 0x1000); - create_unimplemented_device("QEI-0", 0x4002c000, 0x1000); - create_unimplemented_device("QEI-1", 0x4002d000, 0x1000); - create_unimplemented_device("analogue-comparator", 0x4003c000, 0x1000); - create_unimplemented_device("hibernation", 0x400fc000, 0x1000); - create_unimplemented_device("flash-control", 0x400fd000, 0x1000); + create_unimplemented_device(OBJECT(ms), "PWM", 0x40028000, 0x1000); + create_unimplemented_device(OBJECT(ms), "QEI-0", 0x4002c000, 0x1000); + create_unimplemented_device(OBJECT(ms), "QEI-1", 0x4002d000, 0x1000); + create_unimplemented_device(OBJECT(ms), "analogue-comparator", 0x4003c= 000, 0x1000); + create_unimplemented_device(OBJECT(ms), "hibernation", 0x400fc000, 0x1= 000); + create_unimplemented_device(OBJECT(ms), "flash-control", 0x400fd000, 0= x1000); =20 armv7m_load_kernel(ARMV7M(armv7m)->cpu, ms->kernel_filename, 0, flash_= size); } diff --git a/hw/arm/stm32f100_soc.c b/hw/arm/stm32f100_soc.c index 2358368dba..e9e722f359 100644 --- a/hw/arm/stm32f100_soc.c +++ b/hw/arm/stm32f100_soc.c @@ -149,36 +149,36 @@ static void stm32f100_soc_realize(DeviceState *dev_so= c, Error **errp) sysbus_connect_irq(busdev, 0, qdev_get_gpio_in(armv7m, spi_irq[i])= ); } =20 - create_unimplemented_device("timer[2]", 0x40000000, 0x400); - create_unimplemented_device("timer[3]", 0x40000400, 0x400); - create_unimplemented_device("timer[4]", 0x40000800, 0x400); - create_unimplemented_device("timer[6]", 0x40001000, 0x400); - create_unimplemented_device("timer[7]", 0x40001400, 0x400); - create_unimplemented_device("RTC", 0x40002800, 0x400); - create_unimplemented_device("WWDG", 0x40002C00, 0x400); - create_unimplemented_device("IWDG", 0x40003000, 0x400); - create_unimplemented_device("I2C1", 0x40005400, 0x400); - create_unimplemented_device("I2C2", 0x40005800, 0x400); - create_unimplemented_device("BKP", 0x40006C00, 0x400); - create_unimplemented_device("PWR", 0x40007000, 0x400); - create_unimplemented_device("DAC", 0x40007400, 0x400); - create_unimplemented_device("CEC", 0x40007800, 0x400); - create_unimplemented_device("AFIO", 0x40010000, 0x400); - create_unimplemented_device("EXTI", 0x40010400, 0x400); - create_unimplemented_device("GPIOA", 0x40010800, 0x400); - create_unimplemented_device("GPIOB", 0x40010C00, 0x400); - create_unimplemented_device("GPIOC", 0x40011000, 0x400); - create_unimplemented_device("GPIOD", 0x40011400, 0x400); - create_unimplemented_device("GPIOE", 0x40011800, 0x400); - create_unimplemented_device("ADC1", 0x40012400, 0x400); - create_unimplemented_device("timer[1]", 0x40012C00, 0x400); - create_unimplemented_device("timer[15]", 0x40014000, 0x400); - create_unimplemented_device("timer[16]", 0x40014400, 0x400); - create_unimplemented_device("timer[17]", 0x40014800, 0x400); - create_unimplemented_device("DMA", 0x40020000, 0x400); - create_unimplemented_device("RCC", 0x40021000, 0x400); - create_unimplemented_device("Flash Int", 0x40022000, 0x400); - create_unimplemented_device("CRC", 0x40023000, 0x400); + create_unimplemented_device(OBJECT(dev_soc), "timer[2]", 0x40000000, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "timer[3]", 0x40000400, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "timer[4]", 0x40000800, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "timer[6]", 0x40001000, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "timer[7]", 0x40001400, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "RTC", 0x40002800, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "WWDG", 0x40002C00, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "IWDG", 0x40003000, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "I2C1", 0x40005400, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "I2C2", 0x40005800, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "BKP", 0x40006C00, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "PWR", 0x40007000, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "DAC", 0x40007400, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "CEC", 0x40007800, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "AFIO", 0x40010000, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "EXTI", 0x40010400, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "GPIOA", 0x40010800, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "GPIOB", 0x40010C00, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "GPIOC", 0x40011000, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "GPIOD", 0x40011400, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "GPIOE", 0x40011800, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "ADC1", 0x40012400, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "timer[1]", 0x40012C00, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "timer[15]", 0x40014000, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "timer[16]", 0x40014400, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "timer[17]", 0x40014800, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "DMA", 0x40020000, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "RCC", 0x40021000, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "Flash Int", 0x40022000, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "CRC", 0x40023000, = 0x400); } =20 static void stm32f100_soc_class_init(ObjectClass *klass, const void *data) diff --git a/hw/arm/stm32f405_soc.c b/hw/arm/stm32f405_soc.c index c2bc460603..dc9b3053a5 100644 --- a/hw/arm/stm32f405_soc.c +++ b/hw/arm/stm32f405_soc.c @@ -254,48 +254,48 @@ static void stm32f405_soc_realize(DeviceState *dev_so= c, Error **errp) qdev_connect_gpio_out(DEVICE(&s->syscfg), i, qdev_get_gpio_in(dev,= i)); } =20 - create_unimplemented_device("timer[7]", 0x40001400, 0x400); - create_unimplemented_device("timer[12]", 0x40001800, 0x400); - create_unimplemented_device("timer[6]", 0x40001000, 0x400); - create_unimplemented_device("timer[13]", 0x40001C00, 0x400); - create_unimplemented_device("timer[14]", 0x40002000, 0x400); - create_unimplemented_device("RTC and BKP", 0x40002800, 0x400); - create_unimplemented_device("WWDG", 0x40002C00, 0x400); - create_unimplemented_device("IWDG", 0x40003000, 0x400); - create_unimplemented_device("I2S2ext", 0x40003000, 0x400); - create_unimplemented_device("I2S3ext", 0x40004000, 0x400); - create_unimplemented_device("I2C1", 0x40005400, 0x400); - create_unimplemented_device("I2C2", 0x40005800, 0x400); - create_unimplemented_device("I2C3", 0x40005C00, 0x400); - create_unimplemented_device("CAN1", 0x40006400, 0x400); - create_unimplemented_device("CAN2", 0x40006800, 0x400); - create_unimplemented_device("PWR", 0x40007000, 0x400); - create_unimplemented_device("DAC", 0x40007400, 0x400); - create_unimplemented_device("timer[1]", 0x40010000, 0x400); - create_unimplemented_device("timer[8]", 0x40010400, 0x400); - create_unimplemented_device("SDIO", 0x40012C00, 0x400); - create_unimplemented_device("timer[9]", 0x40014000, 0x400); - create_unimplemented_device("timer[10]", 0x40014400, 0x400); - create_unimplemented_device("timer[11]", 0x40014800, 0x400); - create_unimplemented_device("GPIOA", 0x40020000, 0x400); - create_unimplemented_device("GPIOB", 0x40020400, 0x400); - create_unimplemented_device("GPIOC", 0x40020800, 0x400); - create_unimplemented_device("GPIOD", 0x40020C00, 0x400); - create_unimplemented_device("GPIOE", 0x40021000, 0x400); - create_unimplemented_device("GPIOF", 0x40021400, 0x400); - create_unimplemented_device("GPIOG", 0x40021800, 0x400); - create_unimplemented_device("GPIOH", 0x40021C00, 0x400); - create_unimplemented_device("GPIOI", 0x40022000, 0x400); - create_unimplemented_device("CRC", 0x40023000, 0x400); - create_unimplemented_device("Flash Int", 0x40023C00, 0x400); - create_unimplemented_device("BKPSRAM", 0x40024000, 0x400); - create_unimplemented_device("DMA1", 0x40026000, 0x400); - create_unimplemented_device("DMA2", 0x40026400, 0x400); - create_unimplemented_device("Ethernet", 0x40028000, 0x1400); - create_unimplemented_device("USB OTG HS", 0x40040000, 0x30000); - create_unimplemented_device("USB OTG FS", 0x50000000, 0x31000); - create_unimplemented_device("DCMI", 0x50050000, 0x400); - create_unimplemented_device("RNG", 0x50060800, 0x400); + create_unimplemented_device(OBJECT(dev_soc), "timer-unimp[7]", 0x40= 001400, 0x400); + create_unimplemented_device(OBJECT(dev_soc), "timer-unimp[12]", 0x40= 001800, 0x400); + create_unimplemented_device(OBJECT(dev_soc), "timer-unimp[6]", 0x40= 001000, 0x400); + create_unimplemented_device(OBJECT(dev_soc), "timer-unimp[13]", 0x40= 001C00, 0x400); + create_unimplemented_device(OBJECT(dev_soc), "timer-unimp[14]", 0x40= 002000, 0x400); + create_unimplemented_device(OBJECT(dev_soc), "RTC and BKP", 0x40002800= , 0x400); + create_unimplemented_device(OBJECT(dev_soc), "WWDG", 0x40002C00= , 0x400); + create_unimplemented_device(OBJECT(dev_soc), "IWDG", 0x40003000= , 0x400); + create_unimplemented_device(OBJECT(dev_soc), "I2S2ext", 0x40003000= , 0x400); + create_unimplemented_device(OBJECT(dev_soc), "I2S3ext", 0x40004000= , 0x400); + create_unimplemented_device(OBJECT(dev_soc), "I2C1", 0x40005400= , 0x400); + create_unimplemented_device(OBJECT(dev_soc), "I2C2", 0x40005800= , 0x400); + create_unimplemented_device(OBJECT(dev_soc), "I2C3", 0x40005C00= , 0x400); + create_unimplemented_device(OBJECT(dev_soc), "CAN1", 0x40006400= , 0x400); + create_unimplemented_device(OBJECT(dev_soc), "CAN2", 0x40006800= , 0x400); + create_unimplemented_device(OBJECT(dev_soc), "PWR", 0x40007000= , 0x400); + create_unimplemented_device(OBJECT(dev_soc), "DAC", 0x40007400= , 0x400); + create_unimplemented_device(OBJECT(dev_soc), "timer-unimp[1]", 0x40= 010000, 0x400); + create_unimplemented_device(OBJECT(dev_soc), "timer-unimp[8]", 0x40= 010400, 0x400); + create_unimplemented_device(OBJECT(dev_soc), "SDIO", 0x40012C00= , 0x400); + create_unimplemented_device(OBJECT(dev_soc), "timer-unimp[9]", 0x40= 014000, 0x400); + create_unimplemented_device(OBJECT(dev_soc), "timer-unimp[10]", 0x40= 014400, 0x400); + create_unimplemented_device(OBJECT(dev_soc), "timer-unimp[11]", 0x40= 014800, 0x400); + create_unimplemented_device(OBJECT(dev_soc), "GPIOA", 0x40020000= , 0x400); + create_unimplemented_device(OBJECT(dev_soc), "GPIOB", 0x40020400= , 0x400); + create_unimplemented_device(OBJECT(dev_soc), "GPIOC", 0x40020800= , 0x400); + create_unimplemented_device(OBJECT(dev_soc), "GPIOD", 0x40020C00= , 0x400); + create_unimplemented_device(OBJECT(dev_soc), "GPIOE", 0x40021000= , 0x400); + create_unimplemented_device(OBJECT(dev_soc), "GPIOF", 0x40021400= , 0x400); + create_unimplemented_device(OBJECT(dev_soc), "GPIOG", 0x40021800= , 0x400); + create_unimplemented_device(OBJECT(dev_soc), "GPIOH", 0x40021C00= , 0x400); + create_unimplemented_device(OBJECT(dev_soc), "GPIOI", 0x40022000= , 0x400); + create_unimplemented_device(OBJECT(dev_soc), "CRC", 0x40023000= , 0x400); + create_unimplemented_device(OBJECT(dev_soc), "Flash Int", 0x40023C00= , 0x400); + create_unimplemented_device(OBJECT(dev_soc), "BKPSRAM", 0x40024000= , 0x400); + create_unimplemented_device(OBJECT(dev_soc), "DMA1", 0x40026000= , 0x400); + create_unimplemented_device(OBJECT(dev_soc), "DMA2", 0x40026400= , 0x400); + create_unimplemented_device(OBJECT(dev_soc), "Ethernet", 0x40028000= , 0x1400); + create_unimplemented_device(OBJECT(dev_soc), "USB OTG HS", 0x40040000= , 0x30000); + create_unimplemented_device(OBJECT(dev_soc), "USB OTG FS", 0x50000000= , 0x31000); + create_unimplemented_device(OBJECT(dev_soc), "DCMI", 0x50050000= , 0x400); + create_unimplemented_device(OBJECT(dev_soc), "RNG", 0x50060800= , 0x400); } =20 static void stm32f405_soc_class_init(ObjectClass *klass, const void *data) diff --git a/hw/arm/stm32l4x5_soc.c b/hw/arm/stm32l4x5_soc.c index 39b8cdf97d..d94ef49217 100644 --- a/hw/arm/stm32l4x5_soc.c +++ b/hw/arm/stm32l4x5_soc.c @@ -359,80 +359,80 @@ static void stm32l4x5_soc_realize(DeviceState *dev_so= c, Error **errp) EXTI_LPUART1_IRQ)); =20 /* APB1 BUS */ - create_unimplemented_device("TIM2", 0x40000000, 0x400); - create_unimplemented_device("TIM3", 0x40000400, 0x400); - create_unimplemented_device("TIM4", 0x40000800, 0x400); - create_unimplemented_device("TIM5", 0x40000C00, 0x400); - create_unimplemented_device("TIM6", 0x40001000, 0x400); - create_unimplemented_device("TIM7", 0x40001400, 0x400); + create_unimplemented_device(OBJECT(dev_soc), "TIM2", 0x40000000, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "TIM3", 0x40000400, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "TIM4", 0x40000800, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "TIM5", 0x40000C00, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "TIM6", 0x40001000, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "TIM7", 0x40001400, = 0x400); /* RESERVED: 0x40001800, 0x1000 */ - create_unimplemented_device("RTC", 0x40002800, 0x400); - create_unimplemented_device("WWDG", 0x40002C00, 0x400); - create_unimplemented_device("IWDG", 0x40003000, 0x400); + create_unimplemented_device(OBJECT(dev_soc), "RTC", 0x40002800, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "WWDG", 0x40002C00, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "IWDG", 0x40003000, = 0x400); /* RESERVED: 0x40001800, 0x400 */ - create_unimplemented_device("SPI2", 0x40003800, 0x400); - create_unimplemented_device("SPI3", 0x40003C00, 0x400); + create_unimplemented_device(OBJECT(dev_soc), "SPI2", 0x40003800, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "SPI3", 0x40003C00, = 0x400); /* RESERVED: 0x40004000, 0x400 */ - create_unimplemented_device("I2C1", 0x40005400, 0x400); - create_unimplemented_device("I2C2", 0x40005800, 0x400); - create_unimplemented_device("I2C3", 0x40005C00, 0x400); + create_unimplemented_device(OBJECT(dev_soc), "I2C1", 0x40005400, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "I2C2", 0x40005800, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "I2C3", 0x40005C00, = 0x400); /* RESERVED: 0x40006000, 0x400 */ - create_unimplemented_device("CAN1", 0x40006400, 0x400); + create_unimplemented_device(OBJECT(dev_soc), "CAN1", 0x40006400, = 0x400); /* RESERVED: 0x40006800, 0x400 */ - create_unimplemented_device("PWR", 0x40007000, 0x400); - create_unimplemented_device("DAC1", 0x40007400, 0x400); - create_unimplemented_device("OPAMP", 0x40007800, 0x400); - create_unimplemented_device("LPTIM1", 0x40007C00, 0x400); + create_unimplemented_device(OBJECT(dev_soc), "PWR", 0x40007000, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "DAC1", 0x40007400, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "OPAMP", 0x40007800, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "LPTIM1", 0x40007C00, = 0x400); /* RESERVED: 0x40008400, 0x400 */ - create_unimplemented_device("SWPMI1", 0x40008800, 0x400); + create_unimplemented_device(OBJECT(dev_soc), "SWPMI1", 0x40008800, = 0x400); /* RESERVED: 0x40008C00, 0x800 */ - create_unimplemented_device("LPTIM2", 0x40009400, 0x400); + create_unimplemented_device(OBJECT(dev_soc), "LPTIM2", 0x40009400, = 0x400); /* RESERVED: 0x40009800, 0x6800 */ =20 /* APB2 BUS */ - create_unimplemented_device("VREFBUF", 0x40010030, 0x1D0); - create_unimplemented_device("COMP", 0x40010200, 0x200); + create_unimplemented_device(OBJECT(dev_soc), "VREFBUF", 0x40010030, = 0x1D0); + create_unimplemented_device(OBJECT(dev_soc), "COMP", 0x40010200, = 0x200); /* RESERVED: 0x40010800, 0x1400 */ - create_unimplemented_device("FIREWALL", 0x40011C00, 0x400); + create_unimplemented_device(OBJECT(dev_soc), "FIREWALL", 0x40011C00, = 0x400); /* RESERVED: 0x40012000, 0x800 */ - create_unimplemented_device("SDMMC1", 0x40012800, 0x400); - create_unimplemented_device("TIM1", 0x40012C00, 0x400); - create_unimplemented_device("SPI1", 0x40013000, 0x400); - create_unimplemented_device("TIM8", 0x40013400, 0x400); + create_unimplemented_device(OBJECT(dev_soc), "SDMMC1", 0x40012800, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "TIM1", 0x40012C00, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "SPI1", 0x40013000, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "TIM8", 0x40013400, = 0x400); /* RESERVED: 0x40013C00, 0x400 */ - create_unimplemented_device("TIM15", 0x40014000, 0x400); - create_unimplemented_device("TIM16", 0x40014400, 0x400); - create_unimplemented_device("TIM17", 0x40014800, 0x400); + create_unimplemented_device(OBJECT(dev_soc), "TIM15", 0x40014000, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "TIM16", 0x40014400, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "TIM17", 0x40014800, = 0x400); /* RESERVED: 0x40014C00, 0x800 */ - create_unimplemented_device("SAI1", 0x40015400, 0x400); - create_unimplemented_device("SAI2", 0x40015800, 0x400); + create_unimplemented_device(OBJECT(dev_soc), "SAI1", 0x40015400, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "SAI2", 0x40015800, = 0x400); /* RESERVED: 0x40015C00, 0x400 */ - create_unimplemented_device("DFSDM1", 0x40016000, 0x400); + create_unimplemented_device(OBJECT(dev_soc), "DFSDM1", 0x40016000, = 0x400); /* RESERVED: 0x40016400, 0x9C00 */ =20 /* AHB1 BUS */ - create_unimplemented_device("DMA1", 0x40020000, 0x400); - create_unimplemented_device("DMA2", 0x40020400, 0x400); + create_unimplemented_device(OBJECT(dev_soc), "DMA1", 0x40020000, = 0x400); + create_unimplemented_device(OBJECT(dev_soc), "DMA2", 0x40020400, = 0x400); /* RESERVED: 0x40020800, 0x800 */ /* RESERVED: 0x40021400, 0xC00 */ - create_unimplemented_device("FLASH", 0x40022000, 0x400); + create_unimplemented_device(OBJECT(dev_soc), "FLASH", 0x40022000, = 0x400); /* RESERVED: 0x40022400, 0xC00 */ - create_unimplemented_device("CRC", 0x40023000, 0x400); + create_unimplemented_device(OBJECT(dev_soc), "CRC", 0x40023000, = 0x400); /* RESERVED: 0x40023400, 0x400 */ - create_unimplemented_device("TSC", 0x40024000, 0x400); + create_unimplemented_device(OBJECT(dev_soc), "TSC", 0x40024000, = 0x400); =20 /* RESERVED: 0x40024400, 0x7FDBC00 */ =20 /* AHB2 BUS */ /* RESERVED: 0x48002000, 0x7FDBC00 */ - create_unimplemented_device("OTG_FS", 0x50000000, 0x40000); - create_unimplemented_device("ADC", 0x50040000, 0x400); + create_unimplemented_device(OBJECT(dev_soc), "OTG_FS", 0x50000000, = 0x40000); + create_unimplemented_device(OBJECT(dev_soc), "ADC", 0x50040000, = 0x400); /* RESERVED: 0x50040400, 0x20400 */ - create_unimplemented_device("RNG", 0x50060800, 0x400); + create_unimplemented_device(OBJECT(dev_soc), "RNG", 0x50060800, = 0x400); =20 /* AHB3 BUS */ - create_unimplemented_device("FMC", 0xA0000000, 0x1000); - create_unimplemented_device("QUADSPI", 0xA0001000, 0x400); + create_unimplemented_device(OBJECT(dev_soc), "FMC", 0xA0000000, = 0x1000); + create_unimplemented_device(OBJECT(dev_soc), "QUADSPI", 0xA0001000, = 0x400); } =20 static void stm32l4x5_soc_class_init(ObjectClass *klass, const void *data) diff --git a/hw/arm/xilinx_zynq.c b/hw/arm/xilinx_zynq.c index 378ab532a3..30f0ce5b5f 100644 --- a/hw/arm/xilinx_zynq.c +++ b/hw/arm/xilinx_zynq.c @@ -205,6 +205,7 @@ static void ddr_ctrl_init(Object *parent, uint32_t base) =20 static void zynq_init(MachineState *machine) { + Object *obj =3D OBJECT(machine); ZynqMachineState *zynq_machine =3D ZYNQ_MACHINE(machine); MemoryRegion *address_space_mem =3D get_system_memory(); MemoryRegion *ocm_ram =3D g_new(MemoryRegion, 1); @@ -390,67 +391,67 @@ static void zynq_init(MachineState *machine) * Refer to the ug585-Zynq-7000-TRM manual B.3 (Module Summary) and * the zynq-7000.dtsi. Add placeholders for unimplemented devices. */ - create_unimplemented_device("zynq.i2c0", 0xE0004000, 4 * KiB); - create_unimplemented_device("zynq.i2c1", 0xE0005000, 4 * KiB); - create_unimplemented_device("zynq.can0", 0xE0008000, 4 * KiB); - create_unimplemented_device("zynq.can1", 0xE0009000, 4 * KiB); - create_unimplemented_device("zynq.gpio", 0xE000A000, 4 * KiB); - create_unimplemented_device("zynq.smcc", 0xE000E000, 4 * KiB); + create_unimplemented_device(obj, "zynq.i2c0", 0xE0004000, 4 * KiB); + create_unimplemented_device(obj, "zynq.i2c1", 0xE0005000, 4 * KiB); + create_unimplemented_device(obj, "zynq.can0", 0xE0008000, 4 * KiB); + create_unimplemented_device(obj, "zynq.can1", 0xE0009000, 4 * KiB); + create_unimplemented_device(obj, "zynq.gpio", 0xE000A000, 4 * KiB); + create_unimplemented_device(obj, "zynq.smcc", 0xE000E000, 4 * KiB); =20 /* Direct Memory Access Controller, PL330, Non-Secure Mode */ - create_unimplemented_device("zynq.dma_ns", 0xF8004000, 4 * KiB); + create_unimplemented_device(obj, "zynq.dma_ns", 0xF8004000, 4 * KiB); =20 /* System Watchdog Timer Registers */ - create_unimplemented_device("zynq.swdt", 0xF8005000, 4 * KiB); + create_unimplemented_device(obj, "zynq.swdt", 0xF8005000, 4 * KiB); =20 /* AXI_HP Interface (AFI) */ - create_unimplemented_device("zynq.axi_hp0", 0xF8008000, 0x28); - create_unimplemented_device("zynq.axi_hp1", 0xF8009000, 0x28); - create_unimplemented_device("zynq.axi_hp2", 0xF800A000, 0x28); - create_unimplemented_device("zynq.axi_hp3", 0xF800B000, 0x28); + create_unimplemented_device(obj, "zynq.axi_hp0", 0xF8008000, 0x28); + create_unimplemented_device(obj, "zynq.axi_hp1", 0xF8009000, 0x28); + create_unimplemented_device(obj, "zynq.axi_hp2", 0xF800A000, 0x28); + create_unimplemented_device(obj, "zynq.axi_hp3", 0xF800B000, 0x28); =20 - create_unimplemented_device("zynq.efuse", 0xF800d000, 0x20); + create_unimplemented_device(obj, "zynq.efuse", 0xF800d000, 0x20); =20 /* Embedded Trace Buffer */ - create_unimplemented_device("zynq.etb", 0xF8801000, 4 * KiB); + create_unimplemented_device(obj, "zynq.etb", 0xF8801000, 4 * KiB); =20 /* Cross Trigger Interface, ETB and TPIU */ - create_unimplemented_device("zynq.cti_etb_tpiu", 0xF8802000, 4 * KiB); + create_unimplemented_device(obj, "zynq.cti_etb_tpiu", 0xF8802000, 4 * = KiB); =20 /* Trace Port Interface Unit */ - create_unimplemented_device("zynq.tpiu", 0xF8803000, 4 * KiB); + create_unimplemented_device(obj, "zynq.tpiu", 0xF8803000, 4 * KiB); =20 /* CoreSight Trace Funnel */ - create_unimplemented_device("zynq.funnel", 0xF8804000, 4 * KiB); + create_unimplemented_device(obj, "zynq.funnel", 0xF8804000, 4 * KiB); =20 /* Instrumentation Trace Macrocell */ - create_unimplemented_device("zynq.itm", 0xF8805000, 4 * KiB); + create_unimplemented_device(obj, "zynq.itm", 0xF8805000, 4 * KiB); =20 /* Cross Trigger Interface, FTM */ - create_unimplemented_device("zynq.cti_ftm", 0xF8809000, 4 * KiB); + create_unimplemented_device(obj, "zynq.cti_ftm", 0xF8809000, 4 * KiB); =20 /* Fabric Trace Macrocell */ - create_unimplemented_device("zynq.ftm", 0xF880B000, 4 * KiB); + create_unimplemented_device(obj, "zynq.ftm", 0xF880B000, 4 * KiB); =20 /* Cortex A9 Performance Monitoring Unit, CPU */ - create_unimplemented_device("cortex-a9.pmu0", 0xF8891000, 4 * KiB); - create_unimplemented_device("cortex-a9.pmu1", 0xF8893000, 4 * KiB); + create_unimplemented_device(obj, "cortex-a9.pmu0", 0xF8891000, 4 * KiB= ); + create_unimplemented_device(obj, "cortex-a9.pmu1", 0xF8893000, 4 * KiB= ); =20 /* Cross Trigger Interface, CPU */ - create_unimplemented_device("zynq.cpu_cti0", 0xF8898000, 4 * KiB); - create_unimplemented_device("zynq.cpu_cti1", 0xF8899000, 4 * KiB); + create_unimplemented_device(obj, "zynq.cpu_cti0", 0xF8898000, 4 * KiB); + create_unimplemented_device(obj, "zynq.cpu_cti1", 0xF8899000, 4 * KiB); =20 /* CoreSight PTM-A9, CPU */ - create_unimplemented_device("cortex-a9.ptm0", 0xF889c000, 4 * KiB); - create_unimplemented_device("cortex-a9.ptm1", 0xF889d000, 4 * KiB); + create_unimplemented_device(obj, "cortex-a9.ptm0", 0xF889c000, 4 * KiB= ); + create_unimplemented_device(obj, "cortex-a9.ptm1", 0xF889d000, 4 * KiB= ); =20 /* AMBA NIC301 TrustZone */ - create_unimplemented_device("zynq.trustZone", 0xF8900000, 0x20); + create_unimplemented_device(obj, "zynq.trustZone", 0xF8900000, 0x20); =20 /* AMBA Network Interconnect Advanced Quality of Service (QoS-301) */ - create_unimplemented_device("zynq.qos301_cpu", 0xF8946000, 0x130); - create_unimplemented_device("zynq.qos301_dmac", 0xF8947000, 0x130); - create_unimplemented_device("zynq.qos301_iou", 0xF8948000, 0x130); + create_unimplemented_device(obj, "zynq.qos301_cpu", 0xF8946000, 0x130); + create_unimplemented_device(obj, "zynq.qos301_dmac", 0xF8947000, 0x130= ); + create_unimplemented_device(obj, "zynq.qos301_iou", 0xF8948000, 0x130); =20 zynq_binfo.ram_size =3D machine->ram_size; zynq_binfo.board_id =3D 0xd32; diff --git a/hw/avr/atmega.c b/hw/avr/atmega.c index 5eb640f628..b124db001f 100644 --- a/hw/avr/atmega.c +++ b/hw/avr/atmega.c @@ -312,7 +312,7 @@ static void atmega_realize(DeviceState *dev, Error **er= rp) continue; } devname =3D g_strdup_printf("atmega-gpio-%c", 'a' + (char)i); - create_unimplemented_device(devname, + create_unimplemented_device(OBJECT(dev), devname, OFFSET_DATA + mc->dev[idx].addr, 3); g_free(devname); } @@ -344,12 +344,12 @@ static void atmega_realize(DeviceState *dev, Error **= errp) continue; } if (!mc->dev[idx].is_timer16) { - create_unimplemented_device("avr-timer8", + create_unimplemented_device(OBJECT(dev), "avr-timer8", OFFSET_DATA + mc->dev[idx].addr, 5= ); - create_unimplemented_device("avr-timer8-intmask", + create_unimplemented_device(OBJECT(dev), "avr-timer8-intmask", OFFSET_DATA + mc->dev[idx].intmask_addr, 1); - create_unimplemented_device("avr-timer8-intflag", + create_unimplemented_device(OBJECT(dev), "avr-timer8-intflag", OFFSET_DATA + mc->dev[idx].intflag_addr, 1); continue; @@ -373,12 +373,12 @@ static void atmega_realize(DeviceState *dev, Error **= errp) g_free(devname); } =20 - create_unimplemented_device("avr-twi", OFFSET_DATA + 0x0b8, 6= ); - create_unimplemented_device("avr-adc", OFFSET_DATA + 0x078, 8= ); - create_unimplemented_device("avr-ext-mem-ctrl", OFFSET_DATA + 0x074, 2= ); - create_unimplemented_device("avr-watchdog", OFFSET_DATA + 0x060, 1= ); - create_unimplemented_device("avr-spi", OFFSET_DATA + 0x04c, 3= ); - create_unimplemented_device("avr-eeprom", OFFSET_DATA + 0x03f, 3= ); + create_unimplemented_device(OBJECT(dev), "avr-twi", OFFSET_DA= TA + 0x0b8, 6); + create_unimplemented_device(OBJECT(dev), "avr-adc", OFFSET_DA= TA + 0x078, 8); + create_unimplemented_device(OBJECT(dev), "avr-ext-mem-ctrl", OFFSET_DA= TA + 0x074, 2); + create_unimplemented_device(OBJECT(dev), "avr-watchdog", OFFSET_DA= TA + 0x060, 1); + create_unimplemented_device(OBJECT(dev), "avr-spi", OFFSET_DA= TA + 0x04c, 3); + create_unimplemented_device(OBJECT(dev), "avr-eeprom", OFFSET_DA= TA + 0x03f, 3); } =20 static const Property atmega_props[] =3D { diff --git a/hw/loongarch/virt.c b/hw/loongarch/virt.c index 20a68ebd44..24d8dc6e57 100644 --- a/hw/loongarch/virt.c +++ b/hw/loongarch/virt.c @@ -483,7 +483,7 @@ static void virt_devices_init(DeviceState *pch_pic, * There are some invalid guest memory access. * Create some unimplemented devices to emulate this. */ - create_unimplemented_device("pci-dma-cfg", 0x1001041c, 0x4); + create_unimplemented_device(OBJECT(lvms), "pci-dma-cfg", 0x1001041c, 0= x4); sysbus_create_simple(OBJECT(lvms), "rtc", "ls7a_rtc", VIRT_RTC_REG_BAS= E, qdev_get_gpio_in(pch_pic, VIRT_RTC_IRQ - VIRT_GSI_BASE)); diff --git a/hw/microblaze/petalogix_s3adsp1800_mmu.c b/hw/microblaze/petal= ogix_s3adsp1800_mmu.c index 0979d3632b..6986eb7732 100644 --- a/hw/microblaze/petalogix_s3adsp1800_mmu.c +++ b/hw/microblaze/petalogix_s3adsp1800_mmu.c @@ -144,7 +144,7 @@ petalogix_s3adsp1800_init(MachineState *machine) sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, ETHLITE_BASEADDR); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, irq[ETHLITE_IRQ]); =20 - create_unimplemented_device("xps_gpio", GPIO_BASEADDR, 0x10000); + create_unimplemented_device(OBJECT(machine), "xps_gpio", GPIO_BASEADDR= , 0x10000); =20 microblaze_load_kernel(cpu, endianness =3D=3D ENDIAN_MODE_LITTLE, ddr_= base, ram_size, machine->initrd_filename, diff --git a/hw/mips/loongson3_virt.c b/hw/mips/loongson3_virt.c index 99d2016ef1..8d8430562c 100644 --- a/hw/mips/loongson3_virt.c +++ b/hw/mips/loongson3_virt.c @@ -478,6 +478,7 @@ static inline void loongson3_virt_devices_init(MachineS= tate *machine, =20 static void mips_loongson3_virt_init(MachineState *machine) { + Object *obj =3D OBJECT(machine); int i; long bios_size; MIPSCPU *cpu =3D NULL; @@ -515,8 +516,8 @@ static void mips_loongson3_virt_init(MachineState *mach= ine) * exception when accessing invalid memory. Create some unimplememted * devices to emulate this feature. */ - create_unimplemented_device("mmio fallback 0", 0x10000000, 256 * MiB); - create_unimplemented_device("mmio fallback 1", 0x30000000, 256 * MiB); + create_unimplemented_device(obj, "mmio fallback 0", 0x10000000, 256 * = MiB); + create_unimplemented_device(obj, "mmio fallback 1", 0x30000000, 256 * = MiB); =20 memory_region_init(iocsr, OBJECT(machine), "loongson3.iocsr", UINT32_M= AX); =20 diff --git a/hw/pci-host/bonito.c b/hw/pci-host/bonito.c index 83b328840a..7b4259c0e7 100644 --- a/hw/pci-host/bonito.c +++ b/hw/pci-host/bonito.c @@ -647,7 +647,7 @@ static void bonito_host_realize(DeviceState *dev, Error= **errp) g_free(name); } =20 - create_unimplemented_device("pci.io", BONITO_PCIIO_BASE, 1 * MiB); + create_unimplemented_device(OBJECT(dev), "pci.io", BONITO_PCIIO_BASE, = 1 * MiB); } =20 static void bonito_pci_realize(PCIDevice *dev, Error **errp) @@ -681,7 +681,7 @@ static void bonito_pci_realize(PCIDevice *dev, Error **= errp) memory_region_add_subregion(host_mem, BONITO_SPCICONFIG_BASE, &phb->data_mem); =20 - create_unimplemented_device("bonito", BONITO_REG_BASE, BONITO_REG_SIZE= ); + create_unimplemented_device(OBJECT(dev), "bonito", BONITO_REG_BASE, BO= NITO_REG_SIZE); =20 memory_region_init_io(&s->iomem_ldma, OBJECT(s), &bonito_ldma_ops, s, "ldma", 0x100); @@ -692,7 +692,7 @@ static void bonito_pci_realize(PCIDevice *dev, Error **= errp) "cop", 0x100); memory_region_add_subregion(host_mem, 0x1fe00300, &s->iomem_cop); =20 - create_unimplemented_device("ROMCS", BONITO_FLASH_BASE, 60 * MiB); + create_unimplemented_device(OBJECT(dev), "ROMCS", BONITO_FLASH_BASE, 6= 0 * MiB); =20 /* Map PCI IO Space 0x1fd0 0000 - 0x1fd1 0000 */ memory_region_init_alias(&s->bonito_pciio, OBJECT(s), "isa_mmio", @@ -706,17 +706,17 @@ static void bonito_pci_realize(PCIDevice *dev, Error = **errp) get_system_io(), 0, 256 * KiB); memory_region_add_subregion(host_mem, BONITO_DEV_BASE, &s->bonito_localio); - create_unimplemented_device("IOCS[1]", BONITO_DEV_BASE + 1 * 256 * KiB, + create_unimplemented_device(OBJECT(dev), "IOCS[1]", BONITO_DEV_BASE + = 1 * 256 * KiB, 256 * KiB); - create_unimplemented_device("IOCS[2]", BONITO_DEV_BASE + 2 * 256 * KiB, + create_unimplemented_device(OBJECT(dev), "IOCS[2]", BONITO_DEV_BASE + = 2 * 256 * KiB, 256 * KiB); - create_unimplemented_device("IOCS[3]", BONITO_DEV_BASE + 3 * 256 * KiB, + create_unimplemented_device(OBJECT(dev), "IOCS[3]", BONITO_DEV_BASE + = 3 * 256 * KiB, 256 * KiB); =20 memory_region_init_alias(pcimem_alias, NULL, "pci.mem.alias", &bs->pci_mem, 0, BONITO_PCIHI_SIZE); memory_region_add_subregion(host_mem, BONITO_PCIHI_BASE, pcimem_alias); - create_unimplemented_device("PCI_2", + create_unimplemented_device(OBJECT(dev), "PCI_2", (hwaddr)BONITO_PCIHI_BASE + BONITO_PCIHI_S= IZE, 2 * GiB); =20 diff --git a/hw/riscv/k230.c b/hw/riscv/k230.c index d51ad08d87..901106d602 100644 --- a/hw/riscv/k230.c +++ b/hw/riscv/k230.c @@ -144,7 +144,7 @@ static void k230_create_uart(Object *parent, MemoryRegi= on *sys_mem, g_autofree char *name =3D g_strdup_printf("uart%d", index); =20 /* Cover the non-16550 part of the SDK's 0x1000 UART window. */ - create_unimplemented_device(name, memmap[uart_dev].base, + create_unimplemented_device(parent, name, memmap[uart_dev].base, memmap[uart_dev].size); =20 serial_mm_init(parent, sys_mem, memmap[uart_dev].base, 2, @@ -154,6 +154,7 @@ static void k230_create_uart(Object *parent, MemoryRegi= on *sys_mem, =20 static void k230_soc_realize(DeviceState *dev, Error **errp) { + Object *obj =3D OBJECT(dev); K230SoCState *s =3D RISCV_K230_SOC(dev); MemoryRegion *sys_mem =3D get_system_memory(); int c908_cpus; @@ -209,164 +210,164 @@ static void k230_soc_realize(DeviceState *dev, Erro= r **errp) qdev_get_gpio_in(DEVICE(s->c908_plic), K230_WDT1_IR= Q)); =20 /* unimplemented devices */ - create_unimplemented_device("kpu.l2-cache", + create_unimplemented_device(obj, "kpu.l2-cache", memmap[K230_DEV_KPU_L2_CACHE].base, memmap[K230_DEV_KPU_L2_CACHE].size); =20 - create_unimplemented_device("kpu_cfg", memmap[K230_DEV_KPU_CFG].base, + create_unimplemented_device(obj, "kpu_cfg", memmap[K230_DEV_KPU_CFG].b= ase, memmap[K230_DEV_KPU_CFG].size); =20 - create_unimplemented_device("fft", memmap[K230_DEV_FFT].base, + create_unimplemented_device(obj, "fft", memmap[K230_DEV_FFT].base, memmap[K230_DEV_FFT].size); =20 - create_unimplemented_device("2d-engine.ai", + create_unimplemented_device(obj, "2d-engine.ai", memmap[K230_DEV_AI_2D_ENGINE].base, memmap[K230_DEV_AI_2D_ENGINE].size); =20 - create_unimplemented_device("gsdma", memmap[K230_DEV_GSDMA].base, + create_unimplemented_device(obj, "gsdma", memmap[K230_DEV_GSDMA].base, memmap[K230_DEV_GSDMA].size); =20 - create_unimplemented_device("dma", memmap[K230_DEV_DMA].base, + create_unimplemented_device(obj, "dma", memmap[K230_DEV_DMA].base, memmap[K230_DEV_DMA].size); =20 - create_unimplemented_device("decomp-gzip", + create_unimplemented_device(obj, "decomp-gzip", memmap[K230_DEV_DECOMP_GZIP].base, memmap[K230_DEV_DECOMP_GZIP].size); =20 - create_unimplemented_device("2d-engine.non-ai", + create_unimplemented_device(obj, "2d-engine.non-ai", memmap[K230_DEV_NON_AI_2D].base, memmap[K230_DEV_NON_AI_2D].size); =20 - create_unimplemented_device("isp", memmap[K230_DEV_ISP].base, + create_unimplemented_device(obj, "isp", memmap[K230_DEV_ISP].base, memmap[K230_DEV_ISP].size); =20 - create_unimplemented_device("dewarp", memmap[K230_DEV_DEWARP].base, + create_unimplemented_device(obj, "dewarp", memmap[K230_DEV_DEWARP].bas= e, memmap[K230_DEV_DEWARP].size); =20 - create_unimplemented_device("rx-csi", memmap[K230_DEV_RX_CSI].base, + create_unimplemented_device(obj, "rx-csi", memmap[K230_DEV_RX_CSI].bas= e, memmap[K230_DEV_RX_CSI].size); =20 - create_unimplemented_device("vpu", memmap[K230_DEV_H264].base, + create_unimplemented_device(obj, "vpu", memmap[K230_DEV_H264].base, memmap[K230_DEV_H264].size); =20 - create_unimplemented_device("gpu", memmap[K230_DEV_2P5D].base, + create_unimplemented_device(obj, "gpu", memmap[K230_DEV_2P5D].base, memmap[K230_DEV_2P5D].size); =20 - create_unimplemented_device("vo", memmap[K230_DEV_VO].base, + create_unimplemented_device(obj, "vo", memmap[K230_DEV_VO].base, memmap[K230_DEV_VO].size); =20 - create_unimplemented_device("vo_cfg", memmap[K230_DEV_VO_CFG].base, + create_unimplemented_device(obj, "vo_cfg", memmap[K230_DEV_VO_CFG].bas= e, memmap[K230_DEV_VO_CFG].size); =20 - create_unimplemented_device("3d-engine", memmap[K230_DEV_3D_ENGINE].ba= se, + create_unimplemented_device(obj, "3d-engine", memmap[K230_DEV_3D_ENGIN= E].base, memmap[K230_DEV_3D_ENGINE].size); =20 - create_unimplemented_device("pmu", memmap[K230_DEV_PMU].base, + create_unimplemented_device(obj, "pmu", memmap[K230_DEV_PMU].base, memmap[K230_DEV_PMU].size); =20 - create_unimplemented_device("rtc", memmap[K230_DEV_RTC].base, + create_unimplemented_device(obj, "rtc", memmap[K230_DEV_RTC].base, memmap[K230_DEV_RTC].size); =20 - create_unimplemented_device("cmu", memmap[K230_DEV_CMU].base, + create_unimplemented_device(obj, "cmu", memmap[K230_DEV_CMU].base, memmap[K230_DEV_CMU].size); =20 - create_unimplemented_device("rmu", memmap[K230_DEV_RMU].base, + create_unimplemented_device(obj, "rmu", memmap[K230_DEV_RMU].base, memmap[K230_DEV_RMU].size); =20 - create_unimplemented_device("boot", memmap[K230_DEV_BOOT].base, + create_unimplemented_device(obj, "boot", memmap[K230_DEV_BOOT].base, memmap[K230_DEV_BOOT].size); =20 - create_unimplemented_device("pwr", memmap[K230_DEV_PWR].base, + create_unimplemented_device(obj, "pwr", memmap[K230_DEV_PWR].base, memmap[K230_DEV_PWR].size); =20 - create_unimplemented_device("ipcm", memmap[K230_DEV_MAILBOX].base, + create_unimplemented_device(obj, "ipcm", memmap[K230_DEV_MAILBOX].base, memmap[K230_DEV_MAILBOX].size); =20 - create_unimplemented_device("iomux", memmap[K230_DEV_IOMUX].base, + create_unimplemented_device(obj, "iomux", memmap[K230_DEV_IOMUX].base, memmap[K230_DEV_IOMUX].size); =20 - create_unimplemented_device("timer", memmap[K230_DEV_TIMER].base, + create_unimplemented_device(obj, "timer", memmap[K230_DEV_TIMER].base, memmap[K230_DEV_TIMER].size); =20 - create_unimplemented_device("wdt0", memmap[K230_DEV_WDT0].base, + create_unimplemented_device(obj, "wdt0", memmap[K230_DEV_WDT0].base, memmap[K230_DEV_WDT0].size); =20 - create_unimplemented_device("wdt1", memmap[K230_DEV_WDT1].base, + create_unimplemented_device(obj, "wdt1", memmap[K230_DEV_WDT1].base, memmap[K230_DEV_WDT1].size); =20 - create_unimplemented_device("ts", memmap[K230_DEV_TS].base, + create_unimplemented_device(obj, "ts", memmap[K230_DEV_TS].base, memmap[K230_DEV_TS].size); =20 - create_unimplemented_device("hdi", memmap[K230_DEV_HDI].base, + create_unimplemented_device(obj, "hdi", memmap[K230_DEV_HDI].base, memmap[K230_DEV_HDI].size); =20 - create_unimplemented_device("stc", memmap[K230_DEV_STC].base, + create_unimplemented_device(obj, "stc", memmap[K230_DEV_STC].base, memmap[K230_DEV_STC].size); =20 - create_unimplemented_device("security", memmap[K230_DEV_SECURITY].base, + create_unimplemented_device(obj, "security", memmap[K230_DEV_SECURITY]= .base, memmap[K230_DEV_SECURITY].size); =20 - create_unimplemented_device("i2c0", memmap[K230_DEV_I2C0].base, + create_unimplemented_device(obj, "i2c0", memmap[K230_DEV_I2C0].base, memmap[K230_DEV_I2C0].size); =20 - create_unimplemented_device("i2c1", memmap[K230_DEV_I2C1].base, + create_unimplemented_device(obj, "i2c1", memmap[K230_DEV_I2C1].base, memmap[K230_DEV_I2C1].size); =20 - create_unimplemented_device("i2c2", memmap[K230_DEV_I2C2].base, + create_unimplemented_device(obj, "i2c2", memmap[K230_DEV_I2C2].base, memmap[K230_DEV_I2C2].size); =20 - create_unimplemented_device("i2c3", memmap[K230_DEV_I2C3].base, + create_unimplemented_device(obj, "i2c3", memmap[K230_DEV_I2C3].base, memmap[K230_DEV_I2C3].size); =20 - create_unimplemented_device("i2c4", memmap[K230_DEV_I2C4].base, + create_unimplemented_device(obj, "i2c4", memmap[K230_DEV_I2C4].base, memmap[K230_DEV_I2C4].size); =20 - create_unimplemented_device("pwm", memmap[K230_DEV_PWM].base, + create_unimplemented_device(obj, "pwm", memmap[K230_DEV_PWM].base, memmap[K230_DEV_PWM].size); =20 - create_unimplemented_device("gpio0", memmap[K230_DEV_GPIO0].base, + create_unimplemented_device(obj, "gpio0", memmap[K230_DEV_GPIO0].base, memmap[K230_DEV_GPIO0].size); =20 - create_unimplemented_device("gpio1", memmap[K230_DEV_GPIO1].base, + create_unimplemented_device(obj, "gpio1", memmap[K230_DEV_GPIO1].base, memmap[K230_DEV_GPIO1].size); =20 - create_unimplemented_device("adc", memmap[K230_DEV_ADC].base, + create_unimplemented_device(obj, "adc", memmap[K230_DEV_ADC].base, memmap[K230_DEV_ADC].size); =20 - create_unimplemented_device("codec", memmap[K230_DEV_CODEC].base, + create_unimplemented_device(obj, "codec", memmap[K230_DEV_CODEC].base, memmap[K230_DEV_CODEC].size); =20 - create_unimplemented_device("i2s", memmap[K230_DEV_I2S].base, + create_unimplemented_device(obj, "i2s", memmap[K230_DEV_I2S].base, memmap[K230_DEV_I2S].size); =20 - create_unimplemented_device("usb0", memmap[K230_DEV_USB0].base, + create_unimplemented_device(obj, "usb0", memmap[K230_DEV_USB0].base, memmap[K230_DEV_USB0].size); =20 - create_unimplemented_device("usb1", memmap[K230_DEV_USB1].base, + create_unimplemented_device(obj, "usb1", memmap[K230_DEV_USB1].base, memmap[K230_DEV_USB1].size); =20 - create_unimplemented_device("sd0", memmap[K230_DEV_SD0].base, + create_unimplemented_device(obj, "sd0", memmap[K230_DEV_SD0].base, memmap[K230_DEV_SD0].size); =20 - create_unimplemented_device("sd1", memmap[K230_DEV_SD1].base, + create_unimplemented_device(obj, "sd1", memmap[K230_DEV_SD1].base, memmap[K230_DEV_SD1].size); =20 - create_unimplemented_device("qspi0", memmap[K230_DEV_QSPI0].base, + create_unimplemented_device(obj, "qspi0", memmap[K230_DEV_QSPI0].base, memmap[K230_DEV_QSPI0].size); =20 - create_unimplemented_device("qspi1", memmap[K230_DEV_QSPI1].base, + create_unimplemented_device(obj, "qspi1", memmap[K230_DEV_QSPI1].base, memmap[K230_DEV_QSPI1].size); =20 - create_unimplemented_device("spi", memmap[K230_DEV_SPI].base, + create_unimplemented_device(obj, "spi", memmap[K230_DEV_SPI].base, memmap[K230_DEV_SPI].size); =20 - create_unimplemented_device("hi_sys_cfg", memmap[K230_DEV_HI_SYS_CFG].= base, + create_unimplemented_device(obj, "hi_sys_cfg", memmap[K230_DEV_HI_SYS_= CFG].base, memmap[K230_DEV_HI_SYS_CFG].size); =20 - create_unimplemented_device("ddrc_cfg", memmap[K230_DEV_DDRC_CFG].base, + create_unimplemented_device(obj, "ddrc_cfg", memmap[K230_DEV_DDRC_CFG]= .base, memmap[K230_DEV_DDRC_CFG].size); =20 - create_unimplemented_device("flash", memmap[K230_DEV_FLASH].base, + create_unimplemented_device(obj, "flash", memmap[K230_DEV_FLASH].base, memmap[K230_DEV_FLASH].size); } =20 diff --git a/hw/riscv/microblaze-v-generic.c b/hw/riscv/microblaze-v-generi= c.c index fbfdec7ede..7253ae7822 100644 --- a/hw/riscv/microblaze-v-generic.c +++ b/hw/riscv/microblaze-v-generic.c @@ -166,11 +166,11 @@ static void mb_v_generic_init(MachineState *machine) sysbus_connect_irq(SYS_BUS_DEVICE(dma), 1, irq[AXIDMA_IRQ1]); =20 /* unimplemented devices */ - create_unimplemented_device("gpio", GPIO_BASEADDR, 0x10000); - create_unimplemented_device("gpio2", GPIO_BASEADDR2, 0x10000); - create_unimplemented_device("gpio3", GPIO_BASEADDR3, 0x10000); - create_unimplemented_device("i2c", I2C_BASEADDR, 0x10000); - create_unimplemented_device("qspi", QSPI_BASEADDR, 0x10000); + create_unimplemented_device(OBJECT(machine), "gpio", GPIO_BASEADDR, 0x= 10000); + create_unimplemented_device(OBJECT(machine), "gpio2", GPIO_BASEADDR2, = 0x10000); + create_unimplemented_device(OBJECT(machine), "gpio3", GPIO_BASEADDR3, = 0x10000); + create_unimplemented_device(OBJECT(machine), "i2c", I2C_BASEADDR, 0x10= 000); + create_unimplemented_device(OBJECT(machine), "qspi", QSPI_BASEADDR, 0x= 10000); } =20 static void mb_v_generic_machine_init(MachineClass *mc) diff --git a/hw/riscv/microchip_pfsoc.c b/hw/riscv/microchip_pfsoc.c index 0d298aa3fc..0a98ac1c5e 100644 --- a/hw/riscv/microchip_pfsoc.c +++ b/hw/riscv/microchip_pfsoc.c @@ -233,19 +233,19 @@ static void microchip_pfsoc_soc_realize(DeviceState *= dev, Error **errp) e51_dtim_mem); =20 /* Bus Error Units */ - create_unimplemented_device("microchip.pfsoc.buserr_unit0_mem", + create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.buserr_unit0= _mem", memmap[MICROCHIP_PFSOC_BUSERR_UNIT0].base, memmap[MICROCHIP_PFSOC_BUSERR_UNIT0].size); - create_unimplemented_device("microchip.pfsoc.buserr_unit1_mem", + create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.buserr_unit1= _mem", memmap[MICROCHIP_PFSOC_BUSERR_UNIT1].base, memmap[MICROCHIP_PFSOC_BUSERR_UNIT1].size); - create_unimplemented_device("microchip.pfsoc.buserr_unit2_mem", + create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.buserr_unit2= _mem", memmap[MICROCHIP_PFSOC_BUSERR_UNIT2].base, memmap[MICROCHIP_PFSOC_BUSERR_UNIT2].size); - create_unimplemented_device("microchip.pfsoc.buserr_unit3_mem", + create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.buserr_unit3= _mem", memmap[MICROCHIP_PFSOC_BUSERR_UNIT3].base, memmap[MICROCHIP_PFSOC_BUSERR_UNIT3].size); - create_unimplemented_device("microchip.pfsoc.buserr_unit4_mem", + create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.buserr_unit4= _mem", memmap[MICROCHIP_PFSOC_BUSERR_UNIT4].base, memmap[MICROCHIP_PFSOC_BUSERR_UNIT4].size); =20 @@ -259,7 +259,7 @@ static void microchip_pfsoc_soc_realize(DeviceState *de= v, Error **errp) iks->clint_timebase_freq, false); =20 /* L2 cache controller */ - create_unimplemented_device("microchip.pfsoc.l2cc", + create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.l2cc", memmap[MICROCHIP_PFSOC_L2CC].base, memmap[MICROCHIP_PFSOC_L2CC].si= ze); =20 /* @@ -314,17 +314,17 @@ static void microchip_pfsoc_soc_realize(DeviceState *= dev, Error **errp) MICROCHIP_PFSOC_MAILBOX_IRQ)); =20 /* AXISW */ - create_unimplemented_device("microchip.pfsoc.axisw", + create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.axisw", memmap[MICROCHIP_PFSOC_AXISW].base, memmap[MICROCHIP_PFSOC_AXISW].size); =20 /* MPUCFG */ - create_unimplemented_device("microchip.pfsoc.mpucfg", + create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.mpucfg", memmap[MICROCHIP_PFSOC_MPUCFG].base, memmap[MICROCHIP_PFSOC_MPUCFG].size); =20 /* FMETER */ - create_unimplemented_device("microchip.pfsoc.fmeter", + create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.fmeter", memmap[MICROCHIP_PFSOC_FMETER].base, memmap[MICROCHIP_PFSOC_FMETER].size); =20 @@ -368,48 +368,48 @@ static void microchip_pfsoc_soc_realize(DeviceState *= dev, Error **errp) serial_hd(4)); =20 /* Watchdogs */ - create_unimplemented_device("microchip.pfsoc.watchdog0", + create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.watchdog0", memmap[MICROCHIP_PFSOC_WDOG0].base, memmap[MICROCHIP_PFSOC_WDOG0].size); - create_unimplemented_device("microchip.pfsoc.watchdog1", + create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.watchdog1", memmap[MICROCHIP_PFSOC_WDOG1].base, memmap[MICROCHIP_PFSOC_WDOG1].size); - create_unimplemented_device("microchip.pfsoc.watchdog2", + create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.watchdog2", memmap[MICROCHIP_PFSOC_WDOG2].base, memmap[MICROCHIP_PFSOC_WDOG2].size); - create_unimplemented_device("microchip.pfsoc.watchdog3", + create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.watchdog3", memmap[MICROCHIP_PFSOC_WDOG3].base, memmap[MICROCHIP_PFSOC_WDOG3].size); - create_unimplemented_device("microchip.pfsoc.watchdog4", + create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.watchdog4", memmap[MICROCHIP_PFSOC_WDOG4].base, memmap[MICROCHIP_PFSOC_WDOG4].size); =20 /* SPI */ - create_unimplemented_device("microchip.pfsoc.spi0", + create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.spi0", memmap[MICROCHIP_PFSOC_SPI0].base, memmap[MICROCHIP_PFSOC_SPI0].size); - create_unimplemented_device("microchip.pfsoc.spi1", + create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.spi1", memmap[MICROCHIP_PFSOC_SPI1].base, memmap[MICROCHIP_PFSOC_SPI1].size); =20 /* I2C */ - create_unimplemented_device("microchip.pfsoc.i2c0", + create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.i2c0", memmap[MICROCHIP_PFSOC_I2C0].base, memmap[MICROCHIP_PFSOC_I2C0].size); - create_unimplemented_device("microchip.pfsoc.i2c1", + create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.i2c1", memmap[MICROCHIP_PFSOC_I2C1].base, memmap[MICROCHIP_PFSOC_I2C1].size); =20 /* CAN */ - create_unimplemented_device("microchip.pfsoc.can0", + create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.can0", memmap[MICROCHIP_PFSOC_CAN0].base, memmap[MICROCHIP_PFSOC_CAN0].size); - create_unimplemented_device("microchip.pfsoc.can1", + create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.can1", memmap[MICROCHIP_PFSOC_CAN1].base, memmap[MICROCHIP_PFSOC_CAN1].size); =20 /* USB */ - create_unimplemented_device("microchip.pfsoc.usb", + create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.usb", memmap[MICROCHIP_PFSOC_USB].base, memmap[MICROCHIP_PFSOC_USB].size); =20 @@ -440,13 +440,13 @@ static void microchip_pfsoc_soc_realize(DeviceState *= dev, Error **errp) qdev_get_gpio_in(DEVICE(s->plic), MICROCHIP_PFSOC_GEM1_IRQ)); =20 /* GPIOs */ - create_unimplemented_device("microchip.pfsoc.gpio0", + create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.gpio0", memmap[MICROCHIP_PFSOC_GPIO0].base, memmap[MICROCHIP_PFSOC_GPIO0].size); - create_unimplemented_device("microchip.pfsoc.gpio1", + create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.gpio1", memmap[MICROCHIP_PFSOC_GPIO1].base, memmap[MICROCHIP_PFSOC_GPIO1].size); - create_unimplemented_device("microchip.pfsoc.gpio2", + create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.gpio2", memmap[MICROCHIP_PFSOC_GPIO2].base, memmap[MICROCHIP_PFSOC_GPIO2].size); =20 @@ -467,15 +467,15 @@ static void microchip_pfsoc_soc_realize(DeviceState *= dev, Error **errp) MICROCHIP_PFSOC_MAILBOX_IRQ)); =20 /* FPGA Fabric */ - create_unimplemented_device("microchip.pfsoc.fabricfic3", + create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.fabricfic3", memmap[MICROCHIP_PFSOC_FABRIC_FIC3].base, memmap[MICROCHIP_PFSOC_FABRIC_FIC3].size); /* FPGA Fabric */ - create_unimplemented_device("microchip.pfsoc.fabricfic0", + create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.fabricfic0", memmap[MICROCHIP_PFSOC_FABRIC_FIC0].base, memmap[MICROCHIP_PFSOC_FABRIC_FIC0].size); /* FPGA Fabric */ - create_unimplemented_device("microchip.pfsoc.fabricfic1", + create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.fabricfic1", memmap[MICROCHIP_PFSOC_FABRIC_FIC1].base, memmap[MICROCHIP_PFSOC_FABRIC_FIC1].size); =20 diff --git a/hw/riscv/opentitan.c b/hw/riscv/opentitan.c index 5b2f33d5ac..76653ccc77 100644 --- a/hw/riscv/opentitan.c +++ b/hw/riscv/opentitan.c @@ -258,57 +258,57 @@ static void lowrisc_ibex_soc_realize(DeviceState *dev= _soc, Error **errp) } } =20 - create_unimplemented_device("riscv.lowrisc.ibex.gpio", + create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.gpio", memmap[IBEX_DEV_GPIO].base, memmap[IBEX_DEV_GPIO].size); - create_unimplemented_device("riscv.lowrisc.ibex.spi_device", + create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.spi_d= evice", memmap[IBEX_DEV_SPI_DEVICE].base, memmap[IBEX_DEV_SPI_DEVICE].size= ); - create_unimplemented_device("riscv.lowrisc.ibex.i2c", + create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.i2c", memmap[IBEX_DEV_I2C].base, memmap[IBEX_DEV_I2C].size); - create_unimplemented_device("riscv.lowrisc.ibex.pattgen", + create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.pattg= en", memmap[IBEX_DEV_PATTGEN].base, memmap[IBEX_DEV_PATTGEN].size); - create_unimplemented_device("riscv.lowrisc.ibex.sensor_ctrl", + create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.senso= r_ctrl", memmap[IBEX_DEV_SENSOR_CTRL].base, memmap[IBEX_DEV_SENSOR_CTRL].si= ze); - create_unimplemented_device("riscv.lowrisc.ibex.otp_ctrl", + create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.otp_c= trl", memmap[IBEX_DEV_OTP_CTRL].base, memmap[IBEX_DEV_OTP_CTRL].size); - create_unimplemented_device("riscv.lowrisc.ibex.lc_ctrl", + create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.lc_ct= rl", memmap[IBEX_DEV_LC_CTRL].base, memmap[IBEX_DEV_LC_CTRL].size); - create_unimplemented_device("riscv.lowrisc.ibex.pwrmgr", + create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.pwrmg= r", memmap[IBEX_DEV_PWRMGR].base, memmap[IBEX_DEV_PWRMGR].size); - create_unimplemented_device("riscv.lowrisc.ibex.rstmgr", + create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.rstmg= r", memmap[IBEX_DEV_RSTMGR].base, memmap[IBEX_DEV_RSTMGR].size); - create_unimplemented_device("riscv.lowrisc.ibex.clkmgr", + create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.clkmg= r", memmap[IBEX_DEV_CLKMGR].base, memmap[IBEX_DEV_CLKMGR].size); - create_unimplemented_device("riscv.lowrisc.ibex.pinmux", + create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.pinmu= x", memmap[IBEX_DEV_PINMUX].base, memmap[IBEX_DEV_PINMUX].size); - create_unimplemented_device("riscv.lowrisc.ibex.aon_timer", + create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.aon_t= imer", memmap[IBEX_DEV_AON_TIMER].base, memmap[IBEX_DEV_AON_TIMER].size); - create_unimplemented_device("riscv.lowrisc.ibex.usbdev", + create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.usbde= v", memmap[IBEX_DEV_USBDEV].base, memmap[IBEX_DEV_USBDEV].size); - create_unimplemented_device("riscv.lowrisc.ibex.flash_ctrl", + create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.flash= _ctrl", memmap[IBEX_DEV_FLASH_CTRL].base, memmap[IBEX_DEV_FLASH_CTRL].size= ); - create_unimplemented_device("riscv.lowrisc.ibex.aes", + create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.aes", memmap[IBEX_DEV_AES].base, memmap[IBEX_DEV_AES].size); - create_unimplemented_device("riscv.lowrisc.ibex.hmac", + create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.hmac", memmap[IBEX_DEV_HMAC].base, memmap[IBEX_DEV_HMAC].size); - create_unimplemented_device("riscv.lowrisc.ibex.kmac", + create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.kmac", memmap[IBEX_DEV_KMAC].base, memmap[IBEX_DEV_KMAC].size); - create_unimplemented_device("riscv.lowrisc.ibex.keymgr", + create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.keymg= r", memmap[IBEX_DEV_KEYMGR].base, memmap[IBEX_DEV_KEYMGR].size); - create_unimplemented_device("riscv.lowrisc.ibex.csrng", + create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.csrng= ", memmap[IBEX_DEV_CSRNG].base, memmap[IBEX_DEV_CSRNG].size); - create_unimplemented_device("riscv.lowrisc.ibex.entropy", + create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.entro= py", memmap[IBEX_DEV_ENTROPY].base, memmap[IBEX_DEV_ENTROPY].size); - create_unimplemented_device("riscv.lowrisc.ibex.edn0", + create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.edn0", memmap[IBEX_DEV_EDNO].base, memmap[IBEX_DEV_EDNO].size); - create_unimplemented_device("riscv.lowrisc.ibex.edn1", + create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.edn1", memmap[IBEX_DEV_EDN1].base, memmap[IBEX_DEV_EDN1].size); - create_unimplemented_device("riscv.lowrisc.ibex.alert_handler", + create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.alert= _handler", memmap[IBEX_DEV_ALERT_HANDLER].base, memmap[IBEX_DEV_ALERT_HANDLER= ].size); - create_unimplemented_device("riscv.lowrisc.ibex.sram_ctrl", + create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.sram_= ctrl", memmap[IBEX_DEV_SRAM_CTRL].base, memmap[IBEX_DEV_SRAM_CTRL].size); - create_unimplemented_device("riscv.lowrisc.ibex.otbn", + create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.otbn", memmap[IBEX_DEV_OTBN].base, memmap[IBEX_DEV_OTBN].size); - create_unimplemented_device("riscv.lowrisc.ibex.ibex_cfg", + create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.ibex_= cfg", memmap[IBEX_DEV_IBEX_CFG].base, memmap[IBEX_DEV_IBEX_CFG].size); } =20 diff --git a/hw/riscv/sifive_e.c b/hw/riscv/sifive_e.c index fb62bc9aca..31cec460b3 100644 --- a/hw/riscv/sifive_e.c +++ b/hw/riscv/sifive_e.c @@ -268,19 +268,19 @@ static void sifive_e_soc_realize(DeviceState *dev, Er= ror **errp) =20 sifive_uart_create(OBJECT(s), sys_mem, memmap[SIFIVE_E_DEV_UART0].base, serial_hd(0), qdev_get_gpio_in(DEVICE(s->plic), SIFIVE_E_UART0_IRQ= )); - create_unimplemented_device("riscv.sifive.e.qspi0", + create_unimplemented_device(OBJECT(dev), "riscv.sifive.e.qspi0", memmap[SIFIVE_E_DEV_QSPI0].base, memmap[SIFIVE_E_DEV_QSPI0].size); - create_unimplemented_device("riscv.sifive.e.pwm0", + create_unimplemented_device(OBJECT(dev), "riscv.sifive.e.pwm0", memmap[SIFIVE_E_DEV_PWM0].base, memmap[SIFIVE_E_DEV_PWM0].size); sifive_uart_create(OBJECT(s), sys_mem, memmap[SIFIVE_E_DEV_UART1].base, serial_hd(1), qdev_get_gpio_in(DEVICE(s->plic), SIFIVE_E_UART1_IRQ= )); - create_unimplemented_device("riscv.sifive.e.qspi1", + create_unimplemented_device(OBJECT(dev), "riscv.sifive.e.qspi1", memmap[SIFIVE_E_DEV_QSPI1].base, memmap[SIFIVE_E_DEV_QSPI1].size); - create_unimplemented_device("riscv.sifive.e.pwm1", + create_unimplemented_device(OBJECT(dev), "riscv.sifive.e.pwm1", memmap[SIFIVE_E_DEV_PWM1].base, memmap[SIFIVE_E_DEV_PWM1].size); - create_unimplemented_device("riscv.sifive.e.qspi2", + create_unimplemented_device(OBJECT(dev), "riscv.sifive.e.qspi2", memmap[SIFIVE_E_DEV_QSPI2].base, memmap[SIFIVE_E_DEV_QSPI2].size); - create_unimplemented_device("riscv.sifive.e.pwm2", + create_unimplemented_device(OBJECT(dev), "riscv.sifive.e.pwm2", memmap[SIFIVE_E_DEV_PWM2].base, memmap[SIFIVE_E_DEV_PWM2].size); =20 /* Flash memory */ diff --git a/hw/riscv/sifive_u.c b/hw/riscv/sifive_u.c index 3d60a501dd..aba6716b73 100644 --- a/hw/riscv/sifive_u.c +++ b/hw/riscv/sifive_u.c @@ -861,13 +861,13 @@ static void sifive_u_soc_realize(DeviceState *dev, Er= ror **errp) } } =20 - create_unimplemented_device("riscv.sifive.u.gem-mgmt", + create_unimplemented_device(OBJECT(dev), "riscv.sifive.u.gem-mgmt", memmap[SIFIVE_U_DEV_GEM_MGMT].base, memmap[SIFIVE_U_DEV_GEM_MGMT].= size); =20 - create_unimplemented_device("riscv.sifive.u.dmc", + create_unimplemented_device(OBJECT(dev), "riscv.sifive.u.dmc", memmap[SIFIVE_U_DEV_DMC].base, memmap[SIFIVE_U_DEV_DMC].size); =20 - create_unimplemented_device("riscv.sifive.u.l2cc", + create_unimplemented_device(OBJECT(dev), "riscv.sifive.u.l2cc", memmap[SIFIVE_U_DEV_L2CC].base, memmap[SIFIVE_U_DEV_L2CC].size); =20 sysbus_realize(SYS_BUS_DEVICE(&s->spi0), errp); diff --git a/hw/riscv/tt_atlantis.c b/hw/riscv/tt_atlantis.c index 6e0a54fe3c..068a0bc542 100644 --- a/hw/riscv/tt_atlantis.c +++ b/hw/riscv/tt_atlantis.c @@ -556,7 +556,7 @@ static void tt_atlantis_machine_init(MachineState *mach= ine) * Create an unimplemented device region so writes don't fault * and reads return zero, which keeps Linux happy. */ - create_unimplemented_device("tt-atlantis.uart0", + create_unimplemented_device(OBJECT(machine), "tt-atlantis.uart0", s->memmap[TT_ATL_UART1].base, s->memmap[TT_ATL_UART1].size); =20 diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c index 144345d46a..a0d0213d0b 100644 --- a/hw/sparc/sun4m.c +++ b/hw/sparc/sun4m.c @@ -948,7 +948,7 @@ static void sun4m_hw_init(MachineState *machine) } =20 if (hwdef->sx_base) { - create_unimplemented_device("sun-sx", hwdef->sx_base, 0x2000); + create_unimplemented_device(OBJECT(machine), "sun-sx", hwdef->sx_b= ase, 0x2000); } =20 dev =3D qdev_new(OBJECT(machine), "nvram", "sysbus-m48t08"); @@ -1032,16 +1032,16 @@ static void sun4m_hw_init(MachineState *machine) if (hwdef->dbri_base) { /* ISDN chip with attached CS4215 audio codec */ /* prom space */ - create_unimplemented_device("sun-DBRI.prom", + create_unimplemented_device(OBJECT(machine), "sun-DBRI.prom", hwdef->dbri_base + 0x1000, 0x30); /* reg space */ - create_unimplemented_device("sun-DBRI", + create_unimplemented_device(OBJECT(machine), "sun-DBRI", hwdef->dbri_base + 0x10000, 0x100); } =20 if (hwdef->bpp_base) { /* parallel port */ - create_unimplemented_device("sun-bpp", hwdef->bpp_base, 0x20); + create_unimplemented_device(OBJECT(machine), "sun-bpp", hwdef->bpp= _base, 0x20); } =20 initrd_size =3D 0; diff --git a/hw/sparc64/niagara.c b/hw/sparc64/niagara.c index bceda70f2e..8fb9937127 100644 --- a/hw/sparc64/niagara.c +++ b/hw/sparc64/niagara.c @@ -98,6 +98,7 @@ static void add_rom_or_fail(const char *file, const hwadd= r addr) /* Niagara hardware initialisation */ static void niagara_init(MachineState *machine) { + Object *obj =3D OBJECT(machine); NiagaraBoardState *s =3D g_new(NiagaraBoardState, 1); DriveInfo *dinfo =3D drive_get(IF_PFLASH, 0, 0); MemoryRegion *sysmem =3D get_system_memory(); @@ -153,7 +154,7 @@ static void niagara_init(MachineState *machine) } serial_mm_init(OBJECT(machine), sysmem, NIAGARA_UART_BASE, 0, NULL, 115200, serial_hd(0), DEVICE_BIG_ENDIAN); - create_unimplemented_device("sun4v-iob", NIAGARA_IOBBASE, NIAGARA_IOBS= IZE); + create_unimplemented_device(obj, "sun4v-iob", NIAGARA_IOBBASE, NIAGARA= _IOBSIZE); sun4v_rtc_init(OBJECT(machine), NIAGARA_RTC_BASE); } =20 diff --git a/include/hw/misc/unimp.h b/include/hw/misc/unimp.h index 5158d29634..afef25671e 100644 --- a/include/hw/misc/unimp.h +++ b/include/hw/misc/unimp.h @@ -38,15 +38,18 @@ struct UnimplementedDeviceState { * use it to cover a large region and then map other devices on top of it * if necessary. */ -static inline void create_unimplemented_device(const char *name, +static inline void create_unimplemented_device(Object *parent, + const char *name, hwaddr base, hwaddr size) { - DeviceState *dev =3D qdev_new_orphan(TYPE_UNIMPLEMENTED_DEVICE); + g_autofree char *id =3D name[strlen(name) - 1] =3D=3D ']' + ? g_strdup(name) : g_strdup_printf("%s[*]", name= ); + DeviceState *dev =3D qdev_new(parent, id, TYPE_UNIMPLEMENTED_DEVICE); =20 qdev_prop_set_string(dev, "name", name); qdev_prop_set_uint64(dev, "size", size); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 sysbus_mmio_map_overlap(SYS_BUS_DEVICE(dev), 0, base, -1000); } --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411948; cv=none; d=zohomail.com; s=zohoarc; b=KgGTkJQvJzhfItZFzrTspgR+uXKlwCOn9bdye7uW2bjNwGwr7ZJy+N8ZIdWNKWibvSPKohfQvprOYakRpH1z8NZLDYEloRuEgBosj1aDkFva+G8+9AyrmtVPjZhRtKADYPvPQc/3Kc3OGC2Sy2IxIQntPnY6P3ne7Dbax1qTRzc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411948; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=kLJ3uYk0Qdf9Pdi9VbrYZXmMR+ixaQtcpIoGBKAZpjU=; b=Lqfp/EDg7L7nrQMAa/+zzxmLayT+OezfD4qRSNedF35Y3Z/mMgjqP0nBxptk3LAWJ/FeWzd+hdAaTwys0JGO2BPxqlZEtkMBgtjLmaZzfDBYkyNrcpuNk4zBeGMzpw9jEdGIHXmDlhwIqBuyfW+9Q/KN1nZ2EL/TPIJ0Y0s+X0w= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411948309321.3155398262828; Sat, 18 Jul 2026 14:59:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlD3l-00042F-T1; Sat, 18 Jul 2026 17:59:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD3l-00041K-0A; Sat, 18 Jul 2026 17:59:01 -0400 Received: from pdx-out-010.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.12.53.23]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD3j-0004nu-8a; Sat, 18 Jul 2026 17:59:00 -0400 Received: from ip-10-5-0-115.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.0.115]) by internal-pdx-out-010.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:58:55 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.104:8458] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.40.177:2525] with esmtp (Farcaster) id abb2a8ef-35db-4197-8f24-2959e508ce35; Sat, 18 Jul 2026 21:58:55 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB001.ant.amazon.com (10.250.64.248) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:58:55 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:58:45 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411939; x=1815947939; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=kLJ3uYk0Qdf9Pdi9VbrYZXmMR+ixaQtcpIoGBKAZpjU=; b=X/BS2cyz3zTQk649Y/EvtK9lGI2TR3bivePBNQMhqoImhWr1ToD0jily 3DcxcnqN+eC+yvYdKu8dc1gYi33MvMV9yEeMUtGovwGoV7p/Oa04C7TYm 4v2X9avby78tSuDtq6N1LPbC8EjjOEfLGWallHIMxBEzMsTnxeAKnQ+eL Q7wIVtvyc6Xn8vmJ5M3/vmUpgfS3roQz1FQeksPierOrqteke/DWznSQe B6ba7vH3h+5TV799jB1gcuBVX7agF1xch4eUsTNoDxxtSp6aYMmxbvUYO ngWEMzlnWbdvxZAINKhCl9XFKAUhdm7Ke2/z+HHh3Yseh/p8j/5ug92WX g==; X-CSE-ConnectionGUID: vvxlNW34R7WaAsAq2n5FLA== X-CSE-MsgGUID: HtVRl+s1TkS8OY7dtAxLbg== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23795461" X-Farcaster-Flow-ID: abb2a8ef-35db-4197-8f24-2959e508ce35 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 078/137] hw/usb: Give -usbdevice and auto-hub devices a QOM parent Date: Sat, 18 Jul 2026 21:35:53 +0000 Message-ID: <20260718213652.37673-79-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D043UWA001.ant.amazon.com (10.13.139.45) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.12.53.23; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-010.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.01, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411949099158500 Content-Type: text/plain; charset="utf-8" The three remaining orphan-creating sites in hw/usb are all command-line and hotplug-adjacent code paths that always run after the machine is up: usb_claim_port() auto-hub -> child of the USB host controller (bus->qbus.parent) usbdevice_create() -> /machine/peripheral-anon, same as -device without id=3D usb_braille_init() -> ditto (a .usbdevice_init callback) Switch to qdev_new()/qdev_try_new() with an explicit parent and use plain qdev_realize() since the reference is now held by the parent's child<> property. AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/usb/bus.c | 15 ++++++++++----- hw/usb/dev-serial.c | 3 ++- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/hw/usb/bus.c b/hw/usb/bus.c index d45cce7666..725b0303b1 100644 --- a/hw/usb/bus.c +++ b/hw/usb/bus.c @@ -410,9 +410,10 @@ void usb_claim_port(USBDevice *dev, Error **errp) } else { if (bus->nfree =3D=3D 1 && strcmp(object_get_typename(OBJECT(dev))= , "usb-hub") !=3D 0) { /* Create a new hub and chain it on */ - hub =3D USB_DEVICE(qdev_try_new_orphan("usb-hub")); + hub =3D USB_DEVICE(qdev_try_new(OBJECT(bus->qbus.parent), + "auto-hub[*]", "usb-hub")); if (hub) { - usb_realize_and_unref(hub, bus, NULL); + qdev_realize(DEVICE(hub), &bus->qbus, NULL); } } if (bus->nfree =3D=3D 0) { @@ -661,13 +662,17 @@ USBDevice *usbdevice_create(const char *driver) return NULL; } =20 - dev =3D f->usbdevice_init ? f->usbdevice_init() - : USB_DEVICE(qdev_new_orphan(f->name)); + if (f->usbdevice_init) { + dev =3D f->usbdevice_init(); + } else { + dev =3D USB_DEVICE(qdev_new(machine_get_container("peripheral-anon= "), + "usbdevice[*]", f->name)); + } if (!dev) { error_report("Failed to create USB device '%s'", f->name); return NULL; } - if (!usb_realize_and_unref(dev, bus, &err)) { + if (!qdev_realize(DEVICE(dev), &bus->qbus, &err)) { error_reportf_err(err, "Failed to initialize USB device '%s': ", f->name); object_unparent(OBJECT(dev)); diff --git a/hw/usb/dev-serial.c b/hw/usb/dev-serial.c index 81897b2d76..4ae3faf656 100644 --- a/hw/usb/dev-serial.c +++ b/hw/usb/dev-serial.c @@ -622,7 +622,8 @@ static USBDevice *usb_braille_init(void) return NULL; } =20 - dev =3D USB_DEVICE(qdev_new_orphan("usb-braille")); + dev =3D USB_DEVICE(qdev_new(machine_get_container("peripheral-anon"), + "usbdevice[*]", "usb-braille")); qdev_prop_set_chr(&dev->qdev, "chardev", cdrv); return dev; } --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411970; cv=none; d=zohomail.com; s=zohoarc; b=lDkcvdcsEuWIRYm3qY42BB0wZQq2ks0Nxgf/uherrISTQrem5v9RgnO4XFL77QrPIobWySQVRTL4kFQ7+QY2PN+0KG4ew5x5zEDdx7kT1nb+94dwoSap+kqCfmf/qIS94J3P6aOQmEOlzzkAV4YtoYAwXxYigfTmOfn1+bwt4tA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411970; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=5wFHCEJ3Et/505+6rAKfI9MuJkHGEquIWgQUEPU7qyY=; b=bba8RrZBb+MIrULrvjKAmNg3rrEF0TmpdOcg8sxAAWAUEWhf02+SLjycOo3hATnAUiuIJYF52SKjfMZOXzHdMM/DtqwD2cXbI7t1H6eOAypto4OFq8LngOu3w/6zywfhyr3x68emOhglbsLO2GR557pEiMm7jrx/l8ewJmh/avU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411970435523.1882805329889; Sat, 18 Jul 2026 14:59:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlD3w-0004Ds-90; Sat, 18 Jul 2026 17:59:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD3u-0004BS-Kc; Sat, 18 Jul 2026 17:59:10 -0400 Received: from pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.246.1.125]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD3s-0004or-Px; Sat, 18 Jul 2026 17:59:10 -0400 Received: from ip-10-5-9-48.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.9.48]) by internal-pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:59:05 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.51:5221] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.58.199:2525] with esmtp (Farcaster) id 1a5b5e0f-92b0-48a1-bae7-850cfac8fc5e; Sat, 18 Jul 2026 21:59:05 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC002.ant.amazon.com (10.250.64.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:59:04 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:58:55 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411948; x=1815947948; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=5wFHCEJ3Et/505+6rAKfI9MuJkHGEquIWgQUEPU7qyY=; b=GDAWqIBndJBaWwXMQ/uFktcE24hglVGWk4QtQJfoSSTiznuZACdZNhIV 5YMeBNHmCzQY+QUfIeg1T6jMXAeCZ67qNlJ+hTtveqEi43Rt/Jn+ksoDE ya1R2JFIr6ttRsQmAZGsqsN/1euWY96Z3BeRW46xejMN+Rr0VfC1UYTvv +aa4PPPoMkUk+H5gow4FE3XDxRdzlolvR3rR2M1EuP64anQccBaiXavrN Ut/r5zbqEqiJdiM0qA39iKtqr6uwDDwmeyUGMpqRiQVCdHBBoCT0YKxX8 E1jd/yPr8dtZwSj84Ly1D86Ipz842nOYocp8fWh0Z94OSA2PB60C4CRH6 w==; X-CSE-ConnectionGUID: FzvW/uALS9y5ZxcSYYDaow== X-CSE-MsgGUID: qiD9RJq6RMuiHSRx7JUGIw== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23927484" X-Farcaster-Flow-ID: 1a5b5e0f-92b0-48a1-bae7-850cfac8fc5e From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 079/137] hw/audio: Give -audio model= devices a QOM parent Date: Sat, 18 Jul 2026 21:35:54 +0000 Message-ID: <20260718213652.37673-80-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D043UWA001.ant.amazon.com (10.13.139.45) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.246.1.125; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411971367158500 Content-Type: text/plain; charset="utf-8" audio_model_devices_init() is the '-audio model=3D' command-line path, so parent the created device under /machine/peripheral-anon like -device without id=3D would. The intel-hda .init helper for '-audio model=3Dhda' additionally creates an hda-duplex codec on the controller's HDA bus; the codec is a natural child of the controller device it just spawned. Both sites drop the extra unref: the child<> property now holds the reference. AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/audio/intel-hda.c | 4 ++-- hw/audio/model.c | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/hw/audio/intel-hda.c b/hw/audio/intel-hda.c index cd4743a405..f51c98511a 100644 --- a/hw/audio/intel-hda.c +++ b/hw/audio/intel-hda.c @@ -1313,9 +1313,9 @@ static void intel_hda_and_codec_init(const char *audi= odev) intel_hda =3D qdev_device_add_from_qdict(props, false, &error_fatal); hdabus =3D QLIST_FIRST(&intel_hda->child_bus); =20 - codec =3D qdev_new_orphan("hda-duplex"); + codec =3D qdev_new(OBJECT(intel_hda), "codec", "hda-duplex"); qdev_prop_set_string(codec, "audiodev", audiodev); - qdev_realize_and_unref(codec, hdabus, &error_fatal); + qdev_realize(codec, hdabus, &error_fatal); object_unref(intel_hda); } =20 diff --git a/hw/audio/model.c b/hw/audio/model.c index bd8ca35153..308b899459 100644 --- a/hw/audio/model.c +++ b/hw/audio/model.c @@ -110,10 +110,11 @@ void audio_model_init(void) } =20 if (c->typename) { - DeviceState *dev =3D qdev_new_orphan(c->typename); + DeviceState *dev =3D qdev_new(machine_get_container("peripheral-an= on"), + "audio[*]", c->typename); BusState *bus =3D qdev_find_default_bus(DEVICE_GET_CLASS(dev), &er= ror_fatal); qdev_prop_set_string(dev, "audiodev", audiodev_id); - qdev_realize_and_unref(dev, bus, &error_fatal); + qdev_realize(dev, bus, &error_fatal); } else { c->init(audiodev_id); } --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784411983; cv=none; d=zohomail.com; s=zohoarc; b=j4fBDxVltj1IC+/wb924qY62MKUcA+jPhWAa4aoal5fs/6SDOQ3Kg4jrBE2EZ96B0EXPIYy4I/Y0FuvTEJwJ/pVH3n47d9/UKQjvzQP8QzePqJwgYMaiM9xz6I52JplVeGkGUa/OCumkTrT6ih7jbw4Y+wh2eSLsikQdJJxqmzg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784411983; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=k3WIk/EB2Iz3AbpRf9OhbfBhFNMJVyqGyAvG9AyoT9o=; b=gUrabURVH0LVwRmLJvI8vFDJodf+gyFm1IcRfOsxBZ4ZYWws8NjM1R+xYcwyWqWiVh7r0PhCI1qXayaQP4w9YP6XIDVR9Qm60SHCR/c0O/VIUVvvMxREuEW2XkU9MHFq2kJFWcritL1BobKEB/KBsxolnQ4UqIKBjsnIYYYYXpA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784411983679878.4623194872268; Sat, 18 Jul 2026 14:59:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlD45-0004Sl-6v; Sat, 18 Jul 2026 17:59:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD44-0004O3-3C; Sat, 18 Jul 2026 17:59:20 -0400 Received: from pdx-out-004.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.246.77.92]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD42-0004pe-8a; Sat, 18 Jul 2026 17:59:19 -0400 Received: from ip-10-5-12-219.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.12.219]) by internal-pdx-out-004.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:59:14 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.182:2106] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.29.147:2525] with esmtp (Farcaster) id 23c42ef8-ba74-4760-948c-f1bcd52317a0; Sat, 18 Jul 2026 21:59:14 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA001.ant.amazon.com (10.250.64.218) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:59:14 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:59:04 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411958; x=1815947958; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=k3WIk/EB2Iz3AbpRf9OhbfBhFNMJVyqGyAvG9AyoT9o=; b=R1UU/e+4d1/kl5M8usm3jSqkFuLgYZEiTEg4fdUjyKnsmgDnxnfyPIju iMm2iLKqcTFnJVBl0TnD79jJ2EEJWKlsUXK3OxlC6J+UiNjcgV/ak2/l/ gTz8UbJxWYqksn9J+Bkuqugp6Up4s/NXSxvJy3brMciZf4WY/7cC3UezI vmMiDy9FbKw2knpVIxQjzAkkP+4jVZ7+B/at6/2tceRJI4Yfe7W0WAvUr I/eAUir/tz5sAlfWozM3jOgVff3iepXTsl5hxei2sWcS7co0LASUucHne 1BcHcleOFSrNq9jmjJ7uIuN2FfOTNj0H8zZAO3prBkA5uCG37iHTT7Mvg A==; X-CSE-ConnectionGUID: E5/s2yI7QNC8T74z2DXnzA== X-CSE-MsgGUID: jObtm9bARuqLm+SJB9jbMQ== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23917582" X-Farcaster-Flow-ID: 23c42ef8-ba74-4760-948c-f1bcd52317a0 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 080/137] hw/xen: Give xenstore-driven backend devices a QOM parent Date: Sat, 18 Jul 2026 21:35:55 +0000 Message-ID: <20260718213652.37673-81-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D043UWA001.ant.amazon.com (10.13.139.45) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.246.77.92; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-004.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784411985346158500 Content-Type: text/plain; charset="utf-8" The XenBackendInfo .create callbacks (vif, console, vbd) create a XenDevice in response to xenstore hotplug events. The lifetime owner is the xen-bridge device that hosts the XenBus, so parent each device there. The failure paths already call object_unparent() so nothing else changes; the reference previously dropped by qdev_realize_and_unref() is now the parent's child<> property. AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/block/xen-block.c | 5 +++-- hw/char/xen_console.c | 5 +++-- hw/net/xen_nic.c | 5 +++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/hw/block/xen-block.c b/hw/block/xen-block.c index 9dd69faa02..46d94a9a95 100644 --- a/hw/block/xen-block.c +++ b/hw/block/xen-block.c @@ -1074,7 +1074,8 @@ static void xen_block_device_create(XenBackendInstanc= e *backend, goto fail; } =20 - xendev =3D XEN_DEVICE(qdev_new_orphan(type)); + xendev =3D XEN_DEVICE(qdev_new(OBJECT(BUS(xenbus)->parent), "vbd[*]", + type)); blockdev =3D XEN_BLOCK_DEVICE(xendev); =20 if (!object_property_set_str(OBJECT(xendev), "vdev", vdev, @@ -1099,7 +1100,7 @@ static void xen_block_device_create(XenBackendInstanc= e *backend, blockdev->iothread =3D iothread; blockdev->drive =3D drive; =20 - if (!qdev_realize_and_unref(DEVICE(xendev), BUS(xenbus), errp)) { + if (!qdev_realize(DEVICE(xendev), BUS(xenbus), errp)) { error_prepend(errp, "realization of device %s failed: ", type); goto fail; } diff --git a/hw/char/xen_console.c b/hw/char/xen_console.c index cd440b82f4..40449b34e8 100644 --- a/hw/char/xen_console.c +++ b/hw/char/xen_console.c @@ -562,7 +562,8 @@ static void xen_console_device_create(XenBackendInstanc= e *backend, goto fail; } =20 - xendev =3D XEN_DEVICE(qdev_new_orphan(TYPE_XEN_CONSOLE_DEVICE)); + xendev =3D XEN_DEVICE(qdev_new(OBJECT(BUS(xenbus)->parent), "console[*= ]", + TYPE_XEN_CONSOLE_DEVICE)); con =3D XEN_CONSOLE_DEVICE(xendev); =20 con->dev =3D number; @@ -610,7 +611,7 @@ static void xen_console_device_create(XenBackendInstanc= e *backend, goto fail; } =20 - if (qdev_realize_and_unref(DEVICE(xendev), BUS(xenbus), errp)) { + if (qdev_realize(DEVICE(xendev), BUS(xenbus), errp)) { xen_backend_set_device(backend, xendev); goto done; } diff --git a/hw/net/xen_nic.c b/hw/net/xen_nic.c index 212281aac7..ff748ae070 100644 --- a/hw/net/xen_nic.c +++ b/hw/net/xen_nic.c @@ -619,13 +619,14 @@ static void xen_net_device_create(XenBackendInstance = *backend, goto fail; } =20 - xendev =3D XEN_DEVICE(qdev_new_orphan(TYPE_XEN_NET_DEVICE)); + xendev =3D XEN_DEVICE(qdev_new(OBJECT(BUS(xenbus)->parent), "vif[*]", + TYPE_XEN_NET_DEVICE)); net =3D XEN_NET_DEVICE(xendev); =20 net->dev =3D number; memcpy(&net->conf.macaddr, &mac, sizeof(mac)); =20 - if (qdev_realize_and_unref(DEVICE(xendev), BUS(xenbus), errp)) { + if (qdev_realize(DEVICE(xendev), BUS(xenbus), errp)) { xen_backend_set_device(backend, xendev); return; } --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412009; cv=none; d=zohomail.com; s=zohoarc; b=Vfkn2TF1TNMIHczqNAfBn8sL/fwdfL2Xva+/HQDc/mssZnPYTU7NvAh5xkwg+EZaW28MBUgEioJ/W1XNmzr/BACSvUVAb7aaPdrTnxZ8fePhtbwsVXov7fjo8D2egS2cv7E+csoFry+3bcNM5iw8vXy/OctBPdToZooDq/MfTCs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412009; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=06ETOBsEQzS5d9zH1jkTfyd2j8Kc5P+uPwzN0pdk1os=; b=KZy24tK1AlL/JAo1aaIAT9kLIC4NzXE4a1WImb+RjePMxrUst8lAN4rvnjslBR7No1vepYri44qcfb+7WGW6SJxIu+A15praLyw2v0F/cpwjt9sHV0AJCsxt3Q/JsFJW5KRgTIadaueFXcKEY9Ky/sBs8FGq7QjpwC+m97JYy6U= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412009762346.01233154577756; Sat, 18 Jul 2026 15:00:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlD4b-0005VN-56; Sat, 18 Jul 2026 17:59:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD4Z-0005UZ-HB; Sat, 18 Jul 2026 17:59:51 -0400 Received: from pdx-out-013.esa.us-west-2.outbound.mail-perimeter.amazon.com ([34.218.115.239]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD4X-0004s2-KI; Sat, 18 Jul 2026 17:59:51 -0400 Received: from ip-10-5-6-203.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.6.203]) by internal-pdx-out-013.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:59:46 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.53:6565] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.30.230:2525] with esmtp (Farcaster) id 61be5819-85e4-4e9d-8aaa-113133826c15; Sat, 18 Jul 2026 21:59:45 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC001.ant.amazon.com (10.250.64.174) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:59:45 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:59:36 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411989; x=1815947989; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=06ETOBsEQzS5d9zH1jkTfyd2j8Kc5P+uPwzN0pdk1os=; b=TEGub6Q+rrofC61kco81vDsLV+wnRuoah1w9K1Qu5Anv3V8ADS88yNkf U2iXUzAxTeLs6+JAWe0nNSwv1P1XS2P1Tm9zoS6rRuIckatfviCDQ4IfD KIeZK5pWajxsrF5s3tq2nkL1upBZkHv6kLC1ZSybSLKKU6XD3zrSjUtEH 6rdp3crjtugcVC5GPA0mh8YlxNxBd22e2v+RlilFIVmVx56DxsnGckAez xC8DvjddODi5KqJU/Z1mqYk1OuZlAKoF7aSGWVuW0bOkf01WWXW8wgfqN 9DVbWlS/vFQZFJXP8PA++QaFXstljmSn3s0WNUOYv0VSR7voaHbEKQcCX w==; X-CSE-ConnectionGUID: y5lbufr0TM6scxDwcWCBNw== X-CSE-MsgGUID: ZYUO42N/TbCGmQXbaDDN2A== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23719404" X-Farcaster-Flow-ID: 61be5819-85e4-4e9d-8aaa-113133826c15 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 081/137] hw/nitro: Give the vsock bridge a QOM parent Date: Sat, 18 Jul 2026 21:35:56 +0000 Message-ID: <20260718213652.37673-82-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D043UWA002.ant.amazon.com (10.13.139.53) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=34.218.115.239; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-013.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.01, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412011605158500 Content-Type: text/plain; charset="utf-8" nitro_vsock_bridge_create() was using qdev_set_id() to slot the bridge under /machine/peripheral. The bridge is a board-owned singleton created from nitro_machine_init(), so make it a plain child of the machine and drop the qdev_set_id() indirection. The heartbeat device that hangs off the bridge is already a child<> of it, so the composition tree becomes: /machine/nitro-vsock (nitro-vsock-bridge) /machine/nitro-vsock/heartbeat (nitro-heartbeat) AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/nitro/machine.c | 2 +- hw/nitro/nitro-vsock-bus.c | 9 ++++----- include/hw/nitro/nitro-vsock-bus.h | 2 +- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/hw/nitro/machine.c b/hw/nitro/machine.c index 6b61de911f..e522eae5ba 100644 --- a/hw/nitro/machine.c +++ b/hw/nitro/machine.c @@ -194,7 +194,7 @@ static void nitro_machine_init(MachineState *machine) MEMTXATTRS_UNSPECIFIED, eif_data, eif_size); =20 if (defaults_enabled()) { - NitroVsockBridge *bridge =3D nitro_vsock_bridge_create(); + NitroVsockBridge *bridge =3D nitro_vsock_bridge_create(OBJECT(mach= ine)); DeviceState *dev; =20 /* Nitro Enclaves require a heartbeat device. Provide one. */ diff --git a/hw/nitro/nitro-vsock-bus.c b/hw/nitro/nitro-vsock-bus.c index f7540eaa54..2c4b66931f 100644 --- a/hw/nitro/nitro-vsock-bus.c +++ b/hw/nitro/nitro-vsock-bus.c @@ -20,7 +20,6 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "monitor/qdev.h" #include "hw/core/sysbus.h" #include "hw/nitro/nitro-vsock-bus.h" =20 @@ -46,12 +45,12 @@ void nitro_vsock_bridge_start_enclave(NitroVsockBridge = *bridge, } } =20 -NitroVsockBridge *nitro_vsock_bridge_create(void) +NitroVsockBridge *nitro_vsock_bridge_create(Object *parent) { - DeviceState *dev =3D qdev_new_orphan(TYPE_NITRO_VSOCK_BRIDGE); + DeviceState *dev =3D qdev_new(parent, "nitro-vsock", + TYPE_NITRO_VSOCK_BRIDGE); =20 - qdev_set_id(dev, g_strdup("nitro-vsock"), &error_fatal); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 return NITRO_VSOCK_BRIDGE(dev); } diff --git a/include/hw/nitro/nitro-vsock-bus.h b/include/hw/nitro/nitro-vs= ock-bus.h index 064260aa41..36f4dde78f 100644 --- a/include/hw/nitro/nitro-vsock-bus.h +++ b/include/hw/nitro/nitro-vsock-bus.h @@ -50,7 +50,7 @@ struct NitroVsockDeviceClass { /* * Machine helper to create the Nitro vsock bridge sysbus device. */ -NitroVsockBridge *nitro_vsock_bridge_create(void); +NitroVsockBridge *nitro_vsock_bridge_create(Object *parent); =20 /* * Find the Nitro vsock bridge on the sysbus. --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412032; cv=none; d=zohomail.com; s=zohoarc; b=gBsIIFpbLwsd3MIVaIqzPk7dHW9zOiuczcFXrpLx31GVi+WBTJeKOxgZWo9MKqXoYZ9booLJasTeDxJ75s4L3nmnrgwUL3HRo4uC/VUZGqTkpNb5B0W8RB+ABvVv0SSM3lpcJWA68D0yxIModtRNV6sHNWdoDleNngio9IWBsd4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412032; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=lPfFZQmNAiTWiFduxB5+BIk3GXRmLG9EPVVHGi+6pOM=; b=JZBWPKbGqEhVjDSZXqKrA2y69Bct08Fe7abcGJJ7ckLsYwH9MphtY+Kdp2cOT6nUrsonh8GeRcn4ssRiHT+EJqVM5SRqhZP6Woqktd9FZg7PMsclBmEKIhoMJobm1y7Nk/P2Rm2mOTr8mpb1+5fjoDAP7f4pg6R4m5lI7mbpzrY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412032067893.0412506088102; Sat, 18 Jul 2026 15:00:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlD4o-0005of-VP; Sat, 18 Jul 2026 18:00:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD4j-0005k6-Ef; Sat, 18 Jul 2026 18:00:01 -0400 Received: from pdx-out-010.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.12.53.23]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD4h-0004sg-Dh; Sat, 18 Jul 2026 18:00:01 -0400 Received: from ip-10-5-12-219.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.12.219]) by internal-pdx-out-010.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 21:59:55 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.48:17923] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.0.115:2525] with esmtp (Farcaster) id 2ce57dad-369d-44cb-9f3c-ee27edc9cb9d; Sat, 18 Jul 2026 21:59:55 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB002.ant.amazon.com (10.250.64.231) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:59:55 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:59:45 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784411999; x=1815947999; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=lPfFZQmNAiTWiFduxB5+BIk3GXRmLG9EPVVHGi+6pOM=; b=OHDyxTY5Gd5ZEoJ6c/PU1vt9g6zYgY2nTcklXSsXLcBcpIpfsysVw0Z7 YWLVe+Q5OVR3j1JIcMoFiELmJfanyaRDDTls6ci67J70xspmInM/bzmMS /TgyaWVza8wNxi8HD9AiM2mmSbkBeHtyJrdTp+iOqF/4kQ0vQFi0Z4kcY VGNAWmdqUbmPS63wJ2JTAW29kE2/pao0UovEaiWSsYUGV5NILrfGc8pR5 vg2JixzOgbLqIAoGHy1wED/6TTPVdlAb52vzwS7vO619uRBgC2p1iCjgx Xz/vMzcGi1kGbeT0wuS+FpUie8YKmiq1p7e89YJ94nZ8kCxKilC+V8eF0 A==; X-CSE-ConnectionGUID: 3ZldhHdlSfixbSxdETMY8A== X-CSE-MsgGUID: PZ3u0opQQ+6PWdYkjPM6Rw== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23795474" X-Farcaster-Flow-ID: 2ce57dad-369d-44cb-9f3c-ee27edc9cb9d From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 082/137] hw/isa: Give the isabus-bridge a QOM parent Date: Sat, 18 Jul 2026 21:35:57 +0000 Message-ID: <20260718213652.37673-83-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D043UWA002.ant.amazon.com (10.13.139.53) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.12.53.23; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-010.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.01, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412033843158500 Content-Type: text/plain; charset="utf-8" isa_bus_new(NULL, ...) implicitly created a sysbus "isabus-bridge" and put the ISA bus on it. That bridge ended up under /machine/unattached, which this series is deleting. Split out an explicit isa_bus_new_bridge(parent, ...) helper for the five boards that don't already have a south-bridge device to own the ISA bus, and make plain isa_bus_new() require a non-NULL device. Callers own the bridge in the composition tree: hw/i386/microvm.c OBJECT(mms) hw/i386/isapc.c OBJECT(machine) hw/mips/jazz.c OBJECT(machine) hw/hppa/machine.c parent (already threaded) hw/ppc/pnv_lpc.c OBJECT(lpc) -- the LPC controller AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/hppa/machine.c | 2 +- hw/i386/isapc.c | 2 +- hw/i386/microvm.c | 2 +- hw/isa/isa-bus.c | 21 +++++++++++---------- hw/mips/jazz.c | 2 +- hw/ppc/pnv_lpc.c | 4 ++-- include/hw/isa/isa.h | 2 ++ 7 files changed, 19 insertions(+), 16 deletions(-) diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c index 002f4299cc..d52f27c51c 100644 --- a/hw/hppa/machine.c +++ b/hw/hppa/machine.c @@ -108,7 +108,7 @@ static ISABus *hppa_isa_bus(Object *parent, hwaddr addr) NULL, "isa-io", 0x800); memory_region_add_subregion(get_system_memory(), addr, isa_region); =20 - isa_bus =3D isa_bus_new(NULL, get_system_memory(), isa_region, + isa_bus =3D isa_bus_new_bridge(parent, get_system_memory(), isa_region, &error_abort); isa_irqs =3D i8259_init(parent, isa_bus, NULL); isa_bus_register_input_irqs(isa_bus, isa_irqs); diff --git a/hw/i386/isapc.c b/hw/i386/isapc.c index 842ae94acb..e8d5767b80 100644 --- a/hw/i386/isapc.c +++ b/hw/i386/isapc.c @@ -108,7 +108,7 @@ static void pc_init_isa(MachineState *machine) =20 gsi_state =3D pc_gsi_create(&x86ms->gsi, false); =20 - isa_bus =3D isa_bus_new(NULL, system_memory, system_io, + isa_bus =3D isa_bus_new_bridge(OBJECT(machine), system_memory, system_= io, &error_abort); isa_bus_register_input_irqs(isa_bus, x86ms->gsi); =20 diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c index 8c61106516..aa0e1ef155 100644 --- a/hw/i386/microvm.c +++ b/hw/i386/microvm.c @@ -171,7 +171,7 @@ static void microvm_devices_init(MicrovmMachineState *m= ms) x86ms->gsi =3D qemu_allocate_irqs(gsi_handler, gsi_state, IOAPIC_NUM_PINS * ioapics); =20 - isa_bus =3D isa_bus_new(NULL, get_system_memory(), get_system_io(), + isa_bus =3D isa_bus_new_bridge(OBJECT(mms), get_system_memory(), get_s= ystem_io(), &error_abort); isa_bus_register_input_irqs(isa_bus, x86ms->gsi); =20 diff --git a/hw/isa/isa-bus.c b/hw/isa/isa-bus.c index fb20c43869..7a6a595ce7 100644 --- a/hw/isa/isa-bus.c +++ b/hw/isa/isa-bus.c @@ -52,28 +52,29 @@ static const TypeInfo isa_bus_info =3D { ISABus *isa_bus_new(DeviceState *dev, MemoryRegion* address_space, MemoryRegion *address_space_io, Error **errp) { - DeviceState *bridge =3D NULL; - if (isabus) { error_setg(errp, "Can't create a second ISA bus"); return NULL; } - if (!dev) { - bridge =3D qdev_new_orphan("isabus-bridge"); - dev =3D bridge; - } + g_assert(dev); =20 isabus =3D ISA_BUS(qbus_new(TYPE_ISA_BUS, dev, NULL)); isabus->address_space =3D address_space; isabus->address_space_io =3D address_space_io; =20 - if (bridge) { - sysbus_realize_and_unref(SYS_BUS_DEVICE(bridge), &error_fatal); - } - return isabus; } =20 +ISABus *isa_bus_new_bridge(Object *parent, MemoryRegion *address_space, + MemoryRegion *address_space_io, Error **errp) +{ + DeviceState *bridge =3D qdev_new(parent, "isabus-bridge", "isabus-brid= ge"); + ISABus *bus =3D isa_bus_new(bridge, address_space, address_space_io, e= rrp); + + sysbus_realize(SYS_BUS_DEVICE(bridge), &error_fatal); + return bus; +} + void isa_bus_register_input_irqs(ISABus *bus, qemu_irq *irqs_in) { bus->irqs_in =3D irqs_in; diff --git a/hw/mips/jazz.c b/hw/mips/jazz.c index 23d717d96a..8c52608913 100644 --- a/hw/mips/jazz.c +++ b/hw/mips/jazz.c @@ -283,7 +283,7 @@ static void mips_jazz_init(MachineState *machine, memory_region_init(isa_mem, NULL, "isa-mem", 0x01000000); memory_region_add_subregion(address_space, 0x90000000, isa_io); memory_region_add_subregion(address_space, 0x91000000, isa_mem); - isa_bus =3D isa_bus_new(NULL, isa_mem, isa_io, &error_abort); + isa_bus =3D isa_bus_new_bridge(OBJECT(machine), isa_mem, isa_io, &erro= r_abort); =20 /* ISA devices */ i8259 =3D i8259_init(OBJECT(machine), isa_bus, env->irq[4]); diff --git a/hw/ppc/pnv_lpc.c b/hw/ppc/pnv_lpc.c index d1357dd359..6ae228088f 100644 --- a/hw/ppc/pnv_lpc.c +++ b/hw/ppc/pnv_lpc.c @@ -972,11 +972,11 @@ ISABus *pnv_lpc_isa_create(PnvLpcController *lpc, boo= l use_cpld, Error **errp) qemu_irq *irqs; qemu_irq_handler handler; =20 - /* let isa_bus_new() create its own bridge on SysBus otherwise + /* let isa_bus_new_bridge() create the bridge as a child of the LPC; * devices specified on the command line won't find the bus and * will fail to create. */ - isa_bus =3D isa_bus_new(NULL, &lpc->isa_mem, &lpc->isa_io, &local_err); + isa_bus =3D isa_bus_new_bridge(OBJECT(lpc), &lpc->isa_mem, &lpc->isa_i= o, &local_err); if (local_err) { error_propagate(errp, local_err); return NULL; diff --git a/include/hw/isa/isa.h b/include/hw/isa/isa.h index 9e35d88b1e..79bfe16361 100644 --- a/include/hw/isa/isa.h +++ b/include/hw/isa/isa.h @@ -69,6 +69,8 @@ struct ISADevice { =20 ISABus *isa_bus_new(DeviceState *dev, MemoryRegion *address_space, MemoryRegion *address_space_io, Error **errp); +ISABus *isa_bus_new_bridge(Object *parent, MemoryRegion *address_space, + MemoryRegion *address_space_io, Error **errp); void isa_bus_register_input_irqs(ISABus *bus, qemu_irq *irqs_in); void isa_bus_dma(ISABus *bus, IsaDma *dma8, IsaDma *dma16); IsaDma *isa_bus_get_dma(ISABus *bus, int nchan); --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412075; cv=none; d=zohomail.com; s=zohoarc; b=c60WYpxC06Wira8SocLGAiX55C7K9cameKKOEXiAOffRTe5Bcx1U8XupTa7+OkWrRIfJX4QEnZpH930f1YxPnV7fhTpIQVAmeNSRhDe8WAMtuASCmtvVTVUOdyx4OHBkJwiWRwrIMzyjY1RakKByA/6xAgFcvxvVdLGvecaUQFA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412075; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=b7JTR8AmMUiHD38GkMccPy6Amfoy8c83JujLhhjT6yA=; b=ZhR6ga+Rs8sqy0G5B/N9hEJlAaXfzju6eH9SYm+EwX82nQPF0xPZS6QAZqEgPUSjC8lBn3eWYzrKEuoPQyrtQc3l3ukcQNVOsedyaYI4bpj683CFP+CEUWS29aqf540KZlrOaVXZFQOZ9Ofd6/zcNegAu4Sml9DtCYV1Qry7iL4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412075347278.9373345389496; Sat, 18 Jul 2026 15:01:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlD5b-0006Kt-6W; Sat, 18 Jul 2026 18:00:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD4u-00061F-QT; Sat, 18 Jul 2026 18:00:19 -0400 Received: from pdx-out-007.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.34.181.151]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD4r-0004uf-Fe; Sat, 18 Jul 2026 18:00:12 -0400 Received: from ip-10-5-0-115.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.0.115]) by internal-pdx-out-007.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:00:05 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.234:8867] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.48.250:2525] with esmtp (Farcaster) id 1d7adfaf-9207-4b96-84c2-600e41e79238; Sat, 18 Jul 2026 22:00:05 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA002.ant.amazon.com (10.250.64.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:00:04 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 21:59:55 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412009; x=1815948009; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=b7JTR8AmMUiHD38GkMccPy6Amfoy8c83JujLhhjT6yA=; b=N+seCABHvLBnu0UdP2JIb9jnNkRbC0VkCd7e3Jz77A1yAEhWbqxbLkZD EYMQXFHXlTYqKMtXMx84TCwUNzyd0fjznhGSOPHmYohEvPEg+J9vvCLFZ ylI/X0A9dIXNDLRWlkrt9iA6hj3MzimkjAhbLJNGL9YeyetQBoQ8OKnHh tMuUXa6lKsROFXaDFrk0FJCjsZ1RmYx5V7UfGIHCAx20ENXYxoBexwPQb 70/76+FMHB0aIeLfrv/4Xd1eUrHzGKB0+yzabP5D7Y97xSERWjXGZUXXD 8iQECm0NHxKCsjgP7sl3ZVEmUQp9bDQ9f3mTIDAQf2+BlRDYVJ5fJ0D22 A==; X-CSE-ConnectionGUID: i5taSnfuSdSD2iD/Z+/4SA== X-CSE-MsgGUID: YLNC87bpQ9Sg+vYBpBAO+g== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23910813" X-Farcaster-Flow-ID: 1d7adfaf-9207-4b96-84c2-600e41e79238 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 083/137] net, target/mips: Give -nic and CPU-with-clock helpers a QOM parent Date: Sat, 18 Jul 2026 21:35:58 +0000 Message-ID: <20260718213652.37673-84-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D043UWA002.ant.amazon.com (10.13.139.53) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.34.181.151; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-007.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.01, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412075968158500 Content-Type: text/plain; charset="utf-8" qemu_create_nic_device() and qemu_create_nic_bus_devices() are the board-side and bus-side halves of the '-nic' command-line path. Thread an explicit parent through the former (each of the seven callers now supplies the machine or SoC that owns the on-board NIC) and let the latter place devices under /machine/peripheral-anon like -device does. s390 was already parenting the returned device by hand; drop that now-redundant open-coding. mips_cpu_create_with_clock() likewise gains an explicit parent; the four MIPS boards pass the machine and name the CPU cpu[*]. xtensa_cpu_create_with_clock() has no callers, so just remove it. For linux-user/bsd-user there is no machine and hence no composition tree; open-code object_new()+qdev_realize() where cpu_create_orphan() used to be. While at it, fix a stale doc reference in migration.c. AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- bsd-user/main.c | 3 ++- hw/arm/exynos4_boards.c | 4 ++-- hw/hppa/machine.c | 4 ++-- hw/m68k/mcf5208.c | 4 ++-- hw/mips/fuloong2e.c | 3 ++- hw/mips/jazz.c | 2 +- hw/mips/loongson3_virt.c | 3 ++- hw/mips/malta.c | 2 +- hw/or1k/or1k-sim.c | 4 ++-- hw/s390x/s390-virtio-ccw.c | 8 +++----- hw/vmapple/vmapple.c | 5 +++-- hw/xtensa/xtfpga.c | 4 ++-- include/net/net.h | 5 ++++- linux-user/main.c | 6 ++++-- migration/migration.c | 2 +- net/net.c | 10 ++++++---- target/mips/cpu.c | 5 +++-- target/mips/cpu.h | 3 ++- target/xtensa/cpu.c | 11 ----------- target/xtensa/cpu.h | 2 -- 20 files changed, 44 insertions(+), 46 deletions(-) diff --git a/bsd-user/main.c b/bsd-user/main.c index 5269ea42a5..6dbd1cc1ae 100644 --- a/bsd-user/main.c +++ b/bsd-user/main.c @@ -474,7 +474,8 @@ int main(int argc, char **argv) set_preferred_target_page_bits(ctz32(host_page_size)); finalize_target_page_bits(); =20 - cpu =3D cpu_create_orphan(cpu_type); + cpu =3D CPU(object_new(cpu_type)); + qdev_realize(DEVICE(cpu), NULL, &error_fatal); env =3D cpu_env(cpu); cpu_reset(cpu); thread_cpu =3D cpu; diff --git a/hw/arm/exynos4_boards.c b/hw/arm/exynos4_boards.c index 1b8c9b618f..dce2c24860 100644 --- a/hw/arm/exynos4_boards.c +++ b/hw/arm/exynos4_boards.c @@ -78,11 +78,11 @@ static void lan9215_init(uint32_t base, qemu_irq irq) SysBusDevice *s; =20 /* This should be a 9215 but the 9118 is close enough */ - dev =3D qemu_create_nic_device(TYPE_LAN9118, true, NULL); + dev =3D qemu_create_nic_device(qdev_get_machine(), "lan9215", TYPE_LAN= 9118, true, NULL); if (dev) { qdev_prop_set_uint32(dev, "mode_16bit", 1); s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); sysbus_mmio_map(s, 0, base); sysbus_connect_irq(s, 0, irq); } diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c index d52f27c51c..4fcb3e5e37 100644 --- a/hw/hppa/machine.c +++ b/hw/hppa/machine.c @@ -640,9 +640,9 @@ static void machine_HP_715_init(MachineState *machine) } =20 /* LASI i82596 network */ - dev =3D qemu_create_nic_device(TYPE_LASI_82596, true, "lasi"); + dev =3D qemu_create_nic_device(OBJECT(machine), "lan", TYPE_LASI_82596= , true, "lasi"); if (dev) { - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, qdev_get_gpio_in(lasi_dev, LASI_IRQ_LAN_HPA)); memory_region_add_subregion(addr_space, diff --git a/hw/m68k/mcf5208.c b/hw/m68k/mcf5208.c index f305478b8d..a955efebeb 100644 --- a/hw/m68k/mcf5208.c +++ b/hw/m68k/mcf5208.c @@ -260,13 +260,13 @@ static void mcf_fec_init(MemoryRegion *sysmem, hwaddr= base, DeviceState *intc) SysBusDevice *s; int i; =20 - dev =3D qemu_create_nic_device(TYPE_MCF_FEC_NET, true, NULL); + dev =3D qemu_create_nic_device(qdev_get_machine(), "fec", TYPE_MCF_FEC= _NET, true, NULL); if (!dev) { return; } =20 s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); for (i =3D 0; i < FEC_NUM_IRQ; i++) { sysbus_connect_irq(s, i, qdev_get_gpio_in(intc, i + 36)); } diff --git a/hw/mips/fuloong2e.c b/hw/mips/fuloong2e.c index 477ad99c87..1b105ca37c 100644 --- a/hw/mips/fuloong2e.c +++ b/hw/mips/fuloong2e.c @@ -231,7 +231,8 @@ static void mips_fuloong2e_init(MachineState *machine) clock_set_hz(cpuclk, 533080000); /* ~533 MHz */ =20 /* init CPUs */ - cpu =3D mips_cpu_create_with_clock(machine->cpu_type, cpuclk, false); + cpu =3D mips_cpu_create_with_clock(OBJECT(machine), "cpu[*]", + machine->cpu_type, cpuclk, false); env =3D &cpu->env; =20 qemu_register_reset(main_cpu_reset, cpu); diff --git a/hw/mips/jazz.c b/hw/mips/jazz.c index 8c52608913..cb24d8c00d 100644 --- a/hw/mips/jazz.c +++ b/hw/mips/jazz.c @@ -209,7 +209,7 @@ static void mips_jazz_init(MachineState *machine, * ext_clk[jazz_model].pll_mult); =20 /* init CPUs */ - cpu =3D mips_cpu_create_with_clock(machine->cpu_type, cpuclk, + cpu =3D mips_cpu_create_with_clock(OBJECT(machine), "cpu[*]", machine-= >cpu_type, cpuclk, TARGET_BIG_ENDIAN); env =3D &cpu->env; qemu_register_reset(main_cpu_reset, cpu); diff --git a/hw/mips/loongson3_virt.c b/hw/mips/loongson3_virt.c index 8d8430562c..93c14026ab 100644 --- a/hw/mips/loongson3_virt.c +++ b/hw/mips/loongson3_virt.c @@ -552,7 +552,8 @@ static void mips_loongson3_virt_init(MachineState *mach= ine) hwaddr ipi_base =3D ((hwaddr)node << 44) + virt_memmap[VIRT_IPI].b= ase; =20 /* init CPUs */ - cpu =3D mips_cpu_create_with_clock(machine->cpu_type, cpuclk, fals= e); + cpu =3D mips_cpu_create_with_clock(OBJECT(machine), "cpu[*]", + machine->cpu_type, cpuclk, false); =20 /* Init internal devices */ cpu_mips_irq_init_cpu(cpu); diff --git a/hw/mips/malta.c b/hw/mips/malta.c index e8c130d5bb..72bc97625f 100644 --- a/hw/mips/malta.c +++ b/hw/mips/malta.c @@ -1027,7 +1027,7 @@ static void create_cpu_without_cps(MachineState *ms, = MaltaState *s, int i; =20 for (i =3D 0; i < ms->smp.cpus; i++) { - cpu =3D mips_cpu_create_with_clock(ms->cpu_type, s->cpuclk, + cpu =3D mips_cpu_create_with_clock(OBJECT(ms), "cpu[*]", ms->cpu_t= ype, s->cpuclk, TARGET_BIG_ENDIAN); =20 /* Init internal devices */ diff --git a/hw/or1k/or1k-sim.c b/hw/or1k/or1k-sim.c index 7ea61327c3..293970f156 100644 --- a/hw/or1k/or1k-sim.c +++ b/hw/or1k/or1k-sim.c @@ -178,13 +178,13 @@ static void openrisc_sim_net_init(Or1ksimState *state= , hwaddr base, hwaddr size, char *nodename; int i; =20 - dev =3D qemu_create_nic_device("open_eth", true, NULL); + dev =3D qemu_create_nic_device(OBJECT(state), "eth", "open_eth", true,= NULL); if (!dev) { return; } =20 s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); if (num_cpus > 1) { DeviceState *splitter =3D qdev_new(OBJECT(state), "irq-splitter[*]= ", TYPE_SPLIT_IRQ); diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c index 1848cde0c4..037cb6eb5e 100644 --- a/hw/s390x/s390-virtio-ccw.c +++ b/hw/s390x/s390-virtio-ccw.c @@ -237,12 +237,10 @@ static void s390_init_ipl_dev(const char *kernel_file= name, static void s390_create_virtio_net(BusState *bus, const char *name) { DeviceState *dev; - int cnt =3D 0; =20 - while ((dev =3D qemu_create_nic_device(name, true, "virtio"))) { - g_autofree char *childname =3D g_strdup_printf("%s[%d]", name, cnt= ++); - object_property_add_child(OBJECT(bus), childname, OBJECT(dev)); - qdev_realize_and_unref(dev, bus, &error_fatal); + while ((dev =3D qemu_create_nic_device(qdev_get_machine(), "nic[*]", + name, true, "virtio"))) { + qdev_realize(dev, bus, &error_fatal); } } =20 diff --git a/hw/vmapple/vmapple.c b/hw/vmapple/vmapple.c index 60c7dab89b..67e499b74a 100644 --- a/hw/vmapple/vmapple.c +++ b/hw/vmapple/vmapple.c @@ -416,8 +416,9 @@ static void create_pcie(VMAppleMachineState *vms) vms->bus =3D pci->bus; g_assert(vms->bus); =20 - while ((dev =3D qemu_create_nic_device("virtio-net-pci", true, NULL)))= { - qdev_realize_and_unref(dev, BUS(vms->bus), &error_fatal); + while ((dev =3D qemu_create_nic_device(OBJECT(vms), "nic[*]", + "virtio-net-pci", true, NULL))) { + qdev_realize(dev, BUS(vms->bus), &error_fatal); } =20 if (defaults_enabled()) { diff --git a/hw/xtensa/xtfpga.c b/hw/xtensa/xtfpga.c index 10bbc34399..1c48283f5d 100644 --- a/hw/xtensa/xtfpga.c +++ b/hw/xtensa/xtfpga.c @@ -149,13 +149,13 @@ static void xtfpga_net_init(MemoryRegion *address_spa= ce, SysBusDevice *s; MemoryRegion *ram; =20 - dev =3D qemu_create_nic_device("open_eth", true, NULL); + dev =3D qemu_create_nic_device(qdev_get_machine(), "eth", "open_eth", = true, NULL); if (!dev) { return; } =20 s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); + sysbus_realize(s, &error_fatal); sysbus_connect_irq(s, 0, irq); memory_region_add_subregion(address_space, base, sysbus_mmio_get_region(s, 0)); diff --git a/include/net/net.h b/include/net/net.h index 45bc86fc86..3bba6e8c11 100644 --- a/include/net/net.h +++ b/include/net/net.h @@ -243,6 +243,8 @@ bool qemu_configure_nic_device(DeviceState *dev, bool m= atch_default, =20 /** * qemu_create_nic_device: Create a NIC device if a configuration exists f= or it + * @parent: QOM parent of the created device + * @id: child<> property name * @typename: Object typename of network device * @match_default: Match NIC configurations with no model specified * @alias: Additional model string to match @@ -250,7 +252,8 @@ bool qemu_configure_nic_device(DeviceState *dev, bool m= atch_default, * Search for a NIC configuration for the provided device type. If found, * create an object of the corresponding type and return it. */ -DeviceState *qemu_create_nic_device(const char *typename, bool match_defau= lt, +DeviceState *qemu_create_nic_device(Object *parent, const char *id, + const char *typename, bool match_defau= lt, const char *alias); =20 /* diff --git a/linux-user/main.c b/linux-user/main.c index 966322dbb3..c04d21ba84 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -235,7 +235,8 @@ void init_task_state(TaskState *ts) CPUArchState *cpu_copy(CPUArchState *env) { CPUState *cpu =3D env_cpu(env); - CPUState *new_cpu =3D cpu_create_orphan(cpu_type); + CPUState *new_cpu =3D CPU(object_new(cpu_type)); + qdev_realize(DEVICE(new_cpu), NULL, &error_fatal); CPUArchState *new_env =3D cpu_env(new_cpu); CPUBreakpoint *bp; =20 @@ -817,7 +818,8 @@ int main(int argc, char **argv, char **envp) set_preferred_target_page_bits(ctz32(host_page_size)); finalize_target_page_bits(); =20 - cpu =3D cpu_create_orphan(cpu_type); + cpu =3D CPU(object_new(cpu_type)); + qdev_realize(DEVICE(cpu), NULL, &error_fatal); env =3D cpu_env(cpu); cpu_reset(cpu); thread_cpu =3D cpu; diff --git a/migration/migration.c b/migration/migration.c index bdd163b65d..9736c14458 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -4076,7 +4076,7 @@ static const TypeInfo migration_type =3D { .name =3D TYPE_MIGRATION, /* * NOTE: TYPE_MIGRATION is not really a device, as the object is - * not created using qdev_new_orphan(), it is not attached to the qdev + * not created using qdev_new(), it is not attached to the qdev * device tree, and it is never realized. * * TODO: Make this TYPE_OBJECT once QOM provides something like diff --git a/net/net.c b/net/net.c index e09f0c0d4f..2224367523 100644 --- a/net/net.c +++ b/net/net.c @@ -1204,7 +1204,8 @@ bool qemu_configure_nic_device(DeviceState *dev, bool= match_default, } =20 /* "Please create a device, if you have a configuration for it" */ -DeviceState *qemu_create_nic_device(const char *typename, bool match_defau= lt, +DeviceState *qemu_create_nic_device(Object *parent, const char *id, + const char *typename, bool match_defau= lt, const char *alias) { NICInfo *nd =3D qemu_find_nic_info(typename, match_default, alias); @@ -1214,7 +1215,7 @@ DeviceState *qemu_create_nic_device(const char *typen= ame, bool match_default, return NULL; } =20 - dev =3D qdev_new_orphan(typename); + dev =3D qdev_new(parent, id, typename); qdev_set_nic_properties(dev, nd); return dev; } @@ -1264,9 +1265,10 @@ void qemu_create_nic_bus_devices(BusState *bus, cons= t char *parent_type, continue; } =20 - dev =3D qdev_new_orphan(model); + dev =3D qdev_new(machine_get_container("peripheral-anon"), + "nic[*]", model); qdev_set_nic_properties(dev, nd); - qdev_realize_and_unref(dev, bus, &error_fatal); + qdev_realize(dev, bus, &error_fatal); } =20 g_ptr_array_free(nic_models, true); diff --git a/target/mips/cpu.c b/target/mips/cpu.c index 9ad1b4177d..735a2041b7 100644 --- a/target/mips/cpu.c +++ b/target/mips/cpu.c @@ -751,12 +751,13 @@ static void mips_cpu_register_types(void) type_init(mips_cpu_register_types) =20 /* Could be used by generic CPU object */ -MIPSCPU *mips_cpu_create_with_clock(const char *cpu_type, Clock *cpu_refcl= k, +MIPSCPU *mips_cpu_create_with_clock(Object *parent, const char *id, + const char *cpu_type, Clock *cpu_refcl= k, bool is_big_endian) { DeviceState *cpu; =20 - cpu =3D qdev_new_orphan(cpu_type); + cpu =3D qdev_new(parent, id, cpu_type); qdev_connect_clock_in(cpu, "clk-in", cpu_refclk); object_property_set_bool(OBJECT(cpu), "big-endian", is_big_endian, &error_abort); diff --git a/target/mips/cpu.h b/target/mips/cpu.h index 319147a948..491a190271 100644 --- a/target/mips/cpu.h +++ b/target/mips/cpu.h @@ -1429,7 +1429,8 @@ void cpu_mips_restore_fp_status(CPUMIPSState *env); * * Returns: A #CPUState or %NULL if an error occurred. */ -MIPSCPU *mips_cpu_create_with_clock(const char *cpu_type, Clock *cpu_refcl= k, +MIPSCPU *mips_cpu_create_with_clock(Object *parent, const char *id, + const char *cpu_type, Clock *cpu_refcl= k, bool is_big_endian); =20 #endif /* MIPS_CPU_H */ diff --git a/target/xtensa/cpu.c b/target/xtensa/cpu.c index 8e888a19d1..7573c1d67b 100644 --- a/target/xtensa/cpu.c +++ b/target/xtensa/cpu.c @@ -284,17 +284,6 @@ static void xtensa_cpu_initfn(Object *obj) #endif } =20 -XtensaCPU *xtensa_cpu_create_with_clock(const char *cpu_type, Clock *cpu_r= efclk) -{ - DeviceState *cpu; - - cpu =3D qdev_new_orphan(cpu_type); - qdev_connect_clock_in(cpu, "clk-in", cpu_refclk); - qdev_realize(cpu, NULL, &error_abort); - - return XTENSA_CPU(cpu); -} - #ifndef CONFIG_USER_ONLY static const VMStateDescription vmstate_xtensa_cpu =3D { .name =3D "cpu", diff --git a/target/xtensa/cpu.h b/target/xtensa/cpu.h index 442e98bd1b..019d0b56c1 100644 --- a/target/xtensa/cpu.h +++ b/target/xtensa/cpu.h @@ -736,8 +736,6 @@ static inline uint32_t xtensa_replicate_windowstart(CPU= XtensaState *env) #define XTENSA_CSBASE_LBEG_OFF_MASK 0x00ff0000 #define XTENSA_CSBASE_LBEG_OFF_SHIFT 16 =20 -XtensaCPU *xtensa_cpu_create_with_clock(const char *cpu_type, - Clock *cpu_refclk); =20 /* * Set the NaN propagation rule for future FPU operations: --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412101; cv=none; d=zohomail.com; s=zohoarc; b=NXxCQSB+U9tSGpeHotDNuqOKkgm7GgljSA6pjSSNHKarK9pD4rwk/GLZg/pzjUGxHng/Ln5qwQJf7rPVQsqceA/BfIo+Sfra3mkQS3ZSgej/ZySZ/3s6zaHnV6KPhiVOgpObTOsLBSd4Cl82tCZUqe9UGBw926cNntyP6XDWQMc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412101; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=d6iS0FIREdz0TNR9DfB/SFND7gP2ybsTkP6Wou/2gWo=; b=XL6Nb8khI9cg8WAPWabVLvF056Vs5qV8hxVrvQZvagGGpcfBBxxZl+0gVbgzG82wMIdFQ36AxzITO6jwLiY2uJNuncZke287YWuGGQprpkRdZHBh/IPE7n5SwZfLaj0TD2eYAQs8gLBJAD94CLvRiSNn21aLZx4fr5vk4hoRNGQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412101422236.9250605406994; Sat, 18 Jul 2026 15:01:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlD5s-0006em-Qw; Sat, 18 Jul 2026 18:01:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD5S-0006Jz-2x; Sat, 18 Jul 2026 18:00:49 -0400 Received: from pdx-out-007.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.34.181.151]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD5P-00058R-VR; Sat, 18 Jul 2026 18:00:45 -0400 Received: from ip-10-5-9-48.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.9.48]) by internal-pdx-out-007.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:00:36 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.182:16122] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.48.250:2525] with esmtp (Farcaster) id c1972da8-fd20-434f-b481-398236befa10; Sat, 18 Jul 2026 22:00:36 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA001.ant.amazon.com (10.250.64.218) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:00:36 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:00:26 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412043; x=1815948043; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=d6iS0FIREdz0TNR9DfB/SFND7gP2ybsTkP6Wou/2gWo=; b=O5uuMzFbWBIr82lfgeaqk+LsM+sHTZfO8p3F++zuq59NK1VooX5Yq8sf dAsRtYEwF7AKyCwxCQwPfrVM8o6ESAPRhNSb0lzckPkAkub/jBUEOAGNk i0fKhk7+gStpv2UOtQ6n10SE9/P3G8ktrYv+g7muPxvgIFLBhWV3TlGpL rBdZ5KnSznnRVTX6UbRbpoMWQcbMdTYvpNrY8WEG+a3UTOjTE52yOI7+8 hg5bmhoQUk/QmLHuBLRjur7NHsP6AuP78Dbq7tZN0mhmbDk7W8JUYnG7P qiQi+CHCPFLbihLZODvhPc4LuTZeJG9Vg9RePdjKnPMKDtQ40+00PPe1s A==; X-CSE-ConnectionGUID: I/07+W4XR1+t0Ssm93EKwA== X-CSE-MsgGUID: Mr7LpQicRuqxHIieVbza5g== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23910852" X-Farcaster-Flow-ID: c1972da8-fd20-434f-b481-398236befa10 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 084/137] usb, ssi, i2c: Remove *_orphan() creator variants Date: Sat, 18 Jul 2026 21:35:59 +0000 Message-ID: <20260718213652.37673-85-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D036UWC003.ant.amazon.com (10.13.139.214) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.34.181.151; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-007.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.01, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412101900158500 Content-Type: text/plain; charset="utf-8" All external callers now go through the parented usb_new()/ usb_create_simple(), ssi_create_peripheral(), i2c_slave_new()/ i2c_slave_create_simple() introduced earlier in the series. Remove the transitional *_orphan() spellings. The corresponding *_realize_and_unref() helpers stay for now: they are still valid for callers that reach for object_new() directly and hold a floating reference (qdev_device_add() being the primary example one layer down). AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/i2c/core.c | 18 ------------------ hw/ssi/ssi.c | 8 -------- include/hw/i2c/i2c.h | 31 ++++--------------------------- include/hw/ssi/ssi.h | 5 ++--- include/hw/usb/usb.h | 9 --------- 5 files changed, 6 insertions(+), 65 deletions(-) diff --git a/hw/i2c/core.c b/hw/i2c/core.c index fba21fdfad..f333df3760 100644 --- a/hw/i2c/core.c +++ b/hw/i2c/core.c @@ -364,15 +364,6 @@ const VMStateDescription vmstate_i2c_slave =3D { } }; =20 -I2CSlave *i2c_slave_new_orphan(const char *name, uint8_t addr) -{ - DeviceState *dev; - - dev =3D qdev_new_orphan(name); - qdev_prop_set_uint8(dev, "address", addr); - return I2C_SLAVE(dev); -} - I2CSlave *i2c_slave_new(Object *parent, const char *id, const char *type, uint8_t addr) { @@ -398,15 +389,6 @@ bool i2c_slave_realize_and_unref(I2CSlave *dev, I2CBus= *bus, Error **errp) return qdev_realize_and_unref(&dev->qdev, &bus->qbus, errp); } =20 -I2CSlave *i2c_slave_create_simple_orphan(I2CBus *bus, const char *name, ui= nt8_t addr) -{ - I2CSlave *dev =3D i2c_slave_new_orphan(name, addr); - - i2c_slave_realize_and_unref(dev, bus, &error_abort); - - return dev; -} - static bool i2c_slave_match(I2CSlave *candidate, uint8_t address, bool broadcast, I2CNodeList *current_devs) { diff --git a/hw/ssi/ssi.c b/hw/ssi/ssi.c index 6031cde7b0..07188d87bb 100644 --- a/hw/ssi/ssi.c +++ b/hw/ssi/ssi.c @@ -147,14 +147,6 @@ DeviceState *ssi_create_peripheral(Object *parent, con= st char *id, return dev; } =20 -DeviceState *ssi_create_peripheral_orphan(SSIBus *bus, const char *name) -{ - DeviceState *dev =3D qdev_new_orphan(name); - - ssi_realize_and_unref(dev, bus, &error_fatal); - return dev; -} - SSIBus *ssi_create_bus(DeviceState *parent, const char *name) { BusState *bus; diff --git a/include/hw/i2c/i2c.h b/include/hw/i2c/i2c.h index 0bba1a7c20..c0829edf8f 100644 --- a/include/hw/i2c/i2c.h +++ b/include/hw/i2c/i2c.h @@ -154,17 +154,6 @@ uint8_t i2c_recv(I2CBus *bus); bool i2c_scan_bus(I2CBus *bus, uint8_t address, bool broadcast, I2CNodeList *current_devs); =20 -/** - * Create an I2C slave device on the heap. - * @name: a device type name - * @addr: I2C address of the slave when put on a bus - * - * This only initializes the device state structure and allows - * properties to be set. Type @name must exist. The device still - * needs to be realized. See qdev-core.h. - */ -I2CSlave *i2c_slave_new_orphan(const char *name, uint8_t addr); - /** * Create a parented I2C slave device on the heap. * @parent: the QOM parent @@ -172,24 +161,12 @@ I2CSlave *i2c_slave_new_orphan(const char *name, uint= 8_t addr); * @type: I2C slave device type name * @addr: I2C address of the slave when put on a bus * - * Like i2c_slave_new_orphan(), but the returned device is owned by + * Like i2c_slave_new(), but the returned device is owned by * @parent's child<> property. Pair with qdev_realize(). */ I2CSlave *i2c_slave_new(Object *parent, const char *id, const char *type, uint8_t addr); =20 -/** - * Create and realize an I2C slave device on the heap. - * @bus: I2C bus to put it on - * @name: I2C slave device type name - * @addr: I2C address of the slave when put on a bus - * - * Create the device state structure, initialize it, put it on the - * specified @bus, and drop the reference to it (the device is realized). - */ -I2CSlave *i2c_slave_create_simple_orphan(I2CBus *bus, const char *name, - uint8_t addr); - /** * Create, parent and realize an I2C slave device on the heap. * @parent: the QOM parent @@ -218,11 +195,11 @@ I2CSlave *i2c_slave_create_simple(Object *parent, con= st char *id, * Call 'realize' on @dev, put it on the specified @bus, and drop the * reference to it. * - * This function is useful if you have created @dev via qdev_new_orphan(), - * i2c_slave_new_orphan() or i2c_slave_try_new() (which take a reference to + * This function is useful if you have created @dev via qdev_new(), + * i2c_slave_new() or i2c_slave_try_new() (which take a reference to * the device it returns to you), so that you can set properties on it * before realizing it. If you don't need to set properties then - * i2c_slave_create_simple_orphan() is probably better (as it does the cre= ate, + * i2c_slave_create_simple() is probably better (as it does the create, * init and realize in one step). * * If you are embedding the I2C slave into another QOM device and diff --git a/include/hw/ssi/ssi.h b/include/hw/ssi/ssi.h index 36ed002281..b2a264bb55 100644 --- a/include/hw/ssi/ssi.h +++ b/include/hw/ssi/ssi.h @@ -83,7 +83,6 @@ extern const VMStateDescription vmstate_ssi_peripheral; =20 DeviceState *ssi_create_peripheral(Object *parent, const char *id, SSIBus *bus, const char *type); -DeviceState *ssi_create_peripheral_orphan(SSIBus *bus, const char *name); /** * ssi_realize_and_unref: realize and unref an SSI peripheral * @dev: SSI peripheral to realize @@ -94,10 +93,10 @@ DeviceState *ssi_create_peripheral_orphan(SSIBus *bus, = const char *name); * reference to it. Errors are reported via @errp and by returning * false. * - * This function is useful if you have created @dev via qdev_new_orphan() + * This function is useful if you have created @dev via qdev_new() * (which takes a reference to the device it returns to you), so that * you can set properties on it before realizing it. If you don't need - * to set properties then ssi_create_peripheral_orphan() is probably bette= r (as it + * to set properties then ssi_create_peripheral() is probably better (as it * does the create, init and realize in one step). * * If you are embedding the SSI peripheral into another QOM device and diff --git a/include/hw/usb/usb.h b/include/hw/usb/usb.h index 1ae1f40aa9..d2e59bc83b 100644 --- a/include/hw/usb/usb.h +++ b/include/hw/usb/usb.h @@ -599,13 +599,4 @@ static inline USBDevice *usb_create_simple(Object *par= ent, const char *id, return dev; } =20 -static inline USBDevice *usb_create_simple_orphan(USBBus *bus, - const char *name) -{ - USBDevice *dev =3D USB_DEVICE(qdev_new_orphan(name)); - - usb_realize_and_unref(dev, bus, &error_abort); - return dev; -} - #endif --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412097; cv=none; d=zohomail.com; s=zohoarc; b=m4jjI+Y9IgBxJ2ZIlrw/hJqYKpNgDkJXrhvnJyfCRmZPZuQJx64cMNG0p+56f4oPjoNXmGwNLGWEoFpa9eGUhn25MftWdOLiHwNrz2Ip0JukNssNScGwDhRBN6zWo37R8Tn4MMBcSXzojqFccolgsrCWIr4ncziTYspr4OqUUkY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412097; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=qmO8d/rDXj0cALhLa0MQcV3mYO09GhDUo5aekxJsoCQ=; b=LS7YS6Izt+nE6RQnQ9cm0JIKyWXwYLC0AdBVg8UB4vV7Q4INqUTvnQyrE2J2MwnCXl+iWQz6qxpakukjdvVzX84fi5BPDsju/NZLva77bjr4a2ActDqjxPdHpmgUNYTakGcjop+zYkkPBCHV1CNKyg/EqGy+Rha6JJPu+CRM2Ss= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412097199924.101731688208; Sat, 18 Jul 2026 15:01:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlD5s-0006d3-EP; Sat, 18 Jul 2026 18:01:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD5Y-0006MH-Ua; Sat, 18 Jul 2026 18:00:55 -0400 Received: from pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.42.203.116]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD5W-00059H-67; Sat, 18 Jul 2026 18:00:52 -0400 Received: from ip-10-5-0-115.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.0.115]) by internal-pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:00:46 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.53:12516] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.48.250:2525] with esmtp (Farcaster) id 6ac860b7-bfed-4bc8-848d-9aa050ba6359; Sat, 18 Jul 2026 22:00:46 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC001.ant.amazon.com (10.250.64.174) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:00:46 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:00:36 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412050; x=1815948050; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=qmO8d/rDXj0cALhLa0MQcV3mYO09GhDUo5aekxJsoCQ=; b=Hc2YYu34wLdUPKQmozlnvFOFa3I5YTfgP+yqAqCh+8h6g3G/GPRVzMFu 4bSNYvSmAZ75hK/G99MDcnrd08EB1IX0jEBd/ja24Z2sV0JfI+Luhz7+L Ta54VP7qSLKqLm7fFGAdkvunzE7o0SWUE9H+o6re/QFSwVZ0oDVllVALF W0Msdfe//EYn+CvuUAU55PfI0ey38kmAalwQxlCb0Ft2vCt2ZHW4D9bHr ELVH8AJvQi4Qi9uXEEI1mJcyvNI9zG2kHUDwt+hCYNQnINXFjqBSb1PPr VbUsGJ2L1p4GqobHqqbsWIY8615sDHufGS+/INWcZoyQx3jvYuHgfGwft w==; X-CSE-ConnectionGUID: D9Yy9egZSK+Cg3adSv38EA== X-CSE-MsgGUID: lCOYz2D4RcKdNnn8U3il5Q== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23940282" X-Farcaster-Flow-ID: 6ac860b7-bfed-4bc8-848d-9aa050ba6359 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 085/137] isa: Remove *_orphan() creator variants Date: Sat, 18 Jul 2026 21:36:00 +0000 Message-ID: <20260718213652.37673-86-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D036UWC003.ant.amazon.com (10.13.139.214) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.42.203.116; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412097840158500 All boards create their ISA devices with an explicit QOM parent now. Drop isa_new_orphan(), isa_try_new_orphan() and isa_create_simple_orphan(). Reviewed-by: Philippe Mathieu-Daud=C3=A9 AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/isa/isa-bus.c | 19 ------------------- include/hw/isa/isa.h | 3 --- 2 files changed, 22 deletions(-) diff --git a/hw/isa/isa-bus.c b/hw/isa/isa-bus.c index 7a6a595ce7..22452e5048 100644 --- a/hw/isa/isa-bus.c +++ b/hw/isa/isa-bus.c @@ -172,25 +172,6 @@ ISADevice *isa_create_simple(Object *parent, const cha= r *id, return dev; } =20 -ISADevice *isa_new_orphan(const char *name) -{ - return ISA_DEVICE(qdev_new_orphan(name)); -} - -ISADevice *isa_try_new_orphan(const char *name) -{ - return ISA_DEVICE(qdev_try_new_orphan(name)); -} - -ISADevice *isa_create_simple_orphan(ISABus *bus, const char *name) -{ - ISADevice *dev; - - dev =3D isa_new_orphan(name); - isa_realize_and_unref(dev, bus, &error_fatal); - return dev; -} - bool isa_realize_and_unref(ISADevice *dev, ISABus *bus, Error **errp) { return qdev_realize_and_unref(&dev->parent_obj, &bus->parent_obj, errp= ); diff --git a/include/hw/isa/isa.h b/include/hw/isa/isa.h index 79bfe16361..9bbaa3c258 100644 --- a/include/hw/isa/isa.h +++ b/include/hw/isa/isa.h @@ -86,10 +86,7 @@ ISADevice *isa_new(Object *parent, const char *id, const= char *type); ISADevice *isa_try_new(Object *parent, const char *id, const char *type); ISADevice *isa_create_simple(Object *parent, const char *id, ISABus *bus, const char *type); -ISADevice *isa_new_orphan(const char *name); -ISADevice *isa_try_new_orphan(const char *name); bool isa_realize_and_unref(ISADevice *dev, ISABus *bus, Error **errp); -ISADevice *isa_create_simple_orphan(ISABus *bus, const char *name); =20 ISADevice *isa_vga_init(Object *parent, ISABus *bus); =20 --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412088; cv=none; d=zohomail.com; s=zohoarc; b=cQj32R8BshIBfimmxIP3BS8jXlezdcvxNyehFW1IzGAnv6UbpIWy+N7YetDuhIjTX9Grztqq3Qha/vpeDGpKfpAfy7s9CyGtBX7eFQNCfO1ZLPdiDoEGkQYm+UjReqPP+Nv5zLDWGZlFBQ7kTRbqqhprhBqwVFZyZ4dVKN7DruQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412088; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=1pkQn3/9x2L+GgRgyaJRqVz1nB5NSwMUxiFMHCcRqjw=; b=aQgM/eN32TZkDtrtbKEUvys30xj61NL6IK+8hwVDdT/G1s1BYXSsBxL9Sw9xv8R15xCLguxbOxloamoIzf6YeFdaC+bhq35OiFG4hjDhOLv65VkLgwgBKtM3WbqiUMhXkur2VF39gXh8YOThhzPirOxVp6mlD54YBQXXzG86sc0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412088901606.1910839216413; Sat, 18 Jul 2026 15:01:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlD5u-0006oj-36; Sat, 18 Jul 2026 18:01:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD5h-0006PT-3t; Sat, 18 Jul 2026 18:01:05 -0400 Received: from pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.42.203.116]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD5f-00059H-9R; Sat, 18 Jul 2026 18:01:00 -0400 Received: from ip-10-5-6-203.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.6.203]) by internal-pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:00:56 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.48:9848] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.151:2525] with esmtp (Farcaster) id ec2b0a44-07e9-4f8c-b20b-7e10147a0876; Sat, 18 Jul 2026 22:00:56 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB002.ant.amazon.com (10.250.64.231) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:00:55 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:00:46 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412059; x=1815948059; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=1pkQn3/9x2L+GgRgyaJRqVz1nB5NSwMUxiFMHCcRqjw=; b=ehIQX96DZlXzAAT4gHS7ONRLHzkWrY0bkrx+591Wu42sJ0d+Fyt0iGe3 c9eaBWv56WceLcWPk7zJaGw1/CCnpZy4CGaGik7mOAAYo2J2QRGCxN8aj zgaeYnqf58xmx4eTcInJPtnqI9117EKykjpQWXiQUk0o/auUJzaO7vijb Z93yMuKO55dRxpK8jMcdXWUsZ099CfTlQsw/TVQv95ORrcBXDBvVJsF5c 9Ay/frEMEZ/uAlxbjP0Ohkv8bHghTFqJ4PBw7+ELtCzk6hCZ8N/f5t3kg P7fQ4DXnDKXXFTXy/SAx0foeodSg57lTiJr2oSfPxsyiBu1+cIhAzsODN w==; X-CSE-ConnectionGUID: SXK0AEsGQciEcg918FNbGA== X-CSE-MsgGUID: 6uxgIRAjQ4S7TPehJ52yCQ== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23940288" X-Farcaster-Flow-ID: ec2b0a44-07e9-4f8c-b20b-7e10147a0876 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 086/137] pci: Remove *_orphan() creator variants Date: Sat, 18 Jul 2026 21:36:01 +0000 Message-ID: <20260718213652.37673-87-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D036UWC003.ant.amazon.com (10.13.139.214) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.42.203.116; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412090098158500 All boards create their PCI devices with an explicit QOM parent now. Drop pci_new_orphan(), pci_new_multifunction_orphan(), pci_create_simple_orphan(), pci_create_simple_multifunction_orphan() and the internal pci_new_internal() they wrapped. Reviewed-by: Philippe Mathieu-Daud=C3=A9 AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/pci/pci.c | 35 ----------------------------------- include/hw/pci/pci.h | 5 ----- 2 files changed, 40 deletions(-) diff --git a/hw/pci/pci.c b/hw/pci/pci.c index ca5882ba59..5ef9dfa8b7 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -2388,16 +2388,6 @@ static void pci_qdev_realize(DeviceState *qdev, Erro= r **errp) pci_dev->msi_trigger =3D pci_msi_trigger; } =20 -static PCIDevice *pci_new_internal(int devfn, bool multifunction, - const char *name) -{ - DeviceState *dev; - - dev =3D qdev_new_orphan(name); - qdev_prop_set_int32(dev, "addr", devfn); - qdev_prop_set_bit(dev, "multifunction", multifunction); - return PCI_DEVICE(dev); -} =20 static PCIDevice *pci_new_child_internal(Object *parent, const char *id, int devfn, bool multifunction, @@ -2440,36 +2430,11 @@ PCIDevice *pci_create_simple(Object *parent, const = char *id, return dev; } =20 -PCIDevice *pci_new_multifunction_orphan(int devfn, const char *name) -{ - return pci_new_internal(devfn, true, name); -} - -PCIDevice *pci_new_orphan(int devfn, const char *name) -{ - return pci_new_internal(devfn, false, name); -} - bool pci_realize_and_unref(PCIDevice *dev, PCIBus *bus, Error **errp) { return qdev_realize_and_unref(&dev->qdev, &bus->qbus, errp); } =20 -PCIDevice *pci_create_simple_multifunction_orphan(PCIBus *bus, int devfn, - const char *name) -{ - PCIDevice *dev =3D pci_new_multifunction_orphan(devfn, name); - pci_realize_and_unref(dev, bus, &error_fatal); - return dev; -} - -PCIDevice *pci_create_simple_orphan(PCIBus *bus, int devfn, const char *na= me) -{ - PCIDevice *dev =3D pci_new_orphan(devfn, name); - pci_realize_and_unref(dev, bus, &error_fatal); - return dev; -} - static uint8_t pci_find_space(PCIDevice *pdev, uint8_t size) { int offset =3D PCI_CONFIG_HEADER_SIZE; diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h index 9c6bcc0b96..d6191fc529 100644 --- a/include/hw/pci/pci.h +++ b/include/hw/pci/pci.h @@ -1098,13 +1098,8 @@ PCIDevice *pci_create_simple_multifunction(Object *p= arent, const char *id, PCIDevice *pci_create_simple(Object *parent, const char *id, PCIBus *bus, int devfn, const char *type); =20 -PCIDevice *pci_new_multifunction_orphan(int devfn, const char *name); -PCIDevice *pci_new_orphan(int devfn, const char *name); bool pci_realize_and_unref(PCIDevice *dev, PCIBus *bus, Error **errp); =20 -PCIDevice *pci_create_simple_multifunction_orphan(PCIBus *bus, int devfn, - const char *name); -PCIDevice *pci_create_simple_orphan(PCIBus *bus, int devfn, const char *na= me); =20 void lsi53c8xx_handle_legacy_cmdline(DeviceState *lsi_dev); =20 --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412113; cv=none; d=zohomail.com; s=zohoarc; b=WuERlVudPAztLHLp7NlGvq/fS+/QvXyTnhl8cQD0MeqBHWwlDk5UTCNVV/fWy7mj9DlSb3IFdhCD4pj3sPlG2STmFztv4OzcyHS2ftpiwZgrcMtGExTyKjLOFvfd4V75TT81Wp84CZXezKLs8meHO8VsQxNUb/6VbZwfRON6JvQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412113; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=qNvBAQnsropPFuCvMHAkpcPv/ub05GpIkFSZ2G7cECE=; b=lYSAogXxN2Pq1jn39IzEeywFoLOmEhyAxUCK/2zoffg6fk1z8BeidmYhOVqcFcewbMyUzBfbivhlNjGe90EaZexxJHiAJKB1XJX76VnQDQNUhHEtIvkNypoDngaP/k1HKnJW/hSdzK9jJcJyDavTixRRpBCBdEEMkdFZY6sKpl8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412113981509.9051439037637; Sat, 18 Jul 2026 15:01:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlD6E-0008KW-IF; Sat, 18 Jul 2026 18:01:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD6C-0008D8-On; Sat, 18 Jul 2026 18:01:32 -0400 Received: from pdx-out-010.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.12.53.23]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD6A-0005Fx-Ty; Sat, 18 Jul 2026 18:01:32 -0400 Received: from ip-10-5-6-203.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.6.203]) by internal-pdx-out-010.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:01:27 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.234:15836] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.151:2525] with esmtp (Farcaster) id f004e84a-99c8-4385-9526-854b0bdd6e20; Sat, 18 Jul 2026 22:01:27 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA002.ant.amazon.com (10.250.64.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:01:26 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:01:17 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412090; x=1815948090; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=qNvBAQnsropPFuCvMHAkpcPv/ub05GpIkFSZ2G7cECE=; b=fsovACCvlIyvL5l/qV3FJAmQt0WaYLFkXfkAl1KV4eR613Jx5DvsHJSH t59NoOwETVdAngDU8+uKKmpk9iSoapEtrVqSkGLgi33bEhg+Ysqr2W+Hw xVCMp2+nPh7MigvbKzmfYmQZ/CThHC+wb3n8ApYXMA+o1VFunRDqz6WQm 36ADgaW3Hntb4KbId7eoESujLa/fmGINFZVoQ3AJ8tDuSp6TkqLhff348 OQN9pdzTCSmFHa/UbBZ42RtKm9SBDd9495ua5qmMT2Az1SnHZZ6V6yFCk Rm8/A5AqsrC7BiDLz8tMGJRNZ3CEVxkbVfupiTmfIY4FJLk05hmH//DKi A==; X-CSE-ConnectionGUID: IFy8SzVNTJ6KYUJKuSfx9w== X-CSE-MsgGUID: hWjvNeiBRWKuLpvT0bPDiw== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23795565" X-Farcaster-Flow-ID: f004e84a-99c8-4385-9526-854b0bdd6e20 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 087/137] cpu: Remove cpu_create_orphan() Date: Sat, 18 Jul 2026 21:36:02 +0000 Message-ID: <20260718213652.37673-88-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D037UWB004.ant.amazon.com (10.13.138.84) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.12.53.23; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-010.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.01, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412115941158500 Content-Type: text/plain; charset="utf-8" All targets create their CPUs with an explicit parent now. AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/core/cpu-common.c | 12 ------------ include/hw/core/cpu.h | 10 ---------- 2 files changed, 22 deletions(-) diff --git a/hw/core/cpu-common.c b/hw/core/cpu-common.c index eef243c1ad..829a044e9e 100644 --- a/hw/core/cpu-common.c +++ b/hw/core/cpu-common.c @@ -68,18 +68,6 @@ CPUState *cpu_create(Object *parent, const char *id, con= st char *typename) return cpu; } =20 -CPUState *cpu_create_orphan(const char *typename) -{ - Error *err =3D NULL; - CPUState *cpu =3D CPU(object_new(typename)); - if (!qdev_realize(DEVICE(cpu), NULL, &err)) { - error_report_err(err); - object_unref(OBJECT(cpu)); - exit(EXIT_FAILURE); - } - return cpu; -} - void cpu_reset_interrupt(CPUState *cpu, int mask) { qatomic_and(&cpu->interrupt_request, ~mask); diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h index 1b2ec1ab1e..544740a699 100644 --- a/include/hw/core/cpu.h +++ b/include/hw/core/cpu.h @@ -857,16 +857,6 @@ char *cpu_model_from_type(const char *typename); */ CPUState *cpu_create(Object *parent, const char *id, const char *typename); =20 -/** - * cpu_create_orphan: - * @typename: The CPU type. - * - * Instantiates a CPU and realizes the CPU. - * - * Returns: A #CPUState or %NULL if an error occurred. - */ -CPUState *cpu_create_orphan(const char *typename); - /** * parse_cpu_option: * @cpu_option: The -cpu option including optional parameters. --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412122; cv=none; d=zohomail.com; s=zohoarc; b=HaqCb+Ia6toUvtbzOZMGV6oJJ+ntqV/aldBkuWu73Bw6cv2tQvdeOad8krMqJuHeXvJuwbhkVZYIxhGUQnG/aJA3YEuvnq6RYCaJJlHUCLGkWlT2maMPS9+bKijyHafncLt1JI6Y3vwodBrCuQsrEeiy5moM6BmGdUYJmlIFE8Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412122; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=dcl/5z8pjfpIoarlJIEsAr0I+CKYUtttcVSgyF/k1wE=; b=Pzwc/bLuAd5CJ8v8jWwtJuDDmIrcDgoABWe+AdtC9izXO/fb4s69UIrLGkjLUcnCR2iZ8Ni5LHMsUpW6xb6SRp6qNtA4VQ/0k1+hf6HAlIjErf1vZU415OvtpKEiIS5Pb8C7wK5gFpGNcfsPUPXmeFh2K5GaKKqPKsnKd4Kzbbo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412122284640.0706147673735; Sat, 18 Jul 2026 15:02:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlD6O-0000eI-2W; Sat, 18 Jul 2026 18:01:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD6M-0000Yo-EK; Sat, 18 Jul 2026 18:01:42 -0400 Received: from pdx-out-004.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.246.77.92]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD6K-0005HA-H8; Sat, 18 Jul 2026 18:01:42 -0400 Received: from ip-10-5-9-48.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.9.48]) by internal-pdx-out-004.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:01:36 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.104:30969] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.40.177:2525] with esmtp (Farcaster) id 9e308200-d96d-4ec3-802a-8272e00dbf4a; Sat, 18 Jul 2026 22:01:36 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB001.ant.amazon.com (10.250.64.248) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:01:36 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:01:26 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412100; x=1815948100; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=dcl/5z8pjfpIoarlJIEsAr0I+CKYUtttcVSgyF/k1wE=; b=o5e/zmWa0B17FnDiseI+jPQi2+qDzOm8A7V+0YHyzHBlKarOtnnP8L5x l/73NVtiaxmFWsMMHSo6qs7IGtsUGU/3gWgBY59jEgTEGJNg5VknmMcq4 K1WbnGFU06xmT/y7fPf6dzJxFNxLQyll7Uz9a5vFbTJ8bhrmCA84QuerN tuQ0h5B2Y6zpEQu2OBEntByBl/0OyJ/DIemDcekdSj62gQEJJLqJE4R/H XtoPSjQRNaqr3A7/VkdLAOyB7n+2UPKTrGnxvoBdlqjpZj0dKypKl8sx4 mdabQiH+olNLMTp44xusub2Q70hGAIw5cn3faJ0Pb25t/rUOijAwXQ/Hy w==; X-CSE-ConnectionGUID: Ch2CSGaHSGa1a8G7BAu3AQ== X-CSE-MsgGUID: yFxN0b0gRzWE5J5FuxgqPA== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23917695" X-Farcaster-Flow-ID: 9e308200-d96d-4ec3-802a-8272e00dbf4a From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 088/137] sysbus: Remove *_orphan() creator variants Date: Sat, 18 Jul 2026 21:36:03 +0000 Message-ID: <20260718213652.37673-89-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D037UWB004.ant.amazon.com (10.13.138.84) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.246.77.92; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-004.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412123984158500 All boards create sysbus devices with an explicit parent now. Drop sysbus_create_simple_orphan() and sysbus_create_varargs_orphan(). Reviewed-by: Philippe Mathieu-Daud=C3=A9 AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/core/sysbus.c | 29 ----------------------------- include/hw/core/sysbus.h | 11 ----------- 2 files changed, 40 deletions(-) diff --git a/hw/core/sysbus.c b/hw/core/sysbus.c index 85f56b68fb..1c67ea3580 100644 --- a/hw/core/sysbus.c +++ b/hw/core/sysbus.c @@ -250,35 +250,6 @@ DeviceState *sysbus_create_varargs(Object *parent, con= st char *id, return dev; } =20 -DeviceState *sysbus_create_varargs_orphan(const char *name, - hwaddr addr, ...) -{ - DeviceState *dev; - SysBusDevice *s; - va_list va; - qemu_irq irq; - int n; - - dev =3D qdev_new_orphan(name); - s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); - if (addr !=3D (hwaddr)-1) { - sysbus_mmio_map(s, 0, addr); - } - va_start(va, addr); - n =3D 0; - while (1) { - irq =3D va_arg(va, qemu_irq); - if (!irq) { - break; - } - sysbus_connect_irq(s, n, irq); - n++; - } - va_end(va); - return dev; -} - bool sysbus_realize(SysBusDevice *dev, Error **errp) { return qdev_realize(DEVICE(dev), sysbus_get_default(), errp); diff --git a/include/hw/core/sysbus.h b/include/hw/core/sysbus.h index 1e07b1978d..ef3d39f576 100644 --- a/include/hw/core/sysbus.h +++ b/include/hw/core/sysbus.h @@ -119,15 +119,4 @@ static inline DeviceState *sysbus_create_simple(Object= *parent, return sysbus_create_varargs(parent, id, type, addr, irq, NULL); } =20 -/* Legacy helper function for creating unparented devices. */ -DeviceState *sysbus_create_varargs_orphan(const char *name, - hwaddr addr, ...); - -static inline DeviceState *sysbus_create_simple_orphan(const char *name, - hwaddr addr, - qemu_irq irq) -{ - return sysbus_create_varargs_orphan(name, addr, irq, NULL); -} - #endif /* HW_SYSBUS_H */ --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412123; cv=none; d=zohomail.com; s=zohoarc; b=CenOP9HW/EdQURYeUDcY8r70p6cSBJUscpT9lWqociApVHu4HN/IvkpUe716DWpoBEi9TJPXs8n+XEVALVF1CXcqmvLKscBBC0jOw2aZ0LrrC1kLEWtO5M4i5fQk9fsKyIs0SoUcCucWV1KEzOvn/t93iA2Q5Lpt1D+24KIucPs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412123; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=gFz4tkd1KJwCvb3Rl1/cy5JLi/p+MBu/0U/TuIwPjWU=; b=WL9ol7UjnJW/PbuNqxAXRTpiIwVx8vAsgE4TUwH6tiVGCBspjDd38JD9y57lB8vPw44adkv6xsmRx/w5sMiS1aHPk6BqTBpi/Qr+qWmIwvM0hEAFo9ZYt/9ia5GamXGy3vGyto/EvIwUUBIK3CyVALNs0aaZjYvqllGYxl+6OMs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412123308161.03988883670763; Sat, 18 Jul 2026 15:02:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlD6X-0000vD-JF; Sat, 18 Jul 2026 18:01:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD6V-0000ow-5i; Sat, 18 Jul 2026 18:01:51 -0400 Received: from pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.246.1.125]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD6T-0005I6-AJ; Sat, 18 Jul 2026 18:01:50 -0400 Received: from ip-10-5-12-219.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.12.219]) by internal-pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:01:45 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.51:9718] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.19.34:2525] with esmtp (Farcaster) id abec0ef8-c6ad-457f-a6bc-46fc6b9d85df; Sat, 18 Jul 2026 22:01:45 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC002.ant.amazon.com (10.250.64.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:01:45 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:01:36 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412109; x=1815948109; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=gFz4tkd1KJwCvb3Rl1/cy5JLi/p+MBu/0U/TuIwPjWU=; b=VCyxGr58HPbC1meUb8qTi/7RsgBEo7q2ReS8V185BwI5022HY91aQtUb 0KGZYHMN3GQ6o2OpmSctGegE2zH61CQKW34+knAvhMMRgkLyZ9ZQQN3zG xKiweb7K9kbe/t21OYrA75BF0Bw/qB0ukHvBet9KaSykZwt9fsDvwiVyo xgYEqUAVVOS5DeQJZ41NHWYHD/zmqsv4iD+oiPWHUEamzL3NkrL449OXR V0BChAmy/ujzr48M2iAH4h5t+TpOR2fTo3oEaRg4n5OzkDBxdH1coVyRi vdPK23GwvEhGC5znGUDxCEbT/eKNoDvnoBQ3ScE+cXQUyaBKrt/QKh4tI A==; X-CSE-ConnectionGUID: kJNB4abfQdeXrvuWzpFnLg== X-CSE-MsgGUID: teDMr8DeQ6Sn4eG5OZdexA== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23927606" X-Farcaster-Flow-ID: abec0ef8-c6ad-457f-a6bc-46fc6b9d85df From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 089/137] qdev: Remove qdev_new_orphan() and qdev_try_new_orphan() Date: Sat, 18 Jul 2026 21:36:04 +0000 Message-ID: <20260718213652.37673-90-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D037UWB004.ant.amazon.com (10.13.138.84) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.246.1.125; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412124013158500 Content-Type: text/plain; charset="utf-8" Every bus-layer *_orphan() wrapper is gone and the last direct caller, qdev_device_add_from_qdict(), now uses object_new() plus qdev_set_id() to place -device instances under /machine/peripheral{,-anon} as before. There is no remaining legitimate way to create a device without picking its parent, so drop the transitional *_orphan() spellings and update the doc comments that still referenced them. AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/core/qdev.c | 13 ------------- include/hw/core/qdev.h | 30 +++--------------------------- system/qdev-monitor.c | 2 +- 3 files changed, 4 insertions(+), 41 deletions(-) diff --git a/hw/core/qdev.c b/hw/core/qdev.c index 947ba7db80..89bc1e30c0 100644 --- a/hw/core/qdev.c +++ b/hw/core/qdev.c @@ -165,19 +165,6 @@ DeviceState *qdev_try_new(Object *parent, const char *= id, const char *type) return DEVICE(obj); } =20 -DeviceState *qdev_new_orphan(const char *name) -{ - return DEVICE(object_new(name)); -} - -DeviceState *qdev_try_new_orphan(const char *name) -{ - ObjectClass *oc =3D module_object_class_by_name(name); - if (!oc) { - return NULL; - } - return DEVICE(object_new_with_class(oc)); -} =20 static QTAILQ_HEAD(, DeviceListener) device_listeners =3D QTAILQ_HEAD_INITIALIZER(device_listeners); diff --git a/include/hw/core/qdev.h b/include/hw/core/qdev.h index e692a1d48e..9220e9e3b1 100644 --- a/include/hw/core/qdev.h +++ b/include/hw/core/qdev.h @@ -440,30 +440,6 @@ DeviceState *qdev_new(Object *parent, const char *id, = const char *type); */ DeviceState *qdev_try_new(Object *parent, const char *id, const char *type= ); =20 -/** - * qdev_new_orphan: Create a device on the heap - * @name: device type to create (we assert() that this type exists) - * - * This only allocates the memory and initializes the device state - * structure, ready for the caller to set properties if they wish. - * The device still needs to be realized. - * - * Return: a derived DeviceState object with a reference count of 1. - */ -DeviceState *qdev_new_orphan(const char *name); - -/** - * qdev_try_new_orphan: Try to create a device on the heap - * @name: device type to create - * - * This is like qdev_new_orphan(), except it returns %NULL when type @name - * does not exist, rather than asserting. - * - * Return: a derived DeviceState object with a reference count of 1 or - * NULL if type @name does not exist. - */ -DeviceState *qdev_try_new_orphan(const char *name); - /** * qdev_is_realized() - check if device is realized * @dev: The device to check. @@ -488,8 +464,8 @@ static inline bool qdev_is_realized(DeviceState *dev) * If @bus, plug @dev into @bus. This takes a reference to @dev. * If @dev has no QOM parent, make one up, taking another reference. * - * If you created @dev using qdev_new_orphan(), you probably want to use - * qdev_realize_and_unref() instead. + * If you created @dev via object_new() directly (holding a floating + * reference), you probably want to use qdev_realize_and_unref() instead. * * Return: true on success, else false setting @errp with error */ @@ -506,7 +482,7 @@ bool qdev_realize(DeviceState *dev, BusState *bus, Erro= r **errp); * (private) reference, which is dropped on return regardless of * success or failure. Intended use:: * - * dev =3D qdev_new_orphan(); + * dev =3D DEVICE(object_new(TYPE_FOO)); * [...] * qdev_realize_and_unref(dev, bus, errp); * diff --git a/system/qdev-monitor.c b/system/qdev-monitor.c index adc37d6a89..0e13b1540c 100644 --- a/system/qdev-monitor.c +++ b/system/qdev-monitor.c @@ -707,7 +707,7 @@ DeviceState *qdev_device_add_from_qdict(const QDict *op= ts, } =20 /* create device */ - dev =3D qdev_new_orphan(driver); + dev =3D DEVICE(object_new(driver)); =20 /* Check whether the hotplug is allowed by the machine */ if (phase_check(PHASE_MACHINE_READY) && --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412173; cv=none; d=zohomail.com; s=zohoarc; b=JWvnwr4X+Fv5ToP8wZyFNc4zTtuRHguwRRa2U0t7Nta0OpcO/EImxe5iCvKzxyROIMlYECllABKJgK8x5A8gy5jHE9UoJ9UZ3oWGKi1YzJA3+igOquiPOTHYf8+qdPtbQw76DMNrtgnGccIn5gQpZk7usUS5blhBxX1OAdMroYw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412173; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Dn3otMTNYt42pCrVX9LAFPRVYwV4S524ppbCyB1xSIw=; b=Se/DouUNJCK7c+cciZiOZOYhexa00ex+tYSPkNAGHIlURxIHSNL1+OtNyD+o1RjDwih4BCK7JmuZnK3dQXIXFVe7rwwj5yPDbiDUxXNt5fnv+xIcFSPxR7Aj9EfaM76NwpShmUuYZHzQP1Wqe6nFF26jnpzI3fEK1P5hyalFGSk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412173140944.5484230930822; Sat, 18 Jul 2026 15:02:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlD72-0002f6-M2; Sat, 18 Jul 2026 18:02:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD70-0002di-DX; Sat, 18 Jul 2026 18:02:22 -0400 Received: from pdx-out-004.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.246.77.92]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD6y-0005LK-Oa; Sat, 18 Jul 2026 18:02:22 -0400 Received: from ip-10-5-12-219.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.12.219]) by internal-pdx-out-004.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:02:17 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.182:19126] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.58.199:2525] with esmtp (Farcaster) id aab7997c-e6ee-4723-94f1-2c842ee15e89; Sat, 18 Jul 2026 22:02:16 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA001.ant.amazon.com (10.250.64.218) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:02:16 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:02:06 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412140; x=1815948140; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Dn3otMTNYt42pCrVX9LAFPRVYwV4S524ppbCyB1xSIw=; b=BqCi+UMl34lcO3DIOsLYYm0vovBnXR8vNHCSAm6P9rlSJUsipKh+l5xi +UeMq8s0wu1x94sLIw+JdBjrPwmpPeupBAm7xOHMD3MVzla2JuZ5bdvfn 6KdrV3YZb7HKk6nZ8RQBqa0aERnwPFH05eIdmkNCIVwKmfCZ7AqoUija5 J6YduYNNdJVX4gl4gs2TFxVJ4vb+m/0GgXIF6WPrOHDhgdVefZPjjwPRX hO9ySxgbt87MvPYZnHuWHOr9llqN+yepziilz54yOKDN0NH19LBtiOEEq DIZW8LnDnyAxt3WzBs033dFHynRqPPlsAA8NahfZdXRKtLet57uOEr3oh Q==; X-CSE-ConnectionGUID: CgFqv+b9SR61IJwDiwrTFA== X-CSE-MsgGUID: EOh2bZtGSMueFQ8gggRFqQ== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23917749" X-Farcaster-Flow-ID: aab7997c-e6ee-4723-94f1-2c842ee15e89 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 090/137] memory: Accept non-device owners in memory_region_init_ram() Date: Sat, 18 Jul 2026 21:36:05 +0000 Message-ID: <20260718213652.37673-91-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D044UWA002.ant.amazon.com (10.13.139.11) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.246.77.92; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-004.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412174348158500 Content-Type: text/plain; charset="utf-8" memory_region_register_ram() casts the owner to DeviceState with an asserting DEVICE() check. Historically this was fine because every caller either passed a device or NULL, but the following patches give board-created RAM regions their machine as owner, which is not a device. vmstate_register_ram() only uses the device to prefix the RAMBlock idstr with the device's canonical path. Use object_dynamic_cast() so non-device owners degrade to the same NULL-owner idstr they had before, and drop the stale TODO comment. No functional change for existing callers. AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- system/memory.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/system/memory.c b/system/memory.c index 5fc36708ec..838be57b4d 100644 --- a/system/memory.c +++ b/system/memory.c @@ -3631,15 +3631,16 @@ void mtree_info(bool flatview, bool dispatch_tree, = bool owner, bool disabled) =20 static void memory_region_register_ram(MemoryRegion *mr, Object *owner) { - DeviceState *owner_dev; - - /* This will assert if owner is neither NULL nor a DeviceState. - * We only want the owner here for the purposes of defining a - * unique name for migration. TODO: Ideally we should implement - * a naming scheme for Objects which are not DeviceStates, in - * which case we can relax this restriction. + /* + * vmstate_register_ram() prefixes the RAMBlock idstr with the + * bus-class dev-path of @owner (via qdev_get_dev_path()), not + * the QOM canonical path, when it is a DeviceState. Board- + * created RAM regions are owned by the machine, which is not a + * device; pass NULL there so the idstr is the bare region name, + * matching historical behaviour for owner=3D=3DNULL callers. */ - owner_dev =3D DEVICE(owner); + DeviceState *owner_dev =3D + (DeviceState *)object_dynamic_cast(owner, TYPE_DEVICE); vmstate_register_ram(mr, owner_dev); } =20 --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412165; cv=none; d=zohomail.com; s=zohoarc; b=E2yUX4XM+fPVHsaSw481tYS/CQNNw75HZd/pGW4rOuYJGhiLkJg07DyewpiKVLLM0t8cQRAKy2ZfcWh/xWpQinyfIG7flRW1AEdVJTOMrDNAqnSBXpf4MHe0mfZo6k5K1bX503txY4O4sHEeVLFDyxVlUzSoLIFqAZovKphg050= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412165; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=0u9gmpcOrnZEhlEebyDthVhM8N8q3vJLhUgo8TVhGvY=; b=fy3XQkOCispxIYd2VHxPP+gJCpQiNL9Nf9OYfKFi+Q7gBpTK0l1SjcWBNBCLEu3PU/uQwa1EPPFYWLt6AJhNWN8iaGNKt3eN8SV+rjp8Z99JpspTKkWsgD+tCosufYW5vj7EHT2Ih9o0nHZBV/LMCGJhpNgkelAzfuKDOGDzfFM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412165210432.2497170669599; Sat, 18 Jul 2026 15:02:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlD7G-0002nb-WD; Sat, 18 Jul 2026 18:02:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD7D-0002kj-Ep; Sat, 18 Jul 2026 18:02:35 -0400 Received: from pdx-out-012.esa.us-west-2.outbound.mail-perimeter.amazon.com ([35.162.73.231]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD78-0005Lv-KX; Sat, 18 Jul 2026 18:02:34 -0400 Received: from ip-10-5-12-219.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.12.219]) by internal-pdx-out-012.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:02:27 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.53:3123] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.40.177:2525] with esmtp (Farcaster) id d81a8b4c-c010-49aa-ab9a-87b59a5d15d0; Sat, 18 Jul 2026 22:02:26 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC001.ant.amazon.com (10.250.64.174) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:02:26 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:02:16 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412150; x=1815948150; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=0u9gmpcOrnZEhlEebyDthVhM8N8q3vJLhUgo8TVhGvY=; b=ATIO25A5Ueeat/leXjvhSU2ce+4A0FQcPuB6ptyJEZVkjEUgj/f2lWxQ 4LnknFLiZRz2MPyN4mk7kyZarPSU+Xxfoceq4kycTv9oSaF1jR2OCqj8f 7klMH0FvZin67UO6hAJnPDtV1ZefLu6lfOKGfrm4fvs68kke9zsxypcm8 WNOmeR2q11FGJ1lKiA8IC88dHyzuBcmdFaNnjgq4AyQLUXcW4U7TwWJNV sqCEIvb9XfNZ+ebP74FJ8Y/u0RhGUdIovaMIIlh7mkqPvD5YA5M2NrcPH J6jTNrz/C3PNFn1HVZWP5nVFjaZ7M6dMvomN3Y7tSzus44ivDDnpbt5l6 A==; X-CSE-ConnectionGUID: lgwv+xyrT5yL06fW6hKtZA== X-CSE-MsgGUID: nZM7qut7RsC7HEeOIH4SPw== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23716379" X-Farcaster-Flow-ID: d81a8b4c-c010-49aa-ab9a-87b59a5d15d0 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 091/137] hw/misc-boards: Give memory regions an explicit owner Date: Sat, 18 Jul 2026 21:36:06 +0000 Message-ID: <20260718213652.37673-92-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D044UWA002.ant.amazon.com (10.13.139.11) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=35.162.73.231; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-012.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412166477158500 Content-Type: text/plain; charset="utf-8" memory_region_init*() takes an @owner argument that becomes the QOM parent of the MemoryRegion object. When NULL is passed the region is silently reparented under /machine/unattached, hiding its lifetime owner. Convert trivial owner=3D=3DNULL sites in board init functions and device realize functions across small subdirectories. The owner is the enclosing machine or device in every case: hw/hexagon OBJECT(machine|ms|vms) virt, hexagon_dsp hw/hppa parent, OBJECT(machine) hw/ipmi OBJECT(ii) IPMIInterface implementations hw/loongarch OBJECT(machine) hw/microblaze OBJECT(machine) hw/or1k OBJECT(machine) hw/pci-host OBJECT(dev) bonito realize hw/rtc OBJECT(dev) ls7a realize hw/sparc OBJECT(machine) hw/sparc64 OBJECT(machine) hw/vmapple OBJECT(vms) hw/xen OBJECT(s) xen-pvh-common ram init No functional change: memory_region_do_init() would have parented these under /machine/unattached; they now sit under their creator. RAMBlock idstrs are unchanged: the owners added here are Machine or SysBus devices, and memory_region_register_ram() maps both to dev=3DNULL for qemu_ram_set_idstr(). AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/hexagon/hexagon_dsp.c | 4 ++-- hw/hexagon/virt.c | 8 ++++---- hw/hppa/machine.c | 6 +++--- hw/ipmi/ipmi_bt.c | 2 +- hw/ipmi/ipmi_kcs.c | 2 +- hw/loongarch/virt.c | 4 ++-- hw/microblaze/petalogix_ml605_mmu.c | 4 ++-- hw/microblaze/petalogix_s3adsp1800_mmu.c | 4 ++-- hw/microblaze/xlnx-zynqmp-pmu.c | 4 ++-- hw/or1k/or1k-sim.c | 2 +- hw/or1k/virt.c | 2 +- hw/pci-host/bonito.c | 4 ++-- hw/rtc/ls7a_rtc.c | 2 +- hw/sparc/leon3.c | 2 +- hw/sparc64/niagara.c | 13 +++++++------ hw/vmapple/vmapple.c | 2 +- hw/xen/xen-pvh-common.c | 12 ++++++------ 17 files changed, 39 insertions(+), 38 deletions(-) diff --git a/hw/hexagon/hexagon_dsp.c b/hw/hexagon/hexagon_dsp.c index ccd9a06f51..53dfe6741e 100644 --- a/hw/hexagon/hexagon_dsp.c +++ b/hw/hexagon/hexagon_dsp.c @@ -122,12 +122,12 @@ static void hexagon_common_init(MachineState *machine= , Rev_t rev, =20 address_space =3D get_system_memory(); =20 - memory_region_init_rom(&hms->cfgtable_rom, NULL, "config_table.rom", + memory_region_init_rom(&hms->cfgtable_rom, OBJECT(machine), "config_ta= ble.rom", sizeof(m_cfg->cfgtable), &error_fatal); memory_region_add_subregion(address_space, m_cfg->cfgbase, &hms->cfgtable_rom); =20 - memory_region_init_ram(&hms->ram, NULL, "ddr.ram", + memory_region_init_ram(&hms->ram, OBJECT(machine), "ddr.ram", machine->ram_size, &error_fatal); memory_region_add_subregion(address_space, 0x0, &hms->ram); =20 diff --git a/hw/hexagon/virt.c b/hw/hexagon/virt.c index 0619f06c41..fb23cda19f 100644 --- a/hw/hexagon/virt.c +++ b/hw/hexagon/virt.c @@ -74,7 +74,7 @@ static void fdt_add_hvx(HexagonVirtMachineState *vms, const MachineState *ms =3D MACHINE(vms); uint32_t vtcm_size_bytes =3D m_cfg->cfgtable.vtcm_size_kb * 1024; if (vtcm_size_bytes > 0) { - memory_region_init_ram(&vms->vtcm, NULL, "vtcm.ram", vtcm_size_byt= es, + memory_region_init_ram(&vms->vtcm, OBJECT(vms), "vtcm.ram", vtcm_s= ize_bytes, &error_fatal); memory_region_add_subregion(vms->sys, m_cfg->cfgtable.vtcm_base <<= 16, &vms->vtcm); @@ -250,18 +250,18 @@ static void virt_init(MachineState *ms) vms->apb_clk =3D clock_new(OBJECT(ms), "apb-pclk"); clock_set_hz(vms->apb_clk, 24000000); =20 - memory_region_init_ram(&vms->parent_obj.ram, NULL, "ddr.ram", + memory_region_init_ram(&vms->parent_obj.ram, OBJECT(ms), "ddr.ram", ms->ram_size, &error_fatal); memory_region_add_subregion(vms->sys, 0x0, &vms->parent_obj.ram); =20 if (m_cfg->l2tcm_size) { - memory_region_init_ram(&vms->tcm, NULL, "tcm.ram", m_cfg->l2tcm_si= ze, + memory_region_init_ram(&vms->tcm, OBJECT(ms), "tcm.ram", m_cfg->l2= tcm_size, &error_fatal); memory_region_add_subregion(vms->sys, m_cfg->cfgtable.l2tcm_base <= < 16, &vms->tcm); } =20 - memory_region_init_rom(&vms->parent_obj.cfgtable_rom, NULL, + memory_region_init_rom(&vms->parent_obj.cfgtable_rom, OBJECT(ms), "config_table.rom", sizeof(m_cfg->cfgtable), &error_fatal); memory_region_add_subregion(vms->sys, m_cfg->cfgbase, diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c index 4fcb3e5e37..233cf6318b 100644 --- a/hw/hppa/machine.c +++ b/hw/hppa/machine.c @@ -104,7 +104,7 @@ static ISABus *hppa_isa_bus(Object *parent, hwaddr addr) MemoryRegion *isa_region; =20 isa_region =3D g_new(MemoryRegion, 1); - memory_region_init_io(isa_region, NULL, &hppa_pci_ignore_ops, + memory_region_init_io(isa_region, parent, &hppa_pci_ignore_ops, NULL, "isa-io", 0x800); memory_region_add_subregion(get_system_memory(), addr, isa_region); =20 @@ -337,7 +337,7 @@ static TranslateFn *machine_HP_common_init_cpus(Machine= State *machine) */ cflush_name =3D g_strdup_printf("cpu%u-T600-cacheflush", i); cflush =3D g_new(MemoryRegion, 1); - memory_region_init_io(cflush, NULL, &hppa_pci_ignore_ops, + memory_region_init_io(cflush, OBJECT(machine), &hppa_pci_ignore_op= s, NULL, cflush_name, 4); memory_region_add_subregion(addr_space, translate(NULL, CPU_HPA + i * 0x1000 + 0x500= ), @@ -498,7 +498,7 @@ static void machine_HP_common_init_tail(MachineState *m= achine, PCIBus *pci_bus, } =20 rom_region =3D g_new(MemoryRegion, 1); - memory_region_init_ram(rom_region, NULL, "firmware", + memory_region_init_ram(rom_region, OBJECT(machine), "firmware", (FIRMWARE_END - FIRMWARE_START), &error_fatal); memory_region_add_subregion(addr_space, translate(NULL, FIRMWARE_START), rom_regio= n); diff --git a/hw/ipmi/ipmi_bt.c b/hw/ipmi/ipmi_bt.c index e01d02fe52..173e2e52c6 100644 --- a/hw/ipmi/ipmi_bt.c +++ b/hw/ipmi/ipmi_bt.c @@ -361,7 +361,7 @@ static void ipmi_bt_init(IPMIInterface *ii, unsigned in= t min_size, Error **errp) ib->size_mask =3D min_size - 1; ib->io_length =3D 3; =20 - memory_region_init_io(&ib->io, NULL, &ipmi_bt_io_ops, ii, "ipmi-bt", + memory_region_init_io(&ib->io, OBJECT(ii), &ipmi_bt_io_ops, ii, "ipmi-= bt", min_size); } =20 diff --git a/hw/ipmi/ipmi_kcs.c b/hw/ipmi/ipmi_kcs.c index d5cfe6c068..9bd678e725 100644 --- a/hw/ipmi/ipmi_kcs.c +++ b/hw/ipmi/ipmi_kcs.c @@ -339,7 +339,7 @@ static void ipmi_kcs_init(IPMIInterface *ii, unsigned i= nt min_size, } ik->size_mask =3D min_size - 1; ik->io_length =3D 2; - memory_region_init_io(&ik->io, NULL, &ipmi_kcs_io_ops, ii, "ipmi-kcs", + memory_region_init_io(&ik->io, OBJECT(ii), &ipmi_kcs_io_ops, ii, "ipmi= -kcs", min_size); } =20 diff --git a/hw/loongarch/virt.c b/hw/loongarch/virt.c index 24d8dc6e57..09c39140bd 100644 --- a/hw/loongarch/virt.c +++ b/hw/loongarch/virt.c @@ -966,13 +966,13 @@ static void virt_init(MachineState *machine) size =3D VIRT_LOWMEM_SIZE; } =20 - memory_region_init_alias(&lvms->lowmem, NULL, "loongarch.lowram", + memory_region_init_alias(&lvms->lowmem, OBJECT(machine), "loongarch.lo= wram", machine->ram, base, size); memory_region_add_subregion(address_space_mem, base, &lvms->lowmem); base +=3D size; if (ram_size - size) { base =3D VIRT_HIGHMEM_BASE; - memory_region_init_alias(&lvms->highmem, NULL, "loongarch.highram", + memory_region_init_alias(&lvms->highmem, OBJECT(machine), "loongar= ch.highram", machine->ram, VIRT_LOWMEM_BASE + size, ram_size - size); memory_region_add_subregion(address_space_mem, base, &lvms->highme= m); base +=3D ram_size - size; diff --git a/hw/microblaze/petalogix_ml605_mmu.c b/hw/microblaze/petalogix_= ml605_mmu.c index 1dc34dc247..26470b0251 100644 --- a/hw/microblaze/petalogix_ml605_mmu.c +++ b/hw/microblaze/petalogix_ml605_mmu.c @@ -94,11 +94,11 @@ petalogix_ml605_init(MachineState *machine) qdev_realize(DEVICE(cpu), NULL, &error_abort); =20 /* Attach emulated BRAM through the LMB. */ - memory_region_init_ram(phys_lmb_bram, NULL, "petalogix_ml605.lmb_bram", + memory_region_init_ram(phys_lmb_bram, OBJECT(machine), "petalogix_ml60= 5.lmb_bram", LMB_BRAM_SIZE, &error_fatal); memory_region_add_subregion(address_space_mem, 0x00000000, phys_lmb_br= am); =20 - memory_region_init_ram(phys_ram, NULL, "petalogix_ml605.ram", ram_size, + memory_region_init_ram(phys_ram, OBJECT(machine), "petalogix_ml605.ram= ", ram_size, &error_fatal); memory_region_add_subregion(address_space_mem, MEMORY_BASEADDR, phys_r= am); =20 diff --git a/hw/microblaze/petalogix_s3adsp1800_mmu.c b/hw/microblaze/petal= ogix_s3adsp1800_mmu.c index 6986eb7732..83bf325b2b 100644 --- a/hw/microblaze/petalogix_s3adsp1800_mmu.c +++ b/hw/microblaze/petalogix_s3adsp1800_mmu.c @@ -92,12 +92,12 @@ petalogix_s3adsp1800_init(MachineState *machine) qdev_realize(DEVICE(cpu), NULL, &error_abort); =20 /* Attach emulated BRAM through the LMB. */ - memory_region_init_ram(phys_lmb_bram, NULL, + memory_region_init_ram(phys_lmb_bram, OBJECT(machine), "petalogix_s3adsp1800.lmb_bram", LMB_BRAM_SIZE, &error_fatal); memory_region_add_subregion(sysmem, 0x00000000, phys_lmb_bram); =20 - memory_region_init_ram(phys_ram, NULL, "petalogix_s3adsp1800.ram", + memory_region_init_ram(phys_ram, OBJECT(machine), "petalogix_s3adsp180= 0.ram", ram_size, &error_fatal); memory_region_add_subregion(sysmem, ddr_base, phys_ram); =20 diff --git a/hw/microblaze/xlnx-zynqmp-pmu.c b/hw/microblaze/xlnx-zynqmp-pm= u.c index 00154236bf..cf9314f86c 100644 --- a/hw/microblaze/xlnx-zynqmp-pmu.c +++ b/hw/microblaze/xlnx-zynqmp-pmu.c @@ -155,13 +155,13 @@ static void xlnx_zynqmp_pmu_init(MachineState *machin= e) MemoryRegion *pmu_ram =3D g_new(MemoryRegion, 1); =20 /* Create the ROM */ - memory_region_init_rom(pmu_rom, NULL, "xlnx-zynqmp-pmu.rom", + memory_region_init_rom(pmu_rom, OBJECT(machine), "xlnx-zynqmp-pmu.rom", XLNX_ZYNQMP_PMU_ROM_SIZE, &error_fatal); memory_region_add_subregion(address_space_mem, XLNX_ZYNQMP_PMU_ROM_ADD= R, pmu_rom); =20 /* Create the RAM */ - memory_region_init_ram(pmu_ram, NULL, "xlnx-zynqmp-pmu.ram", + memory_region_init_ram(pmu_ram, OBJECT(machine), "xlnx-zynqmp-pmu.ram", machine->ram_size, &error_fatal); memory_region_add_subregion(address_space_mem, XLNX_ZYNQMP_PMU_RAM_ADD= R, pmu_ram); diff --git a/hw/or1k/or1k-sim.c b/hw/or1k/or1k-sim.c index 293970f156..ca2852fa87 100644 --- a/hw/or1k/or1k-sim.c +++ b/hw/or1k/or1k-sim.c @@ -312,7 +312,7 @@ static void openrisc_sim_init(MachineState *machine) } =20 ram =3D g_malloc(sizeof(*ram)); - memory_region_init_ram(ram, NULL, "openrisc.ram", ram_size, &error_fat= al); + memory_region_init_ram(ram, OBJECT(machine), "openrisc.ram", ram_size,= &error_fatal); memory_region_add_subregion(get_system_memory(), 0, ram); =20 openrisc_create_fdt(state, or1ksim_memmap, smp_cpus, machine->ram_size, diff --git a/hw/or1k/virt.c b/hw/or1k/virt.c index c0e0e3c48b..8cd520b320 100644 --- a/hw/or1k/virt.c +++ b/hw/or1k/virt.c @@ -498,7 +498,7 @@ static void openrisc_virt_init(MachineState *machine) } =20 ram =3D g_malloc(sizeof(*ram)); - memory_region_init_ram(ram, NULL, "openrisc.ram", ram_size, &error_fat= al); + memory_region_init_ram(ram, OBJECT(machine), "openrisc.ram", ram_size,= &error_fatal); memory_region_add_subregion(get_system_memory(), 0, ram); =20 openrisc_create_fdt(state, virt_memmap, smp_cpus, machine->ram_size, diff --git a/hw/pci-host/bonito.c b/hw/pci-host/bonito.c index 7b4259c0e7..48135a7fc0 100644 --- a/hw/pci-host/bonito.c +++ b/hw/pci-host/bonito.c @@ -639,7 +639,7 @@ static void bonito_host_realize(DeviceState *dev, Error= **errp) for (size_t i =3D 0; i < 3; i++) { char *name =3D g_strdup_printf("pci.lomem%zu", i); =20 - memory_region_init_alias(&pcimem_lo_alias[i], NULL, name, + memory_region_init_alias(&pcimem_lo_alias[i], OBJECT(dev), name, &bs->pci_mem, i * 64 * MiB, 64 * MiB); memory_region_add_subregion(get_system_memory(), BONITO_PCILO_BASE + i * 64 * MiB, @@ -713,7 +713,7 @@ static void bonito_pci_realize(PCIDevice *dev, Error **= errp) create_unimplemented_device(OBJECT(dev), "IOCS[3]", BONITO_DEV_BASE + = 3 * 256 * KiB, 256 * KiB); =20 - memory_region_init_alias(pcimem_alias, NULL, "pci.mem.alias", + memory_region_init_alias(pcimem_alias, OBJECT(dev), "pci.mem.alias", &bs->pci_mem, 0, BONITO_PCIHI_SIZE); memory_region_add_subregion(host_mem, BONITO_PCIHI_BASE, pcimem_alias); create_unimplemented_device(OBJECT(dev), "PCI_2", diff --git a/hw/rtc/ls7a_rtc.c b/hw/rtc/ls7a_rtc.c index 158c815505..77206b6636 100644 --- a/hw/rtc/ls7a_rtc.c +++ b/hw/rtc/ls7a_rtc.c @@ -388,7 +388,7 @@ static void ls7a_rtc_realize(DeviceState *dev, Error **= errp) int i; SysBusDevice *sbd =3D SYS_BUS_DEVICE(dev); LS7ARtcState *d =3D LS7A_RTC(sbd); - memory_region_init_io(&d->iomem, NULL, &ls7a_rtc_ops, + memory_region_init_io(&d->iomem, OBJECT(dev), &ls7a_rtc_ops, (void *)d, "ls7a_rtc", 0x100); =20 sysbus_init_irq(sbd, &d->irq); diff --git a/hw/sparc/leon3.c b/hw/sparc/leon3.c index a96ccca8e3..f9ef2758e1 100644 --- a/hw/sparc/leon3.c +++ b/hw/sparc/leon3.c @@ -345,7 +345,7 @@ static void leon3_generic_hw_init(MachineState *machine) =20 /* Allocate BIOS */ prom_size =3D 8 * MiB; - memory_region_init_rom(prom, NULL, "Leon3.bios", prom_size, &error_fat= al); + memory_region_init_rom(prom, OBJECT(machine), "Leon3.bios", prom_size,= &error_fatal); memory_region_add_subregion(address_space_mem, LEON3_PROM_OFFSET, prom= ); =20 /* Load boot prom */ diff --git a/hw/sparc64/niagara.c b/hw/sparc64/niagara.c index 8fb9937127..58384e80da 100644 --- a/hw/sparc64/niagara.c +++ b/hw/sparc64/niagara.c @@ -106,23 +106,23 @@ static void niagara_init(MachineState *machine) /* init CPUs */ sparc64_cpu_devinit(machine->cpu_type, NIAGARA_PROM_BASE); /* set up devices */ - memory_region_init_ram(&s->hv_ram, NULL, "sun4v-hv.ram", + memory_region_init_ram(&s->hv_ram, OBJECT(machine), "sun4v-hv.ram", NIAGARA_HV_RAM_SIZE, &error_fatal); memory_region_add_subregion(sysmem, NIAGARA_HV_RAM_BASE, &s->hv_ram); =20 memory_region_add_subregion(sysmem, NIAGARA_PARTITION_RAM_BASE, machine->ram); =20 - memory_region_init_ram(&s->nvram, NULL, "sun4v.nvram", NIAGARA_NVRAM_S= IZE, + memory_region_init_ram(&s->nvram, OBJECT(machine), "sun4v.nvram", NIAG= ARA_NVRAM_SIZE, &error_fatal); memory_region_add_subregion(sysmem, NIAGARA_NVRAM_BASE, &s->nvram); - memory_region_init_ram(&s->md_rom, NULL, "sun4v-md.rom", + memory_region_init_ram(&s->md_rom, OBJECT(machine), "sun4v-md.rom", NIAGARA_MD_ROM_SIZE, &error_fatal); memory_region_add_subregion(sysmem, NIAGARA_MD_ROM_BASE, &s->md_rom); - memory_region_init_ram(&s->hv_rom, NULL, "sun4v-hv.rom", + memory_region_init_ram(&s->hv_rom, OBJECT(machine), "sun4v-hv.rom", NIAGARA_HV_ROM_SIZE, &error_fatal); memory_region_add_subregion(sysmem, NIAGARA_HV_ROM_BASE, &s->hv_rom); - memory_region_init_ram(&s->prom, NULL, "sun4v.prom", PROM_SIZE_MAX, + memory_region_init_ram(&s->prom, OBJECT(machine), "sun4v.prom", PROM_S= IZE_MAX, &error_fatal); memory_region_add_subregion(sysmem, NIAGARA_PROM_BASE, &s->prom); =20 @@ -140,7 +140,8 @@ static void niagara_init(MachineState *machine) BlockBackend *blk =3D blk_by_legacy_dinfo(dinfo); int size =3D blk_getlength(blk); if (size > 0) { - memory_region_init_ram(&s->vdisk_ram, NULL, "sun4v_vdisk.ram",= size, + memory_region_init_ram(&s->vdisk_ram, OBJECT(machine), "sun4v_= vdisk.ram", + size, &error_fatal); memory_region_add_subregion(get_system_memory(), NIAGARA_VDISK_BASE, &s->vdisk_ram); diff --git a/hw/vmapple/vmapple.c b/hw/vmapple/vmapple.c index 67e499b74a..cea7e3d2f4 100644 --- a/hw/vmapple/vmapple.c +++ b/hw/vmapple/vmapple.c @@ -357,7 +357,7 @@ static void vmapple_firmware_init(VMAppleMachineState *= vms, exit(1); } =20 - memory_region_init_ram(&vms->fw_mr, NULL, "firmware", size, &error_fat= al); + memory_region_init_ram(&vms->fw_mr, OBJECT(vms), "firmware", size, &er= ror_fatal); image_size =3D load_image_mr(fname, &vms->fw_mr); =20 g_free(fname); diff --git a/hw/xen/xen-pvh-common.c b/hw/xen/xen-pvh-common.c index dae523f723..1047aabd57 100644 --- a/hw/xen/xen-pvh-common.c +++ b/hw/xen/xen-pvh-common.c @@ -109,12 +109,12 @@ static void xen_pvh_init_ram(XenPVHMachineState *s, } =20 if (s->cfg.mapcache) { - memory_region_init_ram(&xen_memory, NULL, "xen.ram", + memory_region_init_ram(&xen_memory, OBJECT(s), "xen.ram", block_len, &error_fatal); - memory_region_init_alias(&s->ram.low, NULL, "xen.ram.lo", &xen_mem= ory, + memory_region_init_alias(&s->ram.low, OBJECT(s), "xen.ram.lo", &xe= n_memory, s->cfg.ram_low.base, ram_size[0]); if (ram_size[1] > 0) { - memory_region_init_alias(&s->ram.high, NULL, "xen.ram.hi", + memory_region_init_alias(&s->ram.high, OBJECT(s), "xen.ram.hi", &xen_memory, s->cfg.ram_high.base, ram_size[1]); } @@ -122,11 +122,11 @@ static void xen_pvh_init_ram(XenPVHMachineState *s, void *p; =20 p =3D xen_map_guest_ram(s, s->cfg.ram_low.base, ram_size[0]); - memory_region_init_ram_ptr(&s->ram.low, NULL, "xen.ram.lo", + memory_region_init_ram_ptr(&s->ram.low, OBJECT(s), "xen.ram.lo", ram_size[0], p); if (ram_size[1] > 0) { p =3D xen_map_guest_ram(s, s->cfg.ram_high.base, ram_size[1]); - memory_region_init_ram_ptr(&s->ram.high, NULL, "xen.ram.hi", + memory_region_init_ram_ptr(&s->ram.high, OBJECT(s), "xen.ram.h= i", ram_size[1], p); } } @@ -140,7 +140,7 @@ static void xen_pvh_init_ram(XenPVHMachineState *s, /* Grants are only supported when the mapcache is on. */ if (s->cfg.mapcache) { /* Setup support for grants. */ - memory_region_init_ram(&xen_grants, NULL, "xen.grants", block_len, + memory_region_init_ram(&xen_grants, OBJECT(s), "xen.grants", block= _len, &error_fatal); memory_region_add_subregion(sysmem, XEN_GRANT_ADDR_OFF, &xen_grant= s); } --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412197; cv=none; d=zohomail.com; s=zohoarc; b=DGz/Xpt3BJOWuHNC0TNMJFFGc7H7bfiyhfu3bCKMwe8QfUdYrsUQN12/HHEMFiPBLhsOhmobfO7mkOyXv/Uo/ozokeT1RETGVF5qgbcPeVtTf5a+kAHSPhstCY7KQwgqkfroEpwzo5mtzGXIOTy+ztkOGZnU2KF5pBpd2XXvZTg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412197; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=B2gGflUWO1Ah2HAgPInGCPAFcie2TEomgTxhhFhtP9k=; b=T3/Rgznw+CZwO7lsVJgeR2njwiCJLjiFoWqtkSAcKkqnpD7XIlfWaEhreK1NQcPdcwK4c76Pd+JctAaCHwclRLlwfi9V+bt2s5ZV5eohlk1Ho26M31T2ZMAPlfPr1U3HY5sA2/jJRDwqeEO+YEcv03SXhjYodRNobhtvK/r3jms= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412197581599.0592160063258; Sat, 18 Jul 2026 15:03:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlD7P-00033x-8M; Sat, 18 Jul 2026 18:02:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD7M-0002yq-0D; Sat, 18 Jul 2026 18:02:44 -0400 Received: from pdx-out-014.esa.us-west-2.outbound.mail-perimeter.amazon.com ([35.83.148.184]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD7I-0005MV-34; Sat, 18 Jul 2026 18:02:43 -0400 Received: from ip-10-5-6-203.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.6.203]) by internal-pdx-out-014.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:02:36 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.48:26827] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.29.147:2525] with esmtp (Farcaster) id 309c0369-e362-4650-83f6-e58e79358287; Sat, 18 Jul 2026 22:02:36 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB002.ant.amazon.com (10.250.64.231) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:02:36 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:02:26 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412160; x=1815948160; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=B2gGflUWO1Ah2HAgPInGCPAFcie2TEomgTxhhFhtP9k=; b=ODiMZi6aVdvrCeFFN3DQbfx89H8qKDaR4FHb2HAYyTbhNBEKcwmverRz mDmq76K6PJ1txcFfp97Sec8pMJQ0JhX1eV3qv73MkAo00frgVRQmDk0pD Z2hFKOCQKdTxc8zsydkhEYM/zcHPQW18/1oj4l+j+K/BlI2MczgZw/MSH sd56GuT83PZ9lCt/NSXlW9oP3AJh2d2vdH2Vg36bPoE0uQhPcTvs2Ka4M CzTZnxT8Yr6vOB9CgN8dIRBCxxK/GOM2L2UwhCR9qHsnUAsHep2s8uICR rBGVS6MIDXkM16RkTcP1+KgR2YTdum0kmtffiF+jz6UCqoFn5WkcEC7Uk w==; X-CSE-ConnectionGUID: ej9iJXs2SvSVfAaIgQIMsw== X-CSE-MsgGUID: /Kf0tTJ2RQmUpxalIppgGA== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23712933" X-Farcaster-Flow-ID: 309c0369-e362-4650-83f6-e58e79358287 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 092/137] hw/mips: Give memory regions an explicit owner Date: Sat, 18 Jul 2026 21:36:07 +0000 Message-ID: <20260718213652.37673-93-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D044UWA002.ant.amazon.com (10.13.139.11) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=35.83.148.184; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-014.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412198604158500 Content-Type: text/plain; charset="utf-8" Convert memory_region_init*() calls that pass NULL owner to pass the enclosing machine instead. All sites are inside board init functions (MachineState *machine) or a helper that already carries an Object *parent from the earlier hw/mips device-parenting patch (malta_fp= ga_init). No functional change intended. RAMBlock idstrs are unchanged: the owners added here are Machine or SysBus devices, and memory_region_register_ram() maps both to dev=3DNULL for qemu_ram_set_idstr(). AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/mips/boston.c | 8 ++++---- hw/mips/fuloong2e.c | 2 +- hw/mips/jazz.c | 16 ++++++++-------- hw/mips/loongson3_virt.c | 6 +++--- hw/mips/malta.c | 12 ++++++------ 5 files changed, 22 insertions(+), 22 deletions(-) diff --git a/hw/mips/boston.c b/hw/mips/boston.c index a156b218fb..f012f22307 100644 --- a/hw/mips/boston.c +++ b/hw/mips/boston.c @@ -711,7 +711,7 @@ static void boston_mach_init(MachineState *machine) sysbus_mmio_map_overlap(SYS_BUS_DEVICE(&s->cps), 0, 0, 1); =20 flash =3D g_new(MemoryRegion, 1); - memory_region_init_rom(flash, NULL, "boston.flash", + memory_region_init_rom(flash, OBJECT(machine), "boston.flash", boston_memmap[BOSTON_FLASH].size, &error_fatal); memory_region_add_subregion_overlap(sys_mem, boston_memmap[BOSTON_FLASH].base, @@ -722,7 +722,7 @@ static void boston_mach_init(MachineState *machine) machine->ram, 0); =20 ddr_low_alias =3D g_new(MemoryRegion, 1); - memory_region_init_alias(ddr_low_alias, NULL, "boston_low.ddr", + memory_region_init_alias(ddr_low_alias, OBJECT(machine), "boston_low.d= dr", machine->ram, 0, MIN(machine->ram_size, (256 * MiB))); memory_region_add_subregion_overlap(sys_mem, 0, ddr_low_alias, 0); @@ -749,7 +749,7 @@ static void boston_mach_init(MachineState *machine) get_cps_irq(&s->cps, 0)); =20 platreg =3D g_new(MemoryRegion, 1); - memory_region_init_io(platreg, NULL, &boston_platreg_ops, s, + memory_region_init_io(platreg, OBJECT(machine), &boston_platreg_ops, s, "boston-platregs", boston_memmap[BOSTON_PLATREG].size); memory_region_add_subregion_overlap(sys_mem, @@ -761,7 +761,7 @@ static void boston_mach_init(MachineState *machine) serial_hd(0), DEVICE_LITTLE_ENDIAN); =20 lcd =3D g_new(MemoryRegion, 1); - memory_region_init_io(lcd, NULL, &boston_lcd_ops, s, "boston-lcd", 0x8= ); + memory_region_init_io(lcd, OBJECT(machine), &boston_lcd_ops, s, "bosto= n-lcd", 0x8); memory_region_add_subregion_overlap(sys_mem, boston_memmap[BOSTON_LCD].base, lc= d, 0); =20 diff --git a/hw/mips/fuloong2e.c b/hw/mips/fuloong2e.c index 1b105ca37c..29e6561f2a 100644 --- a/hw/mips/fuloong2e.c +++ b/hw/mips/fuloong2e.c @@ -245,7 +245,7 @@ static void mips_fuloong2e_init(MachineState *machine) memory_region_add_subregion(address_space_mem, 0, machine->ram); =20 /* Boot ROM */ - memory_region_init_rom(bios, NULL, "fuloong2e.bios", BIOS_SIZE, + memory_region_init_rom(bios, OBJECT(machine), "fuloong2e.bios", BIOS_S= IZE, &error_fatal); memory_region_add_subregion(address_space_mem, 0x1fc00000LL, bios); =20 diff --git a/hw/mips/jazz.c b/hw/mips/jazz.c index cb24d8c00d..8999efb352 100644 --- a/hw/mips/jazz.c +++ b/hw/mips/jazz.c @@ -234,9 +234,9 @@ static void mips_jazz_init(MachineState *machine, /* allocate RAM */ memory_region_add_subregion(address_space, 0, machine->ram); =20 - memory_region_init_rom(bios, NULL, "mips_jazz.bios", MAGNUM_BIOS_SIZE, + memory_region_init_rom(bios, OBJECT(machine), "mips_jazz.bios", MAGNUM= _BIOS_SIZE, &error_fatal); - memory_region_init_alias(bios2, NULL, "mips_jazz.bios", bios, + memory_region_init_alias(bios2, OBJECT(machine), "mips_jazz.bios", bio= s, 0, MAGNUM_BIOS_SIZE); memory_region_add_subregion(address_space, 0x1fc00000LL, bios); memory_region_add_subregion(address_space, 0xfff00000LL, bios2); @@ -270,17 +270,17 @@ static void mips_jazz_init(MachineState *machine, sysbus_mmio_get_region(sysbus, 0)); memory_region_add_subregion(address_space, 0xf0000000, sysbus_mmio_get_region(sysbus, 1)); - memory_region_init_io(dma_dummy, NULL, &dma_dummy_ops, + memory_region_init_io(dma_dummy, OBJECT(machine), &dma_dummy_ops, NULL, "dummy_dma", 0x1000); memory_region_add_subregion(address_space, 0x8000d000, dma_dummy); =20 - memory_region_init_rom(dp8393x_prom, NULL, "dp8393x-jazz.prom", + memory_region_init_rom(dp8393x_prom, OBJECT(machine), "dp8393x-jazz.pr= om", SONIC_PROM_SIZE, &error_fatal); memory_region_add_subregion(address_space, 0x8000b000, dp8393x_prom); =20 /* ISA bus: IO space at 0x90000000, mem space at 0x91000000 */ - memory_region_init(isa_io, NULL, "isa-io", 0x00010000); - memory_region_init(isa_mem, NULL, "isa-mem", 0x01000000); + memory_region_init(isa_io, OBJECT(machine), "isa-io", 0x00010000); + memory_region_init(isa_mem, OBJECT(machine), "isa-mem", 0x01000000); memory_region_add_subregion(address_space, 0x90000000, isa_io); memory_region_add_subregion(address_space, 0x91000000, isa_mem); isa_bus =3D isa_bus_new_bridge(OBJECT(machine), isa_mem, isa_io, &erro= r_abort); @@ -306,7 +306,7 @@ static void mips_jazz_init(MachineState *machine, { /* Simple ROM, so user doesn't have to provide one */ MemoryRegion *rom_mr =3D g_new(MemoryRegion, 1); - memory_region_init_rom(rom_mr, NULL, "g364fb.rom", 0x80000, + memory_region_init_rom(rom_mr, OBJECT(machine), "g364fb.rom", = 0x80000, &error_fatal); uint8_t *rom =3D memory_region_get_ram_ptr(rom_mr); memory_region_add_subregion(address_space, 0x60000000, rom_mr); @@ -357,7 +357,7 @@ static void mips_jazz_init(MachineState *machine, =20 /* Real time clock */ mc146818_rtc_init(OBJECT(machine), isa_bus, 1980, NULL); - memory_region_init_io(rtc, NULL, &rtc_ops, NULL, "rtc", 0x1000); + memory_region_init_io(rtc, OBJECT(machine), &rtc_ops, NULL, "rtc", 0x1= 000); memory_region_add_subregion(address_space, 0x80004000, rtc); =20 /* Keyboard (i8042) */ diff --git a/hw/mips/loongson3_virt.c b/hw/mips/loongson3_virt.c index 93c14026ab..97d097373d 100644 --- a/hw/mips/loongson3_virt.c +++ b/hw/mips/loongson3_virt.c @@ -586,11 +586,11 @@ static void mips_loongson3_virt_init(MachineState *ma= chine) assert(cpu); /* This variable points to the first created cpu. */ =20 /* Allocate RAM/BIOS, 0x00000000~0x10000000 is alias of 0x80000000~0x9= 0000000 */ - memory_region_init_rom(bios, NULL, "loongson3.bios", + memory_region_init_rom(bios, OBJECT(machine), "loongson3.bios", virt_memmap[VIRT_BIOS_ROM].size, &error_fatal); - memory_region_init_alias(ram, NULL, "loongson3.lowmem", + memory_region_init_alias(ram, OBJECT(machine), "loongson3.lowmem", machine->ram, 0, virt_memmap[VIRT_LOWMEM].size); - memory_region_init_io(iomem, NULL, &loongson3_pm_ops, + memory_region_init_io(iomem, OBJECT(machine), &loongson3_pm_ops, NULL, "loongson3_pm", virt_memmap[VIRT_PM].size= ); qemu_register_wakeup_support(); =20 diff --git a/hw/mips/malta.c b/hw/mips/malta.c index 72bc97625f..e1d8c3b4dd 100644 --- a/hw/mips/malta.c +++ b/hw/mips/malta.c @@ -577,11 +577,11 @@ static MaltaFPGAState *malta_fpga_init(Object *parent= , MemoryRegion *address_spa =20 s =3D g_new0(MaltaFPGAState, 1); =20 - memory_region_init_io(&s->iomem, NULL, &malta_fpga_ops, s, + memory_region_init_io(&s->iomem, parent, &malta_fpga_ops, s, "malta-fpga", 0x100000); - memory_region_init_alias(&s->iomem_lo, NULL, "malta-fpga", + memory_region_init_alias(&s->iomem_lo, parent, "malta-fpga", &s->iomem, 0, 0x900); - memory_region_init_alias(&s->iomem_hi, NULL, "malta-fpga", + memory_region_init_alias(&s->iomem_hi, parent, "malta-fpga", &s->iomem, 0xa00, 0x100000 - 0xa00); =20 memory_region_add_subregion(address_space, base, &s->iomem_lo); @@ -1115,14 +1115,14 @@ void mips_malta_init(MachineState *machine) memory_region_add_subregion(system_memory, 0x80000000, machine->ram); =20 /* alias for pre IO hole access */ - memory_region_init_alias(ram_low_preio, NULL, "mips_malta_low_preio.ra= m", + memory_region_init_alias(ram_low_preio, OBJECT(machine), "mips_malta_l= ow_preio.ram", machine->ram, 0, MIN(ram_size, 256 * MiB)); memory_region_add_subregion(system_memory, 0, ram_low_preio); =20 /* alias for post IO hole access, if there is enough RAM */ if (ram_size > 512 * MiB) { ram_low_postio =3D g_new(MemoryRegion, 1); - memory_region_init_alias(ram_low_postio, NULL, + memory_region_init_alias(ram_low_postio, OBJECT(machine), "mips_malta_low_postio.ram", machine->ram, 512 * MiB, ram_size - 512 * MiB); @@ -1213,7 +1213,7 @@ void mips_malta_init(MachineState *machine) * handled by an overlapping region as the resulting ROM code subpage * regions are not executable. */ - memory_region_init_ram(bios_copy, NULL, "bios.1fc", BIOS_SIZE, + memory_region_init_ram(bios_copy, OBJECT(machine), "bios.1fc", BIOS_SI= ZE, &error_fatal); if (!rom_copy(memory_region_get_ram_ptr(bios_copy), FLASH_ADDRESS, BIOS_SIZE)) { --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412204; cv=none; d=zohomail.com; s=zohoarc; b=lURtlbHYsXHiF4xA+CsXvmHXwj9ghICrU5FS3hNGB/Pl1ceHQtgiJN39X4oQjmzZ6eJ+qJv4iXnbeKaAJDu8Si5qhqQO5D4ry9z8UjWH+OEcivIOJi+OwLxrFsWgmCxtUrOkdS8yh4KJo9Sb+r8cb1VFeCKH+MmrX4W53xkW+nA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412204; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=YEMoqFRORhQJVsFGzoPtlNX9TwARBH3qOZoBH0ZerFk=; b=eR3f4KcK8JfmlbU1sDwDw63LCNEPvsmMQ4+tB5qHoVTfeHqknIIeGH8KuQ4e0z0QcTCEpDwoRjg9Ql/FD1H3GDhPdu5YsMCZbjsGRpiFdO8byUbwwMbD3GOupTLIksbcX2olKC9r3NMXeLnLzpJovOw14ePZ1c7PrXD59cobQgw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412204874715.3312959460269; Sat, 18 Jul 2026 15:03:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlD7s-0003uh-Mp; Sat, 18 Jul 2026 18:03:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD7q-0003lZ-4d; Sat, 18 Jul 2026 18:03:14 -0400 Received: from pdx-out-005.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.13.214.179]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD7n-0005NZ-Mm; Sat, 18 Jul 2026 18:03:13 -0400 Received: from ip-10-5-6-203.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.6.203]) by internal-pdx-out-005.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:03:07 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.234:7195] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.0.115:2525] with esmtp (Farcaster) id da63f774-6385-4c10-bf00-7406293c02a8; Sat, 18 Jul 2026 22:03:07 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA002.ant.amazon.com (10.250.64.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:03:07 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:02:57 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412191; x=1815948191; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=YEMoqFRORhQJVsFGzoPtlNX9TwARBH3qOZoBH0ZerFk=; b=PdZBhg3QXa3RWoAjIy9kBY2PC53ontvWs1jQAPaLN9/K6UeBxdbsVsTf B2CaFE4BVq8YquDGiV0U7vzDokeJ/qmoj3ab1nwJEDcLWhBWqRbxcv8Q0 lSe6Y/3g8dCMMr7EKTZWhDecVvG17aehNFV6sBrxNqGzk8Rih13mMpnFf VPkOGBkvi6uwsz8xtkzn2XaczMjsA3xXb+iwLRuRF0TAizaljuMD3kWFO GRasEfyNk9PAf8K8NLNeQD8dnf5OxrKm+73WdtkffCHmTp7cbwLXa/nIJ Y1Sz6JBy7WENm5cYOCOL2oyLdwbZNf5JhFf3AUkegvvmB/ehHbjLV0k7c Q==; X-CSE-ConnectionGUID: NPtcU6GyTduAuMBjwlDCTw== X-CSE-MsgGUID: erLxfkTUSd2uJ5sov2GTzA== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23904316" X-Farcaster-Flow-ID: da63f774-6385-4c10-bf00-7406293c02a8 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 093/137] hw/riscv: Give memory regions an explicit owner Date: Sat, 18 Jul 2026 21:36:08 +0000 Message-ID: <20260718213652.37673-94-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D031UWA001.ant.amazon.com (10.13.139.88) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.13.214.179; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-005.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412206737158500 Content-Type: text/plain; charset="utf-8" Convert memory_region_init*() calls that pass NULL owner to pass the enclosing machine or SoC device instead. All sites are inside board init (MachineState *machine) or SoC realize (DeviceState *dev) functions. No functional change intended. RAMBlock idstrs are unchanged: the owners added here are Machine or SysBus devices, and memory_region_register_ram() maps both to dev=3DNULL for qemu_ram_set_idstr(). AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/riscv/boston-aia.c | 8 ++++---- hw/riscv/microblaze-v-generic.c | 4 ++-- hw/riscv/microchip_pfsoc.c | 14 +++++++------- hw/riscv/sifive_u.c | 4 ++-- hw/riscv/spike.c | 2 +- hw/riscv/tt_atlantis.c | 2 +- hw/riscv/virt.c | 2 +- 7 files changed, 18 insertions(+), 18 deletions(-) diff --git a/hw/riscv/boston-aia.c b/hw/riscv/boston-aia.c index 5a9ec28068..ef41f53aac 100644 --- a/hw/riscv/boston-aia.c +++ b/hw/riscv/boston-aia.c @@ -374,7 +374,7 @@ static void boston_mach_init(MachineState *machine) sysbus_mmio_map_overlap(SYS_BUS_DEVICE(&s->cps), 0, 0, 1); =20 flash =3D g_new(MemoryRegion, 1); - memory_region_init_rom(flash, NULL, "boston.flash", + memory_region_init_rom(flash, OBJECT(machine), "boston.flash", boston_memmap[BOSTON_FLASH].size, &error_fatal); memory_region_add_subregion_overlap(sys_mem, boston_memmap[BOSTON_FLASH].base, @@ -385,7 +385,7 @@ static void boston_mach_init(MachineState *machine) machine->ram, 0); =20 ddr_low_alias =3D g_new(MemoryRegion, 1); - memory_region_init_alias(ddr_low_alias, NULL, "boston_low.ddr", + memory_region_init_alias(ddr_low_alias, OBJECT(machine), "boston_low.d= dr", machine->ram, 0, MIN(machine->ram_size, (256 * MiB))); memory_region_add_subregion_overlap(sys_mem, 0, ddr_low_alias, 0); @@ -398,7 +398,7 @@ static void boston_mach_init(MachineState *machine) qdev_get_gpio_in(s->cps.aplic, PCIE2_INT)); =20 platreg =3D g_new(MemoryRegion, 1); - memory_region_init_io(platreg, NULL, &boston_platreg_ops, s, + memory_region_init_io(platreg, OBJECT(machine), &boston_platreg_ops, s, "boston-platregs", boston_memmap[BOSTON_PLATREG].size); memory_region_add_subregion_overlap(sys_mem, @@ -410,7 +410,7 @@ static void boston_mach_init(MachineState *machine) serial_hd(0), DEVICE_LITTLE_ENDIAN); =20 lcd =3D g_new(MemoryRegion, 1); - memory_region_init_io(lcd, NULL, &boston_lcd_ops, s, "boston-lcd", 0x8= ); + memory_region_init_io(lcd, OBJECT(machine), &boston_lcd_ops, s, "bosto= n-lcd", 0x8); memory_region_add_subregion_overlap(sys_mem, boston_memmap[BOSTON_LCD].base, lc= d, 0); =20 diff --git a/hw/riscv/microblaze-v-generic.c b/hw/riscv/microblaze-v-generi= c.c index 7253ae7822..0a83932405 100644 --- a/hw/riscv/microblaze-v-generic.c +++ b/hw/riscv/microblaze-v-generic.c @@ -70,12 +70,12 @@ static void mb_v_generic_init(MachineState *machine) object_property_set_bool(OBJECT(cpu), "d", false, NULL); qdev_realize(DEVICE(cpu), NULL, &error_abort); /* Attach emulated BRAM through the LMB. */ - memory_region_init_ram(phys_lmb_bram, NULL, + memory_region_init_ram(phys_lmb_bram, OBJECT(machine), "mb_v.lmb_bram", LMB_BRAM_SIZE, &error_fatal); memory_region_add_subregion(sysmem, 0x00000000, phys_lmb_bram); =20 - memory_region_init_ram(phys_ram, NULL, "mb_v.ram", + memory_region_init_ram(phys_ram, OBJECT(machine), "mb_v.ram", ram_size, &error_fatal); memory_region_add_subregion(sysmem, ddr_base, phys_ram); =20 diff --git a/hw/riscv/microchip_pfsoc.c b/hw/riscv/microchip_pfsoc.c index 0a98ac1c5e..f1ee64ef86 100644 --- a/hw/riscv/microchip_pfsoc.c +++ b/hw/riscv/microchip_pfsoc.c @@ -219,14 +219,14 @@ static void microchip_pfsoc_soc_realize(DeviceState *= dev, Error **errp) qdev_realize(DEVICE(&s->u_cluster), NULL, &error_abort); =20 /* Reserved Memory at address 0 */ - memory_region_init_ram(rsvd0_mem, NULL, "microchip.pfsoc.rsvd0_mem", + memory_region_init_ram(rsvd0_mem, OBJECT(dev), "microchip.pfsoc.rsvd0_= mem", memmap[MICROCHIP_PFSOC_RSVD0].size, &error_fata= l); memory_region_add_subregion(system_memory, memmap[MICROCHIP_PFSOC_RSVD0].base, rsvd0_mem); =20 /* E51 DTIM */ - memory_region_init_ram(e51_dtim_mem, NULL, "microchip.pfsoc.e51_dtim_m= em", + memory_region_init_ram(e51_dtim_mem, OBJECT(dev), "microchip.pfsoc.e51= _dtim_mem", memmap[MICROCHIP_PFSOC_E51_DTIM].size, &error_f= atal); memory_region_add_subregion(system_memory, memmap[MICROCHIP_PFSOC_E51_DTIM].base, @@ -271,7 +271,7 @@ static void microchip_pfsoc_soc_realize(DeviceState *de= v, Error **errp) * leave it enabled all the time. This won't break anything, but will = be * too generous to misbehaving guests. */ - memory_region_init_ram(l2lim_mem, NULL, "microchip.pfsoc.l2lim", + memory_region_init_ram(l2lim_mem, OBJECT(dev), "microchip.pfsoc.l2lim", memmap[MICROCHIP_PFSOC_L2LIM].size, &error_fata= l); memory_region_add_subregion(system_memory, memmap[MICROCHIP_PFSOC_L2LIM].base, @@ -549,10 +549,10 @@ static void microchip_icicle_kit_machine_init(Machine= State *machine) /* Split RAM into low and high regions using aliases to machine->ram */ mem_low_size =3D memmap[MICROCHIP_PFSOC_DRAM_LO].size; mem_high_size =3D machine->ram_size - mem_low_size; - memory_region_init_alias(mem_low, NULL, + memory_region_init_alias(mem_low, OBJECT(machine), "microchip.icicle.kit.ram_low", machine->ram, 0, mem_low_size); - memory_region_init_alias(mem_high, NULL, + memory_region_init_alias(mem_high, OBJECT(machine), "microchip.icicle.kit.ram_high", machine->ram, mem_low_size, mem_high_size); =20 @@ -565,13 +565,13 @@ static void microchip_icicle_kit_machine_init(Machine= State *machine) mem_high); =20 /* Create aliases for the low and high RAM regions */ - memory_region_init_alias(mem_low_alias, NULL, + memory_region_init_alias(mem_low_alias, OBJECT(machine), "microchip.icicle.kit.ram_low.alias", mem_low, 0, mem_low_size); memory_region_add_subregion(system_memory, memmap[MICROCHIP_PFSOC_DRAM_LO_ALIAS].base, mem_low_alias); - memory_region_init_alias(mem_high_alias, NULL, + memory_region_init_alias(mem_high_alias, OBJECT(machine), "microchip.icicle.kit.ram_high.alias", mem_high, 0, mem_high_size); memory_region_add_subregion(system_memory, diff --git a/hw/riscv/sifive_u.c b/hw/riscv/sifive_u.c index aba6716b73..9d3f5c8f59 100644 --- a/hw/riscv/sifive_u.c +++ b/hw/riscv/sifive_u.c @@ -477,7 +477,7 @@ static void sifive_u_machine_init(MachineState *machine) machine->ram); =20 /* register QSPI0 Flash */ - memory_region_init_ram(flash0, NULL, "riscv.sifive.u.flash0", + memory_region_init_ram(flash0, OBJECT(machine), "riscv.sifive.u.flash0= ", memmap[SIFIVE_U_DEV_FLASH0].size, &error_fatal); memory_region_add_subregion(system_memory, memmap[SIFIVE_U_DEV_FLASH0]= .base, flash0); @@ -763,7 +763,7 @@ static void sifive_u_soc_realize(DeviceState *dev, Erro= r **errp) * leave it enabled all the time. This won't break anything, but will = be * too generous to misbehaving guests. */ - memory_region_init_ram(l2lim_mem, NULL, "riscv.sifive.u.l2lim", + memory_region_init_ram(l2lim_mem, OBJECT(dev), "riscv.sifive.u.l2lim", memmap[SIFIVE_U_DEV_L2LIM].size, &error_fatal); memory_region_add_subregion(system_memory, memmap[SIFIVE_U_DEV_L2LIM].= base, l2lim_mem); diff --git a/hw/riscv/spike.c b/hw/riscv/spike.c index c53409e4f1..9f1a1b5898 100644 --- a/hw/riscv/spike.c +++ b/hw/riscv/spike.c @@ -179,7 +179,7 @@ static void spike_board_init(MachineState *machine) machine->ram); =20 /* boot rom */ - memory_region_init_rom(mask_rom, NULL, "riscv.spike.mrom", + memory_region_init_rom(mask_rom, OBJECT(machine), "riscv.spike.mrom", memmap[SPIKE_MROM].size, &error_fatal); memory_region_add_subregion(system_memory, memmap[SPIKE_MROM].base, mask_rom); diff --git a/hw/riscv/tt_atlantis.c b/hw/riscv/tt_atlantis.c index 068a0bc542..e378f6e856 100644 --- a/hw/riscv/tt_atlantis.c +++ b/hw/riscv/tt_atlantis.c @@ -538,7 +538,7 @@ static void tt_atlantis_machine_init(MachineState *mach= ine) s->memmap[TT_ATL_DDR_LO].base, ram_lo); =20 /* Boot ROM */ - memory_region_init_rom(bootrom, NULL, "tt-atlantis.bootrom", + memory_region_init_rom(bootrom, OBJECT(machine), "tt-atlantis.bootrom", s->memmap[TT_ATL_BOOTROM].size, &error_fatal); memory_region_add_subregion(system_memory, s->memmap[TT_ATL_BOOTROM].b= ase, bootrom); diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index 718b730a4d..3442edb87a 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -1462,7 +1462,7 @@ static void virt_machine_init(MachineState *machine) machine->ram); =20 /* boot rom */ - memory_region_init_rom(mask_rom, NULL, "riscv_virt_board.mrom", + memory_region_init_rom(mask_rom, OBJECT(machine), "riscv_virt_board.mr= om", s->memmap[VIRT_MROM].size, &error_fatal); memory_region_add_subregion(system_memory, s->memmap[VIRT_MROM].base, mask_rom); --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412234; cv=none; d=zohomail.com; s=zohoarc; b=mE/tEXsCfzBlPsTKI0I++08O1Ydgi+LiSsaKZ0QapdiEM/x6jmjJoCCxFy9FC/uur17MIuMKCQ2VA86TaxuwvJP/LekwsiFHyf++8yr/CJvPnxLzrzdbDl4gqOsvORsdG53uLaOuWiet7ejVR4r9svUHxC8I2A75USQAEHDJkJA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412234; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=GUPIqPSnXHKhYCW3HrZXJz3x53LLkXFzMUY1lGWJWaw=; b=eWpffOtGRAvxOW6Z2hEm7kqQIoThudX5aXdpzRcpPIZHtTlLkxq5YHWR6/V36BS0nsWXAmNyMNuQtVwUMU7EiGR/sLTviDH0GsnWE9lNqszzYXwkPLGZc48ZZCq/08urjJMC3M+6YXI1NjdNG1dwNAHBI017DiWvLmm0zYB71HI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412234706689.5269612618268; Sat, 18 Jul 2026 15:03:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlD81-0004UY-Jd; Sat, 18 Jul 2026 18:03:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD7z-0004Nh-Uw; Sat, 18 Jul 2026 18:03:23 -0400 Received: from pdx-out-015.esa.us-west-2.outbound.mail-perimeter.amazon.com ([50.112.246.219]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD7x-0005Oi-Cj; Sat, 18 Jul 2026 18:03:23 -0400 Received: from ip-10-5-12-219.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.12.219]) by internal-pdx-out-015.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:03:17 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.104:18393] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.48.250:2525] with esmtp (Farcaster) id 60eec9b7-fa67-4dec-97bd-27f06aa3c6b8; Sat, 18 Jul 2026 22:03:17 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB001.ant.amazon.com (10.250.64.248) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:03:16 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:03:07 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412201; x=1815948201; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=GUPIqPSnXHKhYCW3HrZXJz3x53LLkXFzMUY1lGWJWaw=; b=Rg5VkZenK75v0LPua6hxS7wtLSmOASm409CGZIIG9r0L3AhgQByMrtn3 KITY4CRF066FCTqyNzuTxBK2LE+SQfgcI7PBiGua1QwxlheMnazLSgXBs ZnwY5ncZ1Z/sLBamRKVLqHY5+60xkmeho8JUgZ1UmOWkTZmcbxkMeZyPT YB4QEzxRB69J39+DRLha3nO2nyHp+VmcjtzP1lo/PjbXPZKLT+2I169Bh yMJy2sfeuPm/URDBSsBsZnF1UT4rbv5SQu6NHuAOol4lFOrQelyROPwGu 0ZsKd0MZ3K3455xn7ai4gcO4CcZ+75T1fK2G7tdlbTRPOtFCRkt7+MLhS A==; X-CSE-ConnectionGUID: RJ3rqSGCRPuIPF+narQkSw== X-CSE-MsgGUID: IfLEB6trS7e8BmKpDub51A== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23725542" X-Farcaster-Flow-ID: 60eec9b7-fa67-4dec-97bd-27f06aa3c6b8 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 094/137] hw/i386: Give memory regions an explicit owner Date: Sat, 18 Jul 2026 21:36:09 +0000 Message-ID: <20260718213652.37673-95-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D031UWA001.ant.amazon.com (10.13.139.88) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=50.112.246.219; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-015.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412236557158500 Content-Type: text/plain; charset="utf-8" Convert memory_region_init*() calls that pass NULL owner to pass the enclosing PC/x86/microvm machine or device instead. Thread X86MachineState through x86_isa_bios_init() so the isa-bios alias is owned by the machine that creates it. No functional change intended. RAMBlock idstrs are unchanged: the owners added here are Machine or SysBus devices, and memory_region_register_ram() maps both to dev=3DNULL for qemu_ram_set_idstr(). AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/i386/microvm.c | 4 ++-- hw/i386/pc.c | 8 ++++---- hw/i386/pc_piix.c | 2 +- hw/i386/pc_q35.c | 2 +- hw/i386/pc_sysfw.c | 6 +++--- hw/i386/x86-common.c | 11 ++++++----- hw/i386/xen/xen-hvm.c | 8 ++++---- hw/i386/xen/xen_pvdevice.c | 2 +- include/hw/i386/x86.h | 3 ++- 9 files changed, 24 insertions(+), 22 deletions(-) diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c index aa0e1ef155..751e3962fa 100644 --- a/hw/i386/microvm.c +++ b/hw/i386/microvm.c @@ -305,7 +305,7 @@ static void microvm_memory_init(MicrovmMachineState *mm= s) } =20 ram_below_4g =3D g_malloc(sizeof(*ram_below_4g)); - memory_region_init_alias(ram_below_4g, NULL, "ram-below-4g", machine->= ram, + memory_region_init_alias(ram_below_4g, OBJECT(mms), "ram-below-4g", ma= chine->ram, 0, x86ms->below_4g_mem_size); memory_region_add_subregion(system_memory, 0, ram_below_4g); =20 @@ -313,7 +313,7 @@ static void microvm_memory_init(MicrovmMachineState *mm= s) =20 if (x86ms->above_4g_mem_size > 0) { ram_above_4g =3D g_malloc(sizeof(*ram_above_4g)); - memory_region_init_alias(ram_above_4g, NULL, "ram-above-4g", + memory_region_init_alias(ram_above_4g, OBJECT(mms), "ram-above-4g", machine->ram, x86ms->below_4g_mem_size, x86ms->above_4g_mem_size); diff --git a/hw/i386/pc.c b/hw/i386/pc.c index e505391985..8057058ff0 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -795,13 +795,13 @@ void pc_memory_init(PCMachineState *pcms, * done for backwards compatibility with older qemus. */ ram_below_4g =3D g_malloc(sizeof(*ram_below_4g)); - memory_region_init_alias(ram_below_4g, NULL, "ram-below-4g", machine->= ram, + memory_region_init_alias(ram_below_4g, OBJECT(pcms), "ram-below-4g", m= achine->ram, 0, x86ms->below_4g_mem_size); memory_region_add_subregion(system_memory, 0, ram_below_4g); e820_add_entry(0, x86ms->below_4g_mem_size, E820_RAM); if (x86ms->above_4g_mem_size > 0) { ram_above_4g =3D g_malloc(sizeof(*ram_above_4g)); - memory_region_init_alias(ram_above_4g, NULL, "ram-above-4g", + memory_region_init_alias(ram_above_4g, OBJECT(pcms), "ram-above-4g= ", machine->ram, x86ms->below_4g_mem_size, x86ms->above_4g_mem_size); @@ -871,10 +871,10 @@ void pc_memory_init(PCMachineState *pcms, if (!is_tdx_vm()) { option_rom_mr =3D g_malloc(sizeof(*option_rom_mr)); if (machine_require_guest_memfd(machine)) { - memory_region_init_ram_guest_memfd(option_rom_mr, NULL, "pc.ro= m", + memory_region_init_ram_guest_memfd(option_rom_mr, OBJECT(pcms)= , "pc.rom", PC_ROM_SIZE, &error_fatal); } else { - memory_region_init_ram(option_rom_mr, NULL, "pc.rom", PC_ROM_S= IZE, + memory_region_init_ram(option_rom_mr, OBJECT(pcms), "pc.rom", = PC_ROM_SIZE, &error_fatal); if (pcmc->pci_enabled) { memory_region_set_readonly(option_rom_mr, true); diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c index c9e6c61734..0b8d7d88b9 100644 --- a/hw/i386/pc_piix.c +++ b/hw/i386/pc_piix.c @@ -191,7 +191,7 @@ static void pc_init1(MachineState *machine, const char = *pci_type) } =20 pci_memory =3D g_new(MemoryRegion, 1); - memory_region_init(pci_memory, NULL, "pci", UINT64_MAX); + memory_region_init(pci_memory, OBJECT(machine), "pci", UINT64_MAX); =20 phb =3D OBJECT(qdev_new(OBJECT(machine), "i440fx", TYPE_I440FX_PCI_HOS= T_BRIDGE)); object_property_set_link(phb, PCI_HOST_PROP_RAM_MEM, diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c index 62625abed8..b2cdca8ade 100644 --- a/hw/i386/pc_q35.c +++ b/hw/i386/pc_q35.c @@ -208,7 +208,7 @@ static void pc_q35_init(MachineState *machine) &error_abort); =20 /* allocate ram and load rom/bios */ - memory_region_init(pci_memory, NULL, "pci", UINT64_MAX); + memory_region_init(pci_memory, OBJECT(machine), "pci", UINT64_MAX); pc_memory_init(pcms, system_memory, pci_memory, pci_hole64_size); =20 object_property_set_link(phb, PCI_HOST_PROP_RAM_MEM, diff --git a/hw/i386/pc_sysfw.c b/hw/i386/pc_sysfw.c index 02d75e2838..b536fca60f 100644 --- a/hw/i386/pc_sysfw.c +++ b/hw/i386/pc_sysfw.c @@ -52,10 +52,10 @@ static void pc_isa_bios_init(PCMachineState *pcms, Memo= ryRegion *isa_bios, /* map the last 128KB of the BIOS in ISA space */ isa_bios_size =3D MIN(flash_size, 128 * KiB); if (machine_require_guest_memfd(MACHINE(pcms))) { - memory_region_init_ram_guest_memfd(isa_bios, NULL, "isa-bios", + memory_region_init_ram_guest_memfd(isa_bios, OBJECT(pcms), "isa-bi= os", isa_bios_size, &error_fatal); } else { - memory_region_init_ram(isa_bios, NULL, "isa-bios", isa_bios_size, + memory_region_init_ram(isa_bios, OBJECT(pcms), "isa-bios", isa_bio= s_size, &error_fatal); } memory_region_add_subregion_overlap(rom_memory, @@ -189,7 +189,7 @@ static void pc_system_flash_map(PCMachineState *pcms, if (i =3D=3D 0) { flash_mem =3D pflash_cfi01_get_memory(system_flash); if (pcmc->isa_bios_alias) { - x86_isa_bios_init(&x86ms->isa_bios, rom_memory, flash_mem, + x86_isa_bios_init(x86ms, &x86ms->isa_bios, rom_memory, fla= sh_mem, true); } else { pc_isa_bios_init(pcms, &x86ms->isa_bios, rom_memory, flash= _mem); diff --git a/hw/i386/x86-common.c b/hw/i386/x86-common.c index 73a53fbf3f..151a67ee5f 100644 --- a/hw/i386/x86-common.c +++ b/hw/i386/x86-common.c @@ -993,13 +993,14 @@ void x86_load_linux(X86MachineState *x86ms, nb_option_roms++; } =20 -void x86_isa_bios_init(MemoryRegion *isa_bios, MemoryRegion *isa_memory, +void x86_isa_bios_init(X86MachineState *x86ms, MemoryRegion *isa_bios, + MemoryRegion *isa_memory, MemoryRegion *bios, bool read_only) { uint64_t bios_size =3D memory_region_size(bios); uint64_t isa_bios_size =3D MIN(bios_size, 128 * KiB); =20 - memory_region_init_alias(isa_bios, NULL, "isa-bios", bios, + memory_region_init_alias(isa_bios, OBJECT(x86ms), "isa-bios", bios, bios_size - isa_bios_size, isa_bios_size); memory_region_add_subregion_overlap(isa_memory, 1 * MiB - isa_bios_siz= e, isa_bios, 1); @@ -1036,13 +1037,13 @@ static void load_bios_from_file(X86MachineState *x8= 6ms, const char *bios_name, =20 /* BIOS load */ if (machine_require_guest_memfd(MACHINE(x86ms))) { - memory_region_init_ram_guest_memfd(&x86ms->bios, NULL, "pc.bios", + memory_region_init_ram_guest_memfd(&x86ms->bios, OBJECT(x86ms), "p= c.bios", bios_size, &error_fatal); if (is_tdx_vm()) { tdx_set_tdvf_region(&x86ms->bios); } } else { - memory_region_init_ram(&x86ms->bios, NULL, "pc.bios", + memory_region_init_ram(&x86ms->bios, OBJECT(x86ms), "pc.bios", bios_size, &error_fatal); } if (sev_enabled() || is_tdx_vm()) { @@ -1107,7 +1108,7 @@ void x86_bios_rom_init(X86MachineState *x86ms, const = char *default_firmware, =20 if (!machine_require_guest_memfd(MACHINE(x86ms))) { /* map the last 128KB of the BIOS in ISA space */ - x86_isa_bios_init(&x86ms->isa_bios, rom_memory, &x86ms->bios, + x86_isa_bios_init(x86ms, &x86ms->isa_bios, rom_memory, &x86ms->bio= s, !isapc_ram_fw); } =20 diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c index d3ce082e07..01d851ce3e 100644 --- a/hw/i386/xen/xen-hvm.c +++ b/hw/i386/xen/xen-hvm.c @@ -156,11 +156,11 @@ static void xen_ram_init(PCMachineState *pcms, */ block_len =3D (4 * GiB) + x86ms->above_4g_mem_size; } - memory_region_init_ram(&xen_memory, NULL, "xen.ram", block_len, + memory_region_init_ram(&xen_memory, OBJECT(pcms), "xen.ram", block_len, &error_fatal); *ram_memory_p =3D &xen_memory; =20 - memory_region_init_alias(&ram_640k, NULL, "xen.ram.640k", + memory_region_init_alias(&ram_640k, OBJECT(pcms), "xen.ram.640k", &xen_memory, 0, 0xa0000); memory_region_add_subregion(sysmem, 0, &ram_640k); /* Skip of the VGA IO memory space, it will be registered later by the= VGA @@ -169,12 +169,12 @@ static void xen_ram_init(PCMachineState *pcms, * The area between 0xc0000 and 0x100000 will be used by SeaBIOS to lo= ad * the Options ROM, so it is registered here as RAM. */ - memory_region_init_alias(&ram_lo, NULL, "xen.ram.lo", + memory_region_init_alias(&ram_lo, OBJECT(pcms), "xen.ram.lo", &xen_memory, 0xc0000, x86ms->below_4g_mem_size - 0xc0000); memory_region_add_subregion(sysmem, 0xc0000, &ram_lo); if (x86ms->above_4g_mem_size > 0) { - memory_region_init_alias(&ram_hi, NULL, "xen.ram.hi", + memory_region_init_alias(&ram_hi, OBJECT(pcms), "xen.ram.hi", &xen_memory, 0x100000000ULL, x86ms->above_4g_mem_size); memory_region_add_subregion(sysmem, 0x100000000ULL, &ram_hi); diff --git a/hw/i386/xen/xen_pvdevice.c b/hw/i386/xen/xen_pvdevice.c index fab26a06af..6c255aeae1 100644 --- a/hw/i386/xen/xen_pvdevice.c +++ b/hw/i386/xen/xen_pvdevice.c @@ -108,7 +108,7 @@ static void xen_pv_realize(PCIDevice *pci_dev, Error **= errp) =20 pci_conf[PCI_INTERRUPT_PIN] =3D 1; =20 - memory_region_init_io(&d->mmio, NULL, &xen_pv_mmio_ops, d, + memory_region_init_io(&d->mmio, OBJECT(pci_dev), &xen_pv_mmio_ops, d, "mmio", d->size); =20 pci_register_bar(pci_dev, 1, PCI_BASE_ADDRESS_MEM_PREFETCH, diff --git a/include/hw/i386/x86.h b/include/hw/i386/x86.h index 61d6ec1755..9d5d7694d4 100644 --- a/include/hw/i386/x86.h +++ b/include/hw/i386/x86.h @@ -121,7 +121,8 @@ void x86_cpu_unplug_request_cb(HotplugHandler *hotplug_= dev, void x86_cpu_unplug_cb(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp); =20 -void x86_isa_bios_init(MemoryRegion *isa_bios, MemoryRegion *isa_memory, +void x86_isa_bios_init(X86MachineState *x86ms, MemoryRegion *isa_bios, + MemoryRegion *isa_memory, MemoryRegion *bios, bool read_only); void x86_bios_rom_init(X86MachineState *x86ms, const char *default_firmwar= e, MemoryRegion *rom_memory, bool isapc_ram_fw); --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412218; cv=none; d=zohomail.com; s=zohoarc; b=P2GznLIqvG4ol4AYOs8Nnx51GyqgpuL3QFhNusdI3bY5vH+csNvDFfzlhM+5RO4pjsc4VNt/JHaI8TCHhUFCeK6It4xukwXK+qUw9jgJwXZojclLSphsCA0kA9JsbTzTinKflvWXhL1BE3ipwv4dsk3asGKK4O7FuC0trMEUJMU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412218; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=FJpdN0tmvBs2dZanyNnSzsyg5k1bnQqSCPREAiSP4Tc=; b=fcxh7bK0XH1uxpuem3lLRIw2HsZhWD2jwrtwO5St8t3KDW0PB5Ml7SKNLXl84ivjTa5pbpDBglRG5qt/S3DPIrLEfXYJRV969ajWVpPXNE4AKVXEB5MfOyhiCHAeIeXZoJKtKvLVA2zS+9pU56WXSCdHMDwJRdqk55QcfITRxwo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412218789119.4872835857883; Sat, 18 Jul 2026 15:03:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlD8C-0004zH-LV; Sat, 18 Jul 2026 18:03:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD8B-0004uX-2q; Sat, 18 Jul 2026 18:03:35 -0400 Received: from pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com ([35.155.198.111]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD86-0005Px-Oh; Sat, 18 Jul 2026 18:03:34 -0400 Received: from ip-10-5-12-219.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.12.219]) by internal-pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:03:27 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.51:30288] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.0.115:2525] with esmtp (Farcaster) id f41ea425-6b7a-4a11-9d5e-42135cc33ead; Sat, 18 Jul 2026 22:03:26 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC002.ant.amazon.com (10.250.64.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:03:26 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:03:16 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412210; x=1815948210; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=FJpdN0tmvBs2dZanyNnSzsyg5k1bnQqSCPREAiSP4Tc=; b=o4eKOl2kOOiJtviRuI55k1cX3x8caIqgELnzFLM6fmnnOuIw2Tk4kynN 9KWWKPSqQIJlARnCdeW71LbHamZh7wYAENRWR5SoPs61WEmR9xLyjwflA oNGq9Am4YV5t0JL5Cnqh9NJThkmDXxQwjTKPM6gce51YfZoElDRsktIx5 PASoBCYgDCbFLwmfmzCTs65Qg9qy8ddPpatfHdmvkEeoKK8SV5RtnVYry 9a9o0BlTYncBGjqOm771UFBFOqfNHdpk9EnFRZ5sL3XuzHMtiOVYyr1dn xKd/EZ6fwFpAxPLSj11e8gYPxupDXIzHF6x5yHufN1N8rBqc9y1ll9ycK Q==; X-CSE-ConnectionGUID: qe2KqG+RS6K3MD+wKEN79Q== X-CSE-MsgGUID: jtXHsg9rSQ+wkCQCaR1dOg== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23817066" X-Farcaster-Flow-ID: f41ea425-6b7a-4a11-9d5e-42135cc33ead From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 095/137] hw/arm: Give memory regions an explicit owner Date: Sat, 18 Jul 2026 21:36:10 +0000 Message-ID: <20260718213652.37673-96-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D031UWA001.ant.amazon.com (10.13.139.88) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=35.155.198.111; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412220618158500 Content-Type: text/plain; charset="utf-8" Convert memory_region_init*() calls that pass NULL owner to pass the enclosing SoC device or machine instead. Static helpers make_ram()/make_ram_alias() in mps2.c and mps2-tz.c, create_tag_ram() in virt.c, and exynos4_boards_init_ram() gain an Object *owner first argument. armsse.c:make_alias() and aspeed_install_boot_rom() already carry a QOM-derived first argument; use it. hw/arm/omap1.c is handled in a separate commit as its 20+ non-QOM sub-init helpers all need owner threading. No functional change intended. RAMBlock idstrs are unchanged: the owners added here are Machine or SysBus devices, and memory_region_register_ram() maps both to dev=3DNULL for qemu_ram_set_idstr(). Reviewed-by: Bernhard Beschow # imx only AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/arm/armsse.c | 8 ++++---- hw/arm/aspeed.c | 2 +- hw/arm/aspeed_soc_common.c | 2 +- hw/arm/exynos4210.c | 2 +- hw/arm/exynos4_boards.c | 8 ++++---- hw/arm/fsl-imx25.c | 2 +- hw/arm/fsl-imx31.c | 2 +- hw/arm/fsl-imx6.c | 2 +- hw/arm/fsl-imx6ul.c | 2 +- hw/arm/fsl-imx7.c | 8 ++++---- hw/arm/imx25_pdk.c | 2 +- hw/arm/integratorcp.c | 2 +- hw/arm/kzm.c | 2 +- hw/arm/max78000_soc.c | 2 +- hw/arm/mps2-tz.c | 9 +++++---- hw/arm/mps2.c | 33 +++++++++++++++++---------------- hw/arm/mps3r.c | 4 ++-- hw/arm/msf2-soc.c | 2 +- hw/arm/msf2-som.c | 2 +- hw/arm/musca.c | 4 ++-- hw/arm/musicpal.c | 2 +- hw/arm/omap_sx1.c | 14 +++++++------- hw/arm/realview.c | 8 ++++---- hw/arm/sbsa-ref.c | 2 +- hw/arm/stellaris.c | 4 ++-- hw/arm/stm32f100_soc.c | 2 +- hw/arm/stm32f205_soc.c | 2 +- hw/arm/stm32f405_soc.c | 4 ++-- hw/arm/vexpress.c | 8 ++++---- hw/arm/virt.c | 13 +++++++------ hw/arm/xilinx_zynq.c | 2 +- hw/arm/xlnx-zynqmp.c | 2 +- 32 files changed, 83 insertions(+), 80 deletions(-) diff --git a/hw/arm/armsse.c b/hw/arm/armsse.c index ddb210c895..81895ad370 100644 --- a/hw/arm/armsse.c +++ b/hw/arm/armsse.c @@ -620,7 +620,7 @@ static uint32_t armsse_sys_config_value(ARMSSE *s, cons= t ARMSSEInfo *info) static void make_alias(ARMSSE *s, MemoryRegion *mr, MemoryRegion *containe= r, const char *name, hwaddr base, hwaddr size, hwaddr = orig) { - memory_region_init_alias(mr, NULL, name, container, orig, size); + memory_region_init_alias(mr, OBJECT(s), name, container, orig, size); /* The alias is even lower priority than unimplemented_device regions = */ memory_region_add_subregion_overlap(container, base, mr, -1500); } @@ -1161,7 +1161,7 @@ static void armsse_realize(DeviceState *dev, Error **= errp) SysBusDevice *sbd_mpc; uint32_t sram_bank_size =3D 1 << s->sram_addr_width; =20 - memory_region_init_ram(&s->sram[i], NULL, ramname, + memory_region_init_ram(&s->sram[i], OBJECT(dev), ramname, sram_bank_size, errp); g_free(ramname); if (*errp) { @@ -1226,11 +1226,11 @@ static void armsse_realize(DeviceState *dev, Error = **errp) =20 if (info->has_tcms) { /* The SSE-300 has an ITCM at 0x0000_0000 and a DTCM at 0x2000_000= 0 */ - memory_region_init_ram(&s->itcm, NULL, "sse300-itcm", 512 * KiB, e= rrp); + memory_region_init_ram(&s->itcm, OBJECT(dev), "sse300-itcm", 512 *= KiB, errp); if (*errp) { return; } - memory_region_init_ram(&s->dtcm, NULL, "sse300-dtcm", 512 * KiB, e= rrp); + memory_region_init_ram(&s->dtcm, OBJECT(dev), "sse300-dtcm", 512 *= KiB, errp); if (*errp) { return; } diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c index 2e76e09f8f..f9249a9851 100644 --- a/hw/arm/aspeed.c +++ b/hw/arm/aspeed.c @@ -201,7 +201,7 @@ static void aspeed_machine_init(MachineState *machine) if (machine->kernel_filename && sc->num_cpus > 1) { /* With no u-boot we must set up a boot stub for the secondary CPU= */ MemoryRegion *smpboot =3D g_new(MemoryRegion, 1); - memory_region_init_ram(smpboot, NULL, "aspeed.smpboot", + memory_region_init_ram(smpboot, OBJECT(bmc), "aspeed.smpboot", 0x80, &error_abort); memory_region_add_subregion(get_system_memory(), AST_SMP_MAILBOX_BASE, smpboot); diff --git a/hw/arm/aspeed_soc_common.c b/hw/arm/aspeed_soc_common.c index 780a9659cc..c79b27c561 100644 --- a/hw/arm/aspeed_soc_common.c +++ b/hw/arm/aspeed_soc_common.c @@ -177,7 +177,7 @@ void aspeed_install_boot_rom(AspeedSoCState *soc, Block= Backend *blk, { AspeedSoCClass *sc =3D ASPEED_SOC_GET_CLASS(soc); =20 - memory_region_init_rom(boot_rom, NULL, "aspeed.boot_rom", rom_size, + memory_region_init_rom(boot_rom, OBJECT(soc), "aspeed.boot_rom", rom_s= ize, &error_abort); memory_region_add_subregion_overlap(&soc->spi_boot_container, 0, boot_rom, 1); diff --git a/hw/arm/exynos4210.c b/hw/arm/exynos4210.c index 74ce36c1e6..676915e814 100644 --- a/hw/arm/exynos4210.c +++ b/hw/arm/exynos4210.c @@ -660,7 +660,7 @@ static void exynos4210_realize(DeviceState *socdev, Err= or **errp) &s->irom_alias_mem); =20 /* Internal RAM */ - memory_region_init_ram(&s->iram_mem, NULL, "exynos4210.iram", + memory_region_init_ram(&s->iram_mem, OBJECT(socdev), "exynos4210.iram", EXYNOS4210_IRAM_SIZE, &error_fatal); memory_region_add_subregion(system_mem, EXYNOS4210_IRAM_BASE_ADDR, &s->iram_mem); diff --git a/hw/arm/exynos4_boards.c b/hw/arm/exynos4_boards.c index dce2c24860..8430317815 100644 --- a/hw/arm/exynos4_boards.c +++ b/hw/arm/exynos4_boards.c @@ -88,14 +88,14 @@ static void lan9215_init(uint32_t base, qemu_irq irq) } } =20 -static void exynos4_boards_init_ram(Exynos4BoardState *s, +static void exynos4_boards_init_ram(Object *owner, Exynos4BoardState *s, MemoryRegion *system_mem, unsigned long ram_size) { unsigned long mem_size =3D ram_size; =20 if (mem_size > EXYNOS4210_DRAM_MAX_SIZE) { - memory_region_init_ram(&s->dram1_mem, NULL, "exynos4210.dram1", + memory_region_init_ram(&s->dram1_mem, owner, "exynos4210.dram1", mem_size - EXYNOS4210_DRAM_MAX_SIZE, &error_fatal); memory_region_add_subregion(system_mem, EXYNOS4210_DRAM1_BASE_ADDR, @@ -103,7 +103,7 @@ static void exynos4_boards_init_ram(Exynos4BoardState *= s, mem_size =3D EXYNOS4210_DRAM_MAX_SIZE; } =20 - memory_region_init_ram(&s->dram0_mem, NULL, "exynos4210.dram0", mem_si= ze, + memory_region_init_ram(&s->dram0_mem, owner, "exynos4210.dram0", mem_s= ize, &error_fatal); memory_region_add_subregion(system_mem, EXYNOS4210_DRAM0_BASE_ADDR, &s->dram0_mem); @@ -122,7 +122,7 @@ exynos4_boards_init_common(MachineState *machine, exynos4_board_binfo.gic_cpu_if_addr =3D EXYNOS4210_SMP_PRIVATE_BASE_ADDR + 0x100; =20 - exynos4_boards_init_ram(s, get_system_memory(), + exynos4_boards_init_ram(OBJECT(machine), s, get_system_memory(), exynos4_board_ram_size[board_type]); =20 object_initialize_child(OBJECT(machine), "soc", &s->soc, diff --git a/hw/arm/fsl-imx25.c b/hw/arm/fsl-imx25.c index 7f65f4ca4b..f589c83567 100644 --- a/hw/arm/fsl-imx25.c +++ b/hw/arm/fsl-imx25.c @@ -292,7 +292,7 @@ static void fsl_imx25_realize(DeviceState *dev, Error *= *errp) &s->rom[1]); =20 /* initialize internal RAM (128 KB) */ - if (!memory_region_init_ram(&s->iram, NULL, "imx25.iram", + if (!memory_region_init_ram(&s->iram, OBJECT(dev), "imx25.iram", FSL_IMX25_IRAM_SIZE, errp)) { return; } diff --git a/hw/arm/fsl-imx31.c b/hw/arm/fsl-imx31.c index 190f863355..fc387bbbc3 100644 --- a/hw/arm/fsl-imx31.c +++ b/hw/arm/fsl-imx31.c @@ -204,7 +204,7 @@ static void fsl_imx31_realize(DeviceState *dev, Error *= *errp) &s->rom); =20 /* initialize internal RAM (16 KB) */ - if (!memory_region_init_ram(&s->iram, NULL, "imx31.iram", + if (!memory_region_init_ram(&s->iram, OBJECT(dev), "imx31.iram", FSL_IMX31_IRAM_SIZE, errp)) { return; } diff --git a/hw/arm/fsl-imx6.c b/hw/arm/fsl-imx6.c index f0fbdc1a68..99250910cb 100644 --- a/hw/arm/fsl-imx6.c +++ b/hw/arm/fsl-imx6.c @@ -491,7 +491,7 @@ static void fsl_imx6_realize(DeviceState *dev, Error **= errp) &s->caam); =20 /* OCRAM memory */ - if (!memory_region_init_ram(&s->ocram, NULL, "imx6.ocram", + if (!memory_region_init_ram(&s->ocram, OBJECT(dev), "imx6.ocram", FSL_IMX6_OCRAM_SIZE, errp)) { return; } diff --git a/hw/arm/fsl-imx6ul.c b/hw/arm/fsl-imx6ul.c index adbb896fd1..f830dce9df 100644 --- a/hw/arm/fsl-imx6ul.c +++ b/hw/arm/fsl-imx6ul.c @@ -699,7 +699,7 @@ static void fsl_imx6ul_realize(DeviceState *dev, Error = **errp) /* * OCRAM memory */ - memory_region_init_ram(&s->ocram, NULL, "imx6ul.ocram", + memory_region_init_ram(&s->ocram, OBJECT(dev), "imx6ul.ocram", FSL_IMX6UL_OCRAM_MEM_SIZE, &error_abort); memory_region_add_subregion(get_system_memory(), FSL_IMX6UL_OCRAM_MEM_= ADDR, diff --git a/hw/arm/fsl-imx7.c b/hw/arm/fsl-imx7.c index 07a5ae8cd0..ceb26b4efd 100644 --- a/hw/arm/fsl-imx7.c +++ b/hw/arm/fsl-imx7.c @@ -689,7 +689,7 @@ static void fsl_imx7_realize(DeviceState *dev, Error **= errp) /* * OCRAM memory */ - memory_region_init_ram(&s->ocram, NULL, "imx7.ocram", + memory_region_init_ram(&s->ocram, OBJECT(dev), "imx7.ocram", FSL_IMX7_OCRAM_MEM_SIZE, &error_abort); memory_region_add_subregion(get_system_memory(), FSL_IMX7_OCRAM_MEM_AD= DR, @@ -698,7 +698,7 @@ static void fsl_imx7_realize(DeviceState *dev, Error **= errp) /* * OCRAM EPDC memory */ - memory_region_init_ram(&s->ocram_epdc, NULL, "imx7.ocram_epdc", + memory_region_init_ram(&s->ocram_epdc, OBJECT(dev), "imx7.ocram_epdc", FSL_IMX7_OCRAM_EPDC_SIZE, &error_abort); memory_region_add_subregion(get_system_memory(), FSL_IMX7_OCRAM_EPDC_A= DDR, @@ -707,7 +707,7 @@ static void fsl_imx7_realize(DeviceState *dev, Error **= errp) /* * OCRAM PXP memory */ - memory_region_init_ram(&s->ocram_pxp, NULL, "imx7.ocram_pxp", + memory_region_init_ram(&s->ocram_pxp, OBJECT(dev), "imx7.ocram_pxp", FSL_IMX7_OCRAM_PXP_SIZE, &error_abort); memory_region_add_subregion(get_system_memory(), FSL_IMX7_OCRAM_PXP_AD= DR, @@ -716,7 +716,7 @@ static void fsl_imx7_realize(DeviceState *dev, Error **= errp) /* * OCRAM_S memory */ - memory_region_init_ram(&s->ocram_s, NULL, "imx7.ocram_s", + memory_region_init_ram(&s->ocram_s, OBJECT(dev), "imx7.ocram_s", FSL_IMX7_OCRAM_S_SIZE, &error_abort); memory_region_add_subregion(get_system_memory(), FSL_IMX7_OCRAM_S_ADDR, diff --git a/hw/arm/imx25_pdk.c b/hw/arm/imx25_pdk.c index 9351d53850..cecfc25e9a 100644 --- a/hw/arm/imx25_pdk.c +++ b/hw/arm/imx25_pdk.c @@ -104,7 +104,7 @@ static void imx25_pdk_init(MachineState *machine) ram_size -=3D size; =20 if (size < ram[i].size) { - memory_region_init_alias(&s->ram_alias, NULL, "ram.alias", + memory_region_init_alias(&s->ram_alias, OBJECT(machine), "ram.= alias", machine->ram, alias_offset, ram[i].size - size); memory_region_add_subregion(get_system_memory(), diff --git a/hw/arm/integratorcp.c b/hw/arm/integratorcp.c index ed715a3eb8..81c0bce8f9 100644 --- a/hw/arm/integratorcp.c +++ b/hw/arm/integratorcp.c @@ -617,7 +617,7 @@ static void integratorcp_init(MachineState *machine) /* SDRAM at address zero*/ memory_region_add_subregion(address_space_mem, 0, machine->ram); /* And again at address 0x80000000 */ - memory_region_init_alias(ram_alias, NULL, "ram.alias", machine->ram, + memory_region_init_alias(ram_alias, OBJECT(machine), "ram.alias", mach= ine->ram, 0, ram_size); memory_region_add_subregion(address_space_mem, 0x80000000, ram_alias); =20 diff --git a/hw/arm/kzm.c b/hw/arm/kzm.c index 36e12bb362..3e879c492d 100644 --- a/hw/arm/kzm.c +++ b/hw/arm/kzm.c @@ -104,7 +104,7 @@ static void kzm_init(MachineState *machine) ram_size -=3D size; =20 if (size < ram[i].size) { - memory_region_init_alias(&s->ram_alias, NULL, "ram.alias", + memory_region_init_alias(&s->ram_alias, OBJECT(machine), "ram.= alias", machine->ram, alias_offset, ram[i].size - size); memory_region_add_subregion(get_system_memory(), diff --git a/hw/arm/max78000_soc.c b/hw/arm/max78000_soc.c index b8e0265de2..41cfaee925 100644 --- a/hw/arm/max78000_soc.c +++ b/hw/arm/max78000_soc.c @@ -74,7 +74,7 @@ static void max78000_soc_realize(DeviceState *dev_soc, Er= ror **errp) =20 memory_region_add_subregion(system_memory, FLASH_BASE_ADDRESS, &s->fla= sh); =20 - memory_region_init_ram(&s->sram, NULL, "MAX78000.sram", SRAM_SIZE, + memory_region_init_ram(&s->sram, obj, "MAX78000.sram", SRAM_SIZE, &err); =20 gcrdev =3D DEVICE(&s->gcr); diff --git a/hw/arm/mps2-tz.c b/hw/arm/mps2-tz.c index 32e3db1134..a57915e208 100644 --- a/hw/arm/mps2-tz.c +++ b/hw/arm/mps2-tz.c @@ -338,7 +338,7 @@ static MemoryRegion *mr_for_raminfo(MPS2TZMachineState = *mms, assert(raminfo->mrindex < MPS2TZ_RAM_MAX); ram =3D &mms->ram[raminfo->mrindex]; =20 - memory_region_init_ram(ram, NULL, raminfo->name, + memory_region_init_ram(ram, OBJECT(mms), raminfo->name, raminfo->size, &error_fatal); if (raminfo->flags & IS_ROM) { memory_region_set_readonly(ram, true); @@ -349,10 +349,10 @@ static MemoryRegion *mr_for_raminfo(MPS2TZMachineStat= e *mms, /* Create an alias of an entire original MemoryRegion @orig * located at @base in the memory map. */ -static void make_ram_alias(MemoryRegion *mr, const char *name, +static void make_ram_alias(Object *owner, MemoryRegion *mr, const char *na= me, MemoryRegion *orig, hwaddr base) { - memory_region_init_alias(mr, NULL, name, orig, 0, + memory_region_init_alias(mr, owner, name, orig, 0, memory_region_size(orig)); memory_region_add_subregion(get_system_memory(), base, mr); } @@ -767,7 +767,8 @@ static void create_non_mpc_ram(MPS2TZMachineState *mms) if (p->flags & IS_ALIAS) { SysBusDevice *mpc_sbd =3D SYS_BUS_DEVICE(&mms->mpc[p->mpc]); MemoryRegion *upstream =3D sysbus_mmio_get_region(mpc_sbd, 1); - make_ram_alias(&mms->ram[p->mrindex], p->name, upstream, p->ba= se); + make_ram_alias(OBJECT(mms), &mms->ram[p->mrindex], p->name, + upstream, p->base); } else if (p->mpc =3D=3D -1) { /* RAM not behind an MPC */ MemoryRegion *mr =3D mr_for_raminfo(mms, p); diff --git a/hw/arm/mps2.c b/hw/arm/mps2.c index 23a814e4e4..1dec4a5d4d 100644 --- a/hw/arm/mps2.c +++ b/hw/arm/mps2.c @@ -115,20 +115,20 @@ OBJECT_DECLARE_TYPE(MPS2MachineState, MPS2MachineClas= s, MPS2_MACHINE) /* Initialize the auxiliary RAM region @mr and map it into * the memory map at @base. */ -static void make_ram(MemoryRegion *mr, const char *name, +static void make_ram(Object *owner, MemoryRegion *mr, const char *name, hwaddr base, hwaddr size) { - memory_region_init_ram(mr, NULL, name, size, &error_fatal); + memory_region_init_ram(mr, owner, name, size, &error_fatal); memory_region_add_subregion(get_system_memory(), base, mr); } =20 /* Create an alias of an entire original MemoryRegion @orig * located at @base in the memory map. */ -static void make_ram_alias(MemoryRegion *mr, const char *name, +static void make_ram_alias(Object *owner, MemoryRegion *mr, const char *na= me, MemoryRegion *orig, hwaddr base) { - memory_region_init_alias(mr, NULL, name, orig, 0, + memory_region_init_alias(mr, owner, name, orig, 0, memory_region_size(orig)); memory_region_add_subregion(get_system_memory(), base, mr); } @@ -192,12 +192,12 @@ static void mps2_common_init(MachineState *machine) memory_region_add_subregion(system_memory, mmc->psram_base, machine->r= am); =20 if (mmc->has_block_ram) { - make_ram(&mms->blockram, "mps.blockram", 0x01000000, 0x4000); - make_ram_alias(&mms->blockram_m1, "mps.blockram_m1", + make_ram(obj, &mms->blockram, "mps.blockram", 0x01000000, 0x4000); + make_ram_alias(obj, &mms->blockram_m1, "mps.blockram_m1", &mms->blockram, 0x01004000); - make_ram_alias(&mms->blockram_m2, "mps.blockram_m2", + make_ram_alias(obj, &mms->blockram_m2, "mps.blockram_m2", &mms->blockram, 0x01008000); - make_ram_alias(&mms->blockram_m3, "mps.blockram_m3", + make_ram_alias(obj, &mms->blockram_m3, "mps.blockram_m3", &mms->blockram, 0x0100c000); } =20 @@ -205,17 +205,18 @@ static void mps2_common_init(MachineState *machine) case FPGA_AN385: case FPGA_AN386: case FPGA_AN500: - make_ram(&mms->ssram1, "mps.ssram1", 0x0, 0x400000); - make_ram_alias(&mms->ssram1_m, "mps.ssram1_m", &mms->ssram1, 0x400= 000); - make_ram(&mms->ssram23, "mps.ssram23", 0x20000000, 0x400000); - make_ram_alias(&mms->ssram23_m, "mps.ssram23_m", + make_ram(obj, &mms->ssram1, "mps.ssram1", 0x0, 0x400000); + make_ram_alias(obj, &mms->ssram1_m, "mps.ssram1_m", + &mms->ssram1, 0x400000); + make_ram(obj, &mms->ssram23, "mps.ssram23", 0x20000000, 0x400000); + make_ram_alias(obj, &mms->ssram23_m, "mps.ssram23_m", &mms->ssram23, 0x20400000); break; case FPGA_AN511: - make_ram(&mms->blockram, "mps.blockram", 0x0, 0x40000); - make_ram(&mms->ssram1, "mps.ssram1", 0x00400000, 0x00800000); - make_ram(&mms->sram, "mps.sram", 0x20000000, 0x20000); - make_ram(&mms->ssram23, "mps.ssram23", 0x20400000, 0x400000); + make_ram(obj, &mms->blockram, "mps.blockram", 0x0, 0x40000); + make_ram(obj, &mms->ssram1, "mps.ssram1", 0x00400000, 0x00800000); + make_ram(obj, &mms->sram, "mps.sram", 0x20000000, 0x20000); + make_ram(obj, &mms->ssram23, "mps.ssram23", 0x20400000, 0x400000); break; default: g_assert_not_reached(); diff --git a/hw/arm/mps3r.c b/hw/arm/mps3r.c index 4d432de6ba..d6c29c1172 100644 --- a/hw/arm/mps3r.c +++ b/hw/arm/mps3r.c @@ -215,7 +215,7 @@ static MemoryRegion *mr_for_raminfo(MPS3RMachineState *= mms, assert(raminfo->mrindex < MPS3R_RAM_MAX); ram =3D &mms->ram[raminfo->mrindex]; =20 - memory_region_init_ram(ram, NULL, raminfo->name, + memory_region_init_ram(ram, OBJECT(mms), raminfo->name, raminfo->size, &error_fatal); if (raminfo->flags & IS_ROM) { memory_region_set_readonly(ram, true); @@ -397,7 +397,7 @@ static void mps3r_common_init(MachineState *machine) object_unref(mms->cpu[i]); =20 /* Per-CPU RAM */ - memory_region_init_ram(&mms->cpu_ram[i], NULL, ramname, + memory_region_init_ram(&mms->cpu_ram[i], OBJECT(mms), ramname, 0x1000, &error_fatal); memory_region_add_subregion(&mms->cpu_sysmem[i], 0xe7c01000, &mms->cpu_ram[i]); diff --git a/hw/arm/msf2-soc.c b/hw/arm/msf2-soc.c index c03778c439..ce320a5a38 100644 --- a/hw/arm/msf2-soc.c +++ b/hw/arm/msf2-soc.c @@ -128,7 +128,7 @@ static void m2sxxx_soc_realize(DeviceState *dev_soc, Er= ror **errp) memory_region_add_subregion(system_memory, ENVM_BASE_ADDRESS, &s->nvm); memory_region_add_subregion(system_memory, 0, &s->nvm_alias); =20 - memory_region_init_ram(&s->sram, NULL, "MSF2.eSRAM", s->esram_size, + memory_region_init_ram(&s->sram, OBJECT(dev_soc), "MSF2.eSRAM", s->esr= am_size, &error_fatal); memory_region_add_subregion(system_memory, SRAM_BASE_ADDRESS, &s->sram= ); =20 diff --git a/hw/arm/msf2-som.c b/hw/arm/msf2-som.c index 0d0e2514dd..5493f1cf70 100644 --- a/hw/arm/msf2-som.c +++ b/hw/arm/msf2-som.c @@ -55,7 +55,7 @@ static void emcraft_sf2_s2s010_init(MachineState *machine) MemoryRegion *ddr =3D g_new(MemoryRegion, 1); Clock *m3clk; =20 - memory_region_init_ram(ddr, NULL, "ddr-ram", DDR_SIZE, + memory_region_init_ram(ddr, OBJECT(machine), "ddr-ram", DDR_SIZE, &error_fatal); memory_region_add_subregion(sysmem, DDR_BASE_ADDRESS, ddr); =20 diff --git a/hw/arm/musca.c b/hw/arm/musca.c index 75d82eebca..38eac4af76 100644 --- a/hw/arm/musca.c +++ b/hw/arm/musca.c @@ -235,12 +235,12 @@ static MemoryRegion *make_mpc(MuscaMachineState *mms,= void *opaque, switch (mpcinfo[i].type) { case MPC_ROM: downstream =3D &mms->ram[i]; - memory_region_init_rom(downstream, NULL, mpcinfo[i].name, + memory_region_init_rom(downstream, OBJECT(mms), mpcinfo[i].name, mpcinfo[i].size, &error_fatal); break; case MPC_RAM: downstream =3D &mms->ram[i]; - memory_region_init_ram(downstream, NULL, mpcinfo[i].name, + memory_region_init_ram(downstream, OBJECT(mms), mpcinfo[i].name, mpcinfo[i].size, &error_fatal); break; case MPC_CRYPTOISLAND: diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c index 86ea348d3d..fda42f71d5 100644 --- a/hw/arm/musicpal.c +++ b/hw/arm/musicpal.c @@ -1236,7 +1236,7 @@ static void musicpal_init(MachineState *machine) =20 memory_region_add_subregion(address_space_mem, 0, machine->ram); =20 - memory_region_init_ram(sram, NULL, "musicpal.sram", MP_SRAM_SIZE, + memory_region_init_ram(sram, OBJECT(machine), "musicpal.sram", MP_SRAM= _SIZE, &error_fatal); memory_region_add_subregion(address_space_mem, MP_SRAM_BASE, sram); =20 diff --git a/hw/arm/omap_sx1.c b/hw/arm/omap_sx1.c index 1bd6c6d4bc..f8d54c2716 100644 --- a/hw/arm/omap_sx1.c +++ b/hw/arm/omap_sx1.c @@ -128,22 +128,22 @@ static void sx1_init(MachineState *machine, const int= version) mpu =3D omap310_mpu_init(OBJECT(machine), machine->ram, machine->cpu_t= ype); =20 /* External Flash (EMIFS) */ - memory_region_init_rom(flash, NULL, "omap_sx1.flash0-0", flash_size, + memory_region_init_rom(flash, OBJECT(machine), "omap_sx1.flash0-0", fl= ash_size, &error_fatal); memory_region_add_subregion(address_space, OMAP_CS0_BASE, flash); =20 - memory_region_init_io(&cs[0], NULL, &static_ops, &cs0val, + memory_region_init_io(&cs[0], OBJECT(machine), &static_ops, &cs0val, "sx1.cs0", OMAP_CS0_SIZE - flash_size); memory_region_add_subregion(address_space, OMAP_CS0_BASE + flash_size, &cs[0]); =20 =20 - memory_region_init_io(&cs[2], NULL, &static_ops, &cs2val, + memory_region_init_io(&cs[2], OBJECT(machine), &static_ops, &cs2val, "sx1.cs2", OMAP_CS2_SIZE); memory_region_add_subregion(address_space, OMAP_CS2_BASE, &cs[2]); =20 - memory_region_init_io(&cs[3], NULL, &static_ops, &cs3val, + memory_region_init_io(&cs[3], OBJECT(machine), &static_ops, &cs3val, "sx1.cs3", OMAP_CS3_SIZE); memory_region_add_subregion(address_space, OMAP_CS3_BASE, &cs[3]); @@ -160,11 +160,11 @@ static void sx1_init(MachineState *machine, const int= version) if ((version =3D=3D 1) && (dinfo =3D drive_get(IF_PFLASH, 0, fl_idx)) !=3D NULL) { MemoryRegion *flash_1 =3D g_new(MemoryRegion, 1); - memory_region_init_rom(flash_1, NULL, "omap_sx1.flash1-0", + memory_region_init_rom(flash_1, OBJECT(machine), "omap_sx1.flash1-= 0", FLASH1_SIZE, &error_fatal); memory_region_add_subregion(address_space, OMAP_CS1_BASE, flash_1); =20 - memory_region_init_io(&cs[1], NULL, &static_ops, &cs1val, + memory_region_init_io(&cs[1], OBJECT(machine), &static_ops, &cs1va= l, "sx1.cs1", OMAP_CS1_SIZE - FLASH1_SIZE); memory_region_add_subregion(address_space, OMAP_CS1_BASE + FLASH1_SIZE, &cs[1]); @@ -175,7 +175,7 @@ static void sx1_init(MachineState *machine, const int v= ersion) SECTOR_SIZE, 4, 0, 0, 0, 0, 0); fl_idx++; } else { - memory_region_init_io(&cs[1], NULL, &static_ops, &cs1val, + memory_region_init_io(&cs[1], OBJECT(machine), &static_ops, &cs1va= l, "sx1.cs1", OMAP_CS1_SIZE); memory_region_add_subregion(address_space, OMAP_CS1_BASE, &cs[1]); diff --git a/hw/arm/realview.c b/hw/arm/realview.c index 2441137222..73bfffa6e6 100644 --- a/hw/arm/realview.c +++ b/hw/arm/realview.c @@ -159,18 +159,18 @@ static void realview_init(MachineState *machine, ram_lo =3D g_new(MemoryRegion, 1); low_ram_size =3D ram_size - 0x20000000; ram_size =3D 0x20000000; - memory_region_init_ram(ram_lo, NULL, "realview.lowmem", low_ram_si= ze, + memory_region_init_ram(ram_lo, OBJECT(machine), "realview.lowmem",= low_ram_size, &error_fatal); memory_region_add_subregion(sysmem, 0x20000000, ram_lo); } =20 - memory_region_init_ram(ram_hi, NULL, "realview.highmem", ram_size, + memory_region_init_ram(ram_hi, OBJECT(machine), "realview.highmem", ra= m_size, &error_fatal); low_ram_size =3D ram_size; if (low_ram_size > 0x10000000) low_ram_size =3D 0x10000000; /* SDRAM at address zero. */ - memory_region_init_alias(ram_alias, NULL, "realview.alias", + memory_region_init_alias(ram_alias, OBJECT(machine), "realview.alias", ram_hi, 0, low_ram_size); memory_region_add_subregion(sysmem, 0, ram_alias); if (is_pb) { @@ -396,7 +396,7 @@ static void realview_init(MachineState *machine, startup code. I guess this works on real hardware because the BootROM happens to be in ROM/flash or in memory that isn't clobbered until after Linux boots the secondary CPUs. */ - memory_region_init_ram(ram_hack, NULL, "realview.hack", 0x1000, + memory_region_init_ram(ram_hack, OBJECT(machine), "realview.hack", 0x1= 000, &error_fatal); memory_region_add_subregion(sysmem, SMP_BOOT_ADDR, ram_hack); =20 diff --git a/hw/arm/sbsa-ref.c b/hw/arm/sbsa-ref.c index bb35de1616..1df8efd207 100644 --- a/hw/arm/sbsa-ref.c +++ b/hw/arm/sbsa-ref.c @@ -410,7 +410,7 @@ static void create_secure_ram(SBSAMachineState *sms, hwaddr base =3D sbsa_ref_memmap[SBSA_SECURE_MEM].base; hwaddr size =3D sbsa_ref_memmap[SBSA_SECURE_MEM].size; =20 - memory_region_init_ram(secram, NULL, "sbsa-ref.secure-ram", size, + memory_region_init_ram(secram, OBJECT(sms), "sbsa-ref.secure-ram", siz= e, &error_fatal); memory_region_add_subregion(secure_sysmem, base, secram); } diff --git a/hw/arm/stellaris.c b/hw/arm/stellaris.c index 6a732a3c11..1bc428e063 100644 --- a/hw/arm/stellaris.c +++ b/hw/arm/stellaris.c @@ -1084,11 +1084,11 @@ static void stellaris_init(MachineState *ms, stella= ris_board_info *board) object_property_add_child(OBJECT(ms), "soc", soc_container); =20 /* Flash programming is done via the SCU, so pretend it is ROM. */ - memory_region_init_rom(flash, NULL, "stellaris.flash", flash_size, + memory_region_init_rom(flash, OBJECT(ms), "stellaris.flash", flash_siz= e, &error_fatal); memory_region_add_subregion(system_memory, 0, flash); =20 - memory_region_init_ram(sram, NULL, "stellaris.sram", sram_size, + memory_region_init_ram(sram, OBJECT(ms), "stellaris.sram", sram_size, &error_fatal); memory_region_add_subregion(system_memory, 0x20000000, sram); =20 diff --git a/hw/arm/stm32f100_soc.c b/hw/arm/stm32f100_soc.c index e9e722f359..d6d81c1338 100644 --- a/hw/arm/stm32f100_soc.c +++ b/hw/arm/stm32f100_soc.c @@ -108,7 +108,7 @@ static void stm32f100_soc_realize(DeviceState *dev_soc,= Error **errp) memory_region_add_subregion(system_memory, 0, &s->flash_alias); =20 /* Init SRAM region */ - memory_region_init_ram(&s->sram, NULL, "STM32F100.sram", SRAM_SIZE, + memory_region_init_ram(&s->sram, OBJECT(dev_soc), "STM32F100.sram", SR= AM_SIZE, &error_fatal); memory_region_add_subregion(system_memory, SRAM_BASE_ADDRESS, &s->sram= ); =20 diff --git a/hw/arm/stm32f205_soc.c b/hw/arm/stm32f205_soc.c index a03c6b4002..2997e7d777 100644 --- a/hw/arm/stm32f205_soc.c +++ b/hw/arm/stm32f205_soc.c @@ -121,7 +121,7 @@ static void stm32f205_soc_realize(DeviceState *dev_soc,= Error **errp) memory_region_add_subregion(system_memory, FLASH_BASE_ADDRESS, &s->fla= sh); memory_region_add_subregion(system_memory, 0, &s->flash_alias); =20 - memory_region_init_ram(&s->sram, NULL, "STM32F205.sram", SRAM_SIZE, + memory_region_init_ram(&s->sram, OBJECT(dev_soc), "STM32F205.sram", SR= AM_SIZE, &error_fatal); memory_region_add_subregion(system_memory, SRAM_BASE_ADDRESS, &s->sram= ); =20 diff --git a/hw/arm/stm32f405_soc.c b/hw/arm/stm32f405_soc.c index dc9b3053a5..4783f3f64a 100644 --- a/hw/arm/stm32f405_soc.c +++ b/hw/arm/stm32f405_soc.c @@ -134,7 +134,7 @@ static void stm32f405_soc_realize(DeviceState *dev_soc,= Error **errp) memory_region_add_subregion(system_memory, FLASH_BASE_ADDRESS, &s->fla= sh); memory_region_add_subregion(system_memory, 0, &s->flash_alias); =20 - memory_region_init_ram(&s->sram, NULL, "STM32F405.sram", SRAM_SIZE, + memory_region_init_ram(&s->sram, OBJECT(dev_soc), "STM32F405.sram", SR= AM_SIZE, &err); if (err !=3D NULL) { error_propagate(errp, err); @@ -142,7 +142,7 @@ static void stm32f405_soc_realize(DeviceState *dev_soc,= Error **errp) } memory_region_add_subregion(system_memory, SRAM_BASE_ADDRESS, &s->sram= ); =20 - memory_region_init_ram(&s->ccm, NULL, "STM32F405.ccm", CCM_SIZE, + memory_region_init_ram(&s->ccm, OBJECT(dev_soc), "STM32F405.ccm", CCM_= SIZE, &err); if (err !=3D NULL) { error_propagate(errp, err); diff --git a/hw/arm/vexpress.c b/hw/arm/vexpress.c index a643c6b079..f877ccf330 100644 --- a/hw/arm/vexpress.c +++ b/hw/arm/vexpress.c @@ -392,7 +392,7 @@ static void a15_daughterboard_init(VexpressMachineState= *vms, /* 0x2b060000: SP805 watchdog: not modelled */ /* 0x2b0a0000: PL341 dynamic memory controller: not modelled */ /* 0x2e000000: system SRAM */ - memory_region_init_ram(&vms->a15sram, NULL, "vexpress.a15sram", 0x1000= 0, + memory_region_init_ram(&vms->a15sram, OBJECT(vms), "vexpress.a15sram",= 0x10000, &error_fatal); memory_region_add_subregion(sysmem, 0x2e000000, &vms->a15sram); =20 @@ -677,7 +677,7 @@ static void vexpress_common_init(MachineState *machine) /* Map flash 0 as an alias into low memory */ MemoryRegion *flash0mem; flash0mem =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(pflash0), 0); - memory_region_init_alias(&vms->flashalias, NULL, "vexpress.flashal= ias", + memory_region_init_alias(&vms->flashalias, OBJECT(vms), "vexpress.= flashalias", flash0mem, 0, VEXPRESS_FLASH_SIZE); memory_region_add_subregion(sysmem, map[VE_NORFLASHALIAS], &vms->f= lashalias); } @@ -687,12 +687,12 @@ static void vexpress_common_init(MachineState *machin= e) "vexpress.flash1", dinfo); =20 sram_size =3D 0x2000000; - memory_region_init_ram(&vms->sram, NULL, "vexpress.sram", sram_size, + memory_region_init_ram(&vms->sram, OBJECT(vms), "vexpress.sram", sram_= size, &error_fatal); memory_region_add_subregion(sysmem, map[VE_SRAM], &vms->sram); =20 vram_size =3D 0x800000; - memory_region_init_ram(&vms->vram, NULL, "vexpress.vram", vram_size, + memory_region_init_ram(&vms->vram, OBJECT(vms), "vexpress.vram", vram_= size, &error_fatal); memory_region_add_subregion(sysmem, map[VE_VIDEORAM], &vms->vram); =20 diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 8bb20e692e..beb2d481ce 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -2308,13 +2308,13 @@ static void create_platform_bus(VirtMachineState *v= ms) sysbus_mmio_get_region(s, 0)); } =20 -static void create_tag_ram(MemoryRegion *tag_sysmem, +static void create_tag_ram(Object *owner, MemoryRegion *tag_sysmem, hwaddr base, hwaddr size, const char *name) { MemoryRegion *tagram =3D g_new(MemoryRegion, 1); =20 - memory_region_init_ram(tagram, NULL, name, size / 32, &error_fatal); + memory_region_init_ram(tagram, owner, name, size / 32, &error_fatal); memory_region_add_subregion(tag_sysmem, base / 32, tagram); } =20 @@ -2328,7 +2328,7 @@ static void create_secure_ram(VirtMachineState *vms, hwaddr size =3D vms->memmap[VIRT_SECURE_MEM].size; MachineState *ms =3D MACHINE(vms); =20 - memory_region_init_ram(secram, NULL, "virt.secure-ram", size, + memory_region_init_ram(secram, OBJECT(vms), "virt.secure-ram", size, &error_fatal); memory_region_add_subregion(secure_sysmem, base, secram); =20 @@ -2340,7 +2340,8 @@ static void create_secure_ram(VirtMachineState *vms, qemu_fdt_setprop_string(ms->fdt, nodename, "secure-status", "okay"); =20 if (secure_tag_sysmem) { - create_tag_ram(secure_tag_sysmem, base, size, "mach-virt.secure-ta= g"); + create_tag_ram(OBJECT(vms), secure_tag_sysmem, base, size, + "mach-virt.secure-tag"); } =20 g_free(nodename); @@ -2840,7 +2841,7 @@ static void virt_post_cpus_gic_realized(VirtMachineSt= ate *vms, exit(1); } =20 - memory_region_init_ram(pvtime, NULL, "pvtime", pvtime_size, NU= LL); + memory_region_init_ram(pvtime, OBJECT(vms), "pvtime", pvtime_s= ize, NULL); memory_region_add_subregion(sysmem, pvtime_reg_base, pvtime); } if (!aarch64 && vms->virt) { @@ -3200,7 +3201,7 @@ static void machvirt_init(MachineState *machine) } =20 if (tag_sysmem) { - create_tag_ram(tag_sysmem, vms->memmap[VIRT_MEM].base, + create_tag_ram(OBJECT(vms), tag_sysmem, vms->memmap[VIRT_MEM].base, machine->ram_size, "mach-virt.tag"); } =20 diff --git a/hw/arm/xilinx_zynq.c b/hw/arm/xilinx_zynq.c index 30f0ce5b5f..441289e63f 100644 --- a/hw/arm/xilinx_zynq.c +++ b/hw/arm/xilinx_zynq.c @@ -238,7 +238,7 @@ static void zynq_init(MachineState *machine) memory_region_add_subregion(address_space_mem, 0, machine->ram); =20 /* 256K of on-chip memory */ - memory_region_init_ram(ocm_ram, NULL, "zynq.ocm_ram", 256 * KiB, + memory_region_init_ram(ocm_ram, OBJECT(machine), "zynq.ocm_ram", 256 *= KiB, &error_fatal); memory_region_add_subregion(address_space_mem, 0xFFFC0000, ocm_ram); =20 diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c index e4a10861a8..a25d5d3158 100644 --- a/hw/arm/xlnx-zynqmp.c +++ b/hw/arm/xlnx-zynqmp.c @@ -510,7 +510,7 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error= **errp) for (i =3D 0; i < XLNX_ZYNQMP_NUM_OCM_BANKS; i++) { char *ocm_name =3D g_strdup_printf("zynqmp.ocm_ram_bank_%d", i); =20 - memory_region_init_ram(&s->ocm_ram[i], NULL, ocm_name, + memory_region_init_ram(&s->ocm_ram[i], OBJECT(dev), ocm_name, XLNX_ZYNQMP_OCM_RAM_SIZE, &error_fatal); memory_region_add_subregion(get_system_memory(), XLNX_ZYNQMP_OCM_RAM_0_ADDRESS + --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412253; cv=none; d=zohomail.com; s=zohoarc; b=C2ASDwFeoqrHzpoz4J98vpdESeJUzcsrsxqmg1Si4aYQ+0zFdUH7TsQVV6rsm4Hy0WQ9CqcaTYA5dD4mrfq7gIHUWf0dW8oUYTxoYBvWJZTdmafe+Cmt3eH0AhFrC5j/qKh3299Q/dMd/6mD043LTA9yM+ZBAqDO0WhcuOeVfWs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412253; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ajwdLkeuNi8/PpudbHJqNzzmsBm2ieK8uas1me9LcLY=; b=b6iY227NKk/b7THm9tmbgerY5qSpmKh1v/CPHiftTUNn26QmHszjnzNirj8NUbz5qoaPHWAfkFj0y6Chi6zCxnTFOonDoln2j7aIpdJCcZ0oRwP7avjFUPjnYj0VsLjNM9AuQmq2Vxwu9PxjuKYScFCUGuhWKt44Uf5meGz2JhE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412253115451.6731148031862; Sat, 18 Jul 2026 15:04:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlD8k-0005mZ-77; Sat, 18 Jul 2026 18:04:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD8e-0005YK-Tg; Sat, 18 Jul 2026 18:04:06 -0400 Received: from pdx-out-003.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.246.68.102]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD8b-0005RH-U1; Sat, 18 Jul 2026 18:04:04 -0400 Received: from ip-10-5-6-203.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.6.203]) by internal-pdx-out-003.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:03:58 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.182:30231] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.19.34:2525] with esmtp (Farcaster) id a4c6e09e-883d-401b-b9f7-a6c0a1a914b2; Sat, 18 Jul 2026 22:03:58 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA001.ant.amazon.com (10.250.64.218) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:03:57 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:03:48 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412241; x=1815948241; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ajwdLkeuNi8/PpudbHJqNzzmsBm2ieK8uas1me9LcLY=; b=Shh7x6QyVTJVC8awZTHY0lpppW6LjJXJFO0ScBpcVIug/0b+A/a7mZD6 Hwx5/QA9mTc+0VUPMZG5RhCGgB5MmkoKQ38cbjroGg9/OY9/DRyDgMo95 ooZQGm6kjiIaZyPXrVVO5G+KoLQ9TKkcP1oEQixKgnHZede88amNio/bQ aB4ks90SPN1iQBfJDXmzWaBcAZz8ao2u6jl5rtuo+TsOsGuh2sOGN2wPW rWINdf5drdeL37MJ93pQM7B5+axS5WKNmdo/BHYC7VH7Mf5BU4+AFeo3X 7cI3M4G4ELFiqFi44hvoJkgQqdXu21JRR7VXtSjX5lb3trx7n328g5q1N A==; X-CSE-ConnectionGUID: 9jrHVmm6TjWHnKJf/bv4/w== X-CSE-MsgGUID: qN9VyImRQfG2CtPRBIsVcg== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23942288" X-Farcaster-Flow-ID: a4c6e09e-883d-401b-b9f7-a6c0a1a914b2 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 096/137] hw/arm/omap1: Give memory regions an explicit owner Date: Sat, 18 Jul 2026 21:36:11 +0000 Message-ID: <20260718213652.37673-97-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D036UWB001.ant.amazon.com (10.13.139.133) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.246.68.102; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-003.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412254682158500 Content-Type: text/plain; charset="utf-8" omap1.c models the TI OMAP310 MPU with ~20 pre-QOM sub-block init helpers (omap_mpu_timer_init, omap_ulpd_pm_init, omap_pin_cfg_init, omap_id_init, omap_mpui_init, omap_tipb_bridge_init, omap_tcmi_init, omap_dpll_init, omap_clkm_init, omap_mpuio_init, omap_uwire_init, omap_pwl_init, omap_pwt_init, omap_rtc_init, omap_mcbsp_init, omap_lpg_init, omap_setup_mpui_io, omap_setup_dsp_mapping, ...) that each create MemoryRegions with owner=3D=3DNULL. Thread an Object *owner first argument through every sub-block init helper. All are static and called only from omap310_mpu_init(), which already carries an Object *parent from the earlier device conversion; pass it through. No functional change intended. RAMBlock idstrs are unchanged: the owners added here are Machine or SysBus devices, and memory_region_register_ram() maps both to dev=3DNULL for qemu_ram_set_idstr(). AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/arm/omap1.c | 175 ++++++++++++++++++++++++++----------------------- 1 file changed, 94 insertions(+), 81 deletions(-) diff --git a/hw/arm/omap1.c b/hw/arm/omap1.c index e5e092e074..be6af35e26 100644 --- a/hw/arm/omap1.c +++ b/hw/arm/omap1.c @@ -221,8 +221,8 @@ static void omap_mpu_timer_reset(struct omap_mpu_timer_= s *s) s->it_ena =3D 1; } =20 -static struct omap_mpu_timer_s *omap_mpu_timer_init(MemoryRegion *system_m= emory, - hwaddr base, +static struct omap_mpu_timer_s *omap_mpu_timer_init(Object *owner, + MemoryRegion *system_memory, hwaddr base, qemu_irq irq, omap_clk clk) { struct omap_mpu_timer_s *s =3D g_new0(struct omap_mpu_timer_s, 1); @@ -234,7 +234,7 @@ static struct omap_mpu_timer_s *omap_mpu_timer_init(Mem= oryRegion *system_memory, omap_mpu_timer_reset(s); omap_timer_clk_setup(s); =20 - memory_region_init_io(&s->iomem, NULL, &omap_mpu_timer_ops, s, + memory_region_init_io(&s->iomem, owner, &omap_mpu_timer_ops, s, "omap-mpu-timer", 0x100); =20 memory_region_add_subregion(system_memory, base, &s->iomem); @@ -353,8 +353,8 @@ static void omap_wd_timer_reset(struct omap_watchdog_ti= mer_s *s) omap_timer_update(&s->timer); } =20 -static struct omap_watchdog_timer_s *omap_wd_timer_init(MemoryRegion *memo= ry, - hwaddr base, +static struct omap_watchdog_timer_s *omap_wd_timer_init(Object *owner, + MemoryRegion *memory, hwaddr base, qemu_irq irq, omap_clk clk) { struct omap_watchdog_timer_s *s =3D g_new0(struct omap_watchdog_timer_= s, 1); @@ -365,7 +365,7 @@ static struct omap_watchdog_timer_s *omap_wd_timer_init= (MemoryRegion *memory, omap_wd_timer_reset(s); omap_timer_clk_setup(&s->timer); =20 - memory_region_init_io(&s->iomem, NULL, &omap_wd_timer_ops, s, + memory_region_init_io(&s->iomem, owner, &omap_wd_timer_ops, s, "omap-wd-timer", 0x100); memory_region_add_subregion(memory, base, &s->iomem); =20 @@ -462,8 +462,8 @@ static void omap_os_timer_reset(struct omap_32khz_timer= _s *s) s->timer.ar =3D 1; } =20 -static struct omap_32khz_timer_s *omap_os_timer_init(MemoryRegion *memory, - hwaddr base, +static struct omap_32khz_timer_s *omap_os_timer_init(Object *owner, + MemoryRegion *memory, hwaddr base, qemu_irq irq, omap_clk clk) { struct omap_32khz_timer_s *s =3D g_new0(struct omap_32khz_timer_s, 1); @@ -474,7 +474,7 @@ static struct omap_32khz_timer_s *omap_os_timer_init(Me= moryRegion *memory, omap_os_timer_reset(s); omap_timer_clk_setup(&s->timer); =20 - memory_region_init_io(&s->iomem, NULL, &omap_os_timer_ops, s, + memory_region_init_io(&s->iomem, owner, &omap_os_timer_ops, s, "omap-os-timer", 0x800); memory_region_add_subregion(memory, base, &s->iomem); =20 @@ -707,11 +707,11 @@ static void omap_ulpd_pm_reset(struct omap_mpu_state_= s *mpu) omap_clk_reparent(omap_findclk(mpu, "ck_48m"), omap_findclk(mpu, "dpll= 4")); } =20 -static void omap_ulpd_pm_init(MemoryRegion *system_memory, - hwaddr base, +static void omap_ulpd_pm_init(Object *owner, + MemoryRegion *system_memory, hwaddr base, struct omap_mpu_state_s *mpu) { - memory_region_init_io(&mpu->ulpd_pm_iomem, NULL, &omap_ulpd_pm_ops, mp= u, + memory_region_init_io(&mpu->ulpd_pm_iomem, owner, &omap_ulpd_pm_ops, m= pu, "omap-ulpd-pm", 0x800); memory_region_add_subregion(system_memory, base, &mpu->ulpd_pm_iomem); omap_ulpd_pm_reset(mpu); @@ -933,11 +933,11 @@ static void omap_pin_cfg_reset(struct omap_mpu_state_= s *mpu) memset(mpu->mod_conf_ctrl, 0, sizeof(mpu->mod_conf_ctrl)); } =20 -static void omap_pin_cfg_init(MemoryRegion *system_memory, - hwaddr base, +static void omap_pin_cfg_init(Object *owner, + MemoryRegion *system_memory, hwaddr base, struct omap_mpu_state_s *mpu) { - memory_region_init_io(&mpu->pin_cfg_iomem, NULL, &omap_pin_cfg_ops, mp= u, + memory_region_init_io(&mpu->pin_cfg_iomem, owner, &omap_pin_cfg_ops, m= pu, "omap-pin-cfg", 0x800); memory_region_add_subregion(system_memory, base, &mpu->pin_cfg_iomem); omap_pin_cfg_reset(mpu); @@ -994,15 +994,16 @@ static const MemoryRegionOps omap_id_ops =3D { .endianness =3D DEVICE_NATIVE_ENDIAN, }; =20 -static void omap_id_init(MemoryRegion *memory, struct omap_mpu_state_s *mp= u) +static void omap_id_init(Object *owner, MemoryRegion *memory, + struct omap_mpu_state_s *mpu) { - memory_region_init_io(&mpu->id_iomem, NULL, &omap_id_ops, mpu, + memory_region_init_io(&mpu->id_iomem, owner, &omap_id_ops, mpu, "omap-id", 0x100000000ULL); - memory_region_init_alias(&mpu->id_iomem_e18, NULL, "omap-id-e18", &mpu= ->id_iomem, - 0xfffe1800, 0x800); + memory_region_init_alias(&mpu->id_iomem_e18, owner, "omap-id-e18", + &mpu->id_iomem, 0xfffe1800, 0x800); memory_region_add_subregion(memory, 0xfffe1800, &mpu->id_iomem_e18); - memory_region_init_alias(&mpu->id_iomem_ed4, NULL, "omap-id-ed4", &mpu= ->id_iomem, - 0xfffed400, 0x100); + memory_region_init_alias(&mpu->id_iomem_ed4, owner, "omap-id-ed4", + &mpu->id_iomem, 0xfffed400, 0x100); memory_region_add_subregion(memory, 0xfffed400, &mpu->id_iomem_ed4); } =20 @@ -1086,10 +1087,10 @@ static void omap_mpui_reset(struct omap_mpu_state_s= *s) s->mpui_ctrl =3D 0x0003ff1b; } =20 -static void omap_mpui_init(MemoryRegion *memory, hwaddr base, +static void omap_mpui_init(Object *owner, MemoryRegion *memory, hwaddr bas= e, struct omap_mpu_state_s *mpu) { - memory_region_init_io(&mpu->mpui_iomem, NULL, &omap_mpui_ops, mpu, + memory_region_init_io(&mpu->mpui_iomem, owner, &omap_mpui_ops, mpu, "omap-mpui", 0x100); memory_region_add_subregion(memory, base, &mpu->mpui_iomem); =20 @@ -1195,7 +1196,7 @@ static void omap_tipb_bridge_reset(struct omap_tipb_b= ridge_s *s) s->enh_control =3D 0x000f; } =20 -static struct omap_tipb_bridge_s *omap_tipb_bridge_init( +static struct omap_tipb_bridge_s *omap_tipb_bridge_init(Object *owner, MemoryRegion *memory, hwaddr base, qemu_irq abort_irq, omap_clk clk) { @@ -1204,7 +1205,7 @@ static struct omap_tipb_bridge_s *omap_tipb_bridge_in= it( s->abort =3D abort_irq; omap_tipb_bridge_reset(s); =20 - memory_region_init_io(&s->iomem, NULL, &omap_tipb_bridge_ops, s, + memory_region_init_io(&s->iomem, owner, &omap_tipb_bridge_ops, s, "omap-tipb-bridge", 0x100); memory_region_add_subregion(memory, base, &s->iomem); =20 @@ -1314,10 +1315,10 @@ static void omap_tcmi_reset(struct omap_mpu_state_s= *mpu) mpu->tcmi_regs[0x40 >> 2] =3D 0x00000000; } =20 -static void omap_tcmi_init(MemoryRegion *memory, hwaddr base, +static void omap_tcmi_init(Object *owner, MemoryRegion *memory, hwaddr bas= e, struct omap_mpu_state_s *mpu) { - memory_region_init_io(&mpu->tcmi_iomem, NULL, &omap_tcmi_ops, mpu, + memory_region_init_io(&mpu->tcmi_iomem, owner, &omap_tcmi_ops, mpu, "omap-tcmi", 0x100); memory_region_add_subregion(memory, base, &mpu->tcmi_iomem); omap_tcmi_reset(mpu); @@ -1399,11 +1400,12 @@ static void omap_dpll_reset(struct dpll_ctl_s *s) omap_clk_setrate(s->dpll, 1, 1); } =20 -static struct dpll_ctl_s *omap_dpll_init(MemoryRegion *memory, +static struct dpll_ctl_s *omap_dpll_init(Object *owner, MemoryRegion *mem= ory, hwaddr base, omap_clk clk) { struct dpll_ctl_s *s =3D g_malloc0(sizeof(*s)); - memory_region_init_io(&s->iomem, NULL, &omap_dpll_ops, s, "omap-dpll",= 0x100); + memory_region_init_io(&s->iomem, owner, &omap_dpll_ops, s, + "omap-dpll", 0x100); =20 s->dpll =3D clk; omap_dpll_reset(s); @@ -1822,12 +1824,13 @@ static void omap_clkm_reset(struct omap_mpu_state_s= *s) s->clkm.dsp_rstct2 =3D 0x0000; } =20 -static void omap_clkm_init(MemoryRegion *memory, hwaddr mpu_base, - hwaddr dsp_base, struct omap_mpu_state_s *s) +static void omap_clkm_init(Object *owner, MemoryRegion *memory, + hwaddr mpu_base, hwaddr dsp_base, + struct omap_mpu_state_s *s) { - memory_region_init_io(&s->clkm_iomem, NULL, &omap_clkm_ops, s, + memory_region_init_io(&s->clkm_iomem, owner, &omap_clkm_ops, s, "omap-clkm", 0x100); - memory_region_init_io(&s->clkdsp_iomem, NULL, &omap_clkdsp_ops, s, + memory_region_init_io(&s->clkdsp_iomem, owner, &omap_clkdsp_ops, s, "omap-clkdsp", 0x1000); =20 s->clkm.arm_idlect1 =3D 0x03ff; @@ -2071,8 +2074,8 @@ static void omap_mpuio_onoff(void *opaque, int line, = int on) omap_mpuio_kbd_update(s); } =20 -static struct omap_mpuio_s *omap_mpuio_init(MemoryRegion *memory, - hwaddr base, +static struct omap_mpuio_s *omap_mpuio_init(Object *owner, + MemoryRegion *memory, hwaddr base, qemu_irq kbd_int, qemu_irq gpio_int, omap_clk clk) { @@ -2083,7 +2086,7 @@ static struct omap_mpuio_s *omap_mpuio_init(MemoryReg= ion *memory, s->in =3D qemu_allocate_irqs(omap_mpuio_set, s, 16); omap_mpuio_reset(s); =20 - memory_region_init_io(&s->iomem, NULL, &omap_mpuio_ops, s, + memory_region_init_io(&s->iomem, owner, &omap_mpuio_ops, s, "omap-mpuio", 0x800); memory_region_add_subregion(memory, base, &s->iomem); =20 @@ -2236,7 +2239,8 @@ static void omap_uwire_reset(struct omap_uwire_s *s) s->setup[4] =3D 0; } =20 -static struct omap_uwire_s *omap_uwire_init(MemoryRegion *system_memory, +static struct omap_uwire_s *omap_uwire_init(Object *owner, + MemoryRegion *system_memory, hwaddr base, qemu_irq txirq, qemu_irq rxirq, qemu_irq dma, @@ -2249,7 +2253,8 @@ static struct omap_uwire_s *omap_uwire_init(MemoryReg= ion *system_memory, s->txdrq =3D dma; omap_uwire_reset(s); =20 - memory_region_init_io(&s->iomem, NULL, &omap_uwire_ops, s, "omap-uwire= ", 0x800); + memory_region_init_io(&s->iomem, owner, &omap_uwire_ops, s, + "omap-uwire", 0x800); memory_region_add_subregion(system_memory, base, &s->iomem); =20 return s; @@ -2345,7 +2350,8 @@ static void omap_pwl_clk_update(void *opaque, int lin= e, int on) omap_pwl_update(s); } =20 -static struct omap_pwl_s *omap_pwl_init(MemoryRegion *system_memory, +static struct omap_pwl_s *omap_pwl_init(Object *owner, + MemoryRegion *system_memory, hwaddr base, omap_clk clk) { @@ -2353,7 +2359,7 @@ static struct omap_pwl_s *omap_pwl_init(MemoryRegion = *system_memory, =20 omap_pwl_reset(s); =20 - memory_region_init_io(&s->iomem, NULL, &omap_pwl_ops, s, + memory_region_init_io(&s->iomem, owner, &omap_pwl_ops, s, "omap-pwl", 0x800); memory_region_add_subregion(system_memory, base, &s->iomem); =20 @@ -2456,7 +2462,8 @@ static void omap_pwt_reset(struct omap_pwt_s *s) s->gcr =3D 0; } =20 -static struct omap_pwt_s *omap_pwt_init(MemoryRegion *system_memory, +static struct omap_pwt_s *omap_pwt_init(Object *owner, + MemoryRegion *system_memory, hwaddr base, omap_clk clk) { @@ -2464,7 +2471,7 @@ static struct omap_pwt_s *omap_pwt_init(MemoryRegion = *system_memory, s->clk =3D clk; omap_pwt_reset(s); =20 - memory_region_init_io(&s->iomem, NULL, &omap_pwt_ops, s, + memory_region_init_io(&s->iomem, owner, &omap_pwt_ops, s, "omap-pwt", 0x800); memory_region_add_subregion(system_memory, base, &s->iomem); return s; @@ -2822,7 +2829,8 @@ static void omap_rtc_reset(struct omap_rtc_s *s) omap_rtc_tick(s); } =20 -static struct omap_rtc_s *omap_rtc_init(MemoryRegion *system_memory, +static struct omap_rtc_s *omap_rtc_init(Object *owner, + MemoryRegion *system_memory, hwaddr base, qemu_irq timerirq, qemu_irq alarmi= rq, omap_clk clk) @@ -2835,7 +2843,7 @@ static struct omap_rtc_s *omap_rtc_init(MemoryRegion = *system_memory, =20 omap_rtc_reset(s); =20 - memory_region_init_io(&s->iomem, NULL, &omap_rtc_ops, s, + memory_region_init_io(&s->iomem, owner, &omap_rtc_ops, s, "omap-rtc", 0x800); memory_region_add_subregion(system_memory, base, &s->iomem); =20 @@ -3372,7 +3380,8 @@ static void omap_mcbsp_reset(struct omap_mcbsp_s *s) timer_del(s->sink_timer); } =20 -static struct omap_mcbsp_s *omap_mcbsp_init(MemoryRegion *system_memory, +static struct omap_mcbsp_s *omap_mcbsp_init(Object *owner, + MemoryRegion *system_memory, hwaddr base, qemu_irq txirq, qemu_irq rxirq, qemu_irq *dma, omap_clk clk) @@ -3387,7 +3396,8 @@ static struct omap_mcbsp_s *omap_mcbsp_init(MemoryReg= ion *system_memory, s->source_timer =3D timer_new_ns(QEMU_CLOCK_VIRTUAL, omap_mcbsp_source= _tick, s); omap_mcbsp_reset(s); =20 - memory_region_init_io(&s->iomem, NULL, &omap_mcbsp_ops, s, "omap-mcbsp= ", 0x800); + memory_region_init_io(&s->iomem, owner, &omap_mcbsp_ops, s, + "omap-mcbsp", 0x800); memory_region_add_subregion(system_memory, base, &s->iomem); =20 return s; @@ -3555,7 +3565,8 @@ static void omap_lpg_clk_update(void *opaque, int lin= e, int on) omap_lpg_update(s); } =20 -static struct omap_lpg_s *omap_lpg_init(MemoryRegion *system_memory, +static struct omap_lpg_s *omap_lpg_init(Object *owner, + MemoryRegion *system_memory, hwaddr base, omap_clk clk) { struct omap_lpg_s *s =3D g_new0(struct omap_lpg_s, 1); @@ -3564,7 +3575,8 @@ static struct omap_lpg_s *omap_lpg_init(MemoryRegion = *system_memory, =20 omap_lpg_reset(s); =20 - memory_region_init_io(&s->iomem, NULL, &omap_lpg_ops, s, "omap-lpg", 0= x800); + memory_region_init_io(&s->iomem, owner, &omap_lpg_ops, s, + "omap-lpg", 0x800); memory_region_add_subregion(system_memory, base, &s->iomem); =20 omap_clk_adduser(clk, qemu_allocate_irq(omap_lpg_clk_update, s, 0)); @@ -3602,10 +3614,10 @@ static const MemoryRegionOps omap_mpui_io_ops =3D { .endianness =3D DEVICE_NATIVE_ENDIAN, }; =20 -static void omap_setup_mpui_io(MemoryRegion *system_memory, +static void omap_setup_mpui_io(Object *owner, MemoryRegion *system_memory, struct omap_mpu_state_s *mpu) { - memory_region_init_io(&mpu->mpui_io_iomem, NULL, &omap_mpui_io_ops, mp= u, + memory_region_init_io(&mpu->mpui_io_iomem, owner, &omap_mpui_io_ops, m= pu, "omap-mpui-io", 0x7fff); memory_region_add_subregion(system_memory, OMAP_MPUI_BASE, &mpu->mpui_io_iomem); @@ -3678,14 +3690,15 @@ static const struct omap_map_s { { 0 } }; =20 -static void omap_setup_dsp_mapping(MemoryRegion *system_memory, +static void omap_setup_dsp_mapping(Object *owner, + MemoryRegion *system_memory, const struct omap_map_s *map) { MemoryRegion *io; =20 for (; map->phys_dsp; map ++) { io =3D g_new(MemoryRegion, 1); - memory_region_init_alias(io, NULL, map->name, + memory_region_init_alias(io, owner, map->name, system_memory, map->phys_mpu, map->size); memory_region_add_subregion(system_memory, map->phys_dsp, io); } @@ -3757,11 +3770,11 @@ struct omap_mpu_state_s *omap310_mpu_init(Object *p= arent, MemoryRegion *dram, omap_clk_init(s); =20 /* Memory-mapped stuff */ - memory_region_init_ram(&s->imif_ram, NULL, "omap1.sram", s->sram_size, + memory_region_init_ram(&s->imif_ram, parent, "omap1.sram", s->sram_siz= e, &error_fatal); memory_region_add_subregion(system_memory, OMAP_IMIF_BASE, &s->imif_ra= m); =20 - omap_clkm_init(system_memory, 0xfffece00, 0xe1008000, s); + omap_clkm_init(parent, system_memory, 0xfffece00, 0xe1008000, s); =20 s->ih[0] =3D qdev_new(parent, "intc[0]", "omap-intc"); qdev_prop_set_uint32(s->ih[0], "size", 0x100); @@ -3804,21 +3817,21 @@ struct omap_mpu_state_s *omap310_mpu_init(Object *p= arent, MemoryRegion *dram, soc_dma_port_add_mem(s->dma, memory_region_get_ram_ptr(&s->imif_ram), OMAP_IMIF_BASE, s->sram_size); =20 - s->timer[0] =3D omap_mpu_timer_init(system_memory, 0xfffec500, + s->timer[0] =3D omap_mpu_timer_init(parent, system_memory, 0xfffec500, qdev_get_gpio_in(s->ih[0], OMAP_INT_TIMER1), omap_findclk(s, "mputim_ck")); - s->timer[1] =3D omap_mpu_timer_init(system_memory, 0xfffec600, + s->timer[1] =3D omap_mpu_timer_init(parent, system_memory, 0xfffec600, qdev_get_gpio_in(s->ih[0], OMAP_INT_TIMER2), omap_findclk(s, "mputim_ck")); - s->timer[2] =3D omap_mpu_timer_init(system_memory, 0xfffec700, + s->timer[2] =3D omap_mpu_timer_init(parent, system_memory, 0xfffec700, qdev_get_gpio_in(s->ih[0], OMAP_INT_TIMER3), omap_findclk(s, "mputim_ck")); =20 - s->wdt =3D omap_wd_timer_init(system_memory, 0xfffec800, + s->wdt =3D omap_wd_timer_init(parent, system_memory, 0xfffec800, qdev_get_gpio_in(s->ih[0], OMAP_INT_WD_TIMER), omap_findclk(s, "armwdt_ck")); =20 - s->os_timer =3D omap_os_timer_init(system_memory, 0xfffb9000, + s->os_timer =3D omap_os_timer_init(parent, system_memory, 0xfffb9000, qdev_get_gpio_in(s->ih[1], OMAP_INT_OS_TIMER), omap_findclk(s, "clk32-kHz")); =20 @@ -3827,20 +3840,20 @@ struct omap_mpu_state_s *omap310_mpu_init(Object *p= arent, MemoryRegion *dram, omap_dma_get_lcdch(s->dma), omap_findclk(s, "lcd_ck")); =20 - omap_ulpd_pm_init(system_memory, 0xfffe0800, s); - omap_pin_cfg_init(system_memory, 0xfffe1000, s); - omap_id_init(system_memory, s); + omap_ulpd_pm_init(parent, system_memory, 0xfffe0800, s); + omap_pin_cfg_init(parent, system_memory, 0xfffe1000, s); + omap_id_init(parent, system_memory, s); =20 - omap_mpui_init(system_memory, 0xfffec900, s); + omap_mpui_init(parent, system_memory, 0xfffec900, s); =20 - s->private_tipb =3D omap_tipb_bridge_init(system_memory, 0xfffeca00, + s->private_tipb =3D omap_tipb_bridge_init(parent, system_memory, 0xfff= eca00, qdev_get_gpio_in(s->ih[0], OMAP_INT_BRIDGE_PRIV), omap_findclk(s, "tipb_ck")); - s->public_tipb =3D omap_tipb_bridge_init(system_memory, 0xfffed300, + s->public_tipb =3D omap_tipb_bridge_init(parent, system_memory, 0xfffe= d300, qdev_get_gpio_in(s->ih[0], OMAP_INT_BRIDGE_PUB), omap_findclk(s, "tipb_ck")); =20 - omap_tcmi_init(system_memory, 0xfffecc00, s); + omap_tcmi_init(parent, system_memory, 0xfffecc00, s); =20 s->uart[0] =3D omap_uart_init(parent, 0xfffb0000, qdev_get_gpio_in(s->ih[1], OMAP_INT_UART1), @@ -3864,11 +3877,11 @@ struct omap_mpu_state_s *omap310_mpu_init(Object *p= arent, MemoryRegion *dram, "uart3", serial_hd(0) && serial_hd(1) ? serial_hd(2) : NULL); =20 - s->dpll[0] =3D omap_dpll_init(system_memory, 0xfffecf00, + s->dpll[0] =3D omap_dpll_init(parent, system_memory, 0xfffecf00, omap_findclk(s, "dpll1")); - s->dpll[1] =3D omap_dpll_init(system_memory, 0xfffed000, + s->dpll[1] =3D omap_dpll_init(parent, system_memory, 0xfffed000, omap_findclk(s, "dpll2")); - s->dpll[2] =3D omap_dpll_init(system_memory, 0xfffed100, + s->dpll[2] =3D omap_dpll_init(parent, system_memory, 0xfffed100, omap_findclk(s, "dpll3")); =20 dinfo =3D drive_get(IF_SD, 0, 0); @@ -3895,7 +3908,7 @@ struct omap_mpu_state_s *omap310_mpu_init(Object *par= ent, MemoryRegion *dram, &error_fatal); } =20 - s->mpuio =3D omap_mpuio_init(system_memory, 0xfffb5000, + s->mpuio =3D omap_mpuio_init(parent, system_memory, 0xfffb5000, qdev_get_gpio_in(s->ih[1], OMAP_INT_KEYBOAR= D), qdev_get_gpio_in(s->ih[1], OMAP_INT_MPUIO), omap_findclk(s, "clk32-kHz")); @@ -3907,14 +3920,14 @@ struct omap_mpu_state_s *omap310_mpu_init(Object *p= arent, MemoryRegion *dram, qdev_get_gpio_in(s->ih[0], OMAP_INT_GPIO_BANK1)); sysbus_mmio_map(SYS_BUS_DEVICE(s->gpio), 0, 0xfffce000); =20 - s->microwire =3D omap_uwire_init(system_memory, 0xfffb3000, + s->microwire =3D omap_uwire_init(parent, system_memory, 0xfffb3000, qdev_get_gpio_in(s->ih[1], OMAP_INT_uWi= reTX), qdev_get_gpio_in(s->ih[1], OMAP_INT_uWi= reRX), s->drq[OMAP_DMA_UWIRE_TX], omap_findclk(s, "mpuper_ck"= )); =20 - s->pwl =3D omap_pwl_init(system_memory, 0xfffb5800, + s->pwl =3D omap_pwl_init(parent, system_memory, 0xfffb5800, omap_findclk(s, "armxor_ck")); - s->pwt =3D omap_pwt_init(system_memory, 0xfffb6000, + s->pwt =3D omap_pwt_init(parent, system_memory, 0xfffb6000, omap_findclk(s, "armxor_ck")); =20 s->i2c[0] =3D qdev_new(parent, "i2c", "omap_i2c"); @@ -3927,29 +3940,29 @@ struct omap_mpu_state_s *omap310_mpu_init(Object *p= arent, MemoryRegion *dram, sysbus_connect_irq(busdev, 2, s->drq[OMAP_DMA_I2C_RX]); sysbus_mmio_map(busdev, 0, 0xfffb3800); =20 - s->rtc =3D omap_rtc_init(system_memory, 0xfffb4800, + s->rtc =3D omap_rtc_init(parent, system_memory, 0xfffb4800, qdev_get_gpio_in(s->ih[1], OMAP_INT_RTC_TIMER), qdev_get_gpio_in(s->ih[1], OMAP_INT_RTC_ALARM), omap_findclk(s, "clk32-kHz")); =20 - s->mcbsp1 =3D omap_mcbsp_init(system_memory, 0xfffb1800, + s->mcbsp1 =3D omap_mcbsp_init(parent, system_memory, 0xfffb1800, qdev_get_gpio_in(s->ih[1], OMAP_INT_McBSP1= TX), qdev_get_gpio_in(s->ih[1], OMAP_INT_McBSP1= RX), &s->drq[OMAP_DMA_MCBSP1_TX], omap_findclk(s, "dspxor_c= k")); - s->mcbsp2 =3D omap_mcbsp_init(system_memory, 0xfffb1000, + s->mcbsp2 =3D omap_mcbsp_init(parent, system_memory, 0xfffb1000, qdev_get_gpio_in(s->ih[0], OMAP_INT_310_McBSP2_TX), qdev_get_gpio_in(s->ih[0], OMAP_INT_310_McBSP2_RX), &s->drq[OMAP_DMA_MCBSP2_TX], omap_findclk(s, "mpuper_c= k")); - s->mcbsp3 =3D omap_mcbsp_init(system_memory, 0xfffb7000, + s->mcbsp3 =3D omap_mcbsp_init(parent, system_memory, 0xfffb7000, qdev_get_gpio_in(s->ih[1], OMAP_INT_McBSP3= TX), qdev_get_gpio_in(s->ih[1], OMAP_INT_McBSP3= RX), &s->drq[OMAP_DMA_MCBSP3_TX], omap_findclk(s, "dspxor_c= k")); =20 - s->led[0] =3D omap_lpg_init(system_memory, + s->led[0] =3D omap_lpg_init(parent, system_memory, 0xfffbd000, omap_findclk(s, "clk32-kHz")); - s->led[1] =3D omap_lpg_init(system_memory, + s->led[1] =3D omap_lpg_init(parent, system_memory, 0xfffbd800, omap_findclk(s, "clk32-kHz")); =20 /* Register mappings not currently implemented: @@ -3967,8 +3980,8 @@ struct omap_mpu_state_s *omap310_mpu_init(Object *par= ent, MemoryRegion *dram, * DSP MMU fffed200 - fffed2ff */ =20 - omap_setup_dsp_mapping(system_memory, omap15xx_dsp_mm); - omap_setup_mpui_io(system_memory, s); + omap_setup_dsp_mapping(parent, system_memory, omap15xx_dsp_mm); + omap_setup_mpui_io(parent, system_memory, s); =20 qemu_register_reset(omap1_mpu_reset, s); =20 --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412259; cv=none; d=zohomail.com; s=zohoarc; b=JOcEtdV3zo9aUYu5lzLfb5PVaz9HUcO7ZUg8Yi8/Rp5+XMrfT+XxNLs/a9WYnuzakU/KDFNdQNW/yhtVeEr1ELWVl+/zCbzVynCOtbcHf+0/UNZ8kXuevfG5qZAIN2SbA3hOqnudm/RkBBIJ8n1erIw8RocV9cGV/KRlLhPG5T0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412259; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=UszJO6dpHUEc0oBzDpMHf6YsdxQvwRUTymqKhrUJFdA=; b=nBdwTUIrQ/MvGKC00dk102LRuB8ucf6G4oXQVtDiGGHKvA2hzYI+L1gjSdtXIZzT2jmdIkDtcIpKsWi2O08/JggeDpoDbmOgwY407gElLoL6YAn9cM5v3uqJay/xDbuQcK3Le+/0RqzdbeGJm56NlzhOQnA41GvgCNnTLK2tKiI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412259849811.0925306844973; Sat, 18 Jul 2026 15:04:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlD8q-0006Rf-7p; Sat, 18 Jul 2026 18:04:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD8o-0006HL-2V; Sat, 18 Jul 2026 18:04:14 -0400 Received: from pdx-out-014.esa.us-west-2.outbound.mail-perimeter.amazon.com ([35.83.148.184]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD8l-0005Rn-FW; Sat, 18 Jul 2026 18:04:13 -0400 Received: from ip-10-5-9-48.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.9.48]) by internal-pdx-out-014.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:04:07 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.53:3999] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.40.177:2525] with esmtp (Farcaster) id 70796ffa-92d7-4d44-9450-44f775fab9bc; Sat, 18 Jul 2026 22:04:07 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC001.ant.amazon.com (10.250.64.174) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:04:07 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:03:57 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412251; x=1815948251; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=UszJO6dpHUEc0oBzDpMHf6YsdxQvwRUTymqKhrUJFdA=; b=DZmxuPyjq/yAtXVSf6jvF8d0SuXeaHQo3vonn2klBSoHL7JX3w7hy75s il8ifrGRUWDiJXJUAObWGeYzNzLghJdZQBnPhToxpXDOw/S4XW8nsljms HYGiuDXJEIenS6Fuu5B/EHTLEqd6/8Du3AIRbeEF7jqJ1LGV26AjC0NqY dGeDEm1w4nIyYxKhl7r6DSNo6viCtNzGmfl50B7aorxwGUHLjIaq7EuZP HFgIJ5+Dgkw8qtlX/wSx8I5GkCaQcu1ceg+8uincQ8DDhH/5NE5EcBeO2 TEm0nKNvgBVBEbHicEzt1El/9R4L7+9uyw3ikuXAPi92NVt/gSZWk1dOI A==; X-CSE-ConnectionGUID: AE+D3zhRRD23ufJ/47GRng== X-CSE-MsgGUID: VCmEqhMbRty0qYOrg+Cm7A== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23713038" X-Farcaster-Flow-ID: 70796ffa-92d7-4d44-9450-44f775fab9bc From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 097/137] hw/sh4: Give memory regions an explicit owner Date: Sat, 18 Jul 2026 21:36:12 +0000 Message-ID: <20260718213652.37673-98-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D036UWB001.ant.amazon.com (10.13.139.133) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=35.83.148.184; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-014.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412260828158500 Content-Type: text/plain; charset="utf-8" Convert memory_region_init*() calls in the SH7750 SoC model and its non-QOM sub-block helpers (tmu012_init, sh_intc_init, r2d_fpga_init) to pass an explicit owner instead of NULL. Thread Object *owner as the first argument through tmu012_init(), sh_intc_init() and its static sh_intc_register() helper, and r2d_fpga_init(). sh7750_init() already carries an Object *parent from the earlier device conversion; pass it through. No functional change intended. RAMBlock idstrs are unchanged: the owners added here are Machine or SysBus devices, and memory_region_register_ram() maps both to dev=3DNULL for qemu_ram_set_idstr(). AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/intc/sh_intc.c | 19 ++++++++++--------- hw/sh4/r2d.c | 9 +++++---- hw/sh4/sh7750.c | 22 +++++++++++----------- hw/timer/sh_timer.c | 9 +++++---- include/hw/sh4/sh_intc.h | 3 ++- include/hw/timer/tmu012.h | 3 ++- 6 files changed, 35 insertions(+), 30 deletions(-) diff --git a/hw/intc/sh_intc.c b/hw/intc/sh_intc.c index 0da82f9d5e..37feb6a813 100644 --- a/hw/intc/sh_intc.c +++ b/hw/intc/sh_intc.c @@ -349,7 +349,8 @@ void sh_intc_register_sources(struct intc_desc *desc, } } =20 -static unsigned int sh_intc_register(MemoryRegion *sysmem, +static unsigned int sh_intc_register(Object *owner, + MemoryRegion *sysmem, struct intc_desc *desc, const unsigned long address, const char *type, @@ -368,18 +369,18 @@ static unsigned int sh_intc_register(MemoryRegion *sy= smem, iomem_a7 =3D iomem_p4 + 1; =20 snprintf(name, sizeof(name), "intc-%s-%s-%s", type, action, "p4"); - memory_region_init_alias(iomem_p4, NULL, name, iomem, A7ADDR(address),= 4); + memory_region_init_alias(iomem_p4, owner, name, iomem, A7ADDR(address)= , 4); memory_region_add_subregion(sysmem, P4ADDR(address), iomem_p4); =20 snprintf(name, sizeof(name), "intc-%s-%s-%s", type, action, "a7"); - memory_region_init_alias(iomem_a7, NULL, name, iomem, A7ADDR(address),= 4); + memory_region_init_alias(iomem_a7, owner, name, iomem, A7ADDR(address)= , 4); memory_region_add_subregion(sysmem, A7ADDR(address), iomem_a7); =20 /* used to increment aliases index */ return 2; } =20 -int sh_intc_init(MemoryRegion *sysmem, +int sh_intc_init(Object *owner, MemoryRegion *sysmem, struct intc_desc *desc, int nr_sources, struct intc_mask_reg *mask_regs, @@ -403,15 +404,15 @@ int sh_intc_init(MemoryRegion *sysmem, desc->sources[i].parent =3D desc; } desc->irqs =3D qemu_allocate_irqs(sh_intc_set_irq, desc, nr_sources); - memory_region_init_io(&desc->iomem, NULL, &sh_intc_ops, desc, "intc", + memory_region_init_io(&desc->iomem, owner, &sh_intc_ops, desc, "intc", 0x100000000ULL); j =3D 0; if (desc->mask_regs) { for (i =3D 0; i < desc->nr_mask_regs; i++) { struct intc_mask_reg *mr =3D &desc->mask_regs[i]; =20 - j +=3D sh_intc_register(sysmem, desc, mr->set_reg, "mask", "se= t", j); - j +=3D sh_intc_register(sysmem, desc, mr->clr_reg, "mask", "cl= r", j); + j +=3D sh_intc_register(owner, sysmem, desc, mr->set_reg, "mas= k", "set", j); + j +=3D sh_intc_register(owner, sysmem, desc, mr->clr_reg, "mas= k", "clr", j); } } =20 @@ -419,8 +420,8 @@ int sh_intc_init(MemoryRegion *sysmem, for (i =3D 0; i < desc->nr_prio_regs; i++) { struct intc_prio_reg *pr =3D &desc->prio_regs[i]; =20 - j +=3D sh_intc_register(sysmem, desc, pr->set_reg, "prio", "se= t", j); - j +=3D sh_intc_register(sysmem, desc, pr->clr_reg, "prio", "cl= r", j); + j +=3D sh_intc_register(owner, sysmem, desc, pr->set_reg, "pri= o", "set", j); + j +=3D sh_intc_register(owner, sysmem, desc, pr->clr_reg, "pri= o", "clr", j); } } =20 diff --git a/hw/sh4/r2d.c b/hw/sh4/r2d.c index 6154aed2c4..8deda6e5f4 100644 --- a/hw/sh4/r2d.c +++ b/hw/sh4/r2d.c @@ -187,7 +187,8 @@ static const MemoryRegionOps r2d_fpga_ops =3D { .endianness =3D DEVICE_NATIVE_ENDIAN, }; =20 -static r2d_fpga_t *r2d_fpga_init(MemoryRegion *sysmem, +static r2d_fpga_t *r2d_fpga_init(Object *owner, + MemoryRegion *sysmem, hwaddr base, qemu_irq irl) { r2d_fpga_t *s; @@ -196,7 +197,7 @@ static r2d_fpga_t *r2d_fpga_init(MemoryRegion *sysmem, =20 s->irl =3D irl; =20 - memory_region_init_io(&s->iomem, NULL, &r2d_fpga_ops, s, "r2d-fpga", 0= x40); + memory_region_init_io(&s->iomem, owner, &r2d_fpga_ops, s, "r2d-fpga", = 0x40); memory_region_add_subregion(sysmem, base, &s->iomem); =20 qemu_init_irqs(s->irq, NR_IRQS, r2d_fpga_irq_set, s); @@ -261,11 +262,11 @@ static void r2d_init(MachineState *machine) qemu_register_reset(main_cpu_reset, reset_info); =20 /* Allocate memory space */ - memory_region_init_ram(sdram, NULL, "r2d.sdram", SDRAM_SIZE, &error_fa= tal); + memory_region_init_ram(sdram, OBJECT(machine), "r2d.sdram", SDRAM_SIZE= , &error_fatal); memory_region_add_subregion(address_space_mem, SDRAM_BASE, sdram); /* Register peripherals */ s =3D sh7750_init(OBJECT(machine), cpu, address_space_mem); - fpga =3D r2d_fpga_init(address_space_mem, 0x04000000, sh7750_irl(s)); + fpga =3D r2d_fpga_init(OBJECT(machine), address_space_mem, 0x04000000,= sh7750_irl(s)); =20 dev =3D qdev_new(OBJECT(machine), "pci-host", "sh_pci"); busdev =3D SYS_BUS_DEVICE(dev); diff --git a/hw/sh4/sh7750.c b/hw/sh4/sh7750.c index ff9724fadf..ea55a3a9cc 100644 --- a/hw/sh4/sh7750.c +++ b/hw/sh4/sh7750.c @@ -721,38 +721,38 @@ SH7750State *sh7750_init(Object *parent, SuperHCPU *c= pu, s =3D g_new0(SH7750State, 1); s->cpu =3D cpu; s->periph_freq =3D 60000000; /* 60MHz */ - memory_region_init_io(&s->iomem, NULL, &sh7750_mem_ops, s, + memory_region_init_io(&s->iomem, parent, &sh7750_mem_ops, s, "memory", 0x1fc01000); =20 - memory_region_init_alias(&s->iomem_1f0, NULL, "memory-1f0", + memory_region_init_alias(&s->iomem_1f0, parent, "memory-1f0", &s->iomem, 0x1f000000, 0x1000); memory_region_add_subregion(sysmem, 0x1f000000, &s->iomem_1f0); =20 - memory_region_init_alias(&s->iomem_ff0, NULL, "memory-ff0", + memory_region_init_alias(&s->iomem_ff0, parent, "memory-ff0", &s->iomem, 0x1f000000, 0x1000); memory_region_add_subregion(sysmem, 0xff000000, &s->iomem_ff0); =20 - memory_region_init_alias(&s->iomem_1f8, NULL, "memory-1f8", + memory_region_init_alias(&s->iomem_1f8, parent, "memory-1f8", &s->iomem, 0x1f800000, 0x1000); memory_region_add_subregion(sysmem, 0x1f800000, &s->iomem_1f8); =20 - memory_region_init_alias(&s->iomem_ff8, NULL, "memory-ff8", + memory_region_init_alias(&s->iomem_ff8, parent, "memory-ff8", &s->iomem, 0x1f800000, 0x1000); memory_region_add_subregion(sysmem, 0xff800000, &s->iomem_ff8); =20 - memory_region_init_alias(&s->iomem_1fc, NULL, "memory-1fc", + memory_region_init_alias(&s->iomem_1fc, parent, "memory-1fc", &s->iomem, 0x1fc00000, 0x1000); memory_region_add_subregion(sysmem, 0x1fc00000, &s->iomem_1fc); =20 - memory_region_init_alias(&s->iomem_ffc, NULL, "memory-ffc", + memory_region_init_alias(&s->iomem_ffc, parent, "memory-ffc", &s->iomem, 0x1fc00000, 0x1000); memory_region_add_subregion(sysmem, 0xffc00000, &s->iomem_ffc); =20 - memory_region_init_io(&s->mmct_iomem, NULL, &sh7750_mmct_ops, s, + memory_region_init_io(&s->mmct_iomem, parent, &sh7750_mmct_ops, s, "cache-and-tlb", 0x08000000); memory_region_add_subregion(sysmem, 0xf0000000, &s->mmct_iomem); =20 - sh_intc_init(sysmem, &s->intc, NR_SOURCES, + sh_intc_init(parent, sysmem, &s->intc, NR_SOURCES, _INTC_ARRAY(mask_registers), _INTC_ARRAY(prio_registers)); =20 @@ -797,7 +797,7 @@ SH7750State *sh7750_init(Object *parent, SuperHCPU *cpu, qdev_connect_gpio_out_named(dev, "txi", 0, s->intc.irqs[SCIF_TXI]); qdev_connect_gpio_out_named(dev, "bri", 0, s->intc.irqs[SCIF_BRI]); =20 - tmu012_init(sysmem, 0x1fd80000, + tmu012_init(parent, sysmem, 0x1fd80000, TMU012_FEAT_TOCR | TMU012_FEAT_3CHAN | TMU012_FEAT_EXTCLK, s->periph_freq, s->intc.irqs[TMU0], @@ -821,7 +821,7 @@ SH7750State *sh7750_init(Object *parent, SuperHCPU *cpu, sh_intc_register_sources(&s->intc, _INTC_ARRAY(vectors_tmu34), NULL, 0); - tmu012_init(sysmem, 0x1e100000, 0, s->periph_freq, + tmu012_init(parent, sysmem, 0x1e100000, 0, s->periph_freq, s->intc.irqs[TMU3], s->intc.irqs[TMU4], NULL, NULL); diff --git a/hw/timer/sh_timer.c b/hw/timer/sh_timer.c index 41ece9c613..ac71d11a0a 100644 --- a/hw/timer/sh_timer.c +++ b/hw/timer/sh_timer.c @@ -344,7 +344,8 @@ static const MemoryRegionOps tmu012_ops =3D { .endianness =3D DEVICE_NATIVE_ENDIAN, }; =20 -void tmu012_init(MemoryRegion *sysmem, hwaddr base, int feat, uint32_t fre= q, +void tmu012_init(Object *owner, MemoryRegion *sysmem, hwaddr base, + int feat, uint32_t freq, qemu_irq ch0_irq, qemu_irq ch1_irq, qemu_irq ch2_irq0, qemu_irq ch2_irq1) { @@ -360,13 +361,13 @@ void tmu012_init(MemoryRegion *sysmem, hwaddr base, i= nt feat, uint32_t freq, ch2_irq0); /* ch2_irq1 not supported */ } =20 - memory_region_init_io(&s->iomem, NULL, &tmu012_ops, s, "timer", 0x30); + memory_region_init_io(&s->iomem, owner, &tmu012_ops, s, "timer", 0x30); =20 - memory_region_init_alias(&s->iomem_p4, NULL, "timer-p4", + memory_region_init_alias(&s->iomem_p4, owner, "timer-p4", &s->iomem, 0, memory_region_size(&s->iomem)); memory_region_add_subregion(sysmem, P4ADDR(base), &s->iomem_p4); =20 - memory_region_init_alias(&s->iomem_a7, NULL, "timer-a7", + memory_region_init_alias(&s->iomem_a7, owner, "timer-a7", &s->iomem, 0, memory_region_size(&s->iomem)); memory_region_add_subregion(sysmem, A7ADDR(base), &s->iomem_a7); /* ??? Save/restore. */ diff --git a/include/hw/sh4/sh_intc.h b/include/hw/sh4/sh_intc.h index 94f183121e..d391710987 100644 --- a/include/hw/sh4/sh_intc.h +++ b/include/hw/sh4/sh_intc.h @@ -2,6 +2,7 @@ #define SH_INTC_H =20 #include "system/memory.h" +#include "qom/object.h" =20 typedef unsigned char intc_enum; =20 @@ -68,7 +69,7 @@ void sh_intc_register_sources(struct intc_desc *desc, struct intc_group *groups, int nr_groups); =20 -int sh_intc_init(MemoryRegion *sysmem, +int sh_intc_init(Object *owner, MemoryRegion *sysmem, struct intc_desc *desc, int nr_sources, struct intc_mask_reg *mask_regs, diff --git a/include/hw/timer/tmu012.h b/include/hw/timer/tmu012.h index 808ed8de1d..fb24c00d3b 100644 --- a/include/hw/timer/tmu012.h +++ b/include/hw/timer/tmu012.h @@ -10,12 +10,13 @@ #define HW_TIMER_TMU012_H =20 #include "exec/hwaddr.h" +#include "qom/object.h" =20 #define TMU012_FEAT_TOCR (1 << 0) #define TMU012_FEAT_3CHAN (1 << 1) #define TMU012_FEAT_EXTCLK (1 << 2) =20 -void tmu012_init(MemoryRegion *sysmem, hwaddr base, +void tmu012_init(Object *owner, MemoryRegion *sysmem, hwaddr base, int feat, uint32_t freq, qemu_irq ch0_irq, qemu_irq ch1_irq, qemu_irq ch2_irq0, qemu_irq ch2_irq1); --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412281; cv=none; d=zohomail.com; s=zohoarc; b=aErRiAyOSc3883LB6rvbYyJr3AsDcqtCQ6D4l6VrSI2uWzuE+a6+Nntykm+Y8npJIDoCpkJDJ3WvylpDUuUGqjir7kPdqv6Emopd1lh+Yf+OqFhqP/dLHlOJQPHAtRMeUSR2E2vxlIuIbdi9vNtUdlWExusAAxERmBJEWBCWLWg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412281; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=m9WF7sOcpITnllvXQcPF+NIn05qRED1gJpFK9HNjkQM=; b=Rs20tFIwW3asMKCt/WZK1Pz21q/0zKtLMDQc7mu7BHrsIxXpKP7hNU9CMGWx2zDsu+euCWo70/BtvxLIhbCeEuiXbfzVknMgg/AQQ3VQlH4ThRr4AMRg9PhL/QbjzMDUDUZXPEEeBCrWtP1R2tgy0yLUKvXfHjUrp6xida8XfHA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412281662608.0854947574675; Sat, 18 Jul 2026 15:04:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlD8z-0006zw-H5; Sat, 18 Jul 2026 18:04:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD8x-0006w0-0R; Sat, 18 Jul 2026 18:04:23 -0400 Received: from pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com ([35.155.198.111]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD8u-0005T4-Ni; Sat, 18 Jul 2026 18:04:22 -0400 Received: from ip-10-5-6-203.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.6.203]) by internal-pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:04:17 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.48:29768] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.0.115:2525] with esmtp (Farcaster) id e167519a-a4c5-4640-b0f2-3c8fe08ccd23; Sat, 18 Jul 2026 22:04:16 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB002.ant.amazon.com (10.250.64.231) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:04:16 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:04:07 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412260; x=1815948260; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=m9WF7sOcpITnllvXQcPF+NIn05qRED1gJpFK9HNjkQM=; b=Sj/LBLncjv1GcxO3c2amfe1v3mPEnHfI+T4kUp0+cYKiGHzKZNWpPLpn 26TBaTucnO6/rAiiztOKR6DMqcOsqQ2ujODBqvOiI5dRsgpv/w93Xx1lH ZWZ69mt6vEpsR6BH0ZQGFnW37JmqdZS7OiX9jUu9KzmxyRDXF4pAwM+I+ V3SLJlcmUX6k3uilefTuj9kvLoz3cPbCmPJ2BUXfRbplASsd9Xf4lk31i w7ylAHfKpwpWCzjgImU0ypsN+XSME+M8lhB8lyO2DjYm6jT3tCZTUQwx2 w8STq3sDV/fJOIzY+bugv8nxQZFsFkQHc22aV2btmnbTpnDQfTLkG74VY A==; X-CSE-ConnectionGUID: WNCxDmKMRBW6mNg9l5iGnA== X-CSE-MsgGUID: g83soVdnQ9KDpnSjGzx5gQ== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23817117" X-Farcaster-Flow-ID: e167519a-a4c5-4640-b0f2-3c8fe08ccd23 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 098/137] hw/m68k: Give memory regions an explicit owner Date: Sat, 18 Jul 2026 21:36:13 +0000 Message-ID: <20260718213652.37673-99-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D036UWB001.ant.amazon.com (10.13.139.133) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=35.155.198.111; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412282544158500 Content-Type: text/plain; charset="utf-8" Convert memory_region_init*() calls that pass NULL owner to pass the enclosing machine or device instead. Thread Object *owner through the static mcf5208_sys_init() helper. mcf5206_= mbar_realize() already has DeviceState *dev in scope. No functional change intended. RAMBlock idstrs are unchanged: the owners added here are Machine or SysBus devices, and memory_region_register_ram() maps both to dev=3DNULL for qemu_ram_set_idstr(). Reviewed-by: Thomas Huth # coldfire, next-cube only AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/m68k/an5206.c | 2 +- hw/m68k/mcf5206.c | 2 +- hw/m68k/mcf5208.c | 15 ++++++++------- hw/m68k/next-cube.c | 10 +++++----- hw/m68k/q800.c | 10 +++++----- 5 files changed, 20 insertions(+), 19 deletions(-) diff --git a/hw/m68k/an5206.c b/hw/m68k/an5206.c index 5027311cad..6c6c7d7248 100644 --- a/hw/m68k/an5206.c +++ b/hw/m68k/an5206.c @@ -60,7 +60,7 @@ static void an5206_init(MachineState *machine) memory_region_add_subregion(address_space_mem, 0, machine->ram); =20 /* Internal SRAM. */ - memory_region_init_ram(sram, NULL, "an5206.sram", 512, &error_fatal); + memory_region_init_ram(sram, OBJECT(machine), "an5206.sram", 512, &err= or_fatal); memory_region_add_subregion(address_space_mem, AN5206_RAMBAR_ADDR, sra= m); =20 mcf5206_init(OBJECT(machine), cpu, address_space_mem, AN5206_MBAR_ADDR= ); diff --git a/hw/m68k/mcf5206.c b/hw/m68k/mcf5206.c index b3c745d3f9..ee39a6ac30 100644 --- a/hw/m68k/mcf5206.c +++ b/hw/m68k/mcf5206.c @@ -589,7 +589,7 @@ static void mcf5206_mbar_realize(DeviceState *dev, Erro= r **errp) { m5206_mbar_state *s =3D MCF5206_MBAR(dev); =20 - memory_region_init_io(&s->iomem, NULL, &m5206_mbar_ops, s, + memory_region_init_io(&s->iomem, OBJECT(dev), &m5206_mbar_ops, s, "mbar", 0x00001000); sysbus_init_mmio(SYS_BUS_DEVICE(dev), &s->iomem); =20 diff --git a/hw/m68k/mcf5208.c b/hw/m68k/mcf5208.c index a955efebeb..93aee5ebd5 100644 --- a/hw/m68k/mcf5208.c +++ b/hw/m68k/mcf5208.c @@ -227,7 +227,8 @@ static const MemoryRegionOps m5208_rcm_ops =3D { .endianness =3D DEVICE_BIG_ENDIAN, }; =20 -static void mcf5208_sys_init(MemoryRegion *address_space, DeviceState *int= c, +static void mcf5208_sys_init(Object *owner, MemoryRegion *address_space, + DeviceState *intc, M68kCPU *cpu) { MemoryRegion *iomem =3D g_new(MemoryRegion, 1); @@ -236,17 +237,17 @@ static void mcf5208_sys_init(MemoryRegion *address_sp= ace, DeviceState *intc, int i; =20 /* RCM */ - memory_region_init_io(iomem_rcm, NULL, &m5208_rcm_ops, cpu, + memory_region_init_io(iomem_rcm, owner, &m5208_rcm_ops, cpu, "m5208-rcm", 0x00000080); memory_region_add_subregion(address_space, 0xfc0a0000, iomem_rcm); /* SDRAMC. */ - memory_region_init_io(iomem, NULL, &m5208_sys_ops, NULL, "m5208-sys", = 0x00004000); + memory_region_init_io(iomem, owner, &m5208_sys_ops, NULL, "m5208-sys",= 0x00004000); memory_region_add_subregion(address_space, 0xfc0a8000, iomem); /* Timers. */ for (i =3D 0; i < 2; i++) { s =3D g_new0(m5208_timer_state, 1); s->timer =3D ptimer_init(m5208_timer_trigger, s, PTIMER_POLICY_LEG= ACY); - memory_region_init_io(&s->iomem, NULL, &m5208_timer_ops, s, + memory_region_init_io(&s->iomem, owner, &m5208_timer_ops, s, "m5208-timer", 0x00004000); memory_region_add_subregion(address_space, 0xfc080000 + 0x4000 * i, &s->iomem); @@ -296,14 +297,14 @@ static void mcf5208evb_init(MachineState *machine) /* TODO: Configure BARs. */ =20 /* ROM at 0x00000000 */ - memory_region_init_rom(rom, NULL, "mcf5208.rom", ROM_SIZE, &error_fata= l); + memory_region_init_rom(rom, OBJECT(machine), "mcf5208.rom", ROM_SIZE, = &error_fatal); memory_region_add_subregion(address_space_mem, 0x00000000, rom); =20 /* DRAM at 0x40000000 */ memory_region_add_subregion(address_space_mem, 0x40000000, machine->ra= m); =20 /* Internal SRAM. */ - memory_region_init_ram(sram, NULL, "mcf5208.sram", 16 * KiB, &error_fa= tal); + memory_region_init_ram(sram, OBJECT(machine), "mcf5208.sram", 16 * KiB= , &error_fatal); memory_region_add_subregion(address_space_mem, 0x80000000, sram); =20 /* Internal peripherals. */ @@ -316,7 +317,7 @@ static void mcf5208evb_init(MachineState *machine) mcf_uart_create_mmap(OBJECT(machine), 0xfc068000, qdev_get_gpio_in(intc, 28), serial_hd(2)); =20 - mcf5208_sys_init(address_space_mem, intc, cpu); + mcf5208_sys_init(OBJECT(machine), address_space_mem, intc, cpu); =20 mcf_fec_init(address_space_mem, 0xfc030000, intc); =20 diff --git a/hw/m68k/next-cube.c b/hw/m68k/next-cube.c index c80d32ef29..564a10a69e 100644 --- a/hw/m68k/next-cube.c +++ b/hw/m68k/next-cube.c @@ -1310,11 +1310,11 @@ static void next_cube_init(MachineState *machine) sysbus_mmio_map(SYS_BUS_DEVICE(pcdev), 5, 0x0211a000); =20 /* BMAP memory */ - memory_region_init_ram_flags_nomigrate(&m->bmapm1, NULL, "next.bmapmem= ", + memory_region_init_ram_flags_nomigrate(&m->bmapm1, OBJECT(machine), "n= ext.bmapmem", 64, RAM_SHARED, &error_fatal); memory_region_add_subregion(sysmem, 0x020c0000, &m->bmapm1); /* The Rev_2.5_v66.bin firmware accesses it at 0x820c0020, too */ - memory_region_init_alias(&m->bmapm2, NULL, "next.bmapmem2", &m->bmapm1, + memory_region_init_alias(&m->bmapm2, OBJECT(machine), "next.bmapmem2",= &m->bmapm1, 0x0, 64); memory_region_add_subregion(sysmem, 0x820c0000, &m->bmapm2); =20 @@ -1322,9 +1322,9 @@ static void next_cube_init(MachineState *machine) sysbus_create_simple(OBJECT(machine), "kbd", TYPE_NEXTKBD, 0x0200e000,= NULL); =20 /* Load ROM here */ - memory_region_init_rom(&m->rom, NULL, "next.rom", 0x20000, &error_fata= l); + memory_region_init_rom(&m->rom, OBJECT(machine), "next.rom", 0x20000, = &error_fatal); memory_region_add_subregion(sysmem, 0x01000000, &m->rom); - memory_region_init_alias(&m->rom2, NULL, "next.rom2", &m->rom, 0x0, + memory_region_init_alias(&m->rom2, OBJECT(machine), "next.rom2", &m->r= om, 0x0, 0x20000); memory_region_add_subregion(sysmem, 0x0, &m->rom2); Error *local_err =3D NULL; @@ -1352,7 +1352,7 @@ static void next_cube_init(MachineState *machine) } =20 /* DMA */ - memory_region_init_io(&m->dmamem, NULL, &next_dma_ops, machine, + memory_region_init_io(&m->dmamem, OBJECT(machine), &next_dma_ops, mach= ine, "next.dma", 0x5000); memory_region_add_subregion(sysmem, 0x02000000, &m->dmamem); } diff --git a/hw/m68k/q800.c b/hw/m68k/q800.c index 15b3bcab5f..954cdf8489 100644 --- a/hw/m68k/q800.c +++ b/hw/m68k/q800.c @@ -309,7 +309,7 @@ static void q800_machine_init(MachineState *machine) memory_region_add_subregion(get_system_memory(), IO_BASE + IO_SLICE, &m->macio_alias); =20 - memory_region_init_io(&m->machine_id, NULL, &machine_id_ops, NULL, + memory_region_init_io(&m->machine_id, OBJECT(machine), &machine_id_ops= , NULL, "Machine ID", 4); memory_region_add_subregion(get_system_memory(), 0x5ffffffc, &m->machine_id); @@ -407,7 +407,7 @@ static void q800_machine_init(MachineState *machine) sysbus_connect_irq(sysbus, 0, qdev_get_gpio_in(DEVICE(&m->glue), GLUE_IRQ_IN_SONI= C)); =20 - memory_region_init_rom(&m->dp8393x_prom, NULL, "dp8393x-q800.prom", + memory_region_init_rom(&m->dp8393x_prom, OBJECT(machine), "dp8393x-q80= 0.prom", SONIC_PROM_SIZE, &error_fatal); memory_region_add_subregion(get_system_memory(), SONIC_PROM_BASE, &m->dp8393x_prom); @@ -606,7 +606,7 @@ static void q800_machine_init(MachineState *machine) BOOTINFO1(param_ptr, BI_MAC_VROW, macfb_mode->stride); BOOTINFO1(param_ptr, BI_MAC_SCCBASE, SCC_BASE); =20 - memory_region_init_ram_ptr(&m->rom, NULL, "m68k_fake_mac.rom", + memory_region_init_ram_ptr(&m->rom, OBJECT(machine), "m68k_fake_ma= c.rom", sizeof(fake_mac_rom), fake_mac_rom); memory_region_set_readonly(&m->rom, true); memory_region_add_subregion(get_system_memory(), MACROM_ADDR, &m->= rom); @@ -651,12 +651,12 @@ static void q800_machine_init(MachineState *machine) } else { uint8_t *ptr; /* allocate and load BIOS */ - memory_region_init_rom(&m->rom, NULL, "m68k_mac.rom", MACROM_SIZE, + memory_region_init_rom(&m->rom, OBJECT(machine), "m68k_mac.rom", M= ACROM_SIZE, &error_abort); filename =3D qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name); memory_region_add_subregion(get_system_memory(), MACROM_ADDR, &m->= rom); =20 - memory_region_init_alias(&m->rom_alias, NULL, "m68k_mac.rom-alias", + memory_region_init_alias(&m->rom_alias, OBJECT(machine), "m68k_mac= .rom-alias", &m->rom, 0, MACROM_SIZE); memory_region_add_subregion(get_system_memory(), 0x40000000, &m->rom_alias); --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412312; cv=none; d=zohomail.com; s=zohoarc; b=Q+PJ/k4oYXPZ4NVLO27S6mJXwxqYLDrZDakMlbh8fPs/RlRNWDhJFjIpj0wqrnLQV6FrUB3G9hm0DlOvnrJ0TI+AuG5WrtSL2u9E+ooXnKSIj1hqsTXeR75x8ArG+fU2WlZZeUq47Zro547PlWYZFMmrhvysm1nVIHmyHin7wIw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412312; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Hqoa0Zg4cpWSCjfZXN0aqvvhoBuY41v/DVel18QdV0M=; b=jr2bIzBrr0HcAlOCoCwi2KxOhrnvp3IG7wMfJBr07du7FILYDGliaD10pTJEnZnfeKuibxd7lNnUAEsHXuo1kIKiMIDEqBOmwpm2TNy62OFjT8p/GKFQsR6wgAWNm7JxGDhwN4yCinP5hsq94BWhhqUbHlUvaHRJwVXd0OVsVic= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412312953571.1508997574726; Sat, 18 Jul 2026 15:05:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlD9U-00009G-Ew; Sat, 18 Jul 2026 18:04:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD9S-0008WU-QM; Sat, 18 Jul 2026 18:04:54 -0400 Received: from pdx-out-004.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.246.77.92]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD9Q-0005nM-2P; Sat, 18 Jul 2026 18:04:54 -0400 Received: from ip-10-5-6-203.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.6.203]) by internal-pdx-out-004.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:04:48 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.234:12741] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.151:2525] with esmtp (Farcaster) id 4fc69d3a-aab8-402c-b335-557de534b143; Sat, 18 Jul 2026 22:04:48 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA002.ant.amazon.com (10.250.64.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:04:47 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:04:38 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412292; x=1815948292; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Hqoa0Zg4cpWSCjfZXN0aqvvhoBuY41v/DVel18QdV0M=; b=bq2pNSkh6Cq6okv8oKQUqHbrWNduhrzO27e07WE5YMb1hKcHHDKO9msT Ix0JhinmR1RXChjOMeYmCA7lemA0ta5BmfC+VP+t+ArIeyDqlH4Rh2LnH QgHR5W6ZpKgzLiWtpIAL725KYbcodiovH3JkmXBQcu1leXaIk0K44EZwv dr9tzag22WloyVinTQzrQ6c3VhNSAXGXk+9UXwiemRuvGdrhus90tVeKW 2S3wLuPn09rn+0ouYTBoOPGqKcqIuliHS0vcir9MOQQI0f0JDu1/mMpkI 2S0gv+r9IX7IZTE6u8bNrokrqq05VA83lMgLFxgUXJ3WVn2YslMGDJ3z0 A==; X-CSE-ConnectionGUID: 72IVsrxPRn2BIDbULQJpog== X-CSE-MsgGUID: Bzbay9R2TbKf1QqbIe8c9Q== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23917942" X-Farcaster-Flow-ID: 4fc69d3a-aab8-402c-b335-557de534b143 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 099/137] hw/ppc: Give memory regions an explicit owner Date: Sat, 18 Jul 2026 21:36:14 +0000 Message-ID: <20260718213652.37673-100-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D033UWC003.ant.amazon.com (10.13.139.217) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.246.77.92; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-004.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412314622158500 Content-Type: text/plain; charset="utf-8" Convert memory_region_init*() calls that pass NULL owner to pass the enclosing machine or device instead. Thread Object *owner through ppc4xx_l2sram_init() (called from sam460ex boa= rd init) and the static ppc4xx_sdram_banks() / sdram_bank_map() / sdram_ban= k_set_bcr() helpers (called from ppc4xx-sdram-ddr[2] realize and DCR write = callbacks that already carry the device state). No functional change intended. RAMBlock idstrs are unchanged: the owners added here are Machine or SysBus devices, and memory_region_register_ram() maps both to dev=3DNULL for qemu_ram_set_idstr(). AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/ppc/amigaone.c | 6 +++--- hw/ppc/mac_newworld.c | 2 +- hw/ppc/mac_oldworld.c | 2 +- hw/ppc/pegasos.c | 2 +- hw/ppc/ppc440.h | 2 +- hw/ppc/ppc440_bamboo.c | 2 +- hw/ppc/ppc440_uc.c | 10 +++++----- hw/ppc/ppc4xx_sdram.c | 34 +++++++++++++++++----------------- hw/ppc/prep.c | 2 +- hw/ppc/sam460ex.c | 4 ++-- 10 files changed, 33 insertions(+), 33 deletions(-) diff --git a/hw/ppc/amigaone.c b/hw/ppc/amigaone.c index 60aed15a6e..4a4e52c1fe 100644 --- a/hw/ppc/amigaone.c +++ b/hw/ppc/amigaone.c @@ -130,7 +130,7 @@ static void nvram_realize(DeviceState *dev, Error **err= p) void *p; uint32_t crc, *c; =20 - memory_region_init_rom_device(&s->mr, NULL, &nvram_ops, s, "nvram", + memory_region_init_rom_device(&s->mr, OBJECT(dev), &nvram_ops, s, "nvr= am", NVRAM_SIZE, &error_fatal); sysbus_init_mmio(SYS_BUS_DEVICE(dev), &s->mr); c =3D p =3D memory_region_get_ram_ptr(&s->mr); @@ -297,7 +297,7 @@ static void amigaone_init(MachineState *machine) if (machine->ram_size < 1 * GiB + 32 * KiB) { /* Firmware uses this area for startup */ mr =3D g_new(MemoryRegion, 1); - memory_region_init_ram(mr, NULL, "init-cache", 32 * KiB, &error_fa= tal); + memory_region_init_ram(mr, OBJECT(machine), "init-cache", 32 * KiB= , &error_fatal); memory_region_add_subregion(get_system_memory(), INIT_RAM_ADDR, mr= ); } =20 @@ -313,7 +313,7 @@ static void amigaone_init(MachineState *machine) =20 /* allocate and load firmware */ rom =3D g_new(MemoryRegion, 1); - memory_region_init_rom(rom, NULL, "rom", PROM_SIZE, &error_fatal); + memory_region_init_rom(rom, OBJECT(machine), "rom", PROM_SIZE, &error_= fatal); memory_region_add_subregion(get_system_memory(), PROM_ADDR, rom); if (!machine->firmware) { rom_add_blob_fixed("dummy-fw", dummy_fw, sizeof(dummy_fw), diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c index a6af53e21a..392a1fb87d 100644 --- a/hw/ppc/mac_newworld.c +++ b/hw/ppc/mac_newworld.c @@ -176,7 +176,7 @@ static void ppc_core99_init(MachineState *machine) memory_region_add_subregion(get_system_memory(), 0, machine->ram); =20 /* allocate and load firmware ROM */ - memory_region_init_rom(bios, NULL, "ppc_core99.bios", PROM_SIZE, + memory_region_init_rom(bios, OBJECT(machine), "ppc_core99.bios", PROM_= SIZE, &error_fatal); memory_region_add_subregion(get_system_memory(), PROM_BASE, bios); =20 diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c index f9b62a518a..0fe8dfaf8c 100644 --- a/hw/ppc/mac_oldworld.c +++ b/hw/ppc/mac_oldworld.c @@ -130,7 +130,7 @@ static void ppc_heathrow_init(MachineState *machine) memory_region_add_subregion(get_system_memory(), 0, machine->ram); =20 /* allocate and load firmware ROM */ - memory_region_init_rom(bios, NULL, "ppc_heathrow.bios", PROM_SIZE, + memory_region_init_rom(bios, OBJECT(machine), "ppc_heathrow.bios", PRO= M_SIZE, &error_fatal); memory_region_add_subregion(get_system_memory(), PROM_BASE, bios); =20 diff --git a/hw/ppc/pegasos.c b/hw/ppc/pegasos.c index 4917d8137a..426a54d8ee 100644 --- a/hw/ppc/pegasos.c +++ b/hw/ppc/pegasos.c @@ -194,7 +194,7 @@ static void pegasos_init(MachineState *machine) if (pm->type =3D=3D PEGASOS1) { prom_addr +=3D PROM_SIZE; } - memory_region_init_rom(rom, NULL, "rom", PROM_SIZE, &error_fatal); + memory_region_init_rom(rom, OBJECT(machine), "rom", PROM_SIZE, &error_= fatal); memory_region_add_subregion(get_system_memory(), prom_addr, rom); sz =3D load_elf(filename, NULL, NULL, NULL, NULL, NULL, NULL, NULL, ELFDATA2MSB, PPC_ELF_MACHINE, 0, 0); diff --git a/hw/ppc/ppc440.h b/hw/ppc/ppc440.h index 909373fb38..192b76adc4 100644 --- a/hw/ppc/ppc440.h +++ b/hw/ppc/ppc440.h @@ -13,7 +13,7 @@ =20 #include "hw/ppc/ppc.h" =20 -void ppc4xx_l2sram_init(CPUPPCState *env); +void ppc4xx_l2sram_init(Object *owner, CPUPPCState *env); void ppc4xx_cpr_init(CPUPPCState *env); void ppc4xx_sdr_init(CPUPPCState *env); void ppc4xx_ahb_init(CPUPPCState *env); diff --git a/hw/ppc/ppc440_bamboo.c b/hw/ppc/ppc440_bamboo.c index 2d9efeba77..5aad2a504b 100644 --- a/hw/ppc/ppc440_bamboo.c +++ b/hw/ppc/ppc440_bamboo.c @@ -194,7 +194,7 @@ static void bamboo_init(MachineState *machine) exit(1); } =20 - memory_region_init_alias(isa, NULL, "isa_mmio", + memory_region_init_alias(isa, OBJECT(machine), "isa_mmio", get_system_io(), 0, PPC440EP_PCI_IOLEN); memory_region_add_subregion(get_system_memory(), PPC440EP_PCI_IO, isa); =20 diff --git a/hw/ppc/ppc440_uc.c b/hw/ppc/ppc440_uc.c index 016c756c19..e86519326e 100644 --- a/hw/ppc/ppc440_uc.c +++ b/hw/ppc/ppc440_uc.c @@ -167,19 +167,19 @@ static void l2sram_reset(void *opaque) memset(l2sram->isram0, 0, sizeof(l2sram->isram0)); } =20 -void ppc4xx_l2sram_init(CPUPPCState *env) +void ppc4xx_l2sram_init(Object *owner, CPUPPCState *env) { ppc4xx_l2sram_t *l2sram; =20 l2sram =3D g_malloc0(sizeof(*l2sram)); /* XXX: Size is 4*64kB for 460ex, cf. U-Boot, ppc4xx-isram.h */ - memory_region_init_ram(&l2sram->bank[0], NULL, "ppc4xx.l2sram_bank0", + memory_region_init_ram(&l2sram->bank[0], owner, "ppc4xx.l2sram_bank0", 64 * KiB, &error_abort); - memory_region_init_ram(&l2sram->bank[1], NULL, "ppc4xx.l2sram_bank1", + memory_region_init_ram(&l2sram->bank[1], owner, "ppc4xx.l2sram_bank1", 64 * KiB, &error_abort); - memory_region_init_ram(&l2sram->bank[2], NULL, "ppc4xx.l2sram_bank2", + memory_region_init_ram(&l2sram->bank[2], owner, "ppc4xx.l2sram_bank2", 64 * KiB, &error_abort); - memory_region_init_ram(&l2sram->bank[3], NULL, "ppc4xx.l2sram_bank3", + memory_region_init_ram(&l2sram->bank[3], owner, "ppc4xx.l2sram_bank3", 64 * KiB, &error_abort); qemu_register_reset(&l2sram_reset, l2sram); ppc_dcr_register(env, DCR_L2CACHE_CFG, diff --git a/hw/ppc/ppc4xx_sdram.c b/hw/ppc/ppc4xx_sdram.c index b2c8f96d5f..8be3bb3160 100644 --- a/hw/ppc/ppc4xx_sdram.c +++ b/hw/ppc/ppc4xx_sdram.c @@ -53,7 +53,7 @@ * must be one of a small set of sizes. The number of banks and the suppor= ted * sizes varies by SoC. */ -static bool ppc4xx_sdram_banks(MemoryRegion *ram, int nr_banks, +static bool ppc4xx_sdram_banks(Object *owner, MemoryRegion *ram, int nr_ba= nks, Ppc4xxSdramBank ram_banks[], const ram_addr_t sdram_bank_sizes[], Error **errp) @@ -76,7 +76,7 @@ static bool ppc4xx_sdram_banks(MemoryRegion *ram, int nr_= banks, base +=3D bank_size; size_left -=3D bank_size; snprintf(name, sizeof(name), "ppc4xx.sdram%d", i); - memory_region_init_alias(&ram_banks[i].ram, NULL, name, ra= m, + memory_region_init_alias(&ram_banks[i].ram, owner, name, r= am, ram_banks[i].base, ram_banks[i].s= ize); break; } @@ -108,10 +108,10 @@ static bool ppc4xx_sdram_banks(MemoryRegion *ram, int= nr_banks, return true; } =20 -static void sdram_bank_map(Ppc4xxSdramBank *bank) +static void sdram_bank_map(Object *owner, Ppc4xxSdramBank *bank) { trace_ppc4xx_sdram_map(bank->base, bank->size); - memory_region_init(&bank->container, NULL, "sdram-container", bank->si= ze); + memory_region_init(&bank->container, owner, "sdram-container", bank->s= ize); memory_region_add_subregion(&bank->container, 0, &bank->ram); memory_region_add_subregion(get_system_memory(), bank->base, &bank->container); @@ -125,7 +125,7 @@ static void sdram_bank_unmap(Ppc4xxSdramBank *bank) object_unparent(OBJECT(&bank->container)); } =20 -static void sdram_bank_set_bcr(Ppc4xxSdramBank *bank, uint32_t bcr, +static void sdram_bank_set_bcr(Object *owner, Ppc4xxSdramBank *bank, uint3= 2_t bcr, hwaddr base, hwaddr size, int enabled) { if (memory_region_is_mapped(&bank->container)) { @@ -135,7 +135,7 @@ static void sdram_bank_set_bcr(Ppc4xxSdramBank *bank, u= int32_t bcr, bank->base =3D base; bank->size =3D size; if (enabled && (bcr & 1)) { - sdram_bank_map(bank); + sdram_bank_map(owner, bank); } } =20 @@ -296,7 +296,7 @@ static void sdram_ddr_dcr_write(void *opaque, int dcrn,= uint32_t val) /* validate all RAM mappings */ for (i =3D 0; i < s->nbanks; i++) { if (s->bank[i].size) { - sdram_bank_set_bcr(&s->bank[i], s->bank[i].bcr, + sdram_bank_set_bcr(OBJECT(s), &s->bank[i], s->bank= [i].bcr, s->bank[i].base, s->bank[i].siz= e, 1); } @@ -307,7 +307,7 @@ static void sdram_ddr_dcr_write(void *opaque, int dcrn,= uint32_t val) /* invalidate all RAM mappings */ for (i =3D 0; i < s->nbanks; i++) { if (s->bank[i].size) { - sdram_bank_set_bcr(&s->bank[i], s->bank[i].bcr, + sdram_bank_set_bcr(OBJECT(s), &s->bank[i], s->bank= [i].bcr, s->bank[i].base, s->bank[i].siz= e, 0); } @@ -337,7 +337,7 @@ static void sdram_ddr_dcr_write(void *opaque, int dcrn,= uint32_t val) i =3D (s->addr - 0x40) / 4; val &=3D SDRAM_DDR_BCR_MASK; if (s->bank[i].size) { - sdram_bank_set_bcr(&s->bank[i], val, + sdram_bank_set_bcr(OBJECT(s), &s->bank[i], val, sdram_ddr_base(val), sdram_ddr_size(val= ), s->cfg & 0x80000000); } @@ -400,17 +400,17 @@ static void ppc4xx_sdram_ddr_realize(DeviceState *dev= , Error **errp) error_setg(errp, "Missing dram memory region"); return; } - if (!ppc4xx_sdram_banks(s->dram_mr, s->nbanks, s->bank, + if (!ppc4xx_sdram_banks(OBJECT(s), s->dram_mr, s->nbanks, s->bank, valid_bank_sizes, errp)) { return; } for (i =3D 0; i < s->nbanks; i++) { if (s->bank[i].size) { s->bank[i].bcr =3D sdram_ddr_bcr(s->bank[i].base, s->bank[i].s= ize); - sdram_bank_set_bcr(&s->bank[i], s->bank[i].bcr, + sdram_bank_set_bcr(OBJECT(s), &s->bank[i], s->bank[i].bcr, s->bank[i].base, s->bank[i].size, 0); } else { - sdram_bank_set_bcr(&s->bank[i], 0, 0, 0, 0); + sdram_bank_set_bcr(OBJECT(s), &s->bank[i], 0, 0, 0, 0); } trace_ppc4xx_sdram_init(sdram_ddr_base(s->bank[i].bcr), sdram_ddr_size(s->bank[i].bcr), @@ -607,7 +607,7 @@ static void sdram_ddr2_dcr_write(void *opaque, int dcrn= , uint32_t val) /* validate all RAM mappings */ for (i =3D 0; i < s->nbanks; i++) { if (s->bank[i].size) { - sdram_bank_set_bcr(&s->bank[i], s->bank[i].bcr, + sdram_bank_set_bcr(OBJECT(s), &s->bank[i], s->bank= [i].bcr, s->bank[i].base, s->bank[i].siz= e, 1); } @@ -619,7 +619,7 @@ static void sdram_ddr2_dcr_write(void *opaque, int dcrn= , uint32_t val) /* invalidate all RAM mappings */ for (i =3D 0; i < s->nbanks; i++) { if (s->bank[i].size) { - sdram_bank_set_bcr(&s->bank[i], s->bank[i].bcr, + sdram_bank_set_bcr(OBJECT(s), &s->bank[i], s->bank= [i].bcr, s->bank[i].base, s->bank[i].siz= e, 0); } @@ -666,7 +666,7 @@ static void ppc4xx_sdram_ddr2_realize(DeviceState *dev,= Error **errp) error_setg(errp, "Missing dram memory region"); return; } - if (!ppc4xx_sdram_banks(s->dram_mr, s->nbanks, s->bank, + if (!ppc4xx_sdram_banks(OBJECT(s), s->dram_mr, s->nbanks, s->bank, valid_bank_sizes, errp)) { return; } @@ -674,10 +674,10 @@ static void ppc4xx_sdram_ddr2_realize(DeviceState *de= v, Error **errp) if (s->bank[i].size) { s->bank[i].bcr =3D sdram_ddr2_bcr(s->bank[i].base, s->bank[i].= size); s->bank[i].bcr &=3D SDRAM_DDR2_BCR_MASK; - sdram_bank_set_bcr(&s->bank[i], s->bank[i].bcr, + sdram_bank_set_bcr(OBJECT(s), &s->bank[i], s->bank[i].bcr, s->bank[i].base, s->bank[i].size, 0); } else { - sdram_bank_set_bcr(&s->bank[i], 0, 0, 0, 0); + sdram_bank_set_bcr(OBJECT(s), &s->bank[i], 0, 0, 0, 0); } trace_ppc4xx_sdram_init(sdram_ddr2_base(s->bank[i].bcr), sdram_ddr2_size(s->bank[i].bcr), diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c index 52f94b206a..c79736a1f3 100644 --- a/hw/ppc/prep.c +++ b/hw/ppc/prep.c @@ -274,7 +274,7 @@ static void ibm_40p_init(MachineState *machine) error_report("Could not find bios image '%s'", bios_name); exit(1); } - memory_region_init_rom(bios, NULL, "bios", BIOS_SIZE, &error_fatal); + memory_region_init_rom(bios, OBJECT(machine), "bios", BIOS_SIZE, &erro= r_fatal); memory_region_add_subregion(get_system_memory(), BIOS_ADDR, bios); bios_size =3D load_elf(filename, NULL, NULL, NULL, NULL, NULL, NULL, N= ULL, ELFDATA2MSB, PPC_ELF_MACHINE, 0, 0); diff --git a/hw/ppc/sam460ex.c b/hw/ppc/sam460ex.c index 59c217e2b2..20b2acb40b 100644 --- a/hw/ppc/sam460ex.c +++ b/hw/ppc/sam460ex.c @@ -375,9 +375,9 @@ static void sam460ex_init(MachineState *machine) ppc4xx_dma_init(env, 0x200); =20 /* 256K of L2 cache as memory */ - ppc4xx_l2sram_init(env); + ppc4xx_l2sram_init(OBJECT(machine), env); /* FIXME: remove this after fixing l2sram mapping in ppc440_uc.c? */ - memory_region_init_ram(l2cache_ram, NULL, "ppc440.l2cache_ram", 256 * = KiB, + memory_region_init_ram(l2cache_ram, OBJECT(machine), "ppc440.l2cache_r= am", 256 * KiB, &error_abort); memory_region_add_subregion(get_system_memory(), 0x400000000LL, l2cache_ram); --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412359; cv=none; d=zohomail.com; s=zohoarc; b=ZL86GpFG/f3lCMl+Dq2XxShBgWt4IoXqZrQaR2WlO9CiX0WBQptiXveuFjzdWHWYI7sUQ0Q42sinTurRxLANvhS/ET7CXUEKZRD7KjSsQ++TbQNFw6/btPShTe19m9K5zNQsfmQsU2mYBOnsx6ielnKVKg0p3ef/a3FCJfaEFbE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412359; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=tKAFIGvuvg+rvsXblBX4laucz3nii8xsoj3mnsvZRt4=; b=WSZt82REZhndCjIWTFrmJRqePCghYRTctZFX4XdvQerLbUKGq1v6x8gBn27kglgwwdxjoz5IBFNxZUggUEbgaXwyouURdQj0wcCGWQa2NWtHQMix77FY0P7KAKQTsueqXBQdFkBjQzf9U7gkgYngRV+5yB5STPd4RE2TL6DXPjE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412359982596.159894037476; Sat, 18 Jul 2026 15:05:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlD9d-0000LK-Su; Sat, 18 Jul 2026 18:05:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD9c-0000JK-CG; Sat, 18 Jul 2026 18:05:04 -0400 Received: from pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.245.243.92]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD9Z-000604-Pd; Sat, 18 Jul 2026 18:05:03 -0400 Received: from ip-10-5-6-203.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.6.203]) by internal-pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:04:58 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.104:12906] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.19.34:2525] with esmtp (Farcaster) id 028e2e9d-b795-427e-bae5-af8c9c9d0a84; Sat, 18 Jul 2026 22:04:57 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB001.ant.amazon.com (10.250.64.248) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:04:57 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:04:47 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412301; x=1815948301; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=tKAFIGvuvg+rvsXblBX4laucz3nii8xsoj3mnsvZRt4=; b=qNmOhyMID34X3nt9nd782xtoE4kE7Sb0mhGyj7cEMXUZCeyIurKUkpTQ PN4lRZ1oXSMn7iqtqfH3VJPVFms6tiQOR+mDjLbaHsMujnsMV4TPs0p/a FzZHMglo0HMC7PAizgZ90rkd5zLbQ2XYnAorP/ub3CrSZhqTi2AabT7yI 5ufq6AodsenwZyNRoHcuF2k6F6fBifyrlBZz9bndSb6+4Zv1vwR4kHSZ3 YwYg5e9YQfz5TtucEYMaqsfFM/4LgvDoMn5w3V25IbGPbb3MKu1zpWp3M XojYxdvkBoAjxfozscjqsB+2h6Zp2lY5jVOeHkYsJMRrVLQbiiH0fVtJv w==; X-CSE-ConnectionGUID: nG2E/lsxTzKuTF0892LWqQ== X-CSE-MsgGUID: aR7+0wUfT2yzt98xV2z6SA== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23423481" X-Farcaster-Flow-ID: 028e2e9d-b795-427e-bae5-af8c9c9d0a84 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 100/137] hw/tricore: Give memory regions an explicit owner Date: Sat, 18 Jul 2026 21:36:15 +0000 Message-ID: <20260718213652.37673-101-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D033UWC003.ant.amazon.com (10.13.139.217) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.245.243.92; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412362892158500 Content-Type: text/plain; charset="utf-8" Convert memory_region_init*() calls that pass NULL owner to pass the enclosing machine or device instead. Thread Object *owner through the static make_rom() / make_ram() / make_alia= s() helpers in tc27x_soc.c. All callers are inside tc27x_soc_init_memory_ma= pping(DeviceState *dev_soc). No functional change intended. RAMBlock idstrs are unchanged: the owners added here are Machine or SysBus devices, and memory_region_register_ram() maps both to dev=3DNULL for qemu_ram_set_idstr(). AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/tricore/tc27x_soc.c | 77 +++++++++++++++++----------------- hw/tricore/tricore_testboard.c | 12 +++--- 2 files changed, 45 insertions(+), 44 deletions(-) diff --git a/hw/tricore/tc27x_soc.c b/hw/tricore/tc27x_soc.c index 5b1b07cee1..0475698b29 100644 --- a/hw/tricore/tc27x_soc.c +++ b/hw/tricore/tc27x_soc.c @@ -67,10 +67,10 @@ const MemmapEntry tc27x_soc_memmap[] =3D { * Initialize the auxiliary ROM region @mr and map it into * the memory map at @base. */ -static void make_rom(MemoryRegion *mr, const char *name, +static void make_rom(Object *owner, MemoryRegion *mr, const char *name, hwaddr base, hwaddr size) { - memory_region_init_rom(mr, NULL, name, size, &error_fatal); + memory_region_init_rom(mr, owner, name, size, &error_fatal); memory_region_add_subregion(get_system_memory(), base, mr); } =20 @@ -78,10 +78,10 @@ static void make_rom(MemoryRegion *mr, const char *name, * Initialize the auxiliary RAM region @mr and map it into * the memory map at @base. */ -static void make_ram(MemoryRegion *mr, const char *name, +static void make_ram(Object *owner, MemoryRegion *mr, const char *name, hwaddr base, hwaddr size) { - memory_region_init_ram(mr, NULL, name, size, &error_fatal); + memory_region_init_ram(mr, owner, name, size, &error_fatal); memory_region_add_subregion(get_system_memory(), base, mr); } =20 @@ -89,10 +89,10 @@ static void make_ram(MemoryRegion *mr, const char *name, * Create an alias of an entire original MemoryRegion @orig * located at @base in the memory map. */ -static void make_alias(MemoryRegion *mr, const char *name, +static void make_alias(Object *owner, MemoryRegion *mr, const char *name, MemoryRegion *orig, hwaddr base) { - memory_region_init_alias(mr, NULL, name, orig, 0, + memory_region_init_alias(mr, owner, name, orig, 0, memory_region_size(orig)); memory_region_add_subregion(get_system_memory(), base, mr); } @@ -101,81 +101,82 @@ static void tc27x_soc_init_memory_mapping(DeviceState= *dev_soc) { TC27XSoCState *s =3D TC27X_SOC(dev_soc); TC27XSoCClass *sc =3D TC27X_SOC_GET_CLASS(s); + Object *obj =3D OBJECT(dev_soc); =20 - make_ram(&s->cpu0mem.dspr, "CPU0.DSPR", + make_ram(obj, &s->cpu0mem.dspr, "CPU0.DSPR", sc->memmap[TC27XD_DSPR0].base, sc->memmap[TC27XD_DSPR0].size); - make_ram(&s->cpu0mem.pspr, "CPU0.PSPR", + make_ram(obj, &s->cpu0mem.pspr, "CPU0.PSPR", sc->memmap[TC27XD_PSPR0].base, sc->memmap[TC27XD_PSPR0].size); - make_ram(&s->cpu1mem.dspr, "CPU1.DSPR", + make_ram(obj, &s->cpu1mem.dspr, "CPU1.DSPR", sc->memmap[TC27XD_DSPR1].base, sc->memmap[TC27XD_DSPR1].size); - make_ram(&s->cpu1mem.pspr, "CPU1.PSPR", + make_ram(obj, &s->cpu1mem.pspr, "CPU1.PSPR", sc->memmap[TC27XD_PSPR1].base, sc->memmap[TC27XD_PSPR1].size); - make_ram(&s->cpu2mem.dspr, "CPU2.DSPR", + make_ram(obj, &s->cpu2mem.dspr, "CPU2.DSPR", sc->memmap[TC27XD_DSPR2].base, sc->memmap[TC27XD_DSPR2].size); - make_ram(&s->cpu2mem.pspr, "CPU2.PSPR", + make_ram(obj, &s->cpu2mem.pspr, "CPU2.PSPR", sc->memmap[TC27XD_PSPR2].base, sc->memmap[TC27XD_PSPR2].size); =20 /* TODO: Control Cache mapping with Memory Test Unit (MTU) */ - make_ram(&s->cpu2mem.dcache, "CPU2.DCACHE", + make_ram(obj, &s->cpu2mem.dcache, "CPU2.DCACHE", sc->memmap[TC27XD_DCACHE2].base, sc->memmap[TC27XD_DCACHE2].size); - make_ram(&s->cpu2mem.dtag, "CPU2.DTAG", + make_ram(obj, &s->cpu2mem.dtag, "CPU2.DTAG", sc->memmap[TC27XD_DTAG2].base, sc->memmap[TC27XD_DTAG2].size); - make_ram(&s->cpu2mem.pcache, "CPU2.PCACHE", + make_ram(obj, &s->cpu2mem.pcache, "CPU2.PCACHE", sc->memmap[TC27XD_PCACHE2].base, sc->memmap[TC27XD_PCACHE2].size); - make_ram(&s->cpu2mem.ptag, "CPU2.PTAG", + make_ram(obj, &s->cpu2mem.ptag, "CPU2.PTAG", sc->memmap[TC27XD_PTAG2].base, sc->memmap[TC27XD_PTAG2].size); =20 - make_ram(&s->cpu1mem.dcache, "CPU1.DCACHE", + make_ram(obj, &s->cpu1mem.dcache, "CPU1.DCACHE", sc->memmap[TC27XD_DCACHE1].base, sc->memmap[TC27XD_DCACHE1].size); - make_ram(&s->cpu1mem.dtag, "CPU1.DTAG", + make_ram(obj, &s->cpu1mem.dtag, "CPU1.DTAG", sc->memmap[TC27XD_DTAG1].base, sc->memmap[TC27XD_DTAG1].size); - make_ram(&s->cpu1mem.pcache, "CPU1.PCACHE", + make_ram(obj, &s->cpu1mem.pcache, "CPU1.PCACHE", sc->memmap[TC27XD_PCACHE1].base, sc->memmap[TC27XD_PCACHE1].size); - make_ram(&s->cpu1mem.ptag, "CPU1.PTAG", + make_ram(obj, &s->cpu1mem.ptag, "CPU1.PTAG", sc->memmap[TC27XD_PTAG1].base, sc->memmap[TC27XD_PTAG1].size); =20 - make_ram(&s->cpu0mem.pcache, "CPU0.PCACHE", + make_ram(obj, &s->cpu0mem.pcache, "CPU0.PCACHE", sc->memmap[TC27XD_PCACHE0].base, sc->memmap[TC27XD_PCACHE0].size); - make_ram(&s->cpu0mem.ptag, "CPU0.PTAG", + make_ram(obj, &s->cpu0mem.ptag, "CPU0.PTAG", sc->memmap[TC27XD_PTAG0].base, sc->memmap[TC27XD_PTAG0].size); =20 /* * TriCore QEMU executes CPU0 only, thus it is sufficient to map * LOCAL.PSPR/LOCAL.DSPR exclusively onto PSPR0/DSPR0. */ - make_alias(&s->psprX, "LOCAL.PSPR", &s->cpu0mem.pspr, + make_alias(obj, &s->psprX, "LOCAL.PSPR", &s->cpu0mem.pspr, sc->memmap[TC27XD_PSPRX].base); - make_alias(&s->dsprX, "LOCAL.DSPR", &s->cpu0mem.dspr, + make_alias(obj, &s->dsprX, "LOCAL.DSPR", &s->cpu0mem.dspr, sc->memmap[TC27XD_DSPRX].base); =20 - make_ram(&s->flashmem.pflash0_c, "PF0", + make_ram(obj, &s->flashmem.pflash0_c, "PF0", sc->memmap[TC27XD_PFLASH0_C].base, sc->memmap[TC27XD_PFLASH0_C].si= ze); - make_ram(&s->flashmem.pflash1_c, "PF1", + make_ram(obj, &s->flashmem.pflash1_c, "PF1", sc->memmap[TC27XD_PFLASH1_C].base, sc->memmap[TC27XD_PFLASH1_C].si= ze); - make_ram(&s->flashmem.dflash0, "DF0", + make_ram(obj, &s->flashmem.dflash0, "DF0", sc->memmap[TC27XD_DFLASH0].base, sc->memmap[TC27XD_DFLASH0].size); - make_ram(&s->flashmem.dflash1, "DF1", + make_ram(obj, &s->flashmem.dflash1, "DF1", sc->memmap[TC27XD_DFLASH1].base, sc->memmap[TC27XD_DFLASH1].size); - make_ram(&s->flashmem.olda_c, "OLDA", + make_ram(obj, &s->flashmem.olda_c, "OLDA", sc->memmap[TC27XD_OLDA_C].base, sc->memmap[TC27XD_OLDA_C].size); - make_rom(&s->flashmem.brom_c, "BROM", + make_rom(obj, &s->flashmem.brom_c, "BROM", sc->memmap[TC27XD_BROM_C].base, sc->memmap[TC27XD_BROM_C].size); - make_ram(&s->flashmem.lmuram_c, "LMURAM", + make_ram(obj, &s->flashmem.lmuram_c, "LMURAM", sc->memmap[TC27XD_LMURAM_C].base, sc->memmap[TC27XD_LMURAM_C].size= ); - make_ram(&s->flashmem.emem_c, "EMEM", + make_ram(obj, &s->flashmem.emem_c, "EMEM", sc->memmap[TC27XD_EMEM_C].base, sc->memmap[TC27XD_EMEM_C].size); =20 - make_alias(&s->flashmem.pflash0_u, "PF0.U", &s->flashmem.pflash0_c, + make_alias(obj, &s->flashmem.pflash0_u, "PF0.U", &s->flashmem.pflas= h0_c, sc->memmap[TC27XD_PFLASH0_U].base); - make_alias(&s->flashmem.pflash1_u, "PF1.U", &s->flashmem.pflash1_c, + make_alias(obj, &s->flashmem.pflash1_u, "PF1.U", &s->flashmem.pflas= h1_c, sc->memmap[TC27XD_PFLASH1_U].base); - make_alias(&s->flashmem.olda_u, "OLDA.U", &s->flashmem.olda_c, + make_alias(obj, &s->flashmem.olda_u, "OLDA.U", &s->flashmem.olda_= c, sc->memmap[TC27XD_OLDA_U].base); - make_alias(&s->flashmem.brom_u, "BROM.U", &s->flashmem.brom_c, + make_alias(obj, &s->flashmem.brom_u, "BROM.U", &s->flashmem.brom_= c, sc->memmap[TC27XD_BROM_U].base); - make_alias(&s->flashmem.lmuram_u, "LMURAM.U", &s->flashmem.lmuram_c, + make_alias(obj, &s->flashmem.lmuram_u, "LMURAM.U", &s->flashmem.lmura= m_c, sc->memmap[TC27XD_LMURAM_U].base); - make_alias(&s->flashmem.emem_u, "EMEM.U", &s->flashmem.emem_c, + make_alias(obj, &s->flashmem.emem_u, "EMEM.U", &s->flashmem.emem_= c, sc->memmap[TC27XD_EMEM_U].base); } =20 diff --git a/hw/tricore/tricore_testboard.c b/hw/tricore/tricore_testboard.c index 9e8cccbd59..4b5398ab95 100644 --- a/hw/tricore/tricore_testboard.c +++ b/hw/tricore/tricore_testboard.c @@ -70,17 +70,17 @@ static void tricore_testboard_init(MachineState *machin= e, int board_id) =20 cpu =3D TRICORE_CPU(cpu_create(mo, "cpu", machine->cpu_type)); env =3D &cpu->env; - memory_region_init_ram(ext_cram, NULL, "powerlink_ext_c.ram", + memory_region_init_ram(ext_cram, OBJECT(machine), "powerlink_ext_c.ram= ", 2 * MiB, &error_fatal); - memory_region_init_ram(ext_dram, NULL, "powerlink_ext_d.ram", + memory_region_init_ram(ext_dram, OBJECT(machine), "powerlink_ext_d.ram= ", 4 * MiB, &error_fatal); - memory_region_init_ram(int_cram, NULL, "powerlink_int_c.ram", 48 * KiB, + memory_region_init_ram(int_cram, OBJECT(machine), "powerlink_int_c.ram= ", 48 * KiB, &error_fatal); - memory_region_init_ram(int_dram, NULL, "powerlink_int_d.ram", 48 * KiB, + memory_region_init_ram(int_dram, OBJECT(machine), "powerlink_int_d.ram= ", 48 * KiB, &error_fatal); - memory_region_init_ram(pcp_data, NULL, "powerlink_pcp_data.ram", + memory_region_init_ram(pcp_data, OBJECT(machine), "powerlink_pcp_data.= ram", 16 * KiB, &error_fatal); - memory_region_init_ram(pcp_text, NULL, "powerlink_pcp_text.ram", + memory_region_init_ram(pcp_text, OBJECT(machine), "powerlink_pcp_text.= ram", 32 * KiB, &error_fatal); =20 memory_region_add_subregion(sysmem, 0x80000000, ext_cram); --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412344; cv=none; d=zohomail.com; s=zohoarc; b=HgA2Hxv+M4+yqceYXy5glqj4JhOxz7ELBXd8fU1cKemDjCF+8ZU5h4I1aG66autwyAmO95NMz1cw0cr2huk8I6pKyZxbQvZIpFBcXLe8NHsbM8ZQ+NO2/AZqWA1H3UWVveZy95nvzE9AGcmVYMfyYTfx6EK/yekyiD1J5MIdABo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412344; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=42fWECEj/By4pP4aqwhbfUtd2TyT+YqbexkZw1F0AO4=; b=HHqiPVcbdlpO3lh9vVGFEQqF6t/yK3L7JHXIV85HU++MxecV4zJByyIC06BJP6bi7G8TMIiq602WByIEbQdNZFtpFjePtyYimeRTioZs/UgCvOxMML8VUITGX/7wtqkPObm01SZr03e1oc5GXNY5wXFB94ElpadNoRIV4Ynqkwg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412344076530.1734055222169; Sat, 18 Jul 2026 15:05:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlD9o-0000nR-QF; Sat, 18 Jul 2026 18:05:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD9m-0000ir-Jn; Sat, 18 Jul 2026 18:05:14 -0400 Received: from pdx-out-003.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.246.68.102]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD9k-00061C-1C; Sat, 18 Jul 2026 18:05:14 -0400 Received: from ip-10-5-0-115.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.0.115]) by internal-pdx-out-003.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:05:07 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.51:13962] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.41.246:2525] with esmtp (Farcaster) id 7a81a946-177b-4b3c-a93f-e0edaad297f6; Sat, 18 Jul 2026 22:05:07 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC002.ant.amazon.com (10.250.64.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:05:07 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:04:57 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412312; x=1815948312; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=42fWECEj/By4pP4aqwhbfUtd2TyT+YqbexkZw1F0AO4=; b=Ze6WXTKftG/U+yqhb7KIWkAGEunupuSX4NdY+a+6/NI0sqIqqGCi1guH sKoUenNjRUuRuVjCKVNTC/J6nOdR8myZEdo1vNO3xlQ24FZ83W42HIb2X 2EYCYmsCykSQGgnB53UBlUSQAPvw308UgrWD4WabKKMO3CVyoZrbmHsaz WAP/Eg9ADwtOaJMalYSXpo6N178eebp6+hkw66kvZ2VmQ6dshAu1D0GG3 GuwhxGBTVnkgbI3lw0nlW0KUo5JgNQyMqdN4t7wzjJVUH2icJbBRZYVrg udAGlz7lEa1OOQJyi6DtYjdqKgXZkaXIwv6mcERlFSAHMACf39me5KxhJ w==; X-CSE-ConnectionGUID: m/773KBxTMaDCKT0N5HJaA== X-CSE-MsgGUID: 5uBm1Q6kSISHTYh56CtHIg== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23942369" X-Farcaster-Flow-ID: 7a81a946-177b-4b3c-a93f-e0edaad297f6 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 101/137] hw/xtensa: Give memory regions an explicit owner Date: Sat, 18 Jul 2026 21:36:16 +0000 Message-ID: <20260718213652.37673-102-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D033UWC003.ant.amazon.com (10.13.139.217) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.246.68.102; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-003.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412344720158501 Content-Type: text/plain; charset="utf-8" Convert memory_region_init*() calls that pass NULL owner to pass the enclosing machine or device instead. Thread Object *owner through xtensa_create_memory_regions(), xtensa_mx_pic_= register_cpu() and the static xtfpga_fpga_init() helper. All callers are in= side board init functions. No functional change intended. RAMBlock idstrs are unchanged: the owners added here are Machine or SysBus devices, and memory_region_register_ram() maps both to dev=3DNULL for qemu_ram_set_idstr(). AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/xtensa/mx_pic.c | 4 ++-- hw/xtensa/sim.c | 15 ++++++++------- hw/xtensa/xtensa_memory.c | 5 +++-- hw/xtensa/xtensa_memory.h | 3 ++- hw/xtensa/xtfpga.c | 30 ++++++++++++++++-------------- include/hw/xtensa/mx_pic.h | 2 +- 6 files changed, 32 insertions(+), 27 deletions(-) diff --git a/hw/xtensa/mx_pic.c b/hw/xtensa/mx_pic.c index 8ded3bc79b..f349fb125c 100644 --- a/hw/xtensa/mx_pic.c +++ b/hw/xtensa/mx_pic.c @@ -299,7 +299,7 @@ static const MemoryRegionOps xtensa_mx_pic_ops =3D { }, }; =20 -MemoryRegion *xtensa_mx_pic_register_cpu(XtensaMxPic *mx, +MemoryRegion *xtensa_mx_pic_register_cpu(Object *owner, XtensaMxPic *mx, qemu_irq *irq, qemu_irq runstall) { @@ -309,7 +309,7 @@ MemoryRegion *xtensa_mx_pic_register_cpu(XtensaMxPic *m= x, mx_cpu->irq =3D irq; mx_cpu->runstall =3D runstall; =20 - memory_region_init_io(&mx_cpu->reg, NULL, &xtensa_mx_pic_ops, mx_cpu, + memory_region_init_io(&mx_cpu->reg, owner, &xtensa_mx_pic_ops, mx_cpu, "mx_pic", 0x280); =20 ++mx->n_cpu; diff --git a/hw/xtensa/sim.c b/hw/xtensa/sim.c index ad1439a0b4..e3cd69ceca 100644 --- a/hw/xtensa/sim.c +++ b/hw/xtensa/sim.c @@ -60,10 +60,11 @@ XtensaCPU *xtensa_sim_common_init(MachineState *machine) XtensaCPU *cpu =3D NULL; CPUXtensaState *env =3D NULL; ram_addr_t ram_size =3D machine->ram_size; + Object *mo =3D OBJECT(machine); int n; =20 for (n =3D 0; n < machine->smp.cpus; n++) { - cpu =3D XTENSA_CPU(cpu_create(OBJECT(machine), "cpu[*]", machine->= cpu_type)); + cpu =3D XTENSA_CPU(cpu_create(mo, "cpu[*]", machine->cpu_type)); env =3D &cpu->env; =20 env->sregs[PRID] =3D n; @@ -78,17 +79,17 @@ XtensaCPU *xtensa_sim_common_init(MachineState *machine) XtensaMemory sysram =3D env->config->sysram; =20 sysram.location[0].size =3D ram_size; - xtensa_create_memory_regions(&env->config->instrom, "xtensa.instro= m", + xtensa_create_memory_regions(mo, &env->config->instrom, "xtensa.in= strom", get_system_memory()); - xtensa_create_memory_regions(&env->config->instram, "xtensa.instra= m", + xtensa_create_memory_regions(mo, &env->config->instram, "xtensa.in= stram", get_system_memory()); - xtensa_create_memory_regions(&env->config->datarom, "xtensa.dataro= m", + xtensa_create_memory_regions(mo, &env->config->datarom, "xtensa.da= tarom", get_system_memory()); - xtensa_create_memory_regions(&env->config->dataram, "xtensa.datara= m", + xtensa_create_memory_regions(mo, &env->config->dataram, "xtensa.da= taram", get_system_memory()); - xtensa_create_memory_regions(&env->config->sysrom, "xtensa.sysrom", + xtensa_create_memory_regions(mo, &env->config->sysrom, "xtensa.sys= rom", get_system_memory()); - xtensa_create_memory_regions(&sysram, "xtensa.sysram", + xtensa_create_memory_regions(mo, &sysram, "xtensa.sysram", get_system_memory()); } if (serial_hd(0)) { diff --git a/hw/xtensa/xtensa_memory.c b/hw/xtensa/xtensa_memory.c index 13a6077d86..4477eea0ad 100644 --- a/hw/xtensa/xtensa_memory.c +++ b/hw/xtensa/xtensa_memory.c @@ -31,7 +31,8 @@ #include "qemu/error-report.h" #include "xtensa_memory.h" =20 -void xtensa_create_memory_regions(const XtensaMemory *memory, +void xtensa_create_memory_regions(Object *owner, + const XtensaMemory *memory, const char *name, MemoryRegion *super) { @@ -43,7 +44,7 @@ void xtensa_create_memory_regions(const XtensaMemory *mem= ory, =20 g_string_printf(num_name, "%s%u", name, i); m =3D g_new(MemoryRegion, 1); - memory_region_init_ram(m, NULL, num_name->str, + memory_region_init_ram(m, owner, num_name->str, memory->location[i].size, &error_fatal); memory_region_add_subregion(super, memory->location[i].addr, m); } diff --git a/hw/xtensa/xtensa_memory.h b/hw/xtensa/xtensa_memory.h index c86ad06685..b8b2d4b8b4 100644 --- a/hw/xtensa/xtensa_memory.h +++ b/hw/xtensa/xtensa_memory.h @@ -30,7 +30,8 @@ =20 #include "target/xtensa/cpu.h" =20 -void xtensa_create_memory_regions(const XtensaMemory *memory, +void xtensa_create_memory_regions(Object *owner, + const XtensaMemory *memory, const char *name, MemoryRegion *super); =20 diff --git a/hw/xtensa/xtfpga.c b/hw/xtensa/xtfpga.c index 1c48283f5d..f0c21180a2 100644 --- a/hw/xtensa/xtfpga.c +++ b/hw/xtensa/xtfpga.c @@ -125,12 +125,13 @@ static const MemoryRegionOps xtfpga_fpga_ops =3D { .endianness =3D DEVICE_NATIVE_ENDIAN, }; =20 -static XtfpgaFpgaState *xtfpga_fpga_init(MemoryRegion *address_space, +static XtfpgaFpgaState *xtfpga_fpga_init(Object *owner, + MemoryRegion *address_space, hwaddr base, uint32_t freq) { XtfpgaFpgaState *s =3D g_new(XtfpgaFpgaState, 1); =20 - memory_region_init_io(&s->iomem, NULL, &xtfpga_fpga_ops, s, + memory_region_init_io(&s->iomem, owner, &xtfpga_fpga_ops, s, "xtfpga.fpga", 0x10000); memory_region_add_subregion(address_space, base, &s->iomem); s->freq =3D freq; @@ -243,6 +244,7 @@ static void xtfpga_init(const XtfpgaBoardDesc *board, M= achineState *machine) uint32_t freq =3D 10000000; int n; unsigned int smp_cpus =3D machine->smp.cpus; + Object *mo =3D OBJECT(machine); =20 if (smp_cpus > 1) { mx_pic =3D xtensa_mx_pic_init(31); @@ -262,7 +264,7 @@ static void xtfpga_init(const XtfpgaBoardDesc *board, M= achineState *machine) if (mx_pic) { MemoryRegion *mx_eri; =20 - mx_eri =3D xtensa_mx_pic_register_cpu(mx_pic, + mx_eri =3D xtensa_mx_pic_register_cpu(OBJECT(machine), mx_pic, xtensa_get_extints(cenv), xtensa_get_runstall(cenv)); memory_region_add_subregion(xtensa_get_er_region(cenv), @@ -286,30 +288,30 @@ static void xtfpga_init(const XtfpgaBoardDesc *board,= MachineState *machine) XtensaMemory sysram =3D env->config->sysram; =20 sysram.location[0].size =3D machine->ram_size; - xtensa_create_memory_regions(&env->config->instrom, "xtensa.instro= m", + xtensa_create_memory_regions(mo, &env->config->instrom, "xtensa.in= strom", system_memory); - xtensa_create_memory_regions(&env->config->instram, "xtensa.instra= m", + xtensa_create_memory_regions(mo, &env->config->instram, "xtensa.in= stram", system_memory); - xtensa_create_memory_regions(&env->config->datarom, "xtensa.dataro= m", + xtensa_create_memory_regions(mo, &env->config->datarom, "xtensa.da= tarom", system_memory); - xtensa_create_memory_regions(&env->config->dataram, "xtensa.datara= m", + xtensa_create_memory_regions(mo, &env->config->dataram, "xtensa.da= taram", system_memory); - xtensa_create_memory_regions(&sysram, "xtensa.sysram", + xtensa_create_memory_regions(mo, &sysram, "xtensa.sysram", system_memory); } =20 system_io =3D g_malloc(sizeof(*system_io)); - memory_region_init_io(system_io, NULL, &xtfpga_io_ops, NULL, "xtfpga.i= o", + memory_region_init_io(system_io, OBJECT(machine), &xtfpga_io_ops, NULL= , "xtfpga.io", system_io_size); memory_region_add_subregion(system_memory, board->io[0], system_io); if (board->io[1]) { MemoryRegion *io =3D g_malloc(sizeof(*io)); =20 - memory_region_init_alias(io, NULL, "xtfpga.io.cached", + memory_region_init_alias(io, OBJECT(machine), "xtfpga.io.cached", system_io, 0, system_io_size); memory_region_add_subregion(system_memory, board->io[1], io); } - xtfpga_fpga_init(system_io, 0x0d020000, freq); + xtfpga_fpga_init(OBJECT(machine), system_io, 0x0d020000, freq); xtfpga_net_init(system_io, 0x0d030000, 0x0d030400, 0x0d800000, extints= [1]); =20 serial_mm_init(OBJECT(machine), system_io, 0x0d050020, 2, extints[0], @@ -341,7 +343,7 @@ static void xtfpga_init(const XtfpgaBoardDesc *board, M= achineState *machine) lowmem_end +=3D env->config->sysram.location[0].addr; cur_lowmem +=3D env->config->sysram.location[0].addr; =20 - xtensa_create_memory_regions(&env->config->sysrom, "xtensa.sysrom", + xtensa_create_memory_regions(mo, &env->config->sysrom, "xtensa.sys= rom", system_memory); =20 if (kernel_cmdline) { @@ -465,13 +467,13 @@ static void xtfpga_init(const XtfpgaBoardDesc *board,= MachineState *machine) size =3D board->flash->size - board->flash->boot_base; } =20 - memory_region_init_alias(flash_io, NULL, "xtfpga.flash", + memory_region_init_alias(flash_io, OBJECT(machine), "xtfpga.fl= ash", flash_mr, board->flash->boot_base, si= ze); memory_region_add_subregion(system_memory, env->config->sysrom.location[0].ad= dr, flash_io); } else { - xtensa_create_memory_regions(&env->config->sysrom, "xtensa.sys= rom", + xtensa_create_memory_regions(mo, &env->config->sysrom, "xtensa= .sysrom", system_memory); } } diff --git a/include/hw/xtensa/mx_pic.h b/include/hw/xtensa/mx_pic.h index cd316d86eb..01d5ea884e 100644 --- a/include/hw/xtensa/mx_pic.h +++ b/include/hw/xtensa/mx_pic.h @@ -35,7 +35,7 @@ typedef struct XtensaMxPic XtensaMxPic; =20 XtensaMxPic *xtensa_mx_pic_init(unsigned n_extint); void xtensa_mx_pic_reset(void *opaque); -MemoryRegion *xtensa_mx_pic_register_cpu(XtensaMxPic *mx, +MemoryRegion *xtensa_mx_pic_register_cpu(Object *owner, XtensaMxPic *mx, qemu_irq *irq, qemu_irq runstall); qemu_irq *xtensa_mx_pic_get_extints(XtensaMxPic *mx); --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412387; cv=none; d=zohomail.com; s=zohoarc; b=F/mbauhfOYVfksW4XsM+LvW02K+nZIMM2b7UupgZ3AoWsHS4G4CImfHI7e8iIHHnbAl+mpxZbsADWqN4azaKuPepFKG20EbssnsQ/r/wr/1yms+qvdFXWwS5f8/MNKuJjrMVlFMTIiBEe4Mej4hPjtq7PiHosuyj3lv4BYHPdHY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412387; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=uYXfcUGTcd7vy1ZKIayA3ffKEGDWK1Kjsc1hvCY3J34=; b=CeeWkJIBtPFxzIuP0eHDWMhw609n0rtwNGEWX3CrbP1iAxArop0JuG7QFXTA8b8saTDkoS/Y0W1cl6k7p3j2mXDGDSQQGk/vSCjyOSr7jrBhB/MA/bQ+nKGbiNHZGA0s3ptbUWjQy7C5UAI31dPO2qlGUfmJo0SqiryIfGwU1pY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412387940527.5300459267705; Sat, 18 Jul 2026 15:06:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlDAZ-0001N5-BH; Sat, 18 Jul 2026 18:06:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDAG-0001C5-4P; Sat, 18 Jul 2026 18:05:44 -0400 Received: from pdx-out-006.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.26.1.71]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDAE-0006DK-90; Sat, 18 Jul 2026 18:05:43 -0400 Received: from ip-10-5-6-203.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.6.203]) by internal-pdx-out-006.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:05:38 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.234:27628] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.30.230:2525] with esmtp (Farcaster) id 3290fc78-ff97-4dee-b4da-65640f42e02a; Sat, 18 Jul 2026 22:05:38 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA002.ant.amazon.com (10.250.64.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:05:38 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:05:28 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412342; x=1815948342; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=uYXfcUGTcd7vy1ZKIayA3ffKEGDWK1Kjsc1hvCY3J34=; b=VJx793g1WGxNGAGsJKic6KFBBY+34DMqgmRhnJ2aLe9uCy2HyHdT2Bf4 1FwNuBp3m4WoFrgHx8w76nVT55qoCUSk1t1AjiATCPh2e7VsmK5fXIZZe WBQC2hRuCsqHQYOQ62aowiBRRfQW+dLFAUyDt88n1KS0dreabEFUA1bVU umyUg+CQzaKscOyu/1vAymDPatw1ryD8UIhHNVMaslNFkx6JedB5KG9C1 eVfJ78lvbDdBwOdjZu4GlnNCxSzKAHudtgXyNaAV8zGg+BEe7s+e7ogLx x3y7z2TdM9BdqnlvK2ld0zL35msiJh7PEI8dZTAlK3g5u/kcJ98UWG5eA g==; X-CSE-ConnectionGUID: oVLAanCzRteQDpF0CiVGkQ== X-CSE-MsgGUID: B8iD5A6PTs+zlSFaABZREw== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23944849" X-Farcaster-Flow-ID: 3290fc78-ff97-4dee-b4da-65640f42e02a From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 102/137] hw/display: Give memory regions an explicit owner Date: Sat, 18 Jul 2026 21:36:17 +0000 Message-ID: <20260718213652.37673-103-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D040UWA001.ant.amazon.com (10.13.139.22) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.26.1.71; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-006.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412389333158500 Content-Type: text/plain; charset="utf-8" Convert memory_region_init*() calls in device realize functions to pass OBJECT(dev) instead of NULL. All sites (cg3, g364fb, virtio-gpu-gl, vmware_vga) already have the DeviceState in scope. omap_lcdc is handled separately together with the other OMAP peripherals. No functional change intended. RAMBlock idstrs are unchanged for all conversions except vmware_vga.c: the vmsvga.fifo RAM is now owned by a PCI device, so the convenience wrapper is replaced with the _nomigrate variant plus an explicit vmstate_register_ram_global() to preserve the historical bare idstr. All other display owners here are Machine or SysBus devices. AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/display/cg3.c | 2 +- hw/display/g364fb.c | 2 +- hw/display/virtio-gpu-gl.c | 2 +- hw/display/vmware_vga.c | 12 ++++++++++-- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/hw/display/cg3.c b/hw/display/cg3.c index f9dda1549d..507b0d8189 100644 --- a/hw/display/cg3.c +++ b/hw/display/cg3.c @@ -304,7 +304,7 @@ static void cg3_realizefn(DeviceState *dev, Error **err= p) } } =20 - memory_region_init_ram(&s->vram_mem, NULL, "cg3.vram", s->vram_size, + memory_region_init_ram(&s->vram_mem, OBJECT(dev), "cg3.vram", s->vram_= size, &error_fatal); memory_region_set_log(&s->vram_mem, true, DIRTY_MEMORY_VGA); sysbus_init_mmio(sbd, &s->vram_mem); diff --git a/hw/display/g364fb.c b/hw/display/g364fb.c index af54f1f900..0bd993b826 100644 --- a/hw/display/g364fb.c +++ b/hw/display/g364fb.c @@ -482,7 +482,7 @@ static void g364fb_init(DeviceState *dev, G364State *s) =20 memory_region_init_io(&s->mem_ctrl, OBJECT(dev), &g364fb_ctrl_ops, s, "ctrl", 0x180000); - memory_region_init_ram(&s->mem_vram, NULL, "g364fb.vram", s->vram_size, + memory_region_init_ram(&s->mem_vram, OBJECT(dev), "g364fb.vram", s->vr= am_size, &error_fatal); memory_region_set_log(&s->mem_vram, true, DIRTY_MEMORY_VGA); } diff --git a/hw/display/virtio-gpu-gl.c b/hw/display/virtio-gpu-gl.c index 2b7a41c466..b6f183123d 100644 --- a/hw/display/virtio-gpu-gl.c +++ b/hw/display/virtio-gpu-gl.c @@ -153,7 +153,7 @@ static void virtio_gpu_gl_device_realize(DeviceState *q= dev, Error **errp) } =20 gl->hostmem_mmap =3D map; - memory_region_init_ram_ptr(&gl->hostmem_background, NULL, + memory_region_init_ram_ptr(&gl->hostmem_background, OBJECT(qdev), "hostmem-background", b->conf.hostmem, gl->hostmem_mmap); memory_region_add_subregion(&b->hostmem, 0, &gl->hostmem_backgroun= d); diff --git a/hw/display/vmware_vga.c b/hw/display/vmware_vga.c index f6f9edfd1d..571c3184c2 100644 --- a/hw/display/vmware_vga.c +++ b/hw/display/vmware_vga.c @@ -1257,8 +1257,16 @@ static void vmsvga_init(DeviceState *dev, struct vms= vga_state_s *s, s->vga.con =3D qemu_graphic_console_create(dev, 0, &vmsvga_ops, s); =20 s->fifo_size =3D SVGA_FIFO_SIZE; - memory_region_init_ram(&s->fifo_ram, NULL, "vmsvga.fifo", s->fifo_size, - &error_fatal); + /* + * The fifo RAM must keep its historical bare RAMBlock idstr + * ("vmsvga.fifo") for cross-version migration. Use _nomigrate + a + * global vmstate registration so the QOM owner is the PCI device but + * the migration idstr is not prefixed with the PCI dev-path. + */ + memory_region_init_ram_flags_nomigrate(&s->fifo_ram, OBJECT(dev), + "vmsvga.fifo", s->fifo_size, 0, + &error_fatal); + vmstate_register_ram_global(&s->fifo_ram); s->fifo_ptr =3D memory_region_get_ram_ptr(&s->fifo_ram); =20 vga_common_init(&s->vga, OBJECT(dev), &error_fatal); --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412397; cv=none; d=zohomail.com; s=zohoarc; b=h7PtaBAeg6+IQOeU0zjM/uS3EjwX3Z627xTOW5eVN1otS3Ln1ABkm7POvAJc9zkAjS1kdHPPFKst2AzUGwOqfEzlcczFYfzE4zwM2rucVd1JLgx/n7NMxFVCaJm0S1wBbE/4dlssax++kFFtO4FYGpXwe+qmYY4SVbqftS//6Mc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412397; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=TGLbKWq9Z9BZZ0ElyIhhTb4+EdvWjYAXyzWadJpm6bI=; b=OAVKmMj0D64dp+5N3Cbib5bdvvr9g1a4SsI5T049pSQqutB4AUk8QVorVZHW3ImP+lsaDKH0E85WitNwNj7fSaBBIaCpOljc9Kt++K800tBGfHGVeJPQFbLqr2+vGFZWznuFoyIW4l10JJoemTUWSLr73x4iN9uU78sZNcNBySs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412397926929.7728009253203; Sat, 18 Jul 2026 15:06:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlDB0-0001X8-8e; Sat, 18 Jul 2026 18:06:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDAP-0001LT-3o; Sat, 18 Jul 2026 18:05:54 -0400 Received: from pdx-out-006.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.26.1.71]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDAM-0006DK-U0; Sat, 18 Jul 2026 18:05:52 -0400 Received: from ip-10-5-9-48.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.9.48]) by internal-pdx-out-006.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:05:48 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.104:24978] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.40.177:2525] with esmtp (Farcaster) id be74d66e-9f5c-4be6-a574-75e84bd9268f; Sat, 18 Jul 2026 22:05:47 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB001.ant.amazon.com (10.250.64.248) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:05:47 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:05:38 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412350; x=1815948350; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=TGLbKWq9Z9BZZ0ElyIhhTb4+EdvWjYAXyzWadJpm6bI=; b=eVuqg/KboZY9lwtm7opo0anF0Cp3LGIiZVFiScEmusltnF1/pbbSfMv3 UmTutZEHz8ndhg3vdTFcPrzIulv1tbH5af9MkR/ntl2IqSo4g+riv8zSg ZBfVGegt8yGrKbV2NAsmkvqSlsaZvL5Rc/ElAp7Cb0G93Xm7GloJABSU1 CLJRBJekq8IfZ/CN8QY4RZ6TgsYuTcIULKE9EKQmsrCj7qjSqRwgiMeMe 0NQVf8vxYY4023jmO9/QjUUVu6Z/XyRyBOXy9Oah89DmOYcq1xWNTceaw 2du23BO8G3kRSMuyO/pNB0RIQZXtVBjIfAjF+UGiHDeqPStekMxECew7q Q==; X-CSE-ConnectionGUID: qx349e16RYmpYL5Pv95zpg== X-CSE-MsgGUID: q3Sjx06LRv6H39Cv3Kdp/Q== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23944869" X-Farcaster-Flow-ID: be74d66e-9f5c-4be6-a574-75e84bd9268f From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 103/137] hw/arm/omap: Give lcdc and dma memory regions an explicit owner Date: Sat, 18 Jul 2026 21:36:18 +0000 Message-ID: <20260718213652.37673-104-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D040UWA001.ant.amazon.com (10.13.139.22) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.26.1.71; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-006.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412398858158500 Content-Type: text/plain; charset="utf-8" Thread Object *owner as the first argument through omap_lcdc_init() and omap_dma_init(), matching the earlier conversion of omap1.c sub-block helpers. omap310_mpu_init() passes its parent through. No functional change intended. AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/arm/omap1.c | 4 ++-- hw/display/omap_lcdc.c | 5 +++-- hw/dma/omap_dma.c | 4 ++-- include/hw/arm/omap.h | 5 +++-- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/hw/arm/omap1.c b/hw/arm/omap1.c index be6af35e26..474a3902fe 100644 --- a/hw/arm/omap1.c +++ b/hw/arm/omap1.c @@ -3800,7 +3800,7 @@ struct omap_mpu_state_s *omap310_mpu_init(Object *par= ent, MemoryRegion *dram, dma_irqs[i] =3D qdev_get_gpio_in(s->ih[omap1_dma_irq_map[i].ih], omap1_dma_irq_map[i].intr); } - s->dma =3D omap_dma_init(0xfffed800, dma_irqs, system_memory, + s->dma =3D omap_dma_init(parent, 0xfffed800, dma_irqs, system_memory, qdev_get_gpio_in(s->ih[0], OMAP_INT_DMA_LCD), s, omap_findclk(s, "dma_ck")); =20 @@ -3835,7 +3835,7 @@ struct omap_mpu_state_s *omap310_mpu_init(Object *par= ent, MemoryRegion *dram, qdev_get_gpio_in(s->ih[1], OMAP_INT_OS_TIMER), omap_findclk(s, "clk32-kHz")); =20 - s->lcd =3D omap_lcdc_init(system_memory, 0xfffec000, + s->lcd =3D omap_lcdc_init(parent, system_memory, 0xfffec000, qdev_get_gpio_in(s->ih[0], OMAP_INT_LCD_CTRL), omap_dma_get_lcdch(s->dma), omap_findclk(s, "lcd_ck")); diff --git a/hw/display/omap_lcdc.c b/hw/display/omap_lcdc.c index b88ea5f2f1..3f6066e3a8 100644 --- a/hw/display/omap_lcdc.c +++ b/hw/display/omap_lcdc.c @@ -489,7 +489,8 @@ static const GraphicHwOps omap_ops =3D { .gfx_update =3D omap_update_display, }; =20 -struct omap_lcd_panel_s *omap_lcdc_init(MemoryRegion *sysmem, +struct omap_lcd_panel_s *omap_lcdc_init(Object *owner, + MemoryRegion *sysmem, hwaddr base, qemu_irq irq, struct omap_dma_lcd_channel_s *dma, @@ -502,7 +503,7 @@ struct omap_lcd_panel_s *omap_lcdc_init(MemoryRegion *s= ysmem, s->sysmem =3D sysmem; omap_lcdc_reset(s); =20 - memory_region_init_io(&s->iomem, NULL, &omap_lcdc_ops, s, "omap.lcdc",= 0x100); + memory_region_init_io(&s->iomem, owner, &omap_lcdc_ops, s, "omap.lcdc"= , 0x100); memory_region_add_subregion(sysmem, base, &s->iomem); =20 s->con =3D qemu_graphic_console_create(NULL, 0, &omap_ops, s); diff --git a/hw/dma/omap_dma.c b/hw/dma/omap_dma.c index 77f1441498..b130ba2480 100644 --- a/hw/dma/omap_dma.c +++ b/hw/dma/omap_dma.c @@ -1089,7 +1089,7 @@ static void omap_dma_clk_update(void *opaque, int lin= e, int on) soc_dma_set_request(s->ch[i].dma, on); } =20 -struct soc_dma_s *omap_dma_init(hwaddr base, qemu_irq *irqs, +struct soc_dma_s *omap_dma_init(Object *owner, hwaddr base, qemu_irq *irqs, MemoryRegion *sysmem, qemu_irq lcd_irq, struct omap_mpu_state_s *mpu, omap_clk clk) @@ -1127,7 +1127,7 @@ struct soc_dma_s *omap_dma_init(hwaddr base, qemu_irq= *irqs, omap_dma_reset(s->dma); omap_dma_clk_update(s, 0, 1); =20 - memory_region_init_io(&s->iomem, NULL, &omap_dma_ops, s, "omap.dma", m= emsize); + memory_region_init_io(&s->iomem, owner, &omap_dma_ops, s, "omap.dma", = memsize); memory_region_add_subregion(sysmem, base, &s->iomem); =20 mpu->drq =3D s->dma->drq; diff --git a/include/hw/arm/omap.h b/include/hw/arm/omap.h index e000dffe13..591abf752b 100644 --- a/include/hw/arm/omap.h +++ b/include/hw/arm/omap.h @@ -173,7 +173,7 @@ void omap_gpio_set_clk(Omap1GpioState *gpio, omap_clk c= lk); =20 /* omap_dma.c */ struct soc_dma_s; -struct soc_dma_s *omap_dma_init(hwaddr base, qemu_irq *irqs, +struct soc_dma_s *omap_dma_init(Object *owner, hwaddr base, qemu_irq *irqs, MemoryRegion *sysmem, qemu_irq lcd_irq, struct omap_mpu_state_s *mpu, omap_clk clk= ); @@ -296,7 +296,8 @@ void omap_mcbsp_i2s_attach(struct omap_mcbsp_s *s, I2SC= odec *slave); /* omap_lcdc.c */ struct omap_lcd_panel_s; void omap_lcdc_reset(struct omap_lcd_panel_s *s); -struct omap_lcd_panel_s *omap_lcdc_init(MemoryRegion *sysmem, +struct omap_lcd_panel_s *omap_lcdc_init(Object *owner, + MemoryRegion *sysmem, hwaddr base, qemu_irq irq, struct omap_dma_lcd_channel_s *dma, --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412413; cv=none; d=zohomail.com; s=zohoarc; b=JAcUEn+iJ7tWRjZd6CoCoiWcxxCilB9ZQ1My24baterzQG2K0GAYRn+HzjKu7L6HgWyaobeFB/IVk6dvofGQL1dyzV4uCIkVZUL24Otw0Ce4I3bLsIGjdIiP4xCFEZWKQ6T9x8Ky7AnuCsroIoeTedQ5DnVYxh1SepbbtYwFwyg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412413; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=WVG7UbEd5jReDUPwyZrcT5g0dUYQucY4eitOzKM6+GY=; b=lwiiljy5AmLfJaPokEMKgnplEhRYoQQX5tNhjlBzYYzlc91hKtxD+ZhTY5fJC4amo8T6PqjdCPmKN/XQlPwIlKc+pyqzLtOy8BSqR2Knhuy6Cr5XTJ9wUX3sBuR5TGl5FPnWH3ip5eKRT1HXHsrksQfgzpvBkytfBNsRVK++SDk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178441241381348.73727417639634; Sat, 18 Jul 2026 15:06:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlDB5-0001wg-Sv; Sat, 18 Jul 2026 18:06:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDAc-0001Sx-Pk; Sat, 18 Jul 2026 18:06:20 -0400 Received: from pdx-out-004.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.246.77.92]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDAX-0006EX-52; Sat, 18 Jul 2026 18:06:03 -0400 Received: from ip-10-5-12-219.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.12.219]) by internal-pdx-out-004.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:05:57 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.51:13970] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.35.17:2525] with esmtp (Farcaster) id 240222be-972a-462e-8aca-ac2f19d26365; Sat, 18 Jul 2026 22:05:57 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC002.ant.amazon.com (10.250.64.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:05:56 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:05:47 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412361; x=1815948361; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=WVG7UbEd5jReDUPwyZrcT5g0dUYQucY4eitOzKM6+GY=; b=jwChfzwMmc9QTb5gNfYdSl2qJUwMKNIAo7NJPsGjYjxzHsg2mqgeGvVH Lwj0t1Bq46oz3n0yKGm9O/vHdFAB2QJ6sbRzrZjv6ozwPxrEHfolysvKn sTxzn6ekKI7V/HX/6bzuCnL50rM/EceIn5q59MeEO4CF4LC2dZJqAXgyQ knX/rBpfJUwcTYbhegK6J/7Vj2ShqKNoUEUdiKvsZeXfdrt+QMOgIHsKk yHmPIeLJD/RmCdncv67dBYmvmtSaLEp4MzzvOBqsdDfsWi1qCJkUYvqth yb2xu5BRBe0vattsIhZYAZAcyLuUcyUMK/ZP4lZN7oiW+/b7q3A0Dfih2 Q==; X-CSE-ConnectionGUID: vyNQ7YcwR32+ML3nTz/a7A== X-CSE-MsgGUID: uaheAJs9TTKFfoJU1OXPOQ== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23917985" X-Farcaster-Flow-ID: 240222be-972a-462e-8aca-ac2f19d26365 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 104/137] hw/char: Give parallel and htif memory regions an explicit owner Date: Sat, 18 Jul 2026 21:36:19 +0000 Message-ID: <20260718213652.37673-105-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D040UWA001.ant.amazon.com (10.13.139.22) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.246.77.92; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-004.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412414931158500 Content-Type: text/plain; charset="utf-8" Thread Object *owner as the first argument through parallel_mm_init() and htif_mm_init(). All callers are inside board init functions and pass OBJECT(machine). No functional change intended. AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/char/parallel.c | 5 +++-- hw/char/riscv_htif.c | 5 +++-- hw/hppa/machine.c | 5 +++-- hw/mips/jazz.c | 2 +- hw/riscv/spike.c | 2 +- include/hw/char/parallel.h | 3 ++- include/hw/char/riscv_htif.h | 3 ++- 7 files changed, 15 insertions(+), 10 deletions(-) diff --git a/hw/char/parallel.c b/hw/char/parallel.c index 07bbc9443f..39a1d77e9f 100644 --- a/hw/char/parallel.c +++ b/hw/char/parallel.c @@ -585,7 +585,8 @@ static const MemoryRegionOps parallel_mm_ops =3D { }; =20 /* If fd is zero, it means that the parallel device uses the console */ -bool parallel_mm_init(MemoryRegion *address_space, +bool parallel_mm_init(Object *owner, + MemoryRegion *address_space, hwaddr base, int it_shift, qemu_irq irq, Chardev *chr) { @@ -597,7 +598,7 @@ bool parallel_mm_init(MemoryRegion *address_space, s->it_shift =3D it_shift; qemu_register_reset(parallel_reset, s); =20 - memory_region_init_io(&s->iomem, NULL, ¶llel_mm_ops, s, + memory_region_init_io(&s->iomem, owner, ¶llel_mm_ops, s, "parallel", 8 << it_shift); memory_region_add_subregion(address_space, base, &s->iomem); return true; diff --git a/hw/char/riscv_htif.c b/hw/char/riscv_htif.c index 488f938d98..f9e39c31aa 100644 --- a/hw/char/riscv_htif.c +++ b/hw/char/riscv_htif.c @@ -329,7 +329,8 @@ static const MemoryRegionOps htif_mm_ops =3D { }, }; =20 -HTIFState *htif_mm_init(MemoryRegion *address_space, Chardev *chr, +HTIFState *htif_mm_init(Object *owner, + MemoryRegion *address_space, Chardev *chr, uint64_t nonelf_base, bool custom_base) { uint64_t base, size, tohost_offset, fromhost_offset; @@ -359,7 +360,7 @@ HTIFState *htif_mm_init(MemoryRegion *address_space, Ch= ardev *chr, qemu_chr_fe_set_handlers(&s->chr, htif_can_recv, htif_recv, htif_event, htif_be_change, s, NULL, true); =20 - memory_region_init_io(&s->mmio, NULL, &htif_mm_ops, s, + memory_region_init_io(&s->mmio, owner, &htif_mm_ops, s, TYPE_HTIF_UART, size); memory_region_add_subregion_overlap(address_space, base, &s->mmio, 1); diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c index 233cf6318b..ea02b9e70e 100644 --- a/hw/hppa/machine.c +++ b/hw/hppa/machine.c @@ -613,7 +613,8 @@ static void machine_HP_715_init(MachineState *machine) serial_hd(0), DEVICE_BIG_ENDIAN); =20 /* Parallel port */ - parallel_mm_init(addr_space, translate(NULL, LASI_HPA_715 + LASI_LPT += 0x800), 0, + parallel_mm_init(OBJECT(machine), addr_space, + translate(NULL, LASI_HPA_715 + LASI_LPT + 0x800), 0, qdev_get_gpio_in(lasi_dev, LASI_IRQ_LPT_HPA), parallel_hds[0]); =20 @@ -706,7 +707,7 @@ static void machine_HP_B160L_init(MachineState *machine) serial_hd(1), DEVICE_BIG_ENDIAN); =20 /* Parallel port */ - parallel_mm_init(addr_space, + parallel_mm_init(OBJECT(machine), addr_space, translate(NULL, LASI_HPA + LASI_LPT + 0x800), 0, qdev_get_gpio_in(lasi_dev, LASI_IRQ_LPT_HPA), parallel_hds[0]); diff --git a/hw/mips/jazz.c b/hw/mips/jazz.c index 8999efb352..ff18b28c86 100644 --- a/hw/mips/jazz.c +++ b/hw/mips/jazz.c @@ -385,7 +385,7 @@ static void mips_jazz_init(MachineState *machine, =20 /* Parallel port */ if (parallel_hds[0]) - parallel_mm_init(address_space, 0x80008000, 0, + parallel_mm_init(OBJECT(machine), address_space, 0x80008000, 0, qdev_get_gpio_in(rc4030, 0), parallel_hds[0]); =20 /* FIXME: missing Jazz sound at 0x8000c000, rc4030[2] */ diff --git a/hw/riscv/spike.c b/hw/riscv/spike.c index 9f1a1b5898..cd9a2ee0df 100644 --- a/hw/riscv/spike.c +++ b/hw/riscv/spike.c @@ -247,7 +247,7 @@ static void spike_board_init(MachineState *machine) fdt_load_addr); =20 /* initialize HTIF using symbols found in load_kernel */ - htif_mm_init(system_memory, serial_hd(0), memmap[SPIKE_HTIF].base, + htif_mm_init(OBJECT(machine), system_memory, serial_hd(0), memmap[SPIK= E_HTIF].base, htif_custom_base); } =20 diff --git a/include/hw/char/parallel.h b/include/hw/char/parallel.h index 782cc12602..7e8b9c9012 100644 --- a/include/hw/char/parallel.h +++ b/include/hw/char/parallel.h @@ -25,7 +25,8 @@ typedef struct ParallelState { =20 void parallel_hds_isa_init(Object *parent, ISABus *bus, int n); =20 -bool parallel_mm_init(MemoryRegion *address_space, +bool parallel_mm_init(Object *owner, + MemoryRegion *address_space, hwaddr base, int it_shift, qemu_irq irq, Chardev *chr); =20 diff --git a/include/hw/char/riscv_htif.h b/include/hw/char/riscv_htif.h index 9d61e60d0a..40516adc08 100644 --- a/include/hw/char/riscv_htif.h +++ b/include/hw/char/riscv_htif.h @@ -48,7 +48,8 @@ void htif_symbol_callback(const char *st_name, int st_inf= o, uint64_t st_value, uint64_t st_size); =20 /* legacy pre qom */ -HTIFState *htif_mm_init(MemoryRegion *address_space, Chardev *chr, +HTIFState *htif_mm_init(Object *owner, + MemoryRegion *address_space, Chardev *chr, uint64_t nonelf_base, bool custom_base); =20 #endif --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412400; cv=none; d=zohomail.com; s=zohoarc; b=KQWr6n0UF9GR88bhNzbup9muTaHLtSgKiETWzk5ZcjvajznSTnY0nx1w2bB3yoaByrGNnDGgw+N65lYJ9iYqJ+mYMQbRy6XLTrPYSksSBbt8610aTzFodmwr+IdK1GHVcSDYTmJUZxJBTgFxwyh/GVq83CfzzCQEq0pQ3nsWN4s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412400; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=XlKYJHYIZUhyMDU2fWk1xdpYp67/NUuYdfIoCtufLrc=; b=VgQ1u1z87LOaoQ0qCniw3NiPnCeJxix5q2BldzqFlfPZXKIdK0mYMdS6dpjENwE8YmzdXKkGBNFwdctnEqUlalDhPDTjGMYZ4YdhRyLMGfY4+oz1vT1CwXcrH1XG1E/7GYAZyvikXz5/s5pp5H1k30ZZ/fJAo1JTAM/+5VGqnTs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412400686128.9932896174082; Sat, 18 Jul 2026 15:06:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlDB8-0002ET-8D; Sat, 18 Jul 2026 18:06:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDB4-0001ky-Li; Sat, 18 Jul 2026 18:06:34 -0400 Received: from pdx-out-005.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.13.214.179]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDB2-0006Fa-QV; Sat, 18 Jul 2026 18:06:34 -0400 Received: from ip-10-5-0-115.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.0.115]) by internal-pdx-out-005.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:06:28 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.182:24708] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.48.250:2525] with esmtp (Farcaster) id 77fc81c3-d29e-4682-887e-b70683a9c011; Sat, 18 Jul 2026 22:06:28 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA001.ant.amazon.com (10.250.64.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:06:28 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:06:18 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412392; x=1815948392; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=XlKYJHYIZUhyMDU2fWk1xdpYp67/NUuYdfIoCtufLrc=; b=el2ijtnHRM70MsjEoboAK+CQit86ez1ETNegz9beC+y5G+0pI7BW7u1h XxM9NG/6o5jsjXiJVYl7agumacdj5AQUkPNrwMKYhgbOyWzgOLOyuqfeu vfWoGl6R1SM0kFvpScjUViRGTEkhNA9JWbay2n+lbfJlFduW/G3FEtiF2 iW/QchcSkagbpA3S6keNXQ7It9kAaFkPk+ot9pKMj6nAaAn9deFz2T2BN jLkYk1fmuXNX+j81ZWH8dB0F5/iyDwz+sSCp0BT5V3EH1PZwdnJo0dnhE 0B0k4ilR0shg+bF1iy2Cc7E8lXCqytEPMkCG8xN2fyT+3mwOy5kzBJMRx w==; X-CSE-ConnectionGUID: P2eaODHESdqpjVqeKVB4JQ== X-CSE-MsgGUID: BuKzLw8bQZyLmomT7EkOWA== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23904486" X-Farcaster-Flow-ID: 77fc81c3-d29e-4682-887e-b70683a9c011 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 105/137] hw/remote: Give memory regions an explicit owner Date: Sat, 18 Jul 2026 21:36:20 +0000 Message-ID: <20260718213652.37673-106-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D036UWB002.ant.amazon.com (10.13.139.139) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.13.214.179; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-005.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412402876158500 Content-Type: text/plain; charset="utf-8" remote_machine_init() passes OBJECT(machine). remote_sysmem_reconfig() runs in the multi-process remote and creates system-memory subregions on behalf of the machine; use qdev_get_machine() as owner. dma_register() in the vfio-user server creates DMA windows for a VfuObject; use it as owner. No functional change intended. RAMBlock idstrs are unchanged: the owners added here are Machine or SysBus devices, and memory_region_register_ram() maps both to dev=3DNULL for qemu_ram_set_idstr(). AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/remote/machine.c | 2 +- hw/remote/memory.c | 3 ++- hw/remote/vfio-user-obj.c | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/hw/remote/machine.c b/hw/remote/machine.c index e8e9cf259f..09154fa122 100644 --- a/hw/remote/machine.c +++ b/hw/remote/machine.c @@ -37,7 +37,7 @@ static void remote_machine_init(MachineState *machine) system_io =3D get_system_io(); =20 pci_memory =3D g_new(MemoryRegion, 1); - memory_region_init(pci_memory, NULL, "pci", UINT64_MAX); + memory_region_init(pci_memory, OBJECT(machine), "pci", UINT64_MAX); =20 rem_host =3D REMOTE_PCIHOST(qdev_new(OBJECT(s), "remote-pcihost", TYPE_REMOTE_PCIHOST)); diff --git a/hw/remote/memory.c b/hw/remote/memory.c index 8195aa5fb8..3f8fe54bac 100644 --- a/hw/remote/memory.c +++ b/hw/remote/memory.c @@ -12,6 +12,7 @@ =20 #include "hw/remote/memory.h" #include "qapi/error.h" +#include "hw/core/qdev.h" =20 static void remote_sysmem_reset(void) { @@ -42,7 +43,7 @@ void remote_sysmem_reconfig(MPQemuMsg *msg, Error **errp) for (region =3D 0; region < msg->num_fds; region++, suffix++) { g_autofree char *name =3D g_strdup_printf("remote-mem-%u", suffix); subregion =3D g_new(MemoryRegion, 1); - memory_region_init_ram_from_fd(subregion, NULL, + memory_region_init_ram_from_fd(subregion, qdev_get_machine(), name, sysmem_info->sizes[region], RAM_SHARED, msg->fds[region], sysmem_info->offsets[region], diff --git a/hw/remote/vfio-user-obj.c b/hw/remote/vfio-user-obj.c index 87fa7b6572..685d4c2baf 100644 --- a/hw/remote/vfio-user-obj.c +++ b/hw/remote/vfio-user-obj.c @@ -324,7 +324,7 @@ static void dma_register(vfu_ctx_t *vfu_ctx, vfu_dma_in= fo_t *info) =20 subregion =3D g_new0(MemoryRegion, 1); =20 - memory_region_init_ram_ptr(subregion, NULL, name, + memory_region_init_ram_ptr(subregion, OBJECT(o), name, iov->iov_len, info->vaddr); =20 dma_as =3D pci_device_iommu_address_space(o->pci_dev); --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412422; cv=none; d=zohomail.com; s=zohoarc; b=dcw901ddhSjBwaYYkGYwLFarSgRXEOb8KaLfouwyDvGqFLWU0ELFK63KkMz6Ii52z9wgx/fojYwjp678Lrw3mXAVL/OKNLU1E2/vH02xtNYnMM0k7Lk1qx9jFQdbHSpo23p2D8fReUUSmKvFweGIEx88tusdodxUtk+qlNmydkY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412422; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=v7Gg0RTMoE3PHga7JOaBPxL+IE5NtvtLRm4f+QKNUWQ=; b=gFC0ZymiVKxDI8QVjsro63LJ5sFYQd6N2lIqO/n4zWKANQTo1MrLG2m4BpZU4HhEmmRcouW+SKV3C9L49DcyvOX1QDsjHVnMnLCQ5IXMLksp+2qaBSJI3xiLtioZznnHNLZcdyP13sisVZztU2eJVzAA9jqEzSaroDkiNQL5agg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412422583825.4456666011938; Sat, 18 Jul 2026 15:07:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlDBG-00039n-6d; Sat, 18 Jul 2026 18:06:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDBE-0002u9-7Y; Sat, 18 Jul 2026 18:06:44 -0400 Received: from pdx-out-003.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.246.68.102]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDBC-0006GZ-CC; Sat, 18 Jul 2026 18:06:43 -0400 Received: from ip-10-5-9-48.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.9.48]) by internal-pdx-out-003.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:06:38 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.105:20403] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.58.199:2525] with esmtp (Farcaster) id b648b38f-d09c-483b-bbcb-871a0b98d8b5; Sat, 18 Jul 2026 22:06:38 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC001.ant.amazon.com (10.250.64.174) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:06:38 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:06:28 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412402; x=1815948402; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=v7Gg0RTMoE3PHga7JOaBPxL+IE5NtvtLRm4f+QKNUWQ=; b=r5i3S6bEnvjlMfZQcQGi3B0VqdbUZzN3+FTBBMO5Pp9VZSoam9/kkYHc 8hFYboHcIeA+4NHdSxMWb22AWggSc/vm1lTESaIK8+fh7baKuKCMPt2Ne il2uhARFPgOOGL+ANtJ4MdfG61J23rfLG2/CBqKGVeo9XTIDnoUB3YPm+ 2M6y+/0wYIS7fUPc48KrDXEZ72HoAHYAknMSC8ekmax/XXtn1HBEqdlrB PcSY5zSvtmsxX8sGujqOu4zbV51q/6vwt2nMReFi/M9NMRB0Y9UEQBNiY OSxDwJQrF/N71C10oeFL+Y1Jve7RK9Ag8s4T+1rv0IjsZus5q5vpodeXU Q==; X-CSE-ConnectionGUID: U19EcyNiR4qGvGPOvW+lDA== X-CSE-MsgGUID: kST7DPDuTcyFgqZbsj8dig== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23942435" X-Farcaster-Flow-ID: b648b38f-d09c-483b-bbcb-871a0b98d8b5 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 106/137] system, backends: Give named memory regions an explicit owner Date: Sat, 18 Jul 2026 21:36:21 +0000 Message-ID: <20260718213652.37673-107-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D036UWB002.ant.amazon.com (10.13.139.139) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.246.68.102; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-003.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412422891158500 Content-Type: text/plain; charset="utf-8" memory_map_init() creates the "system" and "io" root memory regions after qemu_create_machine() has instantiated current_machine, so qdev_get_machine() is available as owner. The IGVM backend creates guest-memory regions on behalf of the confidential-guest machine it carries in ctx->machine_state; use that as owner. subpage_init() and io_mem_init() pass name=3D=3DNULL and thus never QOM-parent their MemoryRegion; leave owner NULL there. No functional change intended. AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- backends/igvm.c | 6 ++++-- system/physmem.c | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/backends/igvm.c b/backends/igvm.c index 80e87fe602..544a51b70e 100644 --- a/backends/igvm.c +++ b/backends/igvm.c @@ -256,13 +256,15 @@ static void *qigvm_prepare_memory(QIgvm *ctx, uint64_= t addr, uint64_t size, igvm_pages =3D g_new0(MemoryRegion, 1); if (ctx->machine_state->cgs && ctx->machine_state->cgs->require_guest_memfd) { - if (!memory_region_init_ram_guest_memfd(igvm_pages, NULL, + if (!memory_region_init_ram_guest_memfd(igvm_pages, + OBJECT(ctx->machine_s= tate), region_name, size, err= p)) { g_free(igvm_pages); return NULL; } } else { - if (!memory_region_init_ram(igvm_pages, NULL, region_name, siz= e, + if (!memory_region_init_ram(igvm_pages, OBJECT(ctx->machine_st= ate), + region_name, size, errp)) { g_free(igvm_pages); return NULL; diff --git a/system/physmem.c b/system/physmem.c index c21ea92915..8466885994 100644 --- a/system/physmem.c +++ b/system/physmem.c @@ -3100,11 +3100,11 @@ static void memory_map_init(void) { system_memory =3D g_malloc(sizeof(*system_memory)); =20 - memory_region_init(system_memory, NULL, "system", UINT64_MAX); + memory_region_init(system_memory, qdev_get_machine(), "system", UINT64= _MAX); address_space_init(&address_space_memory, system_memory, "memory"); =20 system_io =3D g_malloc(sizeof(*system_io)); - memory_region_init_io(system_io, NULL, &unassigned_io_ops, NULL, "io", + memory_region_init_io(system_io, qdev_get_machine(), &unassigned_io_op= s, NULL, "io", 65536); address_space_init(&address_space_io, system_io, "I/O"); } --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412437; cv=none; d=zohomail.com; s=zohoarc; b=L9lyiSqfsuDP7sHM8O8dQyulRo1FPgAv8lpPQHj1ohmlBkNkBSZGA8D34YI5XE6MNshf59/7nNMjZeEyya4Ydxjgubu7y14oifV/NaCnp6jKLRGbM9N1pOHGIoKsGZyKl485StWl/5FyKpugEPdVw9/hVke32VWyyTiu1lRMZQQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412437; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Bf2p0UMpWSGplqSzcxf51p2ckh1yy0+rCZ/xLdiJQho=; b=XQWKZVr+O0FT1eNVtHEENtgQ0kI17vLB+2jPpNRWGyMlY4FdxKrd4O+GD5NuoOO6WGfSkwmlMlStD4JWgw+/0kykyGzE1hJWuLnVwh9STTOQgwXrGJaE+Xaflj/Xk1B3aEg33AiDHFJhoKJwFWjxwloZvZ1xpJmwioFRXvkzKFA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412436907313.28140135665944; Sat, 18 Jul 2026 15:07:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlDBh-00052x-CZ; Sat, 18 Jul 2026 18:07:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDBa-0004y2-Ek; Sat, 18 Jul 2026 18:07:06 -0400 Received: from pdx-out-015.esa.us-west-2.outbound.mail-perimeter.amazon.com ([50.112.246.219]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDBY-0006He-GX; Sat, 18 Jul 2026 18:07:06 -0400 Received: from ip-10-5-12-219.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.12.219]) by internal-pdx-out-015.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:06:48 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.48:24486] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.48.250:2525] with esmtp (Farcaster) id c9f51611-2e7a-4f79-be1b-3b34475a82d4; Sat, 18 Jul 2026 22:06:48 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB002.ant.amazon.com (10.250.64.231) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:06:47 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:06:38 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412424; x=1815948424; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Bf2p0UMpWSGplqSzcxf51p2ckh1yy0+rCZ/xLdiJQho=; b=tZTZ+vy66yqZxEkHq5g0DW81Jn2sEKTzcu5ZUIjx1Yn1N1fXntzrJkH3 DGejF0cd2Y1M5qy/Rwg0gxCiJLK3Iokzy+pDaIEF57YxG2VmPu+3ccX6i oN/9nJFmNV8JARoBEbAyIJ4SCEs5jXYaJHN+XSc2mkrzznQLKCxIj2REK dBeYtieUY9nnZuiE08zxOuBc6Hfa34X/svsQW04Ir5kF2mALqfq1f3/32 5Pe1b+Ct+S5Dmv2AW02tb0NZgFjceCluIxyXYFTBCa/dI3cGCljpHZW0y mr1KsDr234sNo0nPW8G7BkVU70tytZ1PsdRGmOt4sPjsIXaNJXCaOJfwe w==; X-CSE-ConnectionGUID: 9v2wO3KOQXamLkHy88kWMA== X-CSE-MsgGUID: x3d2y7ZISLueLRjDa8hQHg== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23725699" X-Farcaster-Flow-ID: c9f51611-2e7a-4f79-be1b-3b34475a82d4 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 107/137] hw/ide: Let ide_init_ioport() take an explicit owner Date: Sat, 18 Jul 2026 21:36:22 +0000 Message-ID: <20260718213652.37673-108-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D036UWB002.ant.amazon.com (10.13.139.139) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=50.112.246.219; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-015.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412439151158500 Content-Type: text/plain; charset="utf-8" hw/ide/piix.c calls ide_init_ioport() with a NULL ISADevice because the PIIX IDE function is a PCI device, not an ISA one. That NULL propagates to isa_register_portio_list() and from there to portio_list_init() as owner=3D=3DNULL, which the following commit turns into a hard error. Change ide_init_ioport() to take an Object *owner directly. When the owner is an ISADevice, keep the existing isa_register_portio_list() path so isa_init_ioport() still records the base I/O port for firmware paths. When it is not (the PIIX case), register the port lists with the given owner directly. AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/ide/ide-internal.h | 2 +- hw/ide/ioport.c | 37 ++++++++++++++++++++++++++----------- hw/ide/isa.c | 2 +- hw/ide/piix.c | 2 +- 4 files changed, 29 insertions(+), 14 deletions(-) diff --git a/hw/ide/ide-internal.h b/hw/ide/ide-internal.h index 281d07c9d5..3f48335cdf 100644 --- a/hw/ide/ide-internal.h +++ b/hw/ide/ide-internal.h @@ -419,7 +419,7 @@ uint32_t ide_data_readl(void *opaque, uint32_t addr); int ide_init_drive(IDEState *s, IDEDevice *dev, IDEDriveKind kind, Error *= *errp); void ide_exit(IDEState *s); void ide_bus_init_output_irq(IDEBus *bus, qemu_irq irq_out); -int ide_init_ioport(IDEBus *bus, ISADevice *isa, int iobase, int iobase2); +int ide_init_ioport(IDEBus *bus, Object *owner, int iobase, int iobase2); void ide_bus_set_irq(IDEBus *bus); void ide_bus_register_restart_cb(IDEBus *bus); =20 diff --git a/hw/ide/ioport.c b/hw/ide/ioport.c index a2f457f0bd..afafe6844c 100644 --- a/hw/ide/ioport.c +++ b/hw/ide/ioport.c @@ -1,5 +1,5 @@ /* - * QEMU IDE disk and CD/DVD-ROM Emulator + * QEMU IDE Emulation: PIO ioport registration. * * Copyright (c) 2003 Fabrice Bellard * Copyright (c) 2006 Openedhand Ltd. @@ -28,19 +28,34 @@ #include "ide-internal.h" #include "trace.h" =20 -int ide_init_ioport(IDEBus *bus, ISADevice *dev, int iobase, int iobase2) +int ide_init_ioport(IDEBus *bus, Object *owner, int iobase, int iobase2) { + ISADevice *isa =3D ISA_DEVICE(object_dynamic_cast(owner, TYPE_ISA_DEVI= CE)); int ret; =20 - /* ??? Assume only ISA and PCI configurations, and that the PCI-ISA - bridge has been setup properly to always register with ISA. */ - ret =3D isa_register_portio_list(dev, &bus->portio_list, - iobase, ide_portio_list, bus, "ide"); - - if (ret =3D=3D 0 && iobase2) { - ret =3D isa_register_portio_list(dev, &bus->portio2_list, - iobase2, ide_portio2_list, bus, "id= e"); + if (isa) { + ret =3D isa_register_portio_list(isa, &bus->portio_list, + iobase, ide_portio_list, bus, "ide"= ); + if (ret =3D=3D 0 && iobase2) { + ret =3D isa_register_portio_list(isa, &bus->portio2_list, + iobase2, ide_portio2_list, bus, + "ide"); + } + return ret; } =20 - return ret; + /* PIIX3/4: no ISADevice, but ISA I/O space is set up by the PCI-ISA */ + /* bridge; register the port lists directly with the given owner. */ + if (!isa_address_space_io(NULL)) { + return -ENODEV; + } + portio_list_init(&bus->portio_list, owner, ide_portio_list, bus, "ide"= ); + portio_list_add(&bus->portio_list, isa_address_space_io(NULL), iobase); + if (iobase2) { + portio_list_init(&bus->portio2_list, owner, + ide_portio2_list, bus, "ide"); + portio_list_add(&bus->portio2_list, + isa_address_space_io(NULL), iobase2); + } + return 0; } diff --git a/hw/ide/isa.c b/hw/ide/isa.c index 37457be035..7949625e00 100644 --- a/hw/ide/isa.c +++ b/hw/ide/isa.c @@ -71,7 +71,7 @@ static void isa_ide_realizefn(DeviceState *dev, Error **e= rrp) ISAIDEState *s =3D ISA_IDE(dev); =20 ide_bus_init(&s->bus, sizeof(s->bus), dev, 0, 2); - ide_init_ioport(&s->bus, isadev, s->iobase, s->iobase2); + ide_init_ioport(&s->bus, OBJECT(isadev), s->iobase, s->iobase2); ide_bus_init_output_irq(&s->bus, isa_get_irq(isadev, s->irqnum)); vmstate_register_any(VMSTATE_IF(dev), &vmstate_ide_isa, s); ide_bus_register_restart_cb(&s->bus); diff --git a/hw/ide/piix.c b/hw/ide/piix.c index a0f2709c69..5c5b91fa52 100644 --- a/hw/ide/piix.c +++ b/hw/ide/piix.c @@ -134,7 +134,7 @@ static bool pci_piix_init_bus(PCIIDEState *d, unsigned = i, Error **errp) int ret; =20 ide_bus_init(&d->bus[i], sizeof(d->bus[i]), DEVICE(d), i, 2); - ret =3D ide_init_ioport(&d->bus[i], NULL, port_info[i].iobase, + ret =3D ide_init_ioport(&d->bus[i], OBJECT(d), port_info[i].iobase, port_info[i].iobase2); if (ret) { error_setg_errno(errp, -ret, "Failed to realize %s port %u", --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412462; cv=none; d=zohomail.com; s=zohoarc; b=nT8EvT2FM4+/CHC/OZpbWHr5D3sN88CIgWG0ekV+MAl+EJwVf0gYQnVRiVgGHyH5lOQZK8QK7TOy9NLDZkn2zkDKwifc22NPH0MbIfFsdfX6BB20mV/gMyhJhBvCdUbAmldhqySqbxip77W+juTE71IkrCdNcoRT9BI96De0IX8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412462; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=55SFmn7YY6K/MBM3JuF967S/TaYaKf1YhgQPTJk68Tc=; b=OW3hpfa12xbiEAdDcgLct7aJU0FR5OKKaZmsHo+zR7LOlxaBYTWzfw1H/EQ58pQ+7bWUSjxooazugXViLow2Yu3fPFKHyNfgHnuUQ9y2MTHY2uT6lQbD/jBPDBjFaYCQuJO6S+wy6MaV2kRzAJhGABAQfZT3xyElPR5qZgteAxk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178441246278236.8377011380021; Sat, 18 Jul 2026 15:07:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlDBv-0005r7-EA; Sat, 18 Jul 2026 18:07:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDBu-0005pG-6g; Sat, 18 Jul 2026 18:07:26 -0400 Received: from pdx-out-003.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.246.68.102]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDBs-0006Jt-Cq; Sat, 18 Jul 2026 18:07:25 -0400 Received: from ip-10-5-0-115.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.0.115]) by internal-pdx-out-003.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:07:19 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.234:27061] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.19.34:2525] with esmtp (Farcaster) id a20f09b3-eb34-4ef8-b450-f12e054ddefd; Sat, 18 Jul 2026 22:07:19 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA002.ant.amazon.com (10.250.64.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:07:18 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:07:09 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412444; x=1815948444; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=55SFmn7YY6K/MBM3JuF967S/TaYaKf1YhgQPTJk68Tc=; b=NMb+Ij/mNxeX1CVYHwSI1HY2rFpho+V6Z49jBeWQfbX9EhLnGNNdVQXe bseivs4Aj2QwxetHBDXz0HqJhx1O1WGyButNxb95FiIWQgWCsTWuTdQHR LwW5GG1Y4VwU/LmuQXO4hcwbqNws6WPixI4YH0POXiEreS+ybJ/G2zkxP iMCH9xOPwQtndS59Z4fj2DczXqNHn2d6IDoB92yIx1PFXWDaWd1CgqeHF 00lwBFYzTmSaq8IxcLbNTOtmbowPhLgRMbAYhsMJhOHeBOdNec5vGMebM mZnLgaTefB9AFWz9MrQ8vO5U/G+tR28KVWx25qTZHGsAO3m7wYWZNySfd A==; X-CSE-ConnectionGUID: UF+PGGPWSSCZaalGleLw1w== X-CSE-MsgGUID: nJ7aeXq7RZ2Yt8ALZut9Xw== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23942476" X-Farcaster-Flow-ID: a20f09b3-eb34-4ef8-b450-f12e054ddefd From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 108/137] memory: Require an owner for named memory regions Date: Sat, 18 Jul 2026 21:36:23 +0000 Message-ID: <20260718213652.37673-109-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D040UWA004.ant.amazon.com (10.13.139.93) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.246.68.102; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-003.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412463103158500 Content-Type: text/plain; charset="utf-8" Now that every named memory region in the tree passes an explicit owner, replace the /machine/unattached fallback in memory_region_do_init() and portio_list_add_1() with an assertion. Anonymous (name=3D=3DNULL) regions such as subpages and io_mem_unassigned are never QOM-parented and continue to accept a NULL owner. AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- system/ioport.c | 7 ++----- system/memory.c | 7 +++---- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/system/ioport.c b/system/ioport.c index 0a1b80f299..0415b3cd60 100644 --- a/system/ioport.c +++ b/system/ioport.c @@ -248,11 +248,8 @@ static void portio_list_add_1(PortioList *piolist, /* Reparent the MemoryRegion to the piolist owner */ object_ref(&mrpio->mr); object_unparent(OBJECT(&mrpio->mr)); - if (!piolist->owner) { - owner =3D machine_get_container("unattached"); - } else { - owner =3D piolist->owner; - } + g_assert(piolist->owner); + owner =3D piolist->owner; name =3D g_strdup_printf("%s[*]", piolist->name); object_property_add_child(owner, name, OBJECT(&mrpio->mr)); g_free(name); diff --git a/system/memory.c b/system/memory.c index 838be57b4d..d1ac7ffa04 100644 --- a/system/memory.c +++ b/system/memory.c @@ -1230,14 +1230,13 @@ static void memory_region_do_init(MemoryRegion *mr, mr->dev =3D (DeviceState *) object_dynamic_cast(mr->owner, TYPE_DEVICE= ); mr->ram_block =3D NULL; =20 + /* A named MemoryRegion is a QOM child of @owner */ + g_assert(!name || owner); + if (name) { char *escaped_name =3D memory_region_escape_name(name); char *name_array =3D g_strdup_printf("%s[*]", escaped_name); =20 - if (!owner) { - owner =3D machine_get_container("unattached"); - } - object_property_add_child(owner, name_array, OBJECT(mr)); object_unref(OBJECT(mr)); g_free(name_array); --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412493; cv=none; d=zohomail.com; s=zohoarc; b=jPbVg+B0r+/e8fECo4Qn87kvBPndgpCJSSxgL6PvOLXzWJ028JPcUQ76mL/jkMfcgwDx2TB2GtYvnOCVPyXkLlOwd3gT8ZHJBAPIZbjgGgC33PDeuwWSZLaY6UukhCvLFmT5IOMVVVNVPzreFtDvkUov3bclutYenuOOnYOFvQI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412493; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=OoQxjCADQ8UBzdUnFDh1k5UsUdn7k/2ftJOorguxQEo=; b=h8Ls1jkA4a27Rv1+X3v50aWGgIc0AOFIOdyqczKv4miT1zPyN6RiW/fTM7/GH3ozUVzyPf9abayHEW0b/ysr8cjeO/uFW+i6HFn46K2T1Aqw67ztlsipZfcmfqyHPkNDIZpMIsWrgvaS54BVvpnysE0TYVKo7/d5aBKN65ICW4A= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412493170101.80478938659382; Sat, 18 Jul 2026 15:08:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlDC8-0006Cj-KF; Sat, 18 Jul 2026 18:07:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDC5-000690-5T; Sat, 18 Jul 2026 18:07:37 -0400 Received: from pdx-out-005.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.13.214.179]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDC0-0006KR-O0; Sat, 18 Jul 2026 18:07:36 -0400 Received: from ip-10-5-0-115.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.0.115]) by internal-pdx-out-005.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:07:29 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.104:19553] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.30.230:2525] with esmtp (Farcaster) id 6882ee98-d0e8-42ca-b771-812edd2643b8; Sat, 18 Jul 2026 22:07:28 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB001.ant.amazon.com (10.250.64.248) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:07:28 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:07:18 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412452; x=1815948452; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=OoQxjCADQ8UBzdUnFDh1k5UsUdn7k/2ftJOorguxQEo=; b=gcLXzCuBx+wmndlJ4pkEHvfN2CyFO7DfzU7cDHTy/hjxbl0oeYBzbyvu 9WfO5dtheMbkkRhC82nUd5WDpd+pXilY/v9TSQgi2bE77G+qc9K5/TNQh Pf2toK3b1cl5ZJVJLTI9AeYgj/1nNE+a7ncBeQnXfeSjRlIlrjLvdl8ST ReJAAMDV0lzPFNwaYYizACIjhnK7SrYVAsxDr6nnz27RzbOi2zGNUQu3O e63fi/JV24KhUQgjAkgtGSdNWRcsSEBZ2C5w4lU8KBc+3j958cOG8iZpe RaJpZeZ2EZR/eP8gdIozOnHAMWeyZRKHzlOy6hdGCPOMSaVCrd9RaPppe A==; X-CSE-ConnectionGUID: xf6Y2yMPQgy6P7iXYJX+jg== X-CSE-MsgGUID: BzLY2Z28QbyAdxRkreQWQQ== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23904546" X-Farcaster-Flow-ID: 6882ee98-d0e8-42ca-b771-812edd2643b8 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 109/137] irq: Rename qemu_allocate_irq*() and friends to *_orphan() Date: Sat, 18 Jul 2026 21:36:24 +0000 Message-ID: <20260718213652.37673-110-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D040UWA004.ant.amazon.com (10.13.139.93) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.13.214.179; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-005.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412495478158500 Content-Type: text/plain; charset="utf-8" Mechanical rename of the IRQ allocation helpers that create an IRQState via object_new() with no QOM parent: qemu_allocate_irq -> qemu_allocate_irq_orphan qemu_allocate_irqs -> qemu_allocate_irqs_orphan qemu_extend_irqs -> qemu_extend_irqs_orphan qemu_irq_invert -> qemu_irq_invert_orphan The next commit reintroduces the well-known names with a mandatory (owner, name, ...) prefix, and later commits convert every caller per subdirectory before deleting the *_orphan() variants. Coccinelle: scripts/coccinelle/qom-parent/irq-rename.cocci git ls-files '*.c' '*.h' | grep -v '^subprojects/' | xargs sed -i -e 's/\bqemu_allocate_irqs\b/qemu_allocate_irqs_orphan/g' \ -e 's/\bqemu_allocate_irq\b/qemu_allocate_irq_orphan/g' \ -e 's/\bqemu_extend_irqs\b/qemu_extend_irqs_orphan/g' \ -e 's/\bqemu_irq_invert\b/qemu_irq_invert_orphan/g' AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/alpha/typhoon.c | 4 ++-- hw/arm/armsse.c | 4 ++-- hw/arm/exynos4_boards.c | 2 +- hw/arm/mps2-tz.c | 2 +- hw/arm/omap1.c | 14 +++++++------- hw/arm/realview.c | 2 +- hw/arm/stellaris.c | 10 +++++----- hw/char/diva-gsp.c | 2 +- hw/core/gpio.c | 2 +- hw/core/irq.c | 14 +++++++------- hw/display/macfb.c | 2 +- hw/dma/omap_dma.c | 4 ++-- hw/i386/kvm/i8259.c | 2 +- hw/i386/microvm.c | 2 +- hw/i386/pc.c | 4 ++-- hw/i386/pc_piix.c | 2 +- hw/i386/x86-cpu.c | 2 +- hw/i386/xen/xen-hvm.c | 2 +- hw/ide/ahci.c | 2 +- hw/ide/pci.c | 2 +- hw/intc/sh_intc.c | 2 +- hw/isa/i82378.c | 2 +- hw/isa/lpc_ich9.c | 2 +- hw/m68k/mcf5206.c | 2 +- hw/m68k/q800.c | 4 ++-- hw/mips/mips_int.c | 2 +- hw/net/can/can_kvaser_pci.c | 2 +- hw/pci-host/pnv_phb3.c | 2 +- hw/pci-host/pnv_phb3_msi.c | 2 +- hw/pci-host/pnv_phb4.c | 2 +- hw/pci/pci.c | 2 +- hw/ppc/e500.c | 2 +- hw/ppc/pnv_lpc.c | 2 +- hw/ppc/pnv_psi.c | 4 ++-- hw/ppc/spapr_irq.c | 2 +- hw/riscv/sifive_u.c | 2 +- hw/scsi/esp-pci.c | 2 +- hw/sh4/sh7750.c | 2 +- hw/sparc/sun4m.c | 4 ++-- hw/sparc64/sun4u.c | 2 +- hw/timer/arm_timer.c | 4 ++-- hw/usb/vt82c686-uhci-pci.c | 2 +- hw/xen/xen-pvh-common.c | 4 ++-- hw/xtensa/mx_pic.c | 2 +- hw/xtensa/pic_cpu.c | 4 ++-- include/hw/core/irq.h | 8 ++++---- scripts/coccinelle/qom-parent/irq-rename.cocci | 15 +++++++++++++++ system/qtest.c | 2 +- 48 files changed, 91 insertions(+), 76 deletions(-) create mode 100644 scripts/coccinelle/qom-parent/irq-rename.cocci diff --git a/hw/alpha/typhoon.c b/hw/alpha/typhoon.c index af39f2659b..671e8f89d9 100644 --- a/hw/alpha/typhoon.c +++ b/hw/alpha/typhoon.c @@ -849,8 +849,8 @@ PCIBus *typhoon_init(Object *parent, MemoryRegion *ram,= qemu_irq *p_isa_irq, } } =20 - *p_isa_irq =3D qemu_allocate_irq(typhoon_set_isa_irq, s, 0); - *p_rtc_irq =3D qemu_allocate_irq(typhoon_set_timer_irq, s, 0); + *p_isa_irq =3D qemu_allocate_irq_orphan(typhoon_set_isa_irq, s, 0); + *p_rtc_irq =3D qemu_allocate_irq_orphan(typhoon_set_timer_irq, s, 0); =20 /* Main memory region, 0x00.0000.0000. Real hardware supports 32GB, but the address space hole reserved at this point is 8TB. */ diff --git a/hw/arm/armsse.c b/hw/arm/armsse.c index 81895ad370..93f6715224 100644 --- a/hw/arm/armsse.c +++ b/hw/arm/armsse.c @@ -693,7 +693,7 @@ static void armsse_forward_sec_resp_cfg(ARMSSE *s) DeviceState *dev_splitter =3D DEVICE(&s->sec_resp_splitter); =20 qdev_init_gpio_out_named(dev, &s->sec_resp_cfg, "sec_resp_cfg", 1); - s->sec_resp_cfg_in =3D qemu_allocate_irq(irq_status_forwarder, + s->sec_resp_cfg_in =3D qemu_allocate_irq_orphan(irq_status_forwarder, s->sec_resp_cfg, 1); qdev_connect_gpio_out(dev_splitter, 2, s->sec_resp_cfg_in); } @@ -1137,7 +1137,7 @@ static void armsse_realize(DeviceState *dev, Error **= errp) sysbus_mmio_map(sbd_secctl, 0, 0x50080000); sysbus_mmio_map(sbd_secctl, 1, 0x40080000); =20 - s->nsc_cfg_in =3D qemu_allocate_irq(nsccfg_handler, s, 1); + s->nsc_cfg_in =3D qemu_allocate_irq_orphan(nsccfg_handler, s, 1); qdev_connect_gpio_out_named(dev_secctl, "nsc_cfg", 0, s->nsc_cfg_in); =20 /* The sec_resp_cfg output from the security controller must be split = into diff --git a/hw/arm/exynos4_boards.c b/hw/arm/exynos4_boards.c index 8430317815..537a50f8cc 100644 --- a/hw/arm/exynos4_boards.c +++ b/hw/arm/exynos4_boards.c @@ -146,7 +146,7 @@ static void smdkc210_init(MachineState *machine) EXYNOS4_BOARD_SMDKC2= 10); =20 lan9215_init(SMDK_LAN9118_BASE_ADDR, - qemu_irq_invert(s->soc.irq_table[exynos4210_get_irq(37, 1)])); + qemu_irq_invert_orphan(s->soc.irq_table[exynos4210_get_irq(37,= 1)])); arm_load_kernel(s->soc.cpu[0], machine, &exynos4_board_binfo); } =20 diff --git a/hw/arm/mps2-tz.c b/hw/arm/mps2-tz.c index a57915e208..654eaedd97 100644 --- a/hw/arm/mps2-tz.c +++ b/hw/arm/mps2-tz.c @@ -1209,7 +1209,7 @@ static void mps2tz_common_init(MachineState *machine) * Connect the line from the SCC so that we can remap when the * guest updates that register. */ - mms->remap_irq =3D qemu_allocate_irq(remap_irq_fn, mms, 0); + mms->remap_irq =3D qemu_allocate_irq_orphan(remap_irq_fn, mms, 0); qdev_connect_gpio_out_named(DEVICE(&mms->scc), "remap", 0, mms->remap_irq); } diff --git a/hw/arm/omap1.c b/hw/arm/omap1.c index 474a3902fe..53e52ef34e 100644 --- a/hw/arm/omap1.c +++ b/hw/arm/omap1.c @@ -139,7 +139,7 @@ static void omap_timer_clk_update(void *opaque, int lin= e, int on) static void omap_timer_clk_setup(struct omap_mpu_timer_s *timer) { omap_clk_adduser(timer->clk, - qemu_allocate_irq(omap_timer_clk_update, timer, 0)); + qemu_allocate_irq_orphan(omap_timer_clk_update, timer,= 0)); timer->rate =3D omap_clk_getrate(timer->clk); } =20 @@ -2083,14 +2083,14 @@ static struct omap_mpuio_s *omap_mpuio_init(Object = *owner, =20 s->irq =3D gpio_int; s->kbd_irq =3D kbd_int; - s->in =3D qemu_allocate_irqs(omap_mpuio_set, s, 16); + s->in =3D qemu_allocate_irqs_orphan(omap_mpuio_set, s, 16); omap_mpuio_reset(s); =20 memory_region_init_io(&s->iomem, owner, &omap_mpuio_ops, s, "omap-mpuio", 0x800); memory_region_add_subregion(memory, base, &s->iomem); =20 - omap_clk_adduser(clk, qemu_allocate_irq(omap_mpuio_onoff, s, 0)); + omap_clk_adduser(clk, qemu_allocate_irq_orphan(omap_mpuio_onoff, s, 0)= ); =20 return s; } @@ -2363,7 +2363,7 @@ static struct omap_pwl_s *omap_pwl_init(Object *owner, "omap-pwl", 0x800); memory_region_add_subregion(system_memory, base, &s->iomem); =20 - omap_clk_adduser(clk, qemu_allocate_irq(omap_pwl_clk_update, s, 0)); + omap_clk_adduser(clk, qemu_allocate_irq_orphan(omap_pwl_clk_update, s,= 0)); return s; } =20 @@ -3426,8 +3426,8 @@ static void omap_mcbsp_i2s_start(void *opaque, int li= ne, int level) void omap_mcbsp_i2s_attach(struct omap_mcbsp_s *s, I2SCodec *slave) { s->codec =3D slave; - slave->rx_swallow =3D qemu_allocate_irq(omap_mcbsp_i2s_swallow, s, 0); - slave->tx_start =3D qemu_allocate_irq(omap_mcbsp_i2s_start, s, 0); + slave->rx_swallow =3D qemu_allocate_irq_orphan(omap_mcbsp_i2s_swallow,= s, 0); + slave->tx_start =3D qemu_allocate_irq_orphan(omap_mcbsp_i2s_start, s, = 0); } =20 /* LED Pulse Generators */ @@ -3579,7 +3579,7 @@ static struct omap_lpg_s *omap_lpg_init(Object *owner, "omap-lpg", 0x800); memory_region_add_subregion(system_memory, base, &s->iomem); =20 - omap_clk_adduser(clk, qemu_allocate_irq(omap_lpg_clk_update, s, 0)); + omap_clk_adduser(clk, qemu_allocate_irq_orphan(omap_lpg_clk_update, s,= 0)); =20 return s; } diff --git a/hw/arm/realview.c b/hw/arm/realview.c index 73bfffa6e6..cd63f39f42 100644 --- a/hw/arm/realview.c +++ b/hw/arm/realview.c @@ -276,7 +276,7 @@ static void realview_init(MachineState *machine, =20 split_irq_from_named(OBJECT(machine), dev, "card-inserted", qdev_get_gpio_in(sysctl, ARM_SYSCTL_GPIO_MMC_CARDIN), - qemu_irq_invert(qdev_get_gpio_in(gpio2, 0))); + qemu_irq_invert_orphan(qdev_get_gpio_in(gpio2, 0))); =20 dinfo =3D drive_get(IF_SD, 0, 0); if (dinfo) { diff --git a/hw/arm/stellaris.c b/hw/arm/stellaris.c index 1bc428e063..a5d037094a 100644 --- a/hw/arm/stellaris.c +++ b/hw/arm/stellaris.c @@ -1358,15 +1358,15 @@ static void stellaris_init(MachineState *ms, stella= ris_board_info *board) sysbus_realize(SYS_BUS_DEVICE(gpad), &error_fatal); =20 qdev_connect_gpio_out(gpad, 0, - qemu_irq_invert(gpio_in[GPIO_E][0])); /* up = */ + qemu_irq_invert_orphan(gpio_in[GPIO_E][0]));= /* up */ qdev_connect_gpio_out(gpad, 1, - qemu_irq_invert(gpio_in[GPIO_E][1])); /* dow= n */ + qemu_irq_invert_orphan(gpio_in[GPIO_E][1]));= /* down */ qdev_connect_gpio_out(gpad, 2, - qemu_irq_invert(gpio_in[GPIO_E][2])); /* lef= t */ + qemu_irq_invert_orphan(gpio_in[GPIO_E][2]));= /* left */ qdev_connect_gpio_out(gpad, 3, - qemu_irq_invert(gpio_in[GPIO_E][3])); /* rig= ht */ + qemu_irq_invert_orphan(gpio_in[GPIO_E][3]));= /* right */ qdev_connect_gpio_out(gpad, 4, - qemu_irq_invert(gpio_in[GPIO_F][1])); /* sel= ect */ + qemu_irq_invert_orphan(gpio_in[GPIO_F][1]));= /* select */ } for (i =3D 0; i < 7; i++) { if (board->dc4 & (1 << i)) { diff --git a/hw/char/diva-gsp.c b/hw/char/diva-gsp.c index 53fd0fe2a1..bf1da1faee 100644 --- a/hw/char/diva-gsp.c +++ b/hw/char/diva-gsp.c @@ -126,7 +126,7 @@ static void diva_pci_realize(PCIDevice *dev, Error **er= rp) pci->dev.config[PCI_INTERRUPT_PIN] =3D 1; memory_region_init(&pci->membar, OBJECT(pci), "serial_ports", 4096); pci_register_bar(&pci->dev, 0, PCI_BASE_ADDRESS_SPACE_MEMORY, &pci->me= mbar); - pci->irqs =3D qemu_allocate_irqs(multi_serial_irq_mux, pci, di.nports); + pci->irqs =3D qemu_allocate_irqs_orphan(multi_serial_irq_mux, pci, di.= nports); =20 for (i =3D 0; i < di.nports; i++) { s =3D pci->state + i; diff --git a/hw/core/gpio.c b/hw/core/gpio.c index 37cda5ce4d..ef8ef8f25a 100644 --- a/hw/core/gpio.c +++ b/hw/core/gpio.c @@ -49,7 +49,7 @@ void qdev_init_gpio_in_named_with_opaque(DeviceState *dev, NamedGPIOList *gpio_list =3D qdev_get_named_gpio_list(dev, name); =20 assert(gpio_list->num_out =3D=3D 0 || !name); - gpio_list->in =3D qemu_extend_irqs(gpio_list->in, gpio_list->num_in, h= andler, + gpio_list->in =3D qemu_extend_irqs_orphan(gpio_list->in, gpio_list->nu= m_in, handler, opaque, n); =20 if (!name) { diff --git a/hw/core/irq.c b/hw/core/irq.c index 1b610e75e1..f8fdeb7e02 100644 --- a/hw/core/irq.c +++ b/hw/core/irq.c @@ -68,7 +68,7 @@ void qemu_init_irqs(IRQState irq[], size_t count, } } =20 -qemu_irq *qemu_extend_irqs(qemu_irq *old, int n_old, qemu_irq_handler hand= ler, +qemu_irq *qemu_extend_irqs_orphan(qemu_irq *old, int n_old, qemu_irq_handl= er handler, void *opaque, int n) { qemu_irq *s; @@ -79,17 +79,17 @@ qemu_irq *qemu_extend_irqs(qemu_irq *old, int n_old, qe= mu_irq_handler handler, } s =3D old ? g_renew(qemu_irq, old, n + n_old) : g_new(qemu_irq, n); for (i =3D n_old; i < n + n_old; i++) { - s[i] =3D qemu_allocate_irq(handler, opaque, i); + s[i] =3D qemu_allocate_irq_orphan(handler, opaque, i); } return s; } =20 -qemu_irq *qemu_allocate_irqs(qemu_irq_handler handler, void *opaque, int n) +qemu_irq *qemu_allocate_irqs_orphan(qemu_irq_handler handler, void *opaque= , int n) { - return qemu_extend_irqs(NULL, 0, handler, opaque, n); + return qemu_extend_irqs_orphan(NULL, 0, handler, opaque, n); } =20 -qemu_irq qemu_allocate_irq(qemu_irq_handler handler, void *opaque, int n) +qemu_irq qemu_allocate_irq_orphan(qemu_irq_handler handler, void *opaque, = int n) { IRQState *irq =3D IRQ(object_new(TYPE_IRQ)); init_irq_fields(irq, handler, opaque, n); @@ -117,11 +117,11 @@ static void qemu_notirq(void *opaque, int line, int l= evel) qemu_set_irq(irq, !level); } =20 -qemu_irq qemu_irq_invert(qemu_irq irq) +qemu_irq qemu_irq_invert_orphan(qemu_irq irq) { /* The default state for IRQs is low, so raise the output now. */ qemu_irq_raise(irq); - return qemu_allocate_irq(qemu_notirq, irq, 0); + return qemu_allocate_irq_orphan(qemu_notirq, irq, 0); } =20 void qemu_irq_set_observer(qemu_irq *gpio_in, qemu_irq_handler handler, in= t n) diff --git a/hw/display/macfb.c b/hw/display/macfb.c index f40a7ed9f5..de5c83884e 100644 --- a/hw/display/macfb.c +++ b/hw/display/macfb.c @@ -737,7 +737,7 @@ static void macfb_nubus_realize(DeviceState *dev, Error= **errp) memory_region_add_subregion(&nd->slot_mem, DAFB_BASE, &ms->mem_ctrl); memory_region_add_subregion(&nd->slot_mem, VIDEO_BASE, &ms->mem_vram); =20 - ms->irq =3D qemu_allocate_irq(macfb_nubus_set_irq, s, 0); + ms->irq =3D qemu_allocate_irq_orphan(macfb_nubus_set_irq, s, 0); } =20 static void macfb_nubus_unrealize(DeviceState *dev) diff --git a/hw/dma/omap_dma.c b/hw/dma/omap_dma.c index b130ba2480..7a2a3310f9 100644 --- a/hw/dma/omap_dma.c +++ b/hw/dma/omap_dma.c @@ -1109,7 +1109,7 @@ struct soc_dma_s *omap_dma_init(Object *owner, hwaddr= base, qemu_irq *irqs, s->dma->freq =3D omap_clk_getrate(clk); s->dma->transfer_fn =3D omap_dma_transfer_generic; s->dma->setup_fn =3D omap_dma_transfer_setup; - s->dma->drq =3D qemu_allocate_irqs(omap_dma_request, s, 32); + s->dma->drq =3D qemu_allocate_irqs_orphan(omap_dma_request, s, 32); s->dma->opaque =3D s; =20 while (num_irqs --) @@ -1123,7 +1123,7 @@ struct soc_dma_s *omap_dma_init(Object *owner, hwaddr= base, qemu_irq *irqs, s->dma->ch[i].opaque =3D &s->ch[i]; } =20 - omap_clk_adduser(s->clk, qemu_allocate_irq(omap_dma_clk_update, s, 0)); + omap_clk_adduser(s->clk, qemu_allocate_irq_orphan(omap_dma_clk_update,= s, 0)); omap_dma_reset(s->dma); omap_dma_clk_update(s, 0, 1); =20 diff --git a/hw/i386/kvm/i8259.c b/hw/i386/kvm/i8259.c index 5fb11d3613..7ef7a0b487 100644 --- a/hw/i386/kvm/i8259.c +++ b/hw/i386/kvm/i8259.c @@ -136,7 +136,7 @@ qemu_irq *kvm_i8259_init(Object *parent, ISABus *bus) i8259_init_chip(parent, TYPE_KVM_I8259, bus, true); i8259_init_chip(parent, TYPE_KVM_I8259, bus, false); =20 - return qemu_allocate_irqs(kvm_pic_set_irq, NULL, ISA_NUM_IRQS); + return qemu_allocate_irqs_orphan(kvm_pic_set_irq, NULL, ISA_NUM_IRQS); } =20 static void kvm_i8259_class_init(ObjectClass *klass, const void *data) diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c index 751e3962fa..07dbe3a18b 100644 --- a/hw/i386/microvm.c +++ b/hw/i386/microvm.c @@ -168,7 +168,7 @@ static void microvm_devices_init(MicrovmMachineState *m= ms) /* Core components */ ioapics =3D microvm_ioapics(mms); gsi_state =3D g_malloc0(sizeof(*gsi_state)); - x86ms->gsi =3D qemu_allocate_irqs(gsi_handler, gsi_state, + x86ms->gsi =3D qemu_allocate_irqs_orphan(gsi_handler, gsi_state, IOAPIC_NUM_PINS * ioapics); =20 isa_bus =3D isa_bus_new_bridge(OBJECT(mms), get_system_memory(), get_s= ystem_io(), diff --git a/hw/i386/pc.c b/hw/i386/pc.c index 8057058ff0..249fa699c7 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -200,7 +200,7 @@ GSIState *pc_gsi_create(qemu_irq **irqs, bool pci_enabl= ed) if (kvm_ioapic_in_kernel()) { kvm_pc_setup_irq_routing(pci_enabled); } - *irqs =3D qemu_allocate_irqs(gsi_handler, s, IOAPIC_NUM_PINS); + *irqs =3D qemu_allocate_irqs_orphan(gsi_handler, s, IOAPIC_NUM_PINS); =20 return s; } @@ -1028,7 +1028,7 @@ static void pc_superio_init(Object *parent, ISABus *i= sa_bus, bool create_fdctrl, } port92 =3D isa_create_simple(parent, "port92", isa_bus, TYPE_PORT92); =20 - a20_line =3D qemu_allocate_irqs(handle_a20_line_change, first_cpu, 2); + a20_line =3D qemu_allocate_irqs_orphan(handle_a20_line_change, first_c= pu, 2); qdev_connect_gpio_out_named(DEVICE(i8042), I8042_A20_LINE, 0, a20_line[0]); qdev_connect_gpio_out_named(DEVICE(port92), diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c index 0b8d7d88b9..f76d684d6b 100644 --- a/hw/i386/pc_piix.c +++ b/hw/i386/pc_piix.c @@ -299,7 +299,7 @@ static void pc_init1(MachineState *machine, const char = *pci_type) pc_nic_init(pcmc, isa_bus, pcms->pcibus); =20 if (piix4_pm) { - smi_irq =3D qemu_allocate_irq(pc_acpi_smi_interrupt, first_cpu, 0); + smi_irq =3D qemu_allocate_irq_orphan(pc_acpi_smi_interrupt, first_= cpu, 0); =20 qdev_connect_gpio_out_named(DEVICE(piix4_pm), "smi-irq", 0, smi_ir= q); pcms->smbus =3D I2C_BUS(qdev_get_child_bus(DEVICE(piix4_pm), "i2c"= )); diff --git a/hw/i386/x86-cpu.c b/hw/i386/x86-cpu.c index 95e08e3c2a..6d010291cf 100644 --- a/hw/i386/x86-cpu.c +++ b/hw/i386/x86-cpu.c @@ -63,7 +63,7 @@ static void pic_irq_request(void *opaque, int irq, int le= vel) =20 qemu_irq x86_allocate_cpu_irq(void) { - return qemu_allocate_irq(pic_irq_request, NULL, 0); + return qemu_allocate_irq_orphan(pic_irq_request, NULL, 0); } =20 int cpu_get_pic_interrupt(CPUX86State *env) diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c index 01d851ce3e..e87c8237ea 100644 --- a/hw/i386/xen/xen-hvm.c +++ b/hw/i386/xen/xen-hvm.c @@ -114,7 +114,7 @@ static void xen_set_irq(void *opaque, int irq, int leve= l) =20 qemu_irq *xen_interrupt_controller_init(void) { - return qemu_allocate_irqs(xen_set_irq, NULL, 16); + return qemu_allocate_irqs_orphan(xen_set_irq, NULL, 16); } =20 /* Memory Ops */ diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c index 749f0efa1d..ac1cf26bab 100644 --- a/hw/ide/ahci.c +++ b/hw/ide/ahci.c @@ -1594,7 +1594,7 @@ void ahci_realize(AHCIState *s, DeviceState *qdev, Ad= dressSpace *as) assert(s->ports > 0); s->dev =3D g_new0(AHCIDevice, s->ports); ahci_reg_init(s); - irqs =3D qemu_allocate_irqs(ahci_irq_set, s, s->ports); + irqs =3D qemu_allocate_irqs_orphan(ahci_irq_set, s, s->ports); for (i =3D 0; i < s->ports; i++) { AHCIDevice *ad =3D &s->dev[i]; =20 diff --git a/hw/ide/pci.c b/hw/ide/pci.c index 7ce1ae67ab..c808469008 100644 --- a/hw/ide/pci.c +++ b/hw/ide/pci.c @@ -606,7 +606,7 @@ void bmdma_init(IDEBus *bus, BMDMAState *bm, PCIIDEStat= e *d) bm->dma.ops =3D &bmdma_ops; bus->dma =3D &bm->dma; bm->irq =3D bus->irq; - bus->irq =3D qemu_allocate_irq(bmdma_irq, bm, 0); + bus->irq =3D qemu_allocate_irq_orphan(bmdma_irq, bm, 0); bm->bus =3D bus; bm->pci_dev =3D d; } diff --git a/hw/intc/sh_intc.c b/hw/intc/sh_intc.c index 37feb6a813..63f4eee2aa 100644 --- a/hw/intc/sh_intc.c +++ b/hw/intc/sh_intc.c @@ -403,7 +403,7 @@ int sh_intc_init(Object *owner, MemoryRegion *sysmem, for (i =3D 0; i < nr_sources; i++) { desc->sources[i].parent =3D desc; } - desc->irqs =3D qemu_allocate_irqs(sh_intc_set_irq, desc, nr_sources); + desc->irqs =3D qemu_allocate_irqs_orphan(sh_intc_set_irq, desc, nr_sou= rces); memory_region_init_io(&desc->iomem, owner, &sh_intc_ops, desc, "intc", 0x100000000ULL); j =3D 0; diff --git a/hw/isa/i82378.c b/hw/isa/i82378.c index 995d1eaa53..4f0be992e0 100644 --- a/hw/isa/i82378.c +++ b/hw/isa/i82378.c @@ -95,7 +95,7 @@ static void i82378_realize(PCIDevice *pci, Error **errp) =20 /* 2 82C59 (irq) */ s->isa_irqs_in =3D i8259_init(OBJECT(pci), isabus, - qemu_allocate_irq(i82378_request_out0_irq, + qemu_allocate_irq_orphan(i82378_request_ou= t0_irq, s, 0)); isa_bus_register_input_irqs(isabus, s->isa_irqs_in); =20 diff --git a/hw/isa/lpc_ich9.c b/hw/isa/lpc_ich9.c index edf9783ec8..7cb82519fb 100644 --- a/hw/isa/lpc_ich9.c +++ b/hw/isa/lpc_ich9.c @@ -429,7 +429,7 @@ static void ich9_lpc_pm_init(ICH9LPCState *lpc) qemu_irq sci_irq; FWCfgState *fw_cfg =3D fw_cfg_find(); =20 - sci_irq =3D qemu_allocate_irq(ich9_set_sci, lpc, 0); + sci_irq =3D qemu_allocate_irq_orphan(ich9_set_sci, lpc, 0); ich9_pm_init(PCI_DEVICE(lpc), &lpc->pm, sci_irq); =20 if (lpc->smi_host_features && fw_cfg) { diff --git a/hw/m68k/mcf5206.c b/hw/m68k/mcf5206.c index ee39a6ac30..cbb361fae9 100644 --- a/hw/m68k/mcf5206.c +++ b/hw/m68k/mcf5206.c @@ -593,7 +593,7 @@ static void mcf5206_mbar_realize(DeviceState *dev, Erro= r **errp) "mbar", 0x00001000); sysbus_init_mmio(SYS_BUS_DEVICE(dev), &s->iomem); =20 - s->pic =3D qemu_allocate_irqs(m5206_mbar_set_irq, s, 14); + s->pic =3D qemu_allocate_irqs_orphan(m5206_mbar_set_irq, s, 14); m5206_timer_init(&s->timer[0], s->pic[9]); m5206_timer_init(&s->timer[1], s->pic[10]); s->uart[0] =3D mcf_uart_create(OBJECT(s), s->pic[12], serial_hd(0)); diff --git a/hw/m68k/q800.c b/hw/m68k/q800.c index 954cdf8489..177fff0289 100644 --- a/hw/m68k/q800.c +++ b/hw/m68k/q800.c @@ -474,11 +474,11 @@ static void q800_machine_init(MachineState *machine) sysbus_realize(sysbus, &error_fatal); /* SCSI and SCSI data IRQs are negative edge triggered */ sysbus_connect_irq(sysbus, 0, - qemu_irq_invert( + qemu_irq_invert_orphan( qdev_get_gpio_in(DEVICE(&m->via2), VIA2_IRQ_SCSI_BIT))); sysbus_connect_irq(sysbus, 1, - qemu_irq_invert( + qemu_irq_invert_orphan( qdev_get_gpio_in(DEVICE(&m->via2), VIA2_IRQ_SCSI_DATA_BIT)= )); memory_region_add_subregion(&m->macio, ESP_BASE - IO_BASE, diff --git a/hw/mips/mips_int.c b/hw/mips/mips_int.c index 26e7dd6d5f..814d07319f 100644 --- a/hw/mips/mips_int.c +++ b/hw/mips/mips_int.c @@ -56,7 +56,7 @@ void cpu_mips_irq_init_cpu(MIPSCPU *cpu) qemu_irq *qi; int i; =20 - qi =3D qemu_allocate_irqs(cpu_mips_irq_request, cpu, 8); + qi =3D qemu_allocate_irqs_orphan(cpu_mips_irq_request, cpu, 8); for (i =3D 0; i < 8; i++) { env->irq[i] =3D qi[i]; } diff --git a/hw/net/can/can_kvaser_pci.c b/hw/net/can/can_kvaser_pci.c index f2912b206d..69fc66de14 100644 --- a/hw/net/can/can_kvaser_pci.c +++ b/hw/net/can/can_kvaser_pci.c @@ -224,7 +224,7 @@ static void kvaser_pci_realize(PCIDevice *pci_dev, Erro= r **errp) pci_conf =3D pci_dev->config; pci_conf[PCI_INTERRUPT_PIN] =3D 0x01; /* interrupt pin A */ =20 - d->irq =3D qemu_allocate_irq(kvaser_pci_irq_handler, d, 0); + d->irq =3D qemu_allocate_irq_orphan(kvaser_pci_irq_handler, d, 0); =20 can_sja_init(s, d->irq); =20 diff --git a/hw/pci-host/pnv_phb3.c b/hw/pci-host/pnv_phb3.c index 4ffdb4ce31..63da48f5af 100644 --- a/hw/pci-host/pnv_phb3.c +++ b/hw/pci-host/pnv_phb3.c @@ -1054,7 +1054,7 @@ static void pnv_phb3_realize(DeviceState *dev, Error = **errp) ics_set_irq_type(&phb->lsis, i, true); } =20 - phb->qirqs =3D qemu_allocate_irqs(ics_set_irq, &phb->lsis, phb->lsis.n= r_irqs); + phb->qirqs =3D qemu_allocate_irqs_orphan(ics_set_irq, &phb->lsis, phb-= >lsis.nr_irqs); =20 /* MSI sources */ object_property_set_link(OBJECT(&phb->msis), "phb", OBJECT(phb), diff --git a/hw/pci-host/pnv_phb3_msi.c b/hw/pci-host/pnv_phb3_msi.c index 66ba7b7913..fa5f61ea2b 100644 --- a/hw/pci-host/pnv_phb3_msi.c +++ b/hw/pci-host/pnv_phb3_msi.c @@ -267,7 +267,7 @@ static void phb3_msi_realize(DeviceState *dev, Error **= errp) return; } =20 - msi->qirqs =3D qemu_allocate_irqs(phb3_msi_set_irq, msi, ics->nr_irqs); + msi->qirqs =3D qemu_allocate_irqs_orphan(phb3_msi_set_irq, msi, ics->n= r_irqs); } =20 static void phb3_msi_instance_init(Object *obj) diff --git a/hw/pci-host/pnv_phb4.c b/hw/pci-host/pnv_phb4.c index 705a5bcf07..7a1988a2b2 100644 --- a/hw/pci-host/pnv_phb4.c +++ b/hw/pci-host/pnv_phb4.c @@ -1605,7 +1605,7 @@ static void pnv_phb4_realize(DeviceState *dev, Error = **errp) =20 pnv_phb4_update_xsrc(phb); =20 - phb->qirqs =3D qemu_allocate_irqs(xive_source_set_irq, xsrc, xsrc->nr_= irqs); + phb->qirqs =3D qemu_allocate_irqs_orphan(xive_source_set_irq, xsrc, xs= rc->nr_irqs); =20 pnv_phb4_xscom_realize(phb); } diff --git a/hw/pci/pci.c b/hw/pci/pci.c index 5ef9dfa8b7..9ba7bfd977 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -1869,7 +1869,7 @@ qemu_irq pci_allocate_irq(PCIDevice *pci_dev) int intx =3D pci_intx(pci_dev); assert(0 <=3D intx && intx < PCI_NUM_PINS); =20 - return qemu_allocate_irq(pci_irq_handler, pci_dev, intx); + return qemu_allocate_irq_orphan(pci_irq_handler, pci_dev, intx); } =20 void pci_set_irq(PCIDevice *pci_dev, int level) diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c index 21e656e87f..62692f5776 100644 --- a/hw/ppc/e500.c +++ b/hw/ppc/e500.c @@ -1089,7 +1089,7 @@ void ppce500_init(MachineState *machine) sysbus_mmio_get_region(s, 0)); =20 /* Power Off GPIO at Pin 0 */ - poweroff_irq =3D qemu_allocate_irq(ppce500_power_off, NULL, 0); + poweroff_irq =3D qemu_allocate_irq_orphan(ppce500_power_off, NULL,= 0); qdev_connect_gpio_out(dev, 0, poweroff_irq); } =20 diff --git a/hw/ppc/pnv_lpc.c b/hw/ppc/pnv_lpc.c index 6ae228088f..e89defb321 100644 --- a/hw/ppc/pnv_lpc.c +++ b/hw/ppc/pnv_lpc.c @@ -993,7 +993,7 @@ ISABus *pnv_lpc_isa_create(PnvLpcController *lpc, bool = use_cpld, Error **errp) } =20 /* POWER has a 17th irq, QEMU only implements the 16 regular device ir= qs */ - irqs =3D qemu_allocate_irqs(handler, lpc, ISA_NUM_IRQS); + irqs =3D qemu_allocate_irqs_orphan(handler, lpc, ISA_NUM_IRQS); =20 isa_bus_register_input_irqs(isa_bus, irqs); =20 diff --git a/hw/ppc/pnv_psi.c b/hw/ppc/pnv_psi.c index e8701c6100..1ff33596ac 100644 --- a/hw/ppc/pnv_psi.c +++ b/hw/ppc/pnv_psi.c @@ -509,7 +509,7 @@ static void pnv_psi_power8_realize(DeviceState *dev, Er= ror **errp) =20 qdev_init_gpio_in(dev, pnv_psi_power8_set_irq, ics->nr_irqs); =20 - psi->qirqs =3D qemu_allocate_irqs(ics_set_irq, ics, ics->nr_irqs); + psi->qirqs =3D qemu_allocate_irqs_orphan(ics_set_irq, ics, ics->nr_irq= s); =20 /* XSCOM region for PSI registers */ pnv_xscom_region_init(&psi->xscom_regs, OBJECT(dev), &pnv_psi_xscom_op= s, @@ -872,7 +872,7 @@ static void pnv_psi_power9_realize(DeviceState *dev, Er= ror **errp) xive_source_irq_set_lsi(xsrc, i); } =20 - psi->qirqs =3D qemu_allocate_irqs(xive_source_set_irq, xsrc, xsrc->nr_= irqs); + psi->qirqs =3D qemu_allocate_irqs_orphan(xive_source_set_irq, xsrc, xs= rc->nr_irqs); =20 qdev_init_gpio_in(dev, pnv_psi_power9_set_irq, xsrc->nr_irqs); =20 diff --git a/hw/ppc/spapr_irq.c b/hw/ppc/spapr_irq.c index b9e5f5d710..a05edb78bc 100644 --- a/hw/ppc/spapr_irq.c +++ b/hw/ppc/spapr_irq.c @@ -339,7 +339,7 @@ void spapr_irq_init(SpaprMachineState *spapr, Error **e= rrp) spapr_xive_hcall_init(spapr); } =20 - spapr->qirqs =3D qemu_allocate_irqs(spapr_set_irq, spapr, + spapr->qirqs =3D qemu_allocate_irqs_orphan(spapr_set_irq, spapr, SPAPR_NR_XIRQS + SPAPR_IRQ_NR_IPIS); =20 /* diff --git a/hw/riscv/sifive_u.c b/hw/riscv/sifive_u.c index 9d3f5c8f59..3df9fafb12 100644 --- a/hw/riscv/sifive_u.c +++ b/hw/riscv/sifive_u.c @@ -484,7 +484,7 @@ static void sifive_u_machine_init(MachineState *machine) =20 /* register gpio-restart */ qdev_connect_gpio_out(DEVICE(&(s->soc.gpio)), 10, - qemu_allocate_irq(sifive_u_machine_reset, NULL, = 0)); + qemu_allocate_irq_orphan(sifive_u_machine_reset,= NULL, 0)); =20 /* load/create device tree */ if (machine->dtb) { diff --git a/hw/scsi/esp-pci.c b/hw/scsi/esp-pci.c index b31ccdbecc..4c02b23a28 100644 --- a/hw/scsi/esp-pci.c +++ b/hw/scsi/esp-pci.c @@ -407,7 +407,7 @@ static void esp_pci_scsi_realize(PCIDevice *dev, Error = **errp) "esp-io", 0x80); =20 pci_register_bar(dev, 0, PCI_BASE_ADDRESS_SPACE_IO, &pci->io); - s->irq =3D qemu_allocate_irq(esp_irq_handler, pci, 0); + s->irq =3D qemu_allocate_irq_orphan(esp_irq_handler, pci, 0); =20 scsi_bus_init(&s->bus, sizeof(s->bus), d, &esp_pci_scsi_info); } diff --git a/hw/sh4/sh7750.c b/hw/sh4/sh7750.c index ea55a3a9cc..307daa523d 100644 --- a/hw/sh4/sh7750.c +++ b/hw/sh4/sh7750.c @@ -848,5 +848,5 @@ SH7750State *sh7750_init(Object *parent, SuperHCPU *cpu, qemu_irq sh7750_irl(SH7750State *s) { sh_intc_toggle_source(&s->intc.sources[IRL], 1, 0); /* enable */ - return qemu_allocate_irq(sh_intc_set_irl, &s->intc.sources[IRL], 0); + return qemu_allocate_irq_orphan(sh_intc_set_irl, &s->intc.sources[IRL]= , 0); } diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c index a0d0213d0b..0a35b20e17 100644 --- a/hw/sparc/sun4m.c +++ b/hw/sparc/sun4m.c @@ -1008,7 +1008,7 @@ static void sun4m_hw_init(MachineState *machine) =20 if (hwdef->apc_base) { apc_init(OBJECT(machine), hwdef->apc_base, - qemu_allocate_irq(cpu_halt_signal, NULL, 0)); + qemu_allocate_irq_orphan(cpu_halt_signal, NULL, 0)); } =20 if (hwdef->fd_base) { @@ -1018,7 +1018,7 @@ static void sun4m_hw_init(MachineState *machine) sun4m_fdctrl_init(OBJECT(machine), slavio_irq[22], hwdef->fd_base,= fd, &fdc_tc); } else { - fdc_tc =3D qemu_allocate_irq(dummy_fdc_tc, NULL, 0); + fdc_tc =3D qemu_allocate_irq_orphan(dummy_fdc_tc, NULL, 0); } =20 slavio_misc_init(OBJECT(machine), hwdef->slavio_base, hwdef->aux1_base, diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c index dbf49ef43d..389436fd3d 100644 --- a/hw/sparc64/sun4u.c +++ b/hw/sparc64/sun4u.c @@ -311,7 +311,7 @@ static void ebus_realize(PCIDevice *pci_dev, Error **er= rp) } =20 /* ISA bus */ - s->isa_irqs_in =3D qemu_allocate_irqs(ebus_isa_irq_handler, s, ISA_NUM= _IRQS); + s->isa_irqs_in =3D qemu_allocate_irqs_orphan(ebus_isa_irq_handler, s, = ISA_NUM_IRQS); isa_bus_register_input_irqs(s->isa_bus, s->isa_irqs_in); qdev_init_gpio_out_named(DEVICE(s), s->isa_irqs_out, "isa-irq", ISA_NUM_IRQS); diff --git a/hw/timer/arm_timer.c b/hw/timer/arm_timer.c index fb70333c53..1c29db12a2 100644 --- a/hw/timer/arm_timer.c +++ b/hw/timer/arm_timer.c @@ -305,8 +305,8 @@ static void sp804_realize(DeviceState *dev, Error **err= p) =20 s->timer[0] =3D arm_timer_init(s->freq0); s->timer[1] =3D arm_timer_init(s->freq1); - s->timer[0]->irq =3D qemu_allocate_irq(sp804_set_irq, s, 0); - s->timer[1]->irq =3D qemu_allocate_irq(sp804_set_irq, s, 1); + s->timer[0]->irq =3D qemu_allocate_irq_orphan(sp804_set_irq, s, 0); + s->timer[1]->irq =3D qemu_allocate_irq_orphan(sp804_set_irq, s, 1); } =20 /* Integrator/CP timer module. */ diff --git a/hw/usb/vt82c686-uhci-pci.c b/hw/usb/vt82c686-uhci-pci.c index 97c09a51cf..b58b61e609 100644 --- a/hw/usb/vt82c686-uhci-pci.c +++ b/hw/usb/vt82c686-uhci-pci.c @@ -23,7 +23,7 @@ static void usb_uhci_vt82c686b_realize(PCIDevice *dev, Er= ror **errp) =20 usb_uhci_common_realize(dev, errp); object_unref(s->irq); - s->irq =3D qemu_allocate_irq(uhci_isa_set_irq, s, 0); + s->irq =3D qemu_allocate_irq_orphan(uhci_isa_set_irq, s, 0); } =20 static UHCIInfo uhci_info[] =3D { diff --git a/hw/xen/xen-pvh-common.c b/hw/xen/xen-pvh-common.c index 1047aabd57..42514a599e 100644 --- a/hw/xen/xen-pvh-common.c +++ b/hw/xen/xen-pvh-common.c @@ -170,7 +170,7 @@ static void xen_create_virtio_mmio_devices(XenPVHMachin= eState *s) */ for (i =3D s->cfg.virtio_mmio_num - 1; i >=3D 0; i--) { hwaddr base =3D s->cfg.virtio_mmio.base + i * s->cfg.virtio_mmio.s= ize; - qemu_irq irq =3D qemu_allocate_irq(xen_set_irq, NULL, + qemu_irq irq =3D qemu_allocate_irq_orphan(xen_set_irq, NULL, s->cfg.virtio_mmio_irq_base + i); =20 sysbus_create_simple(OBJECT(s), "virtio-mmio[*]", "virtio-mmio", @@ -260,7 +260,7 @@ static inline void xenpvh_gpex_init(XenPVHMachineState = *s, assert(xpc->set_pci_intx_irq); =20 for (i =3D 0; i < PCI_NUM_PINS; i++) { - qemu_irq irq =3D qemu_allocate_irq(xpc->set_pci_intx_irq, s, i); + qemu_irq irq =3D qemu_allocate_irq_orphan(xpc->set_pci_intx_irq, s= , i); =20 sysbus_connect_irq(SYS_BUS_DEVICE(dev), i, irq); gpex_set_irq_num(GPEX_HOST(dev), i, s->cfg.pci_intx_irq_base + i); diff --git a/hw/xtensa/mx_pic.c b/hw/xtensa/mx_pic.c index f349fb125c..9959bec5f2 100644 --- a/hw/xtensa/mx_pic.c +++ b/hw/xtensa/mx_pic.c @@ -346,7 +346,7 @@ XtensaMxPic *xtensa_mx_pic_init(unsigned n_irq) XtensaMxPic *mx =3D g_new0(XtensaMxPic, 1); =20 mx->n_irq =3D n_irq + 1; - mx->irq_inputs =3D qemu_allocate_irqs(xtensa_mx_pic_set_irq, mx, + mx->irq_inputs =3D qemu_allocate_irqs_orphan(xtensa_mx_pic_set_irq, mx, mx->n_irq); return mx; } diff --git a/hw/xtensa/pic_cpu.c b/hw/xtensa/pic_cpu.c index 370a353f1e..c3163a8b6c 100644 --- a/hw/xtensa/pic_cpu.c +++ b/hw/xtensa/pic_cpu.c @@ -102,7 +102,7 @@ void xtensa_irq_init(CPUXtensaState *env) { unsigned i; =20 - env->irq_inputs =3D qemu_allocate_irqs(xtensa_set_irq, env, + env->irq_inputs =3D qemu_allocate_irqs_orphan(xtensa_set_irq, env, env->config->ninterrupt); if (xtensa_option_enabled(env->config, XTENSA_OPTION_TIMER_INTERRUPT))= { env->time_base =3D qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL); @@ -118,7 +118,7 @@ void xtensa_irq_init(CPUXtensaState *env) =20 env->ext_irq_inputs[i] =3D env->irq_inputs[irq]; } - env->runstall_irq =3D qemu_allocate_irq(xtensa_set_runstall, env, 0); + env->runstall_irq =3D qemu_allocate_irq_orphan(xtensa_set_runstall, en= v, 0); } =20 qemu_irq *xtensa_get_extints(CPUXtensaState *env) diff --git a/include/hw/core/irq.h b/include/hw/core/irq.h index 299a4a9a8c..f984c02c14 100644 --- a/include/hw/core/irq.h +++ b/include/hw/core/irq.h @@ -77,25 +77,25 @@ void qemu_init_irqs(IRQState irq[], size_t count, /* Returns an array of N IRQs. Each IRQ is assigned the argument handler a= nd * opaque data. */ -qemu_irq *qemu_allocate_irqs(qemu_irq_handler handler, void *opaque, int n= ); +qemu_irq *qemu_allocate_irqs_orphan(qemu_irq_handler handler, void *opaque= , int n); =20 /* * Allocates a single IRQ. The irq is assigned with a handler, an opaque * data and the interrupt number. */ -qemu_irq qemu_allocate_irq(qemu_irq_handler handler, void *opaque, int n); +qemu_irq qemu_allocate_irq_orphan(qemu_irq_handler handler, void *opaque, = int n); =20 /* Extends an Array of IRQs. Old IRQs have their handlers and opaque data * preserved. New IRQs are assigned the argument handler and opaque data. */ -qemu_irq *qemu_extend_irqs(qemu_irq *old, int n_old, qemu_irq_handler hand= ler, +qemu_irq *qemu_extend_irqs_orphan(qemu_irq *old, int n_old, qemu_irq_handl= er handler, void *opaque, int n); =20 void qemu_free_irqs(qemu_irq *s, int n); void qemu_free_irq(qemu_irq irq); =20 /* Returns a new IRQ with opposite polarity. */ -qemu_irq qemu_irq_invert(qemu_irq irq); +qemu_irq qemu_irq_invert_orphan(qemu_irq irq); =20 /* For internal use in qtest. */ void qemu_irq_set_observer(qemu_irq *gpio_in, qemu_irq_handler handler, in= t n); diff --git a/scripts/coccinelle/qom-parent/irq-rename.cocci b/scripts/cocci= nelle/qom-parent/irq-rename.cocci new file mode 100644 index 0000000000..02df66cb6c --- /dev/null +++ b/scripts/coccinelle/qom-parent/irq-rename.cocci @@ -0,0 +1,15 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +// Rename the IRQ allocation helpers to *_orphan() so the parented +// variants can take the well-known names. +@@ @@ +- qemu_allocate_irqs ++ qemu_allocate_irqs_orphan +@@ @@ +- qemu_allocate_irq ++ qemu_allocate_irq_orphan +@@ @@ +- qemu_extend_irqs ++ qemu_extend_irqs_orphan +@@ @@ +- qemu_irq_invert ++ qemu_irq_invert_orphan diff --git a/system/qtest.c b/system/qtest.c index cf30123917..f38feaac89 100644 --- a/system/qtest.c +++ b/system/qtest.c @@ -346,7 +346,7 @@ void qtest_set_command_cb(bool (*pc_cb)(CharFrontend *c= hr, gchar **words)) static void qtest_install_gpio_out_intercept(DeviceState *dev, const char = *name, int n) { qemu_irq *disconnected =3D g_new0(qemu_irq, 1); - qemu_irq icpt =3D qemu_allocate_irq(qtest_irq_handler, + qemu_irq icpt =3D qemu_allocate_irq_orphan(qtest_irq_handler, disconnected, n); =20 *disconnected =3D qdev_intercept_gpio_out(dev, icpt, name, n); --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412473; cv=none; d=zohomail.com; s=zohoarc; b=VVkQPmU0p+tX9jTbeH123nj7oRb5tUxADADNX0WrM51M46fazbdH+GLRc277F9TcpL1EjDxyLX05uau1TTyxkrmptg6DPLxLshRvybZrf0AHk2DcYnobElYciHXZZGoz7MyvVhjgdy11nTApViLvCY51zo7S8VG+1Yin7yiDyr4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412473; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=oOcpxY9uuHLwNP84nyMpDB+plpJZzHNJBk6PAKAsl+w=; b=HEtQoKwYz6A/kQ56m3lPj82PK0y6OUoQJQqcozJGGScYhI9iYR9fDHaUk2QOL9oWijWOA1CLt5NGc3whow6GouU7pnonYaGzU3GoGXu8ITLuwjtJuWhPYuIerDdpdjvcSaPhmV/dUBUWhe2tLJv5/zdws4ibroJugfb1mgGISz8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17844124733241007.6635485446545; Sat, 18 Jul 2026 15:07:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlDCE-0006R5-I1; Sat, 18 Jul 2026 18:07:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDCC-0006PV-Vx; Sat, 18 Jul 2026 18:07:45 -0400 Received: from pdx-out-012.esa.us-west-2.outbound.mail-perimeter.amazon.com ([35.162.73.231]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDCB-0006L3-1S; Sat, 18 Jul 2026 18:07:44 -0400 Received: from ip-10-5-6-203.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.6.203]) by internal-pdx-out-012.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:07:38 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.51:1129] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.151:2525] with esmtp (Farcaster) id d03d448b-dc04-4473-a688-b37d328c93c7; Sat, 18 Jul 2026 22:07:38 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC002.ant.amazon.com (10.250.64.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:07:38 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:07:28 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412463; x=1815948463; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=oOcpxY9uuHLwNP84nyMpDB+plpJZzHNJBk6PAKAsl+w=; b=mCFKoPWmXWzukKmhqeIY74sDgn+5wuFa56y5jwJbI5y5NErB2ChUWopy APDirtI69ApiDvbU9qorB4gSOpaueRMJpMrogb59JfWeagKDp1H+0zgPy /3CBteljC3XEkcF5+RerQjF4tD5/wNVKrfEAvROiYIeOV3bkYw/H6FCS7 fY70vTMypMU7QjO3k2QrYNU51g5cucvRO0gvT8tUSpgr7JzlqAXTwcx3s /j8QVUT+tkoUiEvCZeWr5HQDRoVgWHjMK5pUc2ypcjuN7A88h52qlazCA /rtoX1O8l/DsQPtEkxo9OMfnreMYcWlOt2oeb8asJdICjy5ZJqlun/RP1 w==; X-CSE-ConnectionGUID: WVnxyI9ITX6rJv6JAkODKA== X-CSE-MsgGUID: 29CmgQC5Qv6CdbPfzLqZFA== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23716616" X-Farcaster-Flow-ID: d03d448b-dc04-4473-a688-b37d328c93c7 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 110/137] irq: Reintroduce qemu_allocate_irq*() with a mandatory owner and name Date: Sat, 18 Jul 2026 21:36:25 +0000 Message-ID: <20260718213652.37673-111-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D040UWA004.ant.amazon.com (10.13.139.93) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=35.162.73.231; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-012.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412475242158500 Content-Type: text/plain; charset="utf-8" Add parented variants of the IRQ allocation helpers under the well-known names, taking (Object *owner, const char *name, ...) as their first two arguments: qemu_allocate_irq(owner, name, handler, opaque, n) qemu_allocate_irqs(owner, name, handler, opaque, n) qemu_extend_irqs(owner, name, old, n_old, handler, opaque, n) qemu_irq_invert(owner, name, irq) The new IRQ object is created via object_new_child() so it lands under @owner with a stable path. The array/extend variants suffix "[*]" so callers pass a bare name and get name[0], name[1], ... qemu_free_irq() is taught to unparent when the IRQ has a QOM parent, so it works for both the *_orphan() and the parented allocation paths during the transition. The *_orphan() variants stay for now; later commits convert every caller and delete them, at which point the /machine/unattached fallback in qdev_connect_gpio_out_named() also goes away. AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/core/irq.c | 45 ++++++++++++++++++++++++++++++++++++++++++- include/hw/core/irq.h | 15 +++++++++++++++ 2 files changed, 59 insertions(+), 1 deletion(-) diff --git a/hw/core/irq.c b/hw/core/irq.c index f8fdeb7e02..1ae53a74d3 100644 --- a/hw/core/irq.c +++ b/hw/core/irq.c @@ -96,6 +96,38 @@ qemu_irq qemu_allocate_irq_orphan(qemu_irq_handler handl= er, void *opaque, int n) return irq; } =20 +qemu_irq qemu_allocate_irq(Object *owner, const char *name, + qemu_irq_handler handler, void *opaque, int n) +{ + IRQState *irq =3D IRQ(object_new_child(owner, name, TYPE_IRQ)); + init_irq_fields(irq, handler, opaque, n); + return irq; +} + +qemu_irq *qemu_extend_irqs(Object *owner, const char *name, + qemu_irq *old, int n_old, + qemu_irq_handler handler, void *opaque, int n) +{ + qemu_irq *s; + int i; + + if (!old) { + n_old =3D 0; + } + s =3D old ? g_renew(qemu_irq, old, n + n_old) : g_new(qemu_irq, n); + for (i =3D n_old; i < n + n_old; i++) { + g_autofree char *propname =3D g_strdup_printf("%s[%d]", name, i); + s[i] =3D qemu_allocate_irq(owner, propname, handler, opaque, i); + } + return s; +} + +qemu_irq *qemu_allocate_irqs(Object *owner, const char *name, + qemu_irq_handler handler, void *opaque, int n) +{ + return qemu_extend_irqs(owner, name, NULL, 0, handler, opaque, n); +} + void qemu_free_irqs(qemu_irq *s, int n) { int i; @@ -107,7 +139,11 @@ void qemu_free_irqs(qemu_irq *s, int n) =20 void qemu_free_irq(qemu_irq irq) { - object_unref(OBJECT(irq)); + if (irq && OBJECT(irq)->parent) { + object_unparent(OBJECT(irq)); + } else { + object_unref(OBJECT(irq)); + } } =20 static void qemu_notirq(void *opaque, int line, int level) @@ -124,6 +160,13 @@ qemu_irq qemu_irq_invert_orphan(qemu_irq irq) return qemu_allocate_irq_orphan(qemu_notirq, irq, 0); } =20 +qemu_irq qemu_irq_invert(Object *owner, const char *name, qemu_irq irq) +{ + /* The default state for IRQs is low, so raise the output now. */ + qemu_irq_raise(irq); + return qemu_allocate_irq(owner, name, qemu_notirq, irq, 0); +} + void qemu_irq_set_observer(qemu_irq *gpio_in, qemu_irq_handler handler, in= t n) { int i; diff --git a/include/hw/core/irq.h b/include/hw/core/irq.h index f984c02c14..5ccccd2697 100644 --- a/include/hw/core/irq.h +++ b/include/hw/core/irq.h @@ -85,6 +85,20 @@ qemu_irq *qemu_allocate_irqs_orphan(qemu_irq_handler han= dler, void *opaque, int */ qemu_irq qemu_allocate_irq_orphan(qemu_irq_handler handler, void *opaque, = int n); =20 +/* + * Same as the *_orphan() variants above, but the new IRQ objects are + * parented under @owner with property name @name (or @name[*] for the + * array/extend variants). The reference is held by @owner; call + * qemu_free_irq() to unparent and free. + */ +qemu_irq qemu_allocate_irq(Object *owner, const char *name, + qemu_irq_handler handler, void *opaque, int n); +qemu_irq *qemu_allocate_irqs(Object *owner, const char *name, + qemu_irq_handler handler, void *opaque, int n= ); +qemu_irq *qemu_extend_irqs(Object *owner, const char *name, + qemu_irq *old, int n_old, + qemu_irq_handler handler, void *opaque, int n); + /* Extends an Array of IRQs. Old IRQs have their handlers and opaque data * preserved. New IRQs are assigned the argument handler and opaque data. */ @@ -96,6 +110,7 @@ void qemu_free_irq(qemu_irq irq); =20 /* Returns a new IRQ with opposite polarity. */ qemu_irq qemu_irq_invert_orphan(qemu_irq irq); +qemu_irq qemu_irq_invert(Object *owner, const char *name, qemu_irq irq); =20 /* For internal use in qtest. */ void qemu_irq_set_observer(qemu_irq *gpio_in, qemu_irq_handler handler, in= t n); --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412504; cv=none; d=zohomail.com; s=zohoarc; b=jCs5aGnYmmF5LZipw83ZW2R+FbYPJvX95lbCgqiQKW/za5N3BpWb/MHOR/JN6kgaSLwBfzj2wAK7sWU8m0SnAzvLmoVkK5Jf347zsuppIDHlEoEeTbOg5a4x0UH/tgbnr9KRYol4SI3AetAFuHFeanszq+w7RCygsKZcH4teEto= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412504; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=G1UyOWfPgaa++LCkxX4r7NG+RpGanimySkRJr9fc6kE=; b=lMdWTV9XZnb01hRsm/FVqhOFUaDJFIRBuo6k1w70nKTqgMIShPkbhDIiMNPnablusTJyJNl4ZDiuaMeaB/VGd2unKlxu+RPQ6SeqSlAV5Pszrxrv2kNUlCH5mALM/T4OTCpF5CkqTffAExIN+dt9WYCg+Nkbfw7VasAAN4Cx+Ag= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412504825597.5205183547712; Sat, 18 Jul 2026 15:08:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlDCk-0007u0-EI; Sat, 18 Jul 2026 18:08:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDCh-0007sC-Re; Sat, 18 Jul 2026 18:08:15 -0400 Received: from pdx-out-014.esa.us-west-2.outbound.mail-perimeter.amazon.com ([35.83.148.184]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDCg-0006Qq-5R; Sat, 18 Jul 2026 18:08:15 -0400 Received: from ip-10-5-9-48.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.9.48]) by internal-pdx-out-014.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:08:10 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.182:28558] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.58.199:2525] with esmtp (Farcaster) id 444791e4-d5b5-4331-8018-5ecb2f3bc6dc; Sat, 18 Jul 2026 22:08:09 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA001.ant.amazon.com (10.250.64.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:08:09 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:07:59 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412494; x=1815948494; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=G1UyOWfPgaa++LCkxX4r7NG+RpGanimySkRJr9fc6kE=; b=qy7a04ZVzH/4zPSfAfNIFQNv9F5937t369Xx8cVRtgXNWy/JQC9A/wcK OTucuEWeXM65Dj7ALijxlLaR+AyxCFMsjsVev27byxwqGRtEHund0VrFt yk6nUUv7s05d1QnkxHBEQUp4sNKa8x6ts223l4MVj15AFp/AkQJq/rwzI o6BoJMxEZpbTtB//7oyeG2/xATLkuY8ydsO7h4BPQqY+I0lFLp84ugvRB A3OYV7ZHVID4YxLTgbOk/xnv512xqFgOkocSSAslDIWOyvc2en6UUUQrA Feo/F38b2v+tvOIedOJwPRWSqspkkD8fO+8RQ6MjPFUCzEpkJZFdIp6VC g==; X-CSE-ConnectionGUID: KwXx8cCURp+zffBsmQ2B6A== X-CSE-MsgGUID: JGiQuKHoSyGjDWA06T2i7Q== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23713196" X-Farcaster-Flow-ID: 444791e4-d5b5-4331-8018-5ecb2f3bc6dc From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 111/137] hw/pci, hw/usb, system: Give allocated IRQs an owner and name Date: Sat, 18 Jul 2026 21:36:26 +0000 Message-ID: <20260718213652.37673-112-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D045UWC001.ant.amazon.com (10.13.139.223) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=35.83.148.184; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-014.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412505243158500 Content-Type: text/plain; charset="utf-8" Convert pci_allocate_irq() and the qtest interceptor to the parented qemu_allocate_irq() form so the IRQ objects land under the device that owns their lifetime instead of /machine/unattached. hw/usb/vt82c686-uhci-pci.c drops the IRQ set up by the base UHCI class before installing its own; switch that from object_unref() to qemu_free_irq() so it unparents the now-parented IRQ before freeing it. hw/pci/pci.c pci_allocate_irq() | OBJECT(pci_dev) | "intx-irq" system/qtest.c qtest intercept | OBJECT(dev) | "qtest-icpt[*]" hw/usb/vt82c686-uhci-pci.c | OBJECT(s) | "isa-irq" AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/pci/pci.c | 2 +- hw/usb/vt82c686-uhci-pci.c | 4 ++-- system/qtest.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/hw/pci/pci.c b/hw/pci/pci.c index 9ba7bfd977..d92092b233 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -1869,7 +1869,7 @@ qemu_irq pci_allocate_irq(PCIDevice *pci_dev) int intx =3D pci_intx(pci_dev); assert(0 <=3D intx && intx < PCI_NUM_PINS); =20 - return qemu_allocate_irq_orphan(pci_irq_handler, pci_dev, intx); + return qemu_allocate_irq(OBJECT(pci_dev), "intx-irq", pci_irq_handler,= pci_dev, intx); } =20 void pci_set_irq(PCIDevice *pci_dev, int level) diff --git a/hw/usb/vt82c686-uhci-pci.c b/hw/usb/vt82c686-uhci-pci.c index b58b61e609..d8c9e98061 100644 --- a/hw/usb/vt82c686-uhci-pci.c +++ b/hw/usb/vt82c686-uhci-pci.c @@ -22,8 +22,8 @@ static void usb_uhci_vt82c686b_realize(PCIDevice *dev, Er= ror **errp) pci_set_long(pci_conf + 0xc0, 0x00002000); =20 usb_uhci_common_realize(dev, errp); - object_unref(s->irq); - s->irq =3D qemu_allocate_irq_orphan(uhci_isa_set_irq, s, 0); + qemu_free_irq(s->irq); + s->irq =3D qemu_allocate_irq(OBJECT(s), "isa-irq", uhci_isa_set_irq, s= , 0); } =20 static UHCIInfo uhci_info[] =3D { diff --git a/system/qtest.c b/system/qtest.c index f38feaac89..5ef99f9f23 100644 --- a/system/qtest.c +++ b/system/qtest.c @@ -346,7 +346,7 @@ void qtest_set_command_cb(bool (*pc_cb)(CharFrontend *c= hr, gchar **words)) static void qtest_install_gpio_out_intercept(DeviceState *dev, const char = *name, int n) { qemu_irq *disconnected =3D g_new0(qemu_irq, 1); - qemu_irq icpt =3D qemu_allocate_irq_orphan(qtest_irq_handler, + qemu_irq icpt =3D qemu_allocate_irq(OBJECT(dev), "qtest-icpt[*]", qtes= t_irq_handler, disconnected, n); =20 *disconnected =3D qdev_intercept_gpio_out(dev, icpt, name, n); --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412523; cv=none; d=zohomail.com; s=zohoarc; b=fw8vu0ff5AddBVDcUszNFoj1YCmA6ar5OVhQF4RhiHTo9M1dPfxEQUhkPFefI5L10oJqqdfNA/0vtwOmNeO6kqXm153lQyJnfj0B+T0VAY4WHmgcT2x7ZA9wNu0Q+KihXJcIi/wJAFT6c5jXvlUk1DOtPCVjfzZshs4jHocv0OQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412523; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Jf/1ve/u3Nl6N3nyUw183H5JEOBKRONrN8lfQH4esNs=; b=f/emZ7tQR/SiI2ASX4FTuvUB+w84hiAgRg5FcWWCEf6JLgx72owDaUZTvvU6rhjVMlB8WsZcVn7oTlrojfDbcUDZ/NMRofsnfFiACun5FPzNotG9VU+bBlMVwbCiVK/oWNOdNudKVCe+h4dq2b5DfdA+F5IWFdof1RAPZizPGsM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412523959981.3879517081219; Sat, 18 Jul 2026 15:08:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlDCu-00088n-QZ; Sat, 18 Jul 2026 18:08:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDCs-00083J-PC; Sat, 18 Jul 2026 18:08:26 -0400 Received: from pdx-out-004.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.246.77.92]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDCq-0006RS-Fa; Sat, 18 Jul 2026 18:08:26 -0400 Received: from ip-10-5-0-115.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.0.115]) by internal-pdx-out-004.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:08:19 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.105:29057] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.29.147:2525] with esmtp (Farcaster) id 11de6aae-6b17-47b7-abd3-0a291701aab0; Sat, 18 Jul 2026 22:08:19 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC001.ant.amazon.com (10.250.64.174) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:08:18 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:08:09 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412504; x=1815948504; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Jf/1ve/u3Nl6N3nyUw183H5JEOBKRONrN8lfQH4esNs=; b=F1RLabStRFfC3PurW9iZTi/WlKgJHHvWDaMVI+f69sKEwTVgjC06Rb+u qn8SVK8RD0lIeulKOKvpkUgudZeAxsXw/Hhj45ln3NfAd3yN3gMC89/Ol C5Jpzl445M1R84xjDAtRCXB90ySFcUcKBbZ2g+wUBIdmZmhC8iu45xwMr gLlw3QtWX6Afst0b2D5hheMVdzzaD/Yb+1ss3f+/0NM8E68iI0YrC5svK mr6eNWYWh5d4HkMeCgMqP3I7PIBXfQTDzic+g3pVDq8aQsuveITtoVXYZ 3vRlisj4qQhRnJXs6hTRghok3s1Vxn456qR6l0MTnlFEjvSwTUoQViY6r A==; X-CSE-ConnectionGUID: hXQjxJAcRSyDNw+mAdQy0A== X-CSE-MsgGUID: 0UtFkoMjTHiT7g/x2hui3A== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23918076" X-Farcaster-Flow-ID: 11de6aae-6b17-47b7-abd3-0a291701aab0 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 112/137] hw/i386, hw/xen: Give allocated IRQs an owner and name Date: Sat, 18 Jul 2026 21:36:27 +0000 Message-ID: <20260718213652.37673-113-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D045UWC001.ant.amazon.com (10.13.139.223) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.246.77.92; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-004.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412525697158500 Content-Type: text/plain; charset="utf-8" Convert the IRQ allocation calls in hw/i386 and the Xen accelerator to the parented form. Thread an Object *parent through the small helpers that had none: pc_gsi_create() -> +Object *parent x86_allocate_cpu_irq() -> +Object *parent xen_interrupt_controller_init() -> +Object *parent Per-site owner/name: pc.c pc_gsi_create() | parent | "gsi" pc.c a20 line | parent | "a20" pc_piix.c smi | OBJECT(machine) | "smi" x86-cpu.c CPU IRQ | parent | "pic-cpu-irq" microvm.c gsi | OBJECT(mms) | "gsi" kvm/i8259.c | parent | "kvm-pic-irq" xen-hvm.c | parent | "xen-irq" AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/i386/isapc.c | 2 +- hw/i386/kvm/i8259.c | 2 +- hw/i386/microvm.c | 4 ++-- hw/i386/pc.c | 10 +++++----- hw/i386/pc_piix.c | 5 +++-- hw/i386/pc_q35.c | 2 +- hw/i386/x86-cpu.c | 4 ++-- hw/i386/xen/xen-hvm.c | 4 ++-- include/hw/i386/pc.h | 2 +- include/hw/i386/x86.h | 2 +- include/hw/xen/xen.h | 2 +- stubs/xen-hw-stub.c | 2 +- 12 files changed, 21 insertions(+), 20 deletions(-) diff --git a/hw/i386/isapc.c b/hw/i386/isapc.c index e8d5767b80..c9f2f14123 100644 --- a/hw/i386/isapc.c +++ b/hw/i386/isapc.c @@ -106,7 +106,7 @@ static void pc_init_isa(MachineState *machine) } } =20 - gsi_state =3D pc_gsi_create(&x86ms->gsi, false); + gsi_state =3D pc_gsi_create(OBJECT(machine), &x86ms->gsi, false); =20 isa_bus =3D isa_bus_new_bridge(OBJECT(machine), system_memory, system_= io, &error_abort); diff --git a/hw/i386/kvm/i8259.c b/hw/i386/kvm/i8259.c index 7ef7a0b487..db2847686b 100644 --- a/hw/i386/kvm/i8259.c +++ b/hw/i386/kvm/i8259.c @@ -136,7 +136,7 @@ qemu_irq *kvm_i8259_init(Object *parent, ISABus *bus) i8259_init_chip(parent, TYPE_KVM_I8259, bus, true); i8259_init_chip(parent, TYPE_KVM_I8259, bus, false); =20 - return qemu_allocate_irqs_orphan(kvm_pic_set_irq, NULL, ISA_NUM_IRQS); + return qemu_allocate_irqs(parent, "kvm-pic-irq", kvm_pic_set_irq, NULL= , ISA_NUM_IRQS); } =20 static void kvm_i8259_class_init(ObjectClass *klass, const void *data) diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c index 07dbe3a18b..4c1a4d5661 100644 --- a/hw/i386/microvm.c +++ b/hw/i386/microvm.c @@ -168,7 +168,7 @@ static void microvm_devices_init(MicrovmMachineState *m= ms) /* Core components */ ioapics =3D microvm_ioapics(mms); gsi_state =3D g_malloc0(sizeof(*gsi_state)); - x86ms->gsi =3D qemu_allocate_irqs_orphan(gsi_handler, gsi_state, + x86ms->gsi =3D qemu_allocate_irqs(OBJECT(mms), "gsi", gsi_handler, gsi= _state, IOAPIC_NUM_PINS * ioapics); =20 isa_bus =3D isa_bus_new_bridge(OBJECT(mms), get_system_memory(), get_s= ystem_io(), @@ -252,7 +252,7 @@ static void microvm_devices_init(MicrovmMachineState *m= ms) if (x86ms->pic =3D=3D ON_OFF_AUTO_ON || x86ms->pic =3D=3D ON_OFF_AUTO_= AUTO) { qemu_irq *i8259; =20 - i8259 =3D i8259_init(OBJECT(mms), isa_bus, x86_allocate_cpu_irq()); + i8259 =3D i8259_init(OBJECT(mms), isa_bus, x86_allocate_cpu_irq(OB= JECT(mms))); for (i =3D 0; i < ISA_NUM_IRQS; i++) { gsi_state->i8259_irq[i] =3D i8259[i]; } diff --git a/hw/i386/pc.c b/hw/i386/pc.c index 249fa699c7..398371ff6f 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -192,7 +192,7 @@ const size_t pc_compat_4_1_len =3D G_N_ELEMENTS(pc_comp= at_4_1); */ #define PC_FW_DATA (0x20000 + 0x8000) =20 -GSIState *pc_gsi_create(qemu_irq **irqs, bool pci_enabled) +GSIState *pc_gsi_create(Object *parent, qemu_irq **irqs, bool pci_enabled) { GSIState *s; =20 @@ -200,7 +200,7 @@ GSIState *pc_gsi_create(qemu_irq **irqs, bool pci_enabl= ed) if (kvm_ioapic_in_kernel()) { kvm_pc_setup_irq_routing(pci_enabled); } - *irqs =3D qemu_allocate_irqs_orphan(gsi_handler, s, IOAPIC_NUM_PINS); + *irqs =3D qemu_allocate_irqs(parent, "gsi", gsi_handler, s, IOAPIC_NUM= _PINS); =20 return s; } @@ -1028,7 +1028,7 @@ static void pc_superio_init(Object *parent, ISABus *i= sa_bus, bool create_fdctrl, } port92 =3D isa_create_simple(parent, "port92", isa_bus, TYPE_PORT92); =20 - a20_line =3D qemu_allocate_irqs_orphan(handle_a20_line_change, first_c= pu, 2); + a20_line =3D qemu_allocate_irqs(parent, "a20", handle_a20_line_change,= first_cpu, 2); qdev_connect_gpio_out_named(DEVICE(i8042), I8042_A20_LINE, 0, a20_line[0]); qdev_connect_gpio_out_named(DEVICE(port92), @@ -1167,9 +1167,9 @@ void pc_i8259_create(Object *parent, ISABus *isa_bus,= qemu_irq *i8259_irqs) if (kvm_pic_in_kernel()) { i8259 =3D kvm_i8259_init(parent, isa_bus); } else if (xen_enabled()) { - i8259 =3D xen_interrupt_controller_init(); + i8259 =3D xen_interrupt_controller_init(parent); } else { - i8259 =3D i8259_init(parent, isa_bus, x86_allocate_cpu_irq()); + i8259 =3D i8259_init(parent, isa_bus, x86_allocate_cpu_irq(parent)= ); } =20 for (size_t i =3D 0; i < ISA_NUM_IRQS; i++) { diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c index f76d684d6b..976c646822 100644 --- a/hw/i386/pc_piix.c +++ b/hw/i386/pc_piix.c @@ -233,7 +233,7 @@ static void pc_init1(MachineState *machine, const char = *pci_type) } } =20 - gsi_state =3D pc_gsi_create(&x86ms->gsi, true); + gsi_state =3D pc_gsi_create(OBJECT(machine), &x86ms->gsi, true); =20 pci_dev =3D pci_new_multifunction(OBJECT(machine), "south-bridge", -1, pcms->south_bridge); @@ -299,7 +299,8 @@ static void pc_init1(MachineState *machine, const char = *pci_type) pc_nic_init(pcmc, isa_bus, pcms->pcibus); =20 if (piix4_pm) { - smi_irq =3D qemu_allocate_irq_orphan(pc_acpi_smi_interrupt, first_= cpu, 0); + smi_irq =3D qemu_allocate_irq(OBJECT(machine), "smi", + pc_acpi_smi_interrupt, first_cpu, 0); =20 qdev_connect_gpio_out_named(DEVICE(piix4_pm), "smi-irq", 0, smi_ir= q); pcms->smbus =3D I2C_BUS(qdev_get_child_bus(DEVICE(piix4_pm), "i2c"= )); diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c index b2cdca8ade..b6a79d2e13 100644 --- a/hw/i386/pc_q35.c +++ b/hw/i386/pc_q35.c @@ -233,7 +233,7 @@ static void pc_q35_init(MachineState *machine) pcms->pcibus =3D PCI_BUS(qdev_get_child_bus(DEVICE(phb), "pcie.0")); =20 /* irq lines */ - gsi_state =3D pc_gsi_create(&x86ms->gsi, true); + gsi_state =3D pc_gsi_create(OBJECT(machine), &x86ms->gsi, true); =20 /* create ISA bus */ lpc =3D pci_new_multifunction(OBJECT(machine), "lpc", diff --git a/hw/i386/x86-cpu.c b/hw/i386/x86-cpu.c index 6d010291cf..f92acf2778 100644 --- a/hw/i386/x86-cpu.c +++ b/hw/i386/x86-cpu.c @@ -61,9 +61,9 @@ static void pic_irq_request(void *opaque, int irq, int le= vel) } } =20 -qemu_irq x86_allocate_cpu_irq(void) +qemu_irq x86_allocate_cpu_irq(Object *parent) { - return qemu_allocate_irq_orphan(pic_irq_request, NULL, 0); + return qemu_allocate_irq(parent, "pic-cpu-irq", pic_irq_request, NULL,= 0); } =20 int cpu_get_pic_interrupt(CPUX86State *env) diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c index e87c8237ea..e19c9723da 100644 --- a/hw/i386/xen/xen-hvm.c +++ b/hw/i386/xen/xen-hvm.c @@ -112,9 +112,9 @@ static void xen_set_irq(void *opaque, int irq, int leve= l) xen_set_isa_irq_level(xen_domid, irq, level); } =20 -qemu_irq *xen_interrupt_controller_init(void) +qemu_irq *xen_interrupt_controller_init(Object *parent) { - return qemu_allocate_irqs_orphan(xen_set_irq, NULL, 16); + return qemu_allocate_irqs(parent, "xen-irq", xen_set_irq, NULL, 16); } =20 /* Memory Ops */ diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h index a059409243..15e4cca288 100644 --- a/include/hw/i386/pc.h +++ b/include/hw/i386/pc.h @@ -126,7 +126,7 @@ OBJECT_DECLARE_TYPE(PCMachineState, PCMachineClass, PC_= MACHINE) =20 /* ioapic.c */ =20 -GSIState *pc_gsi_create(qemu_irq **irqs, bool pci_enabled); +GSIState *pc_gsi_create(Object *parent, qemu_irq **irqs, bool pci_enabled); =20 /* pc.c */ =20 diff --git a/include/hw/i386/x86.h b/include/hw/i386/x86.h index 9d5d7694d4..a21b5d1384 100644 --- a/include/hw/i386/x86.h +++ b/include/hw/i386/x86.h @@ -145,7 +145,7 @@ typedef struct GSIState { qemu_irq ioapic2_irq[IOAPIC_NUM_PINS]; } GSIState; =20 -qemu_irq x86_allocate_cpu_irq(void); +qemu_irq x86_allocate_cpu_irq(Object *parent); void gsi_handler(void *opaque, int n, int level); void ioapic_init_gsi(GSIState *gsi_state, Object *parent); DeviceState *ioapic_init_secondary(Object *parent, GSIState *gsi_state); diff --git a/include/hw/xen/xen.h b/include/hw/xen/xen.h index e94c6e5a31..83b7f6c3aa 100644 --- a/include/hw/xen/xen.h +++ b/include/hw/xen/xen.h @@ -42,7 +42,7 @@ void xen_intx_set_irq(void *opaque, int irq_num, int leve= l); void xen_hvm_inject_msi(uint64_t addr, uint32_t data); int xen_is_pirq_msi(uint32_t msi_data); =20 -qemu_irq *xen_interrupt_controller_init(void); +qemu_irq *xen_interrupt_controller_init(Object *parent); =20 void xen_register_framebuffer(struct MemoryRegion *mr); =20 diff --git a/stubs/xen-hw-stub.c b/stubs/xen-hw-stub.c index 6cf0e9a4c1..4ea666cac8 100644 --- a/stubs/xen-hw-stub.c +++ b/stubs/xen-hw-stub.c @@ -29,7 +29,7 @@ int xen_is_pirq_msi(uint32_t msi_data) return 0; } =20 -qemu_irq *xen_interrupt_controller_init(void) +qemu_irq *xen_interrupt_controller_init(Object *parent) { return NULL; } --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412554; cv=none; d=zohomail.com; s=zohoarc; b=MGXG9sg0TKn5J8qnB2z4DSd0AwmygjFmoDMcuc0pi8eVMVICQhlegBP01bid10+Ye41aTPjQ/D/QgmAILpM4y8GCZBxF2VwqPmp/r+CEXxu8F8amFfhEP3ab2PzJ7RsdqjJUDwcaFatJnZIXLO3zPKdEVy0x95CH2lwo26RSXbw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412554; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=9BdOIPurGXorufMMw9yJ6Zpli6t5rDT05QruYCPpIWI=; b=jAPXGMKSsbkqmttmtdLqDWoKX+yVW9MImtu77yx3LfsJc7gg6r6ZQN+CfNJYVzWN7QCWZEydnXluzDWsbKHZZPAKBxHjm+uq2f/N3gTmoxoz7e7/DFR4FMNXIEQZFl1I0HSI1ugGu/dvdFrWBtRwc2trPf+suW/1NG6C6CLfwlk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412554260380.1712906145091; Sat, 18 Jul 2026 15:09:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlDDU-0000TK-55; Sat, 18 Jul 2026 18:09:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDDF-0000Kh-VU; Sat, 18 Jul 2026 18:08:50 -0400 Received: from pdx-out-005.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.13.214.179]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDDA-0006SB-CV; Sat, 18 Jul 2026 18:08:46 -0400 Received: from ip-10-5-9-48.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.9.48]) by internal-pdx-out-005.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:08:29 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.111:9240] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.40.177:2525] with esmtp (Farcaster) id 4c5e8539-07bb-4451-a289-266a7393ebcd; Sat, 18 Jul 2026 22:08:28 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB002.ant.amazon.com (10.250.64.231) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:08:28 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:08:18 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412524; x=1815948524; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=9BdOIPurGXorufMMw9yJ6Zpli6t5rDT05QruYCPpIWI=; b=YfErNyr6Ab1iyCDeyK1Qw8stnAI41B1jZbPIh7+XDh0H4+o8ZXN0ryKx AsHUjndnQfL2649eXQl9GfoCpcEwQWMHKr9USv9H64IWhOu2n9YOrOazQ ah0GcggW5z+Ys7YR72vwI9PD8rZ8CTXvbY1JB0hTiaf7V+k3cfjZWnZDS OwXodQvTDGtTpJJMjpZ1ZvTtXVoYLBuFt2URrF7DO6PAQoAJYAFf9DDzm cv8HP657iBi861L5X2UxJ8XI/AaYb0GbuLb3yBWWaBA/DXemcc0yZ6aGp mpNbojn3sPLJXoPbBLjfux04QHLthPv3VMTISLTTtJIdSJXAlqXppd6FV g==; X-CSE-ConnectionGUID: Ow2aA+mjQey+NBlPAa8TMg== X-CSE-MsgGUID: NrRHj7wDTWOxKg7uWVsqaw== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23904566" X-Farcaster-Flow-ID: 4c5e8539-07bb-4451-a289-266a7393ebcd From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 113/137] hw/arm: Give allocated IRQs an owner and name Date: Sat, 18 Jul 2026 21:36:28 +0000 Message-ID: <20260718213652.37673-114-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D045UWC001.ant.amazon.com (10.13.139.223) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.13.214.179; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-005.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412555532158500 Content-Type: text/plain; charset="utf-8" Convert the IRQ allocation calls in hw/arm boards and the OMAP peripheral models to the parented form. Thread an Object *owner through the small helpers that had none: omap_timer_clk_setup() -> +Object *owner omap_mcbsp_i2s_attach() -> +Object *owner (no callers, kept for API) The OMAP init helpers are called multiple times from omap310_mpu_init() so their IRQ names use the auto-index [*] form. AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/arm/armsse.c | 5 +++-- hw/arm/exynos4_boards.c | 3 ++- hw/arm/mps2-tz.c | 3 ++- hw/arm/omap1.c | 29 +++++++++++++++++------------ hw/arm/realview.c | 3 ++- hw/arm/stellaris.c | 15 ++++++++++----- hw/dma/omap_dma.c | 5 +++-- hw/timer/arm_timer.c | 6 ++++-- include/hw/arm/omap.h | 2 +- 9 files changed, 44 insertions(+), 27 deletions(-) diff --git a/hw/arm/armsse.c b/hw/arm/armsse.c index 93f6715224..b25f058020 100644 --- a/hw/arm/armsse.c +++ b/hw/arm/armsse.c @@ -693,7 +693,8 @@ static void armsse_forward_sec_resp_cfg(ARMSSE *s) DeviceState *dev_splitter =3D DEVICE(&s->sec_resp_splitter); =20 qdev_init_gpio_out_named(dev, &s->sec_resp_cfg, "sec_resp_cfg", 1); - s->sec_resp_cfg_in =3D qemu_allocate_irq_orphan(irq_status_forwarder, + s->sec_resp_cfg_in =3D qemu_allocate_irq(OBJECT(s), "sec-resp-cfg-in", + irq_status_forwarder, s->sec_resp_cfg, 1); qdev_connect_gpio_out(dev_splitter, 2, s->sec_resp_cfg_in); } @@ -1137,7 +1138,7 @@ static void armsse_realize(DeviceState *dev, Error **= errp) sysbus_mmio_map(sbd_secctl, 0, 0x50080000); sysbus_mmio_map(sbd_secctl, 1, 0x40080000); =20 - s->nsc_cfg_in =3D qemu_allocate_irq_orphan(nsccfg_handler, s, 1); + s->nsc_cfg_in =3D qemu_allocate_irq(OBJECT(dev), "nsc-cfg-in", nsccfg_= handler, s, 1); qdev_connect_gpio_out_named(dev_secctl, "nsc_cfg", 0, s->nsc_cfg_in); =20 /* The sec_resp_cfg output from the security controller must be split = into diff --git a/hw/arm/exynos4_boards.c b/hw/arm/exynos4_boards.c index 537a50f8cc..4f5c99e301 100644 --- a/hw/arm/exynos4_boards.c +++ b/hw/arm/exynos4_boards.c @@ -146,7 +146,8 @@ static void smdkc210_init(MachineState *machine) EXYNOS4_BOARD_SMDKC2= 10); =20 lan9215_init(SMDK_LAN9118_BASE_ADDR, - qemu_irq_invert_orphan(s->soc.irq_table[exynos4210_get_irq(37,= 1)])); + qemu_irq_invert(OBJECT(machine), "lan9118-irq-inv", + s->soc.irq_table[exynos4210_get_irq(37, 1)])); arm_load_kernel(s->soc.cpu[0], machine, &exynos4_board_binfo); } =20 diff --git a/hw/arm/mps2-tz.c b/hw/arm/mps2-tz.c index 654eaedd97..ea94f1a6dd 100644 --- a/hw/arm/mps2-tz.c +++ b/hw/arm/mps2-tz.c @@ -1209,7 +1209,8 @@ static void mps2tz_common_init(MachineState *machine) * Connect the line from the SCC so that we can remap when the * guest updates that register. */ - mms->remap_irq =3D qemu_allocate_irq_orphan(remap_irq_fn, mms, 0); + mms->remap_irq =3D qemu_allocate_irq(OBJECT(machine), "remap-irq", + remap_irq_fn, mms, 0); qdev_connect_gpio_out_named(DEVICE(&mms->scc), "remap", 0, mms->remap_irq); } diff --git a/hw/arm/omap1.c b/hw/arm/omap1.c index 53e52ef34e..c193b41f5b 100644 --- a/hw/arm/omap1.c +++ b/hw/arm/omap1.c @@ -136,10 +136,11 @@ static void omap_timer_clk_update(void *opaque, int l= ine, int on) omap_timer_update(timer); } =20 -static void omap_timer_clk_setup(struct omap_mpu_timer_s *timer) +static void omap_timer_clk_setup(Object *owner, struct omap_mpu_timer_s *t= imer) { omap_clk_adduser(timer->clk, - qemu_allocate_irq_orphan(omap_timer_clk_update, timer,= 0)); + qemu_allocate_irq(owner, "rate-irq[*]", + omap_timer_clk_update, timer, 0)); timer->rate =3D omap_clk_getrate(timer->clk); } =20 @@ -232,7 +233,7 @@ static struct omap_mpu_timer_s *omap_mpu_timer_init(Obj= ect *owner, s->timer =3D timer_new_ns(QEMU_CLOCK_VIRTUAL, omap_timer_tick, s); s->tick =3D qemu_bh_new(omap_timer_fire, s); omap_mpu_timer_reset(s); - omap_timer_clk_setup(s); + omap_timer_clk_setup(owner, s); =20 memory_region_init_io(&s->iomem, owner, &omap_mpu_timer_ops, s, "omap-mpu-timer", 0x100); @@ -363,7 +364,7 @@ static struct omap_watchdog_timer_s *omap_wd_timer_init= (Object *owner, s->timer.clk =3D clk; s->timer.timer =3D timer_new_ns(QEMU_CLOCK_VIRTUAL, omap_timer_tick, &= s->timer); omap_wd_timer_reset(s); - omap_timer_clk_setup(&s->timer); + omap_timer_clk_setup(owner, &s->timer); =20 memory_region_init_io(&s->iomem, owner, &omap_wd_timer_ops, s, "omap-wd-timer", 0x100); @@ -472,7 +473,7 @@ static struct omap_32khz_timer_s *omap_os_timer_init(Ob= ject *owner, s->timer.clk =3D clk; s->timer.timer =3D timer_new_ns(QEMU_CLOCK_VIRTUAL, omap_timer_tick, &= s->timer); omap_os_timer_reset(s); - omap_timer_clk_setup(&s->timer); + omap_timer_clk_setup(owner, &s->timer); =20 memory_region_init_io(&s->iomem, owner, &omap_os_timer_ops, s, "omap-os-timer", 0x800); @@ -2083,14 +2084,15 @@ static struct omap_mpuio_s *omap_mpuio_init(Object = *owner, =20 s->irq =3D gpio_int; s->kbd_irq =3D kbd_int; - s->in =3D qemu_allocate_irqs_orphan(omap_mpuio_set, s, 16); + s->in =3D qemu_allocate_irqs(owner, "mpuio-in", omap_mpuio_set, s, 16); omap_mpuio_reset(s); =20 memory_region_init_io(&s->iomem, owner, &omap_mpuio_ops, s, "omap-mpuio", 0x800); memory_region_add_subregion(memory, base, &s->iomem); =20 - omap_clk_adduser(clk, qemu_allocate_irq_orphan(omap_mpuio_onoff, s, 0)= ); + omap_clk_adduser(clk, qemu_allocate_irq(owner, "mpuio-clk-onoff[*]", + omap_mpuio_onoff, s, 0)); =20 return s; } @@ -2363,7 +2365,8 @@ static struct omap_pwl_s *omap_pwl_init(Object *owner, "omap-pwl", 0x800); memory_region_add_subregion(system_memory, base, &s->iomem); =20 - omap_clk_adduser(clk, qemu_allocate_irq_orphan(omap_pwl_clk_update, s,= 0)); + omap_clk_adduser(clk, qemu_allocate_irq(owner, "pwl-clk-irq[*]", + omap_pwl_clk_update, s, 0)); return s; } =20 @@ -3423,11 +3426,12 @@ static void omap_mcbsp_i2s_start(void *opaque, int = line, int level) } } =20 -void omap_mcbsp_i2s_attach(struct omap_mcbsp_s *s, I2SCodec *slave) +void omap_mcbsp_i2s_attach(Object *owner, struct omap_mcbsp_s *s, I2SCodec= *slave) { s->codec =3D slave; - slave->rx_swallow =3D qemu_allocate_irq_orphan(omap_mcbsp_i2s_swallow,= s, 0); - slave->tx_start =3D qemu_allocate_irq_orphan(omap_mcbsp_i2s_start, s, = 0); + slave->rx_swallow =3D qemu_allocate_irq(owner, "rx-swallow[*]", + omap_mcbsp_i2s_swallow, s, 0); + slave->tx_start =3D qemu_allocate_irq(owner, "tx-start[*]", omap_mcbsp= _i2s_start, s, 0); } =20 /* LED Pulse Generators */ @@ -3579,7 +3583,8 @@ static struct omap_lpg_s *omap_lpg_init(Object *owner, "omap-lpg", 0x800); memory_region_add_subregion(system_memory, base, &s->iomem); =20 - omap_clk_adduser(clk, qemu_allocate_irq_orphan(omap_lpg_clk_update, s,= 0)); + omap_clk_adduser(clk, qemu_allocate_irq(owner, "lpg-clk-irq[*]", + omap_lpg_clk_update, s, 0)); =20 return s; } diff --git a/hw/arm/realview.c b/hw/arm/realview.c index cd63f39f42..99591e7d80 100644 --- a/hw/arm/realview.c +++ b/hw/arm/realview.c @@ -276,7 +276,8 @@ static void realview_init(MachineState *machine, =20 split_irq_from_named(OBJECT(machine), dev, "card-inserted", qdev_get_gpio_in(sysctl, ARM_SYSCTL_GPIO_MMC_CARDIN), - qemu_irq_invert_orphan(qdev_get_gpio_in(gpio2, 0))); + qemu_irq_invert(OBJECT(machine), "mmc-cd-inv", + qdev_get_gpio_in(gpio2, 0))); =20 dinfo =3D drive_get(IF_SD, 0, 0); if (dinfo) { diff --git a/hw/arm/stellaris.c b/hw/arm/stellaris.c index a5d037094a..a0986dbfe8 100644 --- a/hw/arm/stellaris.c +++ b/hw/arm/stellaris.c @@ -1358,15 +1358,20 @@ static void stellaris_init(MachineState *ms, stella= ris_board_info *board) sysbus_realize(SYS_BUS_DEVICE(gpad), &error_fatal); =20 qdev_connect_gpio_out(gpad, 0, - qemu_irq_invert_orphan(gpio_in[GPIO_E][0]));= /* up */ + qemu_irq_invert(OBJECT(ms), "gpio-in-irq[*]", + gpio_in[GPIO_E][0])); /* up = */ qdev_connect_gpio_out(gpad, 1, - qemu_irq_invert_orphan(gpio_in[GPIO_E][1]));= /* down */ + qemu_irq_invert(OBJECT(ms), "gpio-in-irq[*]", + gpio_in[GPIO_E][1])); /* dow= n */ qdev_connect_gpio_out(gpad, 2, - qemu_irq_invert_orphan(gpio_in[GPIO_E][2]));= /* left */ + qemu_irq_invert(OBJECT(ms), "gpio-in-irq[*]", + gpio_in[GPIO_E][2])); /* lef= t */ qdev_connect_gpio_out(gpad, 3, - qemu_irq_invert_orphan(gpio_in[GPIO_E][3]));= /* right */ + qemu_irq_invert(OBJECT(ms), "gpio-in-irq[*]", + gpio_in[GPIO_E][3])); /* rig= ht */ qdev_connect_gpio_out(gpad, 4, - qemu_irq_invert_orphan(gpio_in[GPIO_F][1]));= /* select */ + qemu_irq_invert(OBJECT(ms), "gpio-in-irq[*]", + gpio_in[GPIO_F][1])); /* sel= ect */ } for (i =3D 0; i < 7; i++) { if (board->dc4 & (1 << i)) { diff --git a/hw/dma/omap_dma.c b/hw/dma/omap_dma.c index 7a2a3310f9..7efb7a8b9a 100644 --- a/hw/dma/omap_dma.c +++ b/hw/dma/omap_dma.c @@ -1109,7 +1109,7 @@ struct soc_dma_s *omap_dma_init(Object *owner, hwaddr= base, qemu_irq *irqs, s->dma->freq =3D omap_clk_getrate(clk); s->dma->transfer_fn =3D omap_dma_transfer_generic; s->dma->setup_fn =3D omap_dma_transfer_setup; - s->dma->drq =3D qemu_allocate_irqs_orphan(omap_dma_request, s, 32); + s->dma->drq =3D qemu_allocate_irqs(owner, "drq", omap_dma_request, s, = 32); s->dma->opaque =3D s; =20 while (num_irqs --) @@ -1123,7 +1123,8 @@ struct soc_dma_s *omap_dma_init(Object *owner, hwaddr= base, qemu_irq *irqs, s->dma->ch[i].opaque =3D &s->ch[i]; } =20 - omap_clk_adduser(s->clk, qemu_allocate_irq_orphan(omap_dma_clk_update,= s, 0)); + omap_clk_adduser(s->clk, qemu_allocate_irq(owner, "clk-irq", + omap_dma_clk_update, s, 0)); omap_dma_reset(s->dma); omap_dma_clk_update(s, 0, 1); =20 diff --git a/hw/timer/arm_timer.c b/hw/timer/arm_timer.c index 1c29db12a2..42ccc99b1e 100644 --- a/hw/timer/arm_timer.c +++ b/hw/timer/arm_timer.c @@ -305,8 +305,10 @@ static void sp804_realize(DeviceState *dev, Error **er= rp) =20 s->timer[0] =3D arm_timer_init(s->freq0); s->timer[1] =3D arm_timer_init(s->freq1); - s->timer[0]->irq =3D qemu_allocate_irq_orphan(sp804_set_irq, s, 0); - s->timer[1]->irq =3D qemu_allocate_irq_orphan(sp804_set_irq, s, 1); + s->timer[0]->irq =3D qemu_allocate_irq(OBJECT(dev), "timer-irq[*]", + sp804_set_irq, s, 0); + s->timer[1]->irq =3D qemu_allocate_irq(OBJECT(dev), "timer-irq[*]", + sp804_set_irq, s, 1); } =20 /* Integrator/CP timer module. */ diff --git a/include/hw/arm/omap.h b/include/hw/arm/omap.h index 591abf752b..a4267ef30a 100644 --- a/include/hw/arm/omap.h +++ b/include/hw/arm/omap.h @@ -291,7 +291,7 @@ struct I2SCodec { } in, out; }; struct omap_mcbsp_s; -void omap_mcbsp_i2s_attach(struct omap_mcbsp_s *s, I2SCodec *slave); +void omap_mcbsp_i2s_attach(Object *owner, struct omap_mcbsp_s *s, I2SCodec= *slave); =20 /* omap_lcdc.c */ struct omap_lcd_panel_s; --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412606; cv=none; d=zohomail.com; s=zohoarc; b=npjmxCLRUKqmCfKmgIflZcClHSfNo+gqjBOK/alzvuSu0KYLc3ej9QF/H8Q1D6kHTQ8G02oiYVjAFVg4PfB8ZmuqP6V1ysL48zSdP+NTGG/VFeQSH8b7TuORA/Lrag7Qrf6/+ihAclmh0id1rJjZ+R4Snk6UWwAxB/CHC75jRrc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412606; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=vGQVF4AvH4I1N7F/96ahCv1nChpT2tiIK+RKCxSA6+c=; b=T8VicWlso1ve3da3VOX7pHJoo2aTh1vddyQchfr7A20SZUgRGjjkDby4u9YPBKwAz6a0OCFxm++LRouoc+mwoPUajJGPRzLUOc8l1Y8qWjcT79R4XCFiCuaeSE+ebPox4X0y6XqkVq9prEwbnKZuErN+4wtZSO++C0E5DBorYvQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412606038268.4264692500444; Sat, 18 Jul 2026 15:10:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlDDf-0000nS-0h; Sat, 18 Jul 2026 18:09:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDDX-0000Xo-Nq; Sat, 18 Jul 2026 18:09:09 -0400 Received: from pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.246.1.125]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDDU-0006Tb-Ik; Sat, 18 Jul 2026 18:09:07 -0400 Received: from ip-10-5-9-48.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.9.48]) by internal-pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:09:00 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.234:15443] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.58.199:2525] with esmtp (Farcaster) id f1dff26c-470d-4a34-8a2d-e50e8263b1de; Sat, 18 Jul 2026 22:09:00 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA002.ant.amazon.com (10.250.64.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:08:59 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:08:50 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412544; x=1815948544; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=vGQVF4AvH4I1N7F/96ahCv1nChpT2tiIK+RKCxSA6+c=; b=SBSoTn39gWQcJQBboDdGucxngzJ60WpRlaREtjXIQLdbrH/rlYCceRY9 TqRsrXySgk7l1KTshuu4V20j+7jndXEDUH4CeT3DUtugxMAS3IVoMm9M+ HocrRe61ssRuK4+Lk6qPwdmEbM/XAJkIIUtHI3X16kHcW9fg/dIl7ZO4V UVnj1W4S5e2GBy8e7J1EhH+/V2l00Zl1k9kJCNVCc0SLovTEzGyT26vnW DsIPGyE3Gi2unIn6MAuIuZ9sW+0rbGbhVZNP+VX76zv7WUlKP1Lb9oy7G bE79pmjlCA1ja0d+DiVLS8cy+bI6yy2XH06I+HL2p4t775zVIyf/Yp7R2 g==; X-CSE-ConnectionGUID: 6JgrcFRvRH6r9ZQ4XT1Cow== X-CSE-MsgGUID: jIQMUlurTXWsZdSCbmlpXQ== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23927901" X-Farcaster-Flow-ID: f1dff26c-470d-4a34-8a2d-e50e8263b1de From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 114/137] hw/xtensa: Give allocated IRQs an owner and name Date: Sat, 18 Jul 2026 21:36:29 +0000 Message-ID: <20260718213652.37673-115-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D033UWA002.ant.amazon.com (10.13.139.10) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.246.1.125; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412607665158500 Content-Type: text/plain; charset="utf-8" Thread an Object *owner through xtensa_mx_pic_init() and use the CPU object as owner for the per-CPU IRQ input arrays. AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/xtensa/mx_pic.c | 4 ++-- hw/xtensa/pic_cpu.c | 5 +++-- hw/xtensa/xtfpga.c | 2 +- include/hw/xtensa/mx_pic.h | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/hw/xtensa/mx_pic.c b/hw/xtensa/mx_pic.c index 9959bec5f2..f698d592f0 100644 --- a/hw/xtensa/mx_pic.c +++ b/hw/xtensa/mx_pic.c @@ -341,12 +341,12 @@ static void xtensa_mx_pic_set_irq(void *opaque, int i= rq, int active) } } =20 -XtensaMxPic *xtensa_mx_pic_init(unsigned n_irq) +XtensaMxPic *xtensa_mx_pic_init(Object *owner, unsigned n_irq) { XtensaMxPic *mx =3D g_new0(XtensaMxPic, 1); =20 mx->n_irq =3D n_irq + 1; - mx->irq_inputs =3D qemu_allocate_irqs_orphan(xtensa_mx_pic_set_irq, mx, + mx->irq_inputs =3D qemu_allocate_irqs(owner, "irq", xtensa_mx_pic_set_= irq, mx, mx->n_irq); return mx; } diff --git a/hw/xtensa/pic_cpu.c b/hw/xtensa/pic_cpu.c index c3163a8b6c..496c83a298 100644 --- a/hw/xtensa/pic_cpu.c +++ b/hw/xtensa/pic_cpu.c @@ -100,9 +100,10 @@ static void xtensa_set_runstall(void *opaque, int irq,= int active) =20 void xtensa_irq_init(CPUXtensaState *env) { + Object *cpu =3D OBJECT(env_cpu(env)); unsigned i; =20 - env->irq_inputs =3D qemu_allocate_irqs_orphan(xtensa_set_irq, env, + env->irq_inputs =3D qemu_allocate_irqs(cpu, "irq-in", xtensa_set_irq, = env, env->config->ninterrupt); if (xtensa_option_enabled(env->config, XTENSA_OPTION_TIMER_INTERRUPT))= { env->time_base =3D qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL); @@ -118,7 +119,7 @@ void xtensa_irq_init(CPUXtensaState *env) =20 env->ext_irq_inputs[i] =3D env->irq_inputs[irq]; } - env->runstall_irq =3D qemu_allocate_irq_orphan(xtensa_set_runstall, en= v, 0); + env->runstall_irq =3D qemu_allocate_irq(cpu, "runstall", xtensa_set_ru= nstall, env, 0); } =20 qemu_irq *xtensa_get_extints(CPUXtensaState *env) diff --git a/hw/xtensa/xtfpga.c b/hw/xtensa/xtfpga.c index f0c21180a2..6ec0822a96 100644 --- a/hw/xtensa/xtfpga.c +++ b/hw/xtensa/xtfpga.c @@ -247,7 +247,7 @@ static void xtfpga_init(const XtfpgaBoardDesc *board, M= achineState *machine) Object *mo =3D OBJECT(machine); =20 if (smp_cpus > 1) { - mx_pic =3D xtensa_mx_pic_init(31); + mx_pic =3D xtensa_mx_pic_init(mo, 31); qemu_register_reset(xtensa_mx_pic_reset, mx_pic); } for (n =3D 0; n < smp_cpus; n++) { diff --git a/include/hw/xtensa/mx_pic.h b/include/hw/xtensa/mx_pic.h index 01d5ea884e..212cf91e78 100644 --- a/include/hw/xtensa/mx_pic.h +++ b/include/hw/xtensa/mx_pic.h @@ -33,7 +33,7 @@ struct XtensaMxPic; typedef struct XtensaMxPic XtensaMxPic; =20 -XtensaMxPic *xtensa_mx_pic_init(unsigned n_extint); +XtensaMxPic *xtensa_mx_pic_init(Object *owner, unsigned n_extint); void xtensa_mx_pic_reset(void *opaque); MemoryRegion *xtensa_mx_pic_register_cpu(Object *owner, XtensaMxPic *mx, qemu_irq *irq, --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412644; cv=none; d=zohomail.com; s=zohoarc; b=bpaf6s/a5zN6A4xmwJFxkosYwIEnK2FgFnIR/vq/RYqGe7W1wBVCm/difqnMMVxlkL3KeOJG4ZirWmYwl8jSwZpiZ3HtczrTk3+cjSadzNcEwIEoaoQXL3zBZZwSy4/WTRaH5a/C/pyL4F0qo8VvMs91XvmSWdDMZcjMK/f4Oss= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412644; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ZWwUDOkk9Mi5vjYATmuEUs97Z81/V7kijcdGVjNy54w=; b=RKS9KRDFtkrnF0BljDEu/RpGtnNHB7HCL5FRWZuBf47Qpw1k3KyDFsJE8Sb6FaX673LNLJ6mqeUIOdvGoG1QfKu9j4OgKhA+2e+x8m6o8pJb+N7rednDVkKhMYyyO/FQLuQTjD2Wi5GM+hA7g2eC7yzPBzjj2Zrg41t+E9n6BtM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412644132104.15267568801278; Sat, 18 Jul 2026 15:10:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlDDj-0000wu-9a; Sat, 18 Jul 2026 18:09:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDDh-0000wA-H1; Sat, 18 Jul 2026 18:09:17 -0400 Received: from pdx-out-013.esa.us-west-2.outbound.mail-perimeter.amazon.com ([34.218.115.239]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDDe-0006UK-Jo; Sat, 18 Jul 2026 18:09:17 -0400 Received: from ip-10-5-12-219.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.12.219]) by internal-pdx-out-013.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:09:10 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.104:26903] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.151:2525] with esmtp (Farcaster) id 6afe83e9-76d2-443e-836c-b6db572e6aec; Sat, 18 Jul 2026 22:09:09 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB001.ant.amazon.com (10.250.64.248) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:09:09 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:08:59 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412554; x=1815948554; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ZWwUDOkk9Mi5vjYATmuEUs97Z81/V7kijcdGVjNy54w=; b=oLuipZACLBkI5qBS8QQTn3V1iSgvK89Tgxabv0FvqHgX7b4jXn9C4xe4 NehjdkL2NqeHTCovIBHDJt1Qv93EyuMmzTFv9906Y6p+Bxokzm3ptFPjd dOm7Z8pAmzI/nT18w/gYkBKZZ76F7wdR5hZ3FeYlxUmq2mRsgNSXzOFbf NaReLWQ8IvhrE3Y74wpaNALobWHJhhvTwwE5wZsUSVIj/4AqrfevpgKTm VUQ3S24pw7Ksj4WOUEzg3bSxBupqrlC6OZ1G7+7K1aeiycpL5v2JiQnuK nsNWcTqIkqyoVi5GqwrBKGAyQT+emyqikvHcEw2YTdCtTp4NRi0RV8WVx Q==; X-CSE-ConnectionGUID: KSpmMxobSYS6XtJczdMD6A== X-CSE-MsgGUID: D8rICDyDTbie5Ru79/HzDw== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23719813" X-Farcaster-Flow-ID: 6afe83e9-76d2-443e-836c-b6db572e6aec From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 115/137] hw: Give allocated IRQs an owner and name Date: Sat, 18 Jul 2026 21:36:30 +0000 Message-ID: <20260718213652.37673-116-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D033UWA002.ant.amazon.com (10.13.139.10) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=34.218.115.239; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-013.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.01, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412645777158501 Content-Type: text/plain; charset="utf-8" Convert the remaining IRQ allocation calls across hw/ to the parented form. Owner is the enclosing device for realize()-time allocations and the machine for board-init allocations. Names describe the pin's purpose; the auto-indexed [*] form is used where the same allocation runs in a loop. AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/alpha/typhoon.c | 4 ++-- hw/char/diva-gsp.c | 3 ++- hw/display/macfb.c | 2 +- hw/ide/ahci.c | 2 +- hw/ide/pci.c | 2 +- hw/intc/sh_intc.c | 2 +- hw/isa/i82378.c | 3 ++- hw/isa/lpc_ich9.c | 2 +- hw/m68k/mcf5206.c | 2 +- hw/m68k/q800.c | 4 ++-- hw/mips/mips_int.c | 2 +- hw/net/can/can_kvaser_pci.c | 2 +- hw/pci-host/pnv_phb3.c | 3 ++- hw/pci-host/pnv_phb3_msi.c | 3 ++- hw/pci-host/pnv_phb4.c | 3 ++- hw/ppc/e500.c | 3 ++- hw/ppc/pnv_lpc.c | 2 +- hw/ppc/pnv_psi.c | 6 ++++-- hw/ppc/spapr_irq.c | 2 +- hw/riscv/sifive_u.c | 3 ++- hw/scsi/esp-pci.c | 2 +- hw/sh4/sh7750.c | 2 +- hw/sparc/sun4m.c | 5 +++-- hw/sparc64/sun4u.c | 3 ++- hw/xen/xen-pvh-common.c | 5 +++-- 25 files changed, 42 insertions(+), 30 deletions(-) diff --git a/hw/alpha/typhoon.c b/hw/alpha/typhoon.c index 671e8f89d9..bc2073bfa9 100644 --- a/hw/alpha/typhoon.c +++ b/hw/alpha/typhoon.c @@ -849,8 +849,8 @@ PCIBus *typhoon_init(Object *parent, MemoryRegion *ram,= qemu_irq *p_isa_irq, } } =20 - *p_isa_irq =3D qemu_allocate_irq_orphan(typhoon_set_isa_irq, s, 0); - *p_rtc_irq =3D qemu_allocate_irq_orphan(typhoon_set_timer_irq, s, 0); + *p_isa_irq =3D qemu_allocate_irq(parent, "isa-irq", typhoon_set_isa_ir= q, s, 0); + *p_rtc_irq =3D qemu_allocate_irq(parent, "rtc-irq", typhoon_set_timer_= irq, s, 0); =20 /* Main memory region, 0x00.0000.0000. Real hardware supports 32GB, but the address space hole reserved at this point is 8TB. */ diff --git a/hw/char/diva-gsp.c b/hw/char/diva-gsp.c index bf1da1faee..b70811f24f 100644 --- a/hw/char/diva-gsp.c +++ b/hw/char/diva-gsp.c @@ -126,7 +126,8 @@ static void diva_pci_realize(PCIDevice *dev, Error **er= rp) pci->dev.config[PCI_INTERRUPT_PIN] =3D 1; memory_region_init(&pci->membar, OBJECT(pci), "serial_ports", 4096); pci_register_bar(&pci->dev, 0, PCI_BASE_ADDRESS_SPACE_MEMORY, &pci->me= mbar); - pci->irqs =3D qemu_allocate_irqs_orphan(multi_serial_irq_mux, pci, di.= nports); + pci->irqs =3D qemu_allocate_irqs(OBJECT(dev), "serial-irq", + multi_serial_irq_mux, pci, di.nports); =20 for (i =3D 0; i < di.nports; i++) { s =3D pci->state + i; diff --git a/hw/display/macfb.c b/hw/display/macfb.c index de5c83884e..b59523a0ac 100644 --- a/hw/display/macfb.c +++ b/hw/display/macfb.c @@ -737,7 +737,7 @@ static void macfb_nubus_realize(DeviceState *dev, Error= **errp) memory_region_add_subregion(&nd->slot_mem, DAFB_BASE, &ms->mem_ctrl); memory_region_add_subregion(&nd->slot_mem, VIDEO_BASE, &ms->mem_vram); =20 - ms->irq =3D qemu_allocate_irq_orphan(macfb_nubus_set_irq, s, 0); + ms->irq =3D qemu_allocate_irq(OBJECT(dev), "nubus-irq", macfb_nubus_se= t_irq, s, 0); } =20 static void macfb_nubus_unrealize(DeviceState *dev) diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c index ac1cf26bab..b8f4e018b9 100644 --- a/hw/ide/ahci.c +++ b/hw/ide/ahci.c @@ -1594,7 +1594,7 @@ void ahci_realize(AHCIState *s, DeviceState *qdev, Ad= dressSpace *as) assert(s->ports > 0); s->dev =3D g_new0(AHCIDevice, s->ports); ahci_reg_init(s); - irqs =3D qemu_allocate_irqs_orphan(ahci_irq_set, s, s->ports); + irqs =3D qemu_allocate_irqs(OBJECT(qdev), "port-irq", ahci_irq_set, s,= s->ports); for (i =3D 0; i < s->ports; i++) { AHCIDevice *ad =3D &s->dev[i]; =20 diff --git a/hw/ide/pci.c b/hw/ide/pci.c index c808469008..56750b7b6f 100644 --- a/hw/ide/pci.c +++ b/hw/ide/pci.c @@ -606,7 +606,7 @@ void bmdma_init(IDEBus *bus, BMDMAState *bm, PCIIDEStat= e *d) bm->dma.ops =3D &bmdma_ops; bus->dma =3D &bm->dma; bm->irq =3D bus->irq; - bus->irq =3D qemu_allocate_irq_orphan(bmdma_irq, bm, 0); + bus->irq =3D qemu_allocate_irq(OBJECT(d), "bmdma-irq[*]", bmdma_irq, b= m, 0); bm->bus =3D bus; bm->pci_dev =3D d; } diff --git a/hw/intc/sh_intc.c b/hw/intc/sh_intc.c index 63f4eee2aa..4eaaeefeea 100644 --- a/hw/intc/sh_intc.c +++ b/hw/intc/sh_intc.c @@ -403,7 +403,7 @@ int sh_intc_init(Object *owner, MemoryRegion *sysmem, for (i =3D 0; i < nr_sources; i++) { desc->sources[i].parent =3D desc; } - desc->irqs =3D qemu_allocate_irqs_orphan(sh_intc_set_irq, desc, nr_sou= rces); + desc->irqs =3D qemu_allocate_irqs(owner, "src-irq", sh_intc_set_irq, d= esc, nr_sources); memory_region_init_io(&desc->iomem, owner, &sh_intc_ops, desc, "intc", 0x100000000ULL); j =3D 0; diff --git a/hw/isa/i82378.c b/hw/isa/i82378.c index 4f0be992e0..263a0c0dcf 100644 --- a/hw/isa/i82378.c +++ b/hw/isa/i82378.c @@ -95,7 +95,8 @@ static void i82378_realize(PCIDevice *pci, Error **errp) =20 /* 2 82C59 (irq) */ s->isa_irqs_in =3D i8259_init(OBJECT(pci), isabus, - qemu_allocate_irq_orphan(i82378_request_ou= t0_irq, + qemu_allocate_irq(OBJECT(dev), "out0-irq", + i82378_request_out0_irq, s, 0)); isa_bus_register_input_irqs(isabus, s->isa_irqs_in); =20 diff --git a/hw/isa/lpc_ich9.c b/hw/isa/lpc_ich9.c index 7cb82519fb..7b44423372 100644 --- a/hw/isa/lpc_ich9.c +++ b/hw/isa/lpc_ich9.c @@ -429,7 +429,7 @@ static void ich9_lpc_pm_init(ICH9LPCState *lpc) qemu_irq sci_irq; FWCfgState *fw_cfg =3D fw_cfg_find(); =20 - sci_irq =3D qemu_allocate_irq_orphan(ich9_set_sci, lpc, 0); + sci_irq =3D qemu_allocate_irq(OBJECT(lpc), "sci-irq", ich9_set_sci, lp= c, 0); ich9_pm_init(PCI_DEVICE(lpc), &lpc->pm, sci_irq); =20 if (lpc->smi_host_features && fw_cfg) { diff --git a/hw/m68k/mcf5206.c b/hw/m68k/mcf5206.c index cbb361fae9..ec70d482eb 100644 --- a/hw/m68k/mcf5206.c +++ b/hw/m68k/mcf5206.c @@ -593,7 +593,7 @@ static void mcf5206_mbar_realize(DeviceState *dev, Erro= r **errp) "mbar", 0x00001000); sysbus_init_mmio(SYS_BUS_DEVICE(dev), &s->iomem); =20 - s->pic =3D qemu_allocate_irqs_orphan(m5206_mbar_set_irq, s, 14); + s->pic =3D qemu_allocate_irqs(OBJECT(dev), "pic-irq", m5206_mbar_set_i= rq, s, 14); m5206_timer_init(&s->timer[0], s->pic[9]); m5206_timer_init(&s->timer[1], s->pic[10]); s->uart[0] =3D mcf_uart_create(OBJECT(s), s->pic[12], serial_hd(0)); diff --git a/hw/m68k/q800.c b/hw/m68k/q800.c index 177fff0289..677dc4ad80 100644 --- a/hw/m68k/q800.c +++ b/hw/m68k/q800.c @@ -474,11 +474,11 @@ static void q800_machine_init(MachineState *machine) sysbus_realize(sysbus, &error_fatal); /* SCSI and SCSI data IRQs are negative edge triggered */ sysbus_connect_irq(sysbus, 0, - qemu_irq_invert_orphan( + qemu_irq_invert(OBJECT(machine), "scsi-irq-inv", qdev_get_gpio_in(DEVICE(&m->via2), VIA2_IRQ_SCSI_BIT))); sysbus_connect_irq(sysbus, 1, - qemu_irq_invert_orphan( + qemu_irq_invert(OBJECT(machine), "scsi-drq-inv", qdev_get_gpio_in(DEVICE(&m->via2), VIA2_IRQ_SCSI_DATA_BIT)= )); memory_region_add_subregion(&m->macio, ESP_BASE - IO_BASE, diff --git a/hw/mips/mips_int.c b/hw/mips/mips_int.c index 814d07319f..c404063762 100644 --- a/hw/mips/mips_int.c +++ b/hw/mips/mips_int.c @@ -56,7 +56,7 @@ void cpu_mips_irq_init_cpu(MIPSCPU *cpu) qemu_irq *qi; int i; =20 - qi =3D qemu_allocate_irqs_orphan(cpu_mips_irq_request, cpu, 8); + qi =3D qemu_allocate_irqs(OBJECT(cpu), "cpu-irq", cpu_mips_irq_request= , cpu, 8); for (i =3D 0; i < 8; i++) { env->irq[i] =3D qi[i]; } diff --git a/hw/net/can/can_kvaser_pci.c b/hw/net/can/can_kvaser_pci.c index 69fc66de14..95bae684d6 100644 --- a/hw/net/can/can_kvaser_pci.c +++ b/hw/net/can/can_kvaser_pci.c @@ -224,7 +224,7 @@ static void kvaser_pci_realize(PCIDevice *pci_dev, Erro= r **errp) pci_conf =3D pci_dev->config; pci_conf[PCI_INTERRUPT_PIN] =3D 0x01; /* interrupt pin A */ =20 - d->irq =3D qemu_allocate_irq_orphan(kvaser_pci_irq_handler, d, 0); + d->irq =3D qemu_allocate_irq(OBJECT(s), "kvaser-irq", kvaser_pci_irq_h= andler, d, 0); =20 can_sja_init(s, d->irq); =20 diff --git a/hw/pci-host/pnv_phb3.c b/hw/pci-host/pnv_phb3.c index 63da48f5af..410a27a073 100644 --- a/hw/pci-host/pnv_phb3.c +++ b/hw/pci-host/pnv_phb3.c @@ -1054,7 +1054,8 @@ static void pnv_phb3_realize(DeviceState *dev, Error = **errp) ics_set_irq_type(&phb->lsis, i, true); } =20 - phb->qirqs =3D qemu_allocate_irqs_orphan(ics_set_irq, &phb->lsis, phb-= >lsis.nr_irqs); + phb->qirqs =3D qemu_allocate_irqs(OBJECT(dev), "lsi-irq", + ics_set_irq, &phb->lsis, phb->lsis.nr_= irqs); =20 /* MSI sources */ object_property_set_link(OBJECT(&phb->msis), "phb", OBJECT(phb), diff --git a/hw/pci-host/pnv_phb3_msi.c b/hw/pci-host/pnv_phb3_msi.c index fa5f61ea2b..1bba60c616 100644 --- a/hw/pci-host/pnv_phb3_msi.c +++ b/hw/pci-host/pnv_phb3_msi.c @@ -267,7 +267,8 @@ static void phb3_msi_realize(DeviceState *dev, Error **= errp) return; } =20 - msi->qirqs =3D qemu_allocate_irqs_orphan(phb3_msi_set_irq, msi, ics->n= r_irqs); + msi->qirqs =3D qemu_allocate_irqs(OBJECT(dev), "msi-irq", + phb3_msi_set_irq, msi, ics->nr_irqs); } =20 static void phb3_msi_instance_init(Object *obj) diff --git a/hw/pci-host/pnv_phb4.c b/hw/pci-host/pnv_phb4.c index 7a1988a2b2..9b567413c7 100644 --- a/hw/pci-host/pnv_phb4.c +++ b/hw/pci-host/pnv_phb4.c @@ -1605,7 +1605,8 @@ static void pnv_phb4_realize(DeviceState *dev, Error = **errp) =20 pnv_phb4_update_xsrc(phb); =20 - phb->qirqs =3D qemu_allocate_irqs_orphan(xive_source_set_irq, xsrc, xs= rc->nr_irqs); + phb->qirqs =3D qemu_allocate_irqs(OBJECT(dev), "lsi-irq", + xive_source_set_irq, xsrc, xsrc->nr_ir= qs); =20 pnv_phb4_xscom_realize(phb); } diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c index 62692f5776..f3917c0755 100644 --- a/hw/ppc/e500.c +++ b/hw/ppc/e500.c @@ -1089,7 +1089,8 @@ void ppce500_init(MachineState *machine) sysbus_mmio_get_region(s, 0)); =20 /* Power Off GPIO at Pin 0 */ - poweroff_irq =3D qemu_allocate_irq_orphan(ppce500_power_off, NULL,= 0); + poweroff_irq =3D qemu_allocate_irq(OBJECT(machine), "poweroff", + ppce500_power_off, NULL, 0); qdev_connect_gpio_out(dev, 0, poweroff_irq); } =20 diff --git a/hw/ppc/pnv_lpc.c b/hw/ppc/pnv_lpc.c index e89defb321..a13d633f64 100644 --- a/hw/ppc/pnv_lpc.c +++ b/hw/ppc/pnv_lpc.c @@ -993,7 +993,7 @@ ISABus *pnv_lpc_isa_create(PnvLpcController *lpc, bool = use_cpld, Error **errp) } =20 /* POWER has a 17th irq, QEMU only implements the 16 regular device ir= qs */ - irqs =3D qemu_allocate_irqs_orphan(handler, lpc, ISA_NUM_IRQS); + irqs =3D qemu_allocate_irqs(OBJECT(lpc), "isa-irq", handler, lpc, ISA_= NUM_IRQS); =20 isa_bus_register_input_irqs(isa_bus, irqs); =20 diff --git a/hw/ppc/pnv_psi.c b/hw/ppc/pnv_psi.c index 1ff33596ac..1f2148a4d3 100644 --- a/hw/ppc/pnv_psi.c +++ b/hw/ppc/pnv_psi.c @@ -509,7 +509,8 @@ static void pnv_psi_power8_realize(DeviceState *dev, Er= ror **errp) =20 qdev_init_gpio_in(dev, pnv_psi_power8_set_irq, ics->nr_irqs); =20 - psi->qirqs =3D qemu_allocate_irqs_orphan(ics_set_irq, ics, ics->nr_irq= s); + psi->qirqs =3D qemu_allocate_irqs(OBJECT(dev), "psi-irq", + ics_set_irq, ics, ics->nr_irqs); =20 /* XSCOM region for PSI registers */ pnv_xscom_region_init(&psi->xscom_regs, OBJECT(dev), &pnv_psi_xscom_op= s, @@ -872,7 +873,8 @@ static void pnv_psi_power9_realize(DeviceState *dev, Er= ror **errp) xive_source_irq_set_lsi(xsrc, i); } =20 - psi->qirqs =3D qemu_allocate_irqs_orphan(xive_source_set_irq, xsrc, xs= rc->nr_irqs); + psi->qirqs =3D qemu_allocate_irqs(OBJECT(dev), "psi-irq", + xive_source_set_irq, xsrc, xsrc->nr_ir= qs); =20 qdev_init_gpio_in(dev, pnv_psi_power9_set_irq, xsrc->nr_irqs); =20 diff --git a/hw/ppc/spapr_irq.c b/hw/ppc/spapr_irq.c index a05edb78bc..82869ea03a 100644 --- a/hw/ppc/spapr_irq.c +++ b/hw/ppc/spapr_irq.c @@ -339,7 +339,7 @@ void spapr_irq_init(SpaprMachineState *spapr, Error **e= rrp) spapr_xive_hcall_init(spapr); } =20 - spapr->qirqs =3D qemu_allocate_irqs_orphan(spapr_set_irq, spapr, + spapr->qirqs =3D qemu_allocate_irqs(OBJECT(spapr), "irq", spapr_set_ir= q, spapr, SPAPR_NR_XIRQS + SPAPR_IRQ_NR_IPIS); =20 /* diff --git a/hw/riscv/sifive_u.c b/hw/riscv/sifive_u.c index 3df9fafb12..3f4a9b9b7b 100644 --- a/hw/riscv/sifive_u.c +++ b/hw/riscv/sifive_u.c @@ -484,7 +484,8 @@ static void sifive_u_machine_init(MachineState *machine) =20 /* register gpio-restart */ qdev_connect_gpio_out(DEVICE(&(s->soc.gpio)), 10, - qemu_allocate_irq_orphan(sifive_u_machine_reset,= NULL, 0)); + qemu_allocate_irq(OBJECT(machine), "reset-irq", + sifive_u_machine_reset, NULL, = 0)); =20 /* load/create device tree */ if (machine->dtb) { diff --git a/hw/scsi/esp-pci.c b/hw/scsi/esp-pci.c index 4c02b23a28..bfc61b8f3b 100644 --- a/hw/scsi/esp-pci.c +++ b/hw/scsi/esp-pci.c @@ -407,7 +407,7 @@ static void esp_pci_scsi_realize(PCIDevice *dev, Error = **errp) "esp-io", 0x80); =20 pci_register_bar(dev, 0, PCI_BASE_ADDRESS_SPACE_IO, &pci->io); - s->irq =3D qemu_allocate_irq_orphan(esp_irq_handler, pci, 0); + s->irq =3D qemu_allocate_irq(OBJECT(s), "esp-irq", esp_irq_handler, pc= i, 0); =20 scsi_bus_init(&s->bus, sizeof(s->bus), d, &esp_pci_scsi_info); } diff --git a/hw/sh4/sh7750.c b/hw/sh4/sh7750.c index 307daa523d..a42b753a1d 100644 --- a/hw/sh4/sh7750.c +++ b/hw/sh4/sh7750.c @@ -848,5 +848,5 @@ SH7750State *sh7750_init(Object *parent, SuperHCPU *cpu, qemu_irq sh7750_irl(SH7750State *s) { sh_intc_toggle_source(&s->intc.sources[IRL], 1, 0); /* enable */ - return qemu_allocate_irq_orphan(sh_intc_set_irl, &s->intc.sources[IRL]= , 0); + return qemu_allocate_irq(OBJECT(s), "irl", sh_intc_set_irl, &s->intc.s= ources[IRL], 0); } diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c index 0a35b20e17..51f5468a02 100644 --- a/hw/sparc/sun4m.c +++ b/hw/sparc/sun4m.c @@ -1008,7 +1008,8 @@ static void sun4m_hw_init(MachineState *machine) =20 if (hwdef->apc_base) { apc_init(OBJECT(machine), hwdef->apc_base, - qemu_allocate_irq_orphan(cpu_halt_signal, NULL, 0)); + qemu_allocate_irq(OBJECT(machine), "cpu-halt", + cpu_halt_signal, NULL, 0)); } =20 if (hwdef->fd_base) { @@ -1018,7 +1019,7 @@ static void sun4m_hw_init(MachineState *machine) sun4m_fdctrl_init(OBJECT(machine), slavio_irq[22], hwdef->fd_base,= fd, &fdc_tc); } else { - fdc_tc =3D qemu_allocate_irq_orphan(dummy_fdc_tc, NULL, 0); + fdc_tc =3D qemu_allocate_irq(OBJECT(machine), "fdc-tc", dummy_fdc_= tc, NULL, 0); } =20 slavio_misc_init(OBJECT(machine), hwdef->slavio_base, hwdef->aux1_base, diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c index 389436fd3d..7d84dc201f 100644 --- a/hw/sparc64/sun4u.c +++ b/hw/sparc64/sun4u.c @@ -311,7 +311,8 @@ static void ebus_realize(PCIDevice *pci_dev, Error **er= rp) } =20 /* ISA bus */ - s->isa_irqs_in =3D qemu_allocate_irqs_orphan(ebus_isa_irq_handler, s, = ISA_NUM_IRQS); + s->isa_irqs_in =3D qemu_allocate_irqs(OBJECT(s), "isa-irq-in", + ebus_isa_irq_handler, s, ISA_NUM_I= RQS); isa_bus_register_input_irqs(s->isa_bus, s->isa_irqs_in); qdev_init_gpio_out_named(DEVICE(s), s->isa_irqs_out, "isa-irq", ISA_NUM_IRQS); diff --git a/hw/xen/xen-pvh-common.c b/hw/xen/xen-pvh-common.c index 42514a599e..76893c8fcf 100644 --- a/hw/xen/xen-pvh-common.c +++ b/hw/xen/xen-pvh-common.c @@ -170,7 +170,7 @@ static void xen_create_virtio_mmio_devices(XenPVHMachin= eState *s) */ for (i =3D s->cfg.virtio_mmio_num - 1; i >=3D 0; i--) { hwaddr base =3D s->cfg.virtio_mmio.base + i * s->cfg.virtio_mmio.s= ize; - qemu_irq irq =3D qemu_allocate_irq_orphan(xen_set_irq, NULL, + qemu_irq irq =3D qemu_allocate_irq(OBJECT(s), "virtio-irq[*]", xen= _set_irq, NULL, s->cfg.virtio_mmio_irq_base + i); =20 sysbus_create_simple(OBJECT(s), "virtio-mmio[*]", "virtio-mmio", @@ -260,7 +260,8 @@ static inline void xenpvh_gpex_init(XenPVHMachineState = *s, assert(xpc->set_pci_intx_irq); =20 for (i =3D 0; i < PCI_NUM_PINS; i++) { - qemu_irq irq =3D qemu_allocate_irq_orphan(xpc->set_pci_intx_irq, s= , i); + qemu_irq irq =3D qemu_allocate_irq(OBJECT(s), "pci-intx-irq[*]", + xpc->set_pci_intx_irq, s, i); =20 sysbus_connect_irq(SYS_BUS_DEVICE(dev), i, irq); gpex_set_irq_num(GPEX_HOST(dev), i, s->cfg.pci_intx_irq_base + i); --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412585; cv=none; d=zohomail.com; s=zohoarc; b=V+CHSKwaIeAQO853kmov8C5ZOODQzmxdQUxjAByzT/h7IQTpCqb1TUZGtdj3VDoY0sAskWfid7J+BckKOEcTY/Kd/UYMouccHXKbbKts13BID+raLkDbx+vVWd1coWQhZoKwTRKPSdOFBMSqbPKvCYBSJh7HNB82/6ziWVDRX98= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412585; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=zU/K/BxWeNS68XvW3pbgpcTI1u1JLeVFt6e/zQVeYoE=; b=ZBlppFyIXg+PG4Xrne7eZg1wKGFzrQqap3ItU4328Co8O0yHQA50UNr/ODdJNjfMHPicESbluo2QBPb6jTgn+Yr4U/Fg3T/a3GsI73kSdLOdB6bTNdzs4nscEVlFYGSbki46ugm+6PaaEMcrBeTdo8fAOWroEg+vkhownRz6aqk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17844125855091004.5065887340114; Sat, 18 Jul 2026 15:09:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlDDq-0001Fr-PR; Sat, 18 Jul 2026 18:09:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDDp-0001F4-FQ; Sat, 18 Jul 2026 18:09:25 -0400 Received: from pdx-out-010.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.12.53.23]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDDn-0006Uu-Dx; Sat, 18 Jul 2026 18:09:25 -0400 Received: from ip-10-5-0-115.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.0.115]) by internal-pdx-out-010.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:09:19 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.51:13948] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.58.199:2525] with esmtp (Farcaster) id 52b3fccf-f8e3-4403-b877-cd21dc8499df; Sat, 18 Jul 2026 22:09:19 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC002.ant.amazon.com (10.250.64.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:09:18 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:09:09 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412563; x=1815948563; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=zU/K/BxWeNS68XvW3pbgpcTI1u1JLeVFt6e/zQVeYoE=; b=SudNiwCcyKc/+gS1foiw8fGEostR5J/7jA2OJ7l66DV0sTYRzMtpeFmi Vg4YUaJAr1t7evTqn1ISsi50GziP59Lkgp9GPGc/9phq5mIvdBzqZGPyN +1/NmWai+F3tQ1lKwhDGbP3de41on5sK28h/6HTh2fxbM4Uw4EXh4Ja8z hacdn0JXTg4XTyOrowwKtKDJJ57We/QgqGdwi7KHsfcxIbOkCSzyeR1lR 1T2ILs3S9y3x6LuhrAPGDE5/HPhT/TLd50qro8ZFwwMkjehGHKRcuEJ5I cNsvW3G6hJs9bwJL64EMHUUv5v//fw1pWBWj0UIPYhChxBQJwdSL84fcV w==; X-CSE-ConnectionGUID: DxLXWio2TQyRzVEgqTrCWw== X-CSE-MsgGUID: VWwDaW4HQEC7lX2+w/8gvg== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23795896" X-Farcaster-Flow-ID: 52b3fccf-f8e3-4403-b877-cd21dc8499df From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 116/137] hw/core: Parent GPIO input IRQs and embedded IRQState via QOM Date: Sat, 18 Jul 2026 21:36:31 +0000 Message-ID: <20260718213652.37673-117-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D033UWA002.ant.amazon.com (10.13.139.10) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.12.53.23; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-010.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.01, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412587682158500 Content-Type: text/plain; charset="utf-8" qdev_init_gpio_in_named_with_opaque() now uses qemu_extend_irqs() directly, so the input IRQ objects are parented under the device via object_new_child() and the manual object_property_add_child() loop goes away. device_finalize() no longer needs to free the IRQ objects explicitly since child<> property destruction does that; only the qemu_irq* array itself needs g_free(). Convert the six users of qemu_init_irq()/qemu_init_irqs() (which initialize an IRQState embedded in a device struct) to qemu_init_irq_child() so those IRQs also get a QOM parent. qdev_connect_gpio_out_named() now asserts that its input pin has a parent instead of falling back to /machine/unattached; every qemu_irq that reaches it is parented after this and the preceding commits. AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/core/gpio.c | 24 ++++-------------------- hw/core/qdev.c | 3 ++- hw/ipack/ipack.c | 11 +++++++++-- hw/isa/vt82c686.c | 3 ++- hw/net/imx_fec.c | 2 +- hw/net/lan9118.c | 2 +- hw/ppc/pegasos.c | 3 ++- hw/sh4/r2d.c | 5 ++++- 8 files changed, 25 insertions(+), 28 deletions(-) diff --git a/hw/core/gpio.c b/hw/core/gpio.c index ef8ef8f25a..f76d604520 100644 --- a/hw/core/gpio.c +++ b/hw/core/gpio.c @@ -45,24 +45,12 @@ void qdev_init_gpio_in_named_with_opaque(DeviceState *d= ev, void *opaque, const char *name, int n) { - int i; NamedGPIOList *gpio_list =3D qdev_get_named_gpio_list(dev, name); =20 assert(gpio_list->num_out =3D=3D 0 || !name); - gpio_list->in =3D qemu_extend_irqs_orphan(gpio_list->in, gpio_list->nu= m_in, handler, - opaque, n); - - if (!name) { - name =3D "unnamed-gpio-in"; - } - for (i =3D gpio_list->num_in; i < gpio_list->num_in + n; i++) { - gchar *propname =3D g_strdup_printf("%s[%u]", name, i); - - object_property_add_child(OBJECT(dev), propname, - OBJECT(gpio_list->in[i])); - g_free(propname); - } - + gpio_list->in =3D qemu_extend_irqs(OBJECT(dev), name ?: "unnamed-gpio-= in", + gpio_list->in, gpio_list->num_in, + handler, opaque, n); gpio_list->num_in +=3D n; } =20 @@ -119,11 +107,7 @@ void qdev_connect_gpio_out_named(DeviceState *dev, con= st char *name, int n, { char *propname =3D g_strdup_printf("%s[%d]", name ? name : "unnamed-gpio-out", n); - if (input_pin && !OBJECT(input_pin)->parent) { - /* We need a name for object_property_set_link to work */ - object_property_add_child(machine_get_container("unattached"), - "non-qdev-gpio[*]", OBJECT(input_pin)); - } + g_assert(!input_pin || OBJECT(input_pin)->parent); object_property_set_link(OBJECT(dev), propname, OBJECT(input_pin), &error_abort); g_free(propname); diff --git a/hw/core/qdev.c b/hw/core/qdev.c index 89bc1e30c0..9a68fb426e 100644 --- a/hw/core/qdev.c +++ b/hw/core/qdev.c @@ -698,7 +698,8 @@ static void device_finalize(Object *obj) =20 QLIST_FOREACH_SAFE(ngl, &dev->gpios, node, next) { QLIST_REMOVE(ngl, node); - qemu_free_irqs(ngl->in, ngl->num_in); + /* IRQs are child<> properties of dev; freed via child destruction= */ + g_free(ngl->in); g_free(ngl->name); g_free(ngl); /* ngl->out irqs are owned by the other end and should not be freed diff --git a/hw/ipack/ipack.c b/hw/ipack/ipack.c index f2e5524fa8..dad0d486df 100644 --- a/hw/ipack/ipack.c +++ b/hw/ipack/ipack.c @@ -55,18 +55,25 @@ static void ipack_device_realize(DeviceState *dev, Erro= r **errp) } bus->free_slot =3D idev->slot + 1; =20 - qemu_init_irqs(idev->irq, ARRAY_SIZE(idev->irq), bus->set_irq, idev); + for (int i =3D 0; i < ARRAY_SIZE(idev->irq); i++) { + qemu_init_irq_child(OBJECT(idev), "irq[*]", &idev->irq[i], + bus->set_irq, idev, i); + } =20 k->realize(dev, errp); } =20 static void ipack_device_unrealize(DeviceState *dev) { + IPackDevice *idev =3D IPACK_DEVICE(dev); IPackDeviceClass *k =3D IPACK_DEVICE_GET_CLASS(dev); =20 if (k->unrealize) { k->unrealize(dev); - return; + } + + for (int i =3D 0; i < ARRAY_SIZE(idev->irq); i++) { + object_unparent(OBJECT(&idev->irq[i])); } } =20 diff --git a/hw/isa/vt82c686.c b/hw/isa/vt82c686.c index 2337c3115b..f93bf49754 100644 --- a/hw/isa/vt82c686.c +++ b/hw/isa/vt82c686.c @@ -722,7 +722,8 @@ static void via_isa_realize(PCIDevice *d, Error **errp) =20 qdev_init_gpio_out_named(dev, &s->cpu_intr, "intr", 1); qdev_init_gpio_in_named(dev, via_isa_pirq, "pirq", PCI_NUM_PINS); - qemu_init_irq(&s->i8259_irq, via_isa_request_i8259_irq, s, 0); + qemu_init_irq_child(OBJECT(s), "i8259-irq", &s->i8259_irq, + via_isa_request_i8259_irq, s, 0); isa_bus =3D isa_bus_new(dev, pci_address_space(d), pci_address_space_i= o(d), errp); =20 diff --git a/hw/net/imx_fec.c b/hw/net/imx_fec.c index c177b7ff2b..38e0f64462 100644 --- a/hw/net/imx_fec.c +++ b/hw/net/imx_fec.c @@ -1205,7 +1205,7 @@ static void imx_eth_realize(DeviceState *dev, Error *= *errp) sysbus_init_irq(sbd, &s->irq[0]); sysbus_init_irq(sbd, &s->irq[1]); =20 - qemu_init_irq(&s->mii_irq, imx_phy_update_irq, s, 0); + qemu_init_irq_child(OBJECT(s), "mii-irq", &s->mii_irq, imx_phy_update_= irq, s, 0); object_initialize_child(OBJECT(s), "mii", &s->mii, TYPE_LAN9118_PHY); if (!sysbus_realize_and_unref(SYS_BUS_DEVICE(&s->mii), errp)) { return; diff --git a/hw/net/lan9118.c b/hw/net/lan9118.c index 91c3533702..2003280fc4 100644 --- a/hw/net/lan9118.c +++ b/hw/net/lan9118.c @@ -1274,7 +1274,7 @@ static void lan9118_realize(DeviceState *dev, Error *= *errp) const MemoryRegionOps *mem_ops =3D s->mode_16bit ? &lan9118_16bit_mem_ops : &lan9118_mem_ops; =20 - qemu_init_irq(&s->mii_irq, lan9118_update_irq, s, 0); + qemu_init_irq_child(OBJECT(s), "mii-irq", &s->mii_irq, lan9118_update_= irq, s, 0); object_initialize_child(OBJECT(s), "mii", &s->mii, TYPE_LAN9118_PHY); if (!sysbus_realize_and_unref(SYS_BUS_DEVICE(&s->mii), errp)) { return; diff --git a/hw/ppc/pegasos.c b/hw/ppc/pegasos.c index 426a54d8ee..845b6355e9 100644 --- a/hw/ppc/pegasos.c +++ b/hw/ppc/pegasos.c @@ -134,7 +134,8 @@ static void pegasos2_setup_pci_irq(PegasosMachineState = *pm) TYPE_OR_IRQ, &error_fat= al, "num-lines", "2", NULL); qdev_realize(DEVICE(ori), NULL, &error_fatal); - qemu_init_irq(&pm->pci_irqs[i], pegasos2_pci_irq, pm, i); + qemu_init_irq_child(OBJECT(pm), "pci-irq[*]", &pm->pci_irq= s[i], + pegasos2_pci_irq, pm, i); qdev_connect_gpio_out(DEVICE(ori), 0, &pm->pci_irqs[i]); pm->mv_pirq[i] =3D qdev_get_gpio_in_named(pm->nb, "gpp", 1= 2 + i); pm->via_pirq[i] =3D qdev_get_gpio_in_named(pm->sb, "pirq",= i); diff --git a/hw/sh4/r2d.c b/hw/sh4/r2d.c index 8deda6e5f4..21e804f3d9 100644 --- a/hw/sh4/r2d.c +++ b/hw/sh4/r2d.c @@ -200,7 +200,10 @@ static r2d_fpga_t *r2d_fpga_init(Object *owner, memory_region_init_io(&s->iomem, owner, &r2d_fpga_ops, s, "r2d-fpga", = 0x40); memory_region_add_subregion(sysmem, base, &s->iomem); =20 - qemu_init_irqs(s->irq, NR_IRQS, r2d_fpga_irq_set, s); + for (int i =3D 0; i < NR_IRQS; i++) { + qemu_init_irq_child(owner, "fpga-irq[*]", &s->irq[i], + r2d_fpga_irq_set, s, i); + } =20 return s; } --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412609; cv=none; d=zohomail.com; s=zohoarc; b=S5Y3+ZURmoBe20s21/N5tnklLN8cs/US05z+fuuO90qzajXFkFHS3HWI45AwSSF2eGvp81ToBWcFUp78J4Pm4ngVMw37hWXPAJs+mmg8733xxpXfWDi1A+IwozDnV2LdklmR4ulJBt9tq6m2rhXwI6sdVkc8XxdMvSQNis5UZwQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412609; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=FY183wjjQlqz+5usHhcMwB4KgwWExApPxxwqiZT033s=; b=oDs53U3JjzVJcU1b6zP2OIDEUug9zwmMeDO45Mbxnov+IoDezFXLRjhbktkv6QDBJIHc66tTjO4rkqHkkXW2tz3mj6o80b9rGqwikNahyJUu9W/2Ed8F93hW5OCEaOW7+BKOYSRX6CSO9AsRRalCrpOpPSYb4IWdz5SK4MaqhyA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412609344531.3763052725398; Sat, 18 Jul 2026 15:10:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlDEL-0001ix-RO; Sat, 18 Jul 2026 18:09:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDEK-0001fJ-14; Sat, 18 Jul 2026 18:09:56 -0400 Received: from pdx-out-006.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.26.1.71]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDEI-0006Vv-8A; Sat, 18 Jul 2026 18:09:55 -0400 Received: from ip-10-5-9-48.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.9.48]) by internal-pdx-out-006.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:09:50 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.182:4642] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.0.115:2525] with esmtp (Farcaster) id f6c48346-945f-4e21-bf60-dc11b11f4cc5; Sat, 18 Jul 2026 22:09:50 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA001.ant.amazon.com (10.250.64.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:09:50 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:09:40 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412594; x=1815948594; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=FY183wjjQlqz+5usHhcMwB4KgwWExApPxxwqiZT033s=; b=WsHX3QHCkKpWNTPsPP9Z710qBHXv0NofGWZOA2yPuNTU7axS7MpaPtN2 AZ/7hXPt9mQMRgDkPkpQeYJj/DDBAaqa8tviCdGpqUiHd2F3JOiRm65qA 9fxrypc2OiFu+BxfuDfGuVd9n/WbOSrEBNgaOeAbB0KsjMqZ98tEytu8U mecTIxauPG9/hbCyX4osImWlN1SlJlbdkVIPl85j+G8PckensXnSW/etp Kq/Ggvso096CySe9q4XulO9oE3s5X+AWpzGs9M1Po6DD36uFCr9vcuQfL oGE5TnkjZG2lwS61bYXY+FMvElX2QrK0zYlcJGa74fNfq7hw35CYBazEl Q==; X-CSE-ConnectionGUID: G1M1ZeVnS/ueV290kyp2SQ== X-CSE-MsgGUID: +Zv4XqJ2TJO48HlGI7jmTQ== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23945061" X-Farcaster-Flow-ID: f6c48346-945f-4e21-bf60-dc11b11f4cc5 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 117/137] irq: Delete the *_orphan() IRQ allocation variants Date: Sat, 18 Jul 2026 21:36:32 +0000 Message-ID: <20260718213652.37673-118-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D036UWC003.ant.amazon.com (10.13.139.214) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.26.1.71; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-006.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412611698158500 Content-Type: text/plain; charset="utf-8" Every caller has been converted to the parented form; drop the transitional *_orphan() helpers. AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/core/irq.c | 35 ----------------------------------- include/hw/core/irq.h | 20 +------------------- 2 files changed, 1 insertion(+), 54 deletions(-) diff --git a/hw/core/irq.c b/hw/core/irq.c index 1ae53a74d3..459ff467ff 100644 --- a/hw/core/irq.c +++ b/hw/core/irq.c @@ -68,34 +68,6 @@ void qemu_init_irqs(IRQState irq[], size_t count, } } =20 -qemu_irq *qemu_extend_irqs_orphan(qemu_irq *old, int n_old, qemu_irq_handl= er handler, - void *opaque, int n) -{ - qemu_irq *s; - int i; - - if (!old) { - n_old =3D 0; - } - s =3D old ? g_renew(qemu_irq, old, n + n_old) : g_new(qemu_irq, n); - for (i =3D n_old; i < n + n_old; i++) { - s[i] =3D qemu_allocate_irq_orphan(handler, opaque, i); - } - return s; -} - -qemu_irq *qemu_allocate_irqs_orphan(qemu_irq_handler handler, void *opaque= , int n) -{ - return qemu_extend_irqs_orphan(NULL, 0, handler, opaque, n); -} - -qemu_irq qemu_allocate_irq_orphan(qemu_irq_handler handler, void *opaque, = int n) -{ - IRQState *irq =3D IRQ(object_new(TYPE_IRQ)); - init_irq_fields(irq, handler, opaque, n); - return irq; -} - qemu_irq qemu_allocate_irq(Object *owner, const char *name, qemu_irq_handler handler, void *opaque, int n) { @@ -153,13 +125,6 @@ static void qemu_notirq(void *opaque, int line, int le= vel) qemu_set_irq(irq, !level); } =20 -qemu_irq qemu_irq_invert_orphan(qemu_irq irq) -{ - /* The default state for IRQs is low, so raise the output now. */ - qemu_irq_raise(irq); - return qemu_allocate_irq_orphan(qemu_notirq, irq, 0); -} - qemu_irq qemu_irq_invert(Object *owner, const char *name, qemu_irq irq) { /* The default state for IRQs is low, so raise the output now. */ diff --git a/include/hw/core/irq.h b/include/hw/core/irq.h index 5ccccd2697..89923cf4a8 100644 --- a/include/hw/core/irq.h +++ b/include/hw/core/irq.h @@ -74,19 +74,8 @@ void qemu_init_irq_child(Object *parent, const char *pro= pname, void qemu_init_irqs(IRQState irq[], size_t count, qemu_irq_handler handler, void *opaque); =20 -/* Returns an array of N IRQs. Each IRQ is assigned the argument handler a= nd - * opaque data. - */ -qemu_irq *qemu_allocate_irqs_orphan(qemu_irq_handler handler, void *opaque= , int n); - /* - * Allocates a single IRQ. The irq is assigned with a handler, an opaque - * data and the interrupt number. - */ -qemu_irq qemu_allocate_irq_orphan(qemu_irq_handler handler, void *opaque, = int n); - -/* - * Same as the *_orphan() variants above, but the new IRQ objects are + * Allocate IRQ objects with an explicit QOM parent. The new objects are * parented under @owner with property name @name (or @name[*] for the * array/extend variants). The reference is held by @owner; call * qemu_free_irq() to unparent and free. @@ -99,17 +88,10 @@ qemu_irq *qemu_extend_irqs(Object *owner, const char *n= ame, qemu_irq *old, int n_old, qemu_irq_handler handler, void *opaque, int n); =20 -/* Extends an Array of IRQs. Old IRQs have their handlers and opaque data - * preserved. New IRQs are assigned the argument handler and opaque data. - */ -qemu_irq *qemu_extend_irqs_orphan(qemu_irq *old, int n_old, qemu_irq_handl= er handler, - void *opaque, int n); - void qemu_free_irqs(qemu_irq *s, int n); void qemu_free_irq(qemu_irq irq); =20 /* Returns a new IRQ with opposite polarity. */ -qemu_irq qemu_irq_invert_orphan(qemu_irq irq); qemu_irq qemu_irq_invert(Object *owner, const char *name, qemu_irq irq); =20 /* For internal use in qtest. */ --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412622; cv=none; d=zohomail.com; s=zohoarc; b=JXNlqJOYP5WD1r0QkI6os/Rp9Ip4g1LgVLb8Zu7I5EvlZ9XjAxWOpBNVD2D56PT9chJmce0YxXAO/0Abj+OSF4oH6Ft7621K9WRVEdMFHOM+FtSLADB8yQb7Frcqu9aR/ktzRdQIg5JM7MVAeIHfdnnEIvrATsbfNYabK4kMFnI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412622; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=8SHSJyx3GVUlydRkcEPqaWeFtStFpI38YZCyweyhvk0=; b=J9KEYNwt1qNL4G/5u2aOYVgpjxkvazieVQXKDMUTNmjCglz2rrpiBEzPYmdb28TRQC7W7Wa+jGxxnAl0TsUKfmcUeRPu2KFoLAMgVZLtLhA8ZEh3guPjp2xLBGhn8QtcV2GpZRGWZgRGzicX8IJTBYHx1/RseOVJ2kFtocrUze4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412622908863.8174907502658; Sat, 18 Jul 2026 15:10:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlDEX-0002Ih-0o; Sat, 18 Jul 2026 18:10:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDET-00025M-JZ; Sat, 18 Jul 2026 18:10:05 -0400 Received: from pdx-out-006.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.26.1.71]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDER-0006Vv-Pi; Sat, 18 Jul 2026 18:10:05 -0400 Received: from ip-10-5-0-115.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.0.115]) by internal-pdx-out-006.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:10:00 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.105:4810] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.30.230:2525] with esmtp (Farcaster) id 58687ed2-8679-4c11-b377-937e8589ea68; Sat, 18 Jul 2026 22:09:59 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC001.ant.amazon.com (10.250.64.174) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:09:59 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:09:50 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412603; x=1815948603; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=8SHSJyx3GVUlydRkcEPqaWeFtStFpI38YZCyweyhvk0=; b=dp67tkWYmrT+Vz3HjxVfu/PhnR8IPb5DhiH7ZHmqV0XBvW0UYMNO91IW KWfdO5r7zkWzEkK3VKqODglMczLjAEKAhElLtx01nCN/mVKa8Y9v8YoJo 0QX54d1mlIqHrWZ/NxnARa1Y1gu8Zq8dsWi+pKUehmbeSZSJSNFjwF26l jZFizOyBvFbsrC5ZReNjUYMlhUiXVdiF1mvNeH7KAv5TNHQNOxlPEv39R v9NICeGS/Cq2/W8uCzDflnOJ8Nhee4mDn10VxgiOHHNkOVcv8QRIslFd/ 3Uk2OclB4b6fQ3fbqNu9t69kIVTts3Og7JCdC09pJYN5C9DN+kKEdwcns A==; X-CSE-ConnectionGUID: F37C0L4dTMaTzUR9kfOISQ== X-CSE-MsgGUID: LdVSWtNkRfCdBfVSIpfa+g== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23945083" X-Farcaster-Flow-ID: 58687ed2-8679-4c11-b377-937e8589ea68 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 118/137] sysbus: Parent main-system-bus directly under /machine Date: Sat, 18 Jul 2026 21:36:33 +0000 Message-ID: <20260718213652.37673-119-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D036UWC003.ant.amazon.com (10.13.139.214) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.26.1.71; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-006.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412623610158500 Content-Type: text/plain; charset="utf-8" The main system bus is the only object deliberately placed under /machine/unattached; every other resident is an accidental orphan. Promoting it to /machine/sysbus makes /machine/unattached a pure bug indicator that later commits can turn into a hard error. The canonical path changes from /machine/unattached/sysbus to /machine/sysbus. qom-list users that hard-code the old path need to be updated; the hmp/qmp qom-tree output naturally follows. AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- system/vl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/vl.c b/system/vl.c index 061cbdf860..b4434839df 100644 --- a/system/vl.c +++ b/system/vl.c @@ -2211,7 +2211,7 @@ static void qemu_create_machine(QDict *qdict) object_property_add_child(object_get_root(), "machine", OBJECT(current_machine)); qemu_create_machine_containers(OBJECT(current_machine)); - object_property_add_child(machine_get_container("unattached"), + object_property_add_child(OBJECT(current_machine), "sysbus", OBJECT(sysbus_get_default())); =20 if (machine_class->minimum_page_bits) { --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412679; cv=none; d=zohomail.com; s=zohoarc; b=Q/R6Vaz3w71lvZw8xvIR5yu8iv+EKfnxX2i/9/56kGDYObodW0P34C/jrI1jyGY54zCo08qF5j5wOrulxF3LdfMasRBGYeMSh0MFvkK9exngGq7W9SdXBRATR64TKRtYJ4inm1RsuUwXmt6xkAbPvwd7qj6X4//Qsg9TzJ2bj+k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412679; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=9Qn6R6pxE5AvdQsbIZhdL+G28xuxoC+uESHB8pn4JQU=; b=RViBwvHWaUDDTsEPMvKqa8u3C7UrTQ3zgLNPL5OCudSyMMMHosTFqLMgCX6j5sIAg6V5BSqV2dqvD6bcjmJcldrPa1Jac2Bboq708edpjj0MmCBQfuZHA8jOyshmREXOXy8eMcDw+YZsI7rENr0buw1zFTnKJX3+rED1DduetsA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412679521293.5892644483703; Sat, 18 Jul 2026 15:11:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlDEr-0002mT-0X; Sat, 18 Jul 2026 18:10:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDEd-0002Wx-Fz; Sat, 18 Jul 2026 18:10:16 -0400 Received: from pdx-out-004.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.246.77.92]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDEb-0006ZK-N5; Sat, 18 Jul 2026 18:10:15 -0400 Received: from ip-10-5-9-48.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.9.48]) by internal-pdx-out-004.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:10:09 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.111:15151] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.30.230:2525] with esmtp (Farcaster) id 84d3792a-25d4-4505-ae8c-01ddd0eac50e; Sat, 18 Jul 2026 22:10:09 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB002.ant.amazon.com (10.250.64.231) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:10:09 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:09:59 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412613; x=1815948613; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=9Qn6R6pxE5AvdQsbIZhdL+G28xuxoC+uESHB8pn4JQU=; b=ZtPSPaWXmreIPBnYTyLwqO3WbBUrU6w7mUxJq+kU2dr7zxPYD9AeHmb4 ZYnZ2ax3x5FMV438iDqZBHgO0+IzWOJoWAOoqm2QlphtZOHBjKk6YBPoi A2GMxJ7cB7V2OIl0LEfp1Gk11/wS7o3GlhLS+h6BX5/OqMF+6sXXUWq02 /Qvb0T81YGpG/6K2Y6MubJ4zCC8yG4874z9Ifdd+jX74Qj+xVaT4w2bzl 9YOBZ0vt2Zrr6l+Ak52Kh3860DoOXH5nWu4zic/zzfdLNxtYSfQwC6Dyy shBG2a6nWAUrR+JXBnaLn/lwU34oJOtd531N7xmixb9lgCEev2QBWa1KO A==; X-CSE-ConnectionGUID: 0Vx/TroqSRiAP/Thw0Aq+A== X-CSE-MsgGUID: 8+BGN2RJTuGWy5lPVNy4vQ== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23918132" X-Farcaster-Flow-ID: 84d3792a-25d4-4505-ae8c-01ddd0eac50e From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 119/137] accel: Parent the accelerator singleton under /machine Date: Sat, 18 Jul 2026 21:36:34 +0000 Message-ID: <20260718213652.37673-120-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D036UWC003.ant.amazon.com (10.13.139.214) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.246.77.92; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-004.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412680051158500 Content-Type: text/plain; charset="utf-8" do_configure_accelerator() runs after qemu_create_machine(), so current_machine is available. Give the AccelState singleton a canonical path at /machine/accel and drop the floating caller reference; on init failure, unparent instead of unref. AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- accel/accel-system.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/accel/accel-system.c b/accel/accel-system.c index 9176665202..987c982c16 100644 --- a/accel/accel-system.c +++ b/accel/accel-system.c @@ -41,12 +41,14 @@ int accel_init_machine(AccelState *accel, MachineState = *ms) AccelClass *acc =3D ACCEL_GET_CLASS(accel); int ret; ms->accelerator =3D accel; + object_property_add_child(OBJECT(ms), "accel", OBJECT(accel)); + object_unref(OBJECT(accel)); *(acc->allowed) =3D true; ret =3D acc->init_machine(accel, ms); if (ret < 0) { ms->accelerator =3D NULL; *(acc->allowed) =3D false; - object_unref(OBJECT(accel)); + object_unparent(OBJECT(accel)); } else { object_set_accelerator_compat_props(acc->compat_props); } --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412649; cv=none; d=zohomail.com; s=zohoarc; b=g53Y1ZWpIgG2BHLySSgZ7KADpHbyCjv/nEKVlsfVjoa8u0cwkqbg2g4Ndz2L8U/3S12i0U6hbU/ARrTk2f6fy7ZrAegRSE5qaoRI4A6nYo0bW2dVt/q0p1srzh2pnf4+VYUQ473yCCX9QEt8eaHWi4DGiyAg6UBYqYuFQBiOBEY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412649; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=MBBs+r4D9ciSt9jJWEKbWpQa5N9YAToQOfGqPWyypko=; b=HmXWEruZCQPV7E9SbhunW0Mg0R9B0KGhlFvPr5KZXn5hTWy/o04BF3viNwb16MJz7ra9iKYKBWaMcYSqP7qlQZHMpXvkNuyj94l1xkKQqxLo7tLgU70D2c/1qKmqyYoVWm+Xd3E+wuJv3DqZ4ecksvJpu/0/2ZZ41UcCPT9hQoo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412649875850.9623546556196; Sat, 18 Jul 2026 15:10:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlDF9-00044P-4S; Sat, 18 Jul 2026 18:10:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDF8-000401-49; Sat, 18 Jul 2026 18:10:46 -0400 Received: from pdx-out-010.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.12.53.23]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDF6-0006ot-AM; Sat, 18 Jul 2026 18:10:45 -0400 Received: from ip-10-5-6-203.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.6.203]) by internal-pdx-out-010.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:10:40 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.111:22030] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.58.199:2525] with esmtp (Farcaster) id bd32d152-e438-4285-8d5c-6547172343b7; Sat, 18 Jul 2026 22:10:40 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB002.ant.amazon.com (10.250.64.231) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:10:40 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:10:30 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412644; x=1815948644; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=MBBs+r4D9ciSt9jJWEKbWpQa5N9YAToQOfGqPWyypko=; b=mlBRBarcqJjjD6l6DpuPUfb5q7EKp8dHrDr/YioAgAnVzncFvhqWRpLe oO8qxVm4Y8/UQTgxZ1+YyrQnj0ddAz2Rk6qQDjm8Tw/SGo3lEjmIYnokz WPnCfLdpDTDtF0g+KPaASk/iI0gx/muTjv+lSVPYczt7NovfKPY8OXvcn vec485+1nKJaYuQ1ek58xvnLoSqRxXNOCVa5/lCj6f0aOQ/AZ4XcC3VmH YEJZMEgHlBMCuYMaWOacJN/bfcoOoSpFHY4GnsEfEen+1oX7v+Dxf5QpQ /LYFJC3LzHe5DnPr/QUaRUqYDFb3kGeItgJhE5fgVvNJCOWbLpswxaA8p Q==; X-CSE-ConnectionGUID: B5fxCVjdQ72D+nla9K5uVA== X-CSE-MsgGUID: STLuVnsbTLeqUtl9rQQ6Ag== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23795955" X-Farcaster-Flow-ID: bd32d152-e438-4285-8d5c-6547172343b7 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 120/137] hw/intc/mips_gic: Register reset handler at realize, not instance_init Date: Sat, 18 Jul 2026 21:36:35 +0000 Message-ID: <20260718213652.37673-121-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D039UWB002.ant.amazon.com (10.13.138.79) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.12.53.23; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-010.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.01, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412651728158500 Content-Type: text/plain; charset="utf-8" mips_gic_init() calls qemu_register_reset(gic_reset, s), but there is no matching qemu_unregister_reset() in an instance_finalize. This leaks a reset handler every time the type is introspected via device-list-properties (object_new + object_unref). The following patch makes each legacy reset handler visible in the composition tree under /machine/reset-container/legacy-reset[*], which turns this pre-existing leak into a device-introspect-test failure. Move the registration to mips_gic_realize(), matching every other in-tree interrupt controller. AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/intc/mips_gic.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/intc/mips_gic.c b/hw/intc/mips_gic.c index 4777c70d6b..c0f1501bcc 100644 --- a/hw/intc/mips_gic.c +++ b/hw/intc/mips_gic.c @@ -394,7 +394,6 @@ static void mips_gic_init(Object *obj) memory_region_init_io(&s->mr, OBJECT(s), &gic_ops, s, "mips-gic", GIC_ADDRSPACE_SZ); sysbus_init_mmio(sbd, &s->mr); - qemu_register_reset(gic_reset, s); } =20 static void mips_gic_realize(DeviceState *dev, Error **errp) @@ -430,6 +429,7 @@ static void mips_gic_realize(DeviceState *dev, Error **= errp) for (i =3D 0; i < s->num_irq; i++) { s->irq_state[i].irq =3D qdev_get_gpio_in(dev, i); } + qemu_register_reset(gic_reset, s); } =20 static const Property mips_gic_properties[] =3D { --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412671; cv=none; d=zohomail.com; s=zohoarc; b=Q5jdzpQB36uE67h6FKRLlDy0HZNz5FiKCn0U/km5bAiOdAfiUKTCQUAHAznppC2cbufs6Yn60Z2fjXJplG2lkrge+C7ygFK+mcY18n6ayMJDTyivmUzv0n7m9m8CCnqRQ5tC7EuCG3B+Y+WgOnLh77R8OD3D/LQVBWMFsFPD8uI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412671; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=XYX1pHdcrjyubK5N7hVhORucyl2rn9044QM9LF7h6vs=; b=mQnLuqE5WXFiiYglpzQ9+CSgC+Ywt2YxQYT66ZwowdXlF0jl/LtMlQm9UDLdaZjFcqQVTJYDOPK07M7W8g+Yts0RCFdXFkrJXZCXMv741uWdXTFkgZ2cUZWL3kxprfromUN6YImS/xhqNFTQVtmt/9O9RYVVg2bud0eJJ4GFp3w= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412671190696.5089788753847; Sat, 18 Jul 2026 15:11:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlDFV-0004bL-3S; Sat, 18 Jul 2026 18:11:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDFH-0004PK-Sz; Sat, 18 Jul 2026 18:10:57 -0400 Received: from pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.245.243.92]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDFG-0006pi-3S; Sat, 18 Jul 2026 18:10:55 -0400 Received: from ip-10-5-0-115.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.0.115]) by internal-pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:10:50 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.234:27271] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.40.177:2525] with esmtp (Farcaster) id a1fc49ce-f2a9-4500-96a2-641a34b0429e; Sat, 18 Jul 2026 22:10:49 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA002.ant.amazon.com (10.250.64.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:10:49 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:10:40 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412654; x=1815948654; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=XYX1pHdcrjyubK5N7hVhORucyl2rn9044QM9LF7h6vs=; b=nHsRRLtRrObqFVmxaPGxKEmkoSs+PrM2QpQ6huZJ9mujRviaC4kvlI7r 8h+bDakLKyEpVzEKiVZnBjgWM10mFOF6DuNyqp+apdvMGME7zoSOtSDt3 I8UEbtTaKAydvVfN3fO4YsGfexDE/wvW4v4xClLqOFVO96bYQAaHSgXhO o9noqxktSfarKaMwo0Gr5uwP2kfGBP1GpAMJD7b/JCN/VEE0FHqkPsz0g goPRWNrcs/8YxcqTacr0wZlrMPz26NrFVwtKBVJdZIQwXdyd4hcWDQdNx aFLfi9c1nPBvXAZ2LcMDpGXTNtrsbp33w5+QxJpAIBQcvrnl0KUPl9zGh Q==; X-CSE-ConnectionGUID: t7d5Fp80QHK+OtGgRFOP7A== X-CSE-MsgGUID: +AayU4DqTh+B0/BqKRE/hQ== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23423713" X-Farcaster-Flow-ID: a1fc49ce-f2a9-4500-96a2-641a34b0429e From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 121/137] hw/core/reset: Give the root reset container and legacy shims a QOM path Date: Sat, 18 Jul 2026 21:36:36 +0000 Message-ID: <20260718213652.37673-122-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D039UWB002.ant.amazon.com (10.13.138.79) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.245.243.92; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412671887158500 Content-Type: text/plain; charset="utf-8" The root ResettableContainer and the LegacyReset shim objects are long-lived singletons held only by static pointers and refcounts. Give them a canonical path in the composition tree so qom-tree/qom-list can enumerate them and so device_set_realized() can require a QOM parent for every object. /machine/reset-container (ResettableContainer) /machine/reset-container/legacy-reset[N] (LegacyReset shims) get_root_reset_container() is first reached from configure_accelerators() or machine_run_board_init(), both of which run after qemu_create_machine(), so qdev_get_machine() is available. qemu_unregister_reset() switches from object_unref() to object_unparent() to release the child<> ref. AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/core/reset.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/hw/core/reset.c b/hw/core/reset.c index e7230b49b7..34c1ab84d9 100644 --- a/hw/core/reset.c +++ b/hw/core/reset.c @@ -27,6 +27,7 @@ #include "system/reset.h" #include "hw/core/resettable.h" #include "hw/core/resetcontainer.h" +#include "hw/core/qdev.h" =20 /* * Return a pointer to the singleton container that holds all the Resettab= le @@ -38,7 +39,9 @@ static ResettableContainer *get_root_reset_container(void) =20 if (!root_reset_container) { root_reset_container =3D - RESETTABLE_CONTAINER(object_new(TYPE_RESETTABLE_CONTAINER)); + RESETTABLE_CONTAINER(object_new_child(qdev_get_machine(), + "reset-container", + TYPE_RESETTABLE_CONTAINER)); } return root_reset_container; } @@ -94,7 +97,8 @@ static void legacy_reset_class_init(ObjectClass *klass, c= onst void *data) =20 void qemu_register_reset(QEMUResetHandler *func, void *opaque) { - Object *obj =3D object_new(TYPE_LEGACY_RESET); + Object *obj =3D object_new_child(OBJECT(get_root_reset_container()), + "legacy-reset[*]", TYPE_LEGACY_RESET); LegacyReset *lr =3D LEGACY_RESET(obj); =20 lr->func =3D func; @@ -104,7 +108,8 @@ void qemu_register_reset(QEMUResetHandler *func, void *= opaque) =20 void qemu_register_reset_nosnapshotload(QEMUResetHandler *func, void *opaq= ue) { - Object *obj =3D object_new(TYPE_LEGACY_RESET); + Object *obj =3D object_new_child(OBJECT(get_root_reset_container()), + "legacy-reset[*]", TYPE_LEGACY_RESET); LegacyReset *lr =3D LEGACY_RESET(obj); =20 lr->func =3D func; @@ -156,7 +161,7 @@ void qemu_unregister_reset(QEMUResetHandler *func, void= *opaque) =20 if (obj) { qemu_unregister_resettable(obj); - object_unref(obj); + object_unparent(obj); } } =20 --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412702; cv=none; d=zohomail.com; s=zohoarc; b=PMHWva2ckH1H+MpKw2JjQl0Swr3zBx9YwUjXqoOxmaBZl6mApaWgv2kU6kYbexUFhGeuxmvPoq0QkAWBkoJyq6bqmdm+SsUGLHEqPqTphg602GqsS0WL6kqDZkSYE6nReCn4S1pAAO9fy61mo69A5t37yicsOjgZH+M2XR4Gd8M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412702; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=xbtCk5DYK+hnP7Mgo7vvnzsMAqL3XvNk17QcEg+K//w=; b=B6gOdtExqrxnVG6X08PqRsDJPUBC5b/ccIvak1iJB00mkF+qaRHSf57TefKVFF91ZTDNIM1RbSIHq8Iv2Tbpuy7FChEJP/etTQGLSVR7vmcN+sOYx1M2sBF2iOVckd7XfGSCd+TMYKBZSll3+OPzRYBjTU3X05Gds39A8Ava0Xo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412702917512.3561550376777; Sat, 18 Jul 2026 15:11:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlDFu-0005Bi-Ks; Sat, 18 Jul 2026 18:11:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDFR-0004dl-Rh; Sat, 18 Jul 2026 18:11:07 -0400 Received: from pdx-out-012.esa.us-west-2.outbound.mail-perimeter.amazon.com ([35.162.73.231]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDFP-0006qH-6M; Sat, 18 Jul 2026 18:11:05 -0400 Received: from ip-10-5-9-48.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.9.48]) by internal-pdx-out-012.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:10:59 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.104:9398] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.48.250:2525] with esmtp (Farcaster) id ad2e6022-b2c2-4d0b-a61c-9bde01cbc76d; Sat, 18 Jul 2026 22:10:59 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB001.ant.amazon.com (10.250.64.248) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:10:59 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:10:49 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412663; x=1815948663; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=xbtCk5DYK+hnP7Mgo7vvnzsMAqL3XvNk17QcEg+K//w=; b=INXFXSJOYRBv78FnBWYoNn+pZRI0gl7nYPYIiaKuggXbRBAM4F5lkAK9 kl7aJO4Kx1GhMdRchHKvGSsI17s8qdmmsl9IPbhGeUE6qoGAbbqy/oVTO luvwva0y4Q6o1PL+PWVP38m7+16oCTR057720GiKYEsGqpA9iOuRD8IPS LaBW/QbwQQlg4PBFRKqcCIYQkDRYMyehPGnBpEF5DLmr9Z27prSDIgbOl jqfLX4x/WOEctNhAr0LgBlxxaXj9D2238H6FDzJEvSvTlXjnYnoqOWol2 I8JeULdb9RxMh1jRZKhO5gcay0QKoeXoG0FgzntZl/Q63tOVHTHBq+Lvw Q==; X-CSE-ConnectionGUID: FJXk4PqKSGGyrhvgJNS/iQ== X-CSE-MsgGUID: alDvnnZGTO2EoxExU2nkDQ== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23716772" X-Farcaster-Flow-ID: ad2e6022-b2c2-4d0b-a61c-9bde01cbc76d From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 122/137] system: Parent per-MR helper objects under their owner Date: Sat, 18 Jul 2026 21:36:37 +0000 Message-ID: <20260718213652.37673-123-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D039UWB002.ant.amazon.com (10.13.138.79) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=35.162.73.231; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-012.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412704010158500 Content-Type: text/plain; charset="utf-8" RamBlockAttributes and MemoryRegionPortioList objects are long-lived helpers whose lifetime is already tied to a MemoryRegion or its owner. Give each a canonical path under that owner instead of leaving them as floating refcounted objects: /attributes (RamBlockAttributes) /portio-list[N] (MemoryRegionPortioList) The destroy paths switch from object_unref() to object_unparent() now that the parent holds the reference. RamDiscardManager is deliberately left as-is: it is unref'd from memory_region_finalize() itself, so making it a child<> of the MR would introduce a use-after-free during MR teardown. It can move under a different owner in a follow-up once the RDM lifecycle is untangled from MR finalize. AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- system/ioport.c | 5 +++-- system/ram-block-attributes.c | 7 ++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/system/ioport.c b/system/ioport.c index 0415b3cd60..77ab77d7be 100644 --- a/system/ioport.c +++ b/system/ioport.c @@ -145,7 +145,7 @@ void portio_list_destroy(PortioList *piolist) for (i =3D 0; i < piolist->nr; ++i) { mrpio =3D container_of(piolist->regions[i], MemoryRegionPortioList= , mr); object_unparent(OBJECT(&mrpio->mr)); - object_unref(mrpio); + object_unparent(OBJECT(mrpio)); } g_free(piolist->regions); } @@ -228,7 +228,8 @@ static void portio_list_add_1(PortioList *piolist, =20 /* Copy the sub-list and null-terminate it. */ mrpio =3D MEMORY_REGION_PORTIO_LIST( - object_new(TYPE_MEMORY_REGION_PORTIO_LIST)); + object_new_child(piolist->owner, "portio-list[*]", + TYPE_MEMORY_REGION_PORTIO_LIST)); mrpio->portio_opaque =3D piolist->opaque; mrpio->ports =3D g_new0(MemoryRegionPortio, count + 1); memcpy(mrpio->ports, pio_init, sizeof(MemoryRegionPortio) * count); diff --git a/system/ram-block-attributes.c b/system/ram-block-attributes.c index 59ec7a28eb..0967bed6d3 100644 --- a/system/ram-block-attributes.c +++ b/system/ram-block-attributes.c @@ -182,12 +182,13 @@ RamBlockAttributes *ram_block_attributes_create(RAMBl= ock *ram_block) RamBlockAttributes *attr; MemoryRegion *mr =3D ram_block->mr; =20 - attr =3D RAM_BLOCK_ATTRIBUTES(object_new(TYPE_RAM_BLOCK_ATTRIBUTES)); + attr =3D RAM_BLOCK_ATTRIBUTES(object_new_child(OBJECT(mr), "attributes= ", + TYPE_RAM_BLOCK_ATTRIBUTES= )); =20 attr->ram_block =3D ram_block; =20 if (memory_region_add_ram_discard_source(mr, RAM_DISCARD_SOURCE(attr))= ) { - object_unref(OBJECT(attr)); + object_unparent(OBJECT(attr)); return NULL; } attr->bitmap_size =3D DIV_ROUND_UP(int128_get64(mr->size), block_size); @@ -202,7 +203,7 @@ void ram_block_attributes_destroy(RamBlockAttributes *a= ttr) =20 g_free(attr->bitmap); memory_region_del_ram_discard_source(attr->ram_block->mr, RAM_DISCARD_= SOURCE(attr)); - object_unref(OBJECT(attr)); + object_unparent(OBJECT(attr)); } =20 static void ram_block_attributes_init(Object *obj) --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412717; cv=none; d=zohomail.com; s=zohoarc; b=G9lVggdGfcQDTvTXKZKXwaKbV6ayN9bbDF20904WM/jTRef5M3kT7yjlEUODeNZDewkujo06EaFE6+YWET0On3uJOA7psuAm2dX/VitB/mPBLFRZgMlp0UQL/bqTcPly9kWbASfxSR5KqW76JSU1vPdr9+nhNds2d1rZfBgoCPQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412717; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=JxsdngGf1vpRbF3WMt96zeeKeAwn2sWQR8YrUeyOLnY=; b=Bq3BL5LR4Hx6+/SKgNf+gw0ZvnemOPSRvc3RkuiVDlKdQLUbnKtvy0GULyASSfTpGmgrP2KMGWkFqdDgEkROgAXHKURhdgaO0rGC8DaVj/KMS3TlXLvx/pccBSjngbdhyLiluR1X13wNChSr0Tf1lFwHB92s2wCf7dDYgZChoEk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412716926436.90875817859785; Sat, 18 Jul 2026 15:11:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlDG6-0005cC-0a; Sat, 18 Jul 2026 18:11:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDFy-0005II-Js; Sat, 18 Jul 2026 18:11:40 -0400 Received: from pdx-out-007.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.34.181.151]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDFv-0006rr-Le; Sat, 18 Jul 2026 18:11:37 -0400 Received: from ip-10-5-12-219.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.12.219]) by internal-pdx-out-007.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:11:31 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.51:21933] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.30.230:2525] with esmtp (Farcaster) id bf37dde2-f3ee-4628-91eb-0981056ae999; Sat, 18 Jul 2026 22:11:30 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC002.ant.amazon.com (10.250.64.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:11:30 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:11:20 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412695; x=1815948695; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=JxsdngGf1vpRbF3WMt96zeeKeAwn2sWQR8YrUeyOLnY=; b=cK5C1OZcnXyGKp+npfruL7XgvE3cZH6bEAKgxjj+gMrB75NSqQ83XvqX yvh2OWot6L+VnW72Bffsz4E3u43G7Fkcyr/N6TCRfu1t624JAf5RwX68N z14+X8vsEN5ddgBRQp7EuSh/048jTl3gzKyQNJYffu1oco6qgeeU6vaIr I4Dv/W9xH6jVjbpsLYZFDLr8TmVPe3HvJrTpkNeXOkFwFr6S3j9mKVuiH q4txcKSiru5m/EgDw0grVCoh/nniM88nPZ5d4NlMOPJ8l+DtKM28eBFSo oh84agWRngwRxsZdoEiNUvsuvKrZL+yyy9Fc6uwr1+BweWRmfuDYq3Czs Q==; X-CSE-ConnectionGUID: /USlnKMATLWjirLbwFlIyg== X-CSE-MsgGUID: oE/elDOBSqiXO3d5XSXTHA== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23911384" X-Farcaster-Flow-ID: bf37dde2-f3ee-4628-91eb-0981056ae999 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 123/137] hw/virtio, hw/display: Parent per-device helper objects Date: Sat, 18 Jul 2026 21:36:38 +0000 Message-ID: <20260718213652.37673-124-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D044UWB004.ant.amazon.com (10.13.139.134) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.34.181.151; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-007.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.01, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412719136158500 Content-Type: text/plain; charset="utf-8" The virtio-mem system-reset shim, the vhost-user-gpu backend, and its socket chardev live exactly as long as their enclosing virtio device. Parent them under it so they show up in the composition tree instead of floating with only a refcount. The unrealize/finalize/error paths switch from object_unref() to object_unparent(), and vhost_user_gpu_instance_finalize() drops its now-redundant unref: the vhost-backend is a child<> of the GPU and is released automatically when the GPU is finalized. AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/display/vhost-user-gpu.c | 12 ++++++------ hw/virtio/virtio-mem.c | 5 +++-- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/hw/display/vhost-user-gpu.c b/hw/display/vhost-user-gpu.c index 57360898ca..c2c150bdcf 100644 --- a/hw/display/vhost-user-gpu.c +++ b/hw/display/vhost-user-gpu.c @@ -439,7 +439,8 @@ vhost_user_gpu_do_set_socket(VhostUserGPU *g, Error **e= rrp) return false; } =20 - chr =3D CHARDEV(object_new(TYPE_CHARDEV_SOCKET)); + chr =3D CHARDEV(object_new_child(OBJECT(g), "vhost-chardev", + TYPE_CHARDEV_SOCKET)); if (!chr || qemu_chr_add_client(chr, sv[0]) =3D=3D -1) { error_setg(errp, "Failed to make socket chardev"); goto err; @@ -462,7 +463,7 @@ err: close(sv[0]); close(sv[1]); if (chr) { - object_unref(OBJECT(chr)); + object_unparent(OBJECT(chr)); } return false; } @@ -584,7 +585,8 @@ vhost_user_gpu_instance_init(Object *obj) { VhostUserGPU *g =3D VHOST_USER_GPU(obj); =20 - g->vhost =3D VHOST_USER_BACKEND(object_new(TYPE_VHOST_USER_BACKEND)); + g->vhost =3D VHOST_USER_BACKEND(object_new_child(obj, "vhost-backend", + TYPE_VHOST_USER_BACKEND= )); object_property_add_alias(obj, "chardev", OBJECT(g->vhost), "chardev"); } @@ -592,9 +594,7 @@ vhost_user_gpu_instance_init(Object *obj) static void vhost_user_gpu_instance_finalize(Object *obj) { - VhostUserGPU *g =3D VHOST_USER_GPU(obj); - - object_unref(OBJECT(g->vhost)); + /* g->vhost is a child<> of obj and released with it */ } =20 static void diff --git a/hw/virtio/virtio-mem.c b/hw/virtio/virtio-mem.c index 35e03ed759..c45cbdbe32 100644 --- a/hw/virtio/virtio-mem.c +++ b/hw/virtio/virtio-mem.c @@ -1011,7 +1011,8 @@ static void virtio_mem_device_realize(DeviceState *de= v, Error **errp) * we need a dedicated reset object that only gets called during * qemu_devices_reset(). */ - obj =3D object_new(TYPE_VIRTIO_MEM_SYSTEM_RESET); + obj =3D object_new_child(OBJECT(vmem), "system-reset", + TYPE_VIRTIO_MEM_SYSTEM_RESET); vmem->system_reset =3D VIRTIO_MEM_SYSTEM_RESET(obj); vmem->system_reset->vmem =3D vmem; qemu_register_resettable(obj); @@ -1023,7 +1024,7 @@ static void virtio_mem_device_unrealize(DeviceState *= dev) VirtIOMEM *vmem =3D VIRTIO_MEM(dev); =20 qemu_unregister_resettable(OBJECT(vmem->system_reset)); - object_unref(OBJECT(vmem->system_reset)); + object_unparent(OBJECT(vmem->system_reset)); =20 if (vmem->early_migration) { vmstate_unregister(VMSTATE_IF(vmem), &vmstate_virtio_mem_device_ea= rly, --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412718; cv=none; d=zohomail.com; s=zohoarc; b=Mg4hb77qyIA3DZTpTgDD+usQmARaWNTm8PjXbGKEgoUYDMMQas/Nc0PLRoM540JlVlCZbcOrIC9zgkH0WYKg2HYE2OHghlukT3FHJwLdqlHk+hV/IghdCmM9ec8xOq3O9Y9TLMGqeQiCE/DRqIK3NzhWYHe3dDqHbv1IXdLYYwY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412718; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=E84Yh7QVOv2zhZkYN23YV/pIT9kbOpezNCyqmcoEjaw=; b=fEN933bJGi0OD04MhT3aoxs5N7aUMVFcFd7IgAKbZsJw5lwo7AUOVHzonx0YUAiAZNDtioi7dW+0A34y5KAXgXeJeNR0pLzCWYvaHCgRMV9XXwNNAzXYKQXt03W/dFMYoxnuT0+4ltWpCXQon5UYBH2udU+uVQEcrxuo+Pxe5+s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412718180820.2380907681834; Sat, 18 Jul 2026 15:11:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlDG9-0005yO-9z; Sat, 18 Jul 2026 18:11:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDG7-0005qP-Lh; Sat, 18 Jul 2026 18:11:47 -0400 Received: from pdx-out-005.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.13.214.179]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDG5-0006sZ-VR; Sat, 18 Jul 2026 18:11:47 -0400 Received: from ip-10-5-9-48.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.9.48]) by internal-pdx-out-005.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:11:40 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.182:30044] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.29.147:2525] with esmtp (Farcaster) id 22c38cab-00fd-4b0d-8483-128c026cf64b; Sat, 18 Jul 2026 22:11:39 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA001.ant.amazon.com (10.250.64.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:11:39 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:11:30 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412706; x=1815948706; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=E84Yh7QVOv2zhZkYN23YV/pIT9kbOpezNCyqmcoEjaw=; b=fDshVBjvvhTDyRFhAMANuOzvq8k3uGGFzMM9C7ylRmaD7oefm27VSK7Q 8qXRxwQAGIaMqIGjMkErr8kVfS8uVlG6NDKgoqwchd6PL9NdxRefhTMXr V3TTf13uHNEj1V8yQmH2vfFVWAHuKm2HJ4tRdDRZ0UfrVc2bweKfXG0HY KK+fO4WcHJqYGs7fqro0y2ipodPgqBoC7vz3hWZ7zSUl3gGnA0QjlSSxO 18BYDgUBPfXApU1YJltmaKJ9UHX2gYT0GgkhOGtabDJpwPRAHB9oUUCpP FNkvF9vksDFYhP2M086lFtkhVCMc/cFl2dZBWtwvgkf1WCxOrHptaa7Qg g==; X-CSE-ConnectionGUID: B7mQ/56zQcu00WUnKXTjzw== X-CSE-MsgGUID: En79J1B4RBCXBKF7kCP8Fw== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23904763" X-Farcaster-Flow-ID: 22c38cab-00fd-4b0d-8483-128c026cf64b From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 124/137] hw/i386/amd_iommu: Parent internally-created AMDVI-PCI under the IOMMU Date: Sat, 18 Jul 2026 21:36:39 +0000 Message-ID: <20260718213652.37673-125-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D044UWB004.ant.amazon.com (10.13.139.134) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.13.214.179; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-005.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412720119158500 Content-Type: text/plain; charset="utf-8" When the AMD IOMMU creates its own PCI companion device (no pci-id supplied by the user), parent it under the sysbus IOMMU so it has a canonical path at /pci. The user-supplied path already parents via -device. AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/i386/amd_iommu.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hw/i386/amd_iommu.c b/hw/i386/amd_iommu.c index 90252c52af..e3394bad6e 100644 --- a/hw/i386/amd_iommu.c +++ b/hw/i386/amd_iommu.c @@ -2698,7 +2698,8 @@ static void amdvi_sysbus_realize(DeviceState *dev, Er= ror **errp) s->pci =3D AMD_IOMMU_PCI(pdev); dc->vmsd =3D &vmstate_amdvi_sysbus_migratable; } else { - s->pci =3D AMD_IOMMU_PCI(object_new(TYPE_AMD_IOMMU_PCI)); + s->pci =3D AMD_IOMMU_PCI(object_new_child(OBJECT(s), "pci", + TYPE_AMD_IOMMU_PCI)); /* This device should take care of IOMMU PCI properties */ if (!qdev_realize(DEVICE(s->pci), &bus->qbus, errp)) { return; --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412739; cv=none; d=zohomail.com; s=zohoarc; b=QcD3atdtG1tJFBkOxgSJ4YezTJFs8+m5Y0qRLS183Dj3BVtjYKxuDH0mtZU8JS/hnoz50reud6YVUajq1myAe/AkTU/3+c2k2C1A4xy72bsmgEdGezrMbow3D9FVWWvYq/TPsCt9+6oruupvLg4S+8Yd/hbNJ+uexgZjv7Nv3l0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412739; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=KueI85jxNEkbbLG6vVMUGWXIOodLg7ml4f6quy6N39c=; b=HhJrJqJ8Zir8Lw1+zzlhViTqYrIZTBMgLhP/PpJxx2lM0NRRdB/x6xxvvqdqaFbaFoiRNugHda2I9b1h+ozR42t313z9171AIdKrYdIebDwpAKLY3nLVPKTzTYcqNb1UY9vlULqBvH3ZEW+O7BOIeQOL0k9eaLzDG/b31qkq+zs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178441273907892.02069492757948; Sat, 18 Jul 2026 15:12:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlDGI-0006s1-9F; Sat, 18 Jul 2026 18:11:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDGG-0006e7-AU; Sat, 18 Jul 2026 18:11:56 -0400 Received: from pdx-out-006.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.26.1.71]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDGD-0006tP-6L; Sat, 18 Jul 2026 18:11:55 -0400 Received: from ip-10-5-6-203.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.6.203]) by internal-pdx-out-006.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:11:49 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.105:9708] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.40.177:2525] with esmtp (Farcaster) id 803ee3f8-dad3-4d29-8cbc-350ef2785825; Sat, 18 Jul 2026 22:11:49 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC001.ant.amazon.com (10.250.64.174) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:11:49 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:11:39 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412713; x=1815948713; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=KueI85jxNEkbbLG6vVMUGWXIOodLg7ml4f6quy6N39c=; b=oloNN3dN+j/2yzTGxH5zn93ePCE/ii6lTy6QR5Qvlnz47IMOPx+VKYhW TEqCHd3Z9g1Dvrp60WUK9Mb4hmG2OYMlaCGMzFce/r0GfQTiEReXtfs/O D6UlZ/+PFSQUnpZKaXm3ugbgoBvUEl4coSTDNRfa/hKmprkOXyx+Hgjrp DMzyF0z2/9CMzQK1C5ihGlm0HIdw9EF+BrLDdma0o8i+oL8e1/jZ+9frA Gg7kWLxeCLF427Ts3NVK8IYJZBVk//nPgETnht47mAh4i8IDA5pWDQ85N aiNAzJ0R50neNPYDCBS5SQl3HEF7MAseVePExwCPeU2c4nKr5QU8jAgmv A==; X-CSE-ConnectionGUID: BWY9ITVFT0Wm4GTo7tfUCg== X-CSE-MsgGUID: vv75u5GOTSGpbipMjQyEcg== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23945205" X-Farcaster-Flow-ID: 803ee3f8-dad3-4d29-8cbc-350ef2785825 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 125/137] hw/s390x, hw/remote: Parent per-devfn IOMMU objects Date: Sat, 18 Jul 2026 21:36:40 +0000 Message-ID: <20260718213652.37673-126-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D044UWB004.ant.amazon.com (10.13.139.134) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.26.1.71; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-006.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412740179158500 Content-Type: text/plain; charset="utf-8" Give the per-devfn S390 PCI IOMMU object a canonical path under the S390 PCI host state. s390_pci_iommu_free() already calls object_unparent(), which was previously a no-op; it now performs the actual release. For the multi-process remote IOMMU, replace the raw object_new(TYPE_MEMORY_REGION) with a proper memory_region_init() under the RemoteIommu object so the MR gets an owner like every other MR in the tree. AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/remote/iommu.c | 7 ++++--- hw/s390x/s390-pci-bus.c | 9 +++++++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/hw/remote/iommu.c b/hw/remote/iommu.c index 3e0758a21e..52ee9765e6 100644 --- a/hw/remote/iommu.c +++ b/hw/remote/iommu.c @@ -52,8 +52,9 @@ static AddressSpace *remote_iommu_find_add_as(PCIBus *pci= _bus, } =20 if (!elem->mr) { - elem->mr =3D MEMORY_REGION(object_new(TYPE_MEMORY_REGION)); - memory_region_set_size(elem->mr, UINT64_MAX); + g_autofree char *name =3D g_strdup_printf("mr-devfn-%02x", devfn); + elem->mr =3D g_new0(MemoryRegion, 1); + memory_region_init(elem->mr, OBJECT(iommu), name, UINT64_MAX); address_space_init(&elem->as, elem->mr, NULL); } =20 @@ -75,7 +76,7 @@ void remote_iommu_unplug_dev(PCIDevice *pci_dev) =20 address_space_destroy(&elem->as); =20 - object_unref(elem->mr); + object_unparent(OBJECT(elem->mr)); =20 elem->mr =3D NULL; } diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c index 4f0a8a787b..da8406cc4e 100644 --- a/hw/s390x/s390-pci-bus.c +++ b/hw/s390x/s390-pci-bus.c @@ -618,7 +618,13 @@ static S390PCIIOMMU *s390_pci_get_iommu(S390pciState *= s, PCIBus *bus, =20 iommu =3D table->iommu[PCI_SLOT(devfn)]; if (!iommu) { - iommu =3D S390_PCI_IOMMU(object_new(TYPE_S390_PCI_IOMMU)); + char *ch_name =3D g_strdup_printf("iommu[%02x:%02x.%01x]", + pci_bus_num(bus), + PCI_SLOT(devfn), + PCI_FUNC(devfn)); + iommu =3D S390_PCI_IOMMU(object_new_child(OBJECT(s), ch_name, + TYPE_S390_PCI_IOMMU)); + g_free(ch_name); =20 char *mr_name =3D g_strdup_printf("iommu-root-%02x:%02x.%01x", pci_bus_num(bus), @@ -798,7 +804,6 @@ static void s390_pci_iommu_free(S390pciState *s, PCIBus= *bus, int32_t devfn) address_space_destroy(&iommu->as); object_unparent(OBJECT(&iommu->mr)); object_unparent(OBJECT(iommu)); - object_unref(OBJECT(iommu)); } =20 S390PCIGroup *s390_group_create(int id, int host_id) --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412780; cv=none; d=zohomail.com; s=zohoarc; b=Vq1fmAe4J5GjQCzn0ctukK1Oju2qX/5L36I1Olql22br3/a7/5dkFNw4N3BK4mXqIvT2ICA5F9xk89qVPBqXkDAQZsr5t7iNdReyqDMBO4FMnX3PmA78HcHiQ79TlhOeokZsdOaZ7LGSlEtn6FAA4U7JCvjwT+j4S2OQ2tGuedw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412780; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=3VuK+cgrYDt6tMvC19NPZaW39QOHh6817I86DHV98t4=; b=jGkb71BA/SWuw05d5Tu25cA4pwdyKTkrjeLTkya0hKaykm4hYLtyfnucPYdifanusLuiQYaBf4lQ5D7ex40kCni02/Abgwk0e3XG8ZVWimAC6ctbbHVfBVRQ/ATvsCMfym0mssnYuCCmKfAl5Mvfo47XsDTLaFmCoz/qXwtVdDg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412780255748.8638361101374; Sat, 18 Jul 2026 15:13:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlDGx-00087R-Bf; Sat, 18 Jul 2026 18:12:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDGk-00084d-OQ; Sat, 18 Jul 2026 18:12:31 -0400 Received: from pdx-out-013.esa.us-west-2.outbound.mail-perimeter.amazon.com ([34.218.115.239]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDGi-0006ys-Jc; Sat, 18 Jul 2026 18:12:26 -0400 Received: from ip-10-5-12-219.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.12.219]) by internal-pdx-out-013.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:12:20 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.111:17747] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.35.17:2525] with esmtp (Farcaster) id 95a5e4b8-80d2-46cc-95a6-b7c37f54e5b1; Sat, 18 Jul 2026 22:12:20 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB002.ant.amazon.com (10.250.64.231) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:12:20 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:12:10 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412744; x=1815948744; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=3VuK+cgrYDt6tMvC19NPZaW39QOHh6817I86DHV98t4=; b=qEGQktt7Ui2nHs+tyobJ9o6iRTVi0ZidfznnY5k5BSBPdZ8uuyZixH6g 5ZYI/tx5UQX8Nj1tVxJTSvXz9QnwyQTGqrfz+j4ANwihKT1mrTlj2q6x1 SPEKdf1REHwx77StgJ8qMUjQJhmBPX2B4xsoYGqVWjE4A+nyVEALzoJun vPbDi5kpPIG8KMUrFbmOtL6qwDr5tOhyfCpFZ0NNbWw7GSVjwSkO3Yo3x VfllOW2dT3MP04Qj8CTBjCI+pT0+uYpZCmZ3MO+Y6N/Lt6vq5py+0K6jJ 2Pw8UKJuix3YLM4TxLvxqCx7o/mnee6xmq1ifreb6s+21j2G7XobwAOSB g==; X-CSE-ConnectionGUID: P76ljJ/TSq68ZfX7Sp+ucA== X-CSE-MsgGUID: 03Ggre+3QXO7mlUdfnYN6A== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23719996" X-Farcaster-Flow-ID: 95a5e4b8-80d2-46cc-95a6-b7c37f54e5b1 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 126/137] hw/pci-host/raven: Parent the OR-IRQ under the host bridge Date: Sat, 18 Jul 2026 21:36:41 +0000 Message-ID: <20260718213652.37673-127-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D033UWC003.ant.amazon.com (10.13.139.217) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=34.218.115.239; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-013.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.01, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412782191158500 Content-Type: text/plain; charset="utf-8" The PReP raven host bridge creates an or-irq gate to fan PCI interrupts into IRQ 15. Parent it under the host bridge so it gets a canonical path. AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/pci-host/raven.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hw/pci-host/raven.c b/hw/pci-host/raven.c index b6ab686ff5..62d78efde5 100644 --- a/hw/pci-host/raven.c +++ b/hw/pci-host/raven.c @@ -249,7 +249,8 @@ static void raven_pcihost_realizefn(DeviceState *d, Err= or **errp) * According to PReP specification section 6.1.6 "System Interrupt * Assignments", all PCI interrupts are routed via IRQ 15 */ - s->or_irq =3D OR_IRQ(object_new(TYPE_OR_IRQ)); + s->or_irq =3D OR_IRQ(object_new_child(OBJECT(s), "or-irq", + TYPE_OR_IRQ)); object_property_set_int(OBJECT(s->or_irq), "num-lines", PCI_NUM_PINS, &error_fatal); qdev_realize(DEVICE(s->or_irq), NULL, &error_fatal); --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412785; cv=none; d=zohomail.com; s=zohoarc; b=Uzl3sbVd2+wHMJMn34JkYJUprSpSMSH6n5XaIVkaFGtFxbh+ih3aIZUPGc4s8kHODFdXHEUP1Ssn9HOBWRNJ3N+2div/wDnGpSia+kRXj0mI/dFYNRqxodGsCFZTKZa5c3gt8zLlRMd8qZKha5LmIkEpLbA7YimLsZJeqz4EdeA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412785; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=xnm/On1xaTaJ9SUCBNScL0AKQTWPP8CHJWXOZZcV0wo=; b=UqtINE4w7+BH+Wshge/pwI4EK7hZ7z4Am7GFCAAVrlDVQFnBzjMl4n5IBTN2JCaDTMwRIumgxDdMfICx0Df2VuIxNr8fry+Og5zW3vyT3t/rOA0hAv5HkpDxytmzZbpqKae2VzXF1jMQmWkv6ZgHQ9Gway8TsLFLcZBQ3R4tlYI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412784998364.45968529990773; Sat, 18 Jul 2026 15:13:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlDGz-0008Bp-4g; Sat, 18 Jul 2026 18:12:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDGv-00087L-HT; Sat, 18 Jul 2026 18:12:38 -0400 Received: from pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.246.1.125]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDGt-0006zK-O7; Sat, 18 Jul 2026 18:12:37 -0400 Received: from ip-10-5-9-48.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.9.48]) by internal-pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:12:30 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.234:12881] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.151:2525] with esmtp (Farcaster) id 55d64459-7a11-438f-b674-932ab9137f8c; Sat, 18 Jul 2026 22:12:30 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA002.ant.amazon.com (10.250.64.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:12:29 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:12:20 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412755; x=1815948755; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=xnm/On1xaTaJ9SUCBNScL0AKQTWPP8CHJWXOZZcV0wo=; b=XMjIkbxAGemAq2UtadtOQDcZiEBrJBgDJXv+yCJcG9i6soJUqzXb0efo VVvkxEvCNWP4g/XtHyxI+VZOYbDIj2ab3wWBIrT7ADkp+VOI5Z8cbiOtb W1NrvzU5vKg/QL50xOs8KJEgmA1H4JXesZz3a4MDakuueMc1xaBm4fDVh uA0lZgoUw7NYvUwmmDiVHsNxAolxTcV/DrWvd4wjzm2W6qvZ+qqclaVCN nsjQC220jq/I0lkxtK48qkvPc0zb3WDxV6QRvDJYQtQEU5ms04z+jcbMq u0vYOZ2a0jC46PXiNiMW+5rQ771Z9l+6r8CCucPtwdrtIuFwjHx/b6O0V Q==; X-CSE-ConnectionGUID: SDxV6/DoRXS6Kf5vloFqZg== X-CSE-MsgGUID: S22iSAVNST60ForJXfcsHg== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23928109" X-Farcaster-Flow-ID: 55d64459-7a11-438f-b674-932ab9137f8c From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 127/137] hw/arm/mps2: Parent the OR-IRQ gates under the machine Date: Sat, 18 Jul 2026 21:36:42 +0000 Message-ID: <20260718213652.37673-128-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D033UWC003.ant.amazon.com (10.13.139.217) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.246.1.125; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412786224158500 Content-Type: text/plain; charset="utf-8" The mps2 board creates several TYPE_OR_IRQ gates for UART overflow, per-UART tx/rx, and SPI interrupts. Parent them under the machine so they get canonical paths. The 282/325 pair sit on mutually-exclusive switch arms, so a single "uart-orgate" name is sufficient; the loop-created gates use "[*]" auto-indexing. AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/arm/mps2.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/hw/arm/mps2.c b/hw/arm/mps2.c index 1dec4a5d4d..1032f47cb8 100644 --- a/hw/arm/mps2.c +++ b/hw/arm/mps2.c @@ -279,7 +279,7 @@ static void mps2_common_init(MachineState *machine) Object *orgate; DeviceState *orgate_dev; =20 - orgate =3D object_new(TYPE_OR_IRQ); + orgate =3D object_new_child(OBJECT(mms), "uart-orgate", TYPE_OR_IR= Q); object_property_set_int(orgate, "num-lines", 6, &error_fatal); qdev_realize(DEVICE(orgate), NULL, &error_fatal); orgate_dev =3D DEVICE(orgate); @@ -322,7 +322,7 @@ static void mps2_common_init(MachineState *machine) Object *orgate; DeviceState *orgate_dev; =20 - orgate =3D object_new(TYPE_OR_IRQ); + orgate =3D object_new_child(OBJECT(mms), "uart-orgate", TYPE_OR_IR= Q); object_property_set_int(orgate, "num-lines", 10, &error_fatal); qdev_realize(DEVICE(orgate), NULL, &error_fatal); orgate_dev =3D DEVICE(orgate); @@ -338,7 +338,8 @@ static void mps2_common_init(MachineState *machine) DeviceState *txrx_orgate_dev, *dev; SysBusDevice *s; =20 - txrx_orgate =3D object_new(TYPE_OR_IRQ); + txrx_orgate =3D object_new_child(OBJECT(mms), "uart-txrx-orgat= e[*]", + TYPE_OR_IRQ); object_property_set_int(txrx_orgate, "num-lines", 2, &error_fa= tal); qdev_realize(DEVICE(txrx_orgate), NULL, &error_fatal); txrx_orgate_dev =3D DEVICE(txrx_orgate); @@ -430,7 +431,7 @@ static void mps2_common_init(MachineState *machine) Object *orgate; int j; =20 - orgate =3D object_new(TYPE_OR_IRQ); + orgate =3D object_new_child(OBJECT(mms), "spi-orgate[*]", TYPE_OR_= IRQ); object_property_set_int(orgate, "num-lines", 2, &error_fatal); orgate_dev =3D DEVICE(orgate); qdev_realize(orgate_dev, NULL, &error_fatal); --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412778; cv=none; d=zohomail.com; s=zohoarc; b=E9uMOxQL/sbfbap7v2Fpwy1Z2Sjk7/uCyEuiLhCtU0GxIXhcTouf+Rm982FdhbT4Wiu/bxIyP8A77rUytfaOLPaxPSA0Twm5Nj5v/BefkhL33TxFrBjqnstEjKKX8KiZVV2+q0Z6bWEvISBWWVTvWHeEqbt5Gn5/Wiwbw31hvtk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412778; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=OsHkueJbfgT/bnymqWSa3LbLbRvkv1mQV9LDHX2G+q4=; b=loxYLZYUrIT1o+tlh1JAxPHc/nqCbPp0GBLZecDLFI+RTEJMbhJRdvefgJ/2S0QA4+Wqc+X8ma3/BzDBpD1JshPRdbUR5BGOmEBevH2J0F1DzG7tV93zlMXOTCUcIV9uJ4/yylmfZpSz+XxeG2fssfOYGZW3tYXkMfBwa65XAvs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412778057792.2981863037031; Sat, 18 Jul 2026 15:12:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlDH3-0008EA-Ef; Sat, 18 Jul 2026 18:12:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDH2-0008Da-MV; Sat, 18 Jul 2026 18:12:44 -0400 Received: from pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.246.1.125]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDH1-0006zK-2S; Sat, 18 Jul 2026 18:12:44 -0400 Received: from ip-10-5-0-115.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.0.115]) by internal-pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:12:40 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.51:25084] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.58.199:2525] with esmtp (Farcaster) id 51c9281e-ef86-4fd4-9699-e90463d7fc94; Sat, 18 Jul 2026 22:12:39 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB001.ant.amazon.com (10.250.64.248) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:12:39 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:12:29 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412763; x=1815948763; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=OsHkueJbfgT/bnymqWSa3LbLbRvkv1mQV9LDHX2G+q4=; b=AY+dfxIypdlMmELQTCuXeQkNyFOa01qwmUERA8KZLRwth9txCxrUYx7j 0e8mz701AAECipI0Kdi3f6N2ArrCv/eU4z99MkgR0YFU93Ccg4v6/T44E Kixwp3e7MhVetLkQUk50QsJQh6x2BLMWQQ4Nvsbrtp7c/hFfXRdvACvTM xjkc3VAStuHKTU/gBx0msySUSvtq5EsXZY+VpicDD9X+kqP+zpYcitC8x 0gRj9urd9K9gzFl31ldaIQJQbM0ZShgwLhO0yDOm3CykIMtuiaEjWz7vG 43C5mGs4JYT2NgcoU/cnP1v9i70cAJVOMJa34uFdi+2sO9tt/2SeBofvl w==; X-CSE-ConnectionGUID: TkkE505hTG2cdEbedzbFiA== X-CSE-MsgGUID: x5KvxMnYQDWNBLgL7Fgkig== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23928118" X-Farcaster-Flow-ID: 51c9281e-ef86-4fd4-9699-e90463d7fc94 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 128/137] hw/arm/digic: Parent the DIGIC SoC under the machine Date: Sat, 18 Jul 2026 21:36:43 +0000 Message-ID: <20260718213652.37673-129-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D033UWC003.ant.amazon.com (10.13.139.217) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.246.1.125; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412780519158500 Content-Type: text/plain; charset="utf-8" Bring digic in line with cubieboard/orangepi/bpim2u/imx6ul/imx7, which all parent their SoC as /machine/soc. AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/arm/digic_boards.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hw/arm/digic_boards.c b/hw/arm/digic_boards.c index 92b66f34f7..bdc5f7324b 100644 --- a/hw/arm/digic_boards.c +++ b/hw/arm/digic_boards.c @@ -50,7 +50,8 @@ typedef struct DigicBoard { static void digic4_board_init(MachineState *machine, DigicBoard *board) { Error *err =3D NULL; - DigicState *s =3D DIGIC(object_new(TYPE_DIGIC)); + DigicState *s =3D DIGIC(object_new_child(OBJECT(machine), "soc", + TYPE_DIGIC)); MachineClass *mc =3D MACHINE_GET_CLASS(machine); =20 if (machine->ram_size !=3D mc->default_ram_size) { --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412813; cv=none; d=zohomail.com; s=zohoarc; b=fOm6qlH7k5gvbDWnGxiaL1O9oyev07JAJl1bkSgeo/HkTlGj951fAVjfYAbxRwlScrA4kG72bL/jorVr4soN96xx7+vA2DuWLL2JJDz3yOg75dbD1XqQ3FBR++eW6y2SCDOfxs/hsp+Lf2BsE+zDKZOgCYBbrVJhlNyXoR+ctsg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412813; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=5Ld31kk1dlnOq4h160RaWOxPVTIThb2tXGz29don+NU=; b=WgCPM0Tb7Pnuw7Li0DjICR4Zk4gFeV0hk4mGUqoVAOCWY8urMEkVFX8fFGoxFVDS7CZdrZh9sYV7JMmfxRXy44EmWz3WvndFZRLvwxqTbAcpBw/nqX0Ee63x81qLVAwVgxp9cTighQTR2sEMoSOQvzU8CpjflhEDNHPxehcL0P8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178441281316987.81904364819525; Sat, 18 Jul 2026 15:13:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlDHb-0001Dy-7U; Sat, 18 Jul 2026 18:13:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDHZ-00018y-IN; Sat, 18 Jul 2026 18:13:17 -0400 Received: from pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.246.1.125]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDHX-00071V-I0; Sat, 18 Jul 2026 18:13:17 -0400 Received: from ip-10-5-0-115.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.0.115]) by internal-pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:13:11 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.51:30802] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.48.250:2525] with esmtp (Farcaster) id adbeb977-3668-47fd-9933-01584588108b; Sat, 18 Jul 2026 22:13:11 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC002.ant.amazon.com (10.250.64.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:13:10 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:13:01 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412795; x=1815948795; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=5Ld31kk1dlnOq4h160RaWOxPVTIThb2tXGz29don+NU=; b=VXQIxGxreTzv5g2A+NrkqR9JRBxaMBYj9ElsWYW0wUai0fe+9CWo+yLk y5p+XTu9y9MpBDYaZW+TFGUZhfGoA1bWljWANWAeiXCyGJjh+yRmDrw9k vektg0TNZI5buV2JBgxjxG3bUmHk8aDPT7R0tBNNGvZdE9hN5l1jbbJkb c9v14XWzkaJNrFR+CkU9guIqL7mCos4w4QRtirHjRvC7Z6TrA6BoySP5F 3G8XZYheKcItwM+e9QEVgTWZC2DxTGLx/WgI8JdqvbLeFcVvRNFcJ8ssV IkVdZlAwdG3zpmkMorPjM6a/AcEY8RDd2E74AaTa2y8m+K2xj/MQxT7ic A==; X-CSE-ConnectionGUID: ofpinMAxRrOFR1ofWO9CXA== X-CSE-MsgGUID: A+zUsK4qQ+6lFO1/vRu6nQ== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23928158" X-Farcaster-Flow-ID: adbeb977-3668-47fd-9933-01584588108b From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 129/137] hw/microblaze: Parent the CPU under the machine Date: Sat, 18 Jul 2026 21:36:44 +0000 Message-ID: <20260718213652.37673-130-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D031UWC002.ant.amazon.com (10.13.139.212) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.246.1.125; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412814860158500 Content-Type: text/plain; charset="utf-8" Both petalogix boards create exactly one MicroBlaze CPU via object_new(); parent it as /machine/cpu[0] like every other single-CPU board. AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/microblaze/petalogix_ml605_mmu.c | 3 ++- hw/microblaze/petalogix_s3adsp1800_mmu.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/hw/microblaze/petalogix_ml605_mmu.c b/hw/microblaze/petalogix_= ml605_mmu.c index 26470b0251..cfc76bf518 100644 --- a/hw/microblaze/petalogix_ml605_mmu.c +++ b/hw/microblaze/petalogix_ml605_mmu.c @@ -82,7 +82,8 @@ petalogix_ml605_init(MachineState *machine) qemu_irq irq[32]; =20 /* init CPUs */ - cpu =3D MICROBLAZE_CPU(object_new(TYPE_MICROBLAZE_CPU)); + cpu =3D MICROBLAZE_CPU(object_new_child(OBJECT(machine), "cpu[0]", + TYPE_MICROBLAZE_CPU)); object_property_set_str(OBJECT(cpu), "version", "8.10.a", &error_abort= ); /* Use FPU but don't use floating point conversion and square * root instructions diff --git a/hw/microblaze/petalogix_s3adsp1800_mmu.c b/hw/microblaze/petal= ogix_s3adsp1800_mmu.c index 83bf325b2b..82e486e716 100644 --- a/hw/microblaze/petalogix_s3adsp1800_mmu.c +++ b/hw/microblaze/petalogix_s3adsp1800_mmu.c @@ -85,7 +85,8 @@ petalogix_s3adsp1800_init(MachineState *machine) MemoryRegion *sysmem =3D get_system_memory(); EndianMode endianness =3D psms->endianness; =20 - cpu =3D MICROBLAZE_CPU(object_new(TYPE_MICROBLAZE_CPU)); + cpu =3D MICROBLAZE_CPU(object_new_child(OBJECT(machine), "cpu[0]", + TYPE_MICROBLAZE_CPU)); object_property_set_str(OBJECT(cpu), "version", "7.10.d", &error_abort= ); object_property_set_bool(OBJECT(cpu), "little-endian", endianness =3D=3D ENDIAN_MODE_LITTLE, &error_= abort); --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412822; cv=none; d=zohomail.com; s=zohoarc; b=akRO69dWnoIi10bCJeiqAU1qA9TlWbLUgD5b/8DpNP3MBL0aTvkYEGZ3jke+o7Xiiylr6v9Px9KebWUqAEO8X0OyxCX05UuU21VcR72HIkPxAciLdgu05g3LIp0EFl4SGckRl1csVfKzjQqxWopFLfecTuAmskhabuqAh/6FGAU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412822; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=2rUYyvp0yoC0czB99xFILg02Yh5zYj/aKfGpiYZESzM=; b=KldeLxDU9APDnwEPS3CKjLVu0ThWeQsm3QiXZAoxHEWYrO1T6kPPu+uPYhOCqmw/bgIXhSLmYEl1LtuQQHXkMGGSC4kUrEvh+fm/0st4mV77MeBE7u8i5mzVGpbu9Vp1/a1f0ZJAM1BmmwUD4aGcUl7p+rB5B+HW1+MnAaRn6MQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412822587842.7920863500578; Sat, 18 Jul 2026 15:13:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlDHn-0001hb-No; Sat, 18 Jul 2026 18:13:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDHm-0001fM-My; Sat, 18 Jul 2026 18:13:30 -0400 Received: from pdx-out-012.esa.us-west-2.outbound.mail-perimeter.amazon.com ([35.162.73.231]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDHk-000727-FQ; Sat, 18 Jul 2026 18:13:30 -0400 Received: from ip-10-5-9-48.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.9.48]) by internal-pdx-out-012.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:13:21 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.182:2751] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.19.34:2525] with esmtp (Farcaster) id cd0c56f9-b413-413d-a759-4da03a24c6ff; Sat, 18 Jul 2026 22:13:20 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA001.ant.amazon.com (10.250.64.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:13:20 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:13:10 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412808; x=1815948808; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=2rUYyvp0yoC0czB99xFILg02Yh5zYj/aKfGpiYZESzM=; b=ZaN9SDnCTDSPHH0m7TunTz5E67MosXvxErJO92gZfIQU90o3G7dGpgVh a3yqtHAxLHt6JLT28Ph4sU/asWtFoVsZUFxwNC4bmZFoAQv0Ej018J63+ dyI+mYqec1RqYkgsIvMNAwIt10CgGh0xcLFEfLdNGEv3gRtAtvyZ5ae8L Bpd+t6djYCkvvda9yu7mUdzHg2c0NxEbVPm0QGcl4yjxrQyqkYUBNq/c7 gOn3hgP4xf3y9KQRXAaMmKyff/fUnyITvhime3Jcva//AUKkube18S7y/ A/FMLLlYkTYkVdcyaPQBfx3KLCgThFSzHaUb5n0xEXdnO1y94Euuvqz4H g==; X-CSE-ConnectionGUID: KYZX85irQVyYxz7Sek0jjQ== X-CSE-MsgGUID: yEX/J5Y7QmeM8bn6IbxGTw== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23716960" X-Farcaster-Flow-ID: cd0c56f9-b413-413d-a759-4da03a24c6ff From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 130/137] hw: Pair object_initialize_child() with plain realize() Date: Sat, 18 Jul 2026 21:36:45 +0000 Message-ID: <20260718213652.37673-131-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D031UWC002.ant.amazon.com (10.13.139.212) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=35.162.73.231; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-012.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412824768158500 Content-Type: text/plain; charset="utf-8" A number of composite devices and boards create embedded children via object_initialize_child() (or object_new_with_props()) and then realize them via *_realize_and_unref(). The child<> property already holds the sole reference; the extra unref drops it and the object survives only because bus_add_child() takes a reference of its own. Use plain sysbus_realize()/qdev_realize() so the parent's child<> keeps the reference it is documented to hold. AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/arm/imx8mm-evk.c | 2 +- hw/arm/imx8mp-evk.c | 2 +- hw/arm/mps2.c | 2 +- hw/display/sm501.c | 2 +- hw/m68k/q800.c | 6 +++--- hw/misc/macio/macio.c | 2 +- hw/net/imx_fec.c | 2 +- hw/net/lan9118.c | 2 +- hw/nubus/nubus-virtio-mmio.c | 2 +- hw/pci-host/mv64361.c | 2 +- hw/xen/xen-pvh-common.c | 2 +- 11 files changed, 13 insertions(+), 13 deletions(-) diff --git a/hw/arm/imx8mm-evk.c b/hw/arm/imx8mm-evk.c index 72fa1930ae..84a1ae6aa4 100644 --- a/hw/arm/imx8mm-evk.c +++ b/hw/arm/imx8mm-evk.c @@ -80,7 +80,7 @@ static void imx8mm_evk_init(MachineState *machine) s =3D FSL_IMX8MM(object_new_with_props(TYPE_FSL_IMX8MM, OBJECT(machine= ), "soc", &error_fatal, NULL)); object_property_set_uint(OBJECT(s), "fec1-phy-num", 1, &error_fatal); - sysbus_realize_and_unref(SYS_BUS_DEVICE(s), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(s), &error_fatal); =20 memory_region_add_subregion(get_system_memory(), FSL_IMX8MM_RAM_START, machine->ram); diff --git a/hw/arm/imx8mp-evk.c b/hw/arm/imx8mp-evk.c index 6116e6e9dc..776aa22b9a 100644 --- a/hw/arm/imx8mp-evk.c +++ b/hw/arm/imx8mp-evk.c @@ -93,7 +93,7 @@ static void imx8mp_evk_init(MachineState *machine) object_property_set_link(OBJECT(&s->soc), bus_name, OBJECT(s->canbus[i]), &error_fatal); } - sysbus_realize_and_unref(SYS_BUS_DEVICE(&s->soc), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(&s->soc), &error_fatal); =20 memory_region_add_subregion(get_system_memory(), FSL_IMX8MP_RAM_START, machine->ram); diff --git a/hw/arm/mps2.c b/hw/arm/mps2.c index 1032f47cb8..3de11b19a9 100644 --- a/hw/arm/mps2.c +++ b/hw/arm/mps2.c @@ -379,7 +379,7 @@ static void mps2_common_init(MachineState *machine) TYPE_CMSDK_APB_TIMER); sbd =3D SYS_BUS_DEVICE(&mms->timer[i]); qdev_connect_clock_in(DEVICE(&mms->timer[i]), "pclk", mms->sysclk); - sysbus_realize_and_unref(sbd, &error_fatal); + sysbus_realize(sbd, &error_fatal); sysbus_mmio_map(sbd, 0, base); sysbus_connect_irq(sbd, 0, qdev_get_gpio_in(armv7m, irqno)); } diff --git a/hw/display/sm501.c b/hw/display/sm501.c index 56075a0303..4256ee0318 100644 --- a/hw/display/sm501.c +++ b/hw/display/sm501.c @@ -2091,7 +2091,7 @@ static void sm501_realize_sysbus(DeviceState *dev, Er= ror **errp) sysbus_init_mmio(sbd, &s->state.mmio_region); =20 /* bridge to usb host emulation module */ - sysbus_realize_and_unref(SYS_BUS_DEVICE(&s->ohci), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(&s->ohci), &error_fatal); memory_region_add_subregion(&s->state.mmio_region, SM501_USB_HOST, sysbus_mmio_get_region(SYS_BUS_DEVICE(&s->ohci), 0)= ); sysbus_pass_irq(sbd, SYS_BUS_DEVICE(&s->ohci)); diff --git a/hw/m68k/q800.c b/hw/m68k/q800.c index 677dc4ad80..9fc186737b 100644 --- a/hw/m68k/q800.c +++ b/hw/m68k/q800.c @@ -324,14 +324,14 @@ static void q800_machine_init(MachineState *machine) object_initialize_child(OBJECT(machine), "djmemc", &m->djmemc, TYPE_DJMEMC); sysbus =3D SYS_BUS_DEVICE(&m->djmemc); - sysbus_realize_and_unref(sysbus, &error_fatal); + sysbus_realize(sysbus, &error_fatal); memory_region_add_subregion(&m->macio, DJMEMC_BASE - IO_BASE, sysbus_mmio_get_region(sysbus, 0)); =20 /* IOSB subsystem */ object_initialize_child(OBJECT(machine), "iosb", &m->iosb, TYPE_IOSB); sysbus =3D SYS_BUS_DEVICE(&m->iosb); - sysbus_realize_and_unref(sysbus, &error_fatal); + sysbus_realize(sysbus, &error_fatal); memory_region_add_subregion(&m->macio, IOSB_BASE - IO_BASE, sysbus_mmio_get_region(sysbus, 0)); =20 @@ -497,7 +497,7 @@ static void q800_machine_init(MachineState *machine) qdev_prop_set_string(DEVICE(&m->asc), "audiodev", machine->audiode= v); } sysbus =3D SYS_BUS_DEVICE(&m->asc); - sysbus_realize_and_unref(sysbus, &error_fatal); + sysbus_realize(sysbus, &error_fatal); memory_region_add_subregion(&m->macio, ASC_BASE - IO_BASE, sysbus_mmio_get_region(sysbus, 0)); sysbus_connect_irq(sysbus, 0, qdev_get_gpio_in(DEVICE(&m->glue), diff --git a/hw/misc/macio/macio.c b/hw/misc/macio/macio.c index 2813705c03..a26babfbc2 100644 --- a/hw/misc/macio/macio.c +++ b/hw/misc/macio/macio.c @@ -274,7 +274,7 @@ static void macio_newworld_realize(PCIDevice *d, Error = **errp) /* OpenPIC */ qdev_prop_set_uint32(pic_dev, "model", OPENPIC_MODEL_KEYLARGO); sbd =3D SYS_BUS_DEVICE(&ns->pic); - sysbus_realize_and_unref(sbd, &error_fatal); + sysbus_realize(sbd, &error_fatal); memory_region_add_subregion(&s->bar, 0x40000, sysbus_mmio_get_region(sbd, 0)); =20 diff --git a/hw/net/imx_fec.c b/hw/net/imx_fec.c index 38e0f64462..fddb0bbba3 100644 --- a/hw/net/imx_fec.c +++ b/hw/net/imx_fec.c @@ -1207,7 +1207,7 @@ static void imx_eth_realize(DeviceState *dev, Error *= *errp) =20 qemu_init_irq_child(OBJECT(s), "mii-irq", &s->mii_irq, imx_phy_update_= irq, s, 0); object_initialize_child(OBJECT(s), "mii", &s->mii, TYPE_LAN9118_PHY); - if (!sysbus_realize_and_unref(SYS_BUS_DEVICE(&s->mii), errp)) { + if (!sysbus_realize(SYS_BUS_DEVICE(&s->mii), errp)) { return; } qdev_connect_gpio_out(DEVICE(&s->mii), 0, &s->mii_irq); diff --git a/hw/net/lan9118.c b/hw/net/lan9118.c index 2003280fc4..fa425bb5bb 100644 --- a/hw/net/lan9118.c +++ b/hw/net/lan9118.c @@ -1276,7 +1276,7 @@ static void lan9118_realize(DeviceState *dev, Error *= *errp) =20 qemu_init_irq_child(OBJECT(s), "mii-irq", &s->mii_irq, lan9118_update_= irq, s, 0); object_initialize_child(OBJECT(s), "mii", &s->mii, TYPE_LAN9118_PHY); - if (!sysbus_realize_and_unref(SYS_BUS_DEVICE(&s->mii), errp)) { + if (!sysbus_realize(SYS_BUS_DEVICE(&s->mii), errp)) { return; } qdev_connect_gpio_out(DEVICE(&s->mii), 0, &s->mii_irq); diff --git a/hw/nubus/nubus-virtio-mmio.c b/hw/nubus/nubus-virtio-mmio.c index 63aeca5b12..29008ea6c2 100644 --- a/hw/nubus/nubus-virtio-mmio.c +++ b/hw/nubus/nubus-virtio-mmio.c @@ -51,7 +51,7 @@ static void nubus_virtio_mmio_realize(DeviceState *dev, E= rror **errp) for (i =3D 0; i < NUBUS_VIRTIO_MMIO_NUM_DEVICES; i++) { sbd =3D SYS_BUS_DEVICE(&s->virtio_mmio[i]); qdev_prop_set_bit(DEVICE(sbd), "force-legacy", false); - if (!sysbus_realize_and_unref(sbd, errp)) { + if (!sysbus_realize(sbd, errp)) { return; } =20 diff --git a/hw/pci-host/mv64361.c b/hw/pci-host/mv64361.c index 3ef51fef1b..8c3dadd490 100644 --- a/hw/pci-host/mv64361.c +++ b/hw/pci-host/mv64361.c @@ -874,7 +874,7 @@ static void mv64361_realize(DeviceState *dev, Error **e= rrp) TYPE_MV64361_PCI); DeviceState *pci =3D DEVICE(&s->pci[i]); qdev_prop_set_uint8(pci, "index", i); - sysbus_realize_and_unref(SYS_BUS_DEVICE(pci), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(pci), &error_fatal); } sysbus_init_irq(SYS_BUS_DEVICE(dev), &s->cpu_irq); qdev_init_gpio_in_named(dev, mv64361_gpp_irq, "gpp", 32); diff --git a/hw/xen/xen-pvh-common.c b/hw/xen/xen-pvh-common.c index 76893c8fcf..9ced68afea 100644 --- a/hw/xen/xen-pvh-common.c +++ b/hw/xen/xen-pvh-common.c @@ -230,7 +230,7 @@ static inline void xenpvh_gpex_init(XenPVHMachineState = *s, object_initialize_child(OBJECT(s), "gpex", &s->pci.gpex, TYPE_GPEX_HOST); dev =3D DEVICE(&s->pci.gpex); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); =20 ecam_reg =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0); memory_region_add_subregion(sysmem, s->cfg.pci_ecam.base, ecam_reg); --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412822; cv=none; d=zohomail.com; s=zohoarc; b=FUJAJmzJGhk7lqOS4dFqA3Asjs2PDKMn51WL5T3NeK6xjgHlmMo1J+SYFpxHKbKWnchSFaUYXL9GaX52gHFgql57/RiYU+B1eK0AjEMQQxeBgYa6TxrpZiJGYpT+UhpVjvUQsAMcRnaelkmZmL01PRzfQ/zLfz+70d36ToGDebw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412822; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=LNz3ufHunhJZOUFBwj7vUKL20dfizWghoGrMfjW8j/g=; b=eoU6hxBUP+RTy60AMbe8X1A5BpyNMnEJCyppdX6GQKzuZkimmSsrP4u6tDjxG+B6q7ODO/wc5nCoP5qU1j2YPk64AI+1fLtR7LSpF+oJhCdmzVrUJNTR1fOq9oAoe5elDZeJjPo4TfwNDa5q7WvAYY7Q8CofookxQcE5WY4fDpk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412822587429.2168166923491; Sat, 18 Jul 2026 15:13:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlDHw-00025o-1o; Sat, 18 Jul 2026 18:13:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDHu-0001yM-BF; Sat, 18 Jul 2026 18:13:38 -0400 Received: from pdx-out-007.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.34.181.151]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDHr-000732-AD; Sat, 18 Jul 2026 18:13:38 -0400 Received: from ip-10-5-9-48.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.9.48]) by internal-pdx-out-007.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:13:30 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.105:17990] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.41.246:2525] with esmtp (Farcaster) id 82250570-2530-4063-b2fd-1333caa6d2a8; Sat, 18 Jul 2026 22:13:30 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC001.ant.amazon.com (10.250.64.174) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:13:30 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:13:20 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412815; x=1815948815; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=LNz3ufHunhJZOUFBwj7vUKL20dfizWghoGrMfjW8j/g=; b=ObjPaUbwjBU+j//TqOyHA+Jm7BErBNCC+QVsCtjvyJccLkilbqazFPpW q7c1DqXVxI5jEal3ai+rLmFMB7iL0AXc9F7IJ2CRfvMmvxZJ0Ytw5sq14 80DYMXu1pytwX7hq3O6+VICE3BwwB4ZwYgTLOfC2uDCCc6PmWYcqzXr7U j/Bpg6tx4ErOiKha0h6uqgvAxcIfz1wPbXrLAPn5LB1C5MTi042yL2zKp 1zW6rYFcEgNNjniYg50tabdxS4IcdVUxC5fPyXvHz/nS+UVVPSR5norzJ zMJ6+FjF4lKRV/B/kUlwgMdpcapS8WH9tttfoOBeAya4hI22lgOgHHhjy g==; X-CSE-ConnectionGUID: 5fMmzDPwSEOU4z85GrCv7A== X-CSE-MsgGUID: +0kJNXe/SJCsGV/yuAnkfA== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23911538" X-Farcaster-Flow-ID: 82250570-2530-4063-b2fd-1333caa6d2a8 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 131/137] hw: Parent board-created CPUs under the machine Date: Sat, 18 Jul 2026 21:36:46 +0000 Message-ID: <20260718213652.37673-132-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D031UWC002.ant.amazon.com (10.13.139.212) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.34.181.151; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-007.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.01, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412824788158500 Content-Type: text/plain; charset="utf-8" A number of boards create CPUs via object_new(cpu_type) followed by property setting and qdev_realize(NULL), rather than through cpu_create(). These CPUs currently fall into /machine/unattached via the device_set_realized() fallback. Parent them explicitly under the machine (or the CPS/SoC container that owns them) as "cpu[*]", matching the naming convention used by cpu_create(). The subsequent object_unref() and qdev_realize_and_unref() calls are converted to plain qdev_realize() (or dropped) since the parent's child<> property now holds the reference. Error paths switch to object_unparent(). The transient introspection object_new() in hw/arm/virt.c machvirt_init() (probing pa_bits) is deliberately left as-is; it is unref'd immediately without being realized. hw/arm: integratorcp mps3r realview sbsa-ref versatilepb vexpress virt xilinx-zynq hw/hexagon: hexagon_dsp virt hw/i386: x86-common xen-pvh hw/loongarch: virt hw/mips: cps hw/ppc: e500 spapr (cpu-core) hw/riscv: cps microblaze-v-generic hw/s390x: s390-virtio-ccw hw/sparc: leon3 sun4m hw/sparc64: sparc64 Hot-plugged CPUs (via -device / device_add) continue to be parented under /machine/peripheral by the user's id=3D; only cold-boot board-created CPUs move under /machine/cpu[*]. Reviewed-by: Brian Cain # hexagon only Acked-by: Bernhard Beschow # e500 only AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/arm/integratorcp.c | 3 ++- hw/arm/mps3r.c | 4 ++-- hw/arm/realview.c | 3 ++- hw/arm/sbsa-ref.c | 5 +++-- hw/arm/versatilepb.c | 3 ++- hw/arm/vexpress.c | 3 ++- hw/arm/virt.c | 5 +++-- hw/arm/xilinx_zynq.c | 3 ++- hw/hexagon/hexagon_dsp.c | 5 +++-- hw/hexagon/virt.c | 5 +++-- hw/i386/x86-common.c | 9 ++++----- hw/i386/xen/xen-pvh.c | 5 ++--- hw/loongarch/virt.c | 6 ++++-- hw/mips/cps.c | 5 +++-- hw/ppc/e500.c | 5 +++-- hw/ppc/spapr.c | 5 +++-- hw/riscv/cps.c | 5 +++-- hw/riscv/microblaze-v-generic.c | 3 ++- hw/s390x/s390-virtio-ccw.c | 16 +++++++--------- hw/sparc/leon3.c | 3 ++- hw/sparc/sun4m.c | 5 +++-- hw/sparc64/sparc64.c | 3 ++- 22 files changed, 62 insertions(+), 47 deletions(-) diff --git a/hw/arm/integratorcp.c b/hw/arm/integratorcp.c index 81c0bce8f9..30a6a940c5 100644 --- a/hw/arm/integratorcp.c +++ b/hw/arm/integratorcp.c @@ -598,7 +598,8 @@ static void integratorcp_init(MachineState *machine) DriveInfo *dinfo; int i; =20 - cpuobj =3D object_new(machine->cpu_type); + cpuobj =3D object_new_child(OBJECT(machine), "cpu[0]", + machine->cpu_type); =20 /* By default ARM1176 CPUs have EL3 enabled. This board does not * currently support EL3 so the CPU EL3 property is disabled before diff --git a/hw/arm/mps3r.c b/hw/arm/mps3r.c index d6c29c1172..dd434eaefd 100644 --- a/hw/arm/mps3r.c +++ b/hw/arm/mps3r.c @@ -388,13 +388,13 @@ static void mps3r_common_init(MachineState *machine) memory_region_add_subregion_overlap(&mms->cpu_sysmem[i], 0, &mms->sysmem_alias[i], -1); =20 - mms->cpu[i] =3D object_new(machine->cpu_type); + mms->cpu[i] =3D object_new_child(OBJECT(mms), "cpu[*]", + machine->cpu_type); object_property_set_link(mms->cpu[i], "memory", OBJECT(&mms->cpu_sysmem[i]), &error_abort= ); object_property_set_int(mms->cpu[i], "reset-cbar", PERIPHBASE, &error_abort); qdev_realize(DEVICE(mms->cpu[i]), NULL, &error_fatal); - object_unref(mms->cpu[i]); =20 /* Per-CPU RAM */ memory_region_init_ram(&mms->cpu_ram[i], OBJECT(mms), ramname, diff --git a/hw/arm/realview.c b/hw/arm/realview.c index 99591e7d80..f938367131 100644 --- a/hw/arm/realview.c +++ b/hw/arm/realview.c @@ -119,7 +119,8 @@ static void realview_init(MachineState *machine, } =20 for (n =3D 0; n < smp_cpus; n++) { - Object *cpuobj =3D object_new(machine->cpu_type); + Object *cpuobj =3D object_new_child(OBJECT(machine), "cpu[*]", + machine->cpu_type); =20 /* By default A9,A15 and ARM1176 CPUs have EL3 enabled. This board * does not currently support EL3 so the CPU EL3 property is disab= led diff --git a/hw/arm/sbsa-ref.c b/hw/arm/sbsa-ref.c index 1df8efd207..eeb55b5334 100644 --- a/hw/arm/sbsa-ref.c +++ b/hw/arm/sbsa-ref.c @@ -783,7 +783,9 @@ static void sbsa_ref_init(MachineState *machine) break; } =20 - cpuobj =3D object_new(possible_cpus->cpus[n].type); + g_autofree char *cpu_name =3D g_strdup_printf("cpu[%d]", n); + cpuobj =3D object_new_child(OBJECT(sms), cpu_name, + possible_cpus->cpus[n].type); object_property_set_int(cpuobj, "mp-affinity", possible_cpus->cpus[n].arch_id, NULL); =20 @@ -808,7 +810,6 @@ static void sbsa_ref_init(MachineState *machine) OBJECT(secure_sysmem), &error_abort); =20 qdev_realize(DEVICE(cpuobj), NULL, &error_fatal); - object_unref(cpuobj); } =20 memory_region_add_subregion(sysmem, sbsa_ref_memmap[SBSA_MEM].base, diff --git a/hw/arm/versatilepb.c b/hw/arm/versatilepb.c index f68c4765c6..8d93fff207 100644 --- a/hw/arm/versatilepb.c +++ b/hw/arm/versatilepb.c @@ -208,7 +208,8 @@ static void versatile_init(MachineState *machine, int b= oard_id) exit(1); } =20 - cpuobj =3D object_new(machine->cpu_type); + cpuobj =3D object_new_child(OBJECT(machine), "cpu[0]", + machine->cpu_type); =20 /* By default ARM1176 CPUs have EL3 enabled. This board does not * currently support EL3 so the CPU EL3 property is disabled before diff --git a/hw/arm/vexpress.c b/hw/arm/vexpress.c index f877ccf330..986525b9ce 100644 --- a/hw/arm/vexpress.c +++ b/hw/arm/vexpress.c @@ -219,7 +219,8 @@ static void init_cpus(MachineState *ms, const char *cpu= _type, =20 /* Create the actual CPUs */ for (n =3D 0; n < smp_cpus; n++) { - Object *cpuobj =3D object_new(cpu_type); + Object *cpuobj =3D object_new_child(qdev_get_machine(), "cpu[*]", + cpu_type); =20 if (!secure) { object_property_set_bool(cpuobj, "has_el3", false, NULL); diff --git a/hw/arm/virt.c b/hw/arm/virt.c index beb2d481ce..f4f2643b49 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -3039,7 +3039,9 @@ static void machvirt_init(MachineState *machine) break; } =20 - cpuobj =3D object_new(possible_cpus->cpus[n].type); + g_autofree char *cpu_name =3D g_strdup_printf("cpu[%d]", n); + cpuobj =3D object_new_child(OBJECT(vms), cpu_name, + possible_cpus->cpus[n].type); object_property_set_int(cpuobj, "mp-affinity", possible_cpus->cpus[n].arch_id, NULL); =20 @@ -3139,7 +3141,6 @@ static void machvirt_init(MachineState *machine) } =20 qdev_realize(DEVICE(cpuobj), NULL, &error_fatal); - object_unref(cpuobj); } =20 /* Now we've created the CPUs we can see if they have the hypvirt time= r */ diff --git a/hw/arm/xilinx_zynq.c b/hw/arm/xilinx_zynq.c index 441289e63f..a2dcdd422d 100644 --- a/hw/arm/xilinx_zynq.c +++ b/hw/arm/xilinx_zynq.c @@ -222,7 +222,8 @@ static void zynq_init(MachineState *machine) } =20 for (n =3D 0; n < smp_cpus; n++) { - Object *cpuobj =3D object_new(machine->cpu_type); + Object *cpuobj =3D object_new_child(OBJECT(machine), "cpu[*]", + machine->cpu_type); =20 object_property_set_int(cpuobj, "midr", ZYNQ_BOARD_MIDR, &error_fatal); diff --git a/hw/hexagon/hexagon_dsp.c b/hw/hexagon/hexagon_dsp.c index 53dfe6741e..d78a987dca 100644 --- a/hw/hexagon/hexagon_dsp.c +++ b/hw/hexagon/hexagon_dsp.c @@ -143,7 +143,8 @@ static void hexagon_common_init(MachineState *machine, = Rev_t rev, sysbus_realize(SYS_BUS_DEVICE(tlb_dev), &error_fatal); =20 for (int i =3D 0; i < machine->smp.cpus; i++) { - HexagonCPU *cpu =3D HEXAGON_CPU(object_new(machine->cpu_type)); + HexagonCPU *cpu =3D HEXAGON_CPU(object_new_child(OBJECT(machine), = "cpu[*]", + machine->cpu_type)); qemu_register_reset(do_cpu_reset, cpu); =20 /* @@ -158,7 +159,7 @@ static void hexagon_common_init(MachineState *machine, = Rev_t rev, OBJECT(glob_regs_dev), &error_fatal); object_property_set_link(OBJECT(cpu), "tlb", OBJECT(tlb_dev), &error_fatal); - qdev_realize_and_unref(DEVICE(cpu), NULL, &error_fatal); + qdev_realize(DEVICE(cpu), NULL, &error_fatal); } =20 rom_add_blob_fixed_as("config_table.rom", &m_cfg->cfgtable, diff --git a/hw/hexagon/virt.c b/hw/hexagon/virt.c index fb23cda19f..48f1e35dd3 100644 --- a/hw/hexagon/virt.c +++ b/hw/hexagon/virt.c @@ -280,7 +280,8 @@ static void virt_init(MachineState *ms) =20 cpu0 =3D NULL; for (int i =3D 0; i < ms->smp.cpus; i++) { - HexagonCPU *cpu =3D HEXAGON_CPU(object_new(ms->cpu_type)); + HexagonCPU *cpu =3D HEXAGON_CPU(object_new_child(OBJECT(ms), "cpu[= *]", + ms->cpu_type)); qemu_register_reset(do_cpu_reset, cpu); =20 if (i =3D=3D 0) { @@ -300,7 +301,7 @@ static void virt_init(MachineState *ms) object_property_set_link(OBJECT(cpu), "tlb", OBJECT(tlb_dev), &error_fatal); =20 - qdev_realize_and_unref(DEVICE(cpu), NULL, &error_fatal); + qdev_realize(DEVICE(cpu), NULL, &error_fatal); } fdt_add_cpu_nodes(vms); clk_phandle =3D fdt_add_clocks(vms); diff --git a/hw/i386/x86-common.c b/hw/i386/x86-common.c index 151a67ee5f..5bbfee737e 100644 --- a/hw/i386/x86-common.c +++ b/hw/i386/x86-common.c @@ -55,15 +55,14 @@ static size_t pvh_start_addr; =20 static void x86_cpu_new(X86MachineState *x86ms, int64_t apic_id, Error **e= rrp) { - Object *cpu =3D object_new(MACHINE(x86ms)->cpu_type); + Object *cpu =3D object_new_child(OBJECT(x86ms), "cpu[*]", + MACHINE(x86ms)->cpu_type); =20 if (!object_property_set_uint(cpu, "apic-id", apic_id, errp)) { - goto out; + object_unparent(cpu); + return; } qdev_realize(DEVICE(cpu), NULL, errp); - -out: - object_unref(cpu); } =20 void x86_cpus_init(X86MachineState *x86ms, int default_cpu_version) diff --git a/hw/i386/xen/xen-pvh.c b/hw/i386/xen/xen-pvh.c index ab90c83a83..7aef48ad61 100644 --- a/hw/i386/xen/xen-pvh.c +++ b/hw/i386/xen/xen-pvh.c @@ -29,12 +29,11 @@ struct XenPVHx86State { static DeviceState *xen_pvh_cpu_new(MachineState *ms, int64_t apic_id) { - Object *cpu =3D object_new(ms->cpu_type); + Object *cpu =3D object_new_child(OBJECT(ms), "cpu[*]", + ms->cpu_type); =20 - object_property_add_child(OBJECT(ms), "cpu[*]", cpu); object_property_set_uint(cpu, "apic-id", apic_id, &error_fatal); qdev_realize(DEVICE(cpu), NULL, &error_fatal); - object_unref(cpu); =20 return DEVICE(cpu); } diff --git a/hw/loongarch/virt.c b/hw/loongarch/virt.c index 09c39140bd..8f0725f384 100644 --- a/hw/loongarch/virt.c +++ b/hw/loongarch/virt.c @@ -948,13 +948,15 @@ static void virt_init(MachineState *machine) /* Init CPUs */ mc->possible_cpu_arch_ids(machine); for (i =3D 0; i < machine->smp.cpus; i++) { - cpuobj =3D object_new(machine->cpu_type); + g_autofree char *cpu_name =3D g_strdup_printf("cpu[%d]", i); + cpuobj =3D object_new_child(OBJECT(machine), cpu_name, + machine->cpu_type); if (cpuobj =3D=3D NULL) { error_report("Fail to create object with type %s ", machine->cpu_type); exit(EXIT_FAILURE); } - qdev_realize_and_unref(DEVICE(cpuobj), NULL, &error_fatal); + qdev_realize(DEVICE(cpuobj), NULL, &error_fatal); } virt_check_dmsi(machine); fw_cfg_add_memory(machine); diff --git a/hw/mips/cps.c b/hw/mips/cps.c index 620ee972f8..b997608373 100644 --- a/hw/mips/cps.c +++ b/hw/mips/cps.c @@ -74,7 +74,8 @@ static void mips_cps_realize(DeviceState *dev, Error **er= rp) } =20 for (int i =3D 0; i < s->num_vp; i++) { - MIPSCPU *cpu =3D MIPS_CPU(object_new(s->cpu_type)); + MIPSCPU *cpu =3D MIPS_CPU(object_new_child(OBJECT(s), "cpu[*]", + s->cpu_type)); CPUMIPSState *env =3D &cpu->env; =20 object_property_set_bool(OBJECT(cpu), "big-endian", s->cpu_is_bige= ndian, @@ -87,7 +88,7 @@ static void mips_cps_realize(DeviceState *dev, Error **er= rp) /* All cores use the same clock tree */ qdev_connect_clock_in(DEVICE(cpu), "clk-in", s->clock); =20 - if (!qdev_realize_and_unref(DEVICE(cpu), NULL, errp)) { + if (!qdev_realize(DEVICE(cpu), NULL, errp)) { return; } =20 diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c index f3917c0755..a0eb25e956 100644 --- a/hw/ppc/e500.c +++ b/hw/ppc/e500.c @@ -941,7 +941,8 @@ void ppce500_init(MachineState *machine) PowerPCCPU *cpu; CPUState *cs; =20 - cpu =3D POWERPC_CPU(object_new(machine->cpu_type)); + cpu =3D POWERPC_CPU(object_new_child(OBJECT(machine), "cpu[*]", + machine->cpu_type)); env =3D &cpu->env; cs =3D CPU(cpu); =20 @@ -956,7 +957,7 @@ void ppce500_init(MachineState *machine) */ object_property_set_bool(OBJECT(cs), "start-powered-off", i !=3D 0, &error_abort); - qdev_realize_and_unref(DEVICE(cs), NULL, &error_fatal); + qdev_realize(DEVICE(cs), NULL, &error_fatal); =20 if (!firstenv) { firstenv =3D env; diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 9b6b5e7257..2719044414 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -2776,7 +2776,9 @@ static void spapr_init_cpus(SpaprMachineState *spapr) } =20 if (i < boot_cores_nr) { - Object *core =3D object_new(type); + g_autofree char *core_name =3D g_strdup_printf("cpu-core[%d]",= i); + Object *core =3D object_new_child(OBJECT(spapr), core_name, + type); int nr_threads =3D smp_threads; =20 /* Handle the partially filled core for older machine types */ @@ -2790,7 +2792,6 @@ static void spapr_init_cpus(SpaprMachineState *spapr) &error_fatal); qdev_realize(DEVICE(core), NULL, &error_fatal); =20 - object_unref(core); } } } diff --git a/hw/riscv/cps.c b/hw/riscv/cps.c index b6b30e05e1..2bf506b61a 100644 --- a/hw/riscv/cps.c +++ b/hw/riscv/cps.c @@ -63,13 +63,14 @@ static void riscv_cps_realize(DeviceState *dev, Error *= *errp) int harts_in_cluster =3D s->num_hart * s->num_core; int num_of_clusters =3D s->num_vp / harts_in_cluster; for (i =3D 0; i < s->num_vp; i++) { - cpu =3D RISCV_CPU(object_new(s->cpu_type)); + cpu =3D RISCV_CPU(object_new_child(OBJECT(s), "cpu[*]", + s->cpu_type)); =20 /* All VPs are halted on reset. Leave powering up to CPC. */ object_property_set_bool(OBJECT(cpu), "start-powered-off", true, &error_abort); =20 - if (!qdev_realize_and_unref(DEVICE(cpu), NULL, errp)) { + if (!qdev_realize(DEVICE(cpu), NULL, errp)) { return; } =20 diff --git a/hw/riscv/microblaze-v-generic.c b/hw/riscv/microblaze-v-generi= c.c index 0a83932405..f97ce402e6 100644 --- a/hw/riscv/microblaze-v-generic.c +++ b/hw/riscv/microblaze-v-generic.c @@ -65,7 +65,8 @@ static void mb_v_generic_init(MachineState *machine) qemu_irq irq[32]; MemoryRegion *sysmem =3D get_system_memory(); =20 - cpu =3D RISCV_CPU(object_new(machine->cpu_type)); + cpu =3D RISCV_CPU(object_new_child(OBJECT(machine), "cpu[0]", + machine->cpu_type)); object_property_set_bool(OBJECT(cpu), "h", false, NULL); object_property_set_bool(OBJECT(cpu), "d", false, NULL); qdev_realize(DEVICE(cpu), NULL, &error_abort); diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c index 037cb6eb5e..0625d4a8df 100644 --- a/hw/s390x/s390-virtio-ccw.c +++ b/hw/s390x/s390-virtio-ccw.c @@ -56,20 +56,18 @@ static Error *pv_mig_blocker; static S390CPU *s390x_new_cpu(const char *typename, uint32_t core_id, Error **errp) { - S390CPU *cpu =3D S390_CPU(object_new(typename)); - S390CPU *ret =3D NULL; + S390CPU *cpu =3D S390_CPU(object_new_child(qdev_get_machine(), "cpu[*]= ", + typename)); =20 if (!object_property_set_int(OBJECT(cpu), "core-id", core_id, errp)) { - goto out; + object_unparent(OBJECT(cpu)); + return NULL; } if (!qdev_realize(DEVICE(cpu), NULL, errp)) { - goto out; + object_unparent(OBJECT(cpu)); + return NULL; } - ret =3D cpu; - -out: - object_unref(OBJECT(cpu)); - return ret; + return cpu; } =20 static void s390_init_cpus(MachineState *machine) diff --git a/hw/sparc/leon3.c b/hw/sparc/leon3.c index f9ef2758e1..a2781bcc32 100644 --- a/hw/sparc/leon3.c +++ b/hw/sparc/leon3.c @@ -278,7 +278,8 @@ static void leon3_generic_hw_init(MachineState *machine) =20 for (i =3D 0; i < machine->smp.cpus; i++) { /* Init CPU */ - cpu =3D SPARC_CPU(object_new(machine->cpu_type)); + cpu =3D SPARC_CPU(object_new_child(OBJECT(machine), "cpu[*]", + machine->cpu_type)); qdev_init_gpio_in_named(DEVICE(cpu), leon3_start_cpu, "start_cpu",= 1); qdev_init_gpio_in_named(DEVICE(cpu), leon3_set_pil_in, "pil", 1); qdev_realize(DEVICE(cpu), NULL, &error_fatal); diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c index 51f5468a02..1ae9d834ca 100644 --- a/hw/sparc/sun4m.c +++ b/hw/sparc/sun4m.c @@ -787,7 +787,8 @@ static DeviceState *cpu_devinit(const char *cpu_type, u= nsigned int id, CPUSPARCState *env; DeviceState *cpudev; =20 - cpu =3D SPARC_CPU(object_new(cpu_type)); + cpu =3D SPARC_CPU(object_new_child(qdev_get_machine(), "cpu[*]", + cpu_type)); env =3D &cpu->env; cpudev =3D DEVICE(cpu); =20 @@ -795,7 +796,7 @@ static DeviceState *cpu_devinit(const char *cpu_type, u= nsigned int id, object_property_set_bool(OBJECT(cpu), "start-powered-off", id !=3D 0, &error_abort); qdev_init_gpio_in_named(cpudev, cpu_set_irq, "pil", MAX_PILS); - qdev_realize_and_unref(cpudev, NULL, &error_fatal); + qdev_realize(cpudev, NULL, &error_fatal); cpu_sparc_set_id(env, id); env->prom_addr =3D prom_addr; return cpudev; diff --git a/hw/sparc64/sparc64.c b/hw/sparc64/sparc64.c index 16f4aa052b..9092c4193e 100644 --- a/hw/sparc64/sparc64.c +++ b/hw/sparc64/sparc64.c @@ -272,7 +272,8 @@ SPARCCPU *sparc64_cpu_devinit(const char *cpu_type, uin= t64_t prom_addr) uint32_t stick_frequency =3D 100 * 1000000; uint32_t hstick_frequency =3D 100 * 1000000; =20 - cpu =3D SPARC_CPU(object_new(cpu_type)); + cpu =3D SPARC_CPU(object_new_child(qdev_get_machine(), "cpu[0]", + cpu_type)); qdev_init_gpio_in_named(DEVICE(cpu), sparc64_cpu_set_ivec_irq, "ivec-irq", IVEC_MAX); qdev_realize(DEVICE(cpu), NULL, &error_fatal); --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412883; cv=none; d=zohomail.com; s=zohoarc; b=dI2cXbGa3Cgd0uYJq0CV4vYE0MxycFHhuftIXphCN0DJlf8ypQAIZka/3CcUBtLcovE25luiN/WbH0esFOljKyD4fK9P1m3HrqNjnDfPjkUooIifaonjJfOwwA62yCP+J1ck6x/2Ce3+l8dpGJ83qi95FDIyCkx+XIcZRvNDIL0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412883; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=NJpP0eMUz9RgKfKN7c0j9nZ3nsAHgWe24CG5g2vFMKk=; b=kpAo579LB4M9Bg+F36bALl3B9zavZ0w5Nc5iESCF1MlRysBmNPKhTheKzZWIL4lz2VPLcaKzyK4PBi+XHB3EXoLyBTe4gKrB1LoIsW7MkUc4iW69FO19/5yHF+LFBttT0UnnUctlrJ+fXeN1rz4Olfqfok29rTC4mEPMqnYjiFE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412883388582.7042334457379; Sat, 18 Jul 2026 15:14:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlDIQ-0003CV-4I; Sat, 18 Jul 2026 18:14:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDIO-0003BZ-1r; Sat, 18 Jul 2026 18:14:08 -0400 Received: from pdx-out-013.esa.us-west-2.outbound.mail-perimeter.amazon.com ([34.218.115.239]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDIM-00074X-Go; Sat, 18 Jul 2026 18:14:07 -0400 Received: from ip-10-5-0-115.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.0.115]) by internal-pdx-out-013.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:14:02 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.234:14799] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.30.230:2525] with esmtp (Farcaster) id 6ca61aea-c4a5-4912-87e6-5a5d4881c791; Sat, 18 Jul 2026 22:14:01 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA002.ant.amazon.com (10.250.64.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:14:01 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:13:52 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412846; x=1815948846; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=NJpP0eMUz9RgKfKN7c0j9nZ3nsAHgWe24CG5g2vFMKk=; b=CXNhJBIV/Sc8fIBgx2Wjo72ZWB71G3dmxiSwK8tk3DMW1LZYBSo38JWo cQ2xs6mAMpr0bPdt/6lUTPN8bQDAu0NoJapCg9VBYnIaBcnnRrBHe/KTL BtP0cN/QkIGxG+vfkQ1BaH2RrwwlADspm7yyoayn7f7AFGUydicX3OeKa kARLTH2HQwE6ITql0eCX3ouLr47Q+V0AtM1lflCun4sS0sOw7GHxRTJs2 pQny9JB1o0o9+RTVx1WoyMp0HaipyPsV5vXQVb87hfJYuFxkkDOVeHqO5 AYpyb67EQjdw9Zj2lXQRL/OnRyc8WyXfO82XxcmBduE56jPtb7MLf32l4 A==; X-CSE-ConnectionGUID: V9yQYF7WSJKAPPAArtZF5Q== X-CSE-MsgGUID: 0LMPs3GDR1Ga/0V3+VmZBA== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23720093" X-Farcaster-Flow-ID: 6ca61aea-c4a5-4912-87e6-5a5d4881c791 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 132/137] hw/pci-host/versatile: Use object_initialize_child() for pci_dev Date: Sat, 18 Jul 2026 21:36:47 +0000 Message-ID: <20260718213652.37673-133-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D044UWA001.ant.amazon.com (10.13.139.100) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=34.218.115.239; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-013.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.01, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412884975158500 Content-Type: text/plain; charset="utf-8" The embedded versatile_pci_host device was initialized via object_initialize() without ever being parented, so it landed in /machine/unattached at realize time. Switch to object_initialize_child() so it becomes a proper child<> of the host bridge. AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/pci-host/versatile.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hw/pci-host/versatile.c b/hw/pci-host/versatile.c index b27531f7fb..b749bcf1a1 100644 --- a/hw/pci-host/versatile.c +++ b/hw/pci-host/versatile.c @@ -410,7 +410,8 @@ static void pci_vpb_realize(DeviceState *dev, Error **e= rrp) PCI_DEVFN(11, 0), TYPE_PCI_BUS); h->bus =3D &s->pci_bus; =20 - object_initialize(&s->pci_dev, sizeof(s->pci_dev), TYPE_VERSATILE_PCI_= HOST); + object_initialize_child(OBJECT(s), "pci-host", &s->pci_dev, + TYPE_VERSATILE_PCI_HOST); =20 for (i =3D 0; i < 4; i++) { sysbus_init_irq(sbd, &s->irq[i]); --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412876; cv=none; d=zohomail.com; s=zohoarc; b=kGdZLVeXvAjER/+HZ/ZHbsbN7KkmsaHzyTM+qINgn4M++7ClmBlm/PysXHHYW2HkZ1+nN5owPqhfwgzZs/8CE1gF2+YzJB5gSXRQg/apX5sH8SPEbmFWbE6n3ij/j1pMC9YAVdQf0AaarArqgJZJsJfdddXaVlFAnTiLfANArwY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412876; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=vy1o3AJjcyfUw/oY+KjNrWsUY2TJlLRqRASFwP66+E0=; b=V6fpG7b2k5zGtOaJGH+Q14JbPL8efpFkgl77rZfFvHYX8P3q9IynK2lAUNNjTiu6Wynh02BPWGifuZL5xStApLAqvxRGyQTttmI8ehj5PFVpA0nnbNXp1wJHz7nLMKp/NO9gZHoVEEwbYiL2T7v+mZ1Y8x2lmeXG5BWtLIWDPFY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412875995297.2996077362933; Sat, 18 Jul 2026 15:14:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlDIb-0003Kx-IU; Sat, 18 Jul 2026 18:14:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDIZ-0003IN-Fz; Sat, 18 Jul 2026 18:14:19 -0400 Received: from pdx-out-011.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.35.192.45]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDIW-00075F-E8; Sat, 18 Jul 2026 18:14:19 -0400 Received: from ip-10-5-9-48.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.9.48]) by internal-pdx-out-011.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:14:11 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.51:9457] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.19.34:2525] with esmtp (Farcaster) id 4c37119c-f9b8-48a3-859b-f0c500c06906; Sat, 18 Jul 2026 22:14:11 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB001.ant.amazon.com (10.250.64.248) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:14:11 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:14:01 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412856; x=1815948856; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=vy1o3AJjcyfUw/oY+KjNrWsUY2TJlLRqRASFwP66+E0=; b=n0mvR4EglFN5ddsgIkJNEsY8dtu4BKHdAhZ31To5Y/uh06gxvc4c3xq1 6ryZ286mhG//xyBQpEd0vWVfEkCMZDgDGQpGquoVUuto8DAb6YI7hyo3R /HvE8fzg+eJ5Jzj9M3UR55EaZIAGwMKWbnLGOaU9F9JWj2WKXK03qBmbm CB+IiGxLiMfUFgIh6FIT6EWm08W9pkbCvUCirhcnfpbKuoUM3wxCjJqkn wGo9kZVN1ST+sznFej/qzNRljN2SMAQ/bxvxCIkJvDs+Xn0cLYLbvTg3h Dksy751H0H8hDvMLp/9zYScLdfGvshF1t9OW1lJPnHO4En8yAeYLHKAqc Q==; X-CSE-ConnectionGUID: LOyAV7piSf2oO3ap4Swb0A== X-CSE-MsgGUID: HX2VoUxbTwuiHDUg0i+vpg== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23695342" X-Farcaster-Flow-ID: 4c37119c-f9b8-48a3-859b-f0c500c06906 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 133/137] docs, qapi, scripts, iotests: Update /machine/unattached path references Date: Sat, 18 Jul 2026 21:36:48 +0000 Message-ID: <20260718213652.37673-134-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D044UWA001.ant.amazon.com (10.13.139.100) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.35.192.45; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-011.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412877422158500 Content-Type: text/plain; charset="utf-8" Board-created devices no longer land in /machine/unattached and the next commit removes the container entirely. Update the in-tree consumers of the old paths: scripts/arm_processor_error.py, scripts/qmp_helper.py Search for CPUs directly under /machine. docs/devel/s390-cpu-topology.rst, docs/system/cpu-hotplug.rst qapi/{block-core,block,machine,qom}.json Refresh example qom-path strings. tests/qemu-iotests/common.filter _filter_qom_path() now normalizes any /machine/... device path so the reference outputs are stable across board naming changes. tests/qemu-iotests/{172,186}.out Regenerated against the new filter. AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- docs/devel/s390-cpu-topology.rst | 2 +- docs/system/cpu-hotplug.rst | 4 +- qapi/block-core.json | 12 +++--- qapi/block.json | 2 +- qapi/machine.json | 12 +++--- qapi/qom.json | 4 +- scripts/arm_processor_error.py | 3 +- scripts/qmp_helper.py | 2 +- tests/qemu-iotests/172.out | 72 ++++++++++++++++---------------- tests/qemu-iotests/186.out | 10 ++--- tests/qemu-iotests/common.filter | 2 +- 11 files changed, 62 insertions(+), 63 deletions(-) diff --git a/docs/devel/s390-cpu-topology.rst b/docs/devel/s390-cpu-topolog= y.rst index 48313b92d4..26be230969 100644 --- a/docs/devel/s390-cpu-topology.rst +++ b/docs/devel/s390-cpu-topology.rst @@ -40,7 +40,7 @@ modifiers for all configured vCPUs. }, "cpu-state": "operating", "entitlement": "medium", - "qom-path": "/machine/unattached/device[0]", + "qom-path": "/machine/cpu[0]", "cpu-index": 0, "target": "s390x" }, diff --git a/docs/system/cpu-hotplug.rst b/docs/system/cpu-hotplug.rst index cc50937c36..f838faba6f 100644 --- a/docs/system/cpu-hotplug.rst +++ b/docs/system/cpu-hotplug.rst @@ -47,7 +47,7 @@ vCPU hotplug "socket-id": 0, "thread-id": 0 }, - "qom-path": "/machine/unattached/device[0]", + "qom-path": "/machine/cpu[0]", "type": "IvyBridge-IBRS-x86_64-cpu", "vcpus-count": 1 } @@ -95,7 +95,7 @@ vCPU hotplug "socket-id": 0, "thread-id": 0 }, - "qom-path": "/machine/unattached/device[0]", + "qom-path": "/machine/cpu[0]", "target": "x86_64", "thread-id": 28957 }, diff --git a/qapi/block-core.json b/qapi/block-core.json index 1f87b07850..28487f7cae 100644 --- a/qapi/block-core.json +++ b/qapi/block-core.json @@ -928,7 +928,7 @@ # "device":"ide1-cd0", # "locked":false, # "removable":true, -# "qdev": "/machine/unattached/device[23]", +# "qdev": "/machine/ide[1]/ide.1/cd0", # "tray_open": false, # "type":"unknown" # }, @@ -936,7 +936,7 @@ # "device":"floppy0", # "locked":false, # "removable":true, -# "qdev": "/machine/unattached/device[20]", +# "qdev": "/machine/fdc/floppy[0]", # "type":"unknown" # }, # { @@ -1310,7 +1310,7 @@ # "account_invalid":true, # "account_failed":false # }, -# "qdev": "/machine/unattached/device[23]" +# "qdev": "/machine/ide[0]/ide.0/hd0" # }, # { # "device":"ide1-cd0", @@ -1329,7 +1329,7 @@ # "account_invalid":false, # "account_failed":false # }, -# "qdev": "/machine/unattached/device[24]" +# "qdev": "/machine/ide[1]/ide.1/cd0" # }, # { # "device":"floppy0", @@ -1348,7 +1348,7 @@ # "account_invalid":false, # "account_failed":false # }, -# "qdev": "/machine/unattached/device[16]" +# "qdev": "/machine/fdc/floppy[0]" # }, # { # "device":"sd0", @@ -5750,7 +5750,7 @@ # .. qmp-example:: # # <- { "event": "BLOCK_IO_ERROR", -# "data": { "qom-path": "/machine/unattached/device[0]", +# "data": { "qom-path": "/machine/ide[0]/ide.0/hd1", # "device": "ide0-hd1", # "node-name": "#block212", # "operation": "write", diff --git a/qapi/block.json b/qapi/block.json index 46955bbb3e..cb177180e7 100644 --- a/qapi/block.json +++ b/qapi/block.json @@ -404,7 +404,7 @@ # # <- { "event": "DEVICE_TRAY_MOVED", # "data": { "device": "ide1-cd0", -# "id": "/machine/unattached/device[22]", +# "id": "/machine/ide[1]/ide.1/cd0", # "tray-open": true # }, # "timestamp": { "seconds": 1265044230, "microseconds": 450486 } } diff --git a/qapi/machine.json b/qapi/machine.json index 9b2248038f..2d39d650ce 100644 --- a/qapi/machine.json +++ b/qapi/machine.json @@ -121,7 +121,7 @@ # "thread-id": 0, # "socket-id": 0 # }, -# "qom-path": "/machine/unattached/device[0]", +# "qom-path": "/machine/cpu[0]", # "target":"x86_64", # "cpu-index": 0 # }, @@ -132,7 +132,7 @@ # "thread-id": 0, # "socket-id": 1 # }, -# "qom-path": "/machine/unattached/device[2]", +# "qom-path": "/machine/cpu[1]", # "target":"x86_64", # "cpu-index": 1 # } @@ -1028,7 +1028,7 @@ # { "props": { "core-id": 8 }, "type": "POWER8-spapr-cpu-core", # "vcpus-count": 1 }, # { "props": { "core-id": 0 }, "type": "POWER8-spapr-cpu-core", -# "vcpus-count": 1, "qom-path": "/machine/unattached/device[0]"} +# "vcpus-count": 1, "qom-path": "/machine/cpu[0]"} # ]} # # .. qmp-example:: @@ -1043,7 +1043,7 @@ # "props": {"core-id": 0, "socket-id": 1, "thread-id": 0} # }, # { -# "qom-path": "/machine/unattached/device[0]", +# "qom-path": "/machine/cpu[0]", # "type": "qemu64-x86_64-cpu", "vcpus-count": 1, # "props": {"core-id": 0, "socket-id": 0, "thread-id": 0} # } @@ -1062,7 +1062,7 @@ # "props": { "core-id": 1 } # }, # { -# "qom-path": "/machine/unattached/device[0]", +# "qom-path": "/machine/cpu[0]", # "type": "qemu-s390x-cpu", "vcpus-count": 1, # "props": { "core-id": 0 } # } @@ -1617,7 +1617,7 @@ # # <- { "event": "MEMORY_DEVICE_SIZE_CHANGE", # "data": { "id": "vm0", "size": 1073741824, -# "qom-path": "/machine/unattached/device[2]" }, +# "qom-path": "/machine/peripheral/vm0" }, # "timestamp": { "seconds": 1588168529, "microseconds": 201316 } } ## { 'event': 'MEMORY_DEVICE_SIZE_CHANGE', diff --git a/qapi/qom.json b/qapi/qom.json index d96cc5aa21..62f9fd5492 100644 --- a/qapi/qom.json +++ b/qapi/qom.json @@ -135,7 +135,7 @@ # :title: Use absolute path # # -> { "execute": "qom-get", -# "arguments": { "path": "/machine/unattached/device[0]", +# "arguments": { "path": "/machine/cpu[0]", # "property": "hotplugged" } } # <- { "return": false } # @@ -143,7 +143,7 @@ # :title: Use partial path # # -> { "execute": "qom-get", -# "arguments": { "path": "unattached/sysbus", +# "arguments": { "path": "machine/sysbus", # "property": "type" } } # <- { "return": "System" } ## diff --git a/scripts/arm_processor_error.py b/scripts/arm_processor_error.py index 73d069f070..2636837ce3 100644 --- a/scripts/arm_processor_error.py +++ b/scripts/arm_processor_error.py @@ -244,8 +244,7 @@ def send_cper(self, args): qmp_cmd.set_args(args) =20 is_cpu_type =3D re.compile(r"^([\w+]+\-)?arm\-cpu$") - cpus =3D qmp_cmd.search_qom("/machine/unattached/device", - "type", is_cpu_type) + cpus =3D qmp_cmd.search_qom("/machine/cpu", "type", is_cpu_type) =20 cper =3D {} pei =3D {} diff --git a/scripts/qmp_helper.py b/scripts/qmp_helper.py index 521612fb94..b7e9ad86b9 100755 --- a/scripts/qmp_helper.py +++ b/scripts/qmp_helper.py @@ -601,7 +601,7 @@ def search_qom(self, path, prop, regex): """ Return a list of devices that match path array like: =20 - /machine/unattached/device + /machine/cpu /machine/peripheral-anon/device ... """ diff --git a/tests/qemu-iotests/172.out b/tests/qemu-iotests/172.out index a023cd407d..b2adec97c8 100644 --- a/tests/qemu-iotests/172.out +++ b/tests/qemu-iotests/172.out @@ -63,12 +63,12 @@ Testing: -fda TEST_DIR/t.qcow2 stats-intervals =3D drive-type =3D "144" floppy0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2) - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed Cache mode: writeback =20 ide1-cd0: [not inserted] - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed (qemu) quit =20 @@ -115,16 +115,16 @@ Testing: -fdb TEST_DIR/t.qcow2 stats-intervals =3D drive-type =3D "288" floppy1 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2) - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed Cache mode: writeback =20 ide1-cd0: [not inserted] - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed =20 floppy0: [not inserted] - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed (qemu) quit =20 @@ -171,17 +171,17 @@ Testing: -fda TEST_DIR/t.qcow2 -fdb TEST_DIR/t.qcow2.2 stats-intervals =3D drive-type =3D "144" floppy0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2) - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed Cache mode: writeback =20 floppy1 (NODE_NAME): TEST_DIR/t.qcow2.2 (qcow2) - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed Cache mode: writeback =20 ide1-cd0: [not inserted] - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed (qemu) quit =20 @@ -258,12 +258,12 @@ Testing: -drive if=3Dfloppy,file=3DTEST_DIR/t.qcow2 stats-intervals =3D drive-type =3D "144" floppy0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2) - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed Cache mode: writeback =20 ide1-cd0: [not inserted] - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed (qemu) quit =20 @@ -310,16 +310,16 @@ Testing: -drive if=3Dfloppy,file=3DTEST_DIR/t.qcow2,i= ndex=3D1 stats-intervals =3D drive-type =3D "288" floppy1 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2) - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed Cache mode: writeback =20 ide1-cd0: [not inserted] - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed =20 floppy0: [not inserted] - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed (qemu) quit =20 @@ -366,17 +366,17 @@ Testing: -drive if=3Dfloppy,file=3DTEST_DIR/t.qcow2 -= drive if=3Dfloppy,file=3DTEST_DIR/t stats-intervals =3D drive-type =3D "144" floppy0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2) - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed Cache mode: writeback =20 floppy1 (NODE_NAME): TEST_DIR/t.qcow2.2 (qcow2) - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed Cache mode: writeback =20 ide1-cd0: [not inserted] - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed (qemu) quit =20 @@ -416,7 +416,7 @@ none0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2) Cache mode: writeback =20 ide1-cd0: [not inserted] - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed (qemu) quit =20 @@ -453,7 +453,7 @@ none0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2) Cache mode: writeback =20 ide1-cd0: [not inserted] - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed (qemu) quit =20 @@ -510,7 +510,7 @@ none1 (NODE_NAME): TEST_DIR/t.qcow2.2 (qcow2) Cache mode: writeback =20 ide1-cd0: [not inserted] - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed (qemu) quit =20 @@ -566,7 +566,7 @@ Testing: -fda TEST_DIR/t.qcow2 -drive if=3Dnone,file=3D= TEST_DIR/t.qcow2.2 -device fl stats-intervals =3D drive-type =3D "144" floppy0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2) - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed Cache mode: writeback =20 @@ -576,7 +576,7 @@ none0 (NODE_NAME): TEST_DIR/t.qcow2.2 (qcow2) Cache mode: writeback =20 ide1-cd0: [not inserted] - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed (qemu) quit =20 @@ -623,7 +623,7 @@ Testing: -fda TEST_DIR/t.qcow2 -drive if=3Dnone,file=3D= TEST_DIR/t.qcow2.2 -device fl stats-intervals =3D drive-type =3D "144" floppy0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2) - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed Cache mode: writeback =20 @@ -633,7 +633,7 @@ none0 (NODE_NAME): TEST_DIR/t.qcow2.2 (qcow2) Cache mode: writeback =20 ide1-cd0: [not inserted] - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed (qemu) quit =20 @@ -680,7 +680,7 @@ Testing: -fdb TEST_DIR/t.qcow2 -drive if=3Dnone,file=3D= TEST_DIR/t.qcow2.2 -device fl stats-intervals =3D drive-type =3D "144" floppy1 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2) - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed Cache mode: writeback =20 @@ -690,7 +690,7 @@ none0 (NODE_NAME): TEST_DIR/t.qcow2.2 (qcow2) Cache mode: writeback =20 ide1-cd0: [not inserted] - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed (qemu) quit =20 @@ -737,7 +737,7 @@ Testing: -fdb TEST_DIR/t.qcow2 -drive if=3Dnone,file=3D= TEST_DIR/t.qcow2.2 -device fl stats-intervals =3D drive-type =3D "144" floppy1 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2) - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed Cache mode: writeback =20 @@ -747,7 +747,7 @@ none0 (NODE_NAME): TEST_DIR/t.qcow2.2 (qcow2) Cache mode: writeback =20 ide1-cd0: [not inserted] - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed (qemu) quit =20 @@ -803,7 +803,7 @@ Testing: -drive if=3Dfloppy,file=3DTEST_DIR/t.qcow2 -dr= ive if=3Dnone,file=3DTEST_DIR/t.q stats-intervals =3D drive-type =3D "144" floppy0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2) - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed Cache mode: writeback =20 @@ -813,7 +813,7 @@ none0 (NODE_NAME): TEST_DIR/t.qcow2.2 (qcow2) Cache mode: writeback =20 ide1-cd0: [not inserted] - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed (qemu) quit =20 @@ -860,7 +860,7 @@ Testing: -drive if=3Dfloppy,file=3DTEST_DIR/t.qcow2 -dr= ive if=3Dnone,file=3DTEST_DIR/t.q stats-intervals =3D drive-type =3D "144" floppy0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2) - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed Cache mode: writeback =20 @@ -870,7 +870,7 @@ none0 (NODE_NAME): TEST_DIR/t.qcow2.2 (qcow2) Cache mode: writeback =20 ide1-cd0: [not inserted] - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed (qemu) quit =20 @@ -913,7 +913,7 @@ none0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2) Cache mode: writeback =20 ide1-cd0: [not inserted] - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed (qemu) quit =20 @@ -1091,7 +1091,7 @@ none0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2) Cache mode: writeback =20 ide1-cd0: [not inserted] - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed (qemu) quit =20 @@ -1128,7 +1128,7 @@ none0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2) Cache mode: writeback =20 ide1-cd0: [not inserted] - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed (qemu) quit =20 @@ -1168,7 +1168,7 @@ none0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2) Cache mode: writeback =20 ide1-cd0: [not inserted] - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed (qemu) quit =20 @@ -1205,7 +1205,7 @@ none0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2) Cache mode: writeback =20 ide1-cd0: [not inserted] - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed (qemu) quit =20 diff --git a/tests/qemu-iotests/186.out b/tests/qemu-iotests/186.out index 01530040e5..a2fdb0a915 100644 --- a/tests/qemu-iotests/186.out +++ b/tests/qemu-iotests/186.out @@ -404,7 +404,7 @@ Testing: -drive if=3Dfloppy QEMU X.Y.Z monitor - type 'help' for more information (qemu) info block floppy0: [not inserted] - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed (qemu) quit =20 @@ -412,7 +412,7 @@ Testing: -drive if=3Dfloppy,driver=3Dnull-co,read-zeroe= s=3Don QEMU X.Y.Z monitor - type 'help' for more information (qemu) info block floppy0 (NODE_NAME): json:{"read-zeroes": "on", "driver": "null-co"} (null= -co) - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed Cache mode: writeback (qemu) quit @@ -421,7 +421,7 @@ Testing: -drive if=3Dide,driver=3Dnull-co,read-zeroes= =3Don QEMU X.Y.Z monitor - type 'help' for more information (qemu) info block ide0-hd0 (NODE_NAME): json:{"read-zeroes": "on", "driver": "null-co"} (nul= l-co) - Attached to: /machine/unattached/device[N] + Attached to: PATH Cache mode: writeback (qemu) quit =20 @@ -429,7 +429,7 @@ Testing: -drive if=3Dide,media=3Dcdrom QEMU X.Y.Z monitor - type 'help' for more information (qemu) info block ide0-cd0: [not inserted] - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed (qemu) quit =20 @@ -437,7 +437,7 @@ Testing: -drive if=3Dide,driver=3Dnull-co,read-zeroes= =3Don,media=3Dcdrom QEMU X.Y.Z monitor - type 'help' for more information (qemu) info block ide0-cd0 (NODE_NAME): json:{"read-zeroes": "on", "driver": "null-co"} (nul= l-co, read-only) - Attached to: /machine/unattached/device[N] + Attached to: PATH Removable device: not locked, tray closed Cache mode: writeback (qemu) quit diff --git a/tests/qemu-iotests/common.filter b/tests/qemu-iotests/common.f= ilter index ce4213cb97..9a5994a3a5 100644 --- a/tests/qemu-iotests/common.filter +++ b/tests/qemu-iotests/common.filter @@ -37,7 +37,7 @@ _filter_generated_node_ids() =20 _filter_qom_path() { - gsed -e '/Attached to:/s/\device[[0-9]\+\]/device[N]/g' + gsed -e '/Attached to:/s#/machine/.*#PATH#' } =20 # replace occurrences of the actual TEST_DIR value with TEST_DIR --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412884; cv=none; d=zohomail.com; s=zohoarc; b=Kw96z9Ck1V5fsfS/8cxZTFdCWT3AR87LMxNqaWJepcE95rNYdy+ba4qNjwhYxDu1mffgcnZkvJGsogbNyx6BXeT+APDKRCtYLGQriaU1XQjBNqpDLqZOaWMZfFKQraNRYgioo7HIMuAntgJ+whNzxCuwbVw+qPT8a8NGyi+9rTY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412884; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=xsBoXh4tBaSrJVy9bgHYnnrFGltFojExcdq4Y6GWQHM=; b=Eb4JocagkK45PBGArFCM01HWzRKCbItg6skUq3QW+DDnT/EelIUZEnPaBly4VKP1kcNBGrf3Wxhs7RLtr0vViuZnaEV42fLxF+xATorCB9yZOtsatFq8zY6w5916s1rvzO50opqmsrCVLgkeSOtZ78Vg+oWvyaLEMB+wk4sJAWs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412884038211.53300115659306; Sat, 18 Jul 2026 15:14:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlDIj-0003aT-9w; Sat, 18 Jul 2026 18:14:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDIh-0003UE-Sz; Sat, 18 Jul 2026 18:14:27 -0400 Received: from pdx-out-011.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.35.192.45]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDIf-00075F-Ki; Sat, 18 Jul 2026 18:14:27 -0400 Received: from ip-10-5-6-203.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.6.203]) by internal-pdx-out-011.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:14:21 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.51:30382] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.29.147:2525] with esmtp (Farcaster) id cc76cffe-21e4-4157-ba11-66333fc2a8a1; Sat, 18 Jul 2026 22:14:21 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC002.ant.amazon.com (10.250.64.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:14:20 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:14:11 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412865; x=1815948865; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=xsBoXh4tBaSrJVy9bgHYnnrFGltFojExcdq4Y6GWQHM=; b=Jwida82D2V4QE7eWGhtL0O1XztcPSM9ryXMPZen3WCw9mMOUYasaxcSn OpMFs8ASKYJupmqTJPfVfXRpuIyDlLYgTBBsx9RsewPmz/wKL2h9PHlf4 KRAI5QuRViH8NXUffI1TX0qZNtxIbfdrnUKEpxjJUUIgZSE2K5pZ0WCEf 2VcZFCZyoUXSd/VbKFxM0Cr+wa3nhCAy/e/cHbTKdBMlNPOI/4bF9DN86 931Bgaw05jiByEQbrwUos4zFDZxzkBeKMhcoCuBT9nVJ9kO6SD8GS8roi Wswq7Mbg7bQeeKEFgOq7EaTTc2Fc/B/KBO1riXhBHfbwCmUh1r3RN+aLE Q==; X-CSE-ConnectionGUID: F1QrvP7TTlal1fYrS5G8pw== X-CSE-MsgGUID: M3Ih5GZOQE6QK07BrJXL5A== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23695361" X-Farcaster-Flow-ID: cc76cffe-21e4-4157-ba11-66333fc2a8a1 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 134/137] qom: Delete /machine/unattached and error on unparented realize Date: Sat, 18 Jul 2026 21:36:49 +0000 Message-ID: <20260718213652.37673-135-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D044UWA001.ant.amazon.com (10.13.139.100) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.35.192.45; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-011.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412885072158500 Content-Type: text/plain; charset="utf-8" With every board-created device, memory region, IRQ, and singleton now given an explicit QOM parent, the /machine/unattached container serves no legitimate purpose. Remove it and turn the device_set_realized() fallback into a hard error, so that any future orphan is caught at realize time rather than silently adopted into an anonymous bucket. hw/core/qdev.c error out on !obj->parent instead of adopting hw/core/qdev-user.c drop the fake unattached container system/vl.c drop "unattached" from machine container list hw/i386/pc.c search /machine recursively for the FDC instead of the (unattached, peripheral, peripheral-anon) container triple tests/unit/ parent test devices explicitly under /machine After this commit, `info qom-tree` no longer shows /machine/unattached on any target/machine combination, and `git grep '"unattached"'` returns zero hits. AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/core/qdev-user.c | 6 +----- hw/core/qdev.c | 20 ++++---------------- hw/i386/pc.c | 11 +---------- include/hw/core/qdev.h | 2 +- system/vl.c | 1 - tests/unit/test-qdev-global-props.c | 17 +++++++---------- tests/unit/test-qdev.c | 12 ++++-------- 7 files changed, 18 insertions(+), 51 deletions(-) diff --git a/hw/core/qdev-user.c b/hw/core/qdev-user.c index 051f8fbd02..592a8369a3 100644 --- a/hw/core/qdev-user.c +++ b/hw/core/qdev-user.c @@ -11,9 +11,5 @@ =20 void qdev_create_fake_machine(void) { - Object *fake_machine_obj; - - fake_machine_obj =3D object_property_add_new_container(object_get_root= (), - "machine"); - object_property_add_new_container(fake_machine_obj, "unattached"); + object_property_add_new_container(object_get_root(), "machine"); } diff --git a/hw/core/qdev.c b/hw/core/qdev.c index 9a68fb426e..df3ba02839 100644 --- a/hw/core/qdev.c +++ b/hw/core/qdev.c @@ -486,8 +486,6 @@ static void device_set_realized(Object *obj, bool value= , Error **errp) BusState *bus; NamedClockList *ncl; Error *local_err =3D NULL; - bool unattached_parent =3D false; - static int unattached_count; =20 if (dev->hotplugged && !dc->hotpluggable) { error_setg(errp, "Device '%s' does not support hotplugging", @@ -501,12 +499,10 @@ static void device_set_realized(Object *obj, bool val= ue, Error **errp) } =20 if (!obj->parent) { - gchar *name =3D g_strdup_printf("device[%d]", unattached_count= ++); - - object_property_add_child(machine_get_container("unattached"), - name, obj); - unattached_parent =3D true; - g_free(name); + error_setg(errp, "device type '%s' has no QOM parent; " + "use qdev_new() with a parent", + object_get_typename(obj)); + return; } =20 hotplug_ctrl =3D qdev_get_hotplug_handler(dev); @@ -634,14 +630,6 @@ post_realize_fail: =20 fail: error_propagate(errp, local_err); - if (unattached_parent) { - /* - * Beware, this doesn't just revert - * object_property_add_child(), it also runs bus_remove()! - */ - object_unparent(OBJECT(dev)); - unattached_count--; - } } =20 static bool device_get_hotpluggable(Object *obj, Error **errp) diff --git a/hw/i386/pc.c b/hw/i386/pc.c index 398371ff6f..bab8ee453f 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -368,24 +368,15 @@ static int check_fdc(Object *obj, void *opaque) return 0; } =20 -static const char * const fdc_container_path[] =3D { - "unattached", "peripheral", "peripheral-anon" -}; - /* * Locate the FDC at IO address 0x3f0, in order to configure the CMOS regi= sters * and ACPI objects. */ static ISADevice *pc_find_fdc0(void) { - int i; - Object *container; CheckFdcState state =3D { 0 }; =20 - for (i =3D 0; i < ARRAY_SIZE(fdc_container_path); i++) { - container =3D machine_get_container(fdc_container_path[i]); - object_child_foreach(container, check_fdc, &state); - } + object_child_foreach_recursive(qdev_get_machine(), check_fdc, &state); =20 if (state.multiple) { warn_report("multiple floppy disk controllers with " diff --git a/include/hw/core/qdev.h b/include/hw/core/qdev.h index 9220e9e3b1..eded1b715d 100644 --- a/include/hw/core/qdev.h +++ b/include/hw/core/qdev.h @@ -462,7 +462,7 @@ static inline bool qdev_is_realized(DeviceState *dev) * initialization. * @dev must not be plugged into a bus already. * If @bus, plug @dev into @bus. This takes a reference to @dev. - * If @dev has no QOM parent, make one up, taking another reference. + * @dev must already have a QOM parent (see qdev_new()). * * If you created @dev via object_new() directly (holding a floating * reference), you probably want to use qdev_realize_and_unref() instead. diff --git a/system/vl.c b/system/vl.c index b4434839df..e51399d389 100644 --- a/system/vl.c +++ b/system/vl.c @@ -2192,7 +2192,6 @@ static void parse_memory_options(void) static void qemu_create_machine_containers(Object *machine) { static const char *const containers[] =3D { - "unattached", "peripheral", "peripheral-anon", }; diff --git a/tests/unit/test-qdev-global-props.c b/tests/unit/test-qdev-glo= bal-props.c index 8ea362cbb9..a941774b9d 100644 --- a/tests/unit/test-qdev-global-props.c +++ b/tests/unit/test-qdev-global-props.c @@ -78,25 +78,22 @@ static const TypeInfo subclass_type =3D { * inherit the global states of the parent process) will try to create qdev * and realize the device. * - * Realization of such anonymous qdev (with no parent object) requires both - * the machine object and its "unattached" container to be at least presen= t. + * Realization requires that the device already has a QOM parent. */ static void test_init_machine(void) { /* This is a fake machine - it doesn't need to be a machine object */ - Object *machine =3D object_property_add_new_container( + object_property_add_new_container( object_get_root(), "machine"); =20 - /* This container must exist for anonymous qdevs to realize() */ - object_property_add_new_container(machine, "unattached"); -} + } =20 /* Test simple static property setting to default value */ static void test_static_prop_subprocess(void) { MyType *mt; =20 - mt =3D STATIC_TYPE(object_new(TYPE_STATIC_PROPS)); + mt =3D STATIC_TYPE(object_new_child(qdev_get_machine(), "dev[*]", TYPE= _STATIC_PROPS)); qdev_realize(DEVICE(mt), NULL, &error_fatal); =20 g_assert_cmpuint(mt->prop1, =3D=3D, PROP_DEFAULT); @@ -131,7 +128,7 @@ static void test_static_globalprop_subprocess(void) =20 register_global_properties(props); =20 - mt =3D STATIC_TYPE(object_new(TYPE_STATIC_PROPS)); + mt =3D STATIC_TYPE(object_new_child(qdev_get_machine(), "dev[*]", TYPE= _STATIC_PROPS)); qdev_realize(DEVICE(mt), NULL, &error_fatal); =20 g_assert_cmpuint(mt->prop1, =3D=3D, 200); @@ -249,7 +246,7 @@ static void test_dynamic_globalprop_subprocess(void) =20 register_global_properties(props); =20 - mt =3D DYNAMIC_TYPE(object_new(TYPE_DYNAMIC_PROPS)); + mt =3D DYNAMIC_TYPE(object_new_child(qdev_get_machine(), "dev[*]", TYP= E_DYNAMIC_PROPS)); qdev_realize(DEVICE(mt), NULL, &error_fatal); =20 g_assert_cmpuint(mt->prop1, =3D=3D, 101); @@ -295,7 +292,7 @@ static void test_subclass_global_props(void) =20 register_global_properties(props); =20 - mt =3D STATIC_TYPE(object_new(TYPE_SUBCLASS)); + mt =3D STATIC_TYPE(object_new_child(qdev_get_machine(), "dev[*]", TYPE= _SUBCLASS)); qdev_realize(DEVICE(mt), NULL, &error_fatal); =20 g_assert_cmpuint(mt->prop1, =3D=3D, 102); diff --git a/tests/unit/test-qdev.c b/tests/unit/test-qdev.c index 20eae38e03..eafffb7175 100644 --- a/tests/unit/test-qdev.c +++ b/tests/unit/test-qdev.c @@ -44,24 +44,21 @@ static const TypeInfo my_dev_type_info =3D { /* * Initialize a fake machine, being prepared for future tests. * - * Realization of anonymous qdev (with no parent object) requires both - * the machine object and its "unattached" container to be at least presen= t. + * Realization requires that the device already has a QOM parent. */ static void test_init_machine(void) { /* This is a fake machine - it doesn't need to be a machine object */ - Object *machine =3D object_property_add_new_container( + object_property_add_new_container( object_get_root(), "machine"); =20 - /* This container must exist for anonymous qdevs to realize() */ - object_property_add_new_container(machine, "unattached"); -} + } =20 static void test_qdev_free_properties(void) { MyDev *mt; =20 - mt =3D STATIC_TYPE(object_new(TYPE_MY_DEV)); + mt =3D STATIC_TYPE(object_new_child(qdev_get_machine(), "dev[*]", TYPE= _MY_DEV)); object_set_props(OBJECT(mt), &error_fatal, "string", "something", "array-u32", "12,13", @@ -75,7 +72,6 @@ static void test_qdev_free_properties(void) g_assert_cmpuint(mt->prop_array_u32[1], =3D=3D, 13); =20 object_unparent(OBJECT(mt)); - object_unref(mt); } =20 =20 --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412933; cv=none; d=zohomail.com; s=zohoarc; b=ZdFchcQDviq5BbPfgg8I5kFMV8dvYp+arCKtgKi3CWRXEdwJKRociUdHpYwNNNMrpbahCfx6lLZ8gn+psrEAPcHJ8Fnu0qHxJAv1kw9DuSEg++TiuKWD3VnROusxyVIzZQTxNp9ADS83yw3CA062iMtWVloASP04/Tic7xh1GEQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412933; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=sMgON8zw7UXzsdFmPjwHuJJjo51/jz+OnnQ10iZLMjY=; b=ja+1CvEYwyj29yjRlXVDGXhRq6PhqvrGWbbFyCLchCDJ0J5vCIOaxn6FQSJ6nWW4ofV3Dgp3Wh3S+O6MAZPLfQrwqy3/2nwrClOGQo1Qs7yVy87P7lURTehfmgJV0w2qxG2aBXWobC+Uk9FsPFzakUeYJT8xqreynrCGWRlqMAQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178441293322282.3253013023093; Sat, 18 Jul 2026 15:15:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlDJX-0004fU-LP; Sat, 18 Jul 2026 18:15:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDJP-0004N7-8v; Sat, 18 Jul 2026 18:15:13 -0400 Received: from pdx-out-013.esa.us-west-2.outbound.mail-perimeter.amazon.com ([34.218.115.239]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDJM-00077b-Hf; Sat, 18 Jul 2026 18:15:10 -0400 Received: from ip-10-5-0-115.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.0.115]) by internal-pdx-out-013.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:14:52 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.182:26996] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.40.177:2525] with esmtp (Farcaster) id 12114d36-f71a-4147-9b1f-b70bc73a65b2; Sat, 18 Jul 2026 22:14:52 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA001.ant.amazon.com (10.250.64.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:14:52 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:14:42 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412908; x=1815948908; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=sMgON8zw7UXzsdFmPjwHuJJjo51/jz+OnnQ10iZLMjY=; b=GH+oZRxrMZpM04P/cRkz4+5WouNnhoCCE0PTAT48XCUHBiim/AR6akVB rzi8HJVgzkfCoACUUB1M4Af1tU71dS0k+ibvXZYLyrIfzGzAdYb+akCAP 0GGRo204HrfHjfZAV8nKwvb+F4zl+1CXFBprccttBCv37Fw3L+geVZgwh sP/uGXE/Cr5m1sYA2aV9g+l/52ESLkAAsSiqsVQ/GCJ6+MPa3LTDhzHYK 3cKeLTOYaEX3tLuUY4Zx0fNhhkh8xf0LbW2aluOFddSipBzujM3uEUi8z HDXxxk2EHbOcrsIdfdlmjblSKwazAg63ijI/LNbvK6UZ11oZyI+O3yiHN Q==; X-CSE-ConnectionGUID: qs62OKToTi6xw3W4Hm4/wA== X-CSE-MsgGUID: 8dnBRtBrSYOrTI0pyVqUzg== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23720135" X-Farcaster-Flow-ID: 12114d36-f71a-4147-9b1f-b70bc73a65b2 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 135/137] tests/qtest/qom-test: Add smp-max init-time ceiling test Date: Sat, 18 Jul 2026 21:36:50 +0000 Message-ID: <20260718213652.37673-136-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D043UWC003.ant.amazon.com (10.13.139.240) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=34.218.115.239; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-013.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.01, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412934794158500 Content-Type: text/plain; charset="utf-8" Add a slow-mode subtest that boots aarch64/virt and ppc64/pseries at their maximum -smp count and asserts that qtest_init() returns within 15 seconds. This guards against quadratic-time init regressions when many child objects are created under a single parent, such as the "[*]" auto-index property scan that made pseries take ~10 s to launch before qemu_extend_irqs() switched to explicit indices. AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- tests/qtest/qom-test.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/tests/qtest/qom-test.c b/tests/qtest/qom-test.c index cf4c6b5add..0bfb3233ac 100644 --- a/tests/qtest/qom-test.c +++ b/tests/qtest/qom-test.c @@ -238,8 +238,32 @@ static void test_qom_qtests(void) qtest_quit(qts); } =20 +/* + * Guard against O(n^2) init-time regressions when many child objects are + * created under one parent (e.g. board-created CPUs). Launch the machine + * at its maximum SMP count and assert an upper bound on time-to-monitor. + * The bound is generous (15 s) so this only fires when init cost blows up + * quadratically, not on ordinary CI jitter. + */ +static void test_smp_max(gconstpointer data) +{ + const char *args =3D data; + gint64 t0, dt; + QTestState *qts; + + t0 =3D g_get_monotonic_time(); + qts =3D qtest_initf("%s", args); + dt =3D g_get_monotonic_time() - t0; + + g_test_message("smp-max init time: %" G_GINT64_FORMAT " ms", dt / 1000= ); + g_assert_cmpint(dt, <, 15 * G_USEC_PER_SEC); + + qtest_quit(qts); +} + int main(int argc, char **argv) { + const char *arch =3D qtest_get_arch(); char *v_env =3D getenv("V"); =20 if (v_env) { @@ -251,5 +275,16 @@ int main(int argc, char **argv) qtest_cb_for_every_machine(add_machine_test_case, g_test_quick()); qtest_add_func("qom/qom-qtests", test_qom_qtests); =20 + if (g_test_slow()) { + if (g_str_equal(arch, "aarch64")) { + qtest_add_data_func("qom/smp-max/virt", + "-M virt,gic-version=3Dmax -smp 512", + test_smp_max); + } else if (g_str_equal(arch, "ppc64")) { + qtest_add_data_func("qom/smp-max/pseries", + "-M pseries -smp 512", test_smp_max); + } + } + return g_test_run(); } --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412927; cv=none; d=zohomail.com; s=zohoarc; b=mDQcjlplLEjIMssUoSNDKVjv9aoqL0rOSX6BFUDxODLkamZzcM7dLt40xssn3Hw3EJXlc+6P52EYK64DeXpF4do3oUxRuNg0lg1MNlQqIbDS1L+GdYXHep5Oa1CiFlvOuKRX004/PUlMtd6wHHOIXdP7SyFr6SAV4mTC3kaJbNk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412927; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Kn1MUAOIEK05pqPjEqHHPU7H8BZuLmOaTQp8KZvj590=; b=HoDwebpME5mUfOAoZjBp50UKKnrFWB1zqc+K1MNmku4o5hg+dXqeVyqhUzTC0H+uzw6vTy/wBfVe3U6zmTCDlUGAISll1F+FRaDoWvWDakogG/cZYP4H8OAAWwsDjCWXu17nZgicNrRmEXs3uzMn5g4MnbrjJZwIb052056M6YA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412927059298.7770280219032; Sat, 18 Jul 2026 15:15:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlDJV-0004Yc-GA; Sat, 18 Jul 2026 18:15:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDJN-0004Mz-Sm; Sat, 18 Jul 2026 18:15:13 -0400 Received: from pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.245.243.92]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDJK-00077U-8C; Sat, 18 Jul 2026 18:15:08 -0400 Received: from ip-10-5-12-219.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.12.219]) by internal-pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:15:02 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.105:16389] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.19.34:2525] with esmtp (Farcaster) id 2dd8e872-f7cf-4b1b-bff4-26ff92e74a44; Sat, 18 Jul 2026 22:15:01 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC001.ant.amazon.com (10.250.64.174) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:15:01 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:14:52 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412906; x=1815948906; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Kn1MUAOIEK05pqPjEqHHPU7H8BZuLmOaTQp8KZvj590=; b=l7N34ecfKliQqsGwd1FbiHxGTBQTw0jNEcKBekUIvenQnYFfCjVOf4KB BUWKCJK9+aZmNx3V7xWtZRc8P1aEH4fSVLxPFL1cENH3cX11QkCMC9UDk dJwI0cawEnT9gWrjPMkC91YntVT6Wnmj5ckowF1rwI1qmc/u2aVVKV4DO mItZ8vDqdon6bc4ZadUfg37f/Cf2FlfO51Q1zAZCvrnC3+FADKnQ2I/U5 zHQ0DRhBdwnos+D9CFichC5kk9vkoZ3vQRk7qqv/i0nvbArY4OVDMxCif O7ePs13adhujirq6e/sq2dkfxAX95qOD8XyZUV6YSXiZrPnsd29NEuPrv w==; X-CSE-ConnectionGUID: HlvVdsQhRLiSszKeJXKhDw== X-CSE-MsgGUID: bomBcti/Ryern5a1EmSkBA== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23424001" X-Farcaster-Flow-ID: 2dd8e872-f7cf-4b1b-bff4-26ff92e74a44 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 136/137] docs/devel/qom: Document the composition-tree parenting contract Date: Sat, 18 Jul 2026 21:36:51 +0000 Message-ID: <20260718213652.37673-137-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D043UWC003.ant.amazon.com (10.13.139.240) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=44.245.243.92; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412929094158500 Content-Type: text/plain; charset="utf-8" Add a section to the QOM developer documentation explaining that every object must have a composition-tree parent before use, how to pick the parent (creator owns lifetime), how to name children, the reference-count contract for parented creators, and where the contract is enforced (device_set_realized, memory_region_do_init, qdev_connect_gpio_out_named). AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- docs/devel/qom.rst | 96 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) diff --git a/docs/devel/qom.rst b/docs/devel/qom.rst index 935bb1004a..ffcb3333b5 100644 --- a/docs/devel/qom.rst +++ b/docs/devel/qom.rst @@ -27,6 +27,102 @@ that make up a QEMU "machine". You can view this tree b= y running objects created by the machine itself as well those created due to user configuration. =20 +Composition-tree parenting contract +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +Every QOM object that participates in the running system must have a +composition-tree parent before it is used. The parent gives the object +a stable, canonical path such as ``/machine/soc/uart[0]`` that is +visible in ``info qom-tree`` and addressable via ``qom-get`` and +``qom-set``. Objects that reach ``realize`` (for devices), that are +wired to another object (for IRQ lines), or that are given a name (for +memory regions) without a parent are programming errors. + +Creating parented objects +------------------------- + +The standard creation helpers all take the composition-tree parent and +the child name as their first two arguments: + +.. code-block:: c + + Object *object_new_child(Object *parent, const char *id, + const char *typename); + DeviceState *qdev_new(Object *parent, const char *id, + const char *typename); + DeviceState *sysbus_create_simple(Object *parent, const char *id, + const char *type, hwaddr, qemu_irq); + PCIDevice *pci_new(Object *parent, const char *id, ...); + ISADevice *isa_new(Object *parent, const char *id, ...); + /* i2c_slave_new(), ssi_create_peripheral(), usb_new(), + cpu_create() etc. follow the same pattern. */ + +``object_new()`` remains available as the primitive allocator for +transient introspection objects and for ``qdev_device_add()``, which +parents the device via ``qdev_set_id()``. All other callers should use +one of the parented helpers above, or ``object_initialize_child()`` for +objects that are embedded by value in the parent's instance struct. + +Choosing the parent +------------------- + +The QOM parent is the object that owns the child's lifetime. In +practice this is the object whose code is creating the child: + +* Board code (``MachineClass.init``) parents onboard devices to the + machine: ``OBJECT(machine)``. +* A composite device's ``DeviceClass.realize`` parents the sub-devices + it creates to itself: ``OBJECT(dev)``. +* An SoC container likewise parents the devices it creates to the SoC + object. + +The bus a device is plugged into is *not* its composition-tree parent. +A device may sit on a bus owned by ``B`` without being a child of +``B``; the bus relationship is expressed through the ``parent_bus`` +link, not the ``child<>`` property. + +Choosing the child name +----------------------- + +* A single instance takes a bare noun: ``"uart"``, ``"gic"``, ``"rtc"``. +* A fixed number of identical instances take an explicit index: + ``"uart[0]"``, ``"uart[1]"``. +* When the caller does not care about the index, ``"uart[*]"`` lets + QOM allocate the next free slot in the ``uart[]`` array. +* Address-based names such as ``"eth@0x30000000"`` should only be used + when the address is genuinely the identity of the device. + +Child names share the parent's property namespace, so avoid names that +collide with class-defined properties of the parent (in particular, +machine class properties visible on ``/machine``). + +Reference-count contract +------------------------ + +``object_new_child()``, ``qdev_new()`` and the per-bus creators return +with the object's single reference held by the parent's ``child<>`` +property. The caller does *not* hold a reference of its own and must +therefore pair creation with plain ``qdev_realize()`` rather than +``qdev_realize_and_unref()``. The object is finalized when the parent +drops its ``child<>`` property, typically via ``object_unparent()``. + +Enforcement +----------- + +The parenting contract is enforced at the points where an unparented +object would first become visible or entangled with another object: + +* ``device_set_realized()`` fails with an ``Error`` if the device has + no composition-tree parent. +* ``memory_region_do_init()`` asserts that a memory region given a + non-empty name also has an owner. +* ``qdev_connect_gpio_out_named()`` asserts that the outbound IRQ + line being connected already has a composition-tree parent. + +There is no ``/machine/unattached`` fallback container; an object that +would previously have landed there now triggers one of the errors +above instead. + Creating a QOM class =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =20 --=20 2.47.1 From nobody Sat Jul 25 13:05:37 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=amazon.com ARC-Seal: i=1; a=rsa-sha256; t=1784412949; cv=none; d=zohomail.com; s=zohoarc; b=A+ece7crT+1Q3WvdKPgAuy+IjiDGUXONpNvRH1vppf3O8D/y5Y5eOFrgu6/Jh1qrurYEATq/JBpMLPMjBmnU4hH7+Z8oZRYN6r6+xeu1PoauOSKjq2olruztOiJoqC6xNX9A3u12lDSHJ2wL+Z0WvjboohRH3Ce9B46dTTpERDk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784412949; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=lSks51wnlNrgb7X5bIiCp+KrpRFYjBhNLlcNYBC5Pog=; b=M3EUspsYJOE9oqG9A1S6rb33ugeH6PjfNA0OQ2ERo/mB8sj6wMhLO157OGZCes1JGFYtCouAHn+WD0fMyZAX6le20Mtafh3UmC4CwKtHopkezXS8gir+Mp+WmD7SaiSjofr3kqFRqc2yDOwswEVrnx6lvtOh7HNDNcYjyupt2/c= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@amazon.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1784412949960970.4473924649269; Sat, 18 Jul 2026 15:15:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlDJa-0004z1-K4; Sat, 18 Jul 2026 18:15:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDJV-0004aJ-43; Sat, 18 Jul 2026 18:15:17 -0400 Received: from pdx-out-005.esa.us-west-2.outbound.mail-perimeter.amazon.com ([52.13.214.179]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlDJT-0007Je-D5; Sat, 18 Jul 2026 18:15:16 -0400 Received: from ip-10-5-9-48.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.9.48]) by internal-pdx-out-005.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:15:11 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.111:28417] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.41.246:2525] with esmtp (Farcaster) id c9ca1e07-4fe8-4dc6-8dcd-7aac7ed717c8; Sat, 18 Jul 2026 22:15:11 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWB002.ant.amazon.com (10.250.64.231) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:15:10 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:15:01 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412915; x=1815948915; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=lSks51wnlNrgb7X5bIiCp+KrpRFYjBhNLlcNYBC5Pog=; b=X0TFKI7YTJ3nV9rEeueC51gPio0F7DBvbzKtcGyxxBbpoMFv+6+uIzuf JpKxqJcCashfe3T4OiE0V5uucDeccr0eMeaPG3k0Kjat5CbhY6KDDmdAv phw7JDcd4H2LIFCtgU0/lPOTtnegWqXi+HVUWq6VzCwGBE1Q/3dcNwrsH ZD2xl8HeKuWRxQF93aUS84gk3aUbAOcdpG27vZenLSPGPh1KRkLRlx8ZL 0AkfFmQ03f6+GAN/nUOVvrnG23mAl5G3ndypAXUQHbDGiykAfXGbGp24Y GRT6YWCj9yAthweU9ykDXXBqh3uA2Ev3TM1925avb/lusnSvLHaAWrLlz w==; X-CSE-ConnectionGUID: VXC+4TOLQZWKEBw+uE/CjA== X-CSE-MsgGUID: Ox6b6rW8QESuBPM3kvCF4g== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23905060" X-Farcaster-Flow-ID: c9ca1e07-4fe8-4dc6-8dcd-7aac7ed717c8 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 137/137] MAINTAINERS: Add scripts/coccinelle/qom-parent/ under QOM Date: Sat, 18 Jul 2026 21:36:52 +0000 Message-ID: <20260718213652.37673-138-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D043UWC003.ant.amazon.com (10.13.139.240) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass (zohomail.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=lists1p.gnu.org; Received-SPF: pass client-ip=52.13.214.179; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-005.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amazon.com) X-ZM-MESSAGEID: 1784412950897158500 Content-Type: text/plain; charset="utf-8" The Coccinelle scripts used to perform the tree-wide *_orphan() renames are stored under scripts/coccinelle/qom-parent/. Add the directory to the QOM MAINTAINERS entry. AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- MAINTAINERS | 1 + 1 file changed, 1 insertion(+) diff --git a/MAINTAINERS b/MAINTAINERS index ecb8cfdc41..1f0586e71c 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3639,6 +3639,7 @@ S: Supported F: docs/devel/qom.rst F: include/qom/ F: qapi/qom.json +F: scripts/coccinelle/qom-parent/ F: scripts/coccinelle/qom-parent-type.cocci F: scripts/qom-cast-macro-clean-cocci-gen.py F: qom/ --=20 2.47.1