From nobody Sun Jul 12 00:34:16 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=1783809536; cv=none; d=zohomail.com; s=zohoarc; b=A2NYZDu6otItvM6VjYO3bnyS1+c9iEVwgS+ovcAPLogLIn/bheVPL44j28rz67o7s5pDHzeUawjIz6Bniz8D+PMOTeTD6y07lNcAcBmFQWvidI0x+xO14hao2XjbHzgGXbacblzhozKxfbnFOchxZmxnOpwIdfm+o1WhTwxjKEo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783809536; 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=rb5gq6ZHZBxOqKEpOZvFqZlQVBtfnTT7/ZsZ/2gLzGg=; b=XPUGmpJQun2mcLIziUqWzJPGz5KPmAQOxR40y/B9gP/7HEmJY0V2yjHPvgfr3xTWsuPejsyEXP7WJCkXPq2kZQqQB3YGDHwUVGkKIv3t4UflCYAt2ZbTRVNRd5ObXWyQ/RgGNVcL4F66jXIIGCHzBnJ/qe92q3lvnF0649npNE4= 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 1783809535879180.94304682270433; Sat, 11 Jul 2026 15:38:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigKE-0006jV-AA; Sat, 11 Jul 2026 18: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 1wigKC-0006ir-Kj; Sat, 11 Jul 2026 18:37:32 -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 1wigKA-00053A-O1; Sat, 11 Jul 2026 18: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-011.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:37:27 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.178:25475] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.51.175:2525] with esmtp (Farcaster) id bf881622-812b-48a4-bdae-9e8d4d470b98; Sat, 11 Jul 2026 22:37: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, 11 Jul 2026 22:37: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, 11 Jul 2026 22:37:17 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783809450; x=1815345450; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=rb5gq6ZHZBxOqKEpOZvFqZlQVBtfnTT7/ZsZ/2gLzGg=; b=Wt1kToVz+LWCPn0Rbg004ANfb1RhoqIBvVFVxRqW7K5n0Vpdg6rcMZxE N6PiPdd4r4KfBkBH0ehpQnAAUoni2xTmAMgo2+EmVJh+m0bKonenjcyll HOrq/kJNql3N+cljm3UAEnF0hRmU9/v20JhlWFwQPB4K57LNWf/DDrzV8 sXJkMxeDLSTBHqI0bGNrOTphsAEAmLfq22exor8qJKErTf33v+ro1T+bq FyRqGBbgLOpkJLXXeIxk0cIQdxrcXzIiDEv9527kOchBUgztb1/sU5Omi 799J3u0TA4F49F99Gi/nMFZj41IxcHvFvYkIeD4o1IEnOLtyX1SgKA0ll g==; X-CSE-ConnectionGUID: YXV/bHzRTb+Zoo+Uf0BTOA== X-CSE-MsgGUID: TGUJ1lNQTMG0RHrO4RPxHw== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23269516" X-Farcaster-Flow-ID: bf881622-812b-48a4-bdae-9e8d4d470b98 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 001/134] qom: Introduce object_new_child() Date: Sat, 11 Jul 2026 22:34:54 +0000 Message-ID: <20260711223707.42139-2-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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.35.192.45; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-011.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783809540795154100 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. Suggested-by: Markus Armbruster Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ Assisted-by: Kiro Signed-off-by: Alexander Graf --- include/qom/object.h | 25 +++++++++++++++++++++++++ qom/object.c | 13 +++++++++++++ 2 files changed, 38 insertions(+) diff --git a/include/qom/object.h b/include/qom/object.h index 11f55613fc..ce6a23b5a1 100644 --- a/include/qom/object.h +++ b/include/qom/object.h @@ -632,6 +632,31 @@ 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. + * + * Returns: the newly allocated, instantiated and parented object. + */ +Object *object_new_child(Object *parent, const char *id, + const char *typename); + /** * 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..b4d181b617 100644 --- a/qom/object.c +++ b/qom/object.c @@ -718,6 +718,19 @@ 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(parent); + g_assert(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 Sun Jul 12 00:34:16 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=1783809536; cv=none; d=zohomail.com; s=zohoarc; b=Gl2vXVghj+PpAWqySJAvKZNhHKUSS4KWqz8m7XoCLpdWLWEZZCCXxSx9kGu0kOBUVtAJBid4wvbPhLHaYLQdsWZFeXPoJtSezkjgbXSDjkHgiK0ue7YAKxXkYRShCz+aByU+0a8Xv9BRA8q83hMp6jAAuizUCDyWuOVheQt2SX8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783809536; 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=BJHzgQeSO7q/kUxGLGZvWkvsNE3nlAStxn6alwbpVYo=; b=V//PfYQiaEEAeZTU/yyODp8rAAB8pc82hup9LvcQ9tUDma++wZSQJPheyEqXy8iE/Y7M0bf5caiASSBcHPktsOL7aIJkkqggLbTvPmfTdVbC7jfxZyN0AprJ3xrk+ZDHkputcKx5eDSXEHcqb96AFjMP54Aw3/mJ8i7bAyvU23s= 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 178380953626188.87124945959454; Sat, 11 Jul 2026 15:38:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigKU-0006my-JU; Sat, 11 Jul 2026 18:37: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 1wigKS-0006mH-CO; Sat, 11 Jul 2026 18:37:48 -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 1wigKM-00053t-NX; Sat, 11 Jul 2026 18:37:48 -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; 11 Jul 2026 22:37:36 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.51:31291] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.58.33:2525] with esmtp (Farcaster) id 556c7a43-e16a-452f-aafd-6d4438fd5eca; Sat, 11 Jul 2026 22:37: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, 11 Jul 2026 22:37: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, 11 Jul 2026 22:37:26 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783809462; x=1815345462; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=BJHzgQeSO7q/kUxGLGZvWkvsNE3nlAStxn6alwbpVYo=; b=JVcoYeOc8r7Jc3kAumqUpGSYYTfvBRSQuN/TA6AmrIOD+uCP1iaWejpT 1w1ZbB/2fFyuX6+J2LwuVRB7d4CqV6E/3T5rNdbQlpzuC1InNemSAV9x/ J95YYaw9OBEIHzGT1S5kzJzawDv1AJPVV3eI313IoyXrhNyuenDkjRJoi gRy6DhgtU/caBgQu1lKwJnMFSWXTrQ500e782nnd23cd48ms4ASJ1he0R XlouJSxZSxAH6Q2uYlgJ4YLraMzzpZEP2btp8vImzYA0DQTeX8X+JMFbb fWku8mx6DrugbacQ/wAbgaMB55IRuP1em4pXgfepGwmyGl1A7AcB1zIRW A==; X-CSE-ConnectionGUID: dFWXWPyCRUaH4y8YjtSjXg== X-CSE-MsgGUID: OOchAPKPRWGaWnQS9N8siQ== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23517664" X-Farcaster-Flow-ID: 556c7a43-e16a-452f-aafd-6d4438fd5eca From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 002/134] qdev: Rename qdev_new()/qdev_try_new() to *_orphan() Date: Sat, 11 Jul 2026 22:34:55 +0000 Message-ID: <20260711223707.42139-3-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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.42.203.116; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783809541202154100 Content-Type: text/plain; charset="utf-8" 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. Assisted-by: Kiro 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 6a3c69ba8f..3f62c8fc2d 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 af87004837..d4b0ed048c 100644 --- a/hw/display/sm501.c +++ b/hw/display/sm501.c @@ -1910,7 +1910,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 e27e5fb394..92030d94b6 100644 --- a/hw/intc/riscv_aclint.c +++ b/hw/intc/riscv_aclint.c @@ -369,7 +369,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); @@ -552,7 +552,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 7e5b5349ba..f05917ad5e 100644 --- a/hw/intc/riscv_imsic.c +++ b/hw/intc/riscv_imsic.c @@ -474,7 +474,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 bd9f77aad3..449cb52201 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -126,7 +126,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); @@ -1051,7 +1051,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, @@ -1143,7 +1143,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); @@ -1509,7 +1509,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 Sun Jul 12 00:34:16 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=1783809536; cv=none; d=zohomail.com; s=zohoarc; b=g4D4R6HxnG8wsq+mBCeH1vy2/1k6QIzZZtcRE2rNFuS3FnUID31335jTUyY+nDaLOsO8L3sWGXIfjpY5I7otJHc0/tl0M+ShHp/914iM8bEfr+vQf2aOQdZzn0Zi4KG0HrtBRxO6Bzy4Uq7P/ejVK/wcyF944FwPeTF+K97TnVQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783809536; 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=pMDhFLVLe52iFEESjI2BUOdg87f0qHOEgA7LeqYFsI0=; b=Fk+VxoT3Zb+zj+UxJw7O6f8YOW/8V9YtU149A1aKnphe20Jr7c88C0xnP7IIfwLrwxNSARUZolqmHBI0GCgZYq3KUd2m4xo63MHJOsK+urnagwYvMiO9ZYVLUmsFA02LmJZevCuqtQ/wckQsrBZ4BnBuMiYfvObtqkmiYlamXrk= 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 1783809536327837.8785100294402; Sat, 11 Jul 2026 15:38:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigKs-0006zs-1g; Sat, 11 Jul 2026 18: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 1wigKq-0006wE-BH; Sat, 11 Jul 2026 18:38:12 -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 1wigKo-000561-8q; Sat, 11 Jul 2026 18: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-015.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:38:06 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.51:8399] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.26.212:2525] with esmtp (Farcaster) id 794e71ce-3ff5-4ebc-83aa-c88d04de0714; Sat, 11 Jul 2026 22: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, 11 Jul 2026 22:38: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, 11 Jul 2026 22:37:56 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783809490; x=1815345490; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=pMDhFLVLe52iFEESjI2BUOdg87f0qHOEgA7LeqYFsI0=; b=OitS5fysu80s7Oj5ZyR1n2d+mA0HxQaG3zaAvCXX6LfJVNTjm9BBq95K zChocXqLKZokCT0sMtim0WWS0Ux46XUb4CyI6bTB7kpekXNOo13NXgJMf 38hJMQBlCldm37UtDT/p0gwGOSXN0qL6ifIn/WXNTBK3Jd7N9T0Z6KQJW 2DWMT6UOipP0xir8ahJ1qTkgFdWQ4KUwt2E3qAMQEClG+fU0IIoibm7LG HYUf8rcHcuzq4L/zxkW5JH3WJ0TV/qYss7BlUDHiOZWb+Z8ZKr5MKw4FS VgMXPG8w7t8Y5CHKjdRwJAeb0F7IjOX+T/VB+cbd/jfDcwiPDrRPWEvp6 A==; X-CSE-ConnectionGUID: rpgzi9FzT9+qmJm9aCagdw== X-CSE-MsgGUID: 9DjULvmqR7+TXJ0ERc1IAg== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23299817" X-Farcaster-Flow-ID: 794e71ce-3ff5-4ebc-83aa-c88d04de0714 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 003/134] qdev: Reintroduce qdev_new() with a mandatory QOM parent Date: Sat, 11 Jul 2026 22:34:56 +0000 Message-ID: <20260711223707.42139-4-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D040UWB003.ant.amazon.com (10.13.138.8) 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=645f258d4=graf@amazon.de; helo=pdx-out-015.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783809541188154100 Content-Type: text/plain; charset="utf-8" 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 Assisted-by: Kiro Signed-off-by: Alexander Graf --- hw/core/qdev.c | 19 +++++++++++++++++++ include/hw/core/qdev.h | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/hw/core/qdev.c b/hw/core/qdev.c index 8a8d206a02..d2c89d0310 100644 --- a/hw/core/qdev.c +++ b/hw/core/qdev.c @@ -145,6 +145,25 @@ 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); + 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 Sun Jul 12 00:34:16 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=1783809535; cv=none; d=zohomail.com; s=zohoarc; b=HPqzSE+aMmJMrP49JvrQmJrjK+rO4wXidtfYT3VdbrS/nVGpSXlWL7swau7ELjftxwQ/gEdTlPVUod6Xv8jbeSbC1aA7JrHP6Uji1eZ2sDEy3S80JRVfVc8Ypd6im++JJUXobwW+N/f60hEysDqMwrd0VKWZqaGnYfOLly6+J18= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783809535; 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=VLjhM31NEBWfVouWqEV8106cxr0+YPYaSVCJ+284Abw=; b=XbjSHl+cOGzyIiv6qrrTXZANmYEoYSUd22+ypgS/Vng/eR8KRIphrRw43rZOS/lUZxf+u0lPv5dUZzIH+ItyYWVF9mofbpSaYGiezDIvt0apdWzYL6yg5IHQxUa/hdeu8rOHCCWWEgETP6hfiU5uXdiE4NkRYhL5vW2bvyYa4ts= 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 1783809535566464.4696179829335; Sat, 11 Jul 2026 15:38:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigLH-0007KT-Dl; Sat, 11 Jul 2026 18:38: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 1wigLA-0007El-HM; Sat, 11 Jul 2026 18:38:34 -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 1wigL4-00057v-TH; Sat, 11 Jul 2026 18:38:32 -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; 11 Jul 2026 22:38:14 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.236:14260] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.42.69:2525] with esmtp (Farcaster) id a3f88929-81bc-49b0-83d8-134390566bea; Sat, 11 Jul 2026 22: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, 11 Jul 2026 22: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, 11 Jul 2026 22:38:05 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783809506; x=1815345506; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=VLjhM31NEBWfVouWqEV8106cxr0+YPYaSVCJ+284Abw=; b=GI7RJ+q9Qrw/ZAHjyXZ89yMrJy9NQ337PWBxPVn1qhW44VGde663pTNP 0WwbtGG/rCNnibPvgXKkBLYKo8KKrCJig1bhE2Dt6ttzJdGnCqRHnv38i EyWdzSS3WmwCMbvAXgnUBYkGg4ezrJ6lnbKpyPX422xqSRxnGqQqHitvM WSLs8NeXCLZlk4w6zevC8fqO9N1IYiGSVzh6P33gC4IwaEd4WqgnGZFLW gh9ivewoLzXzOSIKYgjU5N93Wd5rd7nqmtqB5oj1K2doKJJWgdcQD/X7d oo07dhvucjZeYfx0zW5OLaNK40D+3zuxZa8b7zTPqy67bAFsT79xe6NVG Q==; X-CSE-ConnectionGUID: MxsIAS8xRLSjwKT1gYq7WA== X-CSE-MsgGUID: B308CaNSR0SnPcM98/Cl5w== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23517677" X-Farcaster-Flow-ID: a3f88929-81bc-49b0-83d8-134390566bea From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 004/134] sysbus: Make sysbus_create_simple()/_varargs() take a QOM parent Date: Sat, 11 Jul 2026 22:34:57 +0000 Message-ID: <20260711223707.42139-5-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D040UWB003.ant.amazon.com (10.13.138.8) 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=645f258d4=graf@amazon.de; helo=pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783809540940154100 Content-Type: text/plain; charset="utf-8" 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' Assisted-by: Kiro 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 | 32 ++++++++++++++--- .../qom-parent/sysbus-create-orphan.cocci | 18 ++++++++++ 42 files changed, 206 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 3f62c8fc2d..686dde5996 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 449cb52201..44e1cfa7be 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -1474,7 +1474,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)); } @@ -1487,7 +1487,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..7737c959c5 100644 --- a/include/hw/core/sysbus.h +++ b/include/hw/core/sysbus.h @@ -91,15 +91,39 @@ 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. + */ +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 Sun Jul 12 00:34:16 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=1783809559; cv=none; d=zohomail.com; s=zohoarc; b=V7VTCj9ejivMvSI8SMuceDBReEzBIjvjGlbGBJLUH2RV5lhiiZ9giA4nPEItLODdrwJkoe8HkgAUbOLqqhd8p5/DZQkOwbrCcJOY7fgMUi56dQKbgcL1cs/gQGG/NvSFAeXeVA23U9oiOlZ7BJaq8xds5fkZilvq1O/7kfQM1MM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783809559; 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=SAbO8xtgufeiztqHcf6570YLxbKaQVabWzjh+fB2HvY=; b=Y7uFyAUBTW6O5xtxnHhYJbRcQh5hN0gDMTLfZ/H5aT4L++8u+o5J+sVy35Ey7NsyREnxwkzTV9sLrsrIYwJrchfrw3GxJ5H3rI+NWU17LXpuXB7yV+C8a4nEQsd2X2HtlJWYmPSmDcqEsJtIDy9nk4jW41Eg3Tcv5hxoX0FnA2E= 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 1783809559815827.411842733668; Sat, 11 Jul 2026 15:39:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigLK-0007LN-Sd; Sat, 11 Jul 2026 18:38: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 1wigLE-0007Hv-Ir; Sat, 11 Jul 2026 18:38:38 -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 1wigL5-0005AW-QR; Sat, 11 Jul 2026 18:38: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-003.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:38:23 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.53:21086] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.35.214:2525] with esmtp (Farcaster) id db881b66-8c38-4543-8527-b4d50cb00405; Sat, 11 Jul 2026 22:38: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, 11 Jul 2026 22:38: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, 11 Jul 2026 22:38:14 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783809507; x=1815345507; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=SAbO8xtgufeiztqHcf6570YLxbKaQVabWzjh+fB2HvY=; b=nUwFpdLAmcnzZivr4wfscgu5qnOusDJerIU4vWvgfml98mzOk1QzSKuu x5EDx4pDeLCDcAof2gp5NsUQSnzoeQoLWJGbZQzuE0YoM4pgsxhZ88riF AHXLW9kGCgOdSwPPWEEjq2c0IhPPCChVT8qPS8zUIZHFkMbsjfby/TAbS u4fguj+R++VyVK9y9VRg17rjmgMnR+XajlZrxo/G+VEJW+gB5m9X7ge7j ragsWKYKYC99KAGdWgI9dl6wUpEUhabIX3+fV67BiO6kXhQ2HPLus2uw2 rrkvxIUxoqiTbAS9iJgsT6OtjoQLKQ/iwFrXtDaJOtEhcCvxjL2ikR28f g==; X-CSE-ConnectionGUID: O/2dgsxqTRC/weQi37YUxQ== X-CSE-MsgGUID: nDNvud2SRx+U3uYU0WvduQ== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23516973" X-Farcaster-Flow-ID: db881b66-8c38-4543-8527-b4d50cb00405 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 005/134] pci: Make pci_new*()/pci_create_simple*() take a QOM parent Date: Sat, 11 Jul 2026 22:34:58 +0000 Message-ID: <20260711223707.42139-6-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D040UWB003.ant.amazon.com (10.13.138.8) 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=645f258d4=graf@amazon.de; helo=pdx-out-003.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783809564344154100 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' Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783809564; cv=none; d=zohomail.com; s=zohoarc; b=RAHzXPfvxRweQ0m9EBJ2cg3AV1eU9mWraxQzYycmDKVhH47ud9gukAC4zAy0z8nM9xDKJQcPaSBR2YFrhhFXGq5UaGN80KOj5+ya5r3oJLcKJVlnYccQMGnRubMxsdffd7+tDtFNpaRxa+4HzECiQ8zIZhBbM97f9R8HGOzfemI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783809564; 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=mT9pdS15/yojcMcnDmIrgAsw2IDIKNd1K4JQW5VZ5DM=; b=TW45yKW8bORR4jpVHBx+mRQ01lcw7zZliYcGiRs0WYCmxnV00T55bTmrU9Zxaut8jyPz/MQA/NzJzkAa1wJwNQUh81SaXf/Gk+3yAo9q/6AhPJALU4/MCFH2W8Q89O0/iiBP+ZC7WtP8beIRsLbX6y8kg9w1zLZKkg0FN5u/Lf0= 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 1783809564985243.03807659545816; Sat, 11 Jul 2026 15:39:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigLg-0008PD-Mf; Sat, 11 Jul 2026 18:39: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 1wigLd-0008Gh-Rj; Sat, 11 Jul 2026 18:39:01 -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 1wigLa-0005EG-P7; Sat, 11 Jul 2026 18:39:01 -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; 11 Jul 2026 22:38:54 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.111:28293] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.58.33:2525] with esmtp (Farcaster) id 1fbc9e5b-559a-484e-bcd9-4852ba091b82; Sat, 11 Jul 2026 22:38:54 +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, 11 Jul 2026 22:38:53 +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, 11 Jul 2026 22:38:44 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783809538; x=1815345538; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=mT9pdS15/yojcMcnDmIrgAsw2IDIKNd1K4JQW5VZ5DM=; b=OJHVranEIS8fO0Ist/nl+wIQLPyZ61VPZIVpoEqgoT/eh/pyg3vEZdjZ Eg0skMYLGo7NdVvgynPvJg/NQzuKlPTYQS9HzFzuAzXNV1akII/IFt8pS 4qm3LZWMjtndcZn7W3lSJw/a73qI06w3m9t7wnM1IiuUbVxJIq/87utjJ Ya+1Ah6JGg3gc9ezlXER3UNSBbdIn0NMTOSBU+4s0Wvg3Le7F3nlgq0+f pjXXV4xQKBO0gFnQh/6AP3P0JpqHNs4eUYTMbACqW4bXlpirakM8JwubK p7nUN21QApj2/TvZNyg3ezZvUSAhhOJJ6m0me+T/kKXO6MWNxuZn4urky Q==; X-CSE-ConnectionGUID: uFmroFc4QGaGvXAgUZkntQ== X-CSE-MsgGUID: QFU8anWqQ5C+bI0/WizidQ== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23505449" X-Farcaster-Flow-ID: 1fbc9e5b-559a-484e-bcd9-4852ba091b82 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 006/134] isa: Make isa_new()/isa_try_new()/isa_create_simple() take a QOM parent Date: Sat, 11 Jul 2026 22:34:59 +0000 Message-ID: <20260711223707.42139-7-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D031UWA004.ant.amazon.com (10.13.139.19) 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=645f258d4=graf@amazon.de; helo=pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783809566033154100 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' Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783809576; cv=none; d=zohomail.com; s=zohoarc; b=Kpmvoqw4X6Y2chZUWVsvtKaZn3AqhD83bVl6Zn6dY5L8sZYxi1xF2+oY0S9xRvbO7J4Gnu2+do35mOPPZEpERSy2f+yWNQPeb6boWw7fTxeJMhWfzzTkwEqBKDOZ+1WPKn5FUgyOa2c8+P51XNdtFMMSjgPM8XBjLS9Pv71OEyA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783809576; 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=YrSWDAeAFnuBSGT+qev9O1X3rBjeToZZZAZnecv6a1E=; b=bpdXQKYn/h2A4nNfnndqVhfp6xhcTqHqlMVv//0X+XFSCRv+91kauvk+55VY2H9TtWDlG9GQ9TJm8Ihosu+djX2d8qI87x3uB0WWeoa7a/MBrDmd+o5yuKtifNTZ4vLOiPUzI+8SLXS1cCFkcrU4/Iz5hzCLbwVDMYua0dA7Yew= 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 178380957606828.851101243699645; Sat, 11 Jul 2026 15:39:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigLs-0000f2-H4; Sat, 11 Jul 2026 18: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 1wigLp-0000WX-Lp; Sat, 11 Jul 2026 18:39:13 -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 1wigLj-0005FK-B7; Sat, 11 Jul 2026 18:39:13 -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-014.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:39:03 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.178:31509] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.68:2525] with esmtp (Farcaster) id 626bd74b-45bd-42dc-b5a7-64bcc33317f4; Sat, 11 Jul 2026 22:39:03 +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, 11 Jul 2026 22:39:02 +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, 11 Jul 2026 22:38:53 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783809547; x=1815345547; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=YrSWDAeAFnuBSGT+qev9O1X3rBjeToZZZAZnecv6a1E=; b=LBVQwt4vO8KVxv/fl6aqnOOSuXAmFiD0CnzHa3HAyFCsl2JpWBp3BucZ qKZ5ycWBsRkWIbL3tIZrjEajRoX1i6WWT4p6hxA5NBQg1xc1oo4UJtXOJ FpSlbpJJ3cbZ6aFQz+baXNGlS3eefA9uaeeu3itqNa1eJcqHX/g/I3GkS JT5gks/ztqq0vjJlikv5Cobyq3PK834g8U/I63M0hWDAxgvX81bPO2g7q +1lQrfxmUirtwZqVdPosHOQuolJXJhSVNb0fbIt00oLb1AYqtcF2Xj2Yx IN64LHl92b8+NnXnRRVFIQi2tnYVz30uzXadfCFuu699+YnssaTBisrJ1 Q==; X-CSE-ConnectionGUID: S3t1zc/9QiCYXC4UcOpc3w== X-CSE-MsgGUID: JDeOZLz/QEW6jnVq+A8dTQ== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23287395" X-Farcaster-Flow-ID: 626bd74b-45bd-42dc-b5a7-64bcc33317f4 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 007/134] i2c: Make i2c_slave_new()/i2c_slave_create_simple() take a QOM parent Date: Sat, 11 Jul 2026 22:35:00 +0000 Message-ID: <20260711223707.42139-8-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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: EX19D031UWA004.ant.amazon.com (10.13.139.19) 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=645f258d4=graf@amazon.de; helo=pdx-out-014.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783809578085154100 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' Assisted-by: Kiro 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 beaf64e0c1..c3be7eb913 100644 --- a/hw/riscv/tt_atlantis.c +++ b/hw/riscv/tt_atlantis.c @@ -575,8 +575,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 Sun Jul 12 00:34:16 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=1783809571; cv=none; d=zohomail.com; s=zohoarc; b=b0rToXRIh0Tv+3ZNxoMNFv0Tr+vzQP04orhLBKnWFOMiJ/LlSwuqm3L+nExMNAK1fwMRIQf2i2Bv3N1iMjXSGYY7RlGuGzquWdLf2isnqgg1KrSvdMDU+O7hwmKOTh/DpDu4ABgg3HSO2XbOBjeljQiUFDQ4a+61X3vZi1KbKWE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783809571; 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=2/tPB5nK5CCZaejzBkBCaNYV6BU4L3QqHdr1eu5bEZ8=; b=XB0uJ/gP82ycU4uwrXU7ZFfUSKCxTyFpTGBcv/KdwIbig+2m7cPA6k5mQEk464G0z2qRJk1hNKw296/Yax99GNUhhr0XuzqglL3GyY6/MHIh30Uj9gQWUmziIlFpUgi1jZIrLN+iRCNhUrKkBFbLG0fv5rFdb+By/dlVqrqfOR0= 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 1783809571512427.31536928240064; Sat, 11 Jul 2026 15:39:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigLv-0000st-Ui; Sat, 11 Jul 2026 18:39: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 1wigLt-0000jX-Mm; Sat, 11 Jul 2026 18:39:17 -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 1wigLr-0005HS-2v; Sat, 11 Jul 2026 18:39: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-014.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:39:11 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.51:24725] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.26.212:2525] with esmtp (Farcaster) id 538bceb4-5db2-4d0e-aed2-271f3a1daee7; Sat, 11 Jul 2026 22:39: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, 11 Jul 2026 22:39: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, 11 Jul 2026 22:39:02 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783809555; x=1815345555; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=2/tPB5nK5CCZaejzBkBCaNYV6BU4L3QqHdr1eu5bEZ8=; b=nh1K7vJpnaaXzs1Aunh8qRS5WpS+o/8qh7xIpW/8xIqqbBVNXha2PT8h ltqA5y6sQKS9NpOcGjW+ednt737ognN74P9j8CbDwFcJR8TeIcY70TTEF cGhBgcS1pijVP0vCLPjL5jMl+ljEJCLgC+8Il9d6nB89ghvYbLvokTzbC VcfL8/OaQ7xEj/heS+Etkz4+NXFHbPd/t/evyDvI384O2iug4mgaDyIJo UQKsGScpEvIS8ApGolIgGBT1th+YtXeZsvFF5BVLFrNlfmnwk1Pbiszix vWkJf3fdbKjOg3Jvgjue6wVajVrcOG8rAZCzGQtvQKZSQ4CCNbaBIyMBy w==; X-CSE-ConnectionGUID: 62CIUt+pSJCdPf2D0bdTSw== X-CSE-MsgGUID: 3EOhOs2fQdmYloEKAHzm1w== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23287400" X-Farcaster-Flow-ID: 538bceb4-5db2-4d0e-aed2-271f3a1daee7 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 008/134] ssi, usb: Make bus-layer creators take a QOM parent Date: Sat, 11 Jul 2026 22:35:01 +0000 Message-ID: <20260711223707.42139-9-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D031UWA004.ant.amazon.com (10.13.139.19) 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=645f258d4=graf@amazon.de; helo=pdx-out-014.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783809576481154100 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' Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783809603; cv=none; d=zohomail.com; s=zohoarc; b=m0Yx8f0pYug3glgxdcS/TKuMxMqmo6jwjFy86ySSkGUqDqP6mX704I6eqrfvYLmmx7ixc+IvL9WklKMA93/a80V6yBmuCHG8WstcbBXGr+TtjJ4sb6jalGfs/RbhPfZ5TOLO6HnbOMzUZ0DVPthBa/EaTkvOu2RVBJku9S0Nutw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783809603; 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=n/BOHPcm8eWqEXNzsDs+hkYD/gRerPRLRtrJz755S24=; b=c6wpMmZfzV9kQy0uedVwLHesY6zHRMna5FbAu79Fuq3O/Xzz067BtlvNpmr4AyzcZUo3oeYDfErsfsP+Jl/Pi3iw8frkiecsIEAI4dilUavUxyhb3cyFYwEWOjk35tBuDb/SlA6AIt8sgZI6q9rYtLv33Puv80E11VfXI/z89r8= 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 1783809603783441.23687824633294; Sat, 11 Jul 2026 15:40:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigMR-0002jH-CU; Sat, 11 Jul 2026 18:39:51 -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 1wigMP-0002hA-Hf; Sat, 11 Jul 2026 18:39:49 -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 1wigMM-0005NX-DV; Sat, 11 Jul 2026 18:39: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-004.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:39:41 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.51:19114] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.115:2525] with esmtp (Farcaster) id d389821a-0cac-4a8e-97cc-baaaab8e124a; Sat, 11 Jul 2026 22:39:41 +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, 11 Jul 2026 22:39:41 +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, 11 Jul 2026 22:39:32 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783809586; x=1815345586; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=n/BOHPcm8eWqEXNzsDs+hkYD/gRerPRLRtrJz755S24=; b=cg+oLEHIZSisjFNzkZ+lXwS//Vn9fgYxugLTgXJcgslgUp5cAk3jz03/ W7Yol3q9pZuKYnlOedb/yha8yVCZTgnvJlMSgI32t1QJcyI4A6IeshaqU 8iFhgLR9nZjrAYHGyj/unPswzt5XREbTEHOcT92j0Sjv07e047hTeYNPX +zGI4VkcqVwKtMomA9f/XiBox6sKNqMOEeosvaqD14324lDCoh3+Kb0rv XtufYn7sZFGCuQtbPNww5pcOLk5kPzKf6MiKGO4Wpt8J+BcH90YfKvNTf NccB87Eu4tBvidWrnfyupEc5pQM73eDU1AZ5mBXRxCB1RQJeJOKaruqeY w==; X-CSE-ConnectionGUID: cZkaT/kYQOO/0GHAHAMrZw== X-CSE-MsgGUID: VsKUgFqWSL6d4RLXDaKDUw== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23492933" X-Farcaster-Flow-ID: d389821a-0cac-4a8e-97cc-baaaab8e124a From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 009/134] cpu: Make cpu_create() take a QOM parent Date: Sat, 11 Jul 2026 22:35:02 +0000 Message-ID: <20260711223707.42139-10-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D039UWA004.ant.amazon.com (10.13.139.68) 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=645f258d4=graf@amazon.de; helo=pdx-out-004.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=0.001, 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: 1783809607548154100 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' Assisted-by: Kiro 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 4f1544342e..618b1adf4d 100644 --- a/bsd-user/main.c +++ b/bsd-user/main.c @@ -475,7 +475,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 c08c73fd80..53c7768a5e 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -237,7 +237,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 @@ -819,7 +819,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 Sun Jul 12 00:34:16 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=1783809633; cv=none; d=zohomail.com; s=zohoarc; b=VdzeOLenzuzoqRD94tKw2qu+1bvWjTQHIhrDBj+Jyji4Ixt3Q5iXI6bt5rzm73JNMmmmcxfU8mevh9sv2+Esehl8X0P1jCOYl4GkLNs7KEbqbv+7pdcWMJNPQw6l0GWYiqZQtIhGaWb3pLVRcJF3p+1wKl3mKZv1a42VonYUHbM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783809633; 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=MEhdqOfPkkhqCMQm9ucJ2rRitXNb0sc0jREmbOfT4hA=; b=mUbnXbERgR2OnRk1by8OIlC8e0VdKFrv82Sj/tlI4DTQDtW/LZN8MdpiuRLcAwJwPCjIoGV/1NL8CSrqttAWqnxpRvrR9h8EDEII2pM5LpT2WJHmV5A22I1HVaIgDs0H9hLBq043vGEuSpmVX4dGsHxSk9TE8gR1Jnp4eZUkzOU= 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 1783809633842632.9973466790686; Sat, 11 Jul 2026 15:40:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigMY-0002u3-1a; Sat, 11 Jul 2026 18:39: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 1wigMV-0002q4-P0; Sat, 11 Jul 2026 18:39:55 -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 1wigMT-0005PG-Ps; Sat, 11 Jul 2026 18:39: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-010.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:39:50 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.111:6067] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.115:2525] with esmtp (Farcaster) id 11688c6e-7d1d-4082-8f33-6052c953fb94; Sat, 11 Jul 2026 22:39: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, 11 Jul 2026 22:39: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, 11 Jul 2026 22:39:41 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783809593; x=1815345593; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=MEhdqOfPkkhqCMQm9ucJ2rRitXNb0sc0jREmbOfT4hA=; b=Ia+/epJTaCpegrLY100cB09P2JxrQwu74JF5Jbh2b9h0JmpNQ3jaAPrV k3SdV6FfedvmR6Y87L22ud15zyAL0YGfLlpHWi4808Oe0KMt+LZGqVpVx BgAvSdRqJxdmBF9B4jiYUcdF2BXhRIbQyBlYm55ZNjunQwm3dyPFiNTSf 7bLjWFJXh7QRaF9mjd0mixqxVQGy0qq5fD1fUhRPnz0ayRw9lJTJQ+1E+ PJQoOH1B4BOo/h4osJnTPZIrE2bEiD5PrTOvayWDklcH5jca/2toZIZpW +6DmKyA7ZQXVKn07jol4QJe1EAknIX4CylC6HvRq1xQjlHXDPsTfERzEK A==; X-CSE-ConnectionGUID: deYkzdk0Qj6o3oXBvmMsYg== X-CSE-MsgGUID: 7wc9fV8YQquLtQE2jbrTzg== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23369659" X-Farcaster-Flow-ID: 11688c6e-7d1d-4082-8f33-6052c953fb94 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 010/134] hw/avr: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:03 +0000 Message-ID: <20260711223707.42139-11-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D039UWA004.ant.amazon.com (10.13.139.68) 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=645f258d4=graf@amazon.de; helo=pdx-out-010.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783809637873154100 Content-Type: text/plain; charset="utf-8" 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783809639; cv=none; d=zohomail.com; s=zohoarc; b=Bzfsf5JiVxVz5O4mhv7wAfs6hSoUPoNhLJgtpLMU0jeETD43IwfjCOf02IfTquyZjHMNRe6176jY+W7HJZTH0b3Xjwff+9XSZiKaYWIrELCVM/0SkGsqYFYhgHRLWZpRVxrz6s10uaVRQa1KioJOQPttxXEAND06WZx5+iTS1a0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783809639; 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=pS7iG2bsIwkaLvQewcv7m52mBuYuTvRxQA0zQErAcsM=; b=eTZ5DhBkbCLbXnbhCyiyjjwS/K8LkG6gQDyIqXz3ZRQRjEIoxarNbj/gx3wZNncPZaBefikXqtV3WYD5NnDNPKcH473U9lT446PoQXmzYF1fkMelCCsjtv0RI9e0VM8MBRxsIy1UWvMnzfU4Ixij/bJKmfbxvxvz9E/setT592M= 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 1783809639167273.9153155899961; Sat, 11 Jul 2026 15:40:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigMg-00035I-J5; Sat, 11 Jul 2026 18:40: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 1wigMe-00030G-1a; Sat, 11 Jul 2026 18:40: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 1wigMb-0005Sw-UM; Sat, 11 Jul 2026 18:40: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-003.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:39:58 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.178:18359] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.68:2525] with esmtp (Farcaster) id dd6e14e6-0b00-46aa-b610-7ced99dedd08; Sat, 11 Jul 2026 22:39:58 +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, 11 Jul 2026 22:39: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, 11 Jul 2026 22:39:49 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783809601; x=1815345601; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=pS7iG2bsIwkaLvQewcv7m52mBuYuTvRxQA0zQErAcsM=; b=lwrJ5jbFjBINMTdA1IYKTHwORHACy5B3c5WLubzKXYa1CSKMJDe2CZd+ mk5VuUFInHX3dA5lP4GT9zCneBjIOz/8MypSH/vm11NQk95oS8FfZgJoj 6Kw2iPkey8nHnTkKziyIyv3bFs2KKuQqQNeJxVmJbUsFULvqp6vzO+WL6 MzOYBs13rsQzWun+hT/dYrsvNJdc3yd6w1ZSmYlLPoh6CUUBP8gc46Yrg 42gXcRrtr/qzJr02yReyHq9pTBX5QDMD22ykKNYPMzYo0XAjuN6vwfQTf NO6rmju/zdPTvvlUzALPlFGytZ0BKrXyj6q/g5eqgAAFfrZAPpK9YDM3J w==; X-CSE-ConnectionGUID: BzEh911sT7uHA1IuDS8Whw== X-CSE-MsgGUID: gFPIJ2TTS/mF2zw0ChF3hA== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23517006" X-Farcaster-Flow-ID: dd6e14e6-0b00-46aa-b610-7ced99dedd08 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 011/134] hw/tricore: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:04 +0000 Message-ID: <20260711223707.42139-12-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D039UWA004.ant.amazon.com (10.13.139.68) 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=645f258d4=graf@amazon.de; helo=pdx-out-003.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783809641275154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783809662; cv=none; d=zohomail.com; s=zohoarc; b=iZFTO4EUv7NPPSwQoL7J0Bj9GtQO65WTh7bnXrIaFqbeCJ5fm9+bDD9wnl13sOaJy8/pT/i/KraGnB2aTFQekBIzRT98E/XZGb3D7J+4U2fLh94FHlR/B88kl99K6rRXEnrlL7BlunBCxHQPYmIUz4DoHifL3zO4JrlRsP1lccA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783809662; 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=eSRbV7G7G+bleKDtHv/YImdHl7QlpX/35p7U7LwVHOw=; b=DSdf6C7uy7JFZUsTh6wCYoPPFbmjxtWQAfl9dPa7AKLbMIhO/HMeNBIaXMQJ7P1eBnmUBX4/JKSifdIDSAm1evdWZjbLSgg4Jb/umpYN5CMaKnrWMticWelxKUcSuejB/RupqWDz18EK+Rvcs2ip0ezEHINu/y9dgo+q9rPrquY= 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 1783809662687820.3383133522417; Sat, 11 Jul 2026 15: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 1wigNL-00049R-T0; Sat, 11 Jul 2026 18: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 1wigNJ-00043m-EO; Sat, 11 Jul 2026 18:40:45 -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 1wigNF-0005mV-87; Sat, 11 Jul 2026 18:40: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-003.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:40:28 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.51:31681] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.35.214:2525] with esmtp (Farcaster) id 69686bc1-4ec4-41c7-a277-8d93fb6fae40; Sat, 11 Jul 2026 22:40: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, 11 Jul 2026 22:40: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, 11 Jul 2026 22:40:19 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783809641; x=1815345641; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=eSRbV7G7G+bleKDtHv/YImdHl7QlpX/35p7U7LwVHOw=; b=dR2pg7wnLXoUfifgOoWcvHjGsNTK5Ejej1Jn8C7+2v81fZxgOBSRLwOD DXJ+EVyJQgEoa8UUbEldr51NeBYRyHnNR2fhaTWr3YTCyFamAlwHmsuXu qTUfYiVfQUM1EaUOLAolkE4hdpfIBpDrJEzP+vin1s2iFPsnUL1fQ2U3/ cjoN2sn2roJ8Rd1IwlRS8IhU3qElMi2wbn1QT8hzNsrLgL58YE0ZGhYQL tem5eVr1G14T/6hNIu6Fo1MyYF6jmuZb8bP72YoBEMelcYHSvGZC6cutU NKe41UkqOoLZV9tiUUtF+aJwBjlP6wpCAePy0vDAi7oD1cZGPAaDEGcjE g==; X-CSE-ConnectionGUID: OBrRkZmQRha2ZyFwcTJHng== X-CSE-MsgGUID: fkAkwbXFSC2hofj4r1cHcA== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23517013" X-Farcaster-Flow-ID: 69686bc1-4ec4-41c7-a277-8d93fb6fae40 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 012/134] hw/xtensa: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:05 +0000 Message-ID: <20260711223707.42139-13-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D031UWC004.ant.amazon.com (10.13.139.246) 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=645f258d4=graf@amazon.de; helo=pdx-out-003.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783809665262154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783809672; cv=none; d=zohomail.com; s=zohoarc; b=JZzxG25gJa/cgmdsMUJrUuSNPzWcnWRB8KQtvU91Ue8p+ceNCyZL2zAVJBoo9pNuUJiA1ldyf2wkFN17U4W5ldES5zIwNQh00clTj4N0B9H1QhBzeubep3v5VVbpH5YRkyt2EEsW+R8YjW3bhzd64kdYV/GoD1MFLBvkdsjRAnQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783809672; 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=8qB3yVqVzEHdcQcyvRloVub+hLfEuv5n21OR2C+g0CU=; b=VbTph3p/UsRlhVnd3W1lmtdrB0dDOt399RSmdxaGAGt7+fGm7EkflqJuwFZGYNZ0bRfM7kSuiBPW1YQVnaG6Sf2/F+sN3OeV62hxzc9uNP2e1GD9sDEDlyH/AtDiSMi00yTjSJPNxLzPNPrmqCYP2NmLt0I2I7VEgOAW9uD3Im8= 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 1783809672089898.9908715327801; Sat, 11 Jul 2026 15:41:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigNL-00047u-19; Sat, 11 Jul 2026 18: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 1wigNJ-00043v-Hy; Sat, 11 Jul 2026 18:40:45 -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 1wigNF-0005mg-Kr; Sat, 11 Jul 2026 18:40: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-003.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:40:37 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.111:8026] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.35.214:2525] with esmtp (Farcaster) id b54a1bf2-3fb6-4c80-8bc5-1137b2e286ce; Sat, 11 Jul 2026 22:40:37 +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, 11 Jul 2026 22:40: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, 11 Jul 2026 22:40:28 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783809641; x=1815345641; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=8qB3yVqVzEHdcQcyvRloVub+hLfEuv5n21OR2C+g0CU=; b=O0fVth1pzSzpLoc7etW0tmUqTjGXrcM138jUFYbinMQbgOOwLvxSUQxZ ZY3DfRht/NlsfscN1cSwlNf+DggfU/YFhhiRqueRm+9r55X+Ue8XAdBm/ XtR9tJlFhX6U2kY7mGOBSDrA/wQFLYTksjVSYMo8yE4Zvi2NqjwyqzHHj ZueazEIMyNawKmjzY8BmlTQv2A8NZlfrBjRyFK3PoUICyCsaCXi1/6ZRG qUQQ7gKgd7BkWywR5OL+laZ11BVuL7s+HD/RwoObszmJbpyDJiKgUxqy1 ritI+gk5QbDHycyTtnZpbOmGCEwxi8qynTvTT+I/X3i6VGa+HM2lx+P0h w==; X-CSE-ConnectionGUID: mhBJrtIQR7GXKYwYvwUE/Q== X-CSE-MsgGUID: kUFf/vlYS06QlpXKX5gf7w== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23517015" X-Farcaster-Flow-ID: b54a1bf2-3fb6-4c80-8bc5-1137b2e286ce From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 013/134] hw/alpha: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:06 +0000 Message-ID: <20260711223707.42139-14-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D031UWC004.ant.amazon.com (10.13.139.246) 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=645f258d4=graf@amazon.de; helo=pdx-out-003.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783809675907154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783809660; cv=none; d=zohomail.com; s=zohoarc; b=Qn2JvCZ8l8ciWSHqgCnek8EdMLOHrJSZ/WP3kENZkOXTT8qToEdcUZ+fpcpdis9KGRPuarq1KYzTURkwc266bT/VPh+2xY5z7xCwxACgq61H5p1UEgQzYKyEoBI20TwQ8XvpqN7s/fNkpIzRuu1iIBNL0gT+MEwwO2N7/3F8zqA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783809660; 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=ZLtpU6t0pkB0bJ724CMQihST0BRaAPM8GUkYNktSJgY=; b=mzb6Ytx1oBdKIDBimPHlvB8JlgAL1uSb8x95zyqvqTHSUfoI+9xLyyniMbk29HeTMaon7gWzXMJc7Z8f32JEfnux1bWUgOzOaYjGlLdDd6qWNnrYQT7UafxT2aa2PL/sYAR83LBDg7B/x2v8PM9E1aSe8JjtdHpfZcjvI/Tnsjk= 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 1783809660692871.807717560615; Sat, 11 Jul 2026 15:41:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigNS-0004XF-Ie; Sat, 11 Jul 2026 18:40: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 1wigNQ-0004Q0-D4; Sat, 11 Jul 2026 18:40:52 -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 1wigNO-0005os-AX; Sat, 11 Jul 2026 18:40: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-013.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:40:45 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.182:20728] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.51.175:2525] with esmtp (Farcaster) id ceb96b90-fa1d-4111-9117-20fc3f6abbc4; Sat, 11 Jul 2026 22:40:45 +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, 11 Jul 2026 22:40: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, 11 Jul 2026 22:40:36 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783809650; x=1815345650; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ZLtpU6t0pkB0bJ724CMQihST0BRaAPM8GUkYNktSJgY=; b=aCFBKFS4xbAGNih85Hk9xnN0+ypOjafqjYpgvWmZcZ6WzIsrnPS3XMfX /5Kk5A0hF8V7dSKFn19Gh9oMWFtP9NSf8nCga+/hI43XC7j8lKVt9T/7U MI6YtBnRwuIgX/wdeNqHW2vSDyWk5Dz98fWalUvxEMTmwS6IsEJbZ/b5k Atn5bZoHrWGAz3oWXW3rmqoXvNtIPMw11LNhbhJwpV5CTIdwcKvGZ4cqE JiQ2MZp94P4jg8h57A9HTEs++9Eo6JMV/F4aHsaUOb9vfjy7Joi/isdCa H/SRttZFxHEdnDVuklKcSrrV6hcicMScOKoYa3teWWCW/LlK9a+eWWfZS g==; X-CSE-ConnectionGUID: wmjeqMWCR/CG0ag96zf8IA== X-CSE-MsgGUID: CBhn+ZQLROyDI1olWo342Q== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23296563" X-Farcaster-Flow-ID: ceb96b90-fa1d-4111-9117-20fc3f6abbc4 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 014/134] hw/nitro: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:07 +0000 Message-ID: <20260711223707.42139-15-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D031UWC004.ant.amazon.com (10.13.139.246) 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=645f258d4=graf@amazon.de; helo=pdx-out-013.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783809664078154100 Content-Type: text/plain; charset="utf-8" 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783809684; cv=none; d=zohomail.com; s=zohoarc; b=kBHbyPCbImWjdx+6hJOf1xZY/+A+E2MZrQlhEyVUNr7C+pCouzIWjK2NJ4ZqhqNyyJMGvbaDy+Vv+UyYu0fOqoedoHrMBADuhidILmdN8v/cVPK3onxtzydf5xFS/pxddgI8Uc306/XUjPgu4CZ5qvOQvXXMx32X4/HdcdT4YzA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783809684; 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=WM1j05fIaWFt3IO+Q9HTPM9A3OHYUoVX37R/2BMVYho=; b=YielqHnHYe5JF+8XLnF6//oa0XlBXTab8w5cGO2Ku5L/ALX69+S1njj/h8/pe/GRDY8JAiB4MQQHZGkSykBphrG58zHIt708M/AfhitaPIq/k4dfcOdLreAxhC7U9HvGQqPpfmCiKrVhaVc9vRC8ad1bcMqCc/JOWPAk45H5kzw= 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 1783809684747213.81068371073604; Sat, 11 Jul 2026 15:41:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigNv-0005px-5e; Sat, 11 Jul 2026 18: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 1wigNu-0005p9-7w; Sat, 11 Jul 2026 18:41:22 -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 1wigNr-0005sj-Nr; Sat, 11 Jul 2026 18:41: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-013.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:41:16 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.53:25429] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.35.214:2525] with esmtp (Farcaster) id 962a8927-0119-4610-9b8c-881f727643a5; Sat, 11 Jul 2026 22:41:15 +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, 11 Jul 2026 22: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, 11 Jul 2026 22: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=1783809679; x=1815345679; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=WM1j05fIaWFt3IO+Q9HTPM9A3OHYUoVX37R/2BMVYho=; b=bZlkBGMhu1uGzAY6ir7Nqc2AToHFpWS5JtUNqZq9Ug+E/Hidqjq9fwRY RE4J0vHG2EqnBGcKnfzEvBf/LdO7JAWkawRmzuGYwYBVFae5t7fwiG2Vj QqIB59cFJGA3+OxXDYdN6BsoiFBJUXUNF7ftV0gs5we5+fjCC1m8+PTdm jMF9AHScElDI2YWt520HXvYjjj68nRSWZc7lmB3N5VKK1CeagJUPcKoVW X9PvooSHVXK/7SmfhNshyu4dhblofVbRY+0fAc0ULB3PmN92lNMRqFDL1 XG5E11ZDK8tEAh0VPQ83uqfsHLWSNYxcJy3pb/nr3lD3D6HhNInK8IVHG w==; X-CSE-ConnectionGUID: jsT+DxrsTgC9vbugxkXjzA== X-CSE-MsgGUID: fWKLAXSBRq6JoNaosp0bsw== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23296577" X-Farcaster-Flow-ID: 962a8927-0119-4610-9b8c-881f727643a5 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 015/134] hw/vmapple: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:08 +0000 Message-ID: <20260711223707.42139-16-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D045UWA002.ant.amazon.com (10.13.139.12) 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=645f258d4=graf@amazon.de; helo=pdx-out-013.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783809689700154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783809699; cv=none; d=zohomail.com; s=zohoarc; b=MQmA/vz4TuaZS+5tGd0MZJHESPLiT5qm23hQks+FBaVYxuJ7VqkAjl9BYXViZsDRzDnchRZ0A3tvkLV8Hx9izbD/q0xf8n3PGmWHtnIoB2ljeBK2b0Aw1TEs3m+OwfB+4VB8hD1qQYSBLy/ma8GsbDQT8y41F5m2rv2zYWuliCg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783809699; 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=RncaBp9AWxGSftZuWkeLsuFC+aVbpad6KBOmlHbCn0g=; b=QqITjxby9jQpjYLSu4mvQgvvxDU8qkJcKepkdS7vSCVGIKER7rYSrLgShQYffN2Cxzp+pMu8HcXUtu7TEOpS+nHnVO6eil4HfpctI5tFU2NJXmeTNyk7MNlfzi32PJ3Uj5Xd/sPN7ui1gZZOvYkOd0e772a1QDtfcuaccD4QlNw= 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 1783809699143985.4840634088612; Sat, 11 Jul 2026 15:41:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigO6-00060N-QR; Sat, 11 Jul 2026 18:41: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 1wigO4-0005y9-RV; Sat, 11 Jul 2026 18:41:32 -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 1wigO0-0005vV-Oi; Sat, 11 Jul 2026 18:41: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-006.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:41:24 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.111:3368] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.51.175:2525] with esmtp (Farcaster) id b8ce2edb-8dd9-4367-a36d-b9ae8d54b95c; Sat, 11 Jul 2026 22:41:24 +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, 11 Jul 2026 22:41: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, 11 Jul 2026 22: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=1783809688; x=1815345688; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=RncaBp9AWxGSftZuWkeLsuFC+aVbpad6KBOmlHbCn0g=; b=PfTCjpIkkKisgkp7wgYa9Uqm5uT7wIT8JLBlEZsf0A9elnwE9LPRDyXG a/NnCpPD0PucoAQ0dpQ+ydeTDwzogJO/cqHjY4x0/O8IZybJXlmbtPPRK ZzA7nyIbeXdqTqrOm0xJv5+nfFD4MRzSC2XwQwB/0XudIbkUr5DHQgwUE 61kX6YFRE5VFiwJH8jELxu8nGLHcVxxtPJAcASUGcI6zNKa4DZueoQM2u HAZVDSGa16H5c9OxfnSsuqFsKxeZoIf9G7ZrtKg1JBTkOPH22SO9YAHSj OQh/VeEaN3c2oHc4P4KMCItLcj0wgYaSWuvXI7cQPyiaVrVY2dact5QPm A==; X-CSE-ConnectionGUID: lePvNfXFSIWjokDUljhAPQ== X-CSE-MsgGUID: hLPlCHmoSZa8jfJ5+5+dFg== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23522100" X-Farcaster-Flow-ID: b8ce2edb-8dd9-4367-a36d-b9ae8d54b95c From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 016/134] hw/hppa: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:09 +0000 Message-ID: <20260711223707.42139-17-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D045UWA002.ant.amazon.com (10.13.139.12) 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=645f258d4=graf@amazon.de; helo=pdx-out-006.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783809701976154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783809703; cv=none; d=zohomail.com; s=zohoarc; b=WnF1AguccGcH0qYcu8gmh7kaxs8WRWYBGux++DvY8YpzcRRwI04HdRzRa6sBVALPZiveVJQaiHsgpZlZdVvPjSCM5M5qadeUV0qdah77VFFSjuJE4612x4ROD5vyYezmLNp5llBJK1JKsn68DhypfoaXJ6CRViacNL6VQwXDkhs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783809703; 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=qZLqcWFwyyuo1+YqN2tsQP0C3YqE8iqlsYVFe/D6JGY=; b=baWlY0HehUlv0YfFjVXq0jhAjFoGL13thkpBKAePJ3ZxbfeKkBK+FPK/zgJQf2JhEJX9gaHznfT+Rb2sU83bshm2fos3BrVsRnvkE8/uwu4NVWPS/j9xIcEYsoofpmRe6i+WSOtyRUjAp8NIUdCwwxhT7RkubTMR04qkEsyghlQ= 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 1783809703966222.7412370189793; Sat, 11 Jul 2026 15:41:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigOB-00067x-UJ; Sat, 11 Jul 2026 18:41: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 1wigOA-000663-K9; Sat, 11 Jul 2026 18:41:38 -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 1wigO8-00060V-C6; Sat, 11 Jul 2026 18:41: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-010.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:41:32 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.178:14607] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.58.33:2525] with esmtp (Farcaster) id 658abee9-6d46-49e6-a77c-01fad9bdae41; Sat, 11 Jul 2026 22:41:32 +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, 11 Jul 2026 22:41: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, 11 Jul 2026 22:41:23 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783809696; x=1815345696; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=qZLqcWFwyyuo1+YqN2tsQP0C3YqE8iqlsYVFe/D6JGY=; b=PwPT7KDpjwDjU9SJHzSx0E7jeEtMqbQX9hsCNy941TOyGysF1oNyuWQU 6ImTQSK/UHxhuMO/SCTExjGUEHPQJOXt5khuSEYksF/TGHnTIH5fJRoQo PLcb7p4KY0wWZ6TBcMqHvumGGwevmDL7JSDGg/mcVTmRVO4f4UmGukpLW AfshVC9txAn5PiA0lROM47msKT0l893Zvf0Z5LaldbX/D5vNMKuFonrpG 03fZ4MmocQE1QsU8EAJ40lVJjVb8ZJoNCG5cyXOaIOZHkm6o8WUQ0uS6n xiDMycZjmoO7+Gdr0XSPmYCVYd+MnwVuv6v6CtBzol9wTsxBCdX7c6y5i Q==; X-CSE-ConnectionGUID: JsFsr1VpST+86DzooOXBiA== X-CSE-MsgGUID: 3JKju3gKQOSXd6reQ7S0Wg== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23369710" X-Farcaster-Flow-ID: 658abee9-6d46-49e6-a77c-01fad9bdae41 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 017/134] hw/microblaze: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:10 +0000 Message-ID: <20260711223707.42139-18-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D045UWA002.ant.amazon.com (10.13.139.12) 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=645f258d4=graf@amazon.de; helo=pdx-out-010.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783809705765154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783809747; cv=none; d=zohomail.com; s=zohoarc; b=d2pOaT8Ty4bviPJrnyeYaAiBehxFN0su+duT/AS/TW91Vj2WW4WPLilkwzaHcTlMCk7Urlqt/iVN3+I3j2lwaps1nCklmyQbBkz+R8rIPm7eoeZ+pYMjgVstA7V1SpDlRrVq6e83eSl3vfVo0UCVlPVNBY5PGkPxg8CW43V1LBc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783809747; 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=qMPbGFqCKxPQM6ElTAz9beLpsHNRC+O2pYsyGiJtOHI=; b=Z/0H+DeADp330S6EYkrtSExL6pZ9dUSin9X1BoH8WHDXIH9hwZ+xRIjdmypCAH7prImlJkSMf5ngd+5MQtCHjl+U+nZ12RX0gnrphOCTx4R1us/Vmu8ZGjwa4PRH9z26XyvIpvoCXTEweg7fMROqLPsuDxPw8jH57NFg9mSN45w= 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 1783809747084871.3305004799483; Sat, 11 Jul 2026 15:42:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigOg-00075x-5e; Sat, 11 Jul 2026 18:42: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 1wigOf-00074A-1J; Sat, 11 Jul 2026 18:42:09 -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 1wigOc-0006Cw-SU; Sat, 11 Jul 2026 18:42:08 -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; 11 Jul 2026 22:42:03 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.51:23420] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.68:2525] with esmtp (Farcaster) id 4974013e-61a9-479e-b25a-f2e429ecef96; Sat, 11 Jul 2026 22:42:03 +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, 11 Jul 2026 22:42:02 +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, 11 Jul 2026 22:41:53 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783809726; x=1815345726; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=qMPbGFqCKxPQM6ElTAz9beLpsHNRC+O2pYsyGiJtOHI=; b=jVT7szav1pBjT9+u1xll1+2AoFL9+N9Ih5SNLC10DUvnhFBdPxgm/Aup UjUma9144a7wFVLxTPeBKsljQwS3b2jnjT6ydb7U5LbnL0uWpionYAXJt 3KeVJfj0FvSr5KuGBI7bt8SAVbSINwOo1D4dKikgHSIGj2RJtjwVQJXc0 nYLipYoo0KdCI/TNqaZSimwldmnZFeB7w3tyf9T5M8DdIR6k8J4cU6NaL +Ql87hQpgnR16H1iuPaXm4lyYAOO0/TPz3rZxMLmfRvkr96IzFlWCTUc9 gGvO4SnIcScnGxU2xogEnadwbDPuMyYINmqUUHtj2n9fX/jNdNQgjHt5L w==; X-CSE-ConnectionGUID: iDaGxdddRseyg5kwJExRAw== X-CSE-MsgGUID: XB4nlmNtTa2yGCl+3ocxRQ== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23522119" X-Farcaster-Flow-ID: 4974013e-61a9-479e-b25a-f2e429ecef96 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 018/134] hw/sh4: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:11 +0000 Message-ID: <20260711223707.42139-19-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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=645f258d4=graf@amazon.de; helo=pdx-out-006.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783809749409154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783809751; cv=none; d=zohomail.com; s=zohoarc; b=ShewgzF3J79u1k+gn4MIJBRiOhlFA26BCw6nw9O64A+nvd8SoEVkowOiPDBNtWu0r2kwUhAGhc1dDlMuE8cXrvX3uGy8JiBa6NBiS8sJEQrgT4J+tSxGPtpjXLtCI/HMqZIMzYqw+JTw4vD/5jLCujtaWI7Q0Ei/sPQUGyk4goE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783809751; 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=+t5EqzySplPJ9N7zbCElMsPochR+1J86mJG1fCoxn+8=; b=KSGlhHP7CtXRroObLPksle7oMSp524ZP/3uLtYJ3T+/ZpCP0EoTlL0UbqrzZljvwEUvtsX4k/a+XQGH7ZkJpyj3N6fO31i0hnHz5B3F7Q3qJc2xAgXwd23L0QOmXrCqE9rH5wOPe8a4cxJcafg6F3jMsJMjQJmq42vIYaTDIy4A= 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 1783809751855565.3196731007182; Sat, 11 Jul 2026 15:42:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigP0-0007SB-Fj; Sat, 11 Jul 2026 18:42: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 1wigOn-0007J3-TY; Sat, 11 Jul 2026 18:42:19 -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 1wigOl-0006Go-F2; Sat, 11 Jul 2026 18:42: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-002.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:42:11 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.111:13943] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.51.175:2525] with esmtp (Farcaster) id 05fab316-0cc3-4779-b2dc-88fa9d38af89; Sat, 11 Jul 2026 22:42: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, 11 Jul 2026 22:42: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, 11 Jul 2026 22:42:02 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783809735; x=1815345735; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=+t5EqzySplPJ9N7zbCElMsPochR+1J86mJG1fCoxn+8=; b=HUpn6saBeSzBur3JXupl438RVecVWnwEcA/gHJ3OmPTLzBU32/E7bWfu voKHeTOl9lX9PPZ8+iSOwLrw05Q6veyGybPSFnrBK9aGZDblwQ9Rt+wEB W/G4ZmUeq/7qjfdlhvMRlPj9/QOAwMJxb4ZxQbWtsVZ9mGQsUZa9QkRlH H8QL4pfTLInEITKvZRxVdPHhZC6bn80P0lxeqkzQdyH+Se0HZDRUdsvwc 2V5i1FFyc97KsnH68Wr3TW7YtmxglH8/nQbMc0C1hA5+VKY4KNQSHYLyq kuD6QzyAWaqvTDEYy6cfbnypiUAdMvN4jstwMShWnr+I/UsQN60sotg5i Q==; X-CSE-ConnectionGUID: vyCgnje4QJu4A00k6ahqxA== X-CSE-MsgGUID: pDv8qLWYRUqLmJClqabsgg== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23505489" X-Farcaster-Flow-ID: 05fab316-0cc3-4779-b2dc-88fa9d38af89 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 019/134] hw/s390x: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:12 +0000 Message-ID: <20260711223707.42139-20-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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.1.125; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783809754547154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783809764; cv=none; d=zohomail.com; s=zohoarc; b=SytgN43N606/RWNkuMfAQo6Euyf6aXsKJDNV0+xUmDoIgCRxNXAfp/VrTRQVvTdAZFVJp5kVUYZ5kFAQBIq0epWWRgCTF8J9YPUXbCX+tuMOA3Yh+A9tVkjaWPfeXT5XPokAJSaitHuIU68D1cnVhDr+myuBnq/Kezo3hFdsB5s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783809764; 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=CxYyBfxDbaMfcxArffSj8jnOR+h6XtDLUmZdKW5BERA=; b=AREYU8xE8xuy1ymK0f8FLPsI1tPVe5p1Uh5xK8hTFRbIO1ce8w6E030Jw5mYcwdQHVT6uy816ZjCPazbZpYoPBVA+2s3fI0IetTcXP8ak0937ZB8IFIks1xxNtdVd9rnxaXmggLXlE3ezIXAT0SJKNc0IgKy+Zj0cZ1MLo1tlAY= 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 1783809764248885.6700721599092; Sat, 11 Jul 2026 15:42:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigP6-0007eG-HL; Sat, 11 Jul 2026 18:42: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 1wigOx-0007SA-2V; Sat, 11 Jul 2026 18:42:28 -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 1wigOu-0006Hs-JR; Sat, 11 Jul 2026 18:42:26 -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; 11 Jul 2026 22:42:20 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.182:26453] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.47.135:2525] with esmtp (Farcaster) id fd6a478e-9d5f-43ff-8be8-c72d81021656; Sat, 11 Jul 2026 22:42:19 +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, 11 Jul 2026 22:42:19 +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, 11 Jul 2026 22:42:11 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783809744; x=1815345744; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=CxYyBfxDbaMfcxArffSj8jnOR+h6XtDLUmZdKW5BERA=; b=QOxEzwuz9JTgdnmYhtC8IWTaPSzbiAeEktlYnAZbO64uBqKmYm9Dwh/a QTmIa2v8jXMC1Ktm3WvyXakeZoASGKSCiVCIWvrAwMY3iQsqH0EFQDgJL wRiSEz5G/w6q/rRItpVYxqmRUJqfNi2l7pRo7mMSycgnvrFtwy07Q0ydz rmYYlZZp+5EWB3g8IIjfh33zTX0VExe6L+pFuHL1bjRAlAgC2EORjvZaP UNtoz6F2goBlnjlWIEhbgXTDBkLzWNGaWg8Kg82q+/dI7yVBY/Eni8iUY IEc7pq5l0zoccJM3gA351scpUxxKaxCZ9wRuJNiFsBxJHrmzm4UsCLs65 w==; X-CSE-ConnectionGUID: WZTfvrzZSq6CPJGBG2eQxw== X-CSE-MsgGUID: Z24ZuzPZQ0Ce62+N2fDV5w== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="22997381" X-Farcaster-Flow-ID: fd6a478e-9d5f-43ff-8be8-c72d81021656 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 020/134] hw/or1k: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:13 +0000 Message-ID: <20260711223707.42139-21-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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.245.243.92; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783809767301154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783809810; cv=none; d=zohomail.com; s=zohoarc; b=bco1W4VRs6KFPNGMrGnKXeKV4fFDl0IhhCmARHNiM7CAcsQK6KkmnCQKvct2/FMl14Mes0GfPtDpse3iuHOd1NK//Ll/tvFfT5B0ZAyshNdTwWiufe2DuENy+e4VcdseaKJ4dJU2BpZ9kk7np2kD9ZokL5JyeE4cqpPz8BX/NYA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783809810; 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=amUTtS63hZcSlS7OoveApwBcr3wy0b53OLhAMkpFVuY=; b=J70QsvmjzEFceEIsHbTX5FEEHvrVD0vz1VYlDZvTmQOV+dVLh2Z599Go+wA7OMpSdgLZV90J1Dy9nLueUD3KQaN5e1Mv3Y6CDhfek+BOBDYyUZcrYl7dqPSh1FNBYF0c3NEeO/0pMY/uzg+nLj6g3UsTBoFOrm2RKhBAE4k0nV8= 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 1783809810000787.5261265373844; Sat, 11 Jul 2026 15:43:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigPs-0008Qu-My; Sat, 11 Jul 2026 18:43: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 1wigPR-00083V-NZ; Sat, 11 Jul 2026 18:42:59 -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 1wigPN-0006N2-Q3; Sat, 11 Jul 2026 18:42:57 -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; 11 Jul 2026 22:42:50 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.53:27198] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.58.33:2525] with esmtp (Farcaster) id a184983d-b27e-49e2-acad-b48f7b292003; Sat, 11 Jul 2026 22:42:50 +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, 11 Jul 2026 22:42: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, 11 Jul 2026 22:42:41 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783809773; x=1815345773; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=amUTtS63hZcSlS7OoveApwBcr3wy0b53OLhAMkpFVuY=; b=gsR6QgCsFYKQv6FnrtFNwcTpmeP66PjcZ/nn5NN9VFLCpLPJTi7k0CjO huzAwYKGLuHHURA1SUurIq1KXu5aJEhfIh6vWnVKYyR23mM6nGUqJNI4M 9yRh4nSceui2bc5e4/cnnpl1EGde6geaHveTzqOJiOXcdt1P26lCG5ddT UIcVs4ILdIYWjN/E4cE/RJBb4xmIgOD1PMHx1pr0RngoiwTnmVUwSERLy hFd+qMxekzK2ce3k+4YNBfrpvuNk2PgreUPJ9cVz9MMbpGlC/k9QR/DYY Sb0K03HUR2IJgEFnPLajRaRc+yNC1Ow4fyraZSy8hujUTThdZMSh4OcLb w==; X-CSE-ConnectionGUID: MWq9QtFtQgy8xqEt9S2dPw== X-CSE-MsgGUID: U34BOxd1Qg6i19uikBh5vg== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23269615" X-Farcaster-Flow-ID: a184983d-b27e-49e2-acad-b48f7b292003 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 021/134] hw/loongarch: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:14 +0000 Message-ID: <20260711223707.42139-22-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D044UWB001.ant.amazon.com (10.13.139.171) 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=645f258d4=graf@amazon.de; helo=pdx-out-011.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783809813012154100 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/ Assisted-by: Kiro Signed-off-by: Alexander Graf --- hw/loongarch/virt.c | 43 +++++++++++++++++++++---------------------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/hw/loongarch/virt.c b/hw/loongarch/virt.c index 45acdc3ec1..6ba693874f 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()) { --=20 2.47.1 From nobody Sun Jul 12 00:34:16 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=1783809808; cv=none; d=zohomail.com; s=zohoarc; b=HilTaqYl7fzLoAquxj+rO2w9gBbETEyRc/+Kila1kCivBcCJdDF54G6BjEIX3nup+vr4Vj5MbhreYN3Cb3NJQI7GFB/gR5vELSAllLCu3iAMO727F326SDJEmtBkwCycVFN49fBwCNFW/+sfvbYFkdXI+YLeYNWmu45YVv0cXjg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783809808; 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=+JQONIxLiKgSEvBk5WxaMW61+AyonZAMUAgYAySg9EM=; b=X7Wwwjub7jEjh2NCrxLvXQitHr3VrqZDQzwQqc3zuX+2MI+0VDWoUe+1ELyIBpXIDVrKloLWdO9PRB5kU93dq/cfQPa8fm9mmutWc51vM7E0BVZlWiKEgkEqCpjyn/5OrB62y5tSnDljf6Zk9NEKngyMtiWwWb9FbeASINfOwIw= 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 1783809808838106.84733151292335; Sat, 11 Jul 2026 15:43:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigPt-00005q-CW; Sat, 11 Jul 2026 18:43: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 1wigPb-0008Cr-Kz; Sat, 11 Jul 2026 18:43:10 -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 1wigPW-0006PQ-Ql; Sat, 11 Jul 2026 18:43: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-009.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:42:59 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.111:25026] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.47.135:2525] with esmtp (Farcaster) id b513e70b-a5c0-47ef-86ff-ad21e2d96af8; Sat, 11 Jul 2026 22:42:58 +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, 11 Jul 2026 22:42:58 +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, 11 Jul 2026 22:42:49 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783809782; x=1815345782; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=+JQONIxLiKgSEvBk5WxaMW61+AyonZAMUAgYAySg9EM=; b=SL4xkQ/GgtB/jNOepxMPmo2BoLiCZ8UbAzld1qbf4anC0vk3PXDuxoXF 4Q12DEOFG/s9obLwa/NAPXml7rJv+mp1VJ7TLR+bEQrEXPZrG4a1H6tsu vvwiA0dFXwCx9lIqIS0TZaiCGEgl1SoT7dGc2s6k6M6/UV/sOqJOZlOp4 1rQgAdzbQh98D3YZ7kMV4G0pyfveUASsCZ9ExdxJM2rSvNsY92csPfGC4 mLJGb3dQuS6yzFlWhEMb3qz2mLor38aJVoQxMM5Wp5RnLnL9BcHycnHD6 kwnOIx/b+Vl9pCYeS+wd4vpp4Dtx6dIDKgm82VZNu0mSUDS1vSYwlS2ZE Q==; X-CSE-ConnectionGUID: /makQJAkTm2qnQcrBo0gWg== X-CSE-MsgGUID: fuBZ8w0mS1KQy/OUsY1fSQ== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23390381" X-Farcaster-Flow-ID: b513e70b-a5c0-47ef-86ff-ad21e2d96af8 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 022/134] hw/intc: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:15 +0000 Message-ID: <20260711223707.42139-23-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D044UWB001.ant.amazon.com (10.13.139.171) 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=645f258d4=graf@amazon.de; helo=pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783809813088154100 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/ Assisted-by: Kiro 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 92030d94b6..8a0e5d6d1c 100644 --- a/hw/intc/riscv_aclint.c +++ b/hw/intc/riscv_aclint.c @@ -363,13 +363,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); @@ -383,7 +385,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++) { @@ -548,11 +550,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)); @@ -560,7 +564,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 f05917ad5e..1587be5e8b 100644 --- a/hw/intc/riscv_imsic.c +++ b/hw/intc/riscv_imsic.c @@ -471,10 +471,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 @@ -493,7 +494,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 c3be7eb913..6c12d85460 100644 --- a/hw/riscv/tt_atlantis.c +++ b/hw/riscv/tt_atlantis.c @@ -494,7 +494,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], @@ -505,7 +506,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 44e1cfa7be..3ceb476b84 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -1115,7 +1115,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; @@ -1124,7 +1125,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, @@ -1357,7 +1358,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, @@ -1366,10 +1368,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, @@ -1377,16 +1381,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, @@ -1395,10 +1401,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 Sun Jul 12 00:34:16 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=1783809824; cv=none; d=zohomail.com; s=zohoarc; b=V0UBNQmCqoayW2nVBg9IMeiLolvGzhvQCcJvFJKxLLPV6TFhJR8F+SI+/4OTkACq6OUgge/U/QPAe7jZ/c8nRlyEp3xUAA8yXG5/6+f48uMKEgju272GiOI2LjHkHQ/KqG9y7v5MaDTl+A0YH3TfTbZRPDmNKcN6KGzsg1KsNzA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783809824; 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=ipuG9DD/JbTnStr10bTe+gLM1Cmyua+CwvPb3LwRECA=; b=kX/WrQ+/4623atozxWKzuWISZtaNjYmrnisqyngOzBCnqksA5pJTGWg2i+TzdP2Y1bsYTM5MHsEWLopN+Ui0P4puohGSy2ilrPip0tk/dMnf0lR3HI00SgI2EG7cZdho/JsmMbtJhfpkXTQVqzshpPSuWQ/oT4aPYG1I73D0LFM= 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 1783809824554735.1687169295013; Sat, 11 Jul 2026 15:43:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigPu-0000EY-5F; Sat, 11 Jul 2026 18: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 1wigPj-0008JK-Vk; Sat, 11 Jul 2026 18:43:18 -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 1wigPf-0006RZ-63; Sat, 11 Jul 2026 18:43: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-013.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:43:07 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.234:18710] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.31.54:2525] with esmtp (Farcaster) id 624545ff-e39f-4163-9dfc-222ea930af4e; Sat, 11 Jul 2026 22:43: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, 11 Jul 2026 22:43: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, 11 Jul 2026 22:42:58 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783809791; x=1815345791; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ipuG9DD/JbTnStr10bTe+gLM1Cmyua+CwvPb3LwRECA=; b=EJdGICfHaSs76fbh4ZmYzvYlPtrUkuKOkdO7w/nH0r++Wh0CsawguXAG mCJonLIbn2BvlapFZEEaIP22YCKgO4Pep/SlY+jGb0h+dMpnS9MDHLgMK QF3M4KlxZqAZsBTnmahZTKxxuQEnYY7SVfO3iK5Tlg9fDKhEH3yt7OmcY KIGUm+UCDVl5teO85D4UlQ0AMtCULSaKAlRPtc4rfN/h4WD8MmIaHDJmZ kjIFCcHH1/mXCFmktcRIb+Kcr5s5j9j+vWp3VLVRiRC3aWVypCEhPSGaW quk1HbdjDg7bO7ROCNaIl+zS/W7t0eBC6tQXbUqrC5dbHmyRyjZB52dlO g==; X-CSE-ConnectionGUID: R/0HL0xDTuCkliZFlif8eg== X-CSE-MsgGUID: NE5F6SR3Sbi2rwz5WAN3FA== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23296603" X-Farcaster-Flow-ID: 624545ff-e39f-4163-9dfc-222ea930af4e From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 023/134] hw/pci-host: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:16 +0000 Message-ID: <20260711223707.42139-24-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D044UWB001.ant.amazon.com (10.13.139.171) 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=645f258d4=graf@amazon.de; helo=pdx-out-013.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783809827991154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783809833; cv=none; d=zohomail.com; s=zohoarc; b=fs1xI8n9JyHsPqAtoZTJsll62QgsZl6vZoPyLW/PJW8ajA0hXF+q0XodUmS/azSG/QRCeI5VXBQmLdSAnb7x5Xchs6WbPu2R0Sv3Iq2/6C1unoeE+YgeKsvyX9Kfi/OvlntmliMsTz7WEa/Z9kTN9bgNq0qT75MRChcf9N97cGQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783809833; 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=45A33oyPgVr53+XxI+rH4M9nPamamXWfeEWIM4Qs3Ps=; b=KNoIUcJ0ViM8bmZbcyuuwCSQFhkb8iLnDgSeJc+isMX7akKulzUReP3oqVJzzs6G7EpkZ6sO6SjPEG+/twwGd8CSgGI/DnOOa3g+k2i4WW2Yjutmwi1iP1mgW0ULbat3kIpsVQ+CoxihbUZinnDjCB5MOTQyUegOYZumvsih+lo= 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 1783809833720379.17136159187737; Sat, 11 Jul 2026 15:43:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigQD-0001dv-Bp; Sat, 11 Jul 2026 18:43: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 1wigQB-0001X5-2S; Sat, 11 Jul 2026 18:43:43 -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 1wigQ9-0006Y0-7A; Sat, 11 Jul 2026 18:43:42 -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; 11 Jul 2026 22:43:37 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.51:5481] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.47.135:2525] with esmtp (Farcaster) id 6f056bcc-6d8a-4ae1-b424-59b9689dfc47; Sat, 11 Jul 2026 22:43:37 +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, 11 Jul 2026 22:43:37 +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, 11 Jul 2026 22:43:28 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783809821; x=1815345821; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=45A33oyPgVr53+XxI+rH4M9nPamamXWfeEWIM4Qs3Ps=; b=F0dqsahhQIeQxpCXjuVy5A5KWGDjSZ4GZhRF08USiHFd6EB3vu3jdM2c bYarpl5M8MCPO+S37giSm8henkOm/AUEAjyhG6xaeG2kyRe+ehKwDUDzn C7szDLgKXOTPotvct18I20DXFnZ+XkQlKuz1cN9N92i+e/4hpL16qELDM B9DDNyto0Y8KzmdrHoMi6Cm0pGUbF8CGrUBtr0kh6cyIDda+aPu/YKLXs o88Hez2KRmMBaOdd6u7PLldjtXIskYWqFbboyxtqdz/7kwajax20GVOdY yq4jdz72DoSquntPJx7PXmf8JfaAEwLuG14RPuNsaCuyxJuqCVh++eC5X Q==; X-CSE-ConnectionGUID: O+KDORbPQTuhL42+c7zJpQ== X-CSE-MsgGUID: KU4tn22gSWmOHo/oG83zdA== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23505511" X-Farcaster-Flow-ID: 6f056bcc-6d8a-4ae1-b424-59b9689dfc47 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 024/134] hw/core: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:17 +0000 Message-ID: <20260711223707.42139-25-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D033UWC004.ant.amazon.com (10.13.139.225) 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=645f258d4=graf@amazon.de; helo=pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783809835645154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783809848; cv=none; d=zohomail.com; s=zohoarc; b=IBPo4AQpX9S687Rou7Zoycns8mwrDM9yublt+9xKtM9VSMJ20EfPxBCdSKnaSKc8KBqewwhp1XubNyn5RwjIJGDbzuKcVsvjwXZxeWEcCXPVxiCV/pHnv7MDBl23wMbhT3AIf8ijfylHM7DmTrS5AJkuEGTrNtDQjzlQX0knXlw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783809848; 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=CoS5Dj2E0LgqlKQAVHErckFrZBKKr6KJ0lTnLP0iMEc=; b=Ym5ct7H/G86+d0Mm+7Sc0Jnd6QAp8dXsXNyruvVoC4CqXV5oRR+/u6ta3JSCum199wZx2w7JS2AAslniMTVZ0lrAuQ4A53BzRw84yE/d7YgDpWP4i9U/oORW+/QXB+yO5I7PudQxvxnLn16nOVzuEwA8n9FDMsV9W7eOZM3mCAM= 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 1783809848231331.5929436503616; Sat, 11 Jul 2026 15:44:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigQT-00026s-Er; Sat, 11 Jul 2026 18:44: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 1wigQJ-00022K-W5; Sat, 11 Jul 2026 18:43:52 -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 1wigQI-0006aa-3N; Sat, 11 Jul 2026 18:43: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-007.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:43:46 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.111:4252] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.26.212:2525] with esmtp (Farcaster) id 9e6cfa11-1f3b-4793-8d50-388a03c819aa; Sat, 11 Jul 2026 22:43:46 +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, 11 Jul 2026 22:43: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, 11 Jul 2026 22: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=1783809830; x=1815345830; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=CoS5Dj2E0LgqlKQAVHErckFrZBKKr6KJ0lTnLP0iMEc=; b=da50/Ag8Aya+doFX372mN/zOaSQAHkRy2XFlx9OxKvrgZ4LLrbUr0cLb yoOHBI895+zUbHmn+WIcf+Tcb8u4ji+PnIjTrVC0/eTmLglVaWL+PugO8 Vr+hbQkDVhaQ83ffXkZK+O1pJo61khoAQ9k9sZIdXVEUZ+8zw20r9KhOf dLQwmPgqYbMzCD0gA5O4/xs63sw6F0hRDOHhkEKljgBrGgU/f/MfnE8cb aaEkgQw8lAIOt9qgyZEW5V4byBlXkxWKaLWHckrp+DZwFfd4IOxyUJbxW oBJG1OqjyjWn8caW5Gjak8IqCZn/af/1FdfB6BCQJKXXUi+lhYwKETL4I A==; X-CSE-ConnectionGUID: AEGJ0GL0RuWkvtCuxY5+gw== X-CSE-MsgGUID: 4P9nnzO2TQ2TvlV6uPcq+Q== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23483259" X-Farcaster-Flow-ID: 9e6cfa11-1f3b-4793-8d50-388a03c819aa From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 025/134] hw/remote: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:18 +0000 Message-ID: <20260711223707.42139-26-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D033UWC004.ant.amazon.com (10.13.139.225) 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=645f258d4=graf@amazon.de; helo=pdx-out-007.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783809850726154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783809856; cv=none; d=zohomail.com; s=zohoarc; b=Kd22ErJ5Y5de45qtlfW6PLXW5qdg/AmFnBJTra0mSXQ5sY1CkWjn69lS/ja4zA/GoWjtULoe1Jh2A5xxbN9eHy0mEPqbHb0kFKl5/YR8uWjkHZYHS/uJT3STjgBeIv6aZvGX+A7TQyG0a8srQjlPRXEDLK/HkO6w/bZh/6fK2WY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783809856; 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=ni+Kq3j/pIwNs07brhCKfRLZ0k5hnlL5EYwcu6HfXiM=; b=eF1eqEB63uhBbTObxLV1aVj0/NkUOxbb6FUDDO9OjrAnUkaoy4b9U16mM1I0/2ThPX3d2J9oBajYB3374jbZR7hsECdnmkkooQt6BTgHlbakZabRGQHvCk28vGIlzgu60LJnr3N2LIfaglD7ChV+pFTWdx5ApC0OcaP2u7drmIw= 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 1783809856098258.8601656845909; Sat, 11 Jul 2026 15:44:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigQd-0002Lw-HP; Sat, 11 Jul 2026 18:44: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 1wigQT-000285-2c; Sat, 11 Jul 2026 18:44:03 -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 1wigQR-0006c0-5s; Sat, 11 Jul 2026 18:44: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-012.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:43:54 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.182:6758] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.42.69:2525] with esmtp (Farcaster) id f479b5c5-8e62-41e9-aedf-32a4852f0d4a; Sat, 11 Jul 2026 22:43: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, 11 Jul 2026 22:43: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, 11 Jul 2026 22:43:45 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783809839; x=1815345839; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ni+Kq3j/pIwNs07brhCKfRLZ0k5hnlL5EYwcu6HfXiM=; b=Kolh/V4mOeKlBsGo7s2kGjD3QOHl8H8CuuWXCzWcnKnfVh/27S3Ys7v8 htVthr090bxZA2cV2H0p15220xBlC5PyReLUk4H3kHCLpplo+miqmWpJQ i4RDUyVgoZx3dpv9P/1GFzRhDA3+fiGX3Y7iu/+DuB6Umv6JtjWb40Pno hSNw4SMZhJ5MOzW17ugE0tzzUcnwVw8SF4Lg53DY5pv5ccfHIcvARugV8 lf3NqvmtmlYkKXEMsb5FO+wdrwJNPMdEcaoeaLxpcgvhELrDBNJXtZG8I Sh50L2BWySYhgy2Xt1j9ndy7OK5ZmGHhBkM7Gk7wVFQLVr3xcvtHemj0I g==; X-CSE-ConnectionGUID: i+0PltNQSDKr2aEJAiq4lg== X-CSE-MsgGUID: bmg0UM0bRSeB6lkoVOj4gQ== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23293881" X-Farcaster-Flow-ID: f479b5c5-8e62-41e9-aedf-32a4852f0d4a From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 026/134] hw/ufs: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:19 +0000 Message-ID: <20260711223707.42139-27-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D033UWC004.ant.amazon.com (10.13.139.225) 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=645f258d4=graf@amazon.de; helo=pdx-out-012.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783809858658154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783809911; cv=none; d=zohomail.com; s=zohoarc; b=c0Zd8kxxITACBZoI/TS3vaFVZYP+sllfr3PtPpJSuXJOYOHIqDO31wH4+k2GOZvLLMhpt8f8A50qBNinGAIFqJutScp5Cu9QobcYwOuUdftS9ssVZLID6ncp5H66p6iPN+kAS57hEv3VTrQyd4zAgV4qltGHbprf6lcyq4v9/yc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783809911; 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=hK9nTMa03296PNCOz6yEjb/LLI20+7ejx8YZTeehV1g=; b=AUOvcwbgFdZzvfhNmn1Ce70ir7oTmqPNnSh/ofv7VVp3rKIrC2eCQEPYq40QDsWInDU4jwb2pE0MO8RSn7oIYG/qECPn3SXiVt3XM3POHheyhSS5YUOCsmvOMPOexfWtGucbiQyJLkPWlqR4CgFPwecqNwoHoi1a4rNyQyKk/mU= 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 1783809911692195.71506142992484; Sat, 11 Jul 2026 15:45:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigQz-0003Xp-0t; Sat, 11 Jul 2026 18:44: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 1wigQw-0003WX-PP; Sat, 11 Jul 2026 18:44:30 -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 1wigQv-0006gy-1i; Sat, 11 Jul 2026 18:44: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-001.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:44:25 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.53:2072] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.58.33:2525] with esmtp (Farcaster) id 6b140c75-28c0-414a-b2fd-4b651d4b84ba; Sat, 11 Jul 2026 22:44:24 +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, 11 Jul 2026 22:44: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, 11 Jul 2026 22:44:15 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783809869; x=1815345869; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=hK9nTMa03296PNCOz6yEjb/LLI20+7ejx8YZTeehV1g=; b=OjwkP05hmriENFprcXvS0kkVZ9Ewp9xzpHTXHVzzJXHxeYkHQsd07EnQ fAh+hqwslJb1pw36Qs9icWRLZzmLrk4hvlIzfpdG/AFI/B2SqudCJzqHk WQFgX0qAxMf6hOWf875bnjCvqWHkeXhA2qVNucvo7HGXmac8tLFPQSR/i k1ZX1NmTADzrdzk34S4KTq4TIw5UOWDxkIMi+RFmGQP71UKv07G4nVNte iwhVI7RLzafTCulL2WXauvLQT5Z2er50i7o7BT11q0IO8y7az7horHnQY lS8cAD59Mgrwn5x2ehFCWQ4aqzx1BkpOX0013YjdOMvND2dJzwoI4YI/G w==; X-CSE-ConnectionGUID: KsY1QBI1TYiURt41FuJRUA== X-CSE-MsgGUID: czJkX5K8SOypcJRnpy0qmg== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="22997424" X-Farcaster-Flow-ID: 6b140c75-28c0-414a-b2fd-4b651d4b84ba From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 027/134] hw/nvme: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:20 +0000 Message-ID: <20260711223707.42139-28-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D046UWB004.ant.amazon.com (10.13.139.164) 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=645f258d4=graf@amazon.de; helo=pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783809912884154100 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/ Assisted-by: Kiro 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..82a55c4536 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), "subsys", TYPE_NVME_SUBSY= S); =20 qdev_prop_set_string(dev, "nqn", n->params.serial); =20 --=20 2.47.1 From nobody Sun Jul 12 00:34:16 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=1783809895; cv=none; d=zohomail.com; s=zohoarc; b=Z77Ur07fFy8BrlC4B8oggCP4XlYowFNUZe1STLjYlkO1JcG9UJ44HMRRp0+ZMwI1sVaKE3oocpcOXrmFlj07+6Vpf7wu5vDtTXlnP/zVl5XE2s9FtQTL52aMljonb8XrlzpTojZCRY36BTCpVhRtKbFpd2Svg41qoou04Q6GEwU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783809895; 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=5cfdeGZ94ng1f2/yrbZLU9UstuUxwClCVLdCpyQUfcM=; b=UgHSS3hgDGPZ5+I8w4FVchFngFABR592JeFlki5evkgw1Fby6pB+MSrLvZep75KqC57g0VdD5BkhfyTOgkJ/MihnV+NGs7rHZSF3HTcmMviGxuU/7J+fX8KD431TnKbYz83/9DHDEOx2EJlzH9vtLcfp+/PW3sf29VzvszDSUlk= 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 1783809895283323.3776812997413; Sat, 11 Jul 2026 15:44:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigR7-0003cc-Ev; Sat, 11 Jul 2026 18:44: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 1wigR5-0003ay-Bh; Sat, 11 Jul 2026 18:44:39 -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 1wigR3-0006kk-C4; Sat, 11 Jul 2026 18:44:39 -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; 11 Jul 2026 22:44:33 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.111:14182] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.35.214:2525] with esmtp (Farcaster) id 815c1d41-7761-4924-8c54-6c06a012abd1; Sat, 11 Jul 2026 22:44:33 +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, 11 Jul 2026 22:44: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, 11 Jul 2026 22:44:24 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783809877; x=1815345877; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=5cfdeGZ94ng1f2/yrbZLU9UstuUxwClCVLdCpyQUfcM=; b=CG2bqF1FHX/jNrBRss1cgeIYruC2ViduX3Kun3X7HfNKcjeWoMXJgze8 yJTXTuByLx/kBDw++6DG9WSZ/6vNc6Ay8d0RIei4NHCGoWs3iIC9SMcK2 vKn0zne452bBdmvdMlAFA+cZuuLvRMiSkWoOYcLbzKH48ovszzSnfuevo aQbDlvAvjgXSQIptwWDRF14MNU7aHBdCFhnaxkuNgV3hy4mi2ttykGJv6 CaAwWEmFHJ/eoSNIyAt3RpJ9WZ6dhD68pZ2RjbnIH9VZENb3dIiwxf9tC MjDzUgYYR+UUMYSOvOoYbeZvXEvBvI8ZDN9v6g4uG5DZFNB210a5qtBus A==; X-CSE-ConnectionGUID: xKPxoZ/CTferNMWVeOapLw== X-CSE-MsgGUID: krGVRDxXTm++oGWCgeATew== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23505532" X-Farcaster-Flow-ID: 815c1d41-7761-4924-8c54-6c06a012abd1 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 028/134] hw/vfio: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:21 +0000 Message-ID: <20260711223707.42139-29-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D046UWB004.ant.amazon.com (10.13.139.164) 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=645f258d4=graf@amazon.de; helo=pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783809896986154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783809897; cv=none; d=zohomail.com; s=zohoarc; b=ZIig4Pno+KOQZrUYJaV/o4lZpBGbmdulu7le61woQkl+lJwUMLPuSch1SdWv6KNgP6U13Ttau6Q+K1Vze3enBGjwSHTxr//qXu0o/1SdrYrEJbpXoFQCovZkLpZbaX4qEYKbPPN43GrqRsAc64qQag/hISNwZcAFuf+wksYHhYU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783809897; 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=pI9W8gUYIlE2xZtcksTB6RU3dYY5+SFf4yvlIvjioLY=; b=KveyYeb65eIZKR9BPvvzfKAJvfAd+8nop7JMlFSnGr2nqRpxEtY+GO9dE+UAhp31idQGi13yaIBs09TfMxQh5Ds1fTY1G6rZW/ruw5DIdMnYT5+18KJcLuBOuNGnKCap22LzV+me5TUDDkwF8I6qxq27pMr2hIIKQulqu1pPheo= 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 1783809897329444.1359205348872; Sat, 11 Jul 2026 15:44:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigRF-0003mJ-SK; Sat, 11 Jul 2026 18:44: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 1wigRD-0003k1-T0; Sat, 11 Jul 2026 18:44:47 -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 1wigRC-0006lc-0Z; Sat, 11 Jul 2026 18:44: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-009.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:44:42 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.234:28538] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.26.212:2525] with esmtp (Farcaster) id 8a449a25-6e8e-4d82-870f-85d7bf33146b; Sat, 11 Jul 2026 22:44: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, 11 Jul 2026 22:44:41 +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, 11 Jul 2026 22:44:33 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783809886; x=1815345886; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=pI9W8gUYIlE2xZtcksTB6RU3dYY5+SFf4yvlIvjioLY=; b=NHB44su4veey9mZ1iQoe/huAs9YHeqgMPbcMqTn1wMEbmnJ/THdV9mOt kw4J+AV2jEkCqIOPdbWW5OJXgb3QLnv+nZKWE6y9FCpZ0tB3x/1jLR0Ly 3YpsapaD6ZoNCLFxwMnG/penFowLFbvx35M9XY4zWkGyWiuFlzBDdIkns eDKJ3+fzSrY1IcKYzL7WcxZVbDJ7nPwnssLY6bswxxY1rJ/31xULVKPAP zqPYzgvBHWjF6iF9MIZd3G384gk4dhKBFsgBWXWnDAf4ZHvQsmN/mwm8y Bmm7mdRyFT9MtFldEX/K5ER1CX/8TV1JRqz+ltGCu1xuc2rMDq7med+M1 w==; X-CSE-ConnectionGUID: XFGaawobRpGcB6dEP7gOfw== X-CSE-MsgGUID: pF/TPiavT46xqRmpGGAnZw== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23390403" X-Farcaster-Flow-ID: 8a449a25-6e8e-4d82-870f-85d7bf33146b From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 029/134] hw/mem: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:22 +0000 Message-ID: <20260711223707.42139-30-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D046UWB004.ant.amazon.com (10.13.139.164) 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=645f258d4=graf@amazon.de; helo=pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783809898540154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783809930; cv=none; d=zohomail.com; s=zohoarc; b=GHYMPY1qG/BUr+qzNJSfJo84n8bMUmQP6uiSOm8KMjCxeXvxTWgKnunKZam/+wPeWtv1I/vZp90k/0CRnLrbxAaorfJgBWc99ro8RET7kVnIMkIBT1kZ/tXDRxsvCixUG88TDn8/9CrUnB0xWFWSUeGGa/1mlj4aFZn22VA0o+g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783809930; 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=Y2TUUu2qqLIXNp2cpfe0Ogcsy7/erOc56olEpJ6irWc=; b=kriZLbbcj1+Tcj35FG4sKzEsvP8bIARwwDP8fh3DNzrArAiK5kDsyrRkfG6Q8tEHvgRfUSvp4RyaxlSt+vS8e3Qv5UcxrTS5xulBg720n/c5bCbX/+kxFMD1y9685dcNsBhIXsl9VsLw0M+78o3Ddy12rCYI+D06uyiOpm6xUSY= 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 1783809930728307.01608334941545; Sat, 11 Jul 2026 15:45:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigRs-0005Nc-UF; Sat, 11 Jul 2026 18:45: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 1wigRk-0005Ir-6T; Sat, 11 Jul 2026 18:45:21 -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 1wigRi-0006va-BY; Sat, 11 Jul 2026 18:45:19 -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; 11 Jul 2026 22:45:12 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.111:30324] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.40.123:2525] with esmtp (Farcaster) id abcfa963-2c60-46be-bee0-51f676f104bd; Sat, 11 Jul 2026 22:45:12 +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, 11 Jul 2026 22:45: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, 11 Jul 2026 22:45:03 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783809918; x=1815345918; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Y2TUUu2qqLIXNp2cpfe0Ogcsy7/erOc56olEpJ6irWc=; b=j7eqN1kATrAtBaCh0+07OfbFnEU8jZALVWL10Pt1qQZmGA7fT+vQtMni wmDfr0X82SGId+Fn6B/3L36pVQXjUo68MF8CY1+Ee2yeE6PeCZjWHsFZe 9Xq5kVIirWFekkW9dmUodwdeS9cjy+V6XTrOZXX3iBi4MKDAMTA+cNOXn URbLjX59I+UcN8WmR+cTptAEn9y5f5pS1v34kTIe2Wpqp55iwDy/0tlnY KUKtLNmBJMzHM68O7er6lbZExSbqP0sr/92bC98Zmf/jLjHV/9c4fkcRG 7B97ycO0Gd6mE9W8iZf1ryzXouBk3mQ3WuYl1blHY4DnWVgM0Kl5SHtQe g==; X-CSE-ConnectionGUID: Jz2PoMFgSUiJP8SpcAJJ1Q== X-CSE-MsgGUID: kppH2PwkRhy2zEEJRBO3yg== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23269649" X-Farcaster-Flow-ID: abcfa963-2c60-46be-bee0-51f676f104bd From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 030/134] hw/cxl: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:23 +0000 Message-ID: <20260711223707.42139-31-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D032UWB001.ant.amazon.com (10.13.139.152) 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=645f258d4=graf@amazon.de; helo=pdx-out-011.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783809933511154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783809936; cv=none; d=zohomail.com; s=zohoarc; b=bf95GjTOWz/RJJniAyRnh3Hp/ScVoAVuXwuP1JauPfbTUvLUlbZLiaXjLNCGaislkrcLDQWp0H0MrrrCnRYbDy56tNn3om/zDpSi8hugsz2Bfgl8kxlB4PXX3/Oc46SIRtcFwkD5KqVksoCjWhmgqzEs2HrUH+x9vE7B9o9ueqA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783809936; 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=pIYExrBVqffjhEmg/kIfnd01/Jqg+0TepAxoq/TOvVc=; b=PKd55NP/mRAzGl1Qrn05Lln6pBwvIE47iQUQJbH1JDRcnM76hL90diTKEW7Op8ukPJP1T//wBSmdDZbaXr+cm2oRlXxosi4ufoGYVJYCZdC93wDPLFLxcgIgeSjf08AIo3MNlWdlcxBEcIff4z+bw8FfTTRaFHihfI0M8zi124Q= 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 1783809936661139.9838781440278; Sat, 11 Jul 2026 15:45:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigRt-0005Oc-Hs; Sat, 11 Jul 2026 18:45: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 1wigRr-0005Ln-Fi; Sat, 11 Jul 2026 18:45:28 -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 1wigRp-00077s-Bt; Sat, 11 Jul 2026 18:45:27 -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; 11 Jul 2026 22:45:20 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.236:19708] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.115:2525] with esmtp (Farcaster) id 7e4c701f-53ba-4fb4-884d-d862a854859a; Sat, 11 Jul 2026 22:45: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, 11 Jul 2026 22:45: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, 11 Jul 2026 22:45:11 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783809925; x=1815345925; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=pIYExrBVqffjhEmg/kIfnd01/Jqg+0TepAxoq/TOvVc=; b=hBBGkDpyyAqlKN3mwvyyI9y11y+xlc70wtDO3CfWSf9BHT66KhQ0YPDQ bxcYd+dxXQrhTnXS2hFUFuQx/hd9M4/N+CLx3iWHIkTncXVG3+Ji060kZ mi7VBrALI/Q1o+13TlkoywbLZGTg4tzotHTCnWta6R3J1ah5SkUE1Dxij GfxLH6qak2TNY+3+l2gf2l+9dI6D+l3MH7a5imRJgia8SGQ56tdRailcQ Qhblzn4PNi2cyyaaCQ9LnBciNU9L9yooF/dBlJt/XzIpFFC3IOWOb92DR AxhzmF+3h8PmDXivbPLvoUBNiV4Qi54hZBhCNwkH8qJh1GEMULQmdTSW2 w==; X-CSE-ConnectionGUID: 4WeAthXyRSONiHU8rXEi1g== X-CSE-MsgGUID: dcBEp1CjSOCDapYOSFOMsg== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23483294" X-Farcaster-Flow-ID: 7e4c701f-53ba-4fb4-884d-d862a854859a From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 031/134] hw/hexagon: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:24 +0000 Message-ID: <20260711223707.42139-32-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D032UWB001.ant.amazon.com (10.13.139.152) 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=645f258d4=graf@amazon.de; helo=pdx-out-007.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783809939692154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783809947; cv=none; d=zohomail.com; s=zohoarc; b=R5XCNwdej89kODpDqw39Fzl26LMWgZH7iEO2LZbZIdUaSY5EtdPEsMViajfXZl3tL/lvar+Ju/kygkLLvy/rdMb27crtYYiCTPDE9PqrRG8O7czqfhM546IGbR7UbmjWQ5ssydnWCbBaj65LuCem7wqBwYjn+g9ZkeRA5K/SAOc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783809947; 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=Yjj6bjc52hJrvGNoYEgZZOaZL70oE4aLasfwIgRs9Yc=; b=YhgEcfG+rXkVEoBhJMrM+AbPVAzax8ZR7fmsCN/BLxW91YP5Jl1A78Xh0Bym67NdxYU0p6K0n8lXHYOJNwy9PZjVK6eKjoGfQmyTRevIobH2V8DotGFO2ezQs7AdU3MMU1H04mjG0shKQQMH+UAV5RQjKDQ2hywgeJhZLeeM0YE= 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 1783809947083560.544674359212; Sat, 11 Jul 2026 15:45:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigS1-0005bG-N6; Sat, 11 Jul 2026 18:45:37 -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 1wigRz-0005Y5-A4; Sat, 11 Jul 2026 18:45:35 -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 1wigRx-00078c-5x; Sat, 11 Jul 2026 18:45:35 -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; 11 Jul 2026 22:45:29 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.53:19086] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.58.33:2525] with esmtp (Farcaster) id 727577cc-1245-4712-83ba-d12936fa9405; Sat, 11 Jul 2026 22:45:29 +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, 11 Jul 2026 22:45: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, 11 Jul 2026 22:45:20 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783809933; x=1815345933; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Yjj6bjc52hJrvGNoYEgZZOaZL70oE4aLasfwIgRs9Yc=; b=YIE93Qpj7iHJbINzEhNK5gGNeOxyB230xUi6YGu4DMTLQcONVsazxvgt bcRxEY1EN6Dmgmdj2U3GesiplqS+6SqDdbXCcGwOVyFGg0LxMT/VWErpn 5FfGhgO1wGtcVOclPXOjYD3vT/lvk2B9yAqLMLbVO7/DF0gUBCEVYUZG2 YyFl/mqN742Feea17hBnfBolphjgfITv0oTq7SN0fTs1bGUSWYeq4xB/F z1n63vTPSl3hAgav8ohcyqvZCBY6lj1xXe0Tpqzx6/lwG92PAOl5KWTLC 8CIGgLg07J73q4Ch+UbTOBgW1wmr9+YA0ed19hSB1TsTOcRZ4/rNhLGaN w==; X-CSE-ConnectionGUID: 9aEUzVSDQJefVn+WDWwBBQ== X-CSE-MsgGUID: nqWeb9+BSrSaT3C9ZULJig== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23517779" X-Farcaster-Flow-ID: 727577cc-1245-4712-83ba-d12936fa9405 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 032/134] hw/xen: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:25 +0000 Message-ID: <20260711223707.42139-33-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D032UWB001.ant.amazon.com (10.13.139.152) 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=645f258d4=graf@amazon.de; helo=pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783809950250154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783809968; cv=none; d=zohomail.com; s=zohoarc; b=ehdiU+LgDpCVvD7yhe6EIpUXTvRS5tLrSPzOpz/STHSxsE7Zsd34N7+AQIJ4LXVARGQnigvLNA36FNDP1+IEg+ZkJCVyRsmylyerXqPb4D3JUF+JrRJ8T1trIeDRWEciQaqssHEM6Cgl1cIJa1cuFE9y/n4kTVOFQ/we4SGyDN4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783809968; 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=PQ7+7sUsosVHkyrfX5+2EvwRXc5Bo4T59ZveoBFIrEU=; b=TnBcL69xAVA3jIs82qgrTg86cV6vRpmEE3UMnVXlcFlXlUnF0M5ALYLZSpXun6K/oOmMELryEOurpjEGajqqzJPQpSPkuVzn6jNaY+bdJ4Xw1r5flplVu6E+H14qDn3To6NJthORDnZl/OlWVFrwi+ZfsMRLOa/V9DWwoWZ3XSc= 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 1783809968434255.8200925017726; Sat, 11 Jul 2026 15:46:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigSU-0006hX-KY; Sat, 11 Jul 2026 18:46: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 1wigST-0006dy-1Y; Sat, 11 Jul 2026 18:46:05 -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 1wigSQ-0007Eb-V0; Sat, 11 Jul 2026 18:46: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; 11 Jul 2026 22:45:59 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.48:18161] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.51.175:2525] with esmtp (Farcaster) id e672f84b-2235-4799-9b2b-3856611b472b; Sat, 11 Jul 2026 22:45:59 +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, 11 Jul 2026 22:45:58 +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, 11 Jul 2026 22:45:50 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783809962; x=1815345962; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=PQ7+7sUsosVHkyrfX5+2EvwRXc5Bo4T59ZveoBFIrEU=; b=ta80x3hQJbMd1fo+rQYJ91EPC/ExsVLcYbkOI4ZLrRhCJIsnLII2xFA8 f38UCZGqGdN/leyevSkBVwyhqHBM9M3ggz3xIbgi/UbaW5Ka2Yr+2XKG8 tZ5F3pCdroX8sWh9ke0LqdxhmsoMuxi5+ccY6ZVH8eENV/gczbOHvqTix nrIPRfLhNOZq4KapBxtSBRLwUvjr5wtmUts0o50OuFLk4claOJGGSzaRS PHh963mhABh04oCZbjzHprZLhMPUvo8R2GLCg64xZz9cuqJ+ZOjiytOLm r/+xHJCa77RUMYrimE2AMtNjoSMgMNsAJ+/gPGCMMHLloFth0A6MQxKaR A==; X-CSE-ConnectionGUID: l6XsyWVLT1upymioAXIsNQ== X-CSE-MsgGUID: nXlztDblTy+vrgZFo9LUpg== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23483305" X-Farcaster-Flow-ID: e672f84b-2235-4799-9b2b-3856611b472b From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 033/134] hw/display: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:26 +0000 Message-ID: <20260711223707.42139-34-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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.34.181.151; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-007.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783809969980154100 Content-Type: text/plain; charset="utf-8" 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/ Assisted-by: Kiro 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 d4b0ed048c..81c27c8f52 100644 --- a/hw/display/sm501.c +++ b/hw/display/sm501.c @@ -1910,9 +1910,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 Sun Jul 12 00:34:16 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=1783809979; cv=none; d=zohomail.com; s=zohoarc; b=cCeob0uvGF61A2yDrNUwwevWjZEdM+crurdfwq+e4NDIfgPLxWxlitgaHTO/Y5hUKz9mWw19wOn3oEtlotpVVgfuUubFEmUWbIAf+xYZOSuCRi0GGY6f1lM+NG4UdrpRLAtmA/aAbXVngiMHh2L3VaUY+jsRWU9Q5frX055dpX4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783809979; 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=goVJTOZupBwkEhMS9Yju3RkGQaRc92WiMVd2TVX+nUY=; b=M74b7GuQqxmTZ5LQD2aE0A2lzyEtPHHEspzGMbgPj183UOJ/6urK24QPwlVuZu2KeilVl/6UPnX6bZ+mWkPxeVNReD0iepfzEUJKEH+V1a5HmJ5vj/cVUJpNi3EfHBDSMkSCiJPOyuPIEE2CfdyU4Owjf03PojblXKax/97BJms= 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 1783809979268387.8409124197623; Sat, 11 Jul 2026 15:46:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigSc-000719-N6; Sat, 11 Jul 2026 18:46: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 1wigSb-0006y2-Fm; Sat, 11 Jul 2026 18:46:13 -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 1wigSZ-0007Gk-HS; Sat, 11 Jul 2026 18:46: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-012.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:46:07 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.234:1354] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.51.175:2525] with esmtp (Farcaster) id 5e910636-6c1e-4158-a380-33c2166b98b7; Sat, 11 Jul 2026 22:46: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, 11 Jul 2026 22:46: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, 11 Jul 2026 22:45:58 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783809971; x=1815345971; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=goVJTOZupBwkEhMS9Yju3RkGQaRc92WiMVd2TVX+nUY=; b=G7X/deFCJIJ98VKOHy+gykzA375qD7HsObT8E1lUyCYJ86s70obT4dwh CQkV2QHBc6ZQeq9GvCGzk9l2/79JPydPQvD9dpkBmUDxNIOvgv3axYptd stIBiQBGbHJX4bGG3L+DJooSOfTAFCHnY18AJFyhv+pQ4HmzPopIv4fKa Pc3aeB7vAahQZEpAAmevBUGl67zx8OTGyxiT2ji+lFGCNW3LWa4mExInD M4KfV9zlr57dEPszLUiUxRwR1B92Xi84SrUzOr2XgCbzsYPAje9K1Qt2Q TEX0ZbSq3EOiaZtfBI3T6wtDHnDV0pbcvCK/sudWWz5Z6+uaOc7mlZfag A==; X-CSE-ConnectionGUID: 5Q7+aEGkS12fF9K2vtLUyw== X-CSE-MsgGUID: x68shg5QRVa8riM9NftNWA== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23293890" X-Farcaster-Flow-ID: 5e910636-6c1e-4158-a380-33c2166b98b7 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 034/134] hw/nvram: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:27 +0000 Message-ID: <20260711223707.42139-35-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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=35.162.73.231; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-012.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783809980257154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783809987; cv=none; d=zohomail.com; s=zohoarc; b=M2rLoIhmXM9JkGdmxPCgsbmaL70noZHD6U0u2bqoHGMa9xUwmC5U6SDSD5sY9XS/0o5KKqvU/u95MT6P0A5KPyr4y+0x1LAbJ0NfNhUfuq5auoFSQVv2Ndx1kpXLagEJegR0kFZB4Slc2C8mPeXC1JCH4nsH5lvQ8q+iy9seE7M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783809987; 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=DJ7wiGvOgW4gc9fKCfQnMYcFVdq/tDyb3nan26r8gls=; b=oBD8P2svaU0HsDaLPfN4pscPAUnT/cESTsofEqp7IVRxCoofTlM4IW5YqXefXzIlfcYTjoGhl0QAaTCQl2q9LtnJs0I8Mu+jwHWGDV8K3Ol9cSPt/BeMpDS3Ueo0bqUvtgsg7nZbksFktkwCS6WXhDymoJvVtQuyA5ydX/Ej/G0= 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 1783809987431343.6851505527552; Sat, 11 Jul 2026 15:46:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigSl-0007Nn-Tz; Sat, 11 Jul 2026 18:46: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 1wigSk-0007LD-2i; Sat, 11 Jul 2026 18:46: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 1wigSi-0007Hp-0x; Sat, 11 Jul 2026 18:46:21 -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; 11 Jul 2026 22:46:16 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.51:12579] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.40.123:2525] with esmtp (Farcaster) id 2842525a-634b-4bb0-a76a-0d6edd1c4d44; Sat, 11 Jul 2026 22:46: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, 11 Jul 2026 22:46: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, 11 Jul 2026 22: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=1783809980; x=1815345980; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=DJ7wiGvOgW4gc9fKCfQnMYcFVdq/tDyb3nan26r8gls=; b=rgC1cUs1aEIO4oHXeJyRAiLLXhYSx5vSow9s9guBn0KD7TwvyXmhV1gN sC/hQGnOomJyvCaR8d++iBZbN1oEUhuLHVGdFRK2zzDCK2RKOC7DIYbvO B7C1JC3ESWwevY/80RuzLoO7lG3ttbY0VGIpAp/dK1jISysgnj8uW+p20 LIB50tk7oRi/li/DYA8LtHbjtMdzRCiKJ3zxC487iFEYl+fAzDxLhQJZk lO6FQLOEtkm67BGd5H09p5ph9qjuM3UMslMtBAAzcPm+B4kKLhyaEFbS2 cKaHY4YKTsfH4hEp7bvNNlxK115lMEmHwchouoRNmvhlCghu06rY60L4A w==; X-CSE-ConnectionGUID: el7eHBM/R3WGXSxn/yiagQ== X-CSE-MsgGUID: 2qqDFmA2Th2D4ub2tYuq4w== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23505558" X-Farcaster-Flow-ID: 2842525a-634b-4bb0-a76a-0d6edd1c4d44 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 035/134] hw/dma: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:28 +0000 Message-ID: <20260711223707.42139-36-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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.1.125; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783809988336154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783810018; cv=none; d=zohomail.com; s=zohoarc; b=dl9TWzGORMJl8M9fu++i9KYNLXZJxJat+amO1gVudHieuWW80MrjBWnA0sEC4zHckaSi1njpL7E2Ds1ad2mqIU7K2ccZzXqou1GYfOI2aKPZljqKk57A+n3ZTEHFzXYBA7CWpxsu0F9k7hJO1vUZ690sFp3Axc9SJ53OyZeLs/U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810018; 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=meFsLf47H5P+7QoX1jJ2rNzaffdsteXUDRvG8BWlryM=; b=VKBmIgJapGnO7P6IGnkPLSWcdw5eMlR3wytQsxBOUU1O0aCQj4NSWJmBUH0O897KmUln4zXsuXJ51ZUgft0yohNwM/wPtqq6PdasqHvIQHmK6rUUXiKlcFAPTCre4roAk6gza1kIgVqUKKco6LKzTf8prC4eyq2KS4u9AAwYXAA= 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 1783810018879825.1262844542385; Sat, 11 Jul 2026 15:46:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigTG-0008Bq-Uf; Sat, 11 Jul 2026 18:46: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 1wigTF-0008B3-0B; Sat, 11 Jul 2026 18:46: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 1wigTC-0007N8-BP; Sat, 11 Jul 2026 18:46: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-012.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:46:46 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.51:24258] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.51.175:2525] with esmtp (Farcaster) id 736a152e-b649-4d60-a25a-67d8e3159c80; Sat, 11 Jul 2026 22:46:46 +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, 11 Jul 2026 22:46: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, 11 Jul 2026 22:46:37 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810010; x=1815346010; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=meFsLf47H5P+7QoX1jJ2rNzaffdsteXUDRvG8BWlryM=; b=gF8nPVo10cbk50q81vlv7h705yGfLC+S9Rag3flHCwdvDC5s2c/dlNG+ dYf1Vbh6gddBRCXqKIjwstL0Hq1/R/X+kEy5WyQCgmBRglT+5+eQAm9oB l0Sku0NeIaa02fj4CMoo12Dz7Vg70w+QLArMdqmI2RV1YnikYYhRoyaX5 kjnH7P671uIxMDnfSM2tfeApRrIstqdBgLWzIJyLunrks95VmQpOGPrGy I/HFUf95DCoalk334VF5t/Q9d7EPfDcFNt6F2LLA5BegnsDtyrIzMtkvS t8tyTu7yMLaRsXWQZeehPsQh++YKHJQkUTB6lWVExYHidn41GQPaKX7E5 w==; X-CSE-ConnectionGUID: nqogrhn+R9yzWAPUXMxucg== X-CSE-MsgGUID: w4WGZkGoQDyXp/ZeTWooMw== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23293923" X-Farcaster-Flow-ID: 736a152e-b649-4d60-a25a-67d8e3159c80 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 036/134] hw/misc: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:29 +0000 Message-ID: <20260711223707.42139-37-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D031UWC001.ant.amazon.com (10.13.139.241) 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=645f258d4=graf@amazon.de; helo=pdx-out-012.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810020889154100 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/ Assisted-by: Kiro 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 3ceb476b84..d7ce57069a 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -1477,7 +1477,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 Sun Jul 12 00:34:16 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=1783810083; cv=none; d=zohomail.com; s=zohoarc; b=lW0Ackg8PJK8MRm4/6ZrIPSsrAVl7q/vR+zcG9Hz7HlOO+VcugATayeAlNYbOEgCox1HJYrczyUN9borQmuatn6UU/pOCHsuQ1ndWDn8ds2+HjyXICzr5tiqGiccrRAcGtocw5+C1QQ54Ym1u5epBEhG99F2zVl2Wb/PPRCAz5U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810083; 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=mdOsMUFO/NU8q1XiktFg86KqJ+PNpvF4Jt1vctgje9g=; b=NM1AWKverfsar0wfdPnvA6T9awcLfXgoEZnEDn/eiYdtoqrEJRcZf/+Tovw/if2j/it86rVmfTkqYCJ4BPHlyjBie0l5pfRChRhbl85HUErnvMDG6PuluW99Kt9KtKgtwFhmtAPdPDaCN6VeqTb3/GhnPadTTiUj8C/M9Q0GWgc= 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 1783810083945431.6766329743891; Sat, 11 Jul 2026 15:48:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigTP-0008Ia-Ag; Sat, 11 Jul 2026 18:47: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 1wigTN-0008Fr-3j; Sat, 11 Jul 2026 18:47: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 1wigTK-0007Nw-Qc; Sat, 11 Jul 2026 18:47: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-001.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:46:55 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.236:24563] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.51.175:2525] with esmtp (Farcaster) id 1c2cdcaf-e3c4-4985-b77a-d079dffc5609; Sat, 11 Jul 2026 22:46:55 +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, 11 Jul 2026 22:46: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, 11 Jul 2026 22:46:46 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810018; x=1815346018; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=mdOsMUFO/NU8q1XiktFg86KqJ+PNpvF4Jt1vctgje9g=; b=ObryqyVo8GEJ3cOwN26wJ40kDjRNdoLU4jr5ztoK9Qzb+OJO0qbAsPNZ BDyR7sxXDxYA0EE+UFDQjVGHE47NbNsd9md8V/fFHyLCcrMjsCaD1k0C3 Gk1pBxLOvmt8VSXdmXdZsMBR/mwRV+gFnLg0b/HlFe7IOe30oVgxI/Aa9 dBDNsTwduD8ynNNXzTn7K60FFqLLNAm8e7o6HHGVn0g2z+E/6JWw9+7BL R1VLD0hSAfunVQEdkCIWBzxvE0exn5ZFLgVdaMioHc50Xwn6HH+PE3joc gkdiwgVT4+rPA3GDd4CJLUYxHAaZ/weoVExqkfuGBjRu/89H43IXLIsfM Q==; X-CSE-ConnectionGUID: 0qfZ9PztQ1Wo4RbpC6xzmw== X-CSE-MsgGUID: wxTjDXMFTPOf4o53CSElRw== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="22997502" X-Farcaster-Flow-ID: 1c2cdcaf-e3c4-4985-b77a-d079dffc5609 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 037/134] hw/scsi: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:30 +0000 Message-ID: <20260711223707.42139-38-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D031UWC001.ant.amazon.com (10.13.139.241) 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=645f258d4=graf@amazon.de; helo=pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810085606154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783810072; cv=none; d=zohomail.com; s=zohoarc; b=duYXNUuVeMyA+ZqNAxAdLuKBzMb38H/qt/AZRdKWaNHGVa/lv31AkJ9VsAC4m/MqU6b7YTTY3JkfLwzwLf3704BAq/+pittVjui07c6QJQ30go9v9tAyAAe3OKRUK8HmoCaVqyJ+4EIn0hzlECJMQjiy+2Ro0yXQnxzMRPx+8pw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810072; 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=qrYU/6J9K1fxb4U0qKmY9Ctb2pPuWEVVahf8vltU/98=; b=DfBuZzaVdLGGYqxDMwEwrA4p+c12DM71MuMtutP5iQ+ZwVL2s4kkkc6ACfvbwnI/JDTtkQ7QUQjbQ10m1vZN2AvvD5zsGFAjTHq2Q50mQaneZB7ax0Ew8TLozsVpolz9bFJoIJywneXDJ//lD0QwHtNatODYN0HHRzw8hqU04zs= 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 1783810072540375.9574105526508; Sat, 11 Jul 2026 15:47:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigTX-0008O1-Cy; Sat, 11 Jul 2026 18:47: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 1wigTV-0008Mx-N8; Sat, 11 Jul 2026 18:47:09 -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 1wigTT-0007Pe-8A; Sat, 11 Jul 2026 18:47:09 -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; 11 Jul 2026 22:47:03 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.53:5753] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.47.135:2525] with esmtp (Farcaster) id 4c311944-0553-4620-a794-e087afeeb4e7; Sat, 11 Jul 2026 22:47:03 +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, 11 Jul 2026 22:47:03 +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, 11 Jul 2026 22:46:54 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810027; x=1815346027; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=qrYU/6J9K1fxb4U0qKmY9Ctb2pPuWEVVahf8vltU/98=; b=jaxT+XebPBZf4q2mP4nb4H92Lm4EDYzWct3iEZFPmQoucJn8C3dCi5JD tl20tOWvZPJux4+FcZpUQVRPXR09N8kS4/r0vkHm7DNpUcUpky+gj11b8 ghqphEYwmdju5boj3nuhD57EbGimsm/8I3bFb0SVnH3tpFvCBY0bCwxYg 0Qma1gU9WJ/gHJAtY9GhxEAwFuO35/qH2LL5rygtHJ0APSdcUABvOtJWY 6INCClbCMpS3YrupR00QDkFLgLTxJAO601cZWizw84cAIhU5BLIyD/BDG T3g5Qmf+pLI8jWkT9zs+f4eaxr4Xp37e+wH7C1NsE+NCG1Qg12RGqdegG Q==; X-CSE-ConnectionGUID: LO/MXiafRO23K8nPh9ACug== X-CSE-MsgGUID: MGRPoYV+TcO1LqeTHP7r8A== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23522206" X-Farcaster-Flow-ID: 4c311944-0553-4620-a794-e087afeeb4e7 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 038/134] hw/net: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:31 +0000 Message-ID: <20260711223707.42139-39-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D031UWC001.ant.amazon.com (10.13.139.241) 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=645f258d4=graf@amazon.de; helo=pdx-out-006.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810075830154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783810086; cv=none; d=zohomail.com; s=zohoarc; b=H1eolbRtwizrBp1++fsLBKeWFMxQ0YOL3XMlgoTey+FwE1ndNjNGgQs27KF1YD2xA+pJetk8ZsfU1nChU5wI81vRm1eGhH0om5/1W2VdFcsYvpGtvDD9wpc5l2jAjtKcOUiv2q/COx5Yl5P8gKp2uUYDowBIHY4g/yxSdZMe+Zo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810086; 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=zLaJZbstl8kCaT47m5gOMY1Yj7cW3tZOc71HipZg02k=; b=IdpsWIWEZ7igYCHAkTfyoCoiu0+eB7v+9hQSDeF6mLHaSo8mI16VXl8baI1INfc7YwQLBTMi0dbkU30N3XSai00VnKX4hlrDnInYoZKMIfn8RA8nwlFuGxrYxv3XOZCM8xPWOOXvvu3Ux6ckQYS5KV9YYSmpc6ZxLBL6nAH3BwU= 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 1783810086153494.0897474558526; Sat, 11 Jul 2026 15:48:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigUL-0000hh-8s; Sat, 11 Jul 2026 18:48: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 1wigU1-0000Yz-Fc; Sat, 11 Jul 2026 18:47:43 -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 1wigTx-0007Td-IH; Sat, 11 Jul 2026 18:47:40 -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; 11 Jul 2026 22:47:34 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.48:17375] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.115:2525] with esmtp (Farcaster) id 9086ab23-efe1-4c8d-a00a-cedf7874375c; Sat, 11 Jul 2026 22:47:33 +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, 11 Jul 2026 22:47: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, 11 Jul 2026 22:47:25 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810057; x=1815346057; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=zLaJZbstl8kCaT47m5gOMY1Yj7cW3tZOc71HipZg02k=; b=BEgVXP6CUp9JzgDnM/L9BleklE+aLt9bsTIZRM3VpgOHc3H32F4qmI1B CQrn0KMG2xlVIraHhKaBmMPlgqEzepHkgAaqHHFsSN55wVErvx7mWv7fZ 00P8WiKrj/KIvYJuF7yr4SM6vvo0UlxQ6Uz3ndFHdAwkGT0fpSrWdPLxM q8kZthShfhKZuB7Q23S4PV747gfI9B0IuwQxMDoO0mByRhjPLzQdSkzzY XZveXF5CrQZ/FLxuxKNMPZxSfzB8Ex+Pvlv+uNoF0bmNVc3qXR7EuPD9J ASi+kkLAewLTrm3ygNWAUyUYH6DqNatfJ6HMlqLcs5VJC+kl/vG6N8opk g==; X-CSE-ConnectionGUID: BMLkUgHzSReyuYV8Q3q0dQ== X-CSE-MsgGUID: Z0LYEda1Qz2xFcxbk7MKXA== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23522210" X-Farcaster-Flow-ID: 9086ab23-efe1-4c8d-a00a-cedf7874375c From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 039/134] hw/ide: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:32 +0000 Message-ID: <20260711223707.42139-40-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D040UWA002.ant.amazon.com (10.13.139.113) 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=645f258d4=graf@amazon.de; helo=pdx-out-006.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810087669154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783810112; cv=none; d=zohomail.com; s=zohoarc; b=jglMon/+CSnAbxeEgeOGRh1u3MK3h/OcHjj5mQ+MUCfiBqMMcg3pr99ycjTm/rNkTXVmtsOBmpHZBYG4E8vKXYd4sLx0Q8Dc/ZaLhGywfFcoONALp35mLjwIjzWVQmARz5syLtm3/fxbLfBTsWqGt4I2QJTolF9tbZVdNI+FhD8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810112; 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=urslx+F+1DcIG3WUi4fMfYT2/zRrg9pAEDrsh9YargQ=; b=EpRrb5A3fZGdHl9ZK8FLdAuLGvNCakyk1zMlVqM9gGkoT/uDaJdEWIm8Jg/dhm8z/3vF1Wwx2pxBXNOv9Q63lkUc/9cHixvkMgdSBVXYDTH3Kurt7ONUbHnGzEZga9/rSCiw13lE+g6ddelu2o2baM7jcJl+YOlLeKeL9p/3lBs= 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 1783810112917261.39519872982885; Sat, 11 Jul 2026 15:48:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigUM-0000r8-Ql; Sat, 11 Jul 2026 18:48: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 1wigUB-0000bs-AO; Sat, 11 Jul 2026 18:47:54 -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 1wigU6-0007UR-Pw; Sat, 11 Jul 2026 18:47:51 -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; 11 Jul 2026 22:47:42 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.234:25187] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.47.135:2525] with esmtp (Farcaster) id 8f9145b8-4259-41d4-b720-ba37100c3c08; Sat, 11 Jul 2026 22:47: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, 11 Jul 2026 22:47:41 +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, 11 Jul 2026 22:47:33 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810066; x=1815346066; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=urslx+F+1DcIG3WUi4fMfYT2/zRrg9pAEDrsh9YargQ=; b=izSq6CFs3F6ndSae3lsgI27z+khf3AxUlyHYfP8Bts9XfTaNIXvBFXID Q5bU3MH9Cqn2gCdmlyC3EKjSS/rdamoycyInva76OUNT6Q9XWYeat0T1n s2E/myT8vAD/bXuUQiXoyBo0grdtOu5Zg3YSdNUAdQ2e35xq9qiN1Z4vz /1o+kkhoQl0oRbVrHvOkNzylYyvmeziqkL8KTyhGzZApEslfxcj6aEYko 9VlXn7rF69kAJpO4BkPjRYHurS+5PViW4GflvreCzP5300gWC7AiDbHG3 ueKSFQwK1KhgekwkVU6oEpb0JsSeOjMEY468vFFWumH9N/pCqIC52s765 A==; X-CSE-ConnectionGUID: k2DGPdOOTCSGAO5S8+UCUw== X-CSE-MsgGUID: fpsjUdf1Sx2W5u6wG68Dog== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23505584" X-Farcaster-Flow-ID: 8f9145b8-4259-41d4-b720-ba37100c3c08 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 040/134] hw/i3c: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:33 +0000 Message-ID: <20260711223707.42139-41-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D040UWA002.ant.amazon.com (10.13.139.113) 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=645f258d4=graf@amazon.de; helo=pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810116606154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783810113; cv=none; d=zohomail.com; s=zohoarc; b=b/uAowEmsB41eJx8Aw9QGrgVjll5o4dtTQrC69ly/QRW2sL47EfIPleFSkVPtxnSRexUTF6WaD5xjyJjT6rpfW63uQg7HT82/SnAyTPQTJ3XCrzJkSAwDuZlGrlK8CKXkvVP2aUDy10rGIHa8fADJBJx4yqWr4euZeoKG5jR/+0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810113; 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=6/uUnSgnZmJBm5T2o5OPuJjkNENFoH1An9ZTNcC61IY=; b=hvWzgJzuBS40UfEYg1xqUcvAwBkw7wnGYQCgndSylNdCyd7ACey2rOpUOjlaavFp5+B3ZfxLDAl3wdwTjB4hW6lNalnB17S1YTo3/16PhD9BCkguJmze2LMqekndnpo+xGkFi01SUsVQJDF8Tllqd8+Q46Dl8RjBLQ+nlcam65U= 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 1783810113017720.6524763574985; Sat, 11 Jul 2026 15:48:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigUN-0000wd-OJ; Sat, 11 Jul 2026 18:48: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 1wigUL-0000kA-Ao; Sat, 11 Jul 2026 18:48:01 -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 1wigUE-0007XR-H6; Sat, 11 Jul 2026 18:47:56 -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; 11 Jul 2026 22:47:50 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.51:13244] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.40.123:2525] with esmtp (Farcaster) id 6a46bbc3-e7ff-48af-8a80-60bb425c2dde; Sat, 11 Jul 2026 22:47:50 +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, 11 Jul 2026 22:47: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, 11 Jul 2026 22:47:41 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810074; x=1815346074; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=6/uUnSgnZmJBm5T2o5OPuJjkNENFoH1An9ZTNcC61IY=; b=nUndGGtKOqQYYjaQAMLtrHuC3H9HTpkmBsMfGLdIt+gWsUNjjSR0g40K 2519WNZL1SPmr+htDWe2Wm1Dw/Lpldd6Kdt0vXU4bzu1zZVPI9S4JBp/t 5PIyZ+629Ti13FF/iBci/hwqeV2Yquj9pgmfizaoYGfJD32cjlCf1VOLP GwFUQwFU5lJQ1lByG/3NpEBHStMpVWVcRVpVHQlIZGDD1tWhrSh2NaQx3 5cYXcBoDMV+8fNEl2CtmRg8uuWNCXgCz9Zcr099BUi4q/61OK+Y35WdFf 0QnihDXiLwSziMPD1dW/Lsb2W2MWQ8GMuoVOE7QdtahOkzKbS0pMCF+J3 g==; X-CSE-ConnectionGUID: OdDvNDRGQgew3sQ+azLArA== X-CSE-MsgGUID: onkKNhqZSkCSzgGziWgpkA== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23269697" X-Farcaster-Flow-ID: 6a46bbc3-e7ff-48af-8a80-60bb425c2dde From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 041/134] hw/pci-bridge: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:34 +0000 Message-ID: <20260711223707.42139-42-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D040UWA002.ant.amazon.com (10.13.139.113) 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=645f258d4=graf@amazon.de; helo=pdx-out-011.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810116587154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783810118; cv=none; d=zohomail.com; s=zohoarc; b=eGq2RVtRl0/eyFi6ZwAuOIGK37V818E2UZ1WEu/HL9VGGAB+dqjU41r7CKmVKtWREoVoLdf0zmguPO/HmaFuAGSjWe3c8DqT48v7YRqE2lICRzbQmoV18FTjtN7yUgSKp7hnioI6f85rJZGedu2VvhSJcO3PQKhfoUJcpXxesNo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810118; 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=FXjE/hRaFa2yI71GeaXuwRikd5bLiG3cS4WmzavbRdM=; b=OHHJCY4zwRFur67wiUbED5Z2C1jj2l+LByxhSQFYAqtD3gC9S7qZklkdg0s4Is89IROzjEzGUFaoGSd7HjbGrzfJUyE8QGyE+CUE06eo6kXpPEcmqV3ARqZ0XetJIXp21aArTV2rnpeQEuaxM3qAC1YretAjAmpYbY40m9zxxWk= 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 178381011866634.017377857112024; Sat, 11 Jul 2026 15:48:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigUt-0002NF-Ks; Sat, 11 Jul 2026 18:48: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 1wigUr-0002GE-1F; Sat, 11 Jul 2026 18:48:34 -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 1wigUi-0007gO-QS; Sat, 11 Jul 2026 18:48: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-004.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:48:21 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.51:19095] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.31.54:2525] with esmtp (Farcaster) id 6adf3b76-8b95-4a14-845b-428338af65e3; Sat, 11 Jul 2026 22:48: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, 11 Jul 2026 22:48: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, 11 Jul 2026 22:48:11 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810104; x=1815346104; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=FXjE/hRaFa2yI71GeaXuwRikd5bLiG3cS4WmzavbRdM=; b=c7mzTEUN2+wnVhQMow1RvEbRKdws3naxtEfw5BcUNNtNyi8F/9nFJ9b2 53AhA3uD2EPBtrx+no30brH26lBuQlMfmR9tx5it1PPp2u/vGtoHy0sbS hT+cTiDE2eC90UauqmOkdcH/1NMnhnHEoVCYSX97Lc3PoYvm8poySI+vj lDhaAqa7b5MsVh3IVQV25BJnoZch++6iHwkU4OEkma9cvAURKDPNYd5hC Qx0vzzi5n+UEMPvTv2J0/b8xDVmgYWlGN+KbHFQwR0xjtQd54rcNKwesB 47u5QP7wmnJ0KFBVbrY1mFb3Op98ejy+T5Fs15vjYa/8Mkn88MHPbi2QR w==; X-CSE-ConnectionGUID: AyZcKrF4TQieb2VxlLribA== X-CSE-MsgGUID: r2zZoVuBSeSPsymuyFZ3BQ== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23493103" X-Farcaster-Flow-ID: 6adf3b76-8b95-4a14-845b-428338af65e3 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 042/134] hw/sparc64: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:35 +0000 Message-ID: <20260711223707.42139-43-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D042UWB001.ant.amazon.com (10.13.139.160) 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=645f258d4=graf@amazon.de; helo=pdx-out-004.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=0.001, 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: 1783810120249154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783810169; cv=none; d=zohomail.com; s=zohoarc; b=dYofK5XL4inoio0bjVq/ySOlHoyzPz8mxyeTjih6ThlCVAVD2CCpu65aarFmcgw37Ws+L+QfnVp01JzkBBtJ+plsGxCK993yhFSsVlhqeWesNlD1C6E9Fm1hS8SbeH/inLrAUcgW9LjtyzAP7wu129guvQPaHlr4cTfq4FALTNc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810169; 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=8KkhcGyYmg0+jThLKAxCQ7nWBS2kSIXd0k39qM9FEew=; b=TxcRNFcf+lQu2SC/u10wIgV6Lg6EBobTXh36+Qykq8968MEllDAyUNxDJ+F/t6Fyuo70p70gxyTNsCxryDgnjVkfjtSzXidn/vNxZE7r+vfLptkDfS5gxIz/VEoaeZsB4Y7MgQ4+4q1L1TfOK4v/YXey3cFdj7pyZNvYW6RyM80= 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 1783810169903104.29789460874849; Sat, 11 Jul 2026 15:49:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigVZ-0002p8-SW; Sat, 11 Jul 2026 18:49: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 1wigUz-0002TX-P3; Sat, 11 Jul 2026 18:48: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 1wigUs-0007hI-ND; Sat, 11 Jul 2026 18:48:40 -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; 11 Jul 2026 22:48:29 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.236:17675] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.35.214:2525] with esmtp (Farcaster) id 994473be-6809-44dd-ad88-b5ecf0ca075d; Sat, 11 Jul 2026 22:48:29 +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, 11 Jul 2026 22:48: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, 11 Jul 2026 22:48:20 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810114; x=1815346114; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=8KkhcGyYmg0+jThLKAxCQ7nWBS2kSIXd0k39qM9FEew=; b=sC33+53RdIOE5FfYAvgAz9rvOe96qTsTfAIjYsWfVyZfN/gcL/HVZCAH oJybLiP4WhS2vgyLXDToXq8+qRpnjzzsZ5kFAUmOARW6W6b6l38927v5b yAYY2daahL6YCVeO+qfZb5xyFT8Dz5AS2HjwJiMdepMF8MZkUh5dUaQa0 HVzev3d7pNveiUWo9G5P87ELAVqJNc/xZEnDN2CbpilwUMVXs4a5ZnSo0 O1V8dSfwB41KXPn17JW/vPCwLG+8375Zh2vcFSm5zxUyEvwmMjhctkQDb XkZe+PaomGo3rFNEahSpOu7kGYyDk/yUyzYchSRhQTzr961+PecoAT/n2 Q==; X-CSE-ConnectionGUID: H7N00OZKQcOM+AmKb7jJeQ== X-CSE-MsgGUID: tpFFSFlLRQepVsdEn5Ff8A== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="22997528" X-Farcaster-Flow-ID: 994473be-6809-44dd-ad88-b5ecf0ca075d From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 043/134] hw/sparc: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:36 +0000 Message-ID: <20260711223707.42139-44-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D042UWB001.ant.amazon.com (10.13.139.160) 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=645f258d4=graf@amazon.de; helo=pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810171359154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783810152; cv=none; d=zohomail.com; s=zohoarc; b=AVyyi5Nu18Wjh7X91SeiSCsOzgy/M3u81W3gkGQ31VLLl/jVySCN16o0DsTyTnBzEkeSDBjcvaxhhs49x/4DSuWIlFYCq8eNtNGDraX5bqZLFP4sP+2fef79EV7N+K3rTuZ5n/uiQUbEAO8rrYVWk7cXIDio+bkm3ic017qNEO4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810152; 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=cjOww6QiL/hj8HgD2cr+EQ+VepUESTbjn+BqiEs27nA=; b=e3k6lvgkO3anYZgW3TrOdBu6LQTWYbq63HEE9OfZKCQ2habKDN05EZ9TIZFSUgyNfX6PT4qGAVCAOBQ/QMKC/TDE0OoBgNGYKr0AtsiQKR9oBoYER+Khx93L0D9nbZ5UAC5KEQTNzFqwClcCxt9IDQKJ9QYH271zymjh5tF5bq0= 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 1783810152144174.9623208622994; Sat, 11 Jul 2026 15: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 1wigVK-0002jk-GY; Sat, 11 Jul 2026 18:49: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 1wigV9-0002Y7-13; Sat, 11 Jul 2026 18:48: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 1wigV1-0007is-86; Sat, 11 Jul 2026 18:48:49 -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; 11 Jul 2026 22:48:38 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.53:26735] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.26.212:2525] with esmtp (Farcaster) id cddc9e8b-19e1-4c5f-bb80-c9b3b8827e07; Sat, 11 Jul 2026 22:48: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, 11 Jul 2026 22:48:37 +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, 11 Jul 2026 22:48:29 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810123; x=1815346123; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=cjOww6QiL/hj8HgD2cr+EQ+VepUESTbjn+BqiEs27nA=; b=h3wrQeE1I9ckTaifeL7/6bg0zfK6CRJTNHFGNI2DsskgMWHDb8CY/e02 4dG+8hmcdHvyxpTZpJjhBaJRPs3MBBBrhKkSx6aELu6m8iMSsjlc+cd3O wU+P+a7aL8eXnB1Djc15zin4phx5dutbaPFjYW8k9Ld8nagALRqMVQUqY ox6vEGbuhoq9ydENGjubBpQGEliSpgz0sM7LGxuVGLqg704FCo5uA1pfA WlcozaX1+3Z4z1yVdWVfn7s4c70YjSJtHW1GqQGG9tSS7OwNkOi/Osbun awTay7dG/M84GRCl2BF55gJQ5fjDoM7Pw6uSZC+POzqqmJvscGro3WrZy w==; X-CSE-ConnectionGUID: JaqDw82jTSGnvPoGO1WnqQ== X-CSE-MsgGUID: WAcGKIUSQIWblKnMKEanug== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23517833" X-Farcaster-Flow-ID: cddc9e8b-19e1-4c5f-bb80-c9b3b8827e07 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 044/134] hw/m68k: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:37 +0000 Message-ID: <20260711223707.42139-45-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D042UWB001.ant.amazon.com (10.13.139.160) 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=645f258d4=graf@amazon.de; helo=pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810154888154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783810183; cv=none; d=zohomail.com; s=zohoarc; b=UwdxiXBdaKAv6SQeMnWYaDSH34seA7q1uOOPcqLwxRZBgLj+HqDySoKSN7MQVgVXOY6PDJjDJ5dVSVzP8T+zOP9NxbzuvD0vE6MGspApGnGNJbY9TbEUOJ56Whz9eHv5K90UQTsc4+IQzmdG069ehClmI5+r6YC4Dwq4hoXAw6E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810183; 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=nsryrza8hPhJXkUM7VI0bGZh0HwRx2yl3wY+S42Hlgk=; b=I2n3lhKCKxWiwVEnR/WMAjT9+Sefn4yOSMw5AG403fv39+b/ev3LiRnTgEFKXzcNvnQmkv44hovLK0kmOw8Oznj27lhWFIbcy3aE4m0vesKQDmxN3xSirfkR8qXti5IMPmPuqvptdIqfnwuw90dadjuXrgd5AIu/XLtxKTUv6PA= 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 1783810183224898.0978261817768; Sat, 11 Jul 2026 15:49:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigVl-0003B7-Fy; Sat, 11 Jul 2026 18:49: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 1wigVY-0002sQ-6j; Sat, 11 Jul 2026 18:49:18 -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 1wigVV-0007nK-J5; Sat, 11 Jul 2026 18:49: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-006.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:49:08 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.48:7900] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.26.212:2525] with esmtp (Farcaster) id b50487ec-7378-4377-a95e-1f438a473bcc; Sat, 11 Jul 2026 22:49:08 +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, 11 Jul 2026 22:49:08 +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, 11 Jul 2026 22:48:59 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810153; x=1815346153; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=nsryrza8hPhJXkUM7VI0bGZh0HwRx2yl3wY+S42Hlgk=; b=dGUCvO5YLNENdYnvl4U3Q1UNdxuJ6i+hvcVq2WKvzaLqZMZb8CUyqcUz 0xYhE6utixoclcGiMsB8CcyjYqK2XxNtRbTO0AdU+If7vUpkAbWq1OpXD 8Hx2ytKyceu0ghUYL0tN0Rgo3jRuM2KOO/kQ8FTV7ltTsw4Hyf9pkXUd4 PhCEDKkP+wf4JvZ2PpDH+M2uSiKMyfK/sKLfEseY3I/x5k7TLK+AV9MzS QRfSBNmzApeAiShHI7+Y3H67Hn3oabNQqUVe/v9e161u2jiERbRx7ricw lrBtrwGetV4lJagUPDgZtvLQh6siIxgmC6Q8lZlL1DHk+EXt9N1kwFOFl A==; X-CSE-ConnectionGUID: qp0aeglXRCOno4e0p411hQ== X-CSE-MsgGUID: UNOW2f/KQYCtKhSeq8X8jg== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23522270" X-Farcaster-Flow-ID: b50487ec-7378-4377-a95e-1f438a473bcc From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 045/134] hw/rtc: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:38 +0000 Message-ID: <20260711223707.42139-46-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D039UWA003.ant.amazon.com (10.13.139.49) 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=645f258d4=graf@amazon.de; helo=pdx-out-006.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810185096154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783810194; cv=none; d=zohomail.com; s=zohoarc; b=WWMd10eBiTuMaakWfkU9mgctltvkTCWSrowFtajJU4MFnBB/GC+e5LkoP5v1595YjLzQ+Hom885yCGNyFImTl5+xN9Wf8CzqYSZT06sV6xDrU5nUBWN73BgEIfaJ7PxFYZ+KOueNV2jVAU2JGjdLccSBvHy+t9pyRHIFlv6q0f8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810194; 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=uTqgR4UdH4oJzbAyZN9Bzv3ttav7Q2A0k359yMiyx7Q=; b=XHB6pU0leV2D/EoERIVhc9blrn7ooS57xHmipB8z4257CXBqzx8nYgPgAWRCcVPzvKEPy5pMgewEtHMCJC4qOPq/6NjzsbwZ+1H3JxzqURzpxHDG1LrvXZCs49bxtoKgyL354IalVCWUE5CbLIY8qtIPNU844ctcF/h8PZoFO/I= 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 1783810194101735.180445672239; Sat, 11 Jul 2026 15:49:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigVm-0003HY-CN; Sat, 11 Jul 2026 18:49: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 1wigVg-0002wm-0b; Sat, 11 Jul 2026 18:49:27 -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 1wigVc-0007nk-MM; Sat, 11 Jul 2026 18:49: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; 11 Jul 2026 22:49:17 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.234:31314] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.115:2525] with esmtp (Farcaster) id 6d5a7054-6e9e-4248-a3f0-90d5232929f7; Sat, 11 Jul 2026 22:49: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, 11 Jul 2026 22:49: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, 11 Jul 2026 22:49:08 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810160; x=1815346160; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=uTqgR4UdH4oJzbAyZN9Bzv3ttav7Q2A0k359yMiyx7Q=; b=pzSipITh7PhF0bw1nivMucxA+pCGOhU2Ombv4LshjtuJ0N5f37WrhRv4 ju7dNVN0U1KuiLRt/+nSHP+MM0axtWYYxSXDOgULkuLqFyj/G4LejsKky rYX++zRGqFD/9SNvWgaXetD5Nl1jMZMcrlSrIuk2NUFldQ1JZSsZvTAMp Jv4ONpC1F16cY8UaC7YcyZ8bltwgvi2QNKjfFWX6w+paoYqV5vdSTzdk2 YfV2saLffkwvwygOJ3ajS7XGEQWUP6kpdSsjNg33IbgX+svQvy7ShNQe9 oeR3G29TKItd7w1kmR6iGFFqfNLXMHSQ4WMiyiwtVhrSNWAST+UPigImM A==; X-CSE-ConnectionGUID: IGt1uzYMR8aZ+gt+cFdLlA== X-CSE-MsgGUID: zOrW5ybxTCGTFFCgl3hj5Q== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23299967" X-Farcaster-Flow-ID: 6d5a7054-6e9e-4248-a3f0-90d5232929f7 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 046/134] hw/i2c: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:39 +0000 Message-ID: <20260711223707.42139-47-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D039UWA003.ant.amazon.com (10.13.139.49) 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=645f258d4=graf@amazon.de; helo=pdx-out-015.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810195612154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783810180; cv=none; d=zohomail.com; s=zohoarc; b=JOL8KRi5/mOQxetTVx+jTwcIQKUsnFm41z/9wkLnSJbjxPW0amJaWwih8MGBEewXXP7SiWVbI+BVbKf8GPDW6ySdMIDt3Zp3+POg+LhfcgeLk6UeDRa4tLVW5gHU+5CQsl2MCYC9ikn+z5aBASSZYxJ9KFL/dPAeJ1GHdyFAZaY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810180; 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=hLNkfsJafq9PSdTKHfm6ySTJYjE9YwrZGJM3/ZyitbE=; b=Rf7TJ8/EjnyJMvNeWzPTev6o4aWP7naIkOL/dTMDt48zKhxSDkNh7gH94qM+gnksqcnCzA4FaExoDhcgrPXImSp+Cz/hHL7kwb2WyZSp9smazsfZSvvYGmCUCQCE15t3QGY7I8VbDd3DWfhoqdWOmXgRv9j1kLtTBxS7JFvaldM= 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 1783810180448135.81751722609374; Sat, 11 Jul 2026 15:49:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigVq-0003bH-VL; Sat, 11 Jul 2026 18:49: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 1wigVo-0003SQ-B3; Sat, 11 Jul 2026 18:49: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 1wigVl-0007ps-4q; Sat, 11 Jul 2026 18:49: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-008.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:49:25 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.51:21950] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.35.214:2525] with esmtp (Farcaster) id 22e9e83d-65ae-40fa-9789-fb68e231249c; Sat, 11 Jul 2026 22:49:25 +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, 11 Jul 2026 22:49: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, 11 Jul 2026 22:49:16 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810169; x=1815346169; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=hLNkfsJafq9PSdTKHfm6ySTJYjE9YwrZGJM3/ZyitbE=; b=VZsVQ/0o76160tYXilbxMyoRtaUPrPLBsqr9ejSaOp/aT3MDCXoV/LsN ybuA75UIvXqV126JgyZIhfPNZFMqP6x9bhrIAqVzI25PpjSu4qoeswye7 CnNFXdNhT4rl+mY+0hHBEhwVZdc1otBSynjAaWU6QfHJl6AlmSeZMsNJK cSE9ggJv9KDOaHyYHRKnQtiDmf9oQnmKKnXcKSz+EpxV5LOG0yHYtFEL1 qkeNb9L8Uwtp4Ma9C2Wp4bAGeWRIbAuXHJw/1C8owX5Cf5JP50xGCiz2m pkfR122snqzwoqAFAFkW017LOq7knWBpKPr0sakPmmTNJwR4gYEZ7zBLo A==; X-CSE-ConnectionGUID: H1kVl1n7QUWStXDbDunXEg== X-CSE-MsgGUID: wotJJSSGSDKWLnKOY/siJA== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23517846" X-Farcaster-Flow-ID: 22e9e83d-65ae-40fa-9789-fb68e231249c From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 047/134] hw/block: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:40 +0000 Message-ID: <20260711223707.42139-48-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D039UWA003.ant.amazon.com (10.13.139.49) 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=645f258d4=graf@amazon.de; helo=pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810183145154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783810228; cv=none; d=zohomail.com; s=zohoarc; b=kCUOcIZfC497NUfLUh9ntoscLRLOENP6B5po+qNnap2+z1E8IE3yxjNaYU5VJzsEg46epjTWNXqYImQYXyVIxlIgvi0ijM4zCK4xv5e7Yj7IIDaY6zty0IdefKQY9PskXSyPuMZ98p4jkhA9OH9l1qeAR2o07QDc+UHqUhCZoHY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810228; 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=ygdA14HjwBWk/IMif/9CO5Qh4NqTdXZOAx9OWLJNn1I=; b=WT33ailWEyOjTdFGZrZJFG7KOcSLdMoZvy/aN3cFRlPfcKxFJsmeKKcE9ITkE02dycURqzyOgutvGKOPS98KIelE3hzRtU4uEnTUJxtigacJWTty/mmdhEkiGQc9DoCkg9F9Kcf1L1xYiLNVFKqUzz/EAkmIAXtzbTiYfN6FC1I= 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 1783810228497333.0297403138668; Sat, 11 Jul 2026 15:50:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigWe-0005hZ-Hb; Sat, 11 Jul 2026 18:50: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 1wigWM-0005Dd-HX; Sat, 11 Jul 2026 18:50: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 1wigWF-0007t5-VH; Sat, 11 Jul 2026 18:50:06 -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-014.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:49:56 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.48:27989] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.42.69:2525] with esmtp (Farcaster) id a8cc65a3-d092-4833-8809-1ea8750afdbb; Sat, 11 Jul 2026 22:49: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, 11 Jul 2026 22:49: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, 11 Jul 2026 22:49:46 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810200; x=1815346200; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ygdA14HjwBWk/IMif/9CO5Qh4NqTdXZOAx9OWLJNn1I=; b=VZRA8wNhniQXUWwrCyCt1fBEVTg+h4EhhEb9oi9E2jYLWoptyPM8nC+2 LlqfZAuWitbhsNDg0zBh3xV11VPMRDNp6ocUVKd4SzjHRsoWYSY0G3bZc j/vQzLEqEoIwy308zkncB8xeJVpCbQSbVaoKBFKQPbrvirQj9MgvsKiDj LGQFXdtBnqzrOwDKLE6+5dr+rvluQJoYtcEV7BlT55zos/xWth9viR+Rz mkFITiatwcK29jLq5H4PHwTWqphVvj8Mfd2gaD6HhRiU8Uhwh3mMyqHEd CaXxEdJlkA+/V5ngdw/pdrrjQgr6OuMFQkj8u/bbe6WQRgGMiq/N3fpUN g==; X-CSE-ConnectionGUID: mhi919ndTSOW7omORtQZgw== X-CSE-MsgGUID: BfEk8gh8TjWLT3kpylYayA== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23287624" X-Farcaster-Flow-ID: a8cc65a3-d092-4833-8809-1ea8750afdbb From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 048/134] hw/char: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:41 +0000 Message-ID: <20260711223707.42139-49-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D041UWB001.ant.amazon.com (10.13.139.132) 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=645f258d4=graf@amazon.de; helo=pdx-out-014.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810230213154100 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/ Assisted-by: Kiro 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 6ba693874f..7d1d4c7657 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 6c12d85460..ec6988fe62 100644 --- a/hw/riscv/tt_atlantis.c +++ b/hw/riscv/tt_atlantis.c @@ -545,7 +545,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 d7ce57069a..e1f5f1c889 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -1490,7 +1490,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 Sun Jul 12 00:34:16 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=1783810233; cv=none; d=zohomail.com; s=zohoarc; b=Tl4jtOof4cIKOWyp4THTEX3QHGAKadCexPXo/AlrNTPFoEOzk/bwC95f+HYQkuo/9PxwjEONDfu3PwkWqVsGFfSPVg48DjTvEKqq+kD7P+6Qit38aiNyo9hL+eUaQzkBeNIRIV00Uqb9cXQQjyyoYT2v3AkwGLBxadVY9nFueYU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810233; 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=e/+oVKVnFPvuy98Os0TSLL/uzjUiQRAzF10kGyfO4jY=; b=BF5Zzf9U56NkZVfaM/PhwLM+7UsAEpwjEvprLCULbb35eIViDv5IRKfedKEpPLMi1YtxT1p6Ocb609nwZmd+rIMyv66D8LzmDe8O1IcjCjjEx0JKuWqSzrJCSZlFRKS6BpiGpb2xB6by7LW4HC5QZpH+RJkp7g21bbf/QLdz4aY= 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 1783810233540234.75993491738586; Sat, 11 Jul 2026 15:50:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigWg-0005nJ-6I; Sat, 11 Jul 2026 18:50: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 1wigWR-0005R4-Si; Sat, 11 Jul 2026 18:50:13 -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 1wigWP-0007vt-9N; Sat, 11 Jul 2026 18:50:11 -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; 11 Jul 2026 22:50:04 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.234:21842] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.40.123:2525] with esmtp (Farcaster) id c69c34a3-8f3b-4b8c-b151-e1c2aa6a38c3; Sat, 11 Jul 2026 22:50: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, 11 Jul 2026 22:50: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, 11 Jul 2026 22:49:55 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810209; x=1815346209; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=e/+oVKVnFPvuy98Os0TSLL/uzjUiQRAzF10kGyfO4jY=; b=UzPGwkTmx1N9f5vYgwIYRGU6sAi1+ECPbRmxayhaaH78wmWlUJpyjQZf n27WKQOAxI7vXs2Z2nDsiK9cCJ8uIxCAk98sDYP8zYCuTmgIPk+jL9wkg lJBu+Ye+883fZaiUdQVloWsyBNXjcmRkXaTAWX2fJFav/ipW3fRdaHzK5 KwkmnaFU0v+wL/DgE192BJYeofMv4Egb6x1jqrOjacl5epAlKbM0/dt1K B9J1+DlQx8mjiPnh7By6eycxXm+0KTbdC6JOrokVBjOJDQxaQlCyWbP8U piVI9SFRx3u8xR6HFkAeSfEgetVuQWi+F9x8mSjAIXTH8vjeQb+C8XXXv w==; X-CSE-ConnectionGUID: Y2FKpcY1RwaJr775IL9OhQ== X-CSE-MsgGUID: SwDp2GMRQai/bFveInTDZA== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23517860" X-Farcaster-Flow-ID: c69c34a3-8f3b-4b8c-b151-e1c2aa6a38c3 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 049/134] hw/isa: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:42 +0000 Message-ID: <20260711223707.42139-50-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D041UWB001.ant.amazon.com (10.13.139.132) 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=645f258d4=graf@amazon.de; helo=pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810236465154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783810254; cv=none; d=zohomail.com; s=zohoarc; b=SFcuVD74VOjugNp0aHttnAg37fdXW4WXyQOVmaBrZ82oiOsakCwuvy8adWe4a1yQu00r94ALzrKfxOoLNFLfJx/aMqtO4CwCCzYmB2hHOLMYH62Ks/Jq/aothoBGDYKfT6xIy74LnUDbtqkOFmmLYuSs+JJds9zdRIE3a5BCF7w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810254; 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=9+ZWoiPeSK+V+fUDC1op6eSwsiQAvI3DMHq1T5ncZAg=; b=L4p4pshQ6+7IG9MhhRohYKN2Ucs+5zQY7airv6PPzmMJOY6E0210K4ontBUH3o5yEoqC6qzoY7dZOGPZc2aiNWLlvlnuNtJnm6t/zzlHjXDsCnWe9tSLxdXVOU+I/0wHG06IDMHK0+F7Vgxfi6E/zqdVe44Pd4q59bBXrZDmzkE= 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 1783810254703917.5710413822819; Sat, 11 Jul 2026 15:50:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigWf-0005lH-Hr; Sat, 11 Jul 2026 18:50: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 1wigWa-0005c9-QZ; Sat, 11 Jul 2026 18:50:22 -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 1wigWX-0007zt-9r; Sat, 11 Jul 2026 18:50:20 -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; 11 Jul 2026 22:50:13 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.51:21678] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.68:2525] with esmtp (Farcaster) id 23676f4b-82d6-43cc-bd47-5278b23dcc33; Sat, 11 Jul 2026 22:50:12 +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, 11 Jul 2026 22:50:12 +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, 11 Jul 2026 22:50:04 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810217; x=1815346217; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=9+ZWoiPeSK+V+fUDC1op6eSwsiQAvI3DMHq1T5ncZAg=; b=S+GXgKlh/lUvYp2L+jRzuORIU6RxM/QpVcPqO2uLVBAMoRI6dU7CuCdy 4zOl2E7hB1NC8QWeQI2YbvnYFyCbEKZX2EuRazR0FMeHfBOuPuUlPzOqZ 355VJgThi1pxSDeqthzyVtQ5sBGj+612Na45qYlY3Ahuq3bhsrzQa340p 3hWv1aM6wcvG5OKalD0pM+LPQp6j4HNlxJ6HU7H1fkaKAdvegEwFMB7lV d87kZRIiF3f+YAiOgePJbPj0dcoQKe+a1ZQvW12yGrPV99ghsKmbUVw+H UUn4rvXmyZhW6pXurUcjz6qgicv97rz7dQDMjZ9/0yv+jAx1CM6FdevNP Q==; X-CSE-ConnectionGUID: mYGCbRdHT1y5rNezT8juIw== X-CSE-MsgGUID: EeExzj97TuaASucCQ3sxSw== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23390492" X-Farcaster-Flow-ID: 23676f4b-82d6-43cc-bd47-5278b23dcc33 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 050/134] hw/pci: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:43 +0000 Message-ID: <20260711223707.42139-51-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D041UWB001.ant.amazon.com (10.13.139.132) 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=645f258d4=graf@amazon.de; helo=pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810256161154100 Content-Type: text/plain; charset="utf-8" Convert the *_orphan() device-creation calls in hw/pci 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/pci.c:2121 | pci_new_orphan | ORPHAN-JUSTIFIED | - | pci_init_nic_in= _slot() is a public helper called from board init in hw/{riscv,sh4,ppc,mips= }; parenting requires threading Object* through include/hw/pci/pci.h and 5 = callers; deferred to caller-side patches hw/pci/pci.c:2132 | pci_create_simple_orphan | ORPHAN-JUSTIFIED | - | pci_v= ga_init() is a public helper called from board init in hw/{i386,ppc,mips,al= pha}; parenting requires threading Object* through include/hw/pci/pci.h and= 11 callers; deferred to caller-side patches hw/pci/pci.c:2134 | pci_create_simple_orphan | ORPHAN-JUSTIFIED | - | pci_v= ga_init() public helper; deferred (see :2132) hw/pci/pci.c:2136 | pci_create_simple_orphan | ORPHAN-JUSTIFIED | - | pci_v= ga_init() public helper; deferred (see :2132) hw/pci/pci.c:2138 | pci_create_simple_orphan | ORPHAN-JUSTIFIED | - | pci_v= ga_init() public helper; deferred (see :2132) hw/pci/pci.c:2140 | pci_create_simple_orphan | ORPHAN-JUSTIFIED | - | pci_v= ga_init() public helper; deferred (see :2132) hw/pci/pci.c:2396 | qdev_new_orphan | ORPHAN-JUSTIFIED | - | pci_new_intern= al() is the implementation body of pci_new*_orphan() transitional API hw/pci/pci.c:2443 | pci_new_multifunction_orphan | ORPHAN-JUSTIFIED | - | A= PI definition (transitional _orphan wrapper) hw/pci/pci.c:2448 | pci_new_orphan | ORPHAN-JUSTIFIED | - | API definition = (transitional _orphan wrapper) hw/pci/pci.c:2458 | pci_create_simple_multifunction_orphan | ORPHAN-JUSTIFI= ED | - | API definition (transitional _orphan wrapper) hw/pci/pci.c:2461 | pci_new_multifunction_orphan | ORPHAN-JUSTIFIED | - | A= PI definition body of pci_create_simple_multifunction_orphan() hw/pci/pci.c:2466 | pci_create_simple_orphan | ORPHAN-JUSTIFIED | - | API d= efinition (transitional _orphan wrapper) hw/pci/pci.c:2468 | pci_new_orphan | ORPHAN-JUSTIFIED | - | API definition = body of pci_create_simple_orphan() hw/pci/pcie_sriov.c:174 | pci_new | OBJECT(dev) | "vf[*]" | pcie_sriov_pf_i= nit(): VFs are children of the PF PCIDevice; already uses qdev_realize(); d= rop extra object_unref() on error path since parent child<> holds the only = ref Link: https://lore.kernel.org/qemu-devel/87jyr3w9tc.fsf@pond.sub.org/ Assisted-by: Kiro Signed-off-by: Alexander Graf --- hw/pci/pcie_sriov.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/hw/pci/pcie_sriov.c b/hw/pci/pcie_sriov.c index a69a41cdde..eb1707bb41 100644 --- a/hw/pci/pcie_sriov.c +++ b/hw/pci/pcie_sriov.c @@ -171,13 +171,12 @@ 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); + PCIDevice *vf =3D pci_new(OBJECT(dev), "vf[*]", 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 Sun Jul 12 00:34:16 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=1783810261; cv=none; d=zohomail.com; s=zohoarc; b=Xu6/bXBr/9ozg6VB531ZQwJ44HSkNFd+Xx7HanNtVO1oqhnFAUV0B7lTtCcTrVsZNUYu03btvtRzcC+0GrWG9n0+7HOn9ja/tBdDoQUQNmTYAp2g+QdUQ+YohxuR9JgRR8qtup5VE2XwIY/7TpqoRw35KhaO+8Dzrw1AlrBCEKo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810261; 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=16t5vzSsRTsxyi4B7qNFBpvWZ/ig6NGpK1W/pWLHh9c=; b=kW0tyIgUqoe5n68gAnk79auKKNRk29pnjqTG6rqBYZtQt+zApO1CJJp8VdubU/7ynp3Wg0swSYODaQfz/tiAq2RZez4ZKjkDzRIhvXCNcqRP6r4I72o5CYPv3GheMiJSTgVg0Htt3/2ZB3zFjniBWJFbE5zWbDC2lsQTM/2DGbg= 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 1783810261818657.3572791588157; Sat, 11 Jul 2026 15:51:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigX8-0006Zn-3x; Sat, 11 Jul 2026 18:50: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 1wigX6-0006Ue-0h; Sat, 11 Jul 2026 18:50:52 -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 1wigX2-0008Fg-84; Sat, 11 Jul 2026 18:50:51 -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; 11 Jul 2026 22:50:44 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.51:5101] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.31.54:2525] with esmtp (Farcaster) id 490d90da-6787-4554-87a6-3fa8040784a5; Sat, 11 Jul 2026 22:50:43 +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, 11 Jul 2026 22:50:43 +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, 11 Jul 2026 22:50:34 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810248; x=1815346248; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=16t5vzSsRTsxyi4B7qNFBpvWZ/ig6NGpK1W/pWLHh9c=; b=bZOmLkaccvLIb5tn19VeEuLSCJcc1d+n1NWX9Lz0zOk5iCzlPrOh2fCG J6GRMrElr2rRNS5jRvXCQLi0SdynfeQe2WSWVB1U5piwb210rbe6q5mQB dbErYQn0QE+Wlnt25f91bHu8M/URnYppurragQ/5zHZNWrp1bd/6UV4+U CG+pmPt6XxWIyeJ9L6WAj8WrIfnIA1mFKihlaf48x6/79QgGd2aLaPVl/ 8F1WUpfl7NGFg2fBKjfk2f44WFWEispFNoUwCIw5zCNmijjxC2GvlF05y oWdzxL5xrByWfIA0bl0BSGyJmXYA17ny2sElol938OG1ciznK49Md+RpB A==; X-CSE-ConnectionGUID: n1JZauyzSJWI5lbmuzk7gQ== X-CSE-MsgGUID: YTvesjqgTc24QAMV3fzXRQ== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23300005" X-Farcaster-Flow-ID: 490d90da-6787-4554-87a6-3fa8040784a5 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 051/134] hw/riscv: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:44 +0000 Message-ID: <20260711223707.42139-52-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D038UWB003.ant.amazon.com (10.13.139.157) 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=645f258d4=graf@amazon.de; helo=pdx-out-015.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810264556154100 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/ Assisted-by: Kiro 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 | 24 ++++++++++++------------ 6 files changed, 49 insertions(+), 49 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 ec6988fe62..57ced817e3 100644 --- a/hw/riscv/tt_atlantis.c +++ b/hw/riscv/tt_atlantis.c @@ -577,8 +577,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 e1f5f1c889..7e5bdaf210 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -126,7 +126,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); @@ -138,7 +138,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 @@ -160,7 +159,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), @@ -1051,7 +1050,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, @@ -1071,7 +1070,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); @@ -1144,11 +1143,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); @@ -1481,7 +1480,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)); } @@ -1494,8 +1493,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 */ @@ -1516,7 +1515,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, @@ -1535,7 +1535,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; --=20 2.47.1 From nobody Sun Jul 12 00:34:16 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=1783810278; cv=none; d=zohomail.com; s=zohoarc; b=TEb3pG2Y2C7qNwJPTkeyPt1uvWwIKsh+ygLtJtOvgqgaFZn6InIFgYDxViFYliVbbDVaxs/7oGFSkhYPlwBvxT1b0+vcDQzbHVXS8WMm06UUuAQcDlJHP/iJuVAElwvdklbmLXeLgKjKxx2ZiYdt7grSZpfBsdc+z5F9+vbl4Hs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810278; 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=8OZTUahB02z7edF10eT/FQZqejuEkL/BRaGyOrT0/14=; b=RMz+w6DyTQWoR6fVuQrN9B4wdaT7ZG4vF6Grr4daE44u3o/5GHJ4ZTr979tEVH6SwT5Jv50K81twQajFX99PHWlBD9FOh7lPmivDHl+eFLVODfvROD8iM2wF4TcBBvnAW1ji4mPmOFQn447+HYzDfMwnUWLhz5HV3rauZpfr0nA= 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 1783810278422120.36002793682349; Sat, 11 Jul 2026 15:51:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigXF-0007B9-Lu; Sat, 11 Jul 2026 18:51: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 1wigXD-00072F-8a; Sat, 11 Jul 2026 18:50:59 -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 1wigXA-0008Gy-0R; Sat, 11 Jul 2026 18:50:58 -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; 11 Jul 2026 22:50:52 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.236:11735] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.115:2525] with esmtp (Farcaster) id 523c9be8-6015-4852-81e5-214f04879d82; Sat, 11 Jul 2026 22:50: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, 11 Jul 2026 22:50:51 +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, 11 Jul 2026 22:50:42 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810256; x=1815346256; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=8OZTUahB02z7edF10eT/FQZqejuEkL/BRaGyOrT0/14=; b=dwjbagYfr5LxNRZT94Vio2fshMIF60LHvI2Qyf2m87GOi9WntXsK3AvV FSrYA+H4z8kCt4YT4OXd0g8sPWVteR4HYuLIzFWM9KIPaIc63KRP8RvQy Ti1N/m5xxFVE1J32BXHSa2a81sICQcUHCisQXi0RsDLeJrsIVQj9H2RE3 j0zY8XAM8N4LbFYTjPzP1j40w8dr0f0SthbZYJs4R5V/SdJXrWUrFLLTe pVCsp1VvdwglEU1RDFiNZ5yTqBW+PK1loH8S3GYBCiJY+OIMZOBrdlp1/ XIv4pddBWkRGhktxv8RMDTv2VCB4SRyKKMS0Brv1O5h0sHYNrhvPgU1s+ w==; X-CSE-ConnectionGUID: aiiU3/3cThGZ75MVdKZx5g== X-CSE-MsgGUID: F1xxRmI0QHu5YVTSxf/Rsw== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="22997544" X-Farcaster-Flow-ID: 523c9be8-6015-4852-81e5-214f04879d82 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 052/134] hw/mips: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:45 +0000 Message-ID: <20260711223707.42139-53-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D038UWB003.ant.amazon.com (10.13.139.157) 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=645f258d4=graf@amazon.de; helo=pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810281107154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783810278; cv=none; d=zohomail.com; s=zohoarc; b=ag/AgwahOs/EiCvFdUgzHIJEQnsH8u4yM/6TnabX9ToAW5sK9I/RUt0xKpI1Ioqwq8V+F/q8CMdcEhjmfR9RDoHioRdpdi0E5MLvbjIMUbRsNQwAWCgv3K0sMRkWpgmKVikk0ON0cW6Yl+z9++/U8lbAx3gsGmcnNSZcf5eKfI4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810278; 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=5MH3tgs4/2m76nxiyOlv4aZREvp1s3jjAeWZsIHLlvI=; b=bMFBlZkE8ah7lUmTNQ+IQXSuY6tbx0QmDzB+4rM2vQnH3TCcHF50yacBcCAhnftTVEgFW0gzXnA8YLfAtQ7HSfgvoZYz0QzaW2skbN9gyuoqLO88QYt9UYWZ5+JSViXPaGEOLBEyt/Mt30CSeWIxl0V931rSNfjTtkxDNepLtMc= 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 1783810278517292.7184408760103; Sat, 11 Jul 2026 15:51:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigXQ-0007ok-Qb; Sat, 11 Jul 2026 18:51: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 1wigXP-0007is-1C; Sat, 11 Jul 2026 18:51:11 -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 1wigXJ-0008IZ-BJ; Sat, 11 Jul 2026 18:51:10 -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; 11 Jul 2026 22:51:01 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.53:12790] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.51.175:2525] with esmtp (Farcaster) id 60880766-a6d1-498b-be69-40b781fa70cb; Sat, 11 Jul 2026 22:51:00 +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, 11 Jul 2026 22:51:00 +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, 11 Jul 2026 22:50:51 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810265; x=1815346265; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=5MH3tgs4/2m76nxiyOlv4aZREvp1s3jjAeWZsIHLlvI=; b=bnAqQiKmV1GgREAy0EXKU79R1yxJQQbUwZfls+l5zRPizlpMB2G9Qx2S mz3Ne9sE25XhNQA5UayVZUtJIfkpJJ5Ouk4jBYonIC9IS61BZ5HkuULDp bZZHFx0udypTKMoxbZ5YKqTBd1bQWTM3NUF24blpGIdbCJ3pTtS6ysVad gkBJ4Cr4StYbR9YkgwY0sJ0UAQMrpwFAclfRtedKybqgYMeXdaCDhwmre 8FrZoCn7nSJE545zSwj/d29jt/Zdnqp/mQimIayOG7geA2MkgXQuLL4BB S/1cfySMo324aBSVqIM3EAeH1y2sdlAnLq1QPa3LL9I1cLY5UcTA7lhJW Q==; X-CSE-ConnectionGUID: Ko2I48diQwe+ik/VL00xjQ== X-CSE-MsgGUID: Zza2ug8UTiiazJB6mZ6Y4w== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23479482" X-Farcaster-Flow-ID: 60880766-a6d1-498b-be69-40b781fa70cb From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 053/134] hw/i386: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:46 +0000 Message-ID: <20260711223707.42139-54-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D038UWB003.ant.amazon.com (10.13.139.157) 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=645f258d4=graf@amazon.de; helo=pdx-out-005.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810281139154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783810313; cv=none; d=zohomail.com; s=zohoarc; b=c87qCUnw02B31/94Iuk+rzweJSkDw9sF1CERDVBfRnfaF4T3RUwioCIkDIzv76cZz3OfPNG/5fFKfFTdlhupX4b3plj54LyltBWqJ67RDS9zDiXabypbOSoxtqZ9oowqQEoICPy5NscVlZAcm7bUqnwek68RQ4rntBylXIQOMQ0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810313; 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=F9UC45a59mdr+HSqM/ygBu9/t6DWDgy9PvcLPT5vSGk=; b=er6r7Wfke0oF0u+j+bxIpOPLSJ6A3GnvQZb44xwg5T9eJ42pEYOk41TB1MO4Zmjt9vFvD1lDGpiXShaJvnt10042XxjFxDc7+mUu5g85/+WXS9BsoWSfUwD7grK7aZnChGRqzIhq5LssMyYP80AWyVx4xtD8hSwAP6PGAj+nTs4= 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 1783810313147908.3435102063829; Sat, 11 Jul 2026 15:51:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigY1-0000UQ-5P; Sat, 11 Jul 2026 18:51: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 1wigXs-0000Tp-I7; Sat, 11 Jul 2026 18:51:41 -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 1wigXn-0008OI-8f; Sat, 11 Jul 2026 18:51: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-007.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:51:31 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.48:24016] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.115:2525] with esmtp (Farcaster) id 3132f497-f131-48fc-894b-d8f2ab41e78f; Sat, 11 Jul 2026 22:51:31 +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, 11 Jul 2026 22: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, 11 Jul 2026 22:51:21 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810295; x=1815346295; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=F9UC45a59mdr+HSqM/ygBu9/t6DWDgy9PvcLPT5vSGk=; b=TcYsPavCm2k7Kf4RQezjAgA/erp3z1qNaIR7WBGKtaJN6GIxX3ZjE2f0 TnuctO3g9hLSm4Wxf9gKO2IB9jEaRMHPaw0rSck5PtZW3T7nxy25DjNaN /vhosYsj/3yU8Xrd8mRjuNd1zhRpibUheiXXj/UZi1PSdgLWWLNqqC2pu GE4acDptL4VVEhsXdxl3Sw6AGGl9eztE1KUSWW5Wni996fsb2W3+GuJS+ iLn9iAvPK8fq8zyGbpzThw+XBhTMNsG8giU49+mqM3JG0zUEfN+lPKzlk OpfLRlLeWvD26iADJBIr4oATa6wPmx659LQnIre2VG/x61FYHpcK+KPC/ w==; X-CSE-ConnectionGUID: rUpUBYYUQz6MhQrviiSpEA== X-CSE-MsgGUID: SKu5t2PDQzWHywtmimvCbg== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23483434" X-Farcaster-Flow-ID: 3132f497-f131-48fc-894b-d8f2ab41e78f From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 054/134] hw/ppc: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:47 +0000 Message-ID: <20260711223707.42139-55-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D035UWA002.ant.amazon.com (10.13.139.60) 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=645f258d4=graf@amazon.de; helo=pdx-out-007.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810315032154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783810357; cv=none; d=zohomail.com; s=zohoarc; b=R+6TGxWY8fSXTtZLrE2f+gAoqf+JUzfBf60+Rv7LWxCIEdg+rukZ/62udThY0ZsBB9QCh5UeW2UIRW/Tdcim7tXyw/CfHoysuwpq39LQbtBPDugNXP56pfG9rLmxsmGouFREoEzCcawUxsgxhVbOYbgclfwn2bcA/mPARnjnXPE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810357; 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=+3CHlRaRUq+QN73YCyXxZoAtepYUsMDG1tbwEp/dhoo=; b=bZ6ZfEmwUFf79BT/LCQZ6ZpzYuhPv079qJqjswn5uaU2Mz3/gX2iRzzJmeBNCzJF+Yx5jDUvJrj7dt+bTtxR327XBiBULF1zgpREPlFWC5NCvX0NASbnV4jg6yR14yUzWsUE+qDilnR/Gg4V28+Tti9ljluJ72Zcu7JwwoFTXk8= 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 1783810357957219.5271702342302; Sat, 11 Jul 2026 15:52:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigY7-0000YH-86; Sat, 11 Jul 2026 18:51: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 1wigXy-0000UT-8N; Sat, 11 Jul 2026 18:51:47 -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 1wigXv-0008Qa-Fa; Sat, 11 Jul 2026 18:51: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; 11 Jul 2026 22:51:39 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.234:6460] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.51.175:2525] with esmtp (Farcaster) id 2988a08e-ee4b-4527-b4fe-b06adc9af304; Sat, 11 Jul 2026 22:51:39 +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, 11 Jul 2026 22:51: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, 11 Jul 2026 22: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=1783810303; x=1815346303; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=+3CHlRaRUq+QN73YCyXxZoAtepYUsMDG1tbwEp/dhoo=; b=Fxkcvv5UVLYi9E9X8ySkiWgKkFYXxSnGbzGlBQGIyT5hF40CgGEYzAOl wMNhrcod4A1TYxXXlLVjIE/ycONQUzpfvDT8WRIbW+arKMbgIeW2//XJ/ LGf28HvyhF57RqG3Bodl5Gbd8eR/lmhKc0AuXLgwfB9i9+45cB258h7Pw XNpwG7KReF2he84mPp+N5ClY49Y3c4fbnbWEZ2R5MP5A7h76D4UfxX1Fx ROrdMhfuKz7+ul870jPgnHh2evAqYQ9tyqxmg9W9fC1H6BqNJW1jPOk+1 l5TZiTIHifB3xPgLmOjsjUblYH/nOjB28lBPFFDYALYWEh/N60p84sotd Q==; X-CSE-ConnectionGUID: +AHRVVNIRLiAdgA1OlvxTg== X-CSE-MsgGUID: 3AzIhDP5TRWXkONbur4nAA== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23269763" X-Farcaster-Flow-ID: 2988a08e-ee4b-4527-b4fe-b06adc9af304 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 055/134] hw/pci, hw/isa: Give VGA and slot-NIC helpers a QOM parent Date: Sat, 11 Jul 2026 22:35:48 +0000 Message-ID: <20260711223707.42139-56-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D035UWA002.ant.amazon.com (10.13.139.60) 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=645f258d4=graf@amazon.de; helo=pdx-out-011.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810360082154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783810377; cv=none; d=zohomail.com; s=zohoarc; b=BuQg4utqcWVs9WSh8Vc8RytR0gsBXQASYGrDP5viaysRovsM/0vsQUql/bp9jZAP+AnOPRhdg7a+sdAzkt+hUi5Wx+umDZUoJGotg56NbYLcsVrOOyzckrF/osBQEWJ7apcgldV1wcjlaiRb6hLL3rz224OT/POWKfx3r3Lp1EA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810377; 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=kItUKR9DcPNR534LYpmCG9b1W9MISNR8nav5SxHci34=; b=IbRl6HuYQ75llYcaso6e1erbUG4T3V0/zbvbl7sQFuaf8kfx9cQS7AiqSy6O/UBPcDVJS4tEHUZTW4k1CWCmgfrOBu528fe5iQuF7Rr9mrBI1JRy8icYwlIP7JVb0Ci1JFgyqFeJSZbg2b+TmW/vYbwwEyw2xhUosueXimek8Zc= 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 1783810377752692.7501117881819; Sat, 11 Jul 2026 15:52:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigY8-0000at-Ox; Sat, 11 Jul 2026 18:51: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 1wigY7-0000ZA-6Z; Sat, 11 Jul 2026 18:51:55 -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 1wigY3-0008RW-Pz; Sat, 11 Jul 2026 18:51: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-003.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:51:48 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.51:30703] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.115:2525] with esmtp (Farcaster) id 31dea599-b86c-4cd7-af38-a55b905175d5; Sat, 11 Jul 2026 22:51:48 +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, 11 Jul 2026 22:51: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, 11 Jul 2026 22:51:39 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810311; x=1815346311; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=kItUKR9DcPNR534LYpmCG9b1W9MISNR8nav5SxHci34=; b=Bvx0G0wIe88h86ZPNsCIPS5zyYeBnWJtFMVtJ5NRi412dUbg7KiO6U1W phF0KY8CpnVsvgl/ePNwg65ejUSws6DTZgkpThe9EpgUyap13ykfQXKiV yAwJ3Q68fKpZXDocWpdo/rLPW8PVbsFSYhewfN++nThGZ3rWW6tAD4HHc rHdNXZ9Z7iBstEJdMHEzT26P+987UGLjr/eLPgAd/wqXfDUZwKunmnUQM jucTLQQNCs9+qpCt8xaGwJcP+gFhMy6Ei95b3Yp6xzWNwrejOyD2Y27AB pVKrp89JbE2GuW5KzULkQHTiL8wh46L7ggDgxamC+qcZku4tQ2uTFSKDu g==; X-CSE-ConnectionGUID: /FlYTltOTIOPSYj1uyiKeQ== X-CSE-MsgGUID: zyNuYBYAQ+iS5CP46f7OCQ== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23517176" X-Farcaster-Flow-ID: 31dea599-b86c-4cd7-af38-a55b905175d5 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 056/134] hw/arm/virt: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:49 +0000 Message-ID: <20260711223707.42139-57-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D035UWA002.ant.amazon.com (10.13.139.60) 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=645f258d4=graf@amazon.de; helo=pdx-out-003.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810380504154100 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/ Assisted-by: Kiro Signed-off-by: Alexander Graf --- hw/arm/virt.c | 80 +++++++++++++++++++++++++-------------------------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 686dde5996..ea51a5f3bd 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); --=20 2.47.1 From nobody Sun Jul 12 00:34:16 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=1783810357; cv=none; d=zohomail.com; s=zohoarc; b=I/i71YmYO2M7IhbUmNIHMuRA82EYeF6oRIchkU4mdGN0JhvVUqaKpIMUO1faiUAEOsb7R7t2mQA/hCcSFYLQYUDwIFtTEea9YXJ060bbQTXozX74+ICli2WJArABDlS2lRjlUdEfqSaEcug6La8/08mARG7HPhx9RFctzOQrgjE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810357; 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=qJ9SPZd6KqKT0DByIkveEz5n2P2u8Ab+W4C2Tdl7jYU=; b=MB7zCA2z5VcZzOeb/0FpOmpc7rzM0MFBGkLPXzWHcT7rTGGUW3exa4pHCPXdVyItWkBep/36L4jVg2YQAslx8h1BgxW0nHvY14E9NQMF0JAl95b6f5FEifS7M4H7jefflOMYRk4njZZx8NPqpnDL7tF7/szTlu0rP4LnlC45zG4= 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 1783810357908691.44922573968; Sat, 11 Jul 2026 15:52:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigYg-0001FB-1Z; Sat, 11 Jul 2026 18:52: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 1wigYc-00017D-Gl; Sat, 11 Jul 2026 18:52:27 -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 1wigYY-0008Tx-V9; Sat, 11 Jul 2026 18:52:26 -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; 11 Jul 2026 22:52:18 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.51:25417] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.31.54:2525] with esmtp (Farcaster) id 1520f47c-e749-4a59-a4bb-753b46ca57be; Sat, 11 Jul 2026 22:52:18 +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, 11 Jul 2026 22:52: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, 11 Jul 2026 22:52:09 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810343; x=1815346343; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=qJ9SPZd6KqKT0DByIkveEz5n2P2u8Ab+W4C2Tdl7jYU=; b=RaQia3awJ9VURokJD/SJpdT5RmyuQIi9OzMik2N9DQGN/CRREhUdD/vC yK7Ahl/4PcylV0VfAljIfFQ+WPbgFrruvhevlbspTkEqPNYMxwoNPo5xw eobvM/v7GllIn4tLurNatE+cmZkVZU4EqQqlfaTQvqLpZKlMa6+VN77xs VtQEIMulGneHMqtFJSJGCVC/6ly8XqTynghEOi4ezRiJDF1ikwX1sMvNq xFN2SKArBFl2SqJN4eeFFh85/2CB3EhvSH3y1DTg/lm+ZD0Ypkp9w9CXE RflYbU7HSGAbfG5xBcBA5u4eDo8/HbMawfAcGfY/gikuA3t3i1WwRqs+6 w==; X-CSE-ConnectionGUID: jjHQ2GzHTxyUeU25lbK3Pg== X-CSE-MsgGUID: 290MNva6RYilvvSdP7ceRA== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23493166" X-Farcaster-Flow-ID: 1520f47c-e749-4a59-a4bb-753b46ca57be From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 057/134] hw/arm/sbsa-ref: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:50 +0000 Message-ID: <20260711223707.42139-58-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D043UWA003.ant.amazon.com (10.13.139.31) 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=645f258d4=graf@amazon.de; helo=pdx-out-004.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=0.001, 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: 1783810360109154100 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/ Assisted-by: Kiro Signed-off-by: Alexander Graf --- hw/arm/sbsa-ref.c | 70 ++++++++++++++++++++++++----------------------- 1 file changed, 36 insertions(+), 34 deletions(-) diff --git a/hw/arm/sbsa-ref.c b/hw/arm/sbsa-ref.c index f9fb681d31..f632df742b 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; --=20 2.47.1 From nobody Sun Jul 12 00:34:16 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=1783810412; cv=none; d=zohomail.com; s=zohoarc; b=l/2OjmNkXP54EPbxur+8eZRvtqfkR3cpzgSHeMmXmAA2UZ3iluHhGSH4KlwUwPvB1frlAbSA7uKq2PbKOBy/cRenQXmRkWiZP2G6fnV016enmwSq1756MHZiQxr6m+FWS463QNGEEKc1hMypdI2OC315+Z2o6v6mtIDZW5aDe+Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810412; 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=B23PwcG3rOHYutLOLYO8XYvVh6nIkH9whKtaeOA8vO8=; b=n5v8UnQafRVLoafQplw34CmXJz6cugvXmcDNMmiSEmU6V7afFKCSPRYKMbeiROdlqDvUwfjOInM6cZ51XvJeo95ROSUX3DVvQQULXpEQwvMfCbb58mskQVljpH7qWpX8It6I/S+3D50QXvfOlB1GVJJDdT/x2tYqd4kVvU42zTM= 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 1783810412648359.7687459331313; Sat, 11 Jul 2026 15:53:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigYs-0001PW-DK; Sat, 11 Jul 2026 18:52: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 1wigYk-0001Gp-Hz; Sat, 11 Jul 2026 18:52:36 -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 1wigYh-0008Vj-Tn; Sat, 11 Jul 2026 18:52: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-010.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:52:27 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.236:13433] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.31.54:2525] with esmtp (Farcaster) id a7ebf90f-50bb-48a2-9b9a-b8c2db68b363; Sat, 11 Jul 2026 22:52:27 +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, 11 Jul 2026 22:52: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, 11 Jul 2026 22:52:18 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810351; x=1815346351; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=B23PwcG3rOHYutLOLYO8XYvVh6nIkH9whKtaeOA8vO8=; b=m7sg6si1aXEvalbByZ2Cbstq/TC/SmUA/EiFxHzMi/YSdaYSW2/H/+hD ZxV+lKFH9oglG4d8JxEcz3KoqPWUL7YKMhZZK2cAFXH5EaNFexAg9s8sx l125UGm+nTD42N4CY4PR92tFGXBXTiinxg+YUafPH3bOYmm9oazbAdPI0 dqK3IrQh8SuGbDFlXFcgwMoy49arLFAUD2uEsM9MGpuN7ceYGS8Y7FwO+ zVIS1dc/NspM2UAmGzua55QY05ipzHr5SGSC/MutHIJ+22tyr6tP1MtHq M0Ti622wL+b5p4kAL4HeDpma3YaK+s9ME5mTnJ36GN/HG4qWOI7bEI5Nf A==; X-CSE-ConnectionGUID: E+W5oHfdSPCmt5fk3vE+tg== X-CSE-MsgGUID: Dq0B/d0ASlCDh9uVDp1mfQ== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23369891" X-Farcaster-Flow-ID: a7ebf90f-50bb-48a2-9b9a-b8c2db68b363 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 058/134] hw/arm/xilinx-zynq: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:51 +0000 Message-ID: <20260711223707.42139-59-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D043UWA003.ant.amazon.com (10.13.139.31) 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=645f258d4=graf@amazon.de; helo=pdx-out-010.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810414233154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783810388; cv=none; d=zohomail.com; s=zohoarc; b=Pdsm1m9TgVmzc2mDQlEYOz1h87n+nS6veag1cI/s7tOcuxcG1DXTMADCQGjWpIXKqLW7WScFu3gGIg54brBMYZ3roJusBdo3KBrpYHuw2jPC/naMs8/Yh72day+ymbGeCEZ0nAYaT7jZ9SqLzzHw1mWC4SI0puUfnZzZ+MuRsAs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810388; 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=x64G1LOo/IZxfcfgxloLJYmHOl8JxhgRbwhywuYkk6E=; b=EMyblCm0ejmp77azwNTXwSQbHDPH1NZL/kaxrqRg1CzLZeOBB9I4MmrrG7irLzyWpdrUJc8EhF40Nt91Pah82yWfMmj/fXN1YiFmrWR3AXBNwmv4VqwyhKOiyMCeDhV1Su4yCGtzxFRrkaEJEEU0WekoSjgApZ8ld5i6bvN2pCo= 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 1783810388688478.3098415542082; Sat, 11 Jul 2026 15:53:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigZ1-0001ag-Uq; Sat, 11 Jul 2026 18:52: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 1wigYt-0001RB-Th; Sat, 11 Jul 2026 18:52:46 -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 1wigYp-00005D-H9; Sat, 11 Jul 2026 18:52:43 -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; 11 Jul 2026 22:52:35 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.53:16179] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.47.135:2525] with esmtp (Farcaster) id cd9713c6-a5a9-479d-922e-3783c6bc2873; Sat, 11 Jul 2026 22:52:35 +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, 11 Jul 2026 22:52: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, 11 Jul 2026 22:52:26 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810359; x=1815346359; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=x64G1LOo/IZxfcfgxloLJYmHOl8JxhgRbwhywuYkk6E=; b=QqWPNsJKeJTaFindRYGHWgHKmo6s7d6tZiq8Vg5WaMKYtUFR3+ue/H0h qQP9sSviLVRYp44NT1Mp5X49roBISJD+z56gl7RVrnXt+NpyRkbiqXGKS 7nRzqqph1TJnpf4rHt0HDtX4Va0YQTb0L9Gg9Vae1bIO6Kt/7BdcfP5KN 3vcQDPl984O1u7YA1o1r+89HzAXH1UW/ttT+ZgKmApkFgRqh6lpgsIfDr f3WLV1p5X5gfGP/khMzxHAFzWbgSq1Q0P24RBXgbqmTtXCe68Ro5tMrKt NhOsxG1ndQUkhG3T8bkAdRWx+7aKsp3X3yczq7qRryPM9I0+IlFPCcYP5 A==; X-CSE-ConnectionGUID: JiEGBP5HQDqSVV3+Btndvw== X-CSE-MsgGUID: QtvTYtU3RQeKfcXZ7HnLCw== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23296764" X-Farcaster-Flow-ID: cd9713c6-a5a9-479d-922e-3783c6bc2873 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 059/134] hw/arm/xlnx-versal, xlnx-zynqmp: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:52 +0000 Message-ID: <20260711223707.42139-60-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D043UWA003.ant.amazon.com (10.13.139.31) 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=645f258d4=graf@amazon.de; helo=pdx-out-013.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810390265154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783810409; cv=none; d=zohomail.com; s=zohoarc; b=N9Ira2D+12/s4+wFP45/Q7DqXNpeYO5yzAuQm3xXiIyIeZJ+aCn3ncUc7w7dDLHRa4X3AF2Th5qBYTt+vKcoYaJ2hYC6ls3rYTAXN/fcrtycacFj9qQ4qI92rgM92Nx2m3vVOvxA1nlmhC13K2zwjmQpPNjOBDd4zMMCo6/mTSE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810409; 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=vwkgnduj/+HXlS+7CWphWPURMwYQ0I314noMXbvQwxY=; b=hUib4bzCoE4oh2vhNgibd96JcheK+e1qACBGCGiu5oKghxKRmbt0FTVS3lOAbRdOEsxgglEItIbdtc3RsHqfXuc437VvyNT3GDFIPq14vdEUxaEKJewJtA9EvMx01oKdv+N8CcPab654ySge1bQwy8tYwZbR8TEaB/01Nsa3Ff0= 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 17838104094431019.3200073735595; Sat, 11 Jul 2026 15:53:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigZZ-0002cj-Ql; Sat, 11 Jul 2026 18:53: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 1wigZO-0002Mq-VV; Sat, 11 Jul 2026 18:53:15 -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 1wigZK-0000Ac-4k; Sat, 11 Jul 2026 18:53: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-010.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:53:06 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.48:22626] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.47.135:2525] with esmtp (Farcaster) id 60bd7a42-b55d-44a5-9f8c-19f21ed63b41; Sat, 11 Jul 2026 22:53: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, 11 Jul 2026 22:53: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, 11 Jul 2026 22:52:56 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810390; x=1815346390; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=vwkgnduj/+HXlS+7CWphWPURMwYQ0I314noMXbvQwxY=; b=h3HejtJxBmgsGAVi7MPAOye7AwRCuYAiymdsDYbuEZ4My+tzxpYqmROk /ltb72+q+FBMt41dwwUg/zpfaREHtyjWTjG5FPYVzr6dbITsMts+mQmUE vkDpLR8vb6E66yyotAZWQM9elIkp8DtHgT9lWv09NTpRU9HqW00wILXq/ 8LI9jBqHCoAwBLi33Qbs+iaB7QcLrz5cmzLo3VpiCx+Fhpg0ofm97FCPj jgomy9UQ+7jILrJarIdS6mLFE/dJnPi6BlYaiOpod8m3T6tN+DRmU8BGE 1hE3MTmtWNnNEqj99P6WbRgtvrTKihSZXhvfI9Rhk9BaAWzJfUlirn98z Q==; X-CSE-ConnectionGUID: hCgQ2S8kSt2IE28oI9mdWg== X-CSE-MsgGUID: hOHBdJVASk+ZPinhqPy6hg== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23369899" X-Farcaster-Flow-ID: 60bd7a42-b55d-44a5-9f8c-19f21ed63b41 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 060/134] hw/arm/realview, integratorcp: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:53 +0000 Message-ID: <20260711223707.42139-61-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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=52.12.53.23; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-010.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810412575154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783810417; cv=none; d=zohomail.com; s=zohoarc; b=PABAgBRI7Z46umLYoyC47tAeFzdRDR6HMqylq0HkbxocMW+Q662liIYim9Ww9ORg4x6rG34chYrtTkqHGnOk8u6XzMHheFYu5ny0rKSzwNyGLSdiSq7zAoMzsZ0K04sJvEyfwOxOtGFxOwlttHn99n+uHG1b3eGH+r8x3k7RVA0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810417; 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=BLVZUlUyjVn/Tb1g0gLW0Uo0hio6JMI0qfWXwx/6rdI=; b=DmozxqDkkSneWgbmyzlU5S9c2Rg2y7UzTWGn6yrcxNyNsT74fpjy2k/IUbDgpRzJ1OJjx3wPs0xsSrm2xahzByZGywmpsDUMUS0BoItC+e8kNwSxE7R4QdqaqAlvlph9HGttzaQBn9yq898DviukufybPfKeI0u0xZqqB/08XWI= 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 1783810417624781.2951330145875; Sat, 11 Jul 2026 15:53:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigZb-0002uM-S4; Sat, 11 Jul 2026 18:53: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 1wigZZ-0002cu-Ja; Sat, 11 Jul 2026 18:53:25 -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 1wigZT-0000Ct-IH; Sat, 11 Jul 2026 18:53:24 -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; 11 Jul 2026 22:53:15 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.178:31255] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.115:2525] with esmtp (Farcaster) id c7513fa4-3f80-48ef-b671-a55a6aa59319; Sat, 11 Jul 2026 22:53:14 +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, 11 Jul 2026 22:53: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, 11 Jul 2026 22:53:05 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810399; x=1815346399; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=BLVZUlUyjVn/Tb1g0gLW0Uo0hio6JMI0qfWXwx/6rdI=; b=f6OCRSA2pEdSW4rdH72AcEHW7XJSvl9dmxBeDxA83Nsr2OHWu/Gk7o6X aMNbCuc0oaexUrEAO/b9XZ4gY2vo3569oRjMvvaWgHOcyxd7voy9fKukr t0f+ciOP993LN42nWzvHhQgvavF7kLPHlMB4vYeCoo87Eoj4Z7ye5Qetx pOjV41ACFgkZbq3fhVvySi6QF4TLWwafpxQyPD3E14zNu6zjzxq0VxK8Y qvftf5LXNOtGakQ7maXOVt2ZsjUGVtDTCd4CCNvn0G/6FFjFtt2P51LZn 8k+s5aqIeCcVpfWHWnoaUanHBnRV+9CqPhiVWftW0GGO4f8Qw2+DDXnTj g==; X-CSE-ConnectionGUID: k1Ut2nmORSCR8aEriYh/wA== X-CSE-MsgGUID: r5O9/Ja0Tcy0UYqJABHfSg== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23300043" X-Farcaster-Flow-ID: c7513fa4-3f80-48ef-b671-a55a6aa59319 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 061/134] hw/arm/npcm: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:54 +0000 Message-ID: <20260711223707.42139-62-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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=50.112.246.219; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-015.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810420844154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783810426; cv=none; d=zohomail.com; s=zohoarc; b=D/rDnsb5NNu9A3YsVDab1opnddf1iIUu/tNx5tmYdapmu/S4MOx4Smr4pM0kd9YkJyECgVyikhZK6QaiXb2JwnZgpwHVUfmm4h9qGYe27/NvrbK0hGSem5kvmeSJkBJ+OZxyxkZuJIAwEul1lGRubTVDngbydgu2bNRJn0FHhXM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810426; 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=/3JTEXiUeDVrvvuMHAZVpkhePbnTFUZjX8ANi+ci0NY=; b=EC0evhONItmUKbxy/EH0SapRWHY251thHdFjwx8B7QeWFNmJe3oAyj7hjeRwUOOjjA+Z9TpXNr1u7pNO9hBImx3w4z0LDqlq3kgjqO99OlXifqPndYIhVT6C7So5b0NDPyJ+qRiuYzikbk0EEvKzY46PhrFk+tzpsnZm89xC7z4= 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 1783810426466479.79172237863554; Sat, 11 Jul 2026 15:53:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigZh-0003UC-Py; Sat, 11 Jul 2026 18:53: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 1wigZf-0003Kj-QR; Sat, 11 Jul 2026 18:53: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 1wigZc-0000FS-3N; Sat, 11 Jul 2026 18:53:31 -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; 11 Jul 2026 22:53:23 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.51:14526] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.58.33:2525] with esmtp (Farcaster) id 52df0f18-5257-4281-9713-2e429f90f04b; Sat, 11 Jul 2026 22:53:23 +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, 11 Jul 2026 22:53: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, 11 Jul 2026 22:53:14 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810408; x=1815346408; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=/3JTEXiUeDVrvvuMHAZVpkhePbnTFUZjX8ANi+ci0NY=; b=Ee4fJ3s6aQWQaYc2Ufc31436Ll8H8+TY1f5tliNUjomXPDBeRXyrk8dQ 9wthHM2Q4VZXJIFbRolU5p9a0RwxgYiiZV1nxpHfkHQE6hhYK9vHcW4R+ H0ho2knKTvjvIeCPmMQuXWnvVMtL4Xk+3nrgZzvSMmYaTroD3D3DYjQHO G73wkyxH6ChsgrtcEeJ+oAP1cnwB8Wvnz0fTZTtu0QXMpnpIadJVfui5Z lpxC0XAK3MvlqMmfa5pN47/9hq/oCPdiYBEW+/pHdB6OuE66YbhdfDdnK oiBfM5pxsG07nMwCfUWO/OIWFYE9nahkuXwXPMcUSbSsfQmRcqTFLfnVA Q==; X-CSE-ConnectionGUID: k3kLIqM2RvmazG4V3O3hjQ== X-CSE-MsgGUID: 3Z/0OUUsQCOSpIVD8aW0jw== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23390535" X-Farcaster-Flow-ID: 52df0f18-5257-4281-9713-2e429f90f04b From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 062/134] hw/arm/versatile, vexpress: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:55 +0000 Message-ID: <20260711223707.42139-63-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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=35.155.198.111; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810428554154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783810449; cv=none; d=zohomail.com; s=zohoarc; b=aWGsAEoI/xNVejs/9foftAfttsNwA2Q8rBkOTdbZxy4MHl7yb32Cik+Ma5I1rKvzSewarxjGIFfJRZV51VEOyn5ePUtn+9fDLgKVggLoEF69H/0mraOAnrn8rQxMM6p5km38EzZNlTYyU2rCuA0OCvh7xyxaBVXKH4xOxPoNJC8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810449; 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=Z8QC9EgYqepfR3DwyRyFOP+DGujn22RAsBW42HAJwOM=; b=SmNn+1lejf/A8WbOLLIVXQSeDaukZ/CfTMxTZRVVgwGqPP09Ne9RyK09HLiXy0LU13gt222+ABOcvqt9vj+inzMAlknlDulTLBL6zD2yfXSk3EARbtM5wRtR4xc+6OphsHdDNy0Y9nsrX0HBSdw6QuT7jteijTipiJ8xuU7jCh4= 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 178381044988315.283801257814162; Sat, 11 Jul 2026 15:54:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigaD-00053u-F2; Sat, 11 Jul 2026 18:54: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 1wigaA-00053O-Qi; Sat, 11 Jul 2026 18:54:02 -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 1wiga7-0000Qh-9P; Sat, 11 Jul 2026 18:54:02 -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-014.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:53:54 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.51:15066] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.68:2525] with esmtp (Farcaster) id 84a6503a-5e51-4325-a72b-fbd3868914c1; Sat, 11 Jul 2026 22:53:54 +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, 11 Jul 2026 22:53:53 +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, 11 Jul 2026 22:53:44 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810439; x=1815346439; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Z8QC9EgYqepfR3DwyRyFOP+DGujn22RAsBW42HAJwOM=; b=XpYr7nnpZiW6fMpzm28c04b7KluF5h8+cJlwL+vlllaPtHuARiQaKEdd R/U0Q+zSRdmAl138/tn9sPtsPxXM3J6FFZLlsipwDWwrljk+JqhYGbnib mKMxMux0nIGDxeG/SsUKTqv0JcErVyfd7w9JWxYHu/EsLZjkdF19+iqJF xM0IycBEjlPpziY5GD3ZrrLInbzlVP0o5kDSeaUwkd9vw4FgEtGmtEmFR sccBnXi/7BgDZDysT1x3DgDZ2FECU7GNrniiJ7zxnx8+xWRnUgnxNH26K xBiS7+Wi37v5IkluuvkF3RtYHHjfW6sJ9suHfm/ReThbPISrqixPzslJw A==; X-CSE-ConnectionGUID: SPlLIvslTaObjA8kPD38YA== X-CSE-MsgGUID: lBUGM8ehTXSizD2pjjI9pg== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23287682" X-Farcaster-Flow-ID: 84a6503a-5e51-4325-a72b-fbd3868914c1 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 063/134] hw/arm/stellaris, musicpal: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:56 +0000 Message-ID: <20260711223707.42139-64-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D038UWB004.ant.amazon.com (10.13.139.177) 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=645f258d4=graf@amazon.de; helo=pdx-out-014.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810451403154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783810495; cv=none; d=zohomail.com; s=zohoarc; b=Bk+AQdu0/aB/w98Vti9TQxm5A/ANFSZFgG/iNuqHdh8JhjcsyCvlIgYcYqHQDPC+GD//h73E5tbXRGN7pwVi+5b5FsnjnJ/no54NhYVRa8lC0FgZA51EEfb48AULvK15A5y72Fzu++4s2sqCMQvkE0nAdQJ4eJTMFDM5YqjX1ZI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810495; 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=n+XuYmxfGu3wkaJmkCUn499SAgMK+9YQubHV6kurJ3k=; b=lxQCW8T8Sb9uLVyMC+32vIOdCha1Sqf+Mg2JJjyTz5xkT6x+n5dd6mUOyP+XcIeCV4q7Yh9Du+gRs9E/xEN2onoshj5o/DKQGd+p50ahqKkMbj1bOiAyk1TyZshuTumYOGw3qo2dXVOx2y7J02NUI8+YDR5pZ+CVnLd5Hy7UDNo= 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 1783810495712204.986538620877; Sat, 11 Jul 2026 15:54:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigaH-00057o-Q8; Sat, 11 Jul 2026 18:54: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 1wigaG-00055D-HE; Sat, 11 Jul 2026 18:54:08 -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 1wigaD-0000SY-V0; Sat, 11 Jul 2026 18:54:08 -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; 11 Jul 2026 22:54:02 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.236:20836] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.51.175:2525] with esmtp (Farcaster) id 311ea20f-aaae-4d6c-9a09-7166320f2a48; Sat, 11 Jul 2026 22:54:02 +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, 11 Jul 2026 22:54:02 +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, 11 Jul 2026 22:53:53 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810445; x=1815346445; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=n+XuYmxfGu3wkaJmkCUn499SAgMK+9YQubHV6kurJ3k=; b=PM6ygU6gHgicabU/zCN9pN0exDJabGa0aNKOdPWmOXiSJ+FiaTW84+Jx ES1/D7IIL+tIDxzffGE9rq6eoKiig0rch1rvg7136LDcleq8gApdLFY5V vWIMPj0GKy/TNFcFbwicdbSyPCuQZ9tIZ9Quf8/UCWf9xcCp2LHQNC6TF nrVWCgUPTRyD/yvR2gMSqy3NEzAwUJfHCz+bMdfWrcegvmhTtypGZgm7U wcldw1OUF7DpWNwspp5kPo/ZNaBCxn/9flIxRI3ONIayfC0cE+6osZyLk q6C7p85Ig3kig36esCiLZqznkbOWQlDjPp5TdM5C5IbqItFF0sa4fuDBE Q==; X-CSE-ConnectionGUID: hK9ZiXxhRDeICmg+nG/zJg== X-CSE-MsgGUID: c/6Y2yMlQvCDpKU97Z4OUw== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23517926" X-Farcaster-Flow-ID: 311ea20f-aaae-4d6c-9a09-7166320f2a48 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 064/134] hw/arm/exynos: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:57 +0000 Message-ID: <20260711223707.42139-65-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D038UWB004.ant.amazon.com (10.13.139.177) 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=645f258d4=graf@amazon.de; helo=pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810497770154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783810474; cv=none; d=zohomail.com; s=zohoarc; b=Bn/vM9WzO0JVHTqtxNkHwYlgbYbHMm5cFMIcXWWwHRRq41o7SBx514Gq42RY+xvX4aORBvZqgHZa2NIoRGgjcHHjhB5GQHEYlpK0OidNrvhGnFhrDWIMwdnbwn/k2iYivsZDUvpi8Tz0P8dnHmU0tHiw7PBUN5xRYsHCs2+fIYo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810474; 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=iIPM+ob7e8V7G3dwYLSqkCDf+GYvnGAV46cu17rqTLY=; b=i9J0f5e+5CcmyX4kX2+LSOzC3Z3gfHhJaZLKlCBS+LHggVLzwE5d+MsSgS4IgObpeZdiMcHXStPahI1ZJyLau+bvwzjZPoOEBfSGIMfaU8oldHxzqxSz50jBUvsiibvarSn/wPR7bx00C5iqA9ORyKR+rzzMWTdo1m+cqIFaEsg= 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 1783810474191536.246256557362; Sat, 11 Jul 2026 15:54:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigaR-0005DH-Tj; Sat, 11 Jul 2026 18: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 1wigaQ-0005C7-EY; Sat, 11 Jul 2026 18:54:18 -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 1wigaN-0000Th-51; Sat, 11 Jul 2026 18:54:18 -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; 11 Jul 2026 22:54:11 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.53:25300] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.26.212:2525] with esmtp (Farcaster) id bf76de13-6d7a-4fd2-b7eb-d92baa2bb100; Sat, 11 Jul 2026 22:54:10 +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, 11 Jul 2026 22: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, 11 Jul 2026 22:54:02 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810455; x=1815346455; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=iIPM+ob7e8V7G3dwYLSqkCDf+GYvnGAV46cu17rqTLY=; b=MKffReoQ2UNTf17VHlOzq+ZbhU25fegWmYb7EAg9NXqIa386EoXqgFU1 fxlgaWlQc6Ov4Y9QMxEf4jCiPXeww6vNvvh21UMg9UDZsBrjyMA2g7X1w NA4fa+0543K8MONBBY+5L4RaSKuR0jKVSGoHd1ORcWawjopJf550lxT0x l7S4AagVjvBCFyrj/56t3dGkxl2IGTSbnfEeVT4YvJKnqsC1+RHqOw8Zo l/V7el94GIvhCiIwPHzyDa0H4+YcXHi802HS778Vu0WHApZSgG3cycmc8 5DmPB/zJYH4zLz0mI5Og09jXJTU4neNLJkqD9V+JXocsFVwrURk8msXmT A==; X-CSE-ConnectionGUID: ezwu5teCQYS8wfa/Pt2Mvg== X-CSE-MsgGUID: 97a7/2N2TCGvgs/XfyqolQ== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23483473" X-Farcaster-Flow-ID: bf76de13-6d7a-4fd2-b7eb-d92baa2bb100 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 065/134] hw/arm/allwinner: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:58 +0000 Message-ID: <20260711223707.42139-66-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D038UWB004.ant.amazon.com (10.13.139.177) 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=645f258d4=graf@amazon.de; helo=pdx-out-007.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810475531154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783810523; cv=none; d=zohomail.com; s=zohoarc; b=FGVbsnRa7Y0J3b1vxfNEh90Y8mJ3LD03b8sz0Ilm9BeJIVjtWZ83+0PsBhG/5D4aMXiCzJ/ThyJarirGi8kzsvvMJJkvfGQs5mQn7xmzypzuTGfUMLzJ7xkXwQakjHFCYAZsE8oTA/aIiEpHEKtUUPiiLatv2YKwnq9p6fomhU4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810523; 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=MW3P9SgTvFq9SPiktBatupfPQXymyENjuoN85Sn7L2I=; b=btO/7/X+tgiNGup3qcva7F0Nzk5NphPOC4JuKAzoU/gNWOQ02ktrVIW/MzTqo2XELqmjdKOxIU8c0K+Tzp5tk/1gFFU9AqYpvwPta6ZlbGZKS4PaBA992NRohn6mkchVVK16ZCLpBSqMajx9EzRLe7k3ndshCg/sZRo1Sv2OR5g= 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 1783810523101260.53473652204184; Sat, 11 Jul 2026 15:55:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigau-0005lb-7k; Sat, 11 Jul 2026 18:54: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 1wigat-0005gj-4T; Sat, 11 Jul 2026 18:54:47 -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 1wigaq-0000Yy-Sr; Sat, 11 Jul 2026 18:54:46 -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; 11 Jul 2026 22:54:41 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.48:10476] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.26.212:2525] with esmtp (Farcaster) id 2627543e-87b6-4be6-86aa-138e48a26d60; Sat, 11 Jul 2026 22:54:41 +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, 11 Jul 2026 22:54:41 +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, 11 Jul 2026 22: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=1783810484; x=1815346484; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=MW3P9SgTvFq9SPiktBatupfPQXymyENjuoN85Sn7L2I=; b=iO3w87+qsUvF03k5bmOSZ7wK8JCCA4DFV7dpBvApXEGNWJ5SyoE+oScP 9CcBIoypu/8477v25wnrjhhkVEvKutVSh/dAYNHvezj9B7S1cpNjugTE9 Qvd2umMS9Ul7nyzNAxdHRNZn595d/Fp5EVY5rUxu2xXdTemNaEozSvaPu FAwMVkQXBD53/EZrZ9owCm+TeBQ3bTDyyo8PjbEviIZlN/6v/cGWQkiwK sYr4kR6U2SCPb2gNtGs3YYKweZhURlpgK21riqdP4aNoOeVPe61odiap9 10JkDyPCvDwujoNxxfDbxsWYs1yho6U099U8xymsWo+VEhNZ/PUfQf5eF A==; X-CSE-ConnectionGUID: E+fwtORxRiGv0nNW70y+aA== X-CSE-MsgGUID: qsBGwhy+TByDWhvbCgPXAg== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23300053" X-Farcaster-Flow-ID: 2627543e-87b6-4be6-86aa-138e48a26d60 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 066/134] hw/arm/strongarm: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:35:59 +0000 Message-ID: <20260711223707.42139-67-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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=50.112.246.219; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-015.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810525875154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783810520; cv=none; d=zohomail.com; s=zohoarc; b=H/DAXnZov14IOvGGHF1RgOFWHXFEob+nBHjhotle0ud0ORyTUWlHlWNNcc9husw++dNCD/8fDHn4+QMFsyJWXYs7C93dbppIh8zm6IjN0weHzzCjC2l5zOZI/riuZlEwawGC7RVXEqtnZikmBulWRz7m7zvQLZk16lNZVZFqXlU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810520; 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=D9g+aVM94UMznw+s65uqey3AbIXgNoxopxgQZq/AO70=; b=atRpzLhMcq+hCxqxS7nyjm5t3xucAAlrMqXq9ji6oJrRaoy49dGhRIn84aauFvj1OdSQw/s9rPGPwC1ip3O/otzcip5qhCmoxEOVEAe6aJ/YgX5oYVdIho5rKz/hs7NnsU3zaN2aq199BANqLLkl2VpZd4afaqC6PQwU0lJCew4= 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 1783810520672597.0649285024897; Sat, 11 Jul 2026 15:55:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigb3-0006H4-Tc; Sat, 11 Jul 2026 18:54: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 1wigb2-0006Ab-53; Sat, 11 Jul 2026 18:54:56 -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 1wigb0-0000aB-2Y; Sat, 11 Jul 2026 18:54: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-004.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:54:50 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.182:10930] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.26.212:2525] with esmtp (Farcaster) id bdb2d29d-60c8-4ef1-ad63-10db65981f50; Sat, 11 Jul 2026 22:54:49 +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, 11 Jul 2026 22:54: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, 11 Jul 2026 22:54:40 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810494; x=1815346494; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=D9g+aVM94UMznw+s65uqey3AbIXgNoxopxgQZq/AO70=; b=nXVxqUVUtHVT3sO8/NxjzcJFuJ79tLuE+7+5FSWe0424erB8sShQ1R0R C7riTDegrDVrR8q1fnOBDJdrOWu55vc7pal/9HUCuxWF/AEXCxGjp6w+t ppFXbGat8pZPFijIj8ILNRgN+1G/28SF5wfMDrAbV3pSQIWW9LuhAe15F o3qntbjIms1bTMuBHbOi9IuWFJiotcElfyiIcDphdemrqexW6QqnWkw73 GzN5vga6pI4GKJCVvQcue0KQQVEspxb4NnQoI9sG+PfmaE54fydTNh/Qn waHA6mjO2x1zzRqiqtjRXGbQk0zFM70dRHGcwoijr//cG2YrCqdwFXvul g==; X-CSE-ConnectionGUID: r5i9ri9kQw+Ggemfhy22Mw== X-CSE-MsgGUID: 3PM/+ZQ1RKqgJn08eMY1vQ== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23493179" X-Farcaster-Flow-ID: bdb2d29d-60c8-4ef1-ad63-10db65981f50 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 067/134] hw/arm/omap: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:36:00 +0000 Message-ID: <20260711223707.42139-68-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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=645f258d4=graf@amazon.de; helo=pdx-out-004.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=0.001, 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: 1783810521778154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783810513; cv=none; d=zohomail.com; s=zohoarc; b=Ln+s0S2dy6hDMZTXUa6vOytsU1t9zXoAqNpKI0eHoG5UzYmdPLMUlfuzSUo51zErmpMUe7uwe82pLYRMlV3sHi+aVm4sE5vI6MfoSs9xDz/qQzUJJLo7/SY+uC52bjFFYNS5ZWIrpDX3IHxX5dBcY+/1vzu6cmSGK+hfkNsj36M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810513; 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=4cAkYgYNVoammNqMIJ6fr3f2G1MzkFiShXpaVvox6sg=; b=fKGmK+sxOI6vBUOlhd+e63ZbvpoPZp0Dxl+2LeC01wVRKil0pFl1Cmbb/wlUe2ZbxY3KoFXMPf15BMBCSY4RJBoxLaYDP8bImizeLunf3wCSSjb2uTnRrhrhd/9kYS8Lw0qkgnNpxxRrv3ixsijhTQbkQIG8oiOIU9KCbkklNK4= 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 1783810513785259.69443685074066; Sat, 11 Jul 2026 15:55:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigbB-0006XP-Ta; Sat, 11 Jul 2026 18:55: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 1wigbA-0006Vm-CU; Sat, 11 Jul 2026 18:55:04 -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 1wigb8-0000eK-94; Sat, 11 Jul 2026 18:55: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-015.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:54:58 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.53:24738] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.40.123:2525] with esmtp (Farcaster) id 154fd470-048e-456f-8ed0-07d03d48e1ac; Sat, 11 Jul 2026 22:54:58 +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, 11 Jul 2026 22:54:58 +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, 11 Jul 2026 22:54:49 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810502; x=1815346502; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=4cAkYgYNVoammNqMIJ6fr3f2G1MzkFiShXpaVvox6sg=; b=f728agJCCcNMULpNaCOkhxWvqRU1dRS8Pl7oZdBRK3KlCLlLQmiv+WnA P5lCdaG1R8t3MDOVY9Wq590g3e1ngZFkhb8CwJTmuJI3ISv/7z55Retan YeCONcTxTA9+gAiuxOmEfQ2SqwyQ/nbZL85X7MvHsj4RsTiUp9JDz3Gaw 9aGnP38cXJo+fhosXeD5XncZdU/D4tye3CbzXH8wUrN2s/sPwzR5AxzlX bi4VcS+pXH/QtVTwmRDM5RJCgLZFaO0IcUXoZNjqPH8VsIybj3EV9o4b7 xCJNvmJGLfkztPhzF2k0nV26VbP0k9M0SqXZjbWklJxck1XOlNx8xXYOw Q==; X-CSE-ConnectionGUID: dxRjR8JPSqOfrFaqb1mijw== X-CSE-MsgGUID: WvGCJZ/+RuC8IyMsltsgyg== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23300068" X-Farcaster-Flow-ID: 154fd470-048e-456f-8ed0-07d03d48e1ac From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 068/134] hw/arm/mps2: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:36:01 +0000 Message-ID: <20260711223707.42139-69-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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=50.112.246.219; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-015.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810515873154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783810563; cv=none; d=zohomail.com; s=zohoarc; b=HhWYr3TClY5G8u25umcsVj7u8onFWODhh4M2fe34fmv0OrEhPCLkOeUHh9Ky1shc8Ue7Ogw0tVMvHKL2WKSxteKVfWrcoJdUBFpOv0oXyHuxcY/7NQk993KJsDfTEG526L3KNuTSlawl7FD7JEOnH6ifwo7jgcI/C2cfD25JGjY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810563; 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=lQU7Pqv5BEyEBZMur78N9gmhRUgMQYfgLuXugUnzrlw=; b=ciOAihAm1Hp1WPTyaX6NeA989rnf1XRo9ll7+KkYEc7AcqqYhwpLcS3CjFYV5Ehpy/JbmqKdmv3IMYuA264WcImn09stLoLK7NQ7R50maeQ4P+pqyBXm7PWoSkJekeE0G8d3LLHEoZx9cjjRKwn0JuQYXGJ8mYlDWJuEar4Vek0= 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 1783810563886398.9428788668373; Sat, 11 Jul 2026 15:56:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigbg-0008CZ-NY; Sat, 11 Jul 2026 18:55: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 1wigbf-00089m-1R; Sat, 11 Jul 2026 18:55: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 1wigbc-0000oF-LQ; Sat, 11 Jul 2026 18:55: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; 11 Jul 2026 22:55:28 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.48:20358] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.68:2525] with esmtp (Farcaster) id ba66bd41-fa63-49b8-ac5b-11e015e0ef0d; Sat, 11 Jul 2026 22:55: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, 11 Jul 2026 22:55: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, 11 Jul 2026 22:55:19 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810532; x=1815346532; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=lQU7Pqv5BEyEBZMur78N9gmhRUgMQYfgLuXugUnzrlw=; b=VpHrB4mCufNL4sa7UKClZ3l1BoCZg41QJzPLpMAzlxTS3/6jcpdK485Q b0D0yI1mbjINqa1ve9frzY7kpYoH7hwG4R/2yD0lUc98tP02TJMX94E9J G9baXvSn5ht/EVr2c6Jeopnw1RZfpwbOiPvn3qPX2f0Q8fqdJSAcq5EAo 4zOGil++5bqKkZ/UAkppERIvGAvlw4UgzGNQW+WJKtS95DGcxvrHr9KhJ rL7SK0SeoK8ZK0E76OawBvcDmNlFoY1jDREbXSOrQ4OCOm2bMaAGYIFsr LHgQ7BCRJyxEv9ampOgpEpTG9s+QTfBUQY/uObhPeRr5SFS9mdFfL60DQ g==; X-CSE-ConnectionGUID: FNOToU6FTzejBL/BtwFkVg== X-CSE-MsgGUID: Cn1LriflQ32Vd5/cL5kUHg== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23390577" X-Farcaster-Flow-ID: ba66bd41-fa63-49b8-ac5b-11e015e0ef0d From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 069/134] hw/arm/imx: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:36:02 +0000 Message-ID: <20260711223707.42139-70-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D035UWA003.ant.amazon.com (10.13.139.86) 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=645f258d4=graf@amazon.de; helo=pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810566404154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783810560; cv=none; d=zohomail.com; s=zohoarc; b=WvP/qQsEHRP10vCDnrg21787GxuJczbCi7YnacrM0en1p5q2brfegWn9KtWb3l2ihjgfV5pIAVuUlJuArPZzYZmfTsrCCrbbrsWPLYBa8Rc3Oo40qMNKGHk2GPrb9fnk8tEcEEFY5OJjn5o5wTeg9gnFJWxLa1kTnH/VXwXo4kg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810560; 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=UZrWJEtfb1lP/2siccXAPIJZ1bnr7X5Yw8WsjnCiiHs=; b=VPvKtYjsFTQYs9kPDEJRn8hn3+dE8quo4x9t6FSlnaVtrqwMBt7uY36CIdl0ISQNhx69en7IFUOodti5GSw+bpbGi3TL1oK2mHxJP3UmZhl4HQKkTQLfajnxDYk0XVDoSICuWDuEspgOLn6LQ1uX/JvHtyG7OUhOxJJbM0dCRQA= 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 1783810560721503.66339456932496; Sat, 11 Jul 2026 15:56:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigbq-0008Id-Dw; Sat, 11 Jul 2026 18:55: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 1wigbp-0008I6-6s; Sat, 11 Jul 2026 18:55: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 1wigbk-0000qC-Vt; Sat, 11 Jul 2026 18:55: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; 11 Jul 2026 22:55:37 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.178:29960] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.47.135:2525] with esmtp (Farcaster) id 1b6f25cd-8869-4bc6-9867-9928325a6c52; Sat, 11 Jul 2026 22:55:37 +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, 11 Jul 2026 22:55: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, 11 Jul 2026 22:55:28 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810541; x=1815346541; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=UZrWJEtfb1lP/2siccXAPIJZ1bnr7X5Yw8WsjnCiiHs=; b=Yq/Fr9KSgsc+M5jBnYuLlJtnpKyC2HryIVgHNsnx+d+UbgiIz4jO894a 16Tgpgb/Xw1/NQLVVIVC5Sf58kxbhc/2fcR63NjHN16iMgHaSjEotpdRO QG3mtRW33PYYb+Sz4IWkKolE2Gh8EE4xyLzmaLDJkkuf/jocz1Rs9/Rzr G8tqIjJXYJ+oMY7BWSQHnbwED3su9RST0495lXC5bzjmBIZraXxjns4KB NQuEwzkLYS5/gO47SAeEaGeMep2g//tDkaIEgusVltaiX7am/IAHHBdsP mhhsgtc/iyJHNX7Z5triICWPgwgUfVEGgUfsruT1y+TkeRMzEIYM8/N5h w==; X-CSE-ConnectionGUID: lxP5FfnhQimTsWQRZWwBsA== X-CSE-MsgGUID: 4mihwK3pSlGx3mziuIFCqA== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23294002" X-Farcaster-Flow-ID: 1b6f25cd-8869-4bc6-9867-9928325a6c52 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 070/134] hw/arm/misc: Give onboard devices a QOM parent Date: Sat, 11 Jul 2026 22:36:03 +0000 Message-ID: <20260711223707.42139-71-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D035UWA003.ant.amazon.com (10.13.139.86) 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=645f258d4=graf@amazon.de; helo=pdx-out-012.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810562962154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783810577; cv=none; d=zohomail.com; s=zohoarc; b=WqW2xvE577RG9/HqKU8ZWgBThEJbWoD3GwWey29qhtFYlKDTXU/La3JuAjpf8CDFGHEKegOvq9G+kZpkEHf/0IikjmdXDcOIfMNlWjkdx9atUH3TqqQJ+1Mt4+i1/hH06TAlGwwk/WHrXdWxdsmO9W+uuddIf+3SeClpNwSQAxw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810577; 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=5ViCkmhLCdaLrt9KJaf520Q+/hnnwvkZfg8J/csG4Zg=; b=GzUfwTlt88xAZagT2wja+1nUe7ki6VYHvD+insj0pGIdJEMK2mqsoazjXHU6LayXPzN92JvLVOxGNyzDkernuykVx4wjTsVrAyRRHnAbE6i7f5+2CesO27qw86upZxL2Rp+7uzPrDmU2h+UV36TzuUZNdcekrky6MJh+YnqYuQY= 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 1783810577424454.3159776603063; Sat, 11 Jul 2026 15:56:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigcJ-0000h6-Oq; Sat, 11 Jul 2026 18:56: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 1wigcC-0000b1-MG; Sat, 11 Jul 2026 18:56: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 1wigc6-00013E-SA; Sat, 11 Jul 2026 18:56: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-013.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:55:46 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.51:15765] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.51.175:2525] with esmtp (Farcaster) id e0a60f8d-8342-477b-822c-5a84b286d60a; Sat, 11 Jul 2026 22:55:45 +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, 11 Jul 2026 22:55: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, 11 Jul 2026 22:55:36 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810562; x=1815346562; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=5ViCkmhLCdaLrt9KJaf520Q+/hnnwvkZfg8J/csG4Zg=; b=dTPtAzTzmkboAow/E0PruY+mmPgWi/iD6HHqlHNf0u9bp+GL4kYuMscF DH6Sk8iTuiMmXhDoVbxR3AlW78MxP/wqzgDPcLJTqUqcKt7i6D6SELP+x bXhqdnLVi4m+0B3mtmBeiQVBrqhmOomfQmnkV9xvsl7FH70nrJzWDm2xh Z9WDlrIFrhLG/wYBi8CSjtjWmPOEZiJG/wwGcajuHtSnN6DWRfbt+l4x1 GTKRuc7aLHE054T9djp5ftWYlePQU/LzRUo3x8poVz4gxPazQtSr/fonn ny4idHrgwTJLqCFsE0zMUgPpkghrnBuY1/GtiP9WMvPUjZO9+L0k0+q0d Q==; X-CSE-ConnectionGUID: hkhwxQfoRQepV2q9W9KurQ== X-CSE-MsgGUID: TXesh5j+RXexMXrj5xS4KQ== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23296810" X-Farcaster-Flow-ID: e0a60f8d-8342-477b-822c-5a84b286d60a From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 071/134] hw/arm/aspeed: Give onboard devices a QOM parent (part 1) Date: Sat, 11 Jul 2026 22:36:04 +0000 Message-ID: <20260711223707.42139-72-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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: EX19D035UWA003.ant.amazon.com (10.13.139.86) 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=645f258d4=graf@amazon.de; helo=pdx-out-013.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810581100154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783810597; cv=none; d=zohomail.com; s=zohoarc; b=K0tDXqSCDAcIWKN+8snBNQODgz4Lw+7fs9VjfyXeUU0XRz5UMxCwLv6lpq6qXg+jABt6AS0fKJTwyCO7yOuuax3cB3odBesupyTxy7K/CnrpN0K9QOyTOv7usANswppuLuwGh67CreX1Bs/7dSiP9AA2yOumnRVUw1TrV+x18hY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810597; 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=46kjdie/7rNqruakPoJoIXw2yiSk6cLDaJ+X8P7e1cw=; b=mucF1+jSHfEDGuAYTe1UgTicARMghq58kclxbxTfQFx/uGk8AzMRS7jdBxH4v4pprReCE9I//lsD6OHUNNyPw3Ja3xoDJ36eC27woFgnq0BE7s/V0OjLLf0t9OE7E1AUq9fDf/1tgsLElUaUvrTPwt5me6JkbxVGnzeqsW6oj2I= 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 1783810597731258.69877278035244; Sat, 11 Jul 2026 15:56:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigcX-000149-CA; Sat, 11 Jul 2026 18:56: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 1wigcT-00013T-OG; Sat, 11 Jul 2026 18:56:25 -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 1wigcO-00016l-4r; Sat, 11 Jul 2026 18:56:24 -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; 11 Jul 2026 22:56:16 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.111:21924] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.58.33:2525] with esmtp (Farcaster) id 7c0c3561-b6b0-4046-8076-2cd30c2bdac8; Sat, 11 Jul 2026 22:56:16 +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, 11 Jul 2026 22:56: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, 11 Jul 2026 22:56:07 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810580; x=1815346580; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=46kjdie/7rNqruakPoJoIXw2yiSk6cLDaJ+X8P7e1cw=; b=slGDbg9JjXguYN4ie6slMx/5N4JzP4aYcHnmgfFz+Y/+McsKRB7UER3i c/G34zBETNIV2iKD3LSzD8+JHZyRUDk0fXjnsmqxAw2LmX6ReUrUkn1b0 9X2UEoFiT9PmkNRb4rzXBUJTdAUSL6n+BeWHYlzbcfCyWAoqEGZjOZiko JXrSFmtNGrGHMcBgDQax6n13JqUNYvS/udhOdQ+CMdf0xeDmK58MA5RfB 4qzbQVDxhR7ovQ6jTyymqwJUoNnDqdMcM6tqd8W5G4ay52jsYCFcHm7oT soooDWMevM2SQkR12HcIorbATk8+jkqpCra3H1MEc5wgeh89cNMOn85IW A==; X-CSE-ConnectionGUID: +mWAuxq6Q96PN9fhpstzrw== X-CSE-MsgGUID: bcHRXHawTOWNMRsvZHRHEA== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23493209" X-Farcaster-Flow-ID: 7c0c3561-b6b0-4046-8076-2cd30c2bdac8 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 072/134] hw/arm/aspeed: Give onboard devices a QOM parent (part 2) Date: Sat, 11 Jul 2026 22:36:05 +0000 Message-ID: <20260711223707.42139-73-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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: 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=645f258d4=graf@amazon.de; helo=pdx-out-004.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=0.001, 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: 1783810601230154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783810615; cv=none; d=zohomail.com; s=zohoarc; b=FDDGaeDs4L50dcCuqR/MYa5/uLM+8oKiCjSicOIHYAdPeHS9AdlMoy9H5OdxMjgV2tBPfyk5VqORzbbU5UHgmsHbnIycpA4rZ1/0AFJ6ZsyJXU2w8lxKZP8IujKVBaYunCnToLyl+J0LQs6mHQ88yOps7hUEdZfinTcvaD0AubM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810615; 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=6/HiP2U5209DqbHLcR0wHveI0XPE+0XoQXiVz3vr9eY=; b=j97EkrplrAvVUzbEZE7QvBynVDvACdMZXK0Jf79a4K4NqNZMZ4XBAyd86U62OKwGjuVNEm49y82eZa5BBv9TssQUDFHm6uAmb1Ey4OZJoKO6ZlN86+c5MnEcQMU/pB4HTUjMDOGvPelZaW5z/Qdf0121CDeaAM0b1MaRSwhoYH8= 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 178381061559724.574575520946496; Sat, 11 Jul 2026 15:56:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigcc-0001ER-4T; Sat, 11 Jul 2026 18: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 1wigcb-0001Dp-1z; Sat, 11 Jul 2026 18:56:33 -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 1wigcX-00017q-6p; Sat, 11 Jul 2026 18:56:32 -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; 11 Jul 2026 22:56:25 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.182:12609] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.47.135:2525] with esmtp (Farcaster) id 7d7e7b5f-58c1-411b-80f2-7792f5c07f0b; Sat, 11 Jul 2026 22:56:25 +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, 11 Jul 2026 22:56: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, 11 Jul 2026 22:56:16 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810589; x=1815346589; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=6/HiP2U5209DqbHLcR0wHveI0XPE+0XoQXiVz3vr9eY=; b=mVNKKC9Hl87BiBboKHrFAi1aYWuuwGP6a0LG6l10ThO0VQr/WOlA3/BN jkgxGp+8P8p6EBLTERdGgcaaQceDJxbuGUOan/DCiGZl7NHhrGAi6vvfu 4RIA3q7BhRXPVoVHm1mrDMINe+3btTufvegRazDZv3B+H4JFH2zYdYFXa Uo0ZtOnZ0kJ6aG15g4qSVL51Wh09AbHJNG4e6WdjW86IQV2mv1UcR7KV+ +y2QjGZk3ZvYHbGbusEa7AbMdOLjKEA/o09lgrs+QqJ9Y5rTBWb55IIQS V/tOaABo7e6zFsYHqyNLzSRVUJoJVdBvshXsdfbFLVoCjY/qLx4/D6yY4 w==; X-CSE-ConnectionGUID: 5trbg/90RLy/RSdZPj42TA== X-CSE-MsgGUID: sOxVmV04QnuOjhI297S0cg== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23517991" X-Farcaster-Flow-ID: 7d7e7b5f-58c1-411b-80f2-7792f5c07f0b From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 073/134] hw/nvram/at24c: Give at24c_eeprom_init() a QOM parent Date: Sat, 11 Jul 2026 22:36:06 +0000 Message-ID: <20260711223707.42139-74-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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: 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.42.203.116; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810617121154100 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/ Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783810620; cv=none; d=zohomail.com; s=zohoarc; b=QWD2uddhXkNKb4uVabQCFZseJwbtREN87NNScVnyP/m70Q+jnjsqrGNZyxWB86xw84X/AVLLI3HsE86jXRey/k99iHjZoCsb/gX4TRohq5OY9MyQlbdbVb0MMZ8R1IXiD5pjVXSVP7Eh3PG50B1D/RwAaL5FbyrofHJHzCFtiNY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810620; 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=E9dRs0FfS2zHvxRHxP6oqDuGETedFCsJ5GMIpWF1/Fw=; b=EtoGjfx6ryZLDqnY4p55bO4XZkDP4CwhdSDahbhELQnVE+vajunw7sM1aW5uIA+aOyes4G4fPR4aAdw0XAxNFe8/uxwHFqZhxkFVhNGblRR0bgjqy8ejyq/kLGUeuI2hQ9gi1uNOs8+iIdzmL9JW1kLK0MDH4zIAFxbhlM9OTkU= 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 1783810620667350.6301289594762; Sat, 11 Jul 2026 15:57:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigci-0001L1-M2; Sat, 11 Jul 2026 18:56: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 1wigch-0001Jj-Ah; Sat, 11 Jul 2026 18:56:39 -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 1wigcf-00019T-Fe; Sat, 11 Jul 2026 18:56:39 -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-014.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:56:33 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.53:2093] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.31.54:2525] with esmtp (Farcaster) id 78730497-ad64-435f-a383-db7843ba4d0c; Sat, 11 Jul 2026 22:56:33 +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, 11 Jul 2026 22:56: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, 11 Jul 2026 22:56:24 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810597; x=1815346597; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=E9dRs0FfS2zHvxRHxP6oqDuGETedFCsJ5GMIpWF1/Fw=; b=Usr6BjO6opDSrasA42RNCOgl2JZNhrUhhTRY8ACv1xp9ca2zMjVRk4BI gCVsu2vT6w5HjD/4IyNg3aVQk6YCtP5xzKW8mOyGadc41Qw6+glTMRLet ADTYfqOfJ99GZ7kDQ4oiVlWsH4JMd9N81SQ/5U2Sok1L5Ou0TKr66nuym xh4l6eOgqrlEfvuxWlK5+/w4H45WUCvwYz2vT2ZPurIo1eYP4o6r1GsSs P8wVxmZSXjLsp+q8onxT12rF6I5Uksox8QsMGtBcr6qxItLcXbCRmm1L3 75w9lvmpn9Ls1RUtbgDGnXkFul0824AB+pq+tPIkTatnDGb4vMLWDgKVs Q==; X-CSE-ConnectionGUID: zD9FUu7zR3Ov7S2RzixzMQ== X-CSE-MsgGUID: E09Toe5xTimzPC48FDhyqA== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23287747" X-Farcaster-Flow-ID: 78730497-ad64-435f-a383-db7843ba4d0c From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 074/134] hw/i386/pc: Give pcspk a QOM parent Date: Sat, 11 Jul 2026 22:36:07 +0000 Message-ID: <20260711223707.42139-75-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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=35.83.148.184; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-014.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810621184154100 Content-Type: text/plain; charset="utf-8" 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. Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783810655; cv=none; d=zohomail.com; s=zohoarc; b=MqNf5JP4EF+6q5ACG9QJDw83hxkygVCBi5H5A1PF6f0R5NGgrugJh0wcy+PTV9F95uwCOoVlzLsJUgan7syvA+32Uus/QDotAQtDh+cwQSOBgSXjMy37FqMMiWmR1Q7im3fCH1OSo99C5yCPXRF7969Mm0CWlMU9Pe92RtneWyc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810655; 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=OO6yXSKC58/UPbvW+GAf53gwJmQKZhKW0kpIYk87aRU=; b=aikxHHPZBAT+hek1J1MPGkYxORLHvkkCjv0Nv6Iza1e6K8gPq9o5M0vaxS5DZf771DoK3pPGYIn6Q1SQXMckH7rwZKj72hA+jY+NRyphESOw3IIpYHUAASJcnmmZS9f7iXmn9Ida6jx0jg8gJS3LSHQD6m5e6Gnn02QPhkHktVQ= 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 1783810655790377.24679961974346; Sat, 11 Jul 2026 15:57:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigdS-0002hb-VW; Sat, 11 Jul 2026 18:57: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 1wigdB-0002aq-Mj; Sat, 11 Jul 2026 18:57:10 -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 1wigd9-0001Fr-Hx; Sat, 11 Jul 2026 18:57:09 -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-015.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:57:04 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.48:22710] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.31.54:2525] with esmtp (Farcaster) id 8f3d552b-ee0b-406a-9880-0449d8d6c057; Sat, 11 Jul 2026 22:57:04 +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, 11 Jul 2026 22:57:03 +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, 11 Jul 2026 22:56:54 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810627; x=1815346627; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=OO6yXSKC58/UPbvW+GAf53gwJmQKZhKW0kpIYk87aRU=; b=SGCwKBgs8HuimWn3Qg1hoVEImGNbDKECqY7u3Y5vZtNl6H6v40fgQg70 Pno8eI65hRlgy4biYTw8Qf+IPAlWqd2KJrx/90NaqSsexSK7zPgjMwSbF A8QoJszBs8nsCtrOjk4ROOlssa0IiYsYua607bG/Jd3H1nea/MJr9Hvp8 kd4h9Fk7v076z9Pl8pmtNR7imRTHdXIDklYkxbPKy+/5l/31IysCngsUO 49Ag6nSNot955NQDWO0c0JWfizDt7JT7B+Q9Wj2CF9TmfTFJD1LclRjNf C6VOKW8xxUOweFWkL9yORD8V5VI5euErmZWGoKVZFyte0Of1luQI12U2O Q==; X-CSE-ConnectionGUID: i6W972XZT8WspPdW0SfU/Q== X-CSE-MsgGUID: mNEw2CBARWmFnQyMJs6pbw== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23300155" X-Farcaster-Flow-ID: 8f3d552b-ee0b-406a-9880-0449d8d6c057 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 075/134] hw/timer, hw/net: Give i8254 and isa-ne2000 helpers a QOM parent Date: Sat, 11 Jul 2026 22:36:08 +0000 Message-ID: <20260711223707.42139-76-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D038UWC002.ant.amazon.com (10.13.139.238) 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=645f258d4=graf@amazon.de; helo=pdx-out-015.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810657606154100 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) Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783810673; cv=none; d=zohomail.com; s=zohoarc; b=Reu030a4OOh38HjZX9OatKQOvPsHk+heEuBnK6XjkEsFvHQC6Y2gLkZmjwuyfXsPJVWoM9aie7hOdmqiwT/aa1u+IizpHpj/ORijDzy4r9HIXespglGQ19RqUfvJdNKVL43twHSU54b0lpnzUGN+6r8CPEwniPJfw/9eHBd2Eqc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810673; 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=yTRy+mSh4KIfvyHN48Ve0BVd/gorYm6hLS3NfsP9rSI=; b=Ju6gfr3SLKIfFDI2tPAt5T1ZU+sSL4Lw8DatSgSV/Mm/gxNvwM47eHK71ROwkjvDgAVmjB+1YlsPpXu3n9GjocE2CJ/pHLiK2gtPXN5EiLM3U5ffNb3K9kY4bzxGQYWfygcjgbcLAAgHBaAOfbgp/o004j4QMkrQNwoJaCBvVZo= 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 1783810673228573.4209850361457; Sat, 11 Jul 2026 15:57:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigda-0002mz-G5; Sat, 11 Jul 2026 18:57: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 1wigdR-0002iX-GV; Sat, 11 Jul 2026 18:57: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 1wigdI-0001LY-Uu; Sat, 11 Jul 2026 18:57: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-012.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:57:13 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.178:19373] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.26.212:2525] with esmtp (Farcaster) id dddd772b-be7d-47ff-a793-9822d3c59ebd; Sat, 11 Jul 2026 22:57:12 +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, 11 Jul 2026 22:57:12 +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, 11 Jul 2026 22: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=1783810637; x=1815346637; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=yTRy+mSh4KIfvyHN48Ve0BVd/gorYm6hLS3NfsP9rSI=; b=IEDo8m8qEl9N8C5AHs9RqpRMWBF6ERqs8OaLghmLLZ3RFRFUz25HhxXO CRmTStU14MzatTE/sbNpm4rmeDJMEG0QlngAJBY829Cwz3G5hvhw8J8+F GmJiDcdhjKMgAHd9FHp9C9OSf6UOLfU5RkbVJgMPJrq8JmbAnL9NQCHmg q8Jz2wL5VqhVpvv/7StrPVYpROOsEEJC4XHrcDoNp5Ep7a1rXY3vIFQZ1 AXeX13r6pLTOR4rgGpE+wH5PKM2A/go9VTo7J6EvtqsT4YvlLccSSKtXT 0U8+n8c14Gk/y77kCDK/Run0OiD7uGHSit45E0EcIU0BLprhL1KS1FBet w==; X-CSE-ConnectionGUID: h0EuHR4ORJudUaqetS/Bvw== X-CSE-MsgGUID: GNT2UK7hT2yUVqsO+P7tiA== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23294082" X-Farcaster-Flow-ID: dddd772b-be7d-47ff-a793-9822d3c59ebd From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 076/134] hw/misc/unimp: Give create_unimplemented_device() a QOM parent Date: Sat, 11 Jul 2026 22:36:09 +0000 Message-ID: <20260711223707.42139-77-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D038UWC002.ant.amazon.com (10.13.139.238) 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=645f258d4=graf@amazon.de; helo=pdx-out-012.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810676003154101 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. Assisted-by: Kiro 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 7d1d4c7657..8c6d2ad122 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 57ced817e3..9ae5af3162 100644 --- a/hw/riscv/tt_atlantis.c +++ b/hw/riscv/tt_atlantis.c @@ -557,7 +557,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 Sun Jul 12 00:34:16 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=1783810691; cv=none; d=zohomail.com; s=zohoarc; b=nblm8DY3Dxu1pmr/wus/tPOMoCR2x3rJihTEgpC+q3DKPnWMw3ihnZi7vniTCtuurUCOps512dZANIQNQc9FPh7L4JhX5ZNv4laOpAMU7D52zq+WJ7W24OIpYYoJOui1Scf60EV5Uh8m7jBB1OWbqDJDVpv7mAKq8HUIgEOv7Qo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810691; 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=jOWQ3MPKNOWbOTZvD1jfyggpxHQg9YeLUu3eSDISNmU=; b=U1+7H5+64oNG4z2lepF5D2Ng+d7BHXzbN0KW79tVFRLym7GicoT+0n64l10qX0t2uEPvfeA9JFx1+axf07XryjS+GPw+XoTT9P61lO4X9/yz/FiWnB4tRJETzVibxwLA13qxVCgGFv9UUSwax4diPD7r8x2VCYJVc2na+zVm40g= 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 1783810691660290.22956165602636; Sat, 11 Jul 2026 15:58:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigdh-0002rO-PN; Sat, 11 Jul 2026 18: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 1wigdT-0002kM-ND; Sat, 11 Jul 2026 18:57:28 -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 1wigdR-0001MP-Bc; Sat, 11 Jul 2026 18:57: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-005.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:57:21 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.51:12053] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.40.123:2525] with esmtp (Farcaster) id 978060d7-e4f5-46cc-a897-f56672c31de4; Sat, 11 Jul 2026 22:57:21 +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, 11 Jul 2026 22:57: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, 11 Jul 2026 22:57:12 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810645; x=1815346645; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=jOWQ3MPKNOWbOTZvD1jfyggpxHQg9YeLUu3eSDISNmU=; b=LMUGEkfpeGM7UdCSUyMyyMmeZ08rL0jfwj/F8f2UkTHdnGkQZST4EMw3 sKSVsPuzpByHKJjXTWs3WOgT9JLp3ul81OKCUk3RBMw2JG2zQgeeeh+H6 m8yrw7kP4nT7LzRkd7Dv0HGaGaK80+Cq/CkCDnBg1jArcufwrriWo2Rhe SicIH2JXdjAy61gRruHWpROP6WZsKxQevQuckQnAEIA+1Gy5H17ccm2ap OQonhvADI4JHFD34n3KVz9mBIoblXwqC5xwv+JziO/8afwD+BMpLsfRyn z0YKHmCzMOZzkPMhID139Zum7tgK93EkNhaGCfoLAe5QTsWCjcSsdrZo1 A==; X-CSE-ConnectionGUID: qzQbjqiTQWSbTGEt3b6D3Q== X-CSE-MsgGUID: STEgFdRuR3qcPoDsdwU3VA== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23479604" X-Farcaster-Flow-ID: 978060d7-e4f5-46cc-a897-f56672c31de4 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 077/134] hw/usb: Give -usbdevice and auto-hub devices a QOM parent Date: Sat, 11 Jul 2026 22:36:10 +0000 Message-ID: <20260711223707.42139-78-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D038UWC002.ant.amazon.com (10.13.139.238) 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=645f258d4=graf@amazon.de; helo=pdx-out-005.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810694195154100 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. Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783810695; cv=none; d=zohomail.com; s=zohoarc; b=NzjgiIJzgNKg37ZBSnbXHVB0mPlXmM4dVUNQ6cm/RgnfsAMsQm2Z2edq8VEA5dc8faKkPE38H9MSzg6QZsOhDgLSO3eDdOAyXmk0eJ62PMiImJyT1GK9VEgGdeHcNXZMK2kYtrkf5n60KU3rTwA1hfwjJem6F3lP5bgfJDMBMlo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810695; 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=Ma/DwAjwZrLcqKA98spRqUTG7sd6afeYhtmjFkqce2M=; b=laX64RhisZlTxCbYikjZ+q0oiXoDAsxZW9WJ80RFMw0kkF/kcDXpgfOa/Kb5JJQmWGvazo5wNbJz32wn0Ob0AFmBVkP0kY7nVH2WbzXiKeCyRUu1rShZtEzUBejh1y3OeQzY/W5h9ljjMpPUKN0sDHeat7pd2x7oF2NI/HNdvEI= 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 1783810695829401.9973385282033; Sat, 11 Jul 2026 15:58:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigdy-0003dt-83; Sat, 11 Jul 2026 18:57: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 1wigdx-0003Yw-05; Sat, 11 Jul 2026 18:57:57 -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 1wigdv-0001PN-BT; Sat, 11 Jul 2026 18:57:56 -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; 11 Jul 2026 22:57:51 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.111:11199] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.35.214:2525] with esmtp (Farcaster) id b383e339-ef54-46c7-9d12-f452bd2223db; Sat, 11 Jul 2026 22:57:51 +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, 11 Jul 2026 22:57:51 +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, 11 Jul 2026 22:57:42 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810675; x=1815346675; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Ma/DwAjwZrLcqKA98spRqUTG7sd6afeYhtmjFkqce2M=; b=MmOVFV4j7ToMhTfH/GWC3VI5GuScwXruas5Q5G3J9om/iQktoWFk3wc4 AKM9HOkU3f8R1D60GRLJ9Hk42O2VXM0tQ7RWy+EFGqS9mtId29lIzfPca 1YMPRlS94mMNAWaak7gxL/UwNTZDhpIPEBraNBCiQcXy0+kuzrS+qmyKj PGrNcdRwXOCAOXBtKBCP+jEYAebi1uhCoGkDs/Q9833b8WdkqhCqvWa3/ GazcA2YEtCmf5XtW7hS8P2OQMhh/DehxRbTCk1kXy2I0Yr7Mm0sAbTOSP KFIV391bQ8JmiAC3G0tHcPoHR9KhNjVYSxlKX4plVEl5v+0iug4zyFOwp w==; X-CSE-ConnectionGUID: 3HTAobOWSR+ialyx60XHPA== X-CSE-MsgGUID: ecozqXy4TZKqeVEkBQYEIQ== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23296857" X-Farcaster-Flow-ID: b383e339-ef54-46c7-9d12-f452bd2223db From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 078/134] hw/audio: Give -audio model= devices a QOM parent Date: Sat, 11 Jul 2026 22:36:11 +0000 Message-ID: <20260711223707.42139-79-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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=34.218.115.239; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-013.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810698182154100 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. Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783810723; cv=none; d=zohomail.com; s=zohoarc; b=ALFQ2FAHrSqsBV6N75fUUktRv4H1pOqWioyLXpgZKi6PQp43/IAaf8mHWhxdkquE71pinPo7+2hZrbz7wy+Fr99Sz/qr+Om7HjOY0VWL+w649Rd0oPTD1PiaKTqg6rkvkKxLeI/Sl+FFcFMBsLwXXhRMZchZC5NA2ayS7tmpCdE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810723; 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=yNBEYeoFV6RUHNn+yy3xUQpPv5kMRABtAu1z/mNwi8k=; b=l0VLxN1m9ryjpLY7oJp7iS+heMEY6MYo6mKCbI0uNPlN9qySMK4UweASJa+tp+imax4PSMXWPcBSW+L7eq/q1X5itIou/gphfqVbsBrfGaJAohl4Ul8/bw+aF1PdKoimih8JkStTiJRhlEfYIcDKU3nrdsLfMwTU3eUKkIkuiyc= 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 1783810723128888.909708177157; Sat, 11 Jul 2026 15: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 1wige7-00041g-Nb; Sat, 11 Jul 2026 18:58: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 1wige5-0003ym-NS; Sat, 11 Jul 2026 18:58:05 -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 1wige3-0001QT-VX; Sat, 11 Jul 2026 18:58: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; 11 Jul 2026 22:58:00 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.182:6951] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.68:2525] with esmtp (Farcaster) id b5dbb74e-0597-476d-bdf5-b1371377360a; Sat, 11 Jul 2026 22:58:00 +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, 11 Jul 2026 22:57: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, 11 Jul 2026 22:57:51 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810684; x=1815346684; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=yNBEYeoFV6RUHNn+yy3xUQpPv5kMRABtAu1z/mNwi8k=; b=F/YANnXdV9OGlCRQzCtI1+2P+VT3ViKa6acw6a7hVw3gYNMHChIFxlnK OFoSoMIYTwQYyZsmMZ3a6N777jOj+c0nmd5DnsrhtnCbpemWuDY+npulZ BGLZdiUmNIyszJVEKWmXqSFANkmdu9ROMX42idZmab6OMTK1HfNa1q8Hw j6W2flP7v+YA5R9Vc5EGsdjz1dUIv3Q8qa9xp0Hk+yRSt4WD9yRwsZdHe w+OcZu4r3dvOtaEHq23f3vb9ZWpeDtS0dWYzIitCW0BTGj2GsznuLTbyt la4oBTbZLxq+Uo8rlbEQpRJf+5D5KpieCFDfmIP1sT9UEC9f+StbZbdem w==; X-CSE-ConnectionGUID: kitu2YOpRaewwxdX4ANGTQ== X-CSE-MsgGUID: JWyq21BhQUatOA4oy1cDUQ== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="22997665" X-Farcaster-Flow-ID: b5dbb74e-0597-476d-bdf5-b1371377360a From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 079/134] hw/xen: Give xenstore-driven backend devices a QOM parent Date: Sat, 11 Jul 2026 22:36:12 +0000 Message-ID: <20260711223707.42139-80-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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.245.243.92; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810724563154100 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. Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783810720; cv=none; d=zohomail.com; s=zohoarc; b=C/eFItcaOmBRpydJSs4qXso0iCeh4x6zv6P8ZIjG9mIPL3c5Otq5fJ2U6rM3oBBBZCoe3Uu7hHHp5y7GTDnavbw/BbKWi4o6QqHOrzU1XLG5vD+MLBuABLMx10pqD9GKqagsQV4HuHyPmIIvCUQufsoiGNsrpjZQM/6Gv0LeetY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810720; 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=zNqLOx2x0I9gZElFzToX/WDwD+3MyIg002yqWRyyMKE=; b=CjW6Qi5uSbxiyXdS6jF5U52Y4sJa+j6J8wv5UfIgwJw0eyzurQYr7MYt0gqONuvULmmiFe8moT+MZer3zCFYyciTrwjqFVebs1gzTpTwBDxja83BX0RSZsku3kBvK7tLeRry0NFFPUYUDJX4mxfc8yQ0Zy5/yG1o0Swwxx/DPNY= 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 1783810720762547.2878559406444; Sat, 11 Jul 2026 15:58:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigeE-0004Hy-5W; Sat, 11 Jul 2026 18:58: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 1wigeD-0004Cu-8r; Sat, 11 Jul 2026 18:58: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 1wigeB-0001QT-CD; Sat, 11 Jul 2026 18:58: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-001.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:58:08 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.53:8221] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.31.54:2525] with esmtp (Farcaster) id 4e9f9928-008a-42bb-b64d-d988d99267b3; Sat, 11 Jul 2026 22:58:08 +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, 11 Jul 2026 22:58:08 +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, 11 Jul 2026 22:57:59 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810691; x=1815346691; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=zNqLOx2x0I9gZElFzToX/WDwD+3MyIg002yqWRyyMKE=; b=DQyuHtcIPwrLO5qk8M+VeVMXjC2ALmM4CPp9lpUAxrXw6igQCWAjQgfn jTM1291dPJcYUVWi+m3Mq+UIuBmOomqI4rc8zrJUDGVkcTXPMKKBBxkNy Gyj5BdQ+Nt/8N8BNo5Ngfm8v/T+WTiWVf+DYFCIwEMNc60jP4B01nyUZ1 jdqL/iaIqYMjU/JhIiPiRebWr8CCNyQClckGppWKZ9C2woIVZ41HGX33Z iNL/QiFbNJsX4rJPUoqmVhCHI7vxCaj/xTr2gtLigYRU5OJzOnP2mtfD5 fvKOpBPBoECn7baJGJVQDRVdVYFfRSabBC/gwf8idzV6sNz19YlVUT/YU w==; X-CSE-ConnectionGUID: OUYYIaILTuSOvJTRPR+sIg== X-CSE-MsgGUID: VekgXWuRSZ6Ypbmk+wdovQ== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="22997667" X-Farcaster-Flow-ID: 4e9f9928-008a-42bb-b64d-d988d99267b3 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 080/134] hw/nitro: Give the vsock bridge a QOM parent Date: Sat, 11 Jul 2026 22:36:13 +0000 Message-ID: <20260711223707.42139-81-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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.245.243.92; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810723895154100 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) Assisted-by: Kiro 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 Sun Jul 12 00:34:16 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=1783810729; cv=none; d=zohomail.com; s=zohoarc; b=gJBwpqQZ4TcND+u2T8MVOgi3PbZZ7pRmJ6Ud5jl/U2+QG1Q5GCAeEVvj0qqJ5E8i3TFq3LPLtwOMH8EUYBOEPDrnrA5lB0pKd6JHnud3bei1TTZzs9sQkZXPIbNSSIXVVIX4OeKnEccNt4Znr9oPgHgAELmZVRXTuu/b09EbKro= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810729; 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=XOPf9T+GRqou3ohjMhRytKrWr3YRkmJayT9N6zuaqro=; b=R9Tj0KMIK5Opz++Zj/as3H1PnIc/WQo/olTa57KwD80HgsfzDtsefN8DQKqMvjnJb8th80qyNFOn4rP2qCrrTFAAoZADC8+zQQ2M46/x4yZ8PYTjq3TFaC8kFbMVqlszoS+xIm8JRbUGoRazJ4/5gsvrkQg8ndBqroEJAztHXWo= 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 1783810729085902.6089822393208; Sat, 11 Jul 2026 15:58:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigek-00060E-Di; Sat, 11 Jul 2026 18:58: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 1wigej-0005wE-4k; Sat, 11 Jul 2026 18:58:45 -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 1wigeg-0001XH-Nv; Sat, 11 Jul 2026 18:58: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-006.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:58:38 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.48:20654] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.115:2525] with esmtp (Farcaster) id 5e51aef8-8b4d-47bc-850d-82ff609a3365; Sat, 11 Jul 2026 22:58: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, 11 Jul 2026 22:58: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, 11 Jul 2026 22:58:29 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810723; x=1815346723; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=XOPf9T+GRqou3ohjMhRytKrWr3YRkmJayT9N6zuaqro=; b=ieK2yNgfTG35ExfqUSGqQ0Crqlik2QRbFGBKRaUpUj3dWDZO8jBXEzsi 0vuJdogQIiWJ99JHgnOf3sUv1+Iz/4bjnPO4RqhzeCa4aysMRTTUQPmXx X9cnCQFrh4zsqXtqZkoOdx0BmJLXm9I4KZSBhFalzihR926Ov6SYfu9R1 /GAlgaedQTSYujVW470IqJNJD+m0CrO43y//y0Tf8i3jpSVb3wuob+28M AhL/MXDBmSkmzuyxDC2WUOb/VuQg43lS9M+zq4VA7O4un23MHCKfP8yd3 rg52Xho3fCMITjs6+UIlGH1wzexHVXQPuXXtBth+DmhDpdgLHYoAPuG4J A==; X-CSE-ConnectionGUID: LQP+PG6jQe+f2jEHBQRrAg== X-CSE-MsgGUID: yGfKPggQS3yblmiFUODA9w== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23522428" X-Farcaster-Flow-ID: 5e51aef8-8b4d-47bc-850d-82ff609a3365 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 081/134] hw/isa: Give the isabus-bridge a QOM parent Date: Sat, 11 Jul 2026 22:36:14 +0000 Message-ID: <20260711223707.42139-82-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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=645f258d4=graf@amazon.de; helo=pdx-out-006.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810730691154100 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 Assisted-by: Kiro 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 Sun Jul 12 00:34:17 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=1783810739; cv=none; d=zohomail.com; s=zohoarc; b=g3bJ9PuqvcgamijxU30+E/71gq0UNf8B8QHkz1QNyLndcPhssv0UKhJfFoJZpv61Prj+j/pxgbn+MbcJFZZ2LKrz67ua+bZwvKL1Tf+b+r6sbrsm+BAXbyPcQLDFQiB+p+rN14HAcePqCLvDMALpvI0xAra/6gSkN9bQoiONL9o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810739; 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=Bpy5yBiEIPzPgbN3jgoAzDiUtVXWrivdLqr1ylj3zY4=; b=SDJMmBFSGTVqH/tRYf/Dc3m8xImKpQEJL/U4q4yGTGcAJeWfES+WPZeWyrd8WbuizW4K72yFFrzHvmPCsQANUi6QvHa90gE5fWkABGeMkPD0NxQNszGlviUHQ+hnQ7qTpPGUGw58vwfpwTUPWKbehX7EYzdv5dzOeKZ4RpmyqPA= 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 1783810739208136.73249131742273; Sat, 11 Jul 2026 15:58:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigeu-0006MY-OA; Sat, 11 Jul 2026 18:58: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 1wiges-0006Kg-HR; Sat, 11 Jul 2026 18:58:54 -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 1wigep-0001Zt-76; Sat, 11 Jul 2026 18:58: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-011.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:58:47 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.178:12981] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.31.54:2525] with esmtp (Farcaster) id 4ebafdc3-ad62-4714-8592-e74dc4c4194b; Sat, 11 Jul 2026 22:58:47 +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, 11 Jul 2026 22:58: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, 11 Jul 2026 22:58:38 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810731; x=1815346731; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Bpy5yBiEIPzPgbN3jgoAzDiUtVXWrivdLqr1ylj3zY4=; b=LpT1U50sQba07gcESAt3zlXu26X0g61jRPKKgvVZismVjVCv60PXMd7U I+jVsVRSh1BXOKi+J+8W0rSZyuKqQxu4cDfb8/TFFl2tLc42nzkfk7dXo G8CVynVUV9aSN4+RvfK6wpOU/YKk54hTroV+Fu1vdEIbiIuVpc6MI/tiu G7wgtl42PIs7k0RoPdrA4nLtv+B9shxpZfksFN8eq/CXXWc0SUJnJTJNd wji26tV3akt6upXl7bpkPi7dWgqpOUMfXufvHsT6gz/D+PaUrPwted4fA mGKQWwNkgUq4L4wg9W39dZJtxnuMwPv5s0mlv5OmWf9jvP9x19FVP8nTo A==; X-CSE-ConnectionGUID: 7GKSmgS3RACyROZ1Lkaddg== X-CSE-MsgGUID: iEV5PWG1Q/OnjxbVvM4SgA== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23269904" X-Farcaster-Flow-ID: 4ebafdc3-ad62-4714-8592-e74dc4c4194b From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 082/134] net, target/mips: Give -nic and CPU-with-clock helpers a QOM parent Date: Sat, 11 Jul 2026 22:36:15 +0000 Message-ID: <20260711223707.42139-83-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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.35.192.45; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-011.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810740912154100 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. Assisted-by: Kiro 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 618b1adf4d..d686c413a5 100644 --- a/bsd-user/main.c +++ b/bsd-user/main.c @@ -475,7 +475,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 53c7768a5e..512335a4c0 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -237,7 +237,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 @@ -819,7 +820,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 Sun Jul 12 00:34:17 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=1783810764; cv=none; d=zohomail.com; s=zohoarc; b=S8CJ1np2tJBHPftVZq5TTwBqTfZ2O+MlQfa7QomnN7/uEcDrH6r7NtwXVkh3Ru4F9wKf6+YyCXUZdIaaWL58xZum1/6wCsB9su8s0kNGB0wgDwx8Lue7dD41IlZTAsr3Pc9a+nXaNtj0JrVhFQvLwvghxQdofDVZ9D+g/TX2OWM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810764; 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=5wJX8HTlMWOp+CthdhWDxuxqwHRCoNy4439GbPHkYpo=; b=QnkSglX6CKcc/a4Zbmh9GalSvVQJzToePg1nsMmq4jTltFb/b2uegpTkrt0Y95Gp0w+18CDxcXNo3IE5NFbqGcSfhI0NMJNoD/itEEF6nR2cAD2urElzbGa9+iAYxj6YEaErlA8HUc1vG4DZOOtsWFYDAkyTtb2GzvTCHUYzreI= 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 1783810764550210.45364649108308; Sat, 11 Jul 2026 15:59:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigf6-0006t4-JD; Sat, 11 Jul 2026 18:59: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 1wigf5-0006ie-0k; Sat, 11 Jul 2026 18:59: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 1wigex-0001b6-9I; Sat, 11 Jul 2026 18:59:06 -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; 11 Jul 2026 22:58:55 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.51:5669] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.31.54:2525] with esmtp (Farcaster) id 3046c674-944c-4dc9-9a2e-17595cc7fb99; Sat, 11 Jul 2026 22: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, 11 Jul 2026 22: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, 11 Jul 2026 22:58:46 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810739; x=1815346739; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=5wJX8HTlMWOp+CthdhWDxuxqwHRCoNy4439GbPHkYpo=; b=LptMTme+m0VP3RaEsLxStA1JAYk5FIRr0Bh3hbGA6zgBiIUeuPXuaaSe EN14Yp7ND6xqaCn3ZrVxuOo8w5/rD0MSUunatCeiAbXoJlG0zFyVIDpyx hTyn1m+VaF4sPEJ6sU25b+ru2ShS0kjjo/Ny56/U9BGGMhlogOZ1xRjio FE53JbN5A2AnNaUiz9jKVWCX7ZTdGcnO1i4Lt74E/xNPuWTIIHy/MIEsh IzeVj7a1Ltd837wMIGTFy/S1ASL5W3GtvYx0GwYqxpifPcrLSQbQuznlm /qy7uq+BYFyS6HgTC5PNkpCLbU/xFnKRa3yDtaJQS8b6pQ1P3xvuSeJFB g==; X-CSE-ConnectionGUID: tyYwmJWCSuS6lTSk5SivTw== X-CSE-MsgGUID: p/V0nDvLSw+97JVEWtpETg== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="22997678" X-Farcaster-Flow-ID: 3046c674-944c-4dc9-9a2e-17595cc7fb99 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 083/134] usb, ssi, i2c: Remove *_orphan() creator variants Date: Sat, 11 Jul 2026 22:36:16 +0000 Message-ID: <20260711223707.42139-84-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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.245.243.92; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810765359154100 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). Assisted-by: Kiro 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 Sun Jul 12 00:34:17 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=1783810797; cv=none; d=zohomail.com; s=zohoarc; b=ajSj3mk/r32VSf/66j6rElHlzrZCi2hEzD9+g+JChP/3IkwiFKA9xomWkKbwwrouh/JrBhVu24kmcut1UdqVDzzNhQYybqjNz1cf5SwWOf1Bi4udBf0vuSqjDYT6o7JR/WmeSl8ZINUcJ7LPV5QebudP5JMIuuVoToT6JriKOFo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810797; 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=kt2dEn9aFlPZ6cjaknzUQGuWA9n/MANpwwYTiQOngoY=; b=EVbswgy+uLWooDUUSjoyIW4kABsRV3gcUn+QZUY2+0IYMlXbEYTbFyVrSrQeKPFcDrqYTm5+nCINr7ZADiP6hZrXX4PlCpfR1Gq5h06zm/iGqOyZFtrGuWoX17rfG962VruUBlIYgWRnYGZDkm40Nf9hj5B/pGdBkpwmHgIv2Zk= 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 1783810797656108.7474950368071; Sat, 11 Jul 2026 15:59:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigff-0007j3-9O; Sat, 11 Jul 2026 18:59: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 1wigfZ-0007hk-CR; Sat, 11 Jul 2026 18:59:38 -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 1wigfR-0001gL-I9; Sat, 11 Jul 2026 18:59: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-005.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:59:26 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.111:25563] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.31.54:2525] with esmtp (Farcaster) id c2daffbb-ed4d-49a0-935c-ffded380deb5; Sat, 11 Jul 2026 22:59:25 +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, 11 Jul 2026 22:59: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, 11 Jul 2026 22:59:16 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810769; x=1815346769; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=kt2dEn9aFlPZ6cjaknzUQGuWA9n/MANpwwYTiQOngoY=; b=oVq7QlZv+1VWqJn4McSglzjUVaGd2CF7CgY3nEk1TzsFlAtRNaIfBo8g Qg8DqFaBrpGgQJwsS+6yWofNvVd5Ps3SFJcc7C+dGS0kYrFkMiLBjLvJ8 FKj4O0U6bzmW4bIxfzNQhGNdyn49BGzJgPE06X3rpj0+587cAakPU26A8 KYoWw+sE2Vr31CaOFeVVZltyr8gkHb4hL7Luq25xx2PRbzI5ukL7XHdUZ /fvAvVY1mBrM23MBUvak3bvJeYXN/0kVsEQC/83kv/qE30xYH1A3IZjXa GKkch7DIYAML3icvENIoLr1mnWuZueioO6p42+hLAgMUUmdDY/ctodWVM w==; X-CSE-ConnectionGUID: zl8Tf5aETLSFqDSBef0EaQ== X-CSE-MsgGUID: q7hwJd+rTQKjRsMPAeBvzQ== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23479632" X-Farcaster-Flow-ID: c2daffbb-ed4d-49a0-935c-ffded380deb5 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 084/134] isa: Remove *_orphan() creator variants Date: Sat, 11 Jul 2026 22:36:17 +0000 Message-ID: <20260711223707.42139-85-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D031UWA004.ant.amazon.com (10.13.139.19) 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=645f258d4=graf@amazon.de; helo=pdx-out-005.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810800184154100 Content-Type: text/plain; charset="utf-8" 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(). Assisted-by: Kiro 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 Sun Jul 12 00:34:17 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=1783810798; cv=none; d=zohomail.com; s=zohoarc; b=mdOWlpAas9V++34r0g88P8dDdwxvmKqfqiZWiMKn8AMahvtPsayY3Cj+iHzXMeAEShZAk3E0d+Tunq1DRC1zreRqjL9Hsco35w7jI5gyLT3Ad7Hid/zZzVtYxGiOJWx1zaMQsTFmnXoRJbqBnw8dtQS8eb1ZoNePYnM5HctHw0w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810798; 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=gBcEts84ZIYAz9zRMafRNPfwwiJh1etqTPkZjTQFf84=; b=K/lQAewkBJtBVmza9kxFFEc0v7u7q8UBu7RjB2Ryejs7s1mbbaepMQV5NUurk43IdMcpSsUiQ2Ywpw/COcy/zUbtdIL3joLTOglea1oX0ISHVHCD6V7jf8esyJ4fZf3XJ0XQTz4dLshgjCwTz4kExILfa8LP5PyCQfU4FcJSgdE= 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 1783810798976282.95803667067025; Sat, 11 Jul 2026 15:59:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigfj-0007jw-LG; Sat, 11 Jul 2026 18:59: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 1wigfd-0007ig-Ke; Sat, 11 Jul 2026 18:59: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 1wigfb-0001hP-2V; Sat, 11 Jul 2026 18:59:41 -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; 11 Jul 2026 22:59:34 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.236:1948] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.68:2525] with esmtp (Farcaster) id 59f2ed00-d7b5-4d27-81c6-fe8ebf77dc0b; Sat, 11 Jul 2026 22:59:34 +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, 11 Jul 2026 22:59: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, 11 Jul 2026 22:59:25 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810779; x=1815346779; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=gBcEts84ZIYAz9zRMafRNPfwwiJh1etqTPkZjTQFf84=; b=L2BpielHtSs1nujGFKQ++6ukZrnFoZJHw8748iplVwWM7FiJdrP9sqbN XJrhyzbmP6HF80h7yTfQ0TGH6Yo5a9wIaqNz+dKyg1nmfNNlWSuP7KPQe F1gNqKBvBIhoneHCwHvxeN5Q5HWG+YoDQgHUWr6HCrYVa9WocNRhZvc7v 8Yp5ozxSltcDSdjNSth5+/KWD3Q9L33zMoNew6k4YFEb0uTrJrMMU95mA w/XNhAGf8B4O50nUoCmlKLfpmc7JBDDdtzOozDJMC6xaNDFzTFa8nLaY7 nu8RwhG4XatmqDBJNtMugFEYEdeRKTFoWT06mCP3RrWamJTDm3LRKIZqs g==; X-CSE-ConnectionGUID: yVG49PCjTMuBJEmSwSoFMw== X-CSE-MsgGUID: IDbeA9UDQlWom4oE1ICN0w== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23518022" X-Farcaster-Flow-ID: 59f2ed00-d7b5-4d27-81c6-fe8ebf77dc0b From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 085/134] pci: Remove *_orphan() creator variants Date: Sat, 11 Jul 2026 22:36:18 +0000 Message-ID: <20260711223707.42139-86-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D031UWA004.ant.amazon.com (10.13.139.19) 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=645f258d4=graf@amazon.de; helo=pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810800174154100 Content-Type: text/plain; charset="utf-8" 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. Assisted-by: Kiro 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 Sun Jul 12 00:34:17 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=1783810833; cv=none; d=zohomail.com; s=zohoarc; b=ZLHaERF1xw8dsEbl+z+aE5PjiRkJ1Knuim1qR0FbbwFXYKv1JA9k27S1wJkX9rLu/vE+4F7kNfFonA6izhhGk5x/eFzOb3B+t/idnZXO/jndnb8z6GZ3KMijIjHYujBF5Mar268f2sXAKAJ/0ROZnGyov1jHjWlcCzGJLKuSbys= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810833; 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=fGAsGEmjfX3MBpOp6h3ry6kdNBxY7rLmYSvCKtAP6K8=; b=dUbRke5MnxxFfkYOC2Haf3LYdOCZ/I/588xqHSREtWd8lBfXvbhDLlwUGdDVig+qQiIXCikETGDNisDiru2O9BT5gr6hOW+ZrNUaV29mDk5/ss4zkyjBp7V0xFOBuafeRH0L1QTNOLcbl7HCDFyK8Cq5IbFz4Z1izI1Bw0Vi7N4= 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 1783810833089680.2736316737193; Sat, 11 Jul 2026 16:00:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigfn-0007nt-DW; Sat, 11 Jul 2026 18:59:51 -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 1wigfk-0007ll-Az; Sat, 11 Jul 2026 18:59:49 -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 1wigfi-0001k0-Ly; Sat, 11 Jul 2026 18:59: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-011.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 22:59:43 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.53:13464] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.47.135:2525] with esmtp (Farcaster) id cf93b9d5-a49c-4a91-9642-236675a40b9d; Sat, 11 Jul 2026 22:59:42 +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, 11 Jul 2026 22:59: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, 11 Jul 2026 22:59:34 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810786; x=1815346786; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=fGAsGEmjfX3MBpOp6h3ry6kdNBxY7rLmYSvCKtAP6K8=; b=sNmYG+4yIGGNhrX4qdAeyBFQi1biajHUT7Mav40qPWBI3rp5bNqSj7bd kamYrGV3ySBoYLEiCsh/NFLjJCBdNPZf1GxFG9fNZGZBunf7U2Z7qkfXC 4oy0kWYt8bMb5A/nESeaHNqTewBXGJR3zODpkgO6OOqeVnoAdCPKSBV+M gGcgImZHA7g4jKd0/1kH7Fz0zxthJa+HKzW+q2OOLzkvPm08EXin+0Cgv MxONYH9bqLD77sILnPd/JSQD4OAp1f4E/ykFJgFePh1q+q69+o848sCfA 6xhhaGzc/gHtwbI/TX65dt6mtEG0bz9UbkGsyc5d8NYoYoTtdTLBivwh5 A==; X-CSE-ConnectionGUID: Ji1NepCmRmK8JLTtELBBXQ== X-CSE-MsgGUID: 1Wa+D6v3SvOFDfHTF6lPYg== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23269909" X-Farcaster-Flow-ID: cf93b9d5-a49c-4a91-9642-236675a40b9d From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 086/134] cpu: Remove cpu_create_orphan() Date: Sat, 11 Jul 2026 22:36:19 +0000 Message-ID: <20260711223707.42139-87-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D031UWA004.ant.amazon.com (10.13.139.19) 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=645f258d4=graf@amazon.de; helo=pdx-out-011.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810834334154100 Content-Type: text/plain; charset="utf-8" All targets create their CPUs with an explicit parent now. Assisted-by: Kiro 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 Sun Jul 12 00:34:17 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=1783810858; cv=none; d=zohomail.com; s=zohoarc; b=W/pIjs8fPeA5SAFD2tyw73xMq4Diu758OJNuoBn6imYmTRf/jNfFkpEJEfClEgKG3SozQPoym1IKAqHpv9lKc06mgtTfrZOy6baHom8Dpx2XCf13zJIMgnQJmAIOnkidoRRKg7HrFVcNEcAyDf1XyOaGIXNb5rQ/SBkdiQPgG44= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810858; 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=W3qF5JrNQpKUcgE6pM9Of95+SxOs8DVridsvlNgyJYI=; b=bFctKShfkaMj2ps8dHKP/zPgYgv/wr2AmzZ/mjDMX4fSlrTlJVDON8Sn/CSXZPA76e0lEUzsVZUGPJVBs1yCMzZz9i5rnb8Ygoobv65fa4NWv9B+YHJwxP4P975j+PqIgZ+GLXShhjHTBm3OEMF0BmaPzRwoMNUI2LsOgSpV6k4= 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 1783810858596517.4286263887083; Sat, 11 Jul 2026 16:00:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wiggI-0000ON-5X; Sat, 11 Jul 2026 19:00: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 1wiggF-0000CN-Ec; Sat, 11 Jul 2026 19:00:19 -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 1wiggD-0001oJ-Fr; Sat, 11 Jul 2026 19:00: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-003.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 23:00:13 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.53:1044] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.26.212:2525] with esmtp (Farcaster) id 6cf9bf00-1672-48cd-aacc-9ff9a64fc7f2; Sat, 11 Jul 2026 23:00:12 +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, 11 Jul 2026 23:00:12 +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, 11 Jul 2026 23:00:04 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810817; x=1815346817; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=W3qF5JrNQpKUcgE6pM9Of95+SxOs8DVridsvlNgyJYI=; b=Vxl9Du87BQmo4IuaPDQn1LMjMkEUwsUV+8gsknDZva3KC8MYC4fHGC4G B1RfuJJwWGJ5s3crnXooaBVe+CWmXg9AePvl4OqgA7VQuo5+ZZZcgP5Om icPzYVHcfhKHTF9pNeSbVqORwQ600ztIIMix72qSELHF4GBoN2ZDxaim3 eC01bgtrVajIuH95FMWigRq8A1JAcEEytf038uDCLd/NaQlQIqCfEcpQa x5hHSeB5K9WqDcL8tRPAACnIV6iQo9iCLFky7nKzgUfvo3ROD4b4DZteW MBjeIqfBJAT5urZGCxQwWY5w3mGpMfzjublIt+CInJl3LQlOAure2In6t A==; X-CSE-ConnectionGUID: QzFsJrqUSLWjr06QmON4AQ== X-CSE-MsgGUID: 442XJ18yTGONHpmNgQ/DAw== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23517318" X-Farcaster-Flow-ID: 6cf9bf00-1672-48cd-aacc-9ff9a64fc7f2 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 087/134] sysbus: Remove *_orphan() creator variants Date: Sat, 11 Jul 2026 22:36:20 +0000 Message-ID: <20260711223707.42139-88-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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.68.102; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-003.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810860650154100 Content-Type: text/plain; charset="utf-8" All boards create sysbus devices with an explicit parent now. Drop sysbus_create_simple_orphan() and sysbus_create_varargs_orphan(). Assisted-by: Kiro 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 bbacb07e1a..2974616285 100644 --- a/hw/core/sysbus.c +++ b/hw/core/sysbus.c @@ -242,35 +242,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 7737c959c5..d3f4332b3c 100644 --- a/include/hw/core/sysbus.h +++ b/include/hw/core/sysbus.h @@ -115,15 +115,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 Sun Jul 12 00:34:17 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=1783810834; cv=none; d=zohomail.com; s=zohoarc; b=GuVJ+KeAnD2UlHLLs9d8CJPj0lKEGgDsMSbdxTssthv3oiWKsUV/TsvQ2YZfTD2VauNzyrWsTo3GBogBAKTKVz4q+YMzljm8HSkzY/1XwrswPZB0H9JYA1nqZ+IrwaTATzmJTkbIn4ulXt2VIstBA+QqB9Xki+PvLMOstH8lVkQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810834; 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=+NW1ede9jkU8iAzaiVlSKGRb2pU5g+Y9Xr/bJHaR448=; b=Mb/Vg9sHVF8tV9A1QYjhPlUvrI5ZG8QnK2hhh/UMyf/S2M0QMKoNiW8weBZX2CFhx6ahWV59CwCU7fMzwRe7F1rxS+Wf2kQjXPuV+Zef6TYVa6hv0AUTeB6U0Cn9n+bAcTwyU9zO6fhREb0EknEBnFbRbdzdXOhY5E3yedVW878= 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 178381083421827.856292458117878; Sat, 11 Jul 2026 16:00:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wiggP-0000hH-UX; Sat, 11 Jul 2026 19:00: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 1wiggN-0000X3-Oc; Sat, 11 Jul 2026 19:00:27 -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 1wiggL-00023V-O9; Sat, 11 Jul 2026 19:00: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-004.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 23:00:21 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.48:8893] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.35.214:2525] with esmtp (Farcaster) id 472d9e64-4c19-49da-9c5e-f3552fdb6959; Sat, 11 Jul 2026 23:00:21 +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, 11 Jul 2026 23:00: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, 11 Jul 2026 23:00:12 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810825; x=1815346825; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=+NW1ede9jkU8iAzaiVlSKGRb2pU5g+Y9Xr/bJHaR448=; b=Rys3SkRwUoX0MoipnvTdznOY5Zzt50+QyEWhYEWo7sLCO8btHWHxr6cK 5/yj2iigetIxT2NtN/oUthA9Q6lT29XcFDNe5qMZe1eUiODxTQDEdMNr+ pjoqMexrnUUCZFHb4Y/pXOSjmMJRKdB6AKn2tVuaVEShA+0sWKBe60Cfz ZsfnSlFQxjClfoRosbsumQFMvsUcpUKV4F0LXgZyKoIFoqRe5YfnvRSU4 QCr8WVpw0xeoaHqhS/hDTJ8SZdUox/3iNHOtGu3zHyzJZKqDNkVynbdAd 040bMY+Qv4mUgh+hddxbXKCm5hh6hDCNHiDGwPkeuTOWJTZs//Wrftnlm g==; X-CSE-ConnectionGUID: eX6CSNs4Ququ9+xsBVz6eQ== X-CSE-MsgGUID: rgVFLvIETs6RKI+BR4UKzg== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23493273" X-Farcaster-Flow-ID: 472d9e64-4c19-49da-9c5e-f3552fdb6959 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 088/134] qdev: Remove qdev_new_orphan() and qdev_try_new_orphan() Date: Sat, 11 Jul 2026 22:36:21 +0000 Message-ID: <20260711223707.42139-89-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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.77.92; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-004.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=0.001, 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: 1783810836197154100 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. Assisted-by: Kiro 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 d2c89d0310..f7b512eb35 100644 --- a/hw/core/qdev.c +++ b/hw/core/qdev.c @@ -164,19 +164,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 Sun Jul 12 00:34:17 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=1783810850; cv=none; d=zohomail.com; s=zohoarc; b=mGwzw3HkJAI8bc5/L2kHPKMDTdkSCSozpYrxEF+st+S4LxXfYaOVqPJH5/ndQYw+QLWiMjlQW1F3VbeYg4wDLzkUjzUd9o99+pzeatrrBAy0u3mx0uQtYlC9rCnpMKiEbbyDqobK8t214F/EoI7xPkw8R+AhaNCMjjpzxdJlGCY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810850; 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=EnmzGX4xfQSuDLXUlHieHM3DsIzb9BhvR/Rb7/1Gz/8=; b=nZbFC5uOHOTokaMHgtnHOKRGNFRlRxs35h+kJhyVmV+B3knLM2y+HpHjyNf1FXEVgoJDZyKJbNaRS9OwNVeYH7GETP7Z0q1plEcfSTmhNajUq+8v1cpkOfzDKJQKIUlmqZmfE4WNIz/H8bS4lf2MSgeoIdYsagKnfoEPoWuB5e4= 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 1783810850918258.53584156170234; Sat, 11 Jul 2026 16:00:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wiggY-00013Y-Fp; Sat, 11 Jul 2026 19:00: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 1wiggW-00012M-9B; Sat, 11 Jul 2026 19:00:36 -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 1wiggU-00029u-C3; Sat, 11 Jul 2026 19:00:35 -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; 11 Jul 2026 23:00:30 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.178:5353] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.68:2525] with esmtp (Farcaster) id 88887342-96ae-417a-a99f-d59a19746440; Sat, 11 Jul 2026 23:00: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, 11 Jul 2026 23:00: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, 11 Jul 2026 23:00:21 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810834; x=1815346834; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=EnmzGX4xfQSuDLXUlHieHM3DsIzb9BhvR/Rb7/1Gz/8=; b=Q2akdzS9wn9/WrN/+siOh5WbZ8ce0NmNe7GnMwmmuNdxcyHj1sURDEfC Np4VZHsDNHM1U7Ka+JrLKaDADyOxJUltlmsW1VuPnkcJ3ZPT3ZB3xJ5Z6 oJuEhrthhowxG59PYXbI8DBL2TOi7bvJl8iirXxOLGTOXh5d5L1ltgWki msUWvhb2bk68hWHgHAJ6cIO5SECohifBaFB+g5WfDlzECXa19UTVdpv63 Gs3SLwydZ872/HVwglG5k3UIrRLC77pVgpR/lElmG0rSY3ln8totmuiOU JDJwNJZV2PYShU5pl/lnSU8PGNUpbi5v+FV9SiwoF0y+x552U52vLoS4t g==; X-CSE-ConnectionGUID: /2uyAfLnSj6Yv1mqIUYKpg== X-CSE-MsgGUID: 9IUUB8zhSBuNF7Y2m8K38w== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23517328" X-Farcaster-Flow-ID: 88887342-96ae-417a-a99f-d59a19746440 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 089/134] memory: Accept non-device owners in memory_region_init_ram() Date: Sat, 11 Jul 2026 22:36:22 +0000 Message-ID: <20260711223707.42139-90-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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.68.102; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-003.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810852826154100 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. Assisted-by: Kiro Signed-off-by: Alexander Graf --- system/memory.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/system/memory.c b/system/memory.c index 5fc36708ec..e3ee0416cc 100644 --- a/system/memory.c +++ b/system/memory.c @@ -3631,15 +3631,15 @@ 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 + * canonical path of @owner 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 Sun Jul 12 00:34:17 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=1783810878; cv=none; d=zohomail.com; s=zohoarc; b=Gj0epTrEcuZfYjopvmvTzG26bEujJLKHH/L+A/oyoh/8T4u55H1IuYtaXtvvxX/7feUBVdfha+12qOYxpSYLJ37IUnoX8L4PnCuX3H/+f4omNNIB6JGvTbLJOXCN0mTZvsvSaKRCsd+8dE8Hw47jQvcfJbsOyZwxk9TV0QcmS+Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810878; 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=ypBiWpzGyavDbl0zBI4me1c8vGtWWWLf22+dBxQXOKE=; b=ZZz/OfSYdRYZO45N0XamzFqlhNWuuL0uEj6c0Gs6IIHYFiLj5woHiSRUBiGAasmv3p2gKbjTJG3j/+5rQyZvt7p3X/Z5fyQjf0ZoWcrvC3VKJmFNNHwHKXB7yWlnVUYvXhS3p2vs1QOOrCDlbp85KfDSc8hc0evuQkqX5XqvES0= 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 1783810878648395.8711528195274; Sat, 11 Jul 2026 16:01:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigh2-0002Cu-HB; Sat, 11 Jul 2026 19:01: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 1wigh1-00026R-AA; Sat, 11 Jul 2026 19:01:07 -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 1wiggy-0002GP-7d; Sat, 11 Jul 2026 19:01: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-010.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 23:01:00 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.51:7180] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.115:2525] with esmtp (Farcaster) id a1c8c1e9-6691-4697-99dc-98bb7d8658fb; Sat, 11 Jul 2026 23:01:00 +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, 11 Jul 2026 23:01:00 +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, 11 Jul 2026 23:00:51 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810864; x=1815346864; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ypBiWpzGyavDbl0zBI4me1c8vGtWWWLf22+dBxQXOKE=; b=HHIw9GqZoE49iYyTqsYSnekxVLzckwCpmydVQ6/wm4Lp8IVW/KeCPgWI eaXhrFyZLFFEkiUyb+eMc9W8zHjdtvB5Z65VSIux1N3RLcbVi9Iub8gfp FL0XxD5DKjT37O4aE596+4jKFqHBfh/1t2e48YL8ptcOKdMZv2AJd4FT4 TRmLJhNZiiXFmclfx4MN2ktYV1NpMGdSyqN76NUconIMUEqV++7loPht/ PXS+3OCC7MjYa3sirO+B8Uv2pNmq04cG2Q63dltGUwd8LI4ll+OUJ+Trt Hb8gzkopbyv6HCmfqY8NVqeXjxTqHngXBzp0n4T2yw7VHjr35yFodWg+x A==; X-CSE-ConnectionGUID: ghZBlo7uTiaLtfHYf5cEgg== X-CSE-MsgGUID: f41MG3aTS0+63hgvRLxMDA== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23369985" X-Farcaster-Flow-ID: a1c8c1e9-6691-4697-99dc-98bb7d8658fb From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 090/134] hw/misc-boards: Give memory regions an explicit owner Date: Sat, 11 Jul 2026 22:36:23 +0000 Message-ID: <20260711223707.42139-91-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D032UWB002.ant.amazon.com (10.13.139.190) 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=645f258d4=graf@amazon.de; helo=pdx-out-010.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810881233154100 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. Assisted-by: Kiro 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 8c6d2ad122..580ef0bb3e 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 Sun Jul 12 00:34:17 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=1783810887; cv=none; d=zohomail.com; s=zohoarc; b=HwjFrFZKj0zSkCCY3IsJwdVKi71vM6pxOS64XuefXRJPhDnkhMvoHq1Osf5waJotBMd02U1h0riLrtGqCBu5j3DRGjRbBSE6JTbODhZko1r/qtjKQvPqcMHMHGWzBhzGXUOS091cm5CY6hfpnj+VasJ337gP0Y0vVGRod1iSr7g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810887; 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=1CchIhLIesii1Pr3uVPdGr5jWwBPnZsbtALftaLa2u4=; b=PPny2ReNnS0zFXZboP4Bi4uT7kGfVnkvz/lN3wmMxvNdZfjTfyW6a00swncdKGL30t538Jlds8Fgj04yVYXPQ8Lwn8ijGRPsmAXAEzhMrqnDsM4Vm9VgpobK3sU/JoNc+CFBx1mlp2qsyMEOaRu9NrP+PHyu148MSoC3GMSLoxE= 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 1783810887543396.88442407786215; Sat, 11 Jul 2026 16:01:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wighC-0002YX-Dk; Sat, 11 Jul 2026 19:01: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 1wigh9-0002Un-5m; Sat, 11 Jul 2026 19:01:15 -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 1wigh6-0002I0-RF; Sat, 11 Jul 2026 19:01:14 -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; 11 Jul 2026 23:01:09 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.111:3274] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.115:2525] with esmtp (Farcaster) id 27e625e1-174b-4ac7-b0a0-3b2e928974bf; Sat, 11 Jul 2026 23:01:08 +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, 11 Jul 2026 23:01:08 +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, 11 Jul 2026 23:01:00 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810872; x=1815346872; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=1CchIhLIesii1Pr3uVPdGr5jWwBPnZsbtALftaLa2u4=; b=R3yOTXTqhMwBMtjPz/SKIp6055HYXVeYFrhW59AXRASwmXIeB7de3/Iv hBn+BSWPNYKYNgIUpsTTE69kDf4j3j9iA2IICPY/w/sXHJA0ou6IABa2S u34gujOE/TAj5l6V0Q9PiTGqFuDRnkwuZ0ty8v7jH5m87xh68mbFRaggM YpX+3FnOjZeTTeZqNivu8YBUcCPtULD15FacE6fQ24r8AlLF3e/xZOhi0 OYjqfPCubeqoahH8UH4l7JflefdiIgApn7KeWxWkAH5hfFZ/u4GJox/kM p66prRb+qVoK2RI4nvvmtKp9fmkGRxWYpbZprzq1ZxDg9ziKjRtl55/yU w==; X-CSE-ConnectionGUID: /+1HF/7/QZG4kbb3Gms2Ig== X-CSE-MsgGUID: /85l6TTTR3SKlzhqFS0K6A== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23390659" X-Farcaster-Flow-ID: 27e625e1-174b-4ac7-b0a0-3b2e928974bf From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 091/134] hw/mips: Give memory regions an explicit owner Date: Sat, 11 Jul 2026 22:36:24 +0000 Message-ID: <20260711223707.42139-92-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D032UWB002.ant.amazon.com (10.13.139.190) 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=645f258d4=graf@amazon.de; helo=pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810889156154100 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. Assisted-by: Kiro 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 Sun Jul 12 00:34:17 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=1783810891; cv=none; d=zohomail.com; s=zohoarc; b=IHVxabyR6VpL+5RDJg/ahee/BnqEsDnWPJ5lcBZ5+8wdb6Jqp4iFzATc7ne10W/ZXJpVyitoWYBSEISCRRb0mZ4LPeBYYrUo/CqIMa2PfbjQeIPMn9DicBPxwztPDVh+JiM++H9Ns2N90hZOD8Uxt/Pt9Ks9baRmR7ZP5AQW3ls= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810891; 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=yIUqaaVOKyW6WE6UpNA0Yu8tEW8Hhu7gGasqeX93vnc=; b=JFjR4CrfD2t4/rX+JwNGu30HCrLOo5N+nIX3vGErINizpA9Lt6QxDUGdmg4D+ht8ucg0hAf3UOVOpvpxLN4Uch4ATHEo3FZarmWo/Uq7hY3NVxr0VxscxGB492GFTP/SsgOoVRmBZ6lxgID8MItAp25KieD4Dj/Fxb6abav4lNQ= 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 1783810891097395.49606443155733; Sat, 11 Jul 2026 16:01:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wighM-0002iY-23; Sat, 11 Jul 2026 19:01: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 1wighH-0002cn-C6; Sat, 11 Jul 2026 19:01:25 -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 1wighF-0002LG-2R; Sat, 11 Jul 2026 19:01: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-013.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 23:01:17 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.236:24263] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.115:2525] with esmtp (Farcaster) id 36bfcfa6-394a-47cd-9a76-514b4182d1bb; Sat, 11 Jul 2026 23:01:17 +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, 11 Jul 2026 23:01:17 +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, 11 Jul 2026 23:01:08 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810881; x=1815346881; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=yIUqaaVOKyW6WE6UpNA0Yu8tEW8Hhu7gGasqeX93vnc=; b=oxEsD8U2WTbH5qoq/ruBchlVu2RJ9YQCoeGRwiCzMb6YbxQVvPGPKtZT dc315JpdRwbNutxg05g5ZMmNfitgTbvsQFhE7TNbVU2NceWXKc7ec+q08 P9FlClRH4V/DVYC55zskKyH/g028esflNZA1RvUnkEEO9pxyeFOdNo/Uu eoC/sbQ9x3Tk1P7awa9VgEIPeB6A94Tq5ucsodv3a3hrE8p+E7NO8fEk6 XcU1ABnjL3xRaYdS36Zb9yC/NF7+Ia0eteQRSVdBzHLTj0FQJphKD6gzo uoeL3Vg8OgFViYkCp4Qe2A1VogFWb1aLcAJOLmaqhiTvCO+QhjrSmrUGo Q==; X-CSE-ConnectionGUID: fuMYKtZcRkObAiwvL/1PQQ== X-CSE-MsgGUID: CHb0sgUEQRK3FrClhaPqQQ== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23296882" X-Farcaster-Flow-ID: 36bfcfa6-394a-47cd-9a76-514b4182d1bb From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 092/134] hw/riscv: Give memory regions an explicit owner Date: Sat, 11 Jul 2026 22:36:25 +0000 Message-ID: <20260711223707.42139-93-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D032UWB002.ant.amazon.com (10.13.139.190) 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=645f258d4=graf@amazon.de; helo=pdx-out-013.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810893337154100 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. Assisted-by: Kiro 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 9ae5af3162..f068d8751e 100644 --- a/hw/riscv/tt_atlantis.c +++ b/hw/riscv/tt_atlantis.c @@ -539,7 +539,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 7e5bdaf210..d1de8bb2be 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -1463,7 +1463,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 Sun Jul 12 00:34:17 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=1783810927; cv=none; d=zohomail.com; s=zohoarc; b=c77umdKXfUo7OT7YbbE9wZ5xw3uQiXMky3BHvLL8Cald8ceF+EKmeKRZfMcrIB+txeCxo3dwmm2v/ibflgDP1EVGOG6oD3vQTamfBxWUq8h4tjwdOwPMhAlyy3ityrfRP74TGw3JfOY0xMRV+RQvShAzWKMUPjMDcplYbWm/qME= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810927; 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=DiX+95jUtmO2ci0nQOaB0TiQDjO51XBHVRpZP2hU858=; b=ZQs8BCzH04wklZDlD1OYakqvcmkwbp7pu7sj4K6rK23thv1g3GRC/KH5nPii8/SbOBLLWB0o1U7EU3U9DU3CoclkRUBjSjzox5YBxUEWDa2BrJpneVxY/na86pYn15uSS/XarA2gfZFgPeWOWCONbylCHZzd8Se+hKEXHslFwfY= 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 1783810927743846.2079472817774; Sat, 11 Jul 2026 16:02:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigho-0003u1-P2; Sat, 11 Jul 2026 19:01: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 1wighm-0003rp-Nf; Sat, 11 Jul 2026 19:01:54 -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 1wighk-0002Rr-0p; Sat, 11 Jul 2026 19:01: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-011.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 23:01:48 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.53:9203] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.58.33:2525] with esmtp (Farcaster) id b8772382-7edd-489a-aafc-5deff6682a9d; Sat, 11 Jul 2026 23:01:47 +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, 11 Jul 2026 23:01: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, 11 Jul 2026 23:01:38 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810912; x=1815346912; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=DiX+95jUtmO2ci0nQOaB0TiQDjO51XBHVRpZP2hU858=; b=jfQ+tn0AyjuhuSByRIGmZp2U7ccAfUEqr3XPpocAvv1JJnJykjSQRvcd 5I7A3S2nETtLRlYOAvngmPUKzwk4n97xdkhvP4XE16R2dp8/S0HMQn6TP 4Y+T3ybWGeyI9S9R4TrOGB6Br560OtzyEXehNv7VgJRvJ9ima+pzX3Km/ A+1IXYZHQCtyE/lcci7b2nFr8YFrftUxET171up6CaCtA3N5s8YWC71xn XlkNo6nW1AameZQqrLHt817Dx341TmPQHxnAt6VxkfKsaRMLuxjBFIMMU atDig8bcy8hdpJxaXjAfdobVIC7qfgug55sCY2jrXxn4yer4a0vplx1Qz Q==; X-CSE-ConnectionGUID: w0xk7H4qTwGbRsRJfpLGmA== X-CSE-MsgGUID: 40blBCG/TQauvrfbT1AYtQ== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23269950" X-Farcaster-Flow-ID: b8772382-7edd-489a-aafc-5deff6682a9d From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 093/134] hw/i386: Give memory regions an explicit owner Date: Sat, 11 Jul 2026 22:36:26 +0000 Message-ID: <20260711223707.42139-94-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D036UWB003.ant.amazon.com (10.13.139.172) 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=645f258d4=graf@amazon.de; helo=pdx-out-011.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810929673154100 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. Assisted-by: Kiro 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 Sun Jul 12 00:34:17 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=1783810967; cv=none; d=zohomail.com; s=zohoarc; b=Ammb6fDvlgSAKylpngc46DrvgqbTgUCAL0txt4+DBRdGRpembgYXkYS+qeCS40sMamwMRdfyErwArFyyylUqdtUwe1jrhN+1F+r31Z0ULmw0cRHX5WAQkAsaCY77EpW3XhgGn1HOivJQLlpPjHUtQhl5X8d7qkH3mtioSXgf1t4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810967; 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=NZAkmR9DgASiSiF7oiWZArJziZLnM9FMZOPtI4sVT+Y=; b=Z9Oe47QSiCWzy7N155gKCdWmnSE9Dd4eaP+cHYZgn1KapXOr/DnF3xgVGFkcdZ5O32jiZveyM42Hd+Jw+odiUc6o2e6WCRdSyAi9AUxOBuABgfsJr7ZelyzYsvMaJ4kJU++iya62PU/TIStkBUOy4C14kjtajv0nqUxGD8b56Wg= 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 1783810967705965.2291872403234; Sat, 11 Jul 2026 16:02:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wighy-0004HI-Ra; Sat, 11 Jul 2026 19:02: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 1wighw-0004Ew-TP; Sat, 11 Jul 2026 19:02: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 1wighs-0002V9-Hh; Sat, 11 Jul 2026 19:02: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-004.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 23:01:56 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.48:31437] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.68:2525] with esmtp (Farcaster) id 96603ab5-59f3-4931-8bb8-5c40a0523f7c; Sat, 11 Jul 2026 23:01: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, 11 Jul 2026 23:01: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, 11 Jul 2026 23:01:47 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810920; x=1815346920; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=NZAkmR9DgASiSiF7oiWZArJziZLnM9FMZOPtI4sVT+Y=; b=b1lMTitP5khYuHfe3KmPOgWMK52qlY3f1rJYDv0ICRcBeNyA2FN3TqO/ oRQG9dHTjWlmwdFESpngE8XyjxqaPPTiV0+EA/vgdi11xzix7VaqvD03e VZl0hVtOaYmXlq2dXdf33cg4d0zsEXSLvdUXGkbNq7JzDARyPBEZBrgQ9 YYxOKwFauwiKIA6feSF9ssCZlLmMLRksu1auwzKjTWhc4sqrn715Lz4+G 5BpfpxAyowT0qO5LfhZMPgrQU+1cuWqTU71pFm5mc36+4S8CG76vSaR5I 0wUfUzzlM1YP0YKVJGdAc9TUyPXmgf7zQf9vrnXWnCz0YWO3pV18LT5e6 g==; X-CSE-ConnectionGUID: prJRftq2QLC4/KPbXqCdzg== X-CSE-MsgGUID: CO5UNAu3TtK6lIPxombkJA== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23493313" X-Farcaster-Flow-ID: 96603ab5-59f3-4931-8bb8-5c40a0523f7c From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 094/134] hw/arm: Give memory regions an explicit owner Date: Sat, 11 Jul 2026 22:36:27 +0000 Message-ID: <20260711223707.42139-95-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D036UWB003.ant.amazon.com (10.13.139.172) 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=645f258d4=graf@amazon.de; helo=pdx-out-004.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=0.001, 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: 1783810970458154100 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. Assisted-by: Kiro 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 f632df742b..c9adc972c1 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 ea51a5f3bd..f2249a0b72 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 Sun Jul 12 00:34:17 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=1783810944; cv=none; d=zohomail.com; s=zohoarc; b=kxiz4xsAuhjT7s3GGdH/8tIZDxc3EgDdtqajiN7q8m8sOsgRVwX52PUvUoaqrFoJzqnvgxWOgpl+n4b+UiHGqFlzjBBCCRyzGcEcLRTgvloIjHZrumma+7nmxGuI8u03WZlWi6PQAnUiAAOJHcURNzil5Zkn4DewQtT9pIocqdY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783810944; 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=yXEPLRdLcRNfGFAnyVqm/80r2ImyQOLlkzWpZEmKNMQ=; b=GtX3S2n1hPvp6NIhunngU+P/+f1/L1x0XgzZZLEH/ke1hEHjqWc51P8iO4PaRQaSIp8we3Zr7TBw/XUKXOjDsromTapdCghgAIa+e+NGVxMDrD2VdsQbgebn6wS/4SqZuhn41TrLLDecvm0gPSMVuDblQUwPEG6ssIqSQ9NTfm4= 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 1783810944091513.253779349747; Sat, 11 Jul 2026 16:02:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigi5-0004Oe-RJ; Sat, 11 Jul 2026 19:02: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 1wigi4-0004Nn-La; Sat, 11 Jul 2026 19:02:12 -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 1wigi1-0002W7-DP; Sat, 11 Jul 2026 19:02: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-010.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 23:02:05 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.178:12109] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.115:2525] with esmtp (Farcaster) id dd3fd112-2142-4446-ad95-9d286d5892c9; Sat, 11 Jul 2026 23:02: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, 11 Jul 2026 23:02: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, 11 Jul 2026 23:01:56 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810929; x=1815346929; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=yXEPLRdLcRNfGFAnyVqm/80r2ImyQOLlkzWpZEmKNMQ=; b=TxXD3SUwFVWohzqWgOHJu94Ge0nJIc631e3OH1Yjm9cBXewglg7VN8MD ty3G++P3rnex9EAVK88QHkIsytoGPFPZaMb+Y+sH1tz4u1zTkrLArM9J5 fKEhmgq+opCcxX4tgS5DyRAP3WmWwzRLCNtHbsE7gOIZFUmHIUEJTuR0v 2JwhQVr5YfVagWZHEPOcGTjPUTS6ub6QXqfaSDG/Mv7jRRaJBgLCT0EJg D8/rgBJzFy8P/HpUHBk2faFOZJNx97JVsov0c91IRZTF++SazLzRE3kI4 j0JsUOk/MLOzSuu/zkpxvcyEJ58IPNxPGPZgZfgr1xzTEPk/fQbebFyt5 A==; X-CSE-ConnectionGUID: LUXJsxTAQO24CLkV3IevOw== X-CSE-MsgGUID: NorTnlBHTDSOMJc3wMsxOQ== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23370030" X-Farcaster-Flow-ID: dd3fd112-2142-4446-ad95-9d286d5892c9 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 095/134] hw/arm/omap1: Give memory regions an explicit owner Date: Sat, 11 Jul 2026 22:36:28 +0000 Message-ID: <20260711223707.42139-96-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D036UWB003.ant.amazon.com (10.13.139.172) 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=645f258d4=graf@amazon.de; helo=pdx-out-010.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783810946199154100 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. Assisted-by: Kiro 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 Sun Jul 12 00:34:17 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=1783811009; cv=none; d=zohomail.com; s=zohoarc; b=ZAFM2sXD7OEO583KT4aX8ueymlvKrZOsUr/qOgtMDYXX0pudh1TcM43iPpmQAsIwO9asyw6QKRWFBHoyhbIgDy0bT1qsdSwEmWrOonz8pNRAiW2dccDwokd0YjfxVcVPsW5BtTOw3ng4ZboGsnP3b0RAzn83fjFRzGo2ZiCG2/k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783811009; 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=Gmd15+SAabzX07bY28nlbu8cJDEIsIgNIuco93iaCqQ=; b=YbJhDCcCCRD7+1HjNcKiqpOU9+0pM7uYR1nDm9QjiATHAfOcPMe6yjgsdIEls2v6rRM44F88HOcAnX+CAodWxIV6kLshwFBlK2RqWvCT3E17nSFzfD7DL5ZHTPhtfC+ZOtf7G5mnyiM0Grj2CwycajG6SZCgkiQfSpmAclyfRD4= 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 1783811009166472.46612526397087; Sat, 11 Jul 2026 16:03:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigj9-0005UR-PX; Sat, 11 Jul 2026 19:03: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 1wigil-0005PW-6T; Sat, 11 Jul 2026 19:02:56 -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 1wigih-0002YQ-51; Sat, 11 Jul 2026 19:02: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-005.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 23:02:35 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.51:6838] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.58.33:2525] with esmtp (Farcaster) id e319b4ac-40a7-4496-a248-a2413f3e68db; Sat, 11 Jul 2026 23:02: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, 11 Jul 2026 23:02: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, 11 Jul 2026 23: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=1783810971; x=1815346971; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Gmd15+SAabzX07bY28nlbu8cJDEIsIgNIuco93iaCqQ=; b=F88hCuDiu8RIudgXO4Y7Fs7+DqV7NZ+IB9NkB/SDb1xn2qMxZTzPxNT5 U6z/2/I6zvbRzyukDWLC3hsqmxzuNDHqo6DI46MmqaoRemqaqPU0mH1/2 BS61OlQsAiMjP1TOSHFdYLh0rmtCfE8Dd7tBLQCaj19qE29ZAWVdbbVMV DH73aLFzuQKdPWu/+hvFHiCcxmWG5KazSShzDVsYIt7wW/DcAdobFsVmm LDwBfRIx5OurB3fBh+U8oLeRVqy1JC2+5Qw8+QSaz+vULzlaX4igFIusa HsEBBquRpLrAmKZTohYOZDge4nDAoMKomBuCcU5SqfWmCE/eOJI4qfKMq A==; X-CSE-ConnectionGUID: MeB5+qhvQF2Rr25YL0++zQ== X-CSE-MsgGUID: orOXU9YyQrWoBFg4QEyMuA== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23479679" X-Farcaster-Flow-ID: e319b4ac-40a7-4496-a248-a2413f3e68db From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 096/134] hw/sh4: Give memory regions an explicit owner Date: Sat, 11 Jul 2026 22:36:29 +0000 Message-ID: <20260711223707.42139-97-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D046UWA003.ant.amazon.com (10.13.139.18) 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=645f258d4=graf@amazon.de; helo=pdx-out-005.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783811011320154100 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. Assisted-by: Kiro 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 Sun Jul 12 00:34:17 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=1783811013; cv=none; d=zohomail.com; s=zohoarc; b=VMYAs5QK1tiZj9ZDbiwwoUJC30WvZFXFVFTXCK20hTjbbu+yatoZ8vaIE64zgeG8nl0KOod2TVXapPU87q7V5Y4ywMFuYsnATb6zaaP6ZoCFsy6i0aSaJ4wiVd646+XanGqXsM7XzGxlCIXG7fcy23Es393qX0vT1abD6MiomTw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783811013; 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=kIRDMMYQoAbVbR+Yb/nq/CG8IV16g3zCWr2Me2GLW6M=; b=RQM90tcoF/mOzM/U9w+/1pCbChqmzvKRCVo0B1NYQpHPXCCH2f9zd16Me/3oJFWUcAR8I2OzSCYO1cst7aYbOkRSAHrQosB42w57aYlq+Bhv6okJ48c9t9Ujuz4b9oRUJRcPmCyQVfo3DfUHw64GeocvFIDPB7TkTNXnWA9XtVE= 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 178381101325874.76177422405817; Sat, 11 Jul 2026 16:03:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigjB-0005WA-Sv; Sat, 11 Jul 2026 19:03: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 1wigik-0005PS-GD; Sat, 11 Jul 2026 19:02:56 -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 1wigie-0002ae-8I; Sat, 11 Jul 2026 19:02: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-007.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 23:02:44 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.111:23292] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.47.135:2525] with esmtp (Farcaster) id c3cb8fca-4aa2-4924-8f15-6db4f3d24a39; Sat, 11 Jul 2026 23:02:44 +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, 11 Jul 2026 23:02:43 +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, 11 Jul 2026 23:02:35 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810968; x=1815346968; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=kIRDMMYQoAbVbR+Yb/nq/CG8IV16g3zCWr2Me2GLW6M=; b=sUfzUOvrQkXfianEQf6XpKIjfw6GTnGndKfxbQuP6PAG9P8W7x3ao94L a+ut8WNGBUf7Jczye+n/vGYRFnd7TWecy0XZr9aB0/gx2iDK7UYFuT3F6 7o6zysR+mmUYqDKgvxwXiOs41NS8+wBypuVomJ+oam3Ws6AsndFzfgHXt MsJrXIm+NygTZxrfX1y8LOPbLidZFtlP8rVKPclFVDIkMSepmHHrTLs1b 09L7EeEER0EvOztkwOOmI5UDwHTWiuAWzIU726QhdD/H/d3eTyESzX0du o22ZFYDN1HJcCRad7iKlLyfW1xH0ReufgQiS6mzEuInq0wFEB6JfF3q60 g==; X-CSE-ConnectionGUID: UnS3OulPSI22PLwrbrOoMw== X-CSE-MsgGUID: rqh8YVmBRDC1yM2K3LZ0kg== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23483611" X-Farcaster-Flow-ID: c3cb8fca-4aa2-4924-8f15-6db4f3d24a39 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 097/134] hw/m68k: Give memory regions an explicit owner Date: Sat, 11 Jul 2026 22:36:30 +0000 Message-ID: <20260711223707.42139-98-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D046UWA003.ant.amazon.com (10.13.139.18) 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=645f258d4=graf@amazon.de; helo=pdx-out-007.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783811015371154100 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. Assisted-by: Kiro 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 Sun Jul 12 00:34:17 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=1783811045; cv=none; d=zohomail.com; s=zohoarc; b=Tj2FWvwcYPP//CsTmpIA5DPcRCGulSZn8qMKWODQMIWkLNVEneNatt8c8JFqQcRf+Neeau5Ae+3cGAb8dVE7Zh4KOGp0CR921ghvpaH+WdCh5THpOzwbbFlo0h57UEnLyiXFwhBF5rx157aLM7ijjcJT3vdGuy9mNLWZNoOFbfE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783811045; 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=mupvrQmP/1C1UdxWHHAvm3q1pIt62nT2Ls7KUj9l5W0=; b=KC+y04JvmVOEYAqj2UouXsPLENslzD5LJEvuZ2lDJy6uF55ScZqAAsRh2CsgNp9NYz68RfPelXK5dw99jPuhqXN5mEtYaooEPJ9dbu233BZSP6qZvtMaf9hag0vI3UoHaqlEGMeU8sHrs9Bl8EG9YyzDTXmhnrxxkcVOScionaY= 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 1783811045867563.3860546295766; Sat, 11 Jul 2026 16:04:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigjC-0005Xi-Hr; Sat, 11 Jul 2026 19:03: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 1wigip-0005Q0-Ea; Sat, 11 Jul 2026 19:03:11 -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 1wigim-0002e4-Mx; Sat, 11 Jul 2026 19:02:59 -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-015.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 23:02:52 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.236:19391] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.68:2525] with esmtp (Farcaster) id 6d9a9e20-2426-4635-8be1-dc4a457f5021; Sat, 11 Jul 2026 23:02:52 +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, 11 Jul 2026 23:02: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, 11 Jul 2026 23:02:43 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783810976; x=1815346976; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=mupvrQmP/1C1UdxWHHAvm3q1pIt62nT2Ls7KUj9l5W0=; b=EyaAULhx6OsniDGQG3xwcorlwaQa0ypo/QXhBAjji6JPDcS4zLPPSRfI gnQXh88hgasNkcs32WM1AOYh5gLWUuBZ0SR5eL57TPDTsDMocC9j44aXs 1sOtEShPxcSo8n3rRSrS/ZK4fbEsGt3M6cIz53TTsaF9E7TMQ0XIy1k1z UVssiBod98bPo6YzlH4LnnqT0oPK6tz+mo7MV9WpSHPL7XM5bfJw5q2C9 WB0x9zYUm0caR9MNBDyurKn1awQuFZAJwJmvQXf8JDXtlI+kztCl9bwLE s4B9+mgoOrxfx/gql7bu92naRPS1DwrMWtIup8mKj6TxPKqLxQs1xYZV4 w==; X-CSE-ConnectionGUID: UDC2m+UhTiKl4q5hXhYg2A== X-CSE-MsgGUID: mvHw0ARjRPWJ3xmb/Qexzg== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23300211" X-Farcaster-Flow-ID: 6d9a9e20-2426-4635-8be1-dc4a457f5021 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 098/134] hw/ppc: Give memory regions an explicit owner Date: Sat, 11 Jul 2026 22:36:31 +0000 Message-ID: <20260711223707.42139-99-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D046UWA003.ant.amazon.com (10.13.139.18) 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=645f258d4=graf@amazon.de; helo=pdx-out-015.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783811047464154100 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. Assisted-by: Kiro 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 Sun Jul 12 00:34:17 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=1783811029; cv=none; d=zohomail.com; s=zohoarc; b=VLKFZyEZmxpGvitqUs4f69tcHvJsFprZ0DfI9Ik/ysJeecuBUxZPwM2m6XdBST3+AioVhSpIRhOGLn8RpNVdFZmhHu/yUGdfpCcVSaz+5mWK6ll4/CYqr538UR0HKOIW1wUGWHuQ5nr9k84TUwrT5EKowaBUieFdBLApWRBTes8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783811029; 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=citDJO/IgAyEM0d7gOprPaAJwEL9dlx4/AYZ8X4e0X8=; b=BHcBqn2qXH1T9q1a3tjRX5/88VibanuTFR+eHuIjEY/3AOnVUU/3FmDXdkAoI8xAvx/Q3oc/fIJEXYK7LhDREU3pnYSZN0SzlUMhusm4UKy83VTYIPeMLGwbIcyNEOCL44mGuKBCH+/4TyJxpXSYxwIKgRWevz9bsz8uwRNDLvo= 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 178381102975026.005442907048064; Sat, 11 Jul 2026 16:03:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigjL-0005gv-LX; Sat, 11 Jul 2026 19:03: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 1wigjK-0005g9-9f; Sat, 11 Jul 2026 19:03:30 -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 1wigjH-0002gY-Ky; Sat, 11 Jul 2026 19:03:30 -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; 11 Jul 2026 23:03:23 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.53:2970] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.26.212:2525] with esmtp (Farcaster) id 58563f03-7203-4cb6-8bde-513e859732de; Sat, 11 Jul 2026 23:03:22 +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, 11 Jul 2026 23:03:22 +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, 11 Jul 2026 23:03:13 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783811007; x=1815347007; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=citDJO/IgAyEM0d7gOprPaAJwEL9dlx4/AYZ8X4e0X8=; b=KxbIHQ/GD7lC4slz88QcRYjYUVks3k+YYbvM9ef35E+CsjkSZRuBfQvR QnAEYJ7mpbxNXiKSSAWMpjoZYG/VrwPImWfVJZLWyeURlDwjUejWJFNYu H+s4Ub9eUrZ7CtP4GPhOwxwPPNDLP77yqSX1hXzqoBe1v1uEkSka2hU46 2/AypuWMTnJXXJQCXmGOIiw/1wT09SLhkeNq7G8o5gAaJX/oaWFTpqWhk 8nd9G5tlypW/G+hHO872sRwq/LdpAlX/DVx/I3v6goudOvVVV/h3fuF/H z+txNoCku4SeDa2fso1BborUB97O8w6k3kQaILxR+EJ/dmix2PCxwwt8D w==; X-CSE-ConnectionGUID: /3KBkcdFRc6GZDoKyWj5Ww== X-CSE-MsgGUID: E5fapg9mShqcDSogambTYA== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23287862" X-Farcaster-Flow-ID: 58563f03-7203-4cb6-8bde-513e859732de From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 099/134] hw/tricore: Give memory regions an explicit owner Date: Sat, 11 Jul 2026 22:36:32 +0000 Message-ID: <20260711223707.42139-100-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D044UWB003.ant.amazon.com (10.13.139.168) 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=645f258d4=graf@amazon.de; helo=pdx-out-014.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783811031485154100 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. Assisted-by: Kiro 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 Sun Jul 12 00:34:17 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=1783811056; cv=none; d=zohomail.com; s=zohoarc; b=bF0u/XTGSr+zQUxuFJbckAtyMzm1yEsNsgXtVVBhi5LPg4We/Ei9n/D05w7mQ4TU2MXXlGVrPvp1tU67pjFLm6t/Mnrsx9K2+ToFdbQuv/cFiUH31pxn9vZhCl+7TKLfqfKLunLG+8GSaShL7EB6KwrVUGlSuWQZSIb1bkP0/DM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783811056; 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=CXOxm0VQ3ug8i73JP92Gty/a5Axf9FdIYmMv6MEY07k=; b=EviHzNOhAupbRlsmKXCz2QG/mKkBwHCmHt/zC55gk6JPQYBmMQzRRFSaDfaMJ8PTwp0A5ofnlqldHL8kTAsoyYclGTv7rWz/0jgpWKEWVMLjCimmmIyXfgj5I6WHfvyn1lmvjkZjgOE5AOZYRCFB14m5FasV2a9FDh/fsWMs3Zs= 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 1783811056789823.1164004667329; Sat, 11 Jul 2026 16:04:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigjT-0005m2-BZ; Sat, 11 Jul 2026 19:03: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 1wigjR-0005lZ-RD; Sat, 11 Jul 2026 19:03:37 -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 1wigjP-0002hL-HW; Sat, 11 Jul 2026 19:03: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-010.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 23:03:32 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.48:13504] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.51.175:2525] with esmtp (Farcaster) id 956b4a00-99b6-4257-9ef4-046b18028040; Sat, 11 Jul 2026 23:03:31 +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, 11 Jul 2026 23:03:31 +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, 11 Jul 2026 23:03:22 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783811015; x=1815347015; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=CXOxm0VQ3ug8i73JP92Gty/a5Axf9FdIYmMv6MEY07k=; b=bk9rXJ46IXtBVAVnBDWj1gPWPnGphi/OqnwDg8IUwNVMeIBWc2FPIksH o4WzxRd/BHeBQUcxiBKXEkF90O9FyUYQHFBCX86JgXTdOoooW/V5jg6JZ v424oUl0svyKU/nPRI4Yyhnuw5wqPJd9dgD2IMLaYNDIjatTCBdxYtNCw cNeK6TzdCfBkopGfK/IsyDY7i95X4umCWELXU+Qgp7D2ck/6wCMkYO2V/ 2DMbgUocyqL2w+5Z2gVXhsRu9wTwRPG9aLbcSBZL8Xaq1/nOMvPQI9N+d jFZWi/QiI+KYgjzEgfPGQBd9DyYgOhtLYYHhu6UaT4K1pdmnsc7fZBBJd Q==; X-CSE-ConnectionGUID: YQViRy3tQXaepJdQIfyQ3A== X-CSE-MsgGUID: BgXdbXLFREOiUpzQ3XJoMQ== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23370040" X-Farcaster-Flow-ID: 956b4a00-99b6-4257-9ef4-046b18028040 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 100/134] hw/xtensa: Give memory regions an explicit owner Date: Sat, 11 Jul 2026 22:36:33 +0000 Message-ID: <20260711223707.42139-101-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D044UWB003.ant.amazon.com (10.13.139.168) 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=645f258d4=graf@amazon.de; helo=pdx-out-010.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783811059510154100 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. Assisted-by: Kiro 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 Sun Jul 12 00:34:17 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=1783811040; cv=none; d=zohomail.com; s=zohoarc; b=ZrHAmQvBRLiTJnE4jkfy6iSejd+FLfsDUzzz1psidm+MIogN/SK+5puGnL2um8dTSUm//TgOMkp9qJXRGbsdbAa8cqlEGGD/mIbLnBwjdt4QLB+K/MWDoARgp4pjlm2Dan5bEUwJkTsDNJ/hgmX7e5wcV1XefJkbYyl+aBJ/2FA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783811040; 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=OPixt3dA2I0YABTgFbPfsYIeHgeFDdypEeTEjw+W/WA=; b=lDcqBStU19hN8+Bhu9E8Zquxe3/m+me24MwD5r2BFcn+SB7FFe7d1lOMixHDtx2uHtn4weYwLHb+kpojvIuDmKfWXCKHnSxXCqxFU2VHB9T1xLDHMrB7Q8Rhh70OYV4q/UW5yFPyaQdyIpSQSqBYIKleleZ5lvu4fGyUhyd/5SI= 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 1783811040456938.0084741193302; Sat, 11 Jul 2026 16:04:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigjb-0005t9-Lg; Sat, 11 Jul 2026 19:03: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 1wigja-0005qk-18; Sat, 11 Jul 2026 19:03:46 -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 1wigjY-0002ht-Bt; Sat, 11 Jul 2026 19:03: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-003.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 23:03:40 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.234:1051] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.26.212:2525] with esmtp (Farcaster) id 4fa6175f-a60e-419b-9695-433ff0d02032; Sat, 11 Jul 2026 23:03:40 +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, 11 Jul 2026 23:03: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, 11 Jul 2026 23:03:31 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783811024; x=1815347024; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=OPixt3dA2I0YABTgFbPfsYIeHgeFDdypEeTEjw+W/WA=; b=b16+sCXJvyuKBY6SqEOKqOyUysec3axwOcqUuZ45qL9gyE/m5H1i4M7N FnleUV5pc+u3MUn8Rj0QeG5gP4Q1rasoX2II1VjIHbtWaACPfwRXI1ekw drdfsemgu5cIYrDgLBXWMcL0i3SsWbD4Cgp1PTJqUgeUXjej/YvOMakOF 3C8NWspbeUqF7J438YAXTT14dL9wuCY1O7BT11QOeRYM4M3oqm7QNUAEM ZfjytytfO5QDoGO1yPmqu1Ckm9lT+ip3gf9/o+aoxxhrLtB11o/BoV3OU hQG3agfUsjGrZOMFawn52i+F3ejfi4sFrqAqpgmLKdHBtmOw5QM5p0oZT w==; X-CSE-ConnectionGUID: O3vM7TWMRhmLXxi6Vt/1YA== X-CSE-MsgGUID: oDU6o+WPQAex0Dv2HB3/eA== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23517384" X-Farcaster-Flow-ID: 4fa6175f-a60e-419b-9695-433ff0d02032 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 101/134] hw/display: Give memory regions an explicit owner Date: Sat, 11 Jul 2026 22:36:34 +0000 Message-ID: <20260711223707.42139-102-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D044UWB003.ant.amazon.com (10.13.139.168) 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=645f258d4=graf@amazon.de; helo=pdx-out-003.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783811043400154100 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. Assisted-by: Kiro 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 | 2 +- 4 files changed, 4 insertions(+), 4 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..0be124fa89 100644 --- a/hw/display/vmware_vga.c +++ b/hw/display/vmware_vga.c @@ -1257,7 +1257,7 @@ static void vmsvga_init(DeviceState *dev, struct vmsv= ga_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, + memory_region_init_ram(&s->fifo_ram, OBJECT(dev), "vmsvga.fifo", s->fi= fo_size, &error_fatal); s->fifo_ptr =3D memory_region_get_ram_ptr(&s->fifo_ram); =20 --=20 2.47.1 From nobody Sun Jul 12 00:34:17 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=1783811074; cv=none; d=zohomail.com; s=zohoarc; b=EUA8r0d5TgV4Kd7F2ynfIRvYob1MtDM9il3iKRVDKxMAi/92HmLPJnryo5gF7yFbBY+Ne3I3ZR1FmiFfjR9CRAwwy4RlvKW20s3QmJMtfnUAjFL0UZK7QI6i5ghffJhIFDLzeki592MIMGtsthWsF3GJJP8i+0Yym0OQ4QsTAM4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783811074; 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=rW304WD8m6eC/9oh/zviljvTS+3YODW4+WlFj2/NhOM=; b=UOQwaTpl7Hru02HrDBPAwPZncfXYAhIyqOttfMESUqX9ymc9HPRZ+R66rWW2r+DptisbP8wv16a3yGTCyoy0+1NjO24al5TQJOBBVAMsiWa5SzdwE1+1xZHnT3OTVRtsyx2MvyTkFzexQyDzEAuP68Lo2MUvOG34o/CgbotcmpI= 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 1783811074528332.37968776959315; Sat, 11 Jul 2026 16:04:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigk8-0007rz-1K; Sat, 11 Jul 2026 19:04: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 1wigk6-0007ks-Qp; Sat, 11 Jul 2026 19:04:18 -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 1wigk2-0002oO-CS; Sat, 11 Jul 2026 19:04:18 -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; 11 Jul 2026 23:04:10 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.51:20638] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.51.175:2525] with esmtp (Farcaster) id 926cf72b-e496-47ae-9227-8b4bcc4d2808; Sat, 11 Jul 2026 23:04:10 +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, 11 Jul 2026 23:04: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, 11 Jul 2026 23:04:01 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783811054; x=1815347054; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=rW304WD8m6eC/9oh/zviljvTS+3YODW4+WlFj2/NhOM=; b=UFdXdzOLBsXzPnqKrr1FTHC6r6nZvMvk+z6IC/bIguAEDcEfq+x1Zlrc 4/wbTSi8ZX58qMr8kgU11WVZKS9TtdY86xPZ2AEr9GwAoEsFG5wgeHfel 4/nFumLiNo4sKyXY9e/SKe6jK93j/8GNr9BJ5dGkPZLZvR/DICxg3qyg4 mawV6CevliAoHzkXIX+n155765DeD8af8l0emdrBVwxr+nxMvJA3FFtWz mqF7vH3bpk1XBXioTeLb8tc2eJ8nm4o3rrwrwibw4hZ/3BrRGwyZknLNV PQWmCuq7IZzaiflN3HnP1yW6plrMlpWt1AXslBp1jtSkbCKEsZYSewFUA g==; X-CSE-ConnectionGUID: 6tIA76JPR3mMnMBZ0VgdZg== X-CSE-MsgGUID: 1zPiy3USRBi7VRafESsQOg== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23517391" X-Farcaster-Flow-ID: 926cf72b-e496-47ae-9227-8b4bcc4d2808 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 102/134] hw/arm/omap: Give lcdc and dma memory regions an explicit owner Date: Sat, 11 Jul 2026 22:36:35 +0000 Message-ID: <20260711223707.42139-103-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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=645f258d4=graf@amazon.de; helo=pdx-out-003.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783811075779154100 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. Assisted-by: Kiro 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 Sun Jul 12 00:34:17 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=1783811086; cv=none; d=zohomail.com; s=zohoarc; b=jjp7CpyoFi6UIwTl3VN3+d6sS6MkOwzUAKqLrrOfj2ATatE/+8wWX2okESLgBKbuTfKw8LZCVJ7KWUi+QDAcj/YyheuUtefYQlmdnHN8/JFR0psj/d13HAWnMjYxSwks5TEnkCX1/UCjIETbFftj+aCbmH92cV4fpfIWuXDdAtk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783811086; 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=0/nsBnKgWUlON7W258sp5IjMJ0xeaJFkP12OrTIw2Mo=; b=ATsRf6ZRn7e/D5uCOr2d/oSxbpJJzZwUL13BRj/Ta5TpObwu97n8OoTjoYRLw6u5dZcW186gavT6QSob7wHmVW2ysyt128iNJP4x/eF/z57oIqetYitJ19nJHX7270xRYhcTse1E9J/avOuDby7lsy2uK5csx98PqrEJXfI2zNY= 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 1783811086405681.674317362869; Sat, 11 Jul 2026 16:04:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigkG-0008L8-1b; Sat, 11 Jul 2026 19:04: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 1wigkE-0008HB-FP; Sat, 11 Jul 2026 19:04:26 -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 1wigkB-0002pi-0P; Sat, 11 Jul 2026 19:04: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-009.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 23:04:19 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.111:17774] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.51.175:2525] with esmtp (Farcaster) id f5231cf3-4194-4805-81c5-b5267b89a834; Sat, 11 Jul 2026 23:04:18 +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, 11 Jul 2026 23:04: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, 11 Jul 2026 23:04:10 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783811063; x=1815347063; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=0/nsBnKgWUlON7W258sp5IjMJ0xeaJFkP12OrTIw2Mo=; b=aRbldrnzMsCNYZL6q9vJcfVLh0DMyZv07Cyy9BBTw4vd/ThZRli5BhHl wS9wvguTmwpD+Omwdn59DgGJRCKB/oOFPslPTldeytwcBdTrm5Vkvx/ce T66SfWDfsjJse+hMHVRj3fulF4oEafil7044Ar4HAG8BGO1EML0WSMBTa VQgaMIlrNta7RYjHR1JHTtdD5xDeqN7pJKQUw25CiWXc0fAxSrJQBd6uq hq+DfxYLYC2DRN3xo65koLJt4/sWDt6yHxoTFA6SdwGcPSN/UJ5oYKe+T g0lbmH9k1cd+OcY7cgmfGWljrzlfBAfGACf3xBQu9XdDwKTQr5O/W96cc A==; X-CSE-ConnectionGUID: AGbXCP+9RtCoOqHxGe6ViQ== X-CSE-MsgGUID: l+4ZrixzSSer7JzOoCq3og== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23390719" X-Farcaster-Flow-ID: f5231cf3-4194-4805-81c5-b5267b89a834 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 103/134] hw/char: Give parallel and htif memory regions an explicit owner Date: Sat, 11 Jul 2026 22:36:36 +0000 Message-ID: <20260711223707.42139-104-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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=35.155.198.111; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783811088168154100 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. Assisted-by: Kiro 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 Sun Jul 12 00:34:17 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=1783811081; cv=none; d=zohomail.com; s=zohoarc; b=muQWhtOUSr1Yhsp7MViZqlruLthQ0jLQeeTzUHLJHOblShwT+YY9t394uP+Asc5SRishjBOTxK2dxZyrPPxksAljG7sNpzONzoUS8nvmJN0WL/El75cnZiIYxMIW+/8gTo6frsdgNwkK2nWpq+0v3ymjTnobGHLsVb3qjjdA7/M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783811081; 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=n8EvPM4JcXpYSayZRgeREEgwZhhcy95t1AHvCdmHV5k=; b=DzhhC9q/fQtID/xjv1N5PHcj+xxH8sD8sljq2VuXHAtuINo2F8WGJloA71YjmWxn3M8AgjQN/tyPoMBkpu8SZF0C5rMScqxBAM+ZTJumUfgHu1PtRzZYpeHEucrkX9ItsNdBWyPen7uR6kehS2k/giw9DTvOKsBT1nGhv2UtQqg= 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 1783811081920462.78350648613684; Sat, 11 Jul 2026 16: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 1wigkM-0000Jq-IE; Sat, 11 Jul 2026 19:04: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 1wigkL-0000Ec-8o; Sat, 11 Jul 2026 19:04:33 -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 1wigkJ-0002rm-BW; Sat, 11 Jul 2026 19:04:32 -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; 11 Jul 2026 23:04:27 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.236:11463] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.31.54:2525] with esmtp (Farcaster) id dba23c15-67d5-4a9c-a7ed-a62a6bafc7ff; Sat, 11 Jul 2026 23:04:27 +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, 11 Jul 2026 23:04:27 +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, 11 Jul 2026 23:04:18 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783811071; x=1815347071; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=n8EvPM4JcXpYSayZRgeREEgwZhhcy95t1AHvCdmHV5k=; b=ppeGZFPhPUrC+/IXk1gsd29Hxi3rU67TEUXxv6lF0Rb5S/qN5pKM0t79 +9nO1EX4+ayFz9akYUmPQ/GFyguxq2PZ4M42EEg3BWAf8xv41+c4VOtkl wXlyCeKqmO5ZsfHb+i03nrJ79fjbBFpu8I4DUNMo+lQrIUdDzBiAbqyyV GTdE3C8AJeslA8v6nYM3z9CWXzjoUfke8pbjZmBnDdM6Q2C6ATRzarBOE prY7VdZ/48QYY9f0gWGY4FbcpSDfZ8mzt7bn9ZH5IZP4oH62uzKOJ5ckX Y3hr/DdRa9vMzRuISru/F5HE/FCbTrfcZmVF2miySQ9q+Ro34Zxqs20yM A==; X-CSE-ConnectionGUID: gGF/P07gQXO38gsa/uetTA== X-CSE-MsgGUID: WPW6qZGbQ8CPqgEEH4HNBw== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23493364" X-Farcaster-Flow-ID: dba23c15-67d5-4a9c-a7ed-a62a6bafc7ff From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 104/134] hw/remote: Give memory regions an explicit owner Date: Sat, 11 Jul 2026 22:36:37 +0000 Message-ID: <20260711223707.42139-105-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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.77.92; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-004.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=0.001, 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: 1783811084006154100 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. Assisted-by: Kiro 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 Sun Jul 12 00:34:17 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=1783811118; cv=none; d=zohomail.com; s=zohoarc; b=cdXYIZ57Uhb6hbYX8bt1tJaNEgJVPIq+RJZ4wPbp+ANJofz8p7UqqscSuiQM+b/pV45xbZHTluJP5iTalb4/iVqBmAxkLHof3gUTm/qfAbXN9HqZsld55DpRte4WP+hv0ocFnlQTbE71qjVDQbZLYJTyAyzTeWDgnhMPS6tsooE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783811118; 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=0OdVNN4g/A5CRAastFV+ZN9q0YHZjTY/AfP8eitSwz8=; b=nInfu71PmXcC2Z5ByGmUjEDcgNUwORxHpi9h4HD0Nb1aUlelmCDcJBYwmroZsWJsWzmmMWnti+EpHj3DVwizyJFlPWEPo6v4+K3p+WpdEQfEue/x/E2gOv8NTj2mbMbeQRPWMW1DdZte1gMq/QwjJo9dgeFJeaf/2754l5AbTkI= 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 1783811118761546.9759460025808; Sat, 11 Jul 2026 16:05:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigkt-0001My-4O; Sat, 11 Jul 2026 19:05: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 1wigkp-0001KG-BR; Sat, 11 Jul 2026 19:05:03 -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 1wigkn-00034E-19; Sat, 11 Jul 2026 19:05:02 -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; 11 Jul 2026 23:04:57 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.51:17720] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.35.214:2525] with esmtp (Farcaster) id 70131fcf-8d62-4358-bfd4-d8b4a724f4b5; Sat, 11 Jul 2026 23: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, 11 Jul 2026 23: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, 11 Jul 2026 23:04:48 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783811101; x=1815347101; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=0OdVNN4g/A5CRAastFV+ZN9q0YHZjTY/AfP8eitSwz8=; b=ilR9x/Bg/MoBWWcECVrpyrSqV5HwxZnyKLUOxPbdxV38pmPgyWzPV2WR d3rmEi4g+NwYbfjUjRpwor8yJjFek6Z682zlQrJejM1vFUc1q9Sn9anLQ a0qKB1HjCxUet0K7w/BtR8KvY3AAw0k7PU8Wt4c2gskTJ+O6fa5gqgO1k 5yZGd558l6/KqqzogJF5YwIw17jONplnCW9X/yBpOmLoIW59cbg8YRDL4 +Wy+ZblWPqZrpd71sG0sDS3IG9xn/5dKDA331/YhV4CgxuD7sj+Xx4IEm uTzWwJbD9vZoGUfGnZ0owRR+vZ2oUOSQY5ObYx7zM0ItrKUXoYd2/K/bd g==; X-CSE-ConnectionGUID: 6Z/7fXYqQ6a5eWRf8lHOcA== X-CSE-MsgGUID: Tc6fBYq2TIm6a+yLpsYvEg== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23483651" X-Farcaster-Flow-ID: 70131fcf-8d62-4358-bfd4-d8b4a724f4b5 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 105/134] system, backends: Give named memory regions an explicit owner Date: Sat, 11 Jul 2026 22:36:38 +0000 Message-ID: <20260711223707.42139-106-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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.34.181.151; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-007.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783811120991154100 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. Assisted-by: Kiro 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 Sun Jul 12 00:34:17 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=1783811154; cv=none; d=zohomail.com; s=zohoarc; b=ep8NeabMG9LSOlU+0r2h7ddYsqAZ6ad9RHJbIXYD2nth8f47vzCinUzKYlf2CxghWkmc9psdcL7cokWBgiOqMOWmn5ieZgiycBXA5MMXFi23FYWTyo+iZpu+FRHg7VaGuA3hofi7JjGU3gDCkLcSMeizPi2BLTl5iIaZuAwLcuQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783811154; 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=W9NMUE63sGoBFljEfTdcDeegt56zvHAcCeou8uRTEx4=; b=eRzGg+TPAOstICEROlo+IYCVfFMiGy1B/sXe9AmhWGQSAyY8ycayxB/JvE0vPzItlFwWRcMOX1AEpdDzwVxBj79flbKunOblACXtto1Ab7lI7AfeKVZ75kJ+za+s0vy2znJsDvO4TysTgvTLwwkwMrSAACGlE77i8WSJ2e4EpBk= 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 1783811154434963.4508782457802; Sat, 11 Jul 2026 16:05:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigl1-0001UL-TA; Sat, 11 Jul 2026 19:05: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 1wigkx-0001TX-Mb; Sat, 11 Jul 2026 19:05:11 -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 1wigkv-00035U-Mc; Sat, 11 Jul 2026 19:05:11 -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; 11 Jul 2026 23:05:06 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.111:26831] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.68:2525] with esmtp (Farcaster) id 77b236db-b737-411d-9117-2c00d568d606; Sat, 11 Jul 2026 23:05: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, 11 Jul 2026 23:05: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, 11 Jul 2026 23: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=1783811109; x=1815347109; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=W9NMUE63sGoBFljEfTdcDeegt56zvHAcCeou8uRTEx4=; b=OmlmvqFiFRFfn6+nCgo9QR2CQVtCUzqQIg/OVYmPb04iswc2xLoslINj kavBRN7JgwT2QX4qjuXy6e/pn7rp8yDc/PPwGsx5u5vQeYoYSdAbbk7kj lrZI/eQX4JeOZW39rKnZAre0WQelXa+fvDAK9BfpRv7AeGWsafrWyNOGd 9FKnBV7DFDc/DDEG96n/rpGckviEQwqJJHLrVinysQk4ROIrs/Syek2Uf yIUqVD7M9/37y3W3HGbaSsMMp39LvWVgx4Lo7xVKuhOdyXtOI29cfMUZ2 dzYbfV5nOfbs3TxZDDtOjnd56SQRcRfwH9FWdyqv79xXOsS0L3xK3xbxJ Q==; X-CSE-ConnectionGUID: 7IU69walTnKon8eXDZp++w== X-CSE-MsgGUID: jQB4ERe0Tu22dq9WaEpJOg== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23493370" X-Farcaster-Flow-ID: 77b236db-b737-411d-9117-2c00d568d606 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 106/134] hw/ide: Let ide_init_ioport() take an explicit owner Date: Sat, 11 Jul 2026 22:36:39 +0000 Message-ID: <20260711223707.42139-107-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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=44.246.77.92; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-004.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=0.001, 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: 1783811156940154100 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. Assisted-by: Kiro 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 Sun Jul 12 00:34:17 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=1783811158; cv=none; d=zohomail.com; s=zohoarc; b=ghYcxxkZWjHtYiPewnzitBVCyt0l4kbindaEYZEW4muc0m6sbik339dsitBjdlz1rGbcv+wTscUlvA6GUMbqpU7wBhVgrWxqmHXURO7g/28vJssfFSrJqrS/tAH9i9UwwJF1BkLclMvIA9sPLxTu6h/nfxMtgARdv/Ifo4bj7ZQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783811158; 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=w6Pfk1xQ4FRrAQkKCewEEwHD3O/ZvRglgXd3sI9Xt2w=; b=jBNcc1wZaA8F7s8VPRpzJbr4JFRBsytXU/ij0zMdyK1Kymv6X68R3k9X5RxORIlRXPtOBRmKrDXR86zGgo5tzXyQ9MdHeFsKmsGwLpldEEA0SNMPgo3WLneiiYekm3PnvMRVNETQeszXX165JBcm1QQAamBP/5pJxwXU1h4tRXA= 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 178381115869983.49362206240266; Sat, 11 Jul 2026 16:05:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wiglB-0001ci-Bh; Sat, 11 Jul 2026 19:05: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 1wigl6-0001Yn-IW; Sat, 11 Jul 2026 19:05:21 -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 1wigl4-00036j-Or; Sat, 11 Jul 2026 19:05:20 -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; 11 Jul 2026 23:05:14 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.236:20840] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.35.214:2525] with esmtp (Farcaster) id 78f9f4e0-ab2a-413a-9444-aaf789afd760; Sat, 11 Jul 2026 23:05: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, 11 Jul 2026 23:05: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, 11 Jul 2026 23:05:05 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783811118; x=1815347118; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=w6Pfk1xQ4FRrAQkKCewEEwHD3O/ZvRglgXd3sI9Xt2w=; b=Kd4SRqrtGjq9pzaQCUjBGCMScmc6Zp3Un/gXfkXWGYokoBCWKoMQbiCh fGPqBvRu3R/BQN+qiZJzZV0z8aLZWBJ54mK5kRQzAoYJZfLw6hXgVC5nr lDikpH3omgu2xvkQysgsUiz2R6ek2Quz9I7ebsFPa1XH/ZwnxJSAVEiZb WcTIWOMKEq8n4MtgyffbCxthgg0kgYjCK75LXgTxJbY80OoGPdVQTJ8z1 pTC4TAaWxgEI0s/sSViw748HMDDwX5EBUkiUYAO5pycuaS4FbG6Ez6/pP 15Mp8azznpM22afIY71PwpwtSOzUMXa/wIEihaHNBpyeCQ4vz+K0PUbZa Q==; X-CSE-ConnectionGUID: jM3fguWESOa8NRPPJu6GuA== X-CSE-MsgGUID: 2c1ADUXITy6CHgCzBRxWKw== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23505942" X-Farcaster-Flow-ID: 78f9f4e0-ab2a-413a-9444-aaf789afd760 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 107/134] memory: Require an owner for named memory regions Date: Sat, 11 Jul 2026 22:36:40 +0000 Message-ID: <20260711223707.42139-108-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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=44.246.1.125; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783811161234154100 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. Assisted-by: Kiro 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 e3ee0416cc..f3a77197df 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 Sun Jul 12 00:34:17 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=1783811157; cv=none; d=zohomail.com; s=zohoarc; b=YtTBN0njtanHILHH+SFFRp80GGyu2/egMd/POE+5PHqUQxiJ+G7tDe24EK31L6RioAudgkOKU60dlvQTnVdAz6gfD9shAL5VNh16xo/En5JnOsjKM7A3q088JjMZYPW3kSP2ggy9oHkrcDDVqpn+JPSYNFuFu3HJESPooBBGiGE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783811157; 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=HmGyU68MNWFytBn0GA7orhGnkSlOwbqt5winEMY98VU=; b=bDb/vRX0fOCmgZ+7qIEpaLtoqdr60vdiTvC/QaUKKU9OXQW7B42zY+cHJVnjsgI1+HqInP1FqySbY+jORvDKWitLu2iOZgERCA2MZ/p82KC55W5aUxh0riHWLd0Td8DrM6uZDZy40+DyY9EhFvcJpFG58hW5wwp6IPlesCHDxBA= 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 1783811157564946.0685579987488; Sat, 11 Jul 2026 16:05:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigle-0002k1-KG; Sat, 11 Jul 2026 19:05: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 1wigld-0002eO-6k; Sat, 11 Jul 2026 19:05:53 -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 1wiglY-0003Kz-Tj; Sat, 11 Jul 2026 19:05: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-013.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 23:05:45 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.53:28601] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.47.135:2525] with esmtp (Farcaster) id 426a84de-0de4-4abb-9543-e6408b10fba2; Sat, 11 Jul 2026 23:05:44 +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, 11 Jul 2026 23:05: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, 11 Jul 2026 23:05:35 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783811148; x=1815347148; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=HmGyU68MNWFytBn0GA7orhGnkSlOwbqt5winEMY98VU=; b=mgrcTo8PFm9QC2t+AWQ/seSnPdDVzWjreYtgvYpgqROooXk7O7guT3q4 nf5gm5OKL0JU9sirqs4IaJCePin/MBncPmhkDdAvAK7qBtHT1byHiuLv9 g2wQJ73myTMjRyb6BPGL4NLkM0rb0hEbs8XWVY4f0AVEvnX9XACKrYHoo k4HbY8tLTcnD/0TllWQJpRcZeYE8d4F09YdrDmIIpOFegx1iWv6yXVpfg Bo1Ne3K2nfnruJPDmjI3oQxe3jYeLDQiGXxVbckggOSCHZV3Q7SnuPAEP g2sxi6bREYbyiB5avKRffxcnropfFIy/el2W+KcJCqjcqG+p8tqFsLhXG A==; X-CSE-ConnectionGUID: 878m59ZuTCyFTcRh58kEzw== X-CSE-MsgGUID: xbxyYvCOTiedCllKr9eJdQ== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23296929" X-Farcaster-Flow-ID: 426a84de-0de4-4abb-9543-e6408b10fba2 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 108/134] irq: Rename qemu_allocate_irq*() and friends to *_orphan() Date: Sat, 11 Jul 2026 22:36:41 +0000 Message-ID: <20260711223707.42139-109-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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=34.218.115.239; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-013.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783811161342154100 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' Assisted-by: Kiro 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 | 14 ++++++++++++++ system/qtest.c | 2 +- 48 files changed, 90 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..5587c3a4f9 --- /dev/null +++ b/scripts/coccinelle/qom-parent/irq-rename.cocci @@ -0,0 +1,14 @@ +// 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 Sun Jul 12 00:34:17 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=1783811177; cv=none; d=zohomail.com; s=zohoarc; b=V0PIx9e/gvJo5YWEVL/KjEQvZ9zgauUFnI27IuuZvqi/zndCwoPBW2ov8j5ipxwRQAm4mWRPRfiSFDkH8u9cSqxfEST+G6rjDuTxEIZZZs8Kz8b+HSMflfhL05wan68HVrav5x9wiMHH9z/JVXh8iBSVhzC+C0vhsZvsqdEOjRc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783811177; 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=muI5dEyqzqqFCvV0Mx5cUYEs7ERUUjkM8aKOhV7cnrg=; b=ePXieuJEzIDXjsVx1+o1HG559cduFHColNVVSNl506bhLA+Dn3q9TrfPSPUyc/QDY3WO8vhpcc/7uW5XC161QMy2pY1hU43wnLZYBSH0tOQINtjl/aownvb7a6LmSc7V4nLBQjpuCqKyW20jJXrvE46tyZSBJMaWmKap1bGRsL8= 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 1783811177194463.4963386450082; Sat, 11 Jul 2026 16:06:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wiglk-0002wR-0Q; Sat, 11 Jul 2026 19:06:00 -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 1wiglj-0002vr-B1; Sat, 11 Jul 2026 19:05:59 -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 1wiglh-0003NC-7X; Sat, 11 Jul 2026 19:05:58 -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; 11 Jul 2026 23:05:53 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.111:27500] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.47.135:2525] with esmtp (Farcaster) id 09b0fb71-566c-4cff-a2f0-04d9be53f3bd; Sat, 11 Jul 2026 23:05:53 +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, 11 Jul 2026 23:05: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, 11 Jul 2026 23:05:44 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783811157; x=1815347157; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=muI5dEyqzqqFCvV0Mx5cUYEs7ERUUjkM8aKOhV7cnrg=; b=f1q8u0uuGw4618t9Ds5Czo8dt3CkzCFwjIf80jhwXpdUho3v5jm1uR+j DeEIdJ/iVUOCufCe4rR8i79gD79BBYyhZLH2EoBffZbAKeoCt/DMPaUNi 9rPWk3yOWoXAmxtf3qAmbXSuaJS820baVepZFs8KJf5NurU4ze7M5NwYK xhYLjKkbZJaWO+XAgb6R4pOppooeukjCrxwZKcJnxlccR1PuknWd4ApcG GnXhStS4jhXThBNHhbSMzgiL7PZkTCEw4N6ElDre64aEkzGPB4KwAYwZg VS1LsEcZ5EtvIHylxZsw9U3IxZxUoU3TvkDm/vjI+q6OQKNJCOGTcqz9N Q==; X-CSE-ConnectionGUID: go8APNENSYez8fwgs7DenQ== X-CSE-MsgGUID: jipw6+yHRXmyGo9aww1U7Q== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23483656" X-Farcaster-Flow-ID: 09b0fb71-566c-4cff-a2f0-04d9be53f3bd From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 109/134] irq: Reintroduce qemu_allocate_irq*() with a mandatory owner and name Date: Sat, 11 Jul 2026 22:36:42 +0000 Message-ID: <20260711223707.42139-110-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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.34.181.151; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-007.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783811179311154100 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. Assisted-by: Kiro 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..ee954eaf62 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) +{ + g_autofree char *propname =3D g_strdup_printf("%s[*]", name); + 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(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 Sun Jul 12 00:34:17 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=1783811188; cv=none; d=zohomail.com; s=zohoarc; b=KaGB7JuaVCdGd15pHEvPIF59CPCiogUqqMoo8KaVmeHN+D/BeuQPrJ7MyDTZqF4Z5DglB5TZYy+Sm9iMgG8RcczcEi8KiXeFZWYk02i4mlF0iGxrENMCGaMAsHccXPtDo50NxvVUaXyP7wbhyiow/IPzL/8cv2fnwnHfVqAhmTY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783811188; 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=/5yU84d9UxtZFYQr9HaVFk2ROo63f4rXE8S2/8205jM=; b=YDd7ei/EKKMv9K0yKimcWmJvYoKE3eriv00PkJJ1oHwcrZMHtzrtYGKv/YRWGLQTFvrkhnPYxxPwI95aayBt04sdxubmssrDRQArPzw94ZsFBZfO39Wd1WyAbf9aHwIMsUQEuBGxccVHMaxjcnaq53GawB+oyreIAE+xSHOumHk= 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 1783811188401594.0211687581469; Sat, 11 Jul 2026 16:06:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wiglt-0003OX-4a; Sat, 11 Jul 2026 19:06: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 1wiglr-0003GP-32; Sat, 11 Jul 2026 19:06: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 1wiglp-0003UL-A0; Sat, 11 Jul 2026 19:06:06 -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; 11 Jul 2026 23:06:01 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.234:3160] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.58.33:2525] with esmtp (Farcaster) id 51fd3cc1-a2df-44d4-b696-324a6010a1e5; Sat, 11 Jul 2026 23:06: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, 11 Jul 2026 23:06: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, 11 Jul 2026 23:05:52 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783811165; x=1815347165; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=/5yU84d9UxtZFYQr9HaVFk2ROo63f4rXE8S2/8205jM=; b=qWxf6vxHe7MbwGx11kBsj04eiOzS7aEL7e2Ylry66n7+SfyNKU/YhAxX 6YnRDlzzO7q4FnhfffSq++RZA9dqyvDwPW1r6URfxWeY4Zhc9ABuPQMEG Xrd0kCsPUuZNI9rDBND8rfj6HtIwxzJNdI9PZmH7fWRNYYxFF2M3As+oF Y1Yy7LCqsEdEonBEZ0P5I5pzJtnA6qyFeV8NnGXdBIljq02EI6bTpnljM 4pCMr+/P05bSYiY3kOXmZgFPPO0cxQXwPfV4bgI0zWvdR03aV6LPqhplr dm/7bkDFNe7iJdwtJBnfCBXBoyK8jJOKAFp0QrUzu7TWZ86E6vvoeUREi w==; X-CSE-ConnectionGUID: O06q8DiUQL6x+iY7qOKIFA== X-CSE-MsgGUID: 7dv5OYryQkWkyK3dkhlzgw== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="22997816" X-Farcaster-Flow-ID: 51fd3cc1-a2df-44d4-b696-324a6010a1e5 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 110/134] hw/pci, hw/usb, system: Give allocated IRQs an owner and name Date: Sat, 11 Jul 2026 22:36:43 +0000 Message-ID: <20260711223707.42139-111-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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.245.243.92; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783811189568154100 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" Assisted-by: Kiro 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 Sun Jul 12 00:34:17 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=1783811203; cv=none; d=zohomail.com; s=zohoarc; b=CKyXOaoRbfxRWDDuM0+WmiGJfoHGSYIcy/HPtmbskdJxtkHhOGZ8VmaP2GJMk4cRAT4MnA7XuCd1J3TkzkmyKAxkLQip5QMy0ikQnkvHHcSWnu7QY7YK/pB64mpNDurrRcvEq5/H+i5udldthA24sx1Q8w+sWWABenmXlyw9Y3c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783811203; 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=APA3Aj96SjjFE4GKXHDqPSKc1SHkwzYFyZRZ/nvhBHo=; b=KmSUIE+q0yzz6Jv8sskeXKoNaLyO46ftYx3uFRILvZTjY4BMLMhUK4UJ8s+CIYIMQWeHwb3beg8UbjVz+nofwWxCsUaGA9jLXvwPvG9+b0Y7RU4zesP+nzL+oyhgVhHX8bBuAKwDQkur+swoLhwn9Y6Y3PDXxK7GrSA4EI92I1U= 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 1783811203648291.0635038439825; Sat, 11 Jul 2026 16:06:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigmP-0004Vv-6G; Sat, 11 Jul 2026 19:06: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 1wigmO-0004VA-BJ; Sat, 11 Jul 2026 19:06:40 -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 1wigmJ-0003dF-Rh; Sat, 11 Jul 2026 19:06:40 -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; 11 Jul 2026 23:06:32 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.51:10019] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.40.123:2525] with esmtp (Farcaster) id 99166d13-31b6-41a5-9232-0e26da927882; Sat, 11 Jul 2026 23:06:31 +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, 11 Jul 2026 23:06:31 +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, 11 Jul 2026 23:06:22 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783811195; x=1815347195; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=APA3Aj96SjjFE4GKXHDqPSKc1SHkwzYFyZRZ/nvhBHo=; b=AcQHCpa+1iUej7YKhdj3FtLVkCS7MzKCzvQHKXV7QFdNFDQJUvDrghQ0 jNeFEF7VmHl+Oit8ebWerxiSrVEB97tPfolktAeQMVq/aNwkF/o45PYVv fnqZUcSNUJmaRA9bym1gpbqD5x5HnuRbINaZ5xyQvuBC+v33WftSDOrrl jMU8NWtv4M+cfAtkzK7d77DQzOQlw3T0T5OV0XxkABV/dqTdDI7kJ+0M4 ShB0Ffa9L1LXK+4GgLN0Gr7RUmUSgYDIaheJCy/4fCWgUiKhz6tS4CnQc gXmldBBTcw2ip46MAwhvb1Cv2aJmxEofpwikri2VB1cimcHXUBGwFqLOy g==; X-CSE-ConnectionGUID: fI5GcQvYRSWq6qijdIbdVg== X-CSE-MsgGUID: Ga4PP28oTGy9Vs//eYJUew== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23517402" X-Farcaster-Flow-ID: 99166d13-31b6-41a5-9232-0e26da927882 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 111/134] hw/i386, hw/xen: Give allocated IRQs an owner and name Date: Sat, 11 Jul 2026 22:36:44 +0000 Message-ID: <20260711223707.42139-112-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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.246.68.102; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-003.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783811205766154100 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" Assisted-by: Kiro 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 Sun Jul 12 00:34:17 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=1783811219; cv=none; d=zohomail.com; s=zohoarc; b=EhAAk9Aqticud9avd1aLjFh23NPJJwV7LadciSwYghyfGJDQFZpovk/DKl+Jwbpvsj4RonEIk7ZRkLvybVKt0ma/IVbREnPh2/+Z/yBZ+gf5yzpBRyOov4236akj7Ym96fS9hoPno3K1gENgYwrdt9qEI+OaUNgIW/fxJMQn0f8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783811219; 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=gkfDaFSIqr+zpEm7SCuKohTGYS4M/erIHyrQHP6KtMY=; b=OelMbQQF29VwnPDwi22UsiGz+mlsNkG96iVdEDKEHS4gOq8HPqPUuL8Td/CMIDsmKgoxhF6WcJvyjQ57XhmF00ND82HeZ6a7RedxCyOt7B9nBApqbkDG1jqVkMBf8a/Ww+A/A8kMpXjwEwbMhhM3bjFrNHK1AnI41K9krLytGOo= 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 1783811219778140.94976022049752; Sat, 11 Jul 2026 16:06:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigmW-0004ge-3M; Sat, 11 Jul 2026 19:06: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 1wigmU-0004fO-I5; Sat, 11 Jul 2026 19:06:46 -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 1wigmR-0003f5-VS; Sat, 11 Jul 2026 19:06:46 -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; 11 Jul 2026 23:06:40 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.111:15567] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.31.54:2525] with esmtp (Farcaster) id 33174f51-0f37-427b-aafb-a669e76daf29; Sat, 11 Jul 2026 23:06: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, 11 Jul 2026 23:06: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, 11 Jul 2026 23:06:31 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783811204; x=1815347204; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=gkfDaFSIqr+zpEm7SCuKohTGYS4M/erIHyrQHP6KtMY=; b=mWEF0NKa/8dXtOwOqM2Afz7vX54vzrkWVU+M2hWAG+Zp5EttZs6Uuir4 1QoswNd25VJ6u5BacwcpleVxEBf4yDrLv7uZcwy3NEix1suo9P67cGY3E AVXiacvstAEyJxiWlhvBOSBeEp8VMGRTEm1sMNQMSzi+DxwKLdEMDiH1L 5TIKCsylnliN99NyQj+wbLkQafiQ4u8Hh0pDMsXpLVMZKX4ACW2GadfnL WVXw8tzp/H7YMkM3fpFi2tRbENWFNLpuju7Vyk5IrpfdhMgzF+Z7MQJDw s7XnekG40ucsYWYJIGISFo9JrZ9qufBGwbFf1TozQ9qh7GazRiNHzUF/O A==; X-CSE-ConnectionGUID: jAobGfk7TSK0AwuF+8Ez7g== X-CSE-MsgGUID: cu9vMr0iSTykIrkVYJY9vQ== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23300253" X-Farcaster-Flow-ID: 33174f51-0f37-427b-aafb-a669e76daf29 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 112/134] hw/arm: Give allocated IRQs an owner and name Date: Sat, 11 Jul 2026 22:36:45 +0000 Message-ID: <20260711223707.42139-113-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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=50.112.246.219; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-015.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783811221840154100 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. Assisted-by: Kiro 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 Sun Jul 12 00:34:17 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=1783811218; cv=none; d=zohomail.com; s=zohoarc; b=eAGnj4Fti4UbQxQvC3JHHZUw0qvOeSjp1Hs9x4YQoUIbVKkXqq0qUXUL91n3vU7vrBCSmo7wD1YT4/FPANQ/aiv05UB/r/qHMZGjFzVOVFzxs9bKe/+mMM+IZx5UxdeEYpDduLcHuAGFVuOr9PAj2RecU0J92D/fYc0NnBDBpWg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783811218; 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=w/aD5NYnau+ZnTk1eR1BTVjPeFMEELMMhtgZGkb5Ouw=; b=PC/UcQqK9WR/BprEARQ/Pi7Fi+Ih0T8hdkzhQNjNdhzMxH6gnU+a/MpKDoAO4sTd/pLONIg8pL4zd9VXeOe4iJPUcRhS0Jjw+nxi7Bj9RLDSiTT8q9ganPZjodM49ozGwIBMo3PKjn0wr5gi/i52gLhU0NgflgSwTR69mOQCo/I= 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 1783811218807949.8400782246324; Sat, 11 Jul 2026 16:06:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigmd-0004zc-Ow; Sat, 11 Jul 2026 19:06: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 1wigmc-0004uF-55; Sat, 11 Jul 2026 19:06: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 1wigma-0003fy-77; Sat, 11 Jul 2026 19:06: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-013.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 23:06:48 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.236:21852] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.115:2525] with esmtp (Farcaster) id b5137696-ae70-469a-9448-dc736f7daa37; Sat, 11 Jul 2026 23:06:48 +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, 11 Jul 2026 23:06: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, 11 Jul 2026 23:06:39 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783811212; x=1815347212; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=w/aD5NYnau+ZnTk1eR1BTVjPeFMEELMMhtgZGkb5Ouw=; b=RMe1bLab3OKPoeFgDc+HVPQYcV/VP14uV8BXzTWpRsmT/LrVkyMt1/6N IkO+tacN3KLKuqN8OjueYv/KRJ5+Jh7Ft0srHPWOBF874aFHzirnyNSyi 83ZsVQtrZsOpJ3nOrN3dZVhRA65SJUrmwYnp3rpfsdr9oXk2I+vJvS4DQ B/4w6MIg1KgUj7b1Wl7zjXwMYpK6gMlAo6e7jbRnHXpQ9uMvTEjFJ3AAJ dcwx2pPtUXxPrsFQxT/h7dK0PdSFNhDo4+IPSOK54y0a6xOVwlXhlUFqI 2ZolBpiWkwYjpA0MC+07gkh18GKaTkjzYWWd3TQtQ1x7fS23n6sy7DF8u g==; X-CSE-ConnectionGUID: AVox5K2eSWySgUbgACtvMg== X-CSE-MsgGUID: UZWzl86rQBa180H3fG962A== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23296948" X-Farcaster-Flow-ID: b5137696-ae70-469a-9448-dc736f7daa37 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 113/134] hw/xtensa: Give allocated IRQs an owner and name Date: Sat, 11 Jul 2026 22:36:46 +0000 Message-ID: <20260711223707.42139-114-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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=34.218.115.239; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-013.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783811219949154100 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. Assisted-by: Kiro 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 Sun Jul 12 00:34:17 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=1783811257; cv=none; d=zohomail.com; s=zohoarc; b=dXA/7YMqp8KDZB4dIjpNlCSDf+5TJVie3fq4ja5sz6GdvEkobblUiU1dxqofGw78YnBetW82NTxZGw16uHRbiz+jNCOgp4GlXYASKGlHNb8PJIkPjMQU/g48unp27FDAqVV/ZjASZTYTawtk6i31yMeeTun4BsTq9jfexTkzdT0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783811257; 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=dunFlv0nuaRd8Cf/ycPQ27x2htRTbREOzws3IBoiZQA=; b=eixaSLf+0f53IYnvElKt98zhZi3kVHNIPbgrLr3VPBDbfvS7/MZt4wVxdULUfmrNRSCm8Vz/tuLkItkX1dgLNpv5DiB3T47klqpzkoefh89xpS2OVp8kRE6gX4PAUfFtLk4gp7AR3AGwQqGwr1vLhIxXst8BrhIpm/NQ4jsCDwI= 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 1783811257634238.02589191713048; Sat, 11 Jul 2026 16:07:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wign8-0005xd-Uo; Sat, 11 Jul 2026 19:07: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 1wign7-0005x3-Ox; Sat, 11 Jul 2026 19:07:25 -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 1wign4-0003m4-V2; Sat, 11 Jul 2026 19:07: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-011.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 23:07:19 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.53:7649] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.31.54:2525] with esmtp (Farcaster) id 5063ba0e-75cb-44b2-a492-ff819cdbefed; Sat, 11 Jul 2026 23:07:18 +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, 11 Jul 2026 23: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, 11 Jul 2026 23: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=1783811242; x=1815347242; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=dunFlv0nuaRd8Cf/ycPQ27x2htRTbREOzws3IBoiZQA=; b=ro2KQ/t7pzEcvBEs6jt7NJHgeFXnhymGJh0bFhcUYHIMXrs87K2tTlRP gOM7mQFZFxNHMIrOkMh5hdc9wjaNqiaa3II3pswwl1ZxSFdmkf3eCGzZk VecPobJddHvZWr9W3Fw0okKTzAa/XNpVzst9UsgCVvGNMGxGFIZqEggDq UnUZ5dMcZsOeYCDKzV/qOIJPODqgeNgsa67Eqqo9/VB/91caIQ29g39Ia JGlWV3oFAhrPQMIVhX+gZw5kPe041jucKTsAgZ/ETZfAN5VDU4VbCfWXt 10rM8BrVpD37cN8stTwdQjf2+NOMQZK6H8uaPZNonvSof5dE9ZV6gBDMR A==; X-CSE-ConnectionGUID: Mwdg2ODHRA6GtbXbKXKQfA== X-CSE-MsgGUID: uR5SPSZjTmWi0DTICob/2w== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23270013" X-Farcaster-Flow-ID: 5063ba0e-75cb-44b2-a492-ff819cdbefed From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 114/134] hw: Give allocated IRQs an owner and name Date: Sat, 11 Jul 2026 22:36:47 +0000 Message-ID: <20260711223707.42139-115-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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.35.192.45; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-011.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783811260433154100 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. Assisted-by: Kiro 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 Sun Jul 12 00:34:17 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=1783811266; cv=none; d=zohomail.com; s=zohoarc; b=Efze237GXnVWVPDQwoaMcVnA7CLHCJxSBlaGfXBHp32n0r1fHVU/dy+FhKsvznmg6xe4e9L+ZUk9nph09Nz56IRHXDOWv5ptqWUo12S/DdTBHwXvWOmNqO7Oknpcj9oxeW4ko0wrBWbyznT3UYAVe9C/TSWOPkrjSQInSDcwTPQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783811266; 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=VyIS3tAqhuM3UisEQfW17suUR3YbifHZz0wMYXIhOJ0=; b=FSngwUjlcg0kAKqsBKLfoZwHCHDRekNMz2ghySaPZtjubaKgEOMlrgBjKe+cD9XVIF3wg86Mh0W0HLxR3qTAitd366lfvR/ZuU2e/K6r8lPEvo+go/ZggFuuJTHBdgZyxLQCX15+iy2RQL8dKpdeNOiKevAV/UWtci84nfWhgu4= 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 1783811266836737.7595665153262; Sat, 11 Jul 2026 16:07:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wignI-00065D-40; Sat, 11 Jul 2026 19:07: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 1wignG-00063q-4n; Sat, 11 Jul 2026 19:07: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 1wignD-0003ne-MX; Sat, 11 Jul 2026 19:07:33 -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; 11 Jul 2026 23:07:27 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.111:20547] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.68:2525] with esmtp (Farcaster) id 63ada6ad-89a4-439d-9d15-1d71f0caea81; Sat, 11 Jul 2026 23:07:27 +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, 11 Jul 2026 23:07:27 +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, 11 Jul 2026 23: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=1783811251; x=1815347251; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=VyIS3tAqhuM3UisEQfW17suUR3YbifHZz0wMYXIhOJ0=; b=FwyYLmHPCTClLnEPaRk0TB5tKLq5Zfpn5IbLT8HHMrGHRVf6TK2wS16R QSMDnLewyjrJ98ZRAl+Zj6i+AdnZ2w4DF/VsQj0C4sc5Ay3CL4Vtyvijt H6mDqWpcPjI6MIhKSYq8UMs00WTUGgUf1MaDIBHsUHi4+0mf+Y/Y6eW+S TfiQNoQ7eWJUIlLT6pTVmUdZuEEUjST9Kox7JfeMzZsrmG3+40I4Rgdmc BtcDPf8yXOI598rNnVQHEkn1IR0tNbVsSLT8JR9yQSLahpL2dJAayUti7 IwQZauB37izbr5wRGVChERi3PO9wHwVL2gzfgfmEnbZ550piP7tVvzo/X A==; X-CSE-ConnectionGUID: e2PWIL11R3mlDcZNDWGbdA== X-CSE-MsgGUID: LFO5E141SIuvWzhtEFjV0Q== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="22997837" X-Farcaster-Flow-ID: 63ada6ad-89a4-439d-9d15-1d71f0caea81 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 115/134] hw/core: Parent GPIO input IRQs and embedded IRQState via QOM Date: Sat, 11 Jul 2026 22:36:48 +0000 Message-ID: <20260711223707.42139-116-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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=44.245.243.92; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783811271128154100 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. Assisted-by: Kiro 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 f7b512eb35..44a44862fd 100644 --- a/hw/core/qdev.c +++ b/hw/core/qdev.c @@ -697,7 +697,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 Sun Jul 12 00:34:17 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=1783811283; cv=none; d=zohomail.com; s=zohoarc; b=E+smYqAlk3z/+TDPEAvd6Hb+yCY6xMgfE6BFIsRPeIXb28iP6P1UsbOEvvZtkGgvFzZKQBnkn/oPdVwg21kcTC8MnApbZY9SUh/Ne1IvrCIdMF1pN+wEw3Hc/n3LcrdLNFxHPL1IMm17cGMl2z+pFB56VvpnDKTGYt+nIoNVGr8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783811283; 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=0t83vrkzVA8QS1Yf+f3mopksiJFjcP4RLaXceTkVB2I=; b=ZbOsxTwR+w6T095oPLjD3GYF631NIw5oektIRVC3qqc0pjxYxLwSr5Jd1BJP1aouMac15aVz53qEuj61HQarcpvHclFeM9eaRqwXwTuakLu8rKDeN3wtgc1dMnlR9fHOEbYnDKV27DKhrAL4MSSH38TqunOXy/Jd1Pm4jFHu+Z0= 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 1783811283575841.4885418726874; Sat, 11 Jul 2026 16:08:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wignQ-0006JK-3Z; Sat, 11 Jul 2026 19:07: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 1wignN-00069t-Qa; Sat, 11 Jul 2026 19:07:41 -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 1wignM-0003rD-0s; Sat, 11 Jul 2026 19:07:41 -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-003.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 23:07:36 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.178:16436] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.26.212:2525] with esmtp (Farcaster) id 749f953e-1a47-49c4-9433-cae2ef12f849; Sat, 11 Jul 2026 23:07: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, 11 Jul 2026 23:07: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, 11 Jul 2026 23:07:27 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783811260; x=1815347260; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=0t83vrkzVA8QS1Yf+f3mopksiJFjcP4RLaXceTkVB2I=; b=cY887D1Aqus0vXDC0Pk7BRJcSymdxKbUgP01n5MAp9Yzvyxy9+ZrEUyK vhqkTFLWXt1bnSnwCHzWHGaumxNX2FexTvBZ4/iAYRLYV9+WgZJMxVP9/ vwCzj4H67oD93lk4eHYsVAFckLAxs3bxWiSEesf/WBhiLuW4bl64sR256 d/NSGVg1IGMRQdp/8gJKQ6IqdIbadK88r4wBZ3ycp9zE4HgbOT0WUW61U t7roA4fZPwztOZBQzHh4cP2Ihx1ii5PLMl4hw52QNbEgLGJxFPnG0OeaM 2IDpamVQCyAX8p+Cp7Tz9u8M9REP06i0tiHwUKg+2ozqlBXsPpbbXrrcX w==; X-CSE-ConnectionGUID: 5u04uP+7TEuOwNHNrVv/tA== X-CSE-MsgGUID: Y0mHu6VwTWCfSVSdDKh0jw== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23517425" X-Farcaster-Flow-ID: 749f953e-1a47-49c4-9433-cae2ef12f849 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 116/134] irq: Delete the *_orphan() IRQ allocation variants Date: Sat, 11 Jul 2026 22:36:49 +0000 Message-ID: <20260711223707.42139-117-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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=44.246.68.102; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-003.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783811286993154100 Content-Type: text/plain; charset="utf-8" Every caller has been converted to the parented form; drop the transitional *_orphan() helpers. Assisted-by: Kiro 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 ee954eaf62..a93c64e6ae 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 Sun Jul 12 00:34:17 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=1783811328; cv=none; d=zohomail.com; s=zohoarc; b=Hx/rfpVFxkStcNVO+ZtVaVnXZQ2miJlUWfXoytpWzvYIjUmI+QKr6+bLR/xib4nkoB2nG0/DSsvIMaVB5wYk8PA+juhoj0G+at8hefRMgdABHvnjTWFAr5bHAto3W2dUyNKoryY/xRdIjSpT5uEyCSaQC6Qgf+VjdI+r3TX8+hA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783811328; 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=tPMmk224u2umsl8me1FiHvbMiJivmP9hfh/70Zj6vFI=; b=dlJKJ2KiQ28EhiSgo83RVn04nWfh0jgMIcZgAP68FOuubr6UL5rBcBX073L6fUOgob0OsMx7ergdjoA/iKITisowoKEGZfjYkR21ntP/ZkifXSb8uTjDRWmhkST9C2wynmWm8YkEUpXflqysB1Wva4xgAnmFZezhNR5Chz48jUo= 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 1783811328787440.0930024895425; Sat, 11 Jul 2026 16:08:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigny-0007Je-6O; Sat, 11 Jul 2026 19: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 1wignt-0007BG-2B; Sat, 11 Jul 2026 19:08: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 1wignq-0003yo-Az; Sat, 11 Jul 2026 19:08: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-013.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 23:08:06 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.51:25963] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.31.54:2525] with esmtp (Farcaster) id 0176f3c0-559c-45c9-948b-39f3e11e643e; Sat, 11 Jul 2026 23:08: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, 11 Jul 2026 23:08: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, 11 Jul 2026 23:07:57 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783811290; x=1815347290; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=tPMmk224u2umsl8me1FiHvbMiJivmP9hfh/70Zj6vFI=; b=jZ6CiOpERBlruOdDJ7AemH3VwwRV9XmiSkqTP7L/8M32j7hxlt4cF9/M zz3uPd7sbE2yzhjtbcFdEstkZtjK25KTxz/uqKkiUfU4Og3DC4cRQkLEO jdNxERSvpTtp0iImJn/cM36AbKdGuOj1DLQch67Vxgx98xa5YzYOtV+kj JwJKBXtlEtV+EyMqfwq/aILBk95a8uyW7M8Z0lZR/W+jH6ELNHpCJR2rS aPRF7GBYC+HJdOwb/27KHtu5gF1BxX+b6SH6tUYMad+9Vra0YTvwd17/9 gWwcB2xTDzzSEVPCBpEPHCbsLzuljIIPuNMtKnqHcoZVqFItxVMf+wnEu Q==; X-CSE-ConnectionGUID: ILu1D4OTQNiaaASA3l3rlg== X-CSE-MsgGUID: VCgiFJwOQjqPkICgdRiK9g== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23296956" X-Farcaster-Flow-ID: 0176f3c0-559c-45c9-948b-39f3e11e643e From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 117/134] sysbus: Parent main-system-bus directly under /machine Date: Sat, 11 Jul 2026 22:36:50 +0000 Message-ID: <20260711223707.42139-118-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D044UWB002.ant.amazon.com (10.13.139.188) 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=645f258d4=graf@amazon.de; helo=pdx-out-013.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783811329325154100 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. Assisted-by: Kiro 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 Sun Jul 12 00:34:17 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=1783811313; cv=none; d=zohomail.com; s=zohoarc; b=FZBAz5Um5oNgzqGX6r5ZqiCrENHIsy6abR55cseS8o4xYywEkwLvCLmHggWG/S6Qo+JUhmNNagzyc37/pbHRgLRHPv7qz2Zg0GY8l8TaWhU38fmJrT1/Dv0qXwjvoHVUDBcQTsOjV1iObpATvNqcqD+FlwUt9mh6JvtqsLZxYHY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783811313; 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=i/Hf/CC9n0E6uWWRloIhxXYo3/PHlHdMS6c+m1UmphE=; b=U5z5okWRENxy9yEbTC4Fv73bGlVNY2gEXsgQcv2xbxFKQwhN9W0jYBDDvpDAuxPlcGa+tsJPuHgygc6xcPEVAV+9wE2qHZK3ndjZCPbXw2yVN4aLP1N0YsStJfhttu3okd1ADZULuvgw+KHVrdwxGhWGX2TFhSsAg1m+4lOcAL4= 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 1783811313576871.6781961882779; Sat, 11 Jul 2026 16:08:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigoB-0007V5-CZ; Sat, 11 Jul 2026 19:08: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 1wigo1-0007OD-6N; Sat, 11 Jul 2026 19:08:21 -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 1wignx-00040w-Sd; Sat, 11 Jul 2026 19:08:20 -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; 11 Jul 2026 23:08:14 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.111:16608] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.31.54:2525] with esmtp (Farcaster) id 0bb4526d-b27c-4c11-afaa-8f6891211b52; Sat, 11 Jul 2026 23:08:14 +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, 11 Jul 2026 23:08: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, 11 Jul 2026 23:08:05 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783811297; x=1815347297; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=i/Hf/CC9n0E6uWWRloIhxXYo3/PHlHdMS6c+m1UmphE=; b=pIgpMdOd5zwIiwnvodRBl11CpGpI9CE6Tz3lKuTuJ5/31BqBpbWig8Q6 ZPLvezAKgKXeVHplTzMtvjBGcPNozxHJBfHy5b8nBfAh7OUmob3r+/VJ2 3GV7yKGtiqskfG9ZAmrF/0ddbawBnIqv/EgARGSaPS4Q7r/swW/Iru5OF dmZn7HNRQAmS9RJM7XORu2XyIqG/CXSVZxAD3O2BnCAt+MgoPymrKg0r4 kWdvI7on/PJ+yiE/GKPnDBaBAGXsNCFyseo/qM9sUVd9v2nuxf8we3HWq Vcx/q9sUrOD8AhszgNi9M9YlYWcboIGNKadx3EY+bQRejm9DLMNI3DFKE Q==; X-CSE-ConnectionGUID: zyMz+3qfQKq9jVsUr9v0Vg== X-CSE-MsgGUID: gB76WvxdS7q26FgZ8F47qQ== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23390775" X-Farcaster-Flow-ID: 0bb4526d-b27c-4c11-afaa-8f6891211b52 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 118/134] accel: Parent the accelerator singleton under /machine Date: Sat, 11 Jul 2026 22:36:51 +0000 Message-ID: <20260711223707.42139-119-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D044UWB002.ant.amazon.com (10.13.139.188) 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=645f258d4=graf@amazon.de; helo=pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783811315173154100 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. Assisted-by: Kiro 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 Sun Jul 12 00:34:17 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=1783811341; cv=none; d=zohomail.com; s=zohoarc; b=hXeV8cNX10H/dT3pmC+6ba4j5KrqBOb2SUvA4t82o+OaP7t85tjZVIcEx2/vbNHgVaZ5RU4eB3HQs8Oo+ZsgdBOgb8881s5ELrLPGuA/4nSgiNzPuM99tApU8DTKOZPkC4BSs8NBJThYVCzfhIrQyUmOlYmKg24TM9h4FCdQZjU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783811341; 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=Z9jEjZXxPXlMJqbiHIRBDdPowd0FRoDuIoH9/d4zUSc=; b=cgRn2iNrpsK5JppskcqqaNaF6tlwWCRPeVnn2yiDfOJmXDxY3t/aI/SvqQRjmH+uKTP+ze/YA4vKCK2dVszwvo8T9Zz7KyMxkpWMUMdfPe3FyEHngWn2E2A7qBhD8vJZ/0h7XtmSpqwI40ndtRp0Z0b9QszD7DTUnEdOV/gVGOA= 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 1783811341343265.08063871480886; Sat, 11 Jul 2026 16:09:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigoE-0007iD-C4; Sat, 11 Jul 2026 19:08: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 1wigo8-0007SE-Cj; Sat, 11 Jul 2026 19:08: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 1wigo6-00043Q-K9; Sat, 11 Jul 2026 19:08:28 -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; 11 Jul 2026 23:08:23 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.236:8809] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.115:2525] with esmtp (Farcaster) id 04fffb0f-cf34-4624-a838-41849e58edce; Sat, 11 Jul 2026 23:08:22 +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, 11 Jul 2026 23:08:22 +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, 11 Jul 2026 23:08:13 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783811306; x=1815347306; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Z9jEjZXxPXlMJqbiHIRBDdPowd0FRoDuIoH9/d4zUSc=; b=XCuquQOiTrbrU5LLYEObM2TtvrgHqR7wuT5OAMYrJMablcFtBcxC5z4z A9Xzdlre1Ja7pmHL6mVLeXlRA1pMaANbv4tBgYwgbtVKNcULuievnUJ6r iNUQPZlTawzglsMCVSMGMEQ9bxARuu8RuXzirHyOLhdbRqqAmLjmm798L BsnUpdpHlhQpinLcOWIOOk6GgkHzr9YmmqHTJGDZp3zRBBZalwJs6O4AH hh22wj36qGnkTD3pLWuMkR+Zpr1uHvqa0EklozDznhqILsHF4afAq3/LE 1woEXRF8If48s7wxHUT1tFY5GwywnJ7w07T8gxBfoVKygbF0GqytMv9DH A==; X-CSE-ConnectionGUID: xEw6ybjpR9ScqvbkC6e2Bw== X-CSE-MsgGUID: B1bQ1VuZQimt/IgX0fVpjg== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23518195" X-Farcaster-Flow-ID: 04fffb0f-cf34-4624-a838-41849e58edce From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 119/134] hw/core/reset: Give the root reset container and legacy shims a QOM path Date: Sat, 11 Jul 2026 22:36:52 +0000 Message-ID: <20260711223707.42139-120-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D044UWB002.ant.amazon.com (10.13.139.188) 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=645f258d4=graf@amazon.de; helo=pdx-out-008.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783811343953154100 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. Assisted-by: Kiro 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 Sun Jul 12 00:34:17 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=1783811383; cv=none; d=zohomail.com; s=zohoarc; b=ACD/dsLvaGifGdxynWHwBr3lU/cnLcK9SBooX2FEAVO1fzdXkYqqJZYthTfzPv2xhTtQOu2zuReYMgiv3kWMrSTKihCSX+JUE9wOj0SwcXlWN4o2i7sbOY2Rqj4FUgfwLyeY8pxKzu/AH/wcd4WCF/aQQUKx2kDwOoCO4+qQiMo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783811383; 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=RjzyzstKMqEdpWpECl8E1JcahBO6m41j6mbqUJjb658=; b=F47Dfo2VCTWMz5a5Kd7g4Ly+mxxFMaXSDvFBh8bqvTCVIcy3Jz8dBiIs+rBjwBSVyXFDR4fflNok982NncTPhQvQ7HfSDt9qCtGB9pQVHp0j8hmdc8fkiWzuolPHKtJE6QDCd90YJs9qzalRdAzn7BtF4uYqA43UDlqr53vRyRg= 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 1783811383736592.8808313789938; Sat, 11 Jul 2026 16:09:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigop-0000LO-Fw; Sat, 11 Jul 2026 19:09: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 1wigof-00008h-2M; Sat, 11 Jul 2026 19:09: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 1wigob-00047n-2S; Sat, 11 Jul 2026 19:09:00 -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; 11 Jul 2026 23:08:53 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.53:7144] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.11.68:2525] with esmtp (Farcaster) id b70aa7fb-e9b8-4175-b273-0d4dd83d31cc; Sat, 11 Jul 2026 23:08:52 +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, 11 Jul 2026 23:08: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, 11 Jul 2026 23:08:44 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783811337; x=1815347337; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=RjzyzstKMqEdpWpECl8E1JcahBO6m41j6mbqUJjb658=; b=h0Kt1uI3I3XTOf6ZragpUP2VlZc8BpzRxINLQYvuck/pDscy0JVJUJrO gyH5n+t3iRL2MYuXQjH8t/a3fS8w7serfKY3SNxB71asodQYpteDk9YmS b+KPF+JlSzuQYQhxKtUYeAfWTRmMKkBVspOL0T35lES1dLvsoVKWfYSlL 5vO8fvAWdGJS2KngGNM9ityr6fXKzMWqTUmMF0giZtL74VGecvfp1RvCN pdKdKWVG+1jrFbBNdOzDUawXRrZaWshS3S3M7H6sQgezb0YADcs+plbWO wR0VIaApZvlq2yLDslZ/DJwhiN1l9Or0Pm+A3UOTr757rggtbxCtgyV7T Q==; X-CSE-ConnectionGUID: 4V/jQ0cnRo2wHIvGpDl6aA== X-CSE-MsgGUID: Y1BgZRbrRamvEsi+WCujQQ== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="22997855" X-Farcaster-Flow-ID: b70aa7fb-e9b8-4175-b273-0d4dd83d31cc From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 120/134] system: Parent per-MR helper objects under their owner Date: Sat, 11 Jul 2026 22:36:53 +0000 Message-ID: <20260711223707.42139-121-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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=645f258d4=graf@amazon.de; helo=pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783811386109154100 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. Assisted-by: Kiro 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 Sun Jul 12 00:34:17 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=1783811383; cv=none; d=zohomail.com; s=zohoarc; b=ACmgbzHHquZTMlcB483JNRbKxom5tInMPFGmJG/qJZIAAMP47ZJUYbGumDHtFhS2DoKGzaqRYUu7XlzGUt5Xgd1WLsHuLLsUFxB7AjprLtWobk+2yP7Ia5rrSJAF5EAn9t0dk1bDFL5yrZbuDHQ27kTFlP9qlJEvpjG45upli9s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783811383; 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=GIL96UyQtBVIB1r1hD+L4Cn+I39BgAu4iHGMWcwNSoQ=; b=iYI8x1KfgH3Fikp1Gzai3KIgM5RemLLsOWCvlJmkPY2qLWkMt8KGUVgQcXN4zVyKrqZRqJ9gVyVURDMvNgkAJalygarDnzjY68kj4iyhd8QobNgDdRtdOOD6a6MvFZGz170g5ayM2uAoEpm6yFWxITUHTMDg5iM9mMncaaWVPeY= 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 1783811383669930.8229626508722; Sat, 11 Jul 2026 16:09:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigom-0000Hs-5b; Sat, 11 Jul 2026 19:09: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 1wigol-0000HL-3E; Sat, 11 Jul 2026 19:09:07 -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 1wigoj-00049K-B0; Sat, 11 Jul 2026 19:09:06 -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; 11 Jul 2026 23:09:01 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.111:23347] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.58.33:2525] with esmtp (Farcaster) id fb0c46c6-1d83-4629-93f6-5a4fa9d78f8e; Sat, 11 Jul 2026 23:09:01 +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, 11 Jul 2026 23:09: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, 11 Jul 2026 23:08:52 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783811345; x=1815347345; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=GIL96UyQtBVIB1r1hD+L4Cn+I39BgAu4iHGMWcwNSoQ=; b=IUt3ye2jrqBfY6fCEK0CdvlX0//8Wui8j8t9Tqs8m7KDZYyAM/TEu0XQ 3HjKfQNAePrRniKqeRnFf8+V0UexRfvhEEqHI9YusOWugjopSN35ftq19 VEW7HJTN0fb6LkaVXzMVQso5qGvje0vNRT5JosJ0oouAessetu3X5sj2P xrEApNwHZe7UxXRRlIDD6zD05rq/PFsHB84tnR71RgCs351TyepwFSJkB 0CaoINVckAXB+uWkY8z+uGHiLokheTVOtjJ72KYQj9U7nzfc5ZS4L2+Xs 6X0j7Uo2T5tsDp1ZrcODkAoKxvZCrB7QYguefToB983Rcy2/zOZ/USXiH A==; X-CSE-ConnectionGUID: xTrF3l9fSzq2TY/Tc+j0Aw== X-CSE-MsgGUID: h4dqCtBqSRy9hLBAkuUjQg== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23296966" X-Farcaster-Flow-ID: fb0c46c6-1d83-4629-93f6-5a4fa9d78f8e From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 121/134] hw/virtio, hw/display: Parent per-device helper objects Date: Sat, 11 Jul 2026 22:36:54 +0000 Message-ID: <20260711223707.42139-122-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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=34.218.115.239; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-013.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783811386109154101 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. Assisted-by: Kiro 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 Sun Jul 12 00:34:17 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=1783811377; cv=none; d=zohomail.com; s=zohoarc; b=mmCTcA9lBk3muxxfOsoOB4+UiQEU1STD/X6clIIgAdUskFjOi+EJVEma53649PTmIAEkuhmZ4BrTriVaEy3tGDmO96NyvLIwTVaXV4MGAndSrd0Z0/GJyEn0iCwBYxarLctHKC4VJNAFBZralhfDfo8xw0Z/YfVNw4LiPkz6mc0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783811377; 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=58vuEDPWBKeVxQ+J6iDweV7dM3CK5c5aTeYxd9agUu8=; b=KB/439iGFf2eUdLz0el8MTlaOYhJHic1Zgs9Oaso4LVGomMp+lqk/7bfU/xHpUMUJxgR2wjm6nuioeQ8v0BTb77raae2L5lsYSB8PZmQqpsRrwtUgFmd7KDrAnex/1YgmVFfvEhrYYpE6SissXtINagV3m/ux7dyAZ/yRmFKiqI= 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 1783811377820864.9994830044918; Sat, 11 Jul 2026 16:09:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigov-0000ar-MB; Sat, 11 Jul 2026 19:09: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 1wigou-0000V5-An; Sat, 11 Jul 2026 19:09:16 -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 1wigos-0004Ck-B0; Sat, 11 Jul 2026 19:09:16 -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; 11 Jul 2026 23:09:10 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.178:17227] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.26.212:2525] with esmtp (Farcaster) id 97d868e9-9a29-44c2-9832-a89ef0a585d0; Sat, 11 Jul 2026 23:09:10 +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, 11 Jul 2026 23: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, 11 Jul 2026 23:09:01 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783811354; x=1815347354; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=58vuEDPWBKeVxQ+J6iDweV7dM3CK5c5aTeYxd9agUu8=; b=a72pp/4igNW3weucaIV/93T7FqDct6apSzpdUri6DVZqNagV1CdsyD/O YJP5pKJlCCxzRVJTtoz9romzapBn5tunwzKvyUFg65b+orcosQsvre8+r JZsPdPQ2WVGgqZy306A4r0rRCHdvN8w3dFh0arpQ0DyzhMShQc2o1cGbd /lgLQxjP2yMaEr7cirKs8X5FRhCranwmMvGHRItKgosc83HYfhfVh5QnL VI1mQj5E/M4pdqsyV0KPXXGwrJz5YhmQDfMO9x71KKnPdS7NZusGF8hUS TPQDTLNGtM+Doo9KZChi5DScTnZlqfL4QeBRtUZhZEX3CA2o3zYeutCd5 g==; X-CSE-ConnectionGUID: nmXXdLb6Sw6HHVzIQV9dOQ== X-CSE-MsgGUID: EdW55aA4QoqwLoho2ZfuAw== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23479768" X-Farcaster-Flow-ID: 97d868e9-9a29-44c2-9832-a89ef0a585d0 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 122/134] hw/i386/amd_iommu: Parent internally-created AMDVI-PCI under the IOMMU Date: Sat, 11 Jul 2026 22:36:55 +0000 Message-ID: <20260711223707.42139-123-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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=52.13.214.179; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-005.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783811380099154100 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. Assisted-by: Kiro 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 Sun Jul 12 00:34:17 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=1783811395; cv=none; d=zohomail.com; s=zohoarc; b=SDV2q+GLLN6I/eOluiP1T/osT5ta2bW1/gQ9Vdr1xiUnPsTTW4tQ0Z+KQzC++Og75A6unpD49ZvjtuN1kuXGye4r+thfmMW5YIBxom8oG7lmIUjfx6P0zgnu37pslaMrxeazxPtRdm7Pk7MlgcfxD+VRuJn0BxIkhDfejec4qow= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783811395; 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=x8e6PZxUhb790ARPbhW5JeHe4VOlr3birYehijCm6Kg=; b=E4AiCGr39GXDPpgLaIXuZVxLGyziEfH4YCHz+DE/Be1Q6C32yfolgt/IFPUrumrEFViLV9v1U/WJtux2f4w9clL6sLad6o6khps99hjtzIcb+FHWnYiTD901EC48HK3oWLj/u6iuPZ7uaJlTmnAdyfChbPhJts7ZWgeSUQMaZMU= 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 1783811395714254.17176012045582; Sat, 11 Jul 2026 16:09:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigpS-0001tF-Ax; Sat, 11 Jul 2026 19:09: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 1wigpO-0001my-4d; Sat, 11 Jul 2026 19:09:46 -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 1wigpM-0004J1-EU; Sat, 11 Jul 2026 19:09: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-014.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 23:09:40 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.51:23993] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.42.69:2525] with esmtp (Farcaster) id 7ec8e06f-56ca-4e7f-b9b6-b85acefa29be; Sat, 11 Jul 2026 23:09:40 +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, 11 Jul 2026 23:09: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, 11 Jul 2026 23:09:31 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783811384; x=1815347384; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=x8e6PZxUhb790ARPbhW5JeHe4VOlr3birYehijCm6Kg=; b=YtqVAwxVkDyZdAjYLFeEuiyuuJljhej0uhW1cW6ss4s82hPtM3xRGudG rePEEuSyxqRqJrFPo2RU5/eTORh31cKRL9toJUzDqH+dhTFkbfAZ4DlMP b31t9fiHxETSn9rgGW9zQoPkbJedJ3rAIM6Ur1lKb6kOti6gMF5GKk45h yLMskrfkgein1hst2vKTXwaCOmFAbROYlvH5n2Rav8XdaN4F6QjftK3qy iA2FRvn4tHQxJdUZIEyz2CqMrYSawL1pqwN//UoXjyV5F8Y6igpd6h3qM f1QaGlMJP6g06UKLbtGohr/ENYDuFcSwQJY49q1QJvcXtOg3jfhHcTMb7 w==; X-CSE-ConnectionGUID: 1tb6duz1TSOzpqyKN/esAw== X-CSE-MsgGUID: YFqcqexnR9CUypRdueR7zg== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23287941" X-Farcaster-Flow-ID: 7ec8e06f-56ca-4e7f-b9b6-b85acefa29be From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 123/134] hw/s390x, hw/remote: Parent per-devfn IOMMU objects Date: Sat, 11 Jul 2026 22:36:56 +0000 Message-ID: <20260711223707.42139-124-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D036UWC004.ant.amazon.com (10.13.139.205) 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=645f258d4=graf@amazon.de; helo=pdx-out-014.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783811398558154100 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. Assisted-by: Kiro Signed-off-by: Alexander Graf --- hw/remote/iommu.c | 5 +++-- hw/s390x/s390-pci-bus.c | 8 +++++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/hw/remote/iommu.c b/hw/remote/iommu.c index 3e0758a21e..09f79e805c 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 diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c index 4f0a8a787b..557ecbb977 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), --=20 2.47.1 From nobody Sun Jul 12 00:34:17 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=1783811411; cv=none; d=zohomail.com; s=zohoarc; b=IDUfRQicOjnguqp8H/POiigV0QL3YBQUg1o2slBMbTsSahlNPjy9/z+v02QIzcKnovm9wUDhHvU+dcx/+JedCQQ7ZewS3vpqlU0SL82Jze8phCL4Zqrr5mpgV7qQzB+q2oodgBaMXqJbMVgtzpAgRNTjzHTQwPqtQ7HCDGJnWKw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783811411; 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=fHGsPVV0B0WO2Mchr4tIwF5O2PQNV6laVFuiQSauNi0=; b=FzWh3V/BBQxg/fEC8u4ANIq/B+fTopTyEc6k0jCHy3CD2w7bxWWAB1xGEDODc1t4QKIQO+n8jRrw93sJU7fE05AygMjOWPhMaXAp/4a6hfZ8y5OdJGJQYLtD/5hulCPsl446Jl6ewxLz7KA2wIfd2mrgH410F1W0uhRzY3CxkmM= 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 1783811411948464.49101728610447; Sat, 11 Jul 2026 16:10:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigph-0002DT-6e; Sat, 11 Jul 2026 19:10: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 1wigpW-00020X-2N; Sat, 11 Jul 2026 19:09: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 1wigpU-0004Lc-H0; Sat, 11 Jul 2026 19:09: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-006.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 23:09:49 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.111:2294] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.51.175:2525] with esmtp (Farcaster) id e48566ce-d564-432f-bd86-9e3968de8b25; Sat, 11 Jul 2026 23:09: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, 11 Jul 2026 23:09: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, 11 Jul 2026 23:09:39 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783811392; x=1815347392; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=fHGsPVV0B0WO2Mchr4tIwF5O2PQNV6laVFuiQSauNi0=; b=k8E2QLvfjLYG1ZM3RLaPRCEwuO1wYgLqY52fHOjCujp8lAxmUC6SiITH bYEh56Ybh1SjfU+UMaPlOiRVeBCWvwn7MtPu+RoCmylFzuBXMIWHhX1S2 pCpvQUlGQHhW/LxCdj+Ot0szMdkTDmzxyCVOajeVCT358dG1I9XrsozWe vSLUDKL44thUe+M05sztE461EiBaYiVuGSg2cEpOF/HbtZsKq8yQeioyj JnMF/uNhH9FQ3YPDypPzUrg6UEGh6Be4YfTrlAVjHTIkpkolXQzuMEexB olZ7eJBMRZ/tEqRaaCicQD7bn7XqlNE74w0AWkOgGfrP+ofrZliknKjDc g==; X-CSE-ConnectionGUID: 8PS/0eKZRnyX2b2XpSIrdQ== X-CSE-MsgGUID: PXp+SCAcTAKihfV/koFj7g== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23522621" X-Farcaster-Flow-ID: e48566ce-d564-432f-bd86-9e3968de8b25 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 124/134] hw/pci-host/raven: Parent the OR-IRQ under the host bridge Date: Sat, 11 Jul 2026 22:36:57 +0000 Message-ID: <20260711223707.42139-125-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D036UWC004.ant.amazon.com (10.13.139.205) 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=645f258d4=graf@amazon.de; helo=pdx-out-006.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783811414745154100 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. Assisted-by: Kiro 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 Sun Jul 12 00:34:17 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=1783811428; cv=none; d=zohomail.com; s=zohoarc; b=T3UAqe8/6DN9uMOWYXCfHVzxfh+LHLwmPjpe44GAcNH3GdBpgiP8nysbDTA+4ql4sPCrT3u28T3aExybVIAqRpJi7BljXFoU4xzt0BLhcvciLSOb0ZPXvXhMe5RPESq78dipVRIhTg8RS9XFs0PSsfMgCuPgO4AGyD/ObAywXLY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783811428; 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=PCLiHy2ikf9kRMhXikNxxqklGGiobt+RYZp6/ywkvrY=; b=JR6V2xkaK4N9ku2h97r3kdlY+vuRuzVrOdUM80pqDa5/HB0iWnBL2xJLwP3anvBSUpAaZGOtGyfPK+1cdXROIFTDdg+/dXHHC4C+SUx1jo59ZiW9NzDlRtJ0P9xgd9HsdD3FClm2PDJli5Ll91tNP0iZjkSxaOH4a0vjAVyPDVg= 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 1783811428200540.8629370059381; Sat, 11 Jul 2026 16:10:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigpq-0002Yp-Rx; Sat, 11 Jul 2026 19:10: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 1wigpf-0002Fp-1e; Sat, 11 Jul 2026 19:10:04 -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 1wigpd-0004N4-9B; Sat, 11 Jul 2026 19:10:02 -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; 11 Jul 2026 23:09:57 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.178:28049] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.58.33:2525] with esmtp (Farcaster) id f64789d4-9c06-4ff1-99e4-b6cb0505e4f7; Sat, 11 Jul 2026 23:09:57 +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, 11 Jul 2026 23:09: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, 11 Jul 2026 23:09:48 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783811401; x=1815347401; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=PCLiHy2ikf9kRMhXikNxxqklGGiobt+RYZp6/ywkvrY=; b=HFfXUSBBKEgCwJOZ3KOCBjkhF9855RcRIB9BqPaC53zYixaSzoDRe+pM eDLIjCkF/4vGkvWWgV8vzYH8qWt+jcG7b7PYGq3YauZ3/irX8scGh6Rv4 jepx/j3sJoJmkwGuortBjeUsOSKXbiXzXT5OJgtdMlRpJhMIaZ5iQ5idH qh/GH28/g2wr+JgOdEh7zPLBXl9tQ9yRilKO5g5QbTJXG/vHB638+P6Cx LAdA9HH25WIbtXTnI+WQE1OGbI1C3r2s4GOplNRezaZ7SY0xoUSDV0I5G OnCl+xoVA/j4FXmE0ARCirUJFwtjLMbOFmXIray7B+M1N2nTxyJQ16L0d Q==; X-CSE-ConnectionGUID: k60gy1S8Tda0ViQDo61fAA== X-CSE-MsgGUID: 8w+Ae/Q+QAug0SSur9PzGw== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23296968" X-Farcaster-Flow-ID: f64789d4-9c06-4ff1-99e4-b6cb0505e4f7 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 125/134] hw/arm/mps2: Parent the OR-IRQ gates under the machine Date: Sat, 11 Jul 2026 22:36:58 +0000 Message-ID: <20260711223707.42139-126-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D036UWC004.ant.amazon.com (10.13.139.205) 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=645f258d4=graf@amazon.de; helo=pdx-out-013.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783811431194154100 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. Assisted-by: Kiro 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 Sun Jul 12 00:34:17 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=1783811454; cv=none; d=zohomail.com; s=zohoarc; b=nCW9nfO6BhAD4Rl6VQU9zmyvoCy4jSZGKV48iWJc2mGIkTCtMFXal3qZVGvYpRX/gNgptF9/+fYYpXcTv/irqL7r9By6NAbvQuNqV/EY1v7jryygjK8evzm3GzQd9ToGrI6vusFqBGeK1LY2cvFLHzMdQjqJEn2ABORwZb98+vc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783811454; 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=oAsTJm8UePllS+N3B1DT86A+5/4rIAv8xkaDDvGLiWo=; b=iQK/eRAUvETq4n7N0UMniIdNKVS85tKO2dCw9sX4sdkQpJmsnoB5Ea89s8DpcIAr5MBxSBUl3jbD+G//NTu+yP9duyC6+7IdL1ZCQsnf6L7NsQk/vugUR6sBVX2C/bAZFP69gI2yyeGrGHg/8jRn7KeVwmAyrAcwrCAjvTDDb0k= 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 1783811454938816.8023490376235; Sat, 11 Jul 2026 16:10:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigqG-0003mY-7K; Sat, 11 Jul 2026 19:10:42 -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 1wigqB-0003lq-8e; Sat, 11 Jul 2026 19:10:35 -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 1wigq7-0004ia-S1; Sat, 11 Jul 2026 19:10:34 -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; 11 Jul 2026 23:10:27 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.51:20036] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.26.212:2525] with esmtp (Farcaster) id 6ee212c7-23a7-4427-9277-35f30099ae79; Sat, 11 Jul 2026 23:10:27 +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, 11 Jul 2026 23:10:27 +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, 11 Jul 2026 23:10:18 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783811431; x=1815347431; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=oAsTJm8UePllS+N3B1DT86A+5/4rIAv8xkaDDvGLiWo=; b=sXMzt1AQSnJCtDjhbpU/lx1fgiYe3kM2Jp8JxyrRpm+xKaxXNDKfHiyS PSo7HlYo6Mj+joJvJk0MtinSwFTV5F7YK6hc/b8Q3XCTreR2cB7Mu8faN ifAIF4yj9OGqSYhU0YUB+IjY/k/NPTMNfg3VGmrOxY7IZRLglfc/Ciuoj wOgmHJUOlgeYEy3/tQ5BUZqOwW7erU78PRy2NCbmrlDLou1fnqba8KLjz KwvJL758S7Wa0V9a2HBozA8It3n5s4UKFVZM94QiJaNPWKRRWCs6NSYSm k66mG65n7AtosB1itilZo0g8dzpb8ww83cyX2Us8iODaVcf1gG205qOXv g==; X-CSE-ConnectionGUID: kpVH7fgiQOq7TiazCDKBHQ== X-CSE-MsgGUID: iILQwvX+SG+AXb7FylCt5A== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23506063" X-Farcaster-Flow-ID: 6ee212c7-23a7-4427-9277-35f30099ae79 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 126/134] hw/arm/digic: Parent the DIGIC SoC under the machine Date: Sat, 11 Jul 2026 22:36:59 +0000 Message-ID: <20260711223707.42139-127-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D044UWB002.ant.amazon.com (10.13.139.188) 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=645f258d4=graf@amazon.de; helo=pdx-out-002.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783811459134154100 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. Assisted-by: Kiro 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 Sun Jul 12 00:34:17 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=1783811477; cv=none; d=zohomail.com; s=zohoarc; b=nqgRCIbnSCddUpLHz9cx0LAPlZUT927CA0BcNNi6EBBrgyERVvucF5QD0SEo+Yus0JvPwVan+012/i0ukb3LroZqpEWGdKCVdEGnVVOVHiOvqFiXyD6FzAaLlak5iInFimAXXwqVzuiBjgHSa0ZXLmoZSIqN4seuuJ2Yah9g594= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783811477; 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=TbZxnvlCgqxRYbSkjD7PiKw4zwtBC/AGap9WXjlv7fc=; b=bGhq7XldAgUDkMIz4PQts5MZlhNN7Ad+tv+Dao+1eZqVNkDYz3dA1yg8siU/BpA1eqpQ4CyW4B6RSLaqACTWAD4L3vMhpcKKzrPNS0w9qQXlPobRULt85OlWYJp20LgolxHqQJfLITGqRI7odqjq5HyPXdPIHBeS5cStbJFtask= 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 1783811477517432.9098465117439; Sat, 11 Jul 2026 16:11:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigqT-0003ro-B4; Sat, 11 Jul 2026 19:10: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 1wigqJ-0003p4-0n; Sat, 11 Jul 2026 19:10: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 1wigqF-0004k2-Iy; Sat, 11 Jul 2026 19:10:41 -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; 11 Jul 2026 23:10:36 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.111:4383] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.42.69:2525] with esmtp (Farcaster) id a19a5bb4-8115-4bef-ad77-f89fe96dee66; Sat, 11 Jul 2026 23:10:36 +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, 11 Jul 2026 23:10: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, 11 Jul 2026 23:10:27 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783811439; x=1815347439; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=TbZxnvlCgqxRYbSkjD7PiKw4zwtBC/AGap9WXjlv7fc=; b=RgAx2SN/P0w94yf0G1ySDTwUtI9xuGRPZ7utcQEVA7eWppvsL1LwSQTe JNDNPHYLSJVWncG0Y+8+1vhFdn1r0M71WUBklLfBk0SYaCseJ++7BT2ie heeNrilDiNFP//pzWOqB+4J1g64LRxAK2YL0kvQ4XijJjXle2ysiQilCN gcuzN3GsB2PfWPdb7tyxNP6jfnTWmdLWtypCukKfnz4lbgJaaTisEcih+ Xwf2GZ20jOIA3Cla9wT3A7hyOV3HTYVkZFcFYRvEG3wPPS+FPJ8ffEUXg kwggE/lpOZ7SPsLfaQ3M+eYTZbL2OoiaaYVIz5Ee0QwSbm83f0RCO6uLK A==; X-CSE-ConnectionGUID: WpYrxjzTR7u+9OBIRIisvw== X-CSE-MsgGUID: 4CZpgdhRS7eavosU1qdfEA== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23479783" X-Farcaster-Flow-ID: a19a5bb4-8115-4bef-ad77-f89fe96dee66 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 127/134] hw/microblaze: Parent the CPU under the machine Date: Sat, 11 Jul 2026 22:37:00 +0000 Message-ID: <20260711223707.42139-128-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D044UWB002.ant.amazon.com (10.13.139.188) 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=645f258d4=graf@amazon.de; helo=pdx-out-005.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783811479455154100 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. Assisted-by: Kiro 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 Sun Jul 12 00:34:17 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=1783811473; cv=none; d=zohomail.com; s=zohoarc; b=RIfZU2ilLK2zrr+6mHupAgCtn262qE4iZfk3aNIPzWTw1yOZoCs+PwE0zRy9MMun/7zEvKsuo94W9KweIP+ncvmgfvYxZhdX2yq/nQ2plM2uy3L7LL2Xx/k4bu/z3n04kiBsl1qp14/QxCIXyTzV2mulPkt2V0N5yT4F0I8W7F8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783811473; 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=TuoK8joFsumPRX8AvA+Aa0Su2W6xDI9ickcaSwYLvB0=; b=fjyY5CoDL9Wj/3m5lc6BZ9byy2uc613LBr4jtiPg6r5EOv01jBgd+dkUpaCGXpSC+wYeo6zsZgYPe/US2T+KD048WA8yd7PPR8/BEYe+nJN1KznY6l2XxXKcgYphoyApU6LtwKI2F/lpbXqFKbofITMF6+5Cmn6F0wFLAJZ0K4c= 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 1783811473463431.4432595541938; Sat, 11 Jul 2026 16:11:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigqc-00040v-S1; Sat, 11 Jul 2026 19:11: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 1wigqX-0003yT-4T; Sat, 11 Jul 2026 19: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 1wigqV-0004lQ-1a; Sat, 11 Jul 2026 19:10:56 -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; 11 Jul 2026 23:10:44 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.182:28747] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.51.175:2525] with esmtp (Farcaster) id c08d5f57-41d1-4356-ae13-171f8b05d161; Sat, 11 Jul 2026 23:10:44 +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, 11 Jul 2026 23:10: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, 11 Jul 2026 23:10:35 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783811455; x=1815347455; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=TuoK8joFsumPRX8AvA+Aa0Su2W6xDI9ickcaSwYLvB0=; b=ABG7+jPLe6hSkwmGClQ9KXkkhEGL+Ogy3rUl4KLYLrRp/GIQ4FrT6e4A ByjSR0MZDN8KLwdgBSubVKsX9m1rV1bpoKuA2+TaBg2y8RkzHwg3DCC0N knT1VbwnT6SsV3+MDqo5G6NmeLYQ+fUjQUIM0TBhoySXi59AjknBWcRFa sqYRa65wzxaLTb6BnnElRqKSdzqb6TInD+bAjBSgfRwnpeyCvUOHda8uN hhJyyKPKoTkgrl4k7gwRh9901KfGaWhD14XDpzP/ERd6MUqwbkS0r+jhJ UgeP5Rl4IiVQTel6nPI1Ex9qPAOoM/dfITxyjH5b3xPIOQc4GZpCTclv8 w==; X-CSE-ConnectionGUID: HuE6SchkQqCyxAwy7oFAdA== X-CSE-MsgGUID: uGyLGB/ARLOJShSVLLvzmA== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="22997878" X-Farcaster-Flow-ID: c08d5f57-41d1-4356-ae13-171f8b05d161 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 128/134] hw: Pair object_initialize_child() with plain realize() Date: Sat, 11 Jul 2026 22:37:01 +0000 Message-ID: <20260711223707.42139-129-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D044UWB002.ant.amazon.com (10.13.139.188) 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=645f258d4=graf@amazon.de; helo=pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783811475847154100 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. Assisted-by: Kiro 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 81c27c8f52..c7daf2c7ba 100644 --- a/hw/display/sm501.c +++ b/hw/display/sm501.c @@ -2045,7 +2045,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 Sun Jul 12 00:34:17 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=1783811502; cv=none; d=zohomail.com; s=zohoarc; b=HJsSCUU9oUkK45OU7aRHZAOI4L6RKszNhu3YpOpQ004qa79b5sEILpyTP5/v/ksc9YuvhjVcymKzD9bc8TLICV+2HNCk/F+JpDR5QfOCo0rOOO1GJRU/hEcgfF7Qg2FA5U0N1l5mHyyOlVHDYRNDVPquBlIk9Q2lZCDy4dNPxx4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783811502; 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=pDDCIg5+J6t1aKjwBKaum3v23g0Lhipp3/n7uMQNZGw=; b=kHoBl0GfEV8MM7lwIsiiqGko7tnyNfTD7/Spp/j4eMfDWC6Sbdtun3sJBuUa7+2srU61N+6uE+aY4Xsen73qxrDpRCKSHgri8ku4h48FdTJChPgvJBTDG68XVy7v/ANVVmVvaeuQZl15lp5bMKCYZ/+PFEsyOV/Zd475p58YOfw= 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 1783811502829893.1214014947839; Sat, 11 Jul 2026 16: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 1wigrB-0004wv-5o; Sat, 11 Jul 2026 19:11:37 -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 1wigr3-0004lW-Je; Sat, 11 Jul 2026 19:11:34 -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 1wigqt-0004oT-4g; Sat, 11 Jul 2026 19:11: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-006.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 23:11:15 +0000 Received: from EX19MTAUWC001.ant.amazon.com [205.251.233.53:15565] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.58.33:2525] with esmtp (Farcaster) id d00aa24b-fc60-4e21-b454-ed90061296a0; Sat, 11 Jul 2026 23:11:14 +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, 11 Jul 2026 23:11: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, 11 Jul 2026 23:11:05 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783811479; x=1815347479; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=pDDCIg5+J6t1aKjwBKaum3v23g0Lhipp3/n7uMQNZGw=; b=hJpE+RmkCl2pBFvYs7s2BOgs2ldwxUHMVZkU6r5B1vnKoTXu/KwU5sNd OawZVq1kBi6OAKOgwZbFr87S3D0OIniz7ubAnfBs77EORrbdSx4rLVELp ZOHWLPUpnebQMNn6n/M39fQ3sNgUO6mb/gbVvWYqkyuyXRXvHigEnnSek YWpJkJH0U6a6smnwXdne0qczyPEc6CLZj9oiZWaeUtrC0CZxzz324F079 V2pB2ITtt+KMKytc81VLMCIQvPnUW6t934wGRvZzR7cygSadEpo/Jh+kY Vb9SDZuj7cA8ZV3COLbmVTCsprwpr3fa/ZVrizq7lV8D0cGAQ4zoz2Si2 w==; X-CSE-ConnectionGUID: v0vWqlHxT1++gg9sKfbu6Q== X-CSE-MsgGUID: ZD7y+3XFRlmA7tCWGGe9LA== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23522651" X-Farcaster-Flow-ID: d00aa24b-fc60-4e21-b454-ed90061296a0 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 129/134] hw: Parent board-created CPUs under the machine Date: Sat, 11 Jul 2026 22:37:02 +0000 Message-ID: <20260711223707.42139-130-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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=52.26.1.71; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-006.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783811503965154100 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 Assisted-by: Kiro 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 | 4 ++-- hw/arm/versatilepb.c | 3 ++- hw/arm/vexpress.c | 3 ++- hw/arm/virt.c | 4 ++-- 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 | 5 +++-- hw/mips/cps.c | 5 +++-- hw/ppc/e500.c | 5 +++-- hw/ppc/spapr.c | 4 ++-- 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, 58 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 c9adc972c1..3b759d9209 100644 --- a/hw/arm/sbsa-ref.c +++ b/hw/arm/sbsa-ref.c @@ -783,7 +783,8 @@ static void sbsa_ref_init(MachineState *machine) break; } =20 - cpuobj =3D object_new(possible_cpus->cpus[n].type); + cpuobj =3D object_new_child(OBJECT(sms), "cpu[*]", + possible_cpus->cpus[n].type); object_property_set_int(cpuobj, "mp-affinity", possible_cpus->cpus[n].arch_id, NULL); =20 @@ -808,7 +809,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 f2249a0b72..95e087d692 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -3039,7 +3039,8 @@ static void machvirt_init(MachineState *machine) break; } =20 - cpuobj =3D object_new(possible_cpus->cpus[n].type); + cpuobj =3D object_new_child(OBJECT(vms), "cpu[*]", + possible_cpus->cpus[n].type); object_property_set_int(cpuobj, "mp-affinity", possible_cpus->cpus[n].arch_id, NULL); =20 @@ -3139,7 +3140,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 580ef0bb3e..b749aafdbe 100644 --- a/hw/loongarch/virt.c +++ b/hw/loongarch/virt.c @@ -948,13 +948,14 @@ 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); + cpuobj =3D object_new_child(OBJECT(machine), "cpu[*]", + 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..e6c1b7f0b1 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -2776,7 +2776,8 @@ static void spapr_init_cpus(SpaprMachineState *spapr) } =20 if (i < boot_cores_nr) { - Object *core =3D object_new(type); + Object *core =3D object_new_child(OBJECT(spapr), "cpu-core[*]= ", + type); int nr_threads =3D smp_threads; =20 /* Handle the partially filled core for older machine types */ @@ -2790,7 +2791,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 Sun Jul 12 00:34:17 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=1783811512; cv=none; d=zohomail.com; s=zohoarc; b=Ekw9TkIbqkZe/8MPMdYlOjyf7g+Ht4atGYd2W88dMXZ59Pokl6u82c25lc0ZPZauiKrAJq9VhxaZIj83dpqsdQza0LNo1mNJxvbMkpReiqFl/5WlwE2QqZchuOGHbouiP1lbKB95yGmW1KQ6idcLen2jxeufouKxTMB6Cx2F23Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783811512; 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=a82M9OA27WmY4jNAVZQkXPY/R/hrbBcR+DAH+lTaa8k=; b=T37HSJw5Hlq52S61bFBN2rvourJpzQbtX8YfTjdXoLbIqcWPS5lVslrTZmdrb+Zg4qegWOGIHc5V8d1tARclq7+mSNlb4jHlnIAf0+QtFq0hA06OEYyG4vshYw5eAfLFyHdMbiB3DNVmELPNj5dD2aVs6bWgX8QJGYnSlF9E7tY= 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 1783811512088207.98331051839455; Sat, 11 Jul 2026 16:11:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigrC-00050L-QT; Sat, 11 Jul 2026 19: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 1wigr6-0004n0-Sc; Sat, 11 Jul 2026 19:11:34 -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 1wigr5-0004pW-4R; Sat, 11 Jul 2026 19:11: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-006.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 23:11:23 +0000 Received: from EX19MTAUWB002.ant.amazon.com [205.251.233.48:6542] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.35.214:2525] with esmtp (Farcaster) id 07de1084-a853-4fd8-8c22-975ef6f2b319; Sat, 11 Jul 2026 23:11:23 +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, 11 Jul 2026 23:11: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, 11 Jul 2026 23:11:14 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783811491; x=1815347491; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=a82M9OA27WmY4jNAVZQkXPY/R/hrbBcR+DAH+lTaa8k=; b=b2BU+Tpo4Yhn3TSgQiBli2451RHFKhonaEgzjbNjzSE/T3VbrMp57Gnd ZyfefN7w+lotAHzg+C3Mbp/RhGKbAYRX7BpCOFt+n+y2wkBsfYrC3deB0 AMeVzhUrv0qCQg/qD9uqdrKd0P4D9PXynxeC+CT0rQBzMm4B2Ja/vmmdG rpXalcvAHEWFRj2l135k6XnF8Qtn4t2iqH2cTuc4erMTgRYBnGlcnUwNo 985Cail/TrdfJ8SAcrVTkPCIktJQ8eyl59yJPnhtsKEWcgteN4vPs9UAe +wCNaTX8uTOqSkHccx/x3gvk8Dc1lkk7e2NtNBYOHmt2X+f+tJ0vgFDVL w==; X-CSE-ConnectionGUID: D/yyA7sqTdSIss7rdkqcJg== X-CSE-MsgGUID: KdolJwaKS/i71+BlDTdR8A== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23522657" X-Farcaster-Flow-ID: 07de1084-a853-4fd8-8c22-975ef6f2b319 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 130/134] hw/pci-host/versatile: Use object_initialize_child() for pci_dev Date: Sat, 11 Jul 2026 22:37:03 +0000 Message-ID: <20260711223707.42139-131-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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=52.26.1.71; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-006.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783811513891154100 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. Assisted-by: Kiro 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 Sun Jul 12 00:34:17 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=1783811518; cv=none; d=zohomail.com; s=zohoarc; b=XTz66vGqDQM5FJMZB6G0+DlvipHfC00lI6nzUqZ3dazf3fx17aVe76C+RFXcrOIphqjSvnSF2qWctx4u9cfwKZFW4824n95RL7n3mK8uNnq2DAnY3hL74wuSx4IchuzdpD5wBzlAeHH9g1+1gnO+xiU4CwU1EzqDvQssHVfrBiA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783811518; 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=Q5N6fawkyuDtUnNYJxBdgz/csX5+RhQ+sY6295/LuDg=; b=i6sV1rDwqQKvX0GzTxAsaLlBSKXwaPV8/sifLD8laW0W46+uydGPz9JI4zb3hXJcsKy/PEL3GPc2SugAeLRa/jalWGuKOXnyhiuUAT5Dpr9C667jKC9mW66aEdsF8Z0BDuHr/SzxNvynBoDvWDCg7pADv8nIvGEkcYSZrPj0Lag= 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 1783811518124926.0568860874096; Sat, 11 Jul 2026 16: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 1wigrH-0005Fl-RO; Sat, 11 Jul 2026 19:11: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 1wigrD-000529-Ae; Sat, 11 Jul 2026 19:11:39 -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 1wigrA-0004oT-6D; Sat, 11 Jul 2026 19:11:39 -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; 11 Jul 2026 23:11:32 +0000 Received: from EX19MTAUWA002.ant.amazon.com [205.251.233.178:7336] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.31.54:2525] with esmtp (Farcaster) id 2cacee7a-8c8d-4b5a-8116-d8e6772a127e; Sat, 11 Jul 2026 23:11:31 +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, 11 Jul 2026 23:11:31 +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, 11 Jul 2026 23:11:23 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783811496; x=1815347496; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Q5N6fawkyuDtUnNYJxBdgz/csX5+RhQ+sY6295/LuDg=; b=VSjZQPL51Hhqhi6QKkSBJ4Nq8a/9ULuyyR2cu+A6r9IFY3W+Aiyfrv0E 8lNTb44ITQOm9w51QLcbeQiRQAhUTCLGEAfYuDiXEUH5CJqFat11yKTtA AQOsFSCeY9Kc6Az6T5oL8zKKe1F1VssW7e6tc9NQeJSRxvNYPVXXd5/GF E4g2LK3HVrEGWIijQKFzTIm0LxRmOpEB39OV2MGejFcGxCbNuCTegcG45 e8a6xATHO4UUtx4JeTFl1SWEQWhOJ8BtgUlIlezXBeBdvx+oEjWpGrF8M QldfgbyS8ji0cOsdG31K/SpsSc4atA0/hOsCLIAPRPBOQzMg8TjcASkTD Q==; X-CSE-ConnectionGUID: ksplJDb0QJq8pfX8kY0HZg== X-CSE-MsgGUID: IQ5j94ieRSyIIyLX0WMynw== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23522671" X-Farcaster-Flow-ID: 2cacee7a-8c8d-4b5a-8116-d8e6772a127e From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 131/134] docs, qapi, scripts, iotests: Update /machine/unattached path references Date: Sat, 11 Jul 2026 22:37:04 +0000 Message-ID: <20260711223707.42139-132-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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=52.26.1.71; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-006.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783811520514154100 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. Assisted-by: Kiro 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 Sun Jul 12 00:34:17 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=1783811538; cv=none; d=zohomail.com; s=zohoarc; b=KAyiF+lKtQiUG5ADgnHXE5WGcytiIaR96aTXLcvKpex2ibhQb8rdQbK6iq8NtpyAROAmD08UVRnJaq2q2nTMM3t9K6uCAnGF1ybvvp01u821Zxzx2TPa6GU1MBJSe7VIl8WA1X0SPhhpeRLFWStUgtmQC9DTP/W9MNShSi4X73o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783811538; 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=HUh3AhjbxdYbQQBQLAwLY6e2h8D1o6fDnZPkSJ/q8nk=; b=Op3hrGItHzvabDVmIulDWhoNUIz9WB5IfM3EL+LrLKbaI3TmcxFZf1nVFYCXH0WythwH5O5N0DP4JVpnWidXADy8Vmx3zbhlrp+VZPaAPgyQ5uuWIeBkRyFqbOhJWFQx5IgvpP1DzF+3/yPlIpHXuPuOKRbmsB9uDKe4du1vva4= 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 1783811538145539.3815596736973; Sat, 11 Jul 2026 16:12:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigri-000751-FM; Sat, 11 Jul 2026 19:12: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 1wigrg-00073O-8u; Sat, 11 Jul 2026 19:12:08 -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 1wigrd-0004xT-UY; Sat, 11 Jul 2026 19:12: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-009.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 23:12:02 +0000 Received: from EX19MTAUWB001.ant.amazon.com [205.251.233.51:2822] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.35.214:2525] with esmtp (Farcaster) id 45ddd563-d3ea-4aa1-8df6-d144a2cc8f07; Sat, 11 Jul 2026 23:12:02 +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, 11 Jul 2026 23:12: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, 11 Jul 2026 23:11:53 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783811525; x=1815347525; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=HUh3AhjbxdYbQQBQLAwLY6e2h8D1o6fDnZPkSJ/q8nk=; b=iqeIFU5UMuIKS9hzVXWLVFuaWE2E3RJG8Ci+3/5DGUo1vmCuHfT9BxZq j+StDvZQ+KOFXuHVX0a5uPsmqV0g2ZEeT5IQxGTPYvcYxnpYevIGsyvwb iMA7Pqec8fUvomkhLsFL8+p4n0QM5sLDG11I8VlDeGXQdrKOdOGRK4ML1 +M8JTzMTBU8ExCWe53tgaFcpGefGQWfrncCh9Z2DnOXT94lWVD6Md56Mt WBTRW6MPhuJdnnTaAYoPoHlugwV8Bmxg/SYEmFkCNdZJhNn4KvOwm4jQE 8AuTKH6ZDRSa+HRK1/1wZQp4+FEVbht04tfrxiG6un8WPtf0usYqH2K2j w==; X-CSE-ConnectionGUID: qgxiEoI8TNC22c5uFahBQQ== X-CSE-MsgGUID: uOgsjy5STk6+3YM4B5PqbA== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23390828" X-Farcaster-Flow-ID: 45ddd563-d3ea-4aa1-8df6-d144a2cc8f07 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 132/134] qom: Delete /machine/unattached and error on unparented realize Date: Sat, 11 Jul 2026 22:37:05 +0000 Message-ID: <20260711223707.42139-133-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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=645f258d4=graf@amazon.de; helo=pdx-out-009.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783811540588154100 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. Assisted-by: Kiro 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 44a44862fd..7d7d08733d 100644 --- a/hw/core/qdev.c +++ b/hw/core/qdev.c @@ -485,8 +485,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", @@ -500,12 +498,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); @@ -633,14 +629,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 Sun Jul 12 00:34:17 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=1783811550; cv=none; d=zohomail.com; s=zohoarc; b=StO5A/cxc5L7quB1eg02R3kts0KYMmA1tihke5OTDSXWH2q25CN6Imglerq9NwowlvCtxNNErJWCgW9uJcisHGzTmsTh7YlXfawi43+3QUf3jkmhvsS3HAQwO5+YmKWHVAp3YBMFNyJwBYW2aWoezgyZBvDGG1HBdtM1FdGRpm0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783811550; 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=XeZQT88wIcncKcWqQFOrz0CkgYPwdm06RFCiYUu+uZU=; b=ITd/A1DTVplo9p3Pm/M35kckfx690+DaeUuI76eVgCKssm/N4OYtC106uuL2nHkuulsOc1yqgBeYxvhBEThGlerxAW+nSEBVdYawLTL98omzsdoMSo+OVCsYSksH+SvfSMbwFqPkQuUl8kyHgGQViSku7mNC3p/b7own5rO3m20= 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 1783811550711210.61377117279517; Sat, 11 Jul 2026 16:12:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigrq-0007E4-AR; Sat, 11 Jul 2026 19:12: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 1wigro-0007D7-7U; Sat, 11 Jul 2026 19:12:16 -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 1wigrm-0004zp-5z; Sat, 11 Jul 2026 19:12:15 -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; 11 Jul 2026 23:12:10 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.111:4432] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.47.135:2525] with esmtp (Farcaster) id dcc1ebd5-c3fb-43da-b8cb-1f5134ba6bd5; Sat, 11 Jul 2026 23:12:10 +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, 11 Jul 2026 23:12: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, 11 Jul 2026 23:12:01 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1783811534; x=1815347534; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=XeZQT88wIcncKcWqQFOrz0CkgYPwdm06RFCiYUu+uZU=; b=qYFTYAgMg2sXIQKPTx8HAAet93GNO7HxWuvsNi1I9qny8cRogLEzgVyG KLUCdaqpFCNG2hbLk+cLRhQfu6XYVGP5yIChCjVABvFooTOID36GCqJ5O D6R+Vwi7ps5z1YTOVl3/hcUdYU8s1sRgHKH8Q3KrToFwXMvvUEQ3zgp2I W51HThIj1o122ixA27cFzgD2o6rA5JOssaCDZYrMcZHBWfmAN74j700PK Ukp1ItAWPT4I3fdBI6LLAujL+u5qnWQ3H6bREa097iDzyxTyFfTewZ4Xg Ju2C7ialqHJ0DeH4BpqSY+PTjt29Obt+tsC6jvsbDeFu05olSI7B/xYwm g==; X-CSE-ConnectionGUID: 6zYogTNzTQulN2hza0vT3g== X-CSE-MsgGUID: ftXU9H+/SJ6T5zVwcmsB7Q== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="22997919" X-Farcaster-Flow-ID: dcc1ebd5-c3fb-43da-b8cb-1f5134ba6bd5 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 133/134] docs/devel/qom: Document the composition-tree parenting contract Date: Sat, 11 Jul 2026 22:37:06 +0000 Message-ID: <20260711223707.42139-134-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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=645f258d4=graf@amazon.de; helo=pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783811553061154100 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). Assisted-by: Kiro 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 Sun Jul 12 00:34:17 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=1783811555; cv=none; d=zohomail.com; s=zohoarc; b=UuFaI6dmVil9g6yR7AegYZLwdIZr8tRvhgTy+DBSrbxzqCaojHX6o7nB1F1LytPPxrwhfVnjWYkMckW9u0FQhAGb1wdeDdj5aBM2SvjgleCN64ZnmLa4zYReCJesZl4+0LMoq21JvDioh9KXmPC/ubdL9aQSMGhOjioY9S2phXc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783811555; 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=TQehbWR+XF4NTnX2LXEFmC7hpSyhG23+/QruWEeJ5lw=; b=ZLrqH7w8vQCs32TW5riOIx0ArrjhHgdG9JG/S0u1c0HCtWfIDbxkjK1Yju/9Fw+jyWfm+esiQ+42hHVQBLqrFGp0JwqJRWeMNLskKI8GUatiirzFC45ayGOpBmSyC2XZgFRt0wRe5FU86eYvyovfIZUbKDyTbb9Z6+zJB4Fcm0s= 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 1783811555712862.7956769153495; Sat, 11 Jul 2026 16:12:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wigry-0007bp-52; Sat, 11 Jul 2026 19:12: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 1wigrw-0007YD-EZ; Sat, 11 Jul 2026 19:12:24 -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 1wigru-000515-QJ; Sat, 11 Jul 2026 19:12:24 -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-007.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2026 23:12:19 +0000 Received: from EX19MTAUWA001.ant.amazon.com [205.251.233.182:3085] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.26.212:2525] with esmtp (Farcaster) id 1a62ef20-2e6f-496b-8ced-d5796376a647; Sat, 11 Jul 2026 23:12:19 +0000 (UTC) Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWA001.ant.amazon.com (10.250.64.204) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 11 Jul 2026 23:12: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, 11 Jul 2026 23: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=1783811542; x=1815347542; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=TQehbWR+XF4NTnX2LXEFmC7hpSyhG23+/QruWEeJ5lw=; b=PEEALEzPN06KhcHj8RQV0lee3gY3twBJpGxsdl9czpydv7I3hjHfXJQz WdTZcmVlHxjdFegou1rmcTz5aoLgub7nnWlDzYjuMiW+ft014t3x8AbiL zZl40loJznB5vGVoNac9AMH3HwKIaDaJVObumAd4reZ7+sw5kk2suNhyP 83CBvnamOacNXQ7Qq4EQspQJhnza/NRqPFQl05bOaP35MLgn1k9aq4nT+ DoHEsNGjs92e9EIbSqEVxpsaCn/N/AeKk//t+l+vJ4IITpo1kTysApRi5 FauXtQdNoriN3nbnbdbNAEsiSig1VNOxMFhnk2sD+8ZSsQkTPxHJjRYlp Q==; X-CSE-ConnectionGUID: H8cgeAJsREqedX6Na3Oniw== X-CSE-MsgGUID: 1RJ+OXq8SfquPgxAGceMfw== X-IronPort-AV: E=Sophos;i="6.25,154,1779148800"; d="scan'208";a="23483760" X-Farcaster-Flow-ID: 1a62ef20-2e6f-496b-8ced-d5796376a647 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , 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 , 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 , =?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 , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= Subject: [RFC PATCH 134/134] MAINTAINERS: Add scripts/coccinelle/qom-parent/ under QOM Date: Sat, 11 Jul 2026 22:37:07 +0000 Message-ID: <20260711223707.42139-135-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260711223707.42139-1-graf@amazon.com> References: <20260711223707.42139-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=52.34.181.151; envelope-from=prvs=645f258d4=graf@amazon.de; helo=pdx-out-007.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: 1783811558604154100 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. Assisted-by: Kiro Signed-off-by: Alexander Graf --- MAINTAINERS | 1 + 1 file changed, 1 insertion(+) diff --git a/MAINTAINERS b/MAINTAINERS index 6171cc7494..2183d24fd4 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3636,6 +3636,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