From nobody Tue Feb 10 01:35:57 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=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1766171457; cv=none; d=zohomail.com; s=zohoarc; b=T6EPPs+8PsW/IVE1z4+WvpgBT1gvQKi0OnYHw371Qu1yVWvZ2yrkHo437FOEgNJ6Pi59MevfzYqcwiM2W7ipXuBGQVJXTOEsaQy+vv1/MkDQaX7CuXXUrwgNMJHNgGM6Z2+YyRNwK7xAlzVjdJ8pAQo7Bo+mEZoMJuJOJ4JsJ+k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766171457; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=fK0KW0TMYcgxgeLwnEP5U3w++5XTKKD1u9IZq89pD2g=; b=OOlao3vWeImM62XdnBt58pGnpTFZ90N1I6MQVzAk1uyM2eAOQA87ZkwK5S8bLw61ItqatKeKwtGDWMidaEUot2Xl73v2Qspud95/m3pSqHySHqQDzRyR72KZfV8qVjLXoikp/R7ZhEtbVzfzBR2Hl+Fn+Q9rtEGUaR0NP207QBU= 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=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 176617145767029.127548366879978; Fri, 19 Dec 2025 11:10:57 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vWfrL-0001Pr-EN; Fri, 19 Dec 2025 14:09:51 -0500 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 1vWfqV-0000aN-FP for qemu-devel@nongnu.org; Fri, 19 Dec 2025 14:08:59 -0500 Received: from mail-wr1-x42d.google.com ([2a00:1450:4864:20::42d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vWfqS-0006oL-FA for qemu-devel@nongnu.org; Fri, 19 Dec 2025 14:08:59 -0500 Received: by mail-wr1-x42d.google.com with SMTP id ffacd0b85a97d-430f5ecaa08so1031765f8f.3 for ; Fri, 19 Dec 2025 11:08:55 -0800 (PST) Received: from draig.lan ([185.126.160.19]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea82e9fsm6786272f8f.26.2025.12.19.11.08.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 19 Dec 2025 11:08:53 -0800 (PST) Received: from draig.lan (localhost [IPv6:::1]) by draig.lan (Postfix) with ESMTP id E33E7601A9; Fri, 19 Dec 2025 19:08:50 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1766171335; x=1766776135; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=fK0KW0TMYcgxgeLwnEP5U3w++5XTKKD1u9IZq89pD2g=; b=vqTujmtCfIyBNcQeg7L86RHFmifIo+ZJaMLcFuuGp27h5aApSyquyqUUYzjSpbJ+L/ lwTNkGdUGc2xe43ZsfvzUgPt+Ca98uztNpXg6H5+Qp2G5W/9QH5XJQOQ/jSjH4H8cDAe pxccQh2qm+lL/PYPV1IQXz4Ai2W6PhCpnzqpbxKA2/jT3FbNoRfcyX8rgg65J9pwB5k+ po112F4lbSnKQRv19Sxq5gOC7D79zGhJS0zQhQyCObS6lyKLtPHsiSxH51t7bHjlMlD/ nGavTZGBU123lxY8cuz30KHi8pO8xNJ/CkJbTUXfWFRXdCqWr6/s+YLjGlcu9Yf3KQw+ 3+Vw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766171335; x=1766776135; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=fK0KW0TMYcgxgeLwnEP5U3w++5XTKKD1u9IZq89pD2g=; b=cIQn7wVYFFfLpDnA8N57Phxx1GRhdSOBDF+ZbMFDR3le3gjzY/GZqAK0Q++G3EBTL1 uxT28GJ9rABJ4sUcnh/gRFdU1z6meuk5y6gUH8aaP6GtTus72MdwDTaFaopSoX8RBsF1 vM6rZL/3I8ikw0ihB8h+kiRE5YTiXA9/XVjtq2W5r1AW/Y269ytjJZt4rB1ItcpVBvY5 Cq42Df4Ua/r4smWSUzJZlbwPXFqkRL7aBp7eWn6ShGKlT+F+mIFut+4IPF4tVJFvnoaU pBRoeHkwhso1lX2U1u/fG1XevN1UwhU/LZL6Lz6BqG954vbUcviWezANCeRVoEC6/hHA DI8g== X-Gm-Message-State: AOJu0Ywwe62UCwcHp6co5tc+5ZmoNWoNanp/VVajfya+BQxcDEcMd5+a r+WjVRyO1au4hUC5AzZLEAEiy5dJF1H8eaG6+31dsqaYicFu7mQXmkfeGYql9RCxMuU= X-Gm-Gg: AY/fxX7AotFotMeqwrHO8BjIuMWwf2ArUyUh4WGgNNrLmeDiHecuRWUMA5G4dwa48Jl ktazjBQZxc9QUJkPlklMdj+iUx9K5g2fZW0wTD5fBiOyQO8RwyDhUYLP6pEpPIWsFLU58k0Op7F N9CXoAbTT8xLZD1c44Nm+uy3OIR1gV3zs/uXVYXsQFZ4H5AE9DVr1BgEx9oyGFLF6saNfMDX9fO vjc2g6LrdjWSNYh9+cTyWcmqReIuVsqQ5vSI72IjnSBnp0bA668TLTS178cxYWwfW/8VdDFmaTk ZVTJ80z7JHHmSceCbnpaYLq8QXZovPCa6E6VZGfNQOMijy55Ekri6Uwz+05nvFfm5okV5ly7ayO mrj11bnxUfhpxY91RUpTtzcvO6fe2Uj5bkqk91RPxbY10hNfiXbMh/6zUF/hddfyPO+O8z4NcBH +ZaB/QIDxwxEc= X-Google-Smtp-Source: AGHT+IEPonMigDhcyUb/rkjFjALC1EHAb9+cuZxjPKGSGDhXmrLZ4qFLqKwCHLvibLsksBtqozcbXg== X-Received: by 2002:a05:6000:178e:b0:425:769e:515a with SMTP id ffacd0b85a97d-4324e50b8fdmr4442888f8f.42.1766171334811; Fri, 19 Dec 2025 11:08:54 -0800 (PST) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: qemu-devel@nongnu.org Cc: Yanan Wang , Paolo Bonzini , Alwalid Salama , qemu-arm@nongnu.org, Zhao Liu , Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Riku Voipio , Marcel Apfelbaum , Peter Maydell , Mahmoud Mandour , Eduardo Habkost , Mark Burton , Laurent Vivier , Pierrick Bouvier , Alexandre Iooss , =?UTF-8?q?Alex=20Benn=C3=A9e?= Subject: [RFC PATCH 10/12] target/arm: defer creation of gdb register until machine created Date: Fri, 19 Dec 2025 19:08:47 +0000 Message-ID: <20251219190849.238323-11-alex.bennee@linaro.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251219190849.238323-1-alex.bennee@linaro.org> References: <20251219190849.238323-1-alex.bennee@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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 (zohomail.com: domain of gnu.org designates 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=2a00:1450:4864:20::42d; envelope-from=alex.bennee@linaro.org; helo=mail-wr1-x42d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1766171459945158500 When running machine emulation we may create additional cp_regs for things like the GIC interface. To include them for gdbstub and plugins defer the creation until the machine is finalized. Signed-off-by: Alex Benn=C3=A9e --- target/arm/cpu.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/target/arm/cpu.c b/target/arm/cpu.c index 39292fb9bc1..81997bac06a 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -41,6 +41,7 @@ #ifdef CONFIG_TCG #include "hw/intc/armv7m_nvic.h" #endif /* CONFIG_TCG */ +#include "system/system.h" #endif /* !CONFIG_USER_ONLY */ #include "system/tcg.h" #include "system/qtest.h" @@ -1535,6 +1536,23 @@ static void arm_cpu_post_init(Object *obj) qdev_property_add_static(DEVICE(obj), &arm_cpu_cfgend_property); } =20 +#ifndef CONFIG_USER_ONLY +static void arm_finalize_gdb_regs(Notifier *notifier, void *unused) +{ + CPUState *cs; + + CPU_FOREACH(cs) { + ARMCPU *cpu =3D ARM_CPU(cs); + arm_cpu_register_gdb_regs_for_features(cpu); + arm_cpu_register_gdb_commands(cpu); + } +} + +static Notifier arm_machine_setup_gdb_notify =3D { + .notify =3D arm_finalize_gdb_regs, +}; +#endif + static void arm_cpu_finalizefn(Object *obj) { ARMCPU *cpu =3D ARM_CPU(obj); @@ -2138,8 +2156,15 @@ static void arm_cpu_realizefn(DeviceState *dev, Erro= r **errp) #endif =20 register_cp_regs_for_features(cpu); + +#ifdef CONFIG_USER_ONLY + /* + * For system emulation not everything is done yet - see + * arm_machine_setup_gdb_notify + */ arm_cpu_register_gdb_regs_for_features(cpu); arm_cpu_register_gdb_commands(cpu); +#endif =20 arm_init_cpreg_list(cpu); =20 @@ -2392,6 +2417,14 @@ static void arm_cpu_class_init(ObjectClass *oc, cons= t void *data) cc->gdb_write_register =3D arm_cpu_gdb_write_register; #ifndef CONFIG_USER_ONLY cc->sysemu_ops =3D &arm_sysemu_ops; + /* + * For system emulation we defer setting up GDB registers until + * the whole machine in setup. This is because we may still have + * some to define for emulated HW (e.g. the GIC). + */ + qemu_add_machine_init_done_notifier(&arm_machine_setup_gdb_notify); +#else + #endif cc->gdb_arch_name =3D arm_gdb_arch_name; cc->gdb_get_core_xml_file =3D arm_gdb_get_core_xml_file; --=20 2.47.3