From nobody Fri Mar 27 04:51:16 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1773657727; cv=none; d=zohomail.com; s=zohoarc; b=cEdjQhxWsN943ubo9Njrlk8B7T1Fj3KEKpIUv3NB3W2MRVtk21rO7cQkC7e8ydSBqfRrJs0k7X8dxOHZnLgo6rSjzajXRSXL9OwlQ2f7yttlBHTW9Y/xfycdaDKZDISm+VjB7fuKa2wUTFCvfd2qbpFYGUNUqPj8xxVAnEJQxck= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773657727; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=iJ5utqaRZa5/4GX75GLSReIXQCm07ISamkGDW6gW+i0=; b=W23c544KNTihBEo1VaMTOxjAsWHfea4mB3SF9g/xzK/cGtHpqaqlxtW15TZOhrcZvLi5EFDDKAAEkVSns5ndXzUveaoYBCuUnybOy9wmRllD7/0dSClqSuVKW+zcFgaWWA7fu+04mZs4rtqFjC90Zo+UpfnQjY5Rc2Bi7nR2RmM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1773657727417207.72861167684778; Mon, 16 Mar 2026 03:42:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1w25Nk-0006Bq-3V; Mon, 16 Mar 2026 06:41:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1w25Ng-0006B8-PM for qemu-devel@nongnu.org; Mon, 16 Mar 2026 06:41:04 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1w25Ne-0003QW-II for qemu-devel@nongnu.org; Mon, 16 Mar 2026 06:41:03 -0400 Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-492-cyR3JEe0NN--mCb6DEe9oQ-1; Mon, 16 Mar 2026 06:40:58 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 84B2D18005B6; Mon, 16 Mar 2026 10:40:57 +0000 (UTC) Received: from thuth-p1g4.redhat.com (unknown [10.44.33.101]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id CE62019560AB; Mon, 16 Mar 2026 10:40:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1773657662; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=iJ5utqaRZa5/4GX75GLSReIXQCm07ISamkGDW6gW+i0=; b=VETRD4JPKqjgOTxo4DyCN7wCG+ivElaMDd3v3cf3igW2nGC4fte7k/u4lHH8HbLg+fVV6x WYaX7ejojHDyR4AYaRlndoQuSs1nBWbitUwq+OyeLprBeqJIiY3YwmaAUDI5WPWR9OS5UL Th92E8+5V8/oXLtNmo61UwSZ3kMH9ek= X-MC-Unique: cyR3JEe0NN--mCb6DEe9oQ-1 X-Mimecast-MFC-AGG-ID: cyR3JEe0NN--mCb6DEe9oQ_1773657657 From: Thomas Huth To: Peter Maydell Cc: qemu-devel@nongnu.org, Alistair Francis , Markus Armbruster Subject: [PULL 05/14] hw/arm: xlnx-zynqmp: Don't call qdev_get_machine in soc init Date: Mon, 16 Mar 2026 11:40:30 +0100 Message-ID: <20260316104039.195960-6-thuth@redhat.com> In-Reply-To: <20260316104039.195960-1-thuth@redhat.com> References: <20260316104039.195960-1-thuth@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=thuth@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -3 X-Spam_score: -0.4 X-Spam_bar: / X-Spam_report: (-0.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.819, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.903, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1773657729412158500 Content-Type: text/plain; charset="utf-8" From: Alistair Francis Calling qdev_get_machine() in the soc_init function would result in the following assert ../hw/core/qdev.c:858: qdev_get_machine: Assertion `dev' failed. when trying to run ./qemu-system-aarch64 -S -display none -M virt -device xlnx-zynqmp,help as the machine wasn't created yet. We call qdev_get_machine() to obtain the number of CPUs in the machine. So instead of initialising the CPUs in the SoC init let's instead do it in the realise where the machine will exist. Signed-off-by: Alistair Francis Tested-by: Markus Armbruster Message-ID: <20260312043158.4191378-4-alistair.francis@wdc.com> Signed-off-by: Thomas Huth --- hw/arm/xlnx-zynqmp.c | 42 ++++++++++++++++++------------------------ 1 file changed, 18 insertions(+), 24 deletions(-) diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c index 5f0e34ccecf..979e55e3057 100644 --- a/hw/arm/xlnx-zynqmp.c +++ b/hw/arm/xlnx-zynqmp.c @@ -380,30 +380,15 @@ static void xlnx_zynqmp_create_unimp_mmio(XlnxZynqMPS= tate *s) =20 static void xlnx_zynqmp_init(Object *obj) { - MachineState *ms =3D MACHINE(qdev_get_machine()); XlnxZynqMPState *s =3D XLNX_ZYNQMP(obj); int i; - int num_apus =3D MIN(ms->smp.cpus, XLNX_ZYNQMP_NUM_APU_CPUS); - int num_rpus =3D xlnx_zynqmp_get_rpu_number(ms); =20 object_initialize_child(obj, "apu-cluster", &s->apu_cluster, TYPE_CPU_CLUSTER); qdev_prop_set_uint32(DEVICE(&s->apu_cluster), "cluster-id", 0); =20 - for (i =3D 0; i < num_apus; i++) { - object_initialize_child(OBJECT(&s->apu_cluster), "apu-cpu[*]", - &s->apu_cpu[i], - ARM_CPU_TYPE_NAME("cortex-a53")); - } - object_initialize_child(obj, "gic", &s->gic, gic_class_name()); =20 - if (num_rpus) { - /* Do not create the rpu_gic if we don't have rpus */ - object_initialize_child(obj, "rpu_gic", &s->rpu_gic, - gic_class_name()); - } - for (i =3D 0; i < XLNX_ZYNQMP_NUM_GEMS; i++) { object_initialize_child(obj, "gem[*]", &s->gem[i], TYPE_CADENCE_GE= M); object_initialize_child(obj, "gem-irq-orgate[*]", @@ -453,15 +438,6 @@ static void xlnx_zynqmp_init(Object *obj) object_initialize_child(obj, "qspi-irq-orgate", &s->qspi_irq_orgate, TYPE_OR_IRQ); =20 - if (num_rpus) { - for (i =3D 0; i < ARRAY_SIZE(s->splitter); i++) { - g_autofree char *name =3D g_strdup_printf("irq-splitter%d", i); - object_initialize_child(obj, name, &s->splitter[i], TYPE_SPLIT= _IRQ); - } - } - - - for (i =3D 0; i < XLNX_ZYNQMP_NUM_USB; i++) { object_initialize_child(obj, "usb[*]", &s->usb[i], TYPE_USB_DWC3); } @@ -483,6 +459,24 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Erro= r **errp) =20 ram_size =3D memory_region_size(s->ddr_ram); =20 + for (i =3D 0; i < num_apus; i++) { + object_initialize_child(OBJECT(&s->apu_cluster), "apu-cpu[*]", + &s->apu_cpu[i], + ARM_CPU_TYPE_NAME("cortex-a53")); + } + + if (num_rpus) { + /* Do not create the rpu_gic if we don't have rpus */ + object_initialize_child(OBJECT(dev), "rpu_gic", &s->rpu_gic, + gic_class_name()); + + for (i =3D 0; i < ARRAY_SIZE(s->splitter); i++) { + g_autofree char *name =3D g_strdup_printf("irq-splitter%d", i); + object_initialize_child(OBJECT(dev), name, &s->splitter[i], TY= PE_SPLIT_IRQ); + } + } + + /* * Create the DDR Memory Regions. User friendly checks should happen at * the board level --=20 2.53.0