From nobody Sun Feb 8 12:15:01 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1768366083; cv=none; d=zohomail.com; s=zohoarc; b=PNzvgglvBP6xDYkZ1XxaAPSghMIGa6/kT61D6QioG14r0ZqfD5Yda23bM+DrKqQqhniRp+O2n1XZpk1rUBqYRtlSZpYgcfknDeiaxM5YrIwXFQxtwqbHRq3qA9BWf1NQ/m2WxOHq9wtTa2vV1jzaVBYrSRiBIThKnpeSTf1RQjI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768366083; 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=TEeiGtHI7wQnEBEREwud4A0M1u+cTyhF8Eoqx55wGmE=; b=k/wlSPwekr3Vt4mcQLUda3hvGxz2Q+IFoTCg4Me6/gXKwoKI8/CjF+X15aZPqP7jhj+LbyOOSEfY05cFngt4o3ULLF2HU/PjOBUiKwV5Fs7sZg9tYrSWQFjGYVYGk3D0/Y8kntqZVoQUnYo3oFWh4Ece6lgzrsxL9QrDkOXMw6w= 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 1768366083928806.0735339787255; Tue, 13 Jan 2026 20:48:03 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vfsn5-0003XB-L3; Tue, 13 Jan 2026 23:47:31 -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 1vfsn4-0003TS-3t for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:47:30 -0500 Received: from mail-pl1-x635.google.com ([2607:f8b0:4864:20::635]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vfsn2-0003iP-Hq for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:47:29 -0500 Received: by mail-pl1-x635.google.com with SMTP id d9443c01a7336-2a09757004cso75432035ad.3 for ; Tue, 13 Jan 2026 20:47:28 -0800 (PST) Received: from lima-default (123.253.188.110.qld.leaptel.network. [123.253.188.110]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3c49037sm216111905ad.36.2026.01.13.20.47.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Jan 2026 20:47:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768366047; x=1768970847; 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=TEeiGtHI7wQnEBEREwud4A0M1u+cTyhF8Eoqx55wGmE=; b=GKZsEtIQu9hcC1qWsGGH3e2Cvsm4h1A6qN1S+Jn01Xa6cWHCd6yQ3oPtkFJI13TY1C CWYiPxYOWHP9M6feUWt0ULhN05YBBqptLjOHqQPJPfYxaxAoZUhswDfxOWXLavs97nNo x1iPb9sCNfQhlhaSZwHhGzlRWrN5Tf3VcqU0bJOXMJo6tjhHL8uBkT7RjdLAaEFXzS9O /3oiAOZ2izO/L/9hAbsp8ZRjIPa8jxm7FHJ73qQbScuZA6NFQRXOV2tr8H6sWW4+wpv8 +aXpDZAZng4I7ecZKjl8z6mc68RZYbq4pGhv7soBaSLxfaN4YCZIt5GkSN2qLowptJ70 AYDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768366047; x=1768970847; 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=TEeiGtHI7wQnEBEREwud4A0M1u+cTyhF8Eoqx55wGmE=; b=lTWQYwvgUcxIYHCzPJIj5qZO8G1GCYIhWxFWNIHfZ8PWltr5wu7V7TLK6JVu06FL26 W5DG1dtm/nJoPG7YNRWdyMAAs5itdoFNxyR2Ik7XbNFRPvpOTgKRzO/JY5eVtusGBODm pRz3j1hruQtiCBfTtUImchb2kXoVagVo2YRV/Z5sl/xXNpK8XTjvGlTtQzN+QgUnIA8Q NQ2lHcNOQoRC8TEvPh+ETLuR8TP1VJ359sbQ2c7PYftN9rojPVNLY+UEsAdcoJ0NuN3I Mewk3U+vZ+EqXMWwQ8mruiPkoFl8hjeV39R2pyjCmzOH0YEf6w9kmHoZEGqh+DETWsKh +j6Q== X-Forwarded-Encrypted: i=1; AJvYcCVBh0LlxGsS5nKxstx+dODLIt3j8dlaCLE+KMqtRNwuE8+1rl4sYH8sY9UF70BcW266u4jU1x80Iq4W@nongnu.org X-Gm-Message-State: AOJu0Yx1hVZgrRF4fXa32gUOi3ITX4rTAUykKkiHkJlN2DH2F3Ok5SDm A0pwncwhMi49LkFqhawR55n881U5fxXSKr3e93Ki/7ipNjgXF7y4odBV X-Gm-Gg: AY/fxX4LdgsDC1/bCgJiqFzw2xE7HzRVYNiRRBJTeH8/u4QpKpeNl5RwiuvjKzp0mdc xmgrHEXmBmuUmtNOpWeJCgAdfGTUNkKwZrxYBdkblSHZD25SZ2wsVJHAfxfBYF0RfiSxNEtzSAe eiIqQyUDLNXZFRJR5Fox2I3HJUTCwdZNbgP2F32nAtQD+964J29l/fpaJ/hln7EPvdQUxbq3V+9 4eVth0YT4sdRiJZ2C+L9CKHnm+E8Wiy//+TRHUm9zTRkj6UZN8DxyyGZpvL6z+WiiROO3Tai5BP 2OZoVg3xWFVA6YPkt0+DYPRgFWZO95u3bWGdqeM8ovn9AtLmsWQlwvkAIKq2v974mNQ1lzhASUv P+mFkgqFDQhfJ38iqJL8XV9wLmEuMwYSPGVW07cg4DWBgvxaJWsmET+m3IVa+RDR/k77fQMbcjM r9djxs2aMFSx6viSF/PWvD+XhhWYXDKVUIbBqmU202yV6zl029GOvz3EALkmA= X-Received: by 2002:a17:903:b43:b0:2a0:7f87:2347 with SMTP id d9443c01a7336-2a59bc43dadmr7737515ad.46.1768366047122; Tue, 13 Jan 2026 20:47:27 -0800 (PST) From: Nicholas Piggin To: qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: Nicholas Piggin , Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , bin.meng@windriver.com, vivahavey@gmail.com, Alvin Chang , Yu-Ming Chang , Joel Stanley Subject: [RFC PATCH 01/25] target/riscv/debug: Check only mcontrol triggers for break/watchpoint matching Date: Wed, 14 Jan 2026 14:46:34 +1000 Message-ID: <20260114044701.1173347-2-npiggin@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260114044701.1173347-1-npiggin@gmail.com> References: <20260114044701.1173347-1-npiggin@gmail.com> MIME-Version: 1.0 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=2607:f8b0:4864:20::635; envelope-from=npiggin@gmail.com; helo=mail-pl1-x635.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, FREEMAIL_FROM=0.001, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1768366085279158500 Content-Type: text/plain; charset="utf-8" trigger_common_match() has some warning log messages in it for unsupported triggers. Don't call it in BP/WP checking except for mcontrol/mcontrol6 triggers applicable to BP/WPs. Signed-off-by: Nicholas Piggin --- target/riscv/debug.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/target/riscv/debug.c b/target/riscv/debug.c index 5664466749..4273ab7a8d 100644 --- a/target/riscv/debug.c +++ b/target/riscv/debug.c @@ -952,6 +952,14 @@ bool riscv_cpu_debug_check_breakpoint(CPUState *cs) for (i =3D 0; i < RV_MAX_TRIGGERS; i++) { trigger_type =3D get_trigger_type(env, i); =20 + switch (trigger_type) { + case TRIGGER_TYPE_AD_MATCH: + case TRIGGER_TYPE_AD_MATCH6: + break; + default: + continue; /* No other types match breakpoint */ + } + if (!trigger_common_match(env, trigger_type, i)) { continue; } @@ -976,8 +984,7 @@ bool riscv_cpu_debug_check_breakpoint(CPUState *cs) } break; default: - /* other trigger types are not supported or irrelevant */ - break; + g_assert_not_reached(); } } } @@ -998,6 +1005,14 @@ bool riscv_cpu_debug_check_watchpoint(CPUState *cs, C= PUWatchpoint *wp) for (i =3D 0; i < RV_MAX_TRIGGERS; i++) { trigger_type =3D get_trigger_type(env, i); =20 + switch (trigger_type) { + case TRIGGER_TYPE_AD_MATCH: + case TRIGGER_TYPE_AD_MATCH6: + break; + default: + continue; /* No other types match watchpoint */ + } + if (!trigger_common_match(env, trigger_type, i)) { continue; } @@ -1036,8 +1051,7 @@ bool riscv_cpu_debug_check_watchpoint(CPUState *cs, C= PUWatchpoint *wp) } break; default: - /* other trigger types are not supported */ - break; + g_assert_not_reached(); } } =20 --=20 2.51.0 From nobody Sun Feb 8 12:15:01 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1768366083; cv=none; d=zohomail.com; s=zohoarc; b=j4hkBh0Zi3Ny4pJY6cRY/yCNz/D/gCvDY+KGZ3cZbRvBEoDyxyUCREfWFVyAMcuAOA0wzvvtYSaV622M6KvfcZxZGe2qEIQyWL9uUKG10IaTgcX0lRlgiVbYn9Bz0oM8DeugmWjEmselBIdZZzqsOIgB1BTgHtudgSokYFyhwsw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768366083; 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=EODmgB2Z2Uc8Ax58+q72/O+PBlwoivJ4Lq2ghFezO2g=; b=HW2BlXE8tLAXHZQkjLCwrvElS+Pg611qRVBK1VHeTBNEVsvfquhwse8V4w86m4xBwNd4ShtKfNhy4WJ9QELzsDYUzwmB7/P47l+5GjS1VSQhDOgSm1DDLm6Mm9M8P7SmD8oF8PGtPjce53BkBfBNmWImYdKPOLlDjf0zpVy/u88= 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 1768366083686373.64797501323767; Tue, 13 Jan 2026 20:48:03 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vfsnF-0003hQ-Mb; Tue, 13 Jan 2026 23:47:41 -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 1vfsn9-0003dt-Ad for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:47:35 -0500 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vfsn7-0003jD-I5 for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:47:35 -0500 Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-2a58f2e514eso9293565ad.3 for ; Tue, 13 Jan 2026 20:47:33 -0800 (PST) Received: from lima-default (123.253.188.110.qld.leaptel.network. [123.253.188.110]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3c49037sm216111905ad.36.2026.01.13.20.47.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Jan 2026 20:47:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768366052; x=1768970852; 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=EODmgB2Z2Uc8Ax58+q72/O+PBlwoivJ4Lq2ghFezO2g=; b=QFEiALHW9AjmHIahyp/8vg36GLQ2PYjm222/rwtaNAdwt+hlyC7aQdRnJw+BkOnW1J LQYHA0MyJLXi8PQAPVDw/FXLfSq8+lPiIY+ZOhyLz3hrohAT2vleaCGoUul8/BgjZmaT KJMqTh/zwnoqMhxptR1YmJmLBv6bJK7NS0yOMFRsCZNUEkwwo17jmnt4cn2xsvQsriTN GMxDMsyC0+C+sI3fWwpcN60AZJYbGDSTo8oJJumkTgVzkpg0P/J4CFctd6v+hOHDFMBp UhqbdG6vYTOCjDNJnzNNAWV9Y0IYmuQFtsKLDSZIVPlRKK3BFUJfwyBl9NPUffyltY+i 3WQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768366052; x=1768970852; 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=EODmgB2Z2Uc8Ax58+q72/O+PBlwoivJ4Lq2ghFezO2g=; b=DMhxETxxCtF5qmHzPkBz7xArXEmrfo6RfFdYtsjWylOKvTcDnf/Vu/5z7xmZfl6upK /O2nF/PnT54TCkK7h2R7Afvt8wzYO1YA7Eo6YM1WYva+tpvHhp3dI1JqQltjUCShiB+5 ozgflewEBUEZlrxbPdis84yi8EtAuxWLApLlWppmpBMx9NAZdWdYbYnGhU2qYkh3Bmd7 LfeGARbb4/en7HpvTt4I3G8RIJUryfJfzTqjaMdHkfFnxTyot1aOX30cFEVsazbg2JwZ eZwDaZ3rob+uPfSTlWqwGIpGAtjU8LRpxyh68syfWCFu4ydS9r4KqWzT0XypEt+f9gu5 UxIQ== X-Forwarded-Encrypted: i=1; AJvYcCWUZTOxepPkMyEzPMb0nWofZXAhFyck2RCQ5IgM9BfuMZXLnF9/RuDPyLep3efjOk2IRyUS/jf+AmSn@nongnu.org X-Gm-Message-State: AOJu0Yzi23kT3EMVx1h0DDPfQSb6y5zEUX6cr+z36Qv+axt7J7tlQ13V 26LH1OseyU0PVSWsuc/ee764lhWUcq0fnR6Xq0twdxR/x1XNqjx7mD1O X-Gm-Gg: AY/fxX6ppTUisIDQfOt0KlVv84nJQPOTZQn3+qTR8Dgz/CX8lgludN8brNmAqu30R/g RBdIxqwQc2LMMylTYlT00AmeB593YoAZZuQ78oAqkt8uDMsQWQJIXCgHdOahvIAwb9WVrP3uUMs HNug+1ewQ1EIR1e77YBcLxs1rpMDEf7dCM8uqUaGnGYbTfAlX8VKKgjOD9xvSJ+APvD27AXBlTu ret2biXznGF21zcHppEa0r2fy8haKUL+rMQCMwG1+FkRNPWj9+82GveBcMdE+gg7bJXquNpWiPW q4LKlnSBx7L1du/eFqjUmhWywDFJsj/RE04nA0ywwk/s6/5BJh1EIHzV0jUa6LEzKc570K7DxiI 26irWntM2chmKhsyVV7iW0g1oWBJXpPAJbYCtiTRuEkcq1vzEAURrKQE4UcPRtxX2zGpFbNZrTX PvOOpc+2E10w5aoHtH1XBx7Vg5t4JpgIhrNIF50pFW43lWtleeDGd3OpjkmAA= X-Received: by 2002:a17:903:2c0e:b0:2a0:b467:a7ce with SMTP id d9443c01a7336-2a599e34922mr16482255ad.36.1768366052210; Tue, 13 Jan 2026 20:47:32 -0800 (PST) From: Nicholas Piggin To: qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: Nicholas Piggin , Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , bin.meng@windriver.com, vivahavey@gmail.com, Alvin Chang , Yu-Ming Chang , Joel Stanley Subject: [RFC PATCH 02/25] target/riscv/debug: Handle changing trigger types Date: Wed, 14 Jan 2026 14:46:35 +1000 Message-ID: <20260114044701.1173347-3-npiggin@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260114044701.1173347-1-npiggin@gmail.com> References: <20260114044701.1173347-1-npiggin@gmail.com> MIME-Version: 1.0 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=2607:f8b0:4864:20::62a; envelope-from=npiggin@gmail.com; helo=mail-pl1-x62a.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, FREEMAIL_FROM=0.001, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1768366086413158500 Content-Type: text/plain; charset="utf-8" Updating debug registers will first remove the existing TCG breakpoint / watchpoint, then adds it back with new values. Writing TDATA1 with a value that changes the trigger type attempts to remove the facility for the new trigger type rather than the existing one. That is, it will not remove a breakpoint if the type is changed to a non-breakpoint type. Fix this by removing based on the old trigger type, then inserting based on the new type. Signed-off-by: Nicholas Piggin --- target/riscv/debug.c | 64 +++++++++++++++++++++++--------------------- 1 file changed, 33 insertions(+), 31 deletions(-) diff --git a/target/riscv/debug.c b/target/riscv/debug.c index 4273ab7a8d..2190c25f23 100644 --- a/target/riscv/debug.c +++ b/target/riscv/debug.c @@ -528,23 +528,12 @@ static void type2_breakpoint_remove(CPURISCVState *en= v, target_ulong index) static void type2_reg_write(CPURISCVState *env, target_ulong index, int tdata_index, target_ulong val) { - target_ulong new_val; - switch (tdata_index) { case TDATA1: - new_val =3D type2_mcontrol_validate(env, val); - if (new_val !=3D env->tdata1[index]) { - env->tdata1[index] =3D new_val; - type2_breakpoint_remove(env, index); - type2_breakpoint_insert(env, index); - } + env->tdata1[index] =3D type2_mcontrol_validate(env, val); break; case TDATA2: - if (val !=3D env->tdata2[index]) { - env->tdata2[index] =3D val; - type2_breakpoint_remove(env, index); - type2_breakpoint_insert(env, index); - } + env->tdata2[index] =3D val; break; case TDATA3: env->tdata3[index] =3D textra_validate(env, val); @@ -552,6 +541,8 @@ static void type2_reg_write(CPURISCVState *env, target_= ulong index, default: g_assert_not_reached(); } + + type2_breakpoint_insert(env, index); } =20 /* type 6 trigger */ @@ -642,23 +633,12 @@ static void type6_breakpoint_remove(CPURISCVState *en= v, target_ulong index) static void type6_reg_write(CPURISCVState *env, target_ulong index, int tdata_index, target_ulong val) { - target_ulong new_val; - switch (tdata_index) { case TDATA1: - new_val =3D type6_mcontrol6_validate(env, val); - if (new_val !=3D env->tdata1[index]) { - env->tdata1[index] =3D new_val; - type6_breakpoint_remove(env, index); - type6_breakpoint_insert(env, index); - } + env->tdata1[index] =3D type6_mcontrol6_validate(env, val); break; case TDATA2: - if (val !=3D env->tdata2[index]) { - env->tdata2[index] =3D val; - type6_breakpoint_remove(env, index); - type6_breakpoint_insert(env, index); - } + env->tdata2[index] =3D val; break; case TDATA3: env->tdata3[index] =3D textra_validate(env, val); @@ -666,6 +646,7 @@ static void type6_reg_write(CPURISCVState *env, target_= ulong index, default: g_assert_not_reached(); } + type6_breakpoint_insert(env, index); } =20 /* icount trigger type */ @@ -831,8 +812,6 @@ static void itrigger_reg_write(CPURISCVState *env, targ= et_ulong index, /* set the count to timer */ timer_mod(env->itrigger_timer[index], env->last_icount + itrigger_get_count(env, index= )); - } else { - env->itrigger_enabled =3D riscv_itrigger_enabled(env); } } break; @@ -881,12 +860,30 @@ target_ulong tdata_csr_read(CPURISCVState *env, int t= data_index) =20 void tdata_csr_write(CPURISCVState *env, int tdata_index, target_ulong val) { - int trigger_type; + int trigger_type =3D get_trigger_type(env, env->trigger_cur); + bool check_itrigger =3D false; + + switch (trigger_type) { + case TRIGGER_TYPE_AD_MATCH: + type2_breakpoint_remove(env, env->trigger_cur); + break; + case TRIGGER_TYPE_AD_MATCH6: + type6_breakpoint_remove(env, env->trigger_cur); + break; + case TRIGGER_TYPE_INST_CNT: + /* + * itrigger_enabled is the union of all enabled icount triggers, + * so it's easiest to recheck all if any have changed (removed or + * added or modified). + */ + check_itrigger =3D true; + break; + default: + break; + } =20 if (tdata_index =3D=3D TDATA1) { trigger_type =3D extract_trigger_type(env, val); - } else { - trigger_type =3D get_trigger_type(env, env->trigger_cur); } =20 switch (trigger_type) { @@ -898,6 +895,7 @@ void tdata_csr_write(CPURISCVState *env, int tdata_inde= x, target_ulong val) break; case TRIGGER_TYPE_INST_CNT: itrigger_reg_write(env, env->trigger_cur, tdata_index, val); + check_itrigger =3D true; break; case TRIGGER_TYPE_INT: case TRIGGER_TYPE_EXCP: @@ -913,6 +911,10 @@ void tdata_csr_write(CPURISCVState *env, int tdata_ind= ex, target_ulong val) default: g_assert_not_reached(); } + + if (check_itrigger && !icount_enabled()) { + env->itrigger_enabled =3D riscv_itrigger_enabled(env); + } } =20 target_ulong tinfo_csr_read(CPURISCVState *env) --=20 2.51.0 From nobody Sun Feb 8 12:15:01 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1768366270; cv=none; d=zohomail.com; s=zohoarc; b=IGoDCRAk28+TFG1vPp1nMu6wiBuMt/ze9OLv1kbYb9DaCpT2BNFa0e8W5/bweWe9Uo+laOQCWdLCI5D+6Ru5zKonGBFrxgIx2X4PwXAir0cCcFpTLwiZU4VP3r1gzCCn/TUJfB8N5m5HEYu0Kz5k0EDjiwEM9RYGY3cf3jFKdTo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768366270; 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=1Vzqjvo/w0Zs6QRyX8FdhDtC3HQSwAJYyNP7h20vpM8=; b=NCMmRlQYphldpZVpFOV43xN/GrR4i0q/l1wigwQsgSCRXY2tPSIxG4vSceGEaXZGw04HGWaoA5i/83SlGCoe3GFhSOq8kbktuCcihIRvYKlu2N0ZPDMyS7Ga0xO45BIXLrqqEDZcsiD4YCHD0SRBAQlYdrLfQLEXYVNqOi1HVM0= 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 1768366270565379.1763711602408; Tue, 13 Jan 2026 20:51:10 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vfsnV-0003tC-7n; Tue, 13 Jan 2026 23:47:57 -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 1vfsnH-0003jx-2R for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:47:43 -0500 Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vfsnD-0003jt-6U for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:47:41 -0500 Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-2a0833b5aeeso82031385ad.1 for ; Tue, 13 Jan 2026 20:47:38 -0800 (PST) Received: from lima-default (123.253.188.110.qld.leaptel.network. [123.253.188.110]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3c49037sm216111905ad.36.2026.01.13.20.47.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Jan 2026 20:47:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768366057; x=1768970857; 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=1Vzqjvo/w0Zs6QRyX8FdhDtC3HQSwAJYyNP7h20vpM8=; b=QiOIL8IUmhu757dA+uS+aSEKq5w4QpIk9KIwR5D19xMHx4/HQjNGS8KuyzZHpJDUKB zOh96t8qAI8A9K2Ao2JuotDmX3nU+5viqWxTozWJhjhvoWQIHAgXHWPZdHG0QbpNwQYM 5NYjV/H7/3sgQcZClH+nak6JMPu8QjzX1DOQpYW9QtMgYy+xVG3U2EjzVlacEa9BB57X zwddhrpDLqhcbZXiwp3Cr8JwZBjKSvZAcrioetWeBw/5w1sNVhgjxzJ3U2WiIcRW0EaT KB3aj5bcQa7I/CVVsB92Q7iRoQvQmW2xenJifxzhiIqPOWVWVa2rA8GOaHjNRS8lvbPC OONw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768366057; x=1768970857; 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=1Vzqjvo/w0Zs6QRyX8FdhDtC3HQSwAJYyNP7h20vpM8=; b=oJZpbz/GM+xO605JpGGNTf5Sxj6NBoxt0cXluUBWzjO3jS9Rpr1sG43hPmg0TtHI7B cwxYqk5+n6yUcsOTJrpLLMbVT9qzPRC3pzx42kjto/qww7rrAm/5nfsjZP5zLR8Kr5oq 8BM34bf29NJthlh9AWYHK25QQPArL0kwm9QIifOCnPTMq9tbEjttYSHB6VA983aU0YtH jHo8xdYMevM4wPVe2HarUiyvKpnQMqYu3rXnaE1BG8WXwB/p22H7rDhOjDg7rE5Zqnji xMvrWUwJlWlG305UGADqNmePkYevA0GP6WFAgHcvqVrFH6HquElqmuLvcle4yB0IT1md YbNQ== X-Forwarded-Encrypted: i=1; AJvYcCVpEuME11gmWO8J2E6KBJcgxZh0ZbpptBZnx2zmQDYH+93SEmzQZuiQvVV9V1FhAN/p0I/pySS1pes5@nongnu.org X-Gm-Message-State: AOJu0YxHc74nZwdmHgrl7c4a3rXFP21XGmeqY4u5TglCcxA08AwSIXat Cq73TOnxLIOmitm4GgN4UMGkN8Os0Er1I6r6GIYcA7SduCfE1z2kxEUf X-Gm-Gg: AY/fxX7jVsEDFPhwchrRHGQIbusu4chUgROF1EtNqa5uEdssO88+FjMmQFtpO02XOQ5 r8/B9IWJk9Es0+Gbs0jVqMIku3zxRM9el84/VMUmy8t8xM99HOen4unYQSfGhnJpUogNmGPj+F3 YvkK4QeLAZdcO37G/f8MQh99URAzMhw+A8DIjn3wEr2WfoBNG/jpi2eBsahw+KLZbKiDUCZkPc1 wod37UqTnKkZnl1nRrYzPyqFjuZxaB2SvPtKX6RAnzGTG5M8s8ERcKOUTaR/34+lHRdO5iSbw/k n8S2S1BD2PFXrwNzUaup9MyBx2KVUh4TGbuZFOBWgRKsnOcGETjZ5pWztMkJcw/3fGlSiuvQYLP Q1etCbc9WPNcbV6bbsCy2XE8BHXS6fowQyOTQvJi80JaNQZ6xEp1R/l61o7//TwwO1GK9fRc+la XxaUQJTeaTuI4jdn7splBExrkPoZ1XOxJLT9QqX+spl95EC6Db+sVvr14JLxH3EKLGFlzqfw== X-Received: by 2002:a17:903:2f8a:b0:26c:2e56:ec27 with SMTP id d9443c01a7336-2a599daabf5mr15329815ad.19.1768366057258; Tue, 13 Jan 2026 20:47:37 -0800 (PST) From: Nicholas Piggin To: qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: Nicholas Piggin , Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , bin.meng@windriver.com, vivahavey@gmail.com, Alvin Chang , Yu-Ming Chang , Joel Stanley Subject: [RFC PATCH 03/25] target/riscv/debug: Implement permissive type unavailable trigger Date: Wed, 14 Jan 2026 14:46:36 +1000 Message-ID: <20260114044701.1173347-4-npiggin@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260114044701.1173347-1-npiggin@gmail.com> References: <20260114044701.1173347-1-npiggin@gmail.com> MIME-Version: 1.0 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=2607:f8b0:4864:20::629; envelope-from=npiggin@gmail.com; helo=mail-pl1-x629.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, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1768366271170158500 Content-Type: text/plain; charset="utf-8" When a trigger type is "disabled", tdata2 and tdata3 must accept values that are valid for some supported trigger type. Additionally, writing 0 to tdata1 must result in the type becoming "disabled". This is important for the prescribed sequences for updating triggers. Implement write tdata=3D0 -> disabled behaviour and permissive accepting of tdata2/3 values in disabled state. This implementation could be improved by checking tdata2/3 values against supported trigger types, but it is good enough to be usable by software. From the RISC-V Debug Specification for tdata1: Writing 0 to this register must result in a trigger that is disabled. If this trigger supports multiple types, then the hardware should disable it by changing type to 15. and, when type=3D15: This trigger is disabled. In this state, tdata2 and tdata3 can be written with any value that is supported for any of the types this trigger implements. Signed-off-by: Nicholas Piggin --- target/riscv/debug.c | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/target/riscv/debug.c b/target/riscv/debug.c index 2190c25f23..c92bd9860e 100644 --- a/target/riscv/debug.c +++ b/target/riscv/debug.c @@ -827,6 +827,28 @@ static void itrigger_reg_write(CPURISCVState *env, tar= get_ulong index, } } =20 +static void anytype_reg_write(CPURISCVState *env, target_ulong index, + int tdata_index, target_ulong val) +{ + /* + * This should check the value is valid for at least one of the suppor= ted + * trigger types. + */ + switch (tdata_index) { + case TDATA1: + env->tdata1[env->trigger_cur] =3D val; + break; + case TDATA2: + env->tdata2[env->trigger_cur] =3D val; + break; + case TDATA3: + env->tdata3[env->trigger_cur] =3D val; + break; + default: + g_assert_not_reached(); + } +} + static int itrigger_get_adjust_count(CPURISCVState *env) { int count =3D itrigger_get_count(env, env->trigger_cur), executed; @@ -883,6 +905,10 @@ void tdata_csr_write(CPURISCVState *env, int tdata_ind= ex, target_ulong val) } =20 if (tdata_index =3D=3D TDATA1) { + if (val =3D=3D 0) { + /* special case, writing 0 results in disabled trigger */ + val =3D build_tdata1(env, TRIGGER_TYPE_UNAVAIL, 0, 0); + } trigger_type =3D extract_trigger_type(env, val); } =20 @@ -897,6 +923,9 @@ void tdata_csr_write(CPURISCVState *env, int tdata_inde= x, target_ulong val) itrigger_reg_write(env, env->trigger_cur, tdata_index, val); check_itrigger =3D true; break; + case TRIGGER_TYPE_UNAVAIL: + anytype_reg_write(env, env->trigger_cur, tdata_index, val); + break; case TRIGGER_TYPE_INT: case TRIGGER_TYPE_EXCP: case TRIGGER_TYPE_EXT_SRC: @@ -904,7 +933,6 @@ void tdata_csr_write(CPURISCVState *env, int tdata_inde= x, target_ulong val) trigger_type); break; case TRIGGER_TYPE_NO_EXIST: - case TRIGGER_TYPE_UNAVAIL: qemu_log_mask(LOG_GUEST_ERROR, "trigger type: %d does not exit\n", trigger_type); break; --=20 2.51.0 From nobody Sun Feb 8 12:15:01 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1768366474; cv=none; d=zohomail.com; s=zohoarc; b=LqxjubdgxDkV7AHWFNQXBopCroA5mPttulL19HkUlm+RGq5Mryzw+bwR2zcgGgnchaGvRCmNVjVRgm782uaMbgAeqbbbfb/jJB/lEhaq/fFfaIL92+Jz+X/NWTS+xKrsGBg6EE1wC+Lx03fjnJku+1h0gtXn103NEy612kzWCgE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768366474; 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=/h9Z+G9EziJ27dTxeY3yWmObXR1T/veTvJS5uPKvEJ0=; b=jVPfplp27gLxypjsaah4mfTt95G4SzAx3KKw2r+sd8xnhAAJq/qn4Fxbjd0xH+TAsW4y8ZMa8sXr8n02DU++fSpWbiDwug5trvSmo5VjofNttkZOWr5HVplmS/w5Dq1cdlz4FRC/ct3/upAlFj1jwOKrl24At1pxckznlmzmM0Q= 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 1768366474474190.02020578118118; Tue, 13 Jan 2026 20:54:34 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vfsnX-0003zo-5T; Tue, 13 Jan 2026 23:47:59 -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 1vfsnK-0003mX-Op for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:47:47 -0500 Received: from mail-pl1-x62b.google.com ([2607:f8b0:4864:20::62b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vfsnI-0003km-Ap for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:47:45 -0500 Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-2a09d981507so3502585ad.1 for ; Tue, 13 Jan 2026 20:47:43 -0800 (PST) Received: from lima-default (123.253.188.110.qld.leaptel.network. [123.253.188.110]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3c49037sm216111905ad.36.2026.01.13.20.47.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Jan 2026 20:47:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768366062; x=1768970862; 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=/h9Z+G9EziJ27dTxeY3yWmObXR1T/veTvJS5uPKvEJ0=; b=kw2MR3V+U7b7ww5N6SBDKHz8YGDRwd+jEuuJQ0LnRr3ut3dh+UiV4wBwfRytCYyEAX CZX4IGKhKzK5W5sUxrnosllgO75IQnixzC0R3ALLzm8xGS7ARv5Vww0fvEXBVYHgTisR HWeJhRhv6V18rnhp09jh0P6YNPDNadS569v6WgScpaULuZHdW70m8a5U+gM81gLjgC5+ X9TMgTGsnNkQoUsWFEPWwvHcF4/hyfq0rIfRJOB69/3oIo50qzDdtC+08Pkxp4ihZgES Nv24YP9QP0hYGXt8Bm2HWGPhBwOLlJy/AKuff3i06umntKCwBWTu3Jm3EAu96V/YC0qZ Selw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768366062; x=1768970862; 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=/h9Z+G9EziJ27dTxeY3yWmObXR1T/veTvJS5uPKvEJ0=; b=JHHPv5slhE7n6IShSgyxj/fVX/uqv+JqSLHDFESdr+dOg1tnhNVaaYIpqlTyb6xPm6 89hpMKIhzzQ4ivqSLvRN3ELNUfDkbnmOySiwzRp1oNHxjyM4pyv1znWkxI0p5xM6Wq1k 1IKe3tLj5Q8w60aLBnFVzvpj9tb5Qmoxs9XNSemLYdnJR0zkGL2avUNbAEZpg8Kfj5B9 OJSVzfK7v6xZ1tPFOe1cWi4/VodSyg1Yt2ft6SWPs0wJ69DvYmQ//SCHbGxHMnzK0YhD ouTuKX5XcrKMu9Rl+eHl+ppqYw4jeOwL16MJHzojOFNVneFbjtLfecWNjm4I9VeFt+Ei BoKg== X-Forwarded-Encrypted: i=1; AJvYcCWz1PMCucO9LRevasoDvunBj+Hz+ZLI1+UlZc+5sXI10okXX2CooUtGgIxFUcNT8W9qHnHoNw/rWstd@nongnu.org X-Gm-Message-State: AOJu0Yw84ous/EqA8xqcvpoMu1z4wljvisEuL+soO4IrJOkCmwFb1gpr CmyCcKSezbk8ZFqAyJfI5+zl79ZVc/P02RLye6Utj2gic6FkqUd9CIBu X-Gm-Gg: AY/fxX6JB2CCEoz0jFJovVhol5ITKOEROwYPMbHDKrvso4QsuWZYBXF9GzL7g1K6uOF JV+eVSs7FLgkI2X1I+bxUeb83Cj0Au04Rw2a8sF9xg2mDl5YYasmbb7LMw+gFvsjhIJ6nil/QXo cgXakbGZfqCku9DQd1hoalYE42SHLcKKXbakH+EYmLfQ7dlE2iYbilktgtA9Gi4u/2JzQ6Jh0+P CVTZKNYthTFi3iHC6OKLsPGtnKFyBBRhSLBjvp4auEDNA6TaDIT02JGXUA77g6rOpYVfElnOltx xx3ADqgAm3VP+k9wS99cSZz2kFQjE1Ze8cX0hpJnCtwp5q4090157zldLHCTGW/Hhy4+JrTe2az zCU+RIOjistrQW3OLFaLjGu7JwpS05RS1H1UyLvF1yN3F22szX/zzBYeJX4DOMeZNcXsxGdySnf f818+u/4WFRwIyQzGUIx3fYfOaNKC3K5Trz/OzYqHHYOaOJkfHZCULQ8/b4Lc= X-Received: by 2002:a17:903:22c8:b0:2a1:3ad6:fab3 with SMTP id d9443c01a7336-2a58b49d64bmr46915815ad.1.1768366062327; Tue, 13 Jan 2026 20:47:42 -0800 (PST) From: Nicholas Piggin To: qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: Nicholas Piggin , Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , bin.meng@windriver.com, vivahavey@gmail.com, Alvin Chang , Yu-Ming Chang , Joel Stanley Subject: [RFC PATCH 04/25] target/riscv/debug: Fix icount trigger privilege check Date: Wed, 14 Jan 2026 14:46:37 +1000 Message-ID: <20260114044701.1173347-5-npiggin@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260114044701.1173347-1-npiggin@gmail.com> References: <20260114044701.1173347-1-npiggin@gmail.com> MIME-Version: 1.0 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=2607:f8b0:4864:20::62b; envelope-from=npiggin@gmail.com; helo=mail-pl1-x62b.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, FREEMAIL_FROM=0.001, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1768366477796158500 Content-Type: text/plain; charset="utf-8" The check_itrigger_priv() did not check privilege bits properly. Move all priv checks into functions and have the icount check follow the same form as the others. Signed-off-by: Nicholas Piggin --- target/riscv/debug.c | 82 ++++++++++++++++++++------------------------ 1 file changed, 37 insertions(+), 45 deletions(-) diff --git a/target/riscv/debug.c b/target/riscv/debug.c index c92bd9860e..2effbb49af 100644 --- a/target/riscv/debug.c +++ b/target/riscv/debug.c @@ -306,48 +306,50 @@ static void do_trigger_action(CPURISCVState *env, tar= get_ulong trigger_index) * Check the privilege level of specific trigger matches CPU's current pri= vilege * level. */ +static bool type2_priv_match(CPURISCVState *env, target_ulong tdata1) +{ + /* type 2 trigger cannot be fired in VU/VS mode */ + if (env->virt_enabled) { + return false; + } + /* check U/S/M bit against current privilege level */ + return (((tdata1 >> 3) & 0b1011) & BIT(env->priv)); +} + +static bool type6_priv_match(CPURISCVState *env, target_ulong tdata1) +{ + if (env->virt_enabled) { + /* check VU/VS bit against current privilege level */ + return (((tdata1 >> 23) & 0b11) & BIT(env->priv)); + } else { + /* check U/S/M bit against current privilege level */ + return (((tdata1 >> 3) & 0b1011) & BIT(env->priv)); + } +} + +static bool icount_priv_match(CPURISCVState *env, target_ulong tdata1) +{ + if (env->virt_enabled) { + /* check VU/VS bit against current privilege level */ + return (((tdata1 >> 25) & 0b11) & BIT(env->priv)); + } else { + /* check U/S/M bit against current privilege level */ + return (((tdata1 >> 6) & 0b1011) & BIT(env->priv)); + } +} + static bool trigger_priv_match(CPURISCVState *env, trigger_type_t type, int trigger_index) { - target_ulong ctrl =3D env->tdata1[trigger_index]; + target_ulong tdata1 =3D env->tdata1[trigger_index]; =20 switch (type) { case TRIGGER_TYPE_AD_MATCH: - /* type 2 trigger cannot be fired in VU/VS mode */ - if (env->virt_enabled) { - return false; - } - /* check U/S/M bit against current privilege level */ - if ((ctrl >> 3) & BIT(env->priv)) { - return true; - } - break; + return type2_priv_match(env, tdata1); case TRIGGER_TYPE_AD_MATCH6: - if (env->virt_enabled) { - /* check VU/VS bit against current privilege level */ - if ((ctrl >> 23) & BIT(env->priv)) { - return true; - } - } else { - /* check U/S/M bit against current privilege level */ - if ((ctrl >> 3) & BIT(env->priv)) { - return true; - } - } - break; + return type6_priv_match(env, tdata1); case TRIGGER_TYPE_INST_CNT: - if (env->virt_enabled) { - /* check VU/VS bit against current privilege level */ - if ((ctrl >> 25) & BIT(env->priv)) { - return true; - } - } else { - /* check U/S/M bit against current privilege level */ - if ((ctrl >> 6) & BIT(env->priv)) { - return true; - } - } - break; + return icount_priv_match(env, tdata1); case TRIGGER_TYPE_INT: case TRIGGER_TYPE_EXCP: case TRIGGER_TYPE_EXT_SRC: @@ -665,17 +667,7 @@ itrigger_set_count(CPURISCVState *env, int index, int = value) =20 static bool check_itrigger_priv(CPURISCVState *env, int index) { - target_ulong tdata1 =3D env->tdata1[index]; - if (env->virt_enabled) { - /* check VU/VS bit against current privilege level */ - return (get_field(tdata1, ITRIGGER_VS) =3D=3D env->priv) || - (get_field(tdata1, ITRIGGER_VU) =3D=3D env->priv); - } else { - /* check U/S/M bit against current privilege level */ - return (get_field(tdata1, ITRIGGER_M) =3D=3D env->priv) || - (get_field(tdata1, ITRIGGER_S) =3D=3D env->priv) || - (get_field(tdata1, ITRIGGER_U) =3D=3D env->priv); - } + return icount_priv_match(env, index); } =20 bool riscv_itrigger_enabled(CPURISCVState *env) --=20 2.51.0 From nobody Sun Feb 8 12:15:01 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1768366487; cv=none; d=zohomail.com; s=zohoarc; b=Q51guFREdJ/iC3Gax5sXMOotZ2UBEYu8eLCK6u3UtvK6fWpNxtfcBbTWBrqAh2dvNF3deruiC4NXgVrKjq3SvP7WREUVkJSxBAclAZVJODcdSTY1reGo5ZCj8YcU92mbN/wVyzXRQKC+RaY+8IPgBDznwsfLnUnJdJ8PgbLZWQ0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768366487; 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=67A9pmsOmD3VIwoIzZX+CzBTINC+AlN1BFRXkGK7aDA=; b=HVHgxI4+SKRaWmafHsdssoW6qGSpUGrHb3OB9TEW9kIOanyZ0yajrDHbSoDmbmLbrcNHjUdmUr8/P1zfe6ebcANN9T5WDwFsBag04PgJBJuOs5iBW1cfYKvm1rw5Rytsf2Yy95icwYHqzGKcJEKe7KkOkIkpha9Eu+eI4SsfjSA= 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 1768366487371807.3896503707571; Tue, 13 Jan 2026 20:54:47 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vfsnX-00042y-Ub; Tue, 13 Jan 2026 23:47:59 -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 1vfsnQ-0003qi-Ek for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:47:54 -0500 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vfsnN-0003lc-BL for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:47:50 -0500 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-29f102b013fso75525605ad.2 for ; Tue, 13 Jan 2026 20:47:48 -0800 (PST) Received: from lima-default (123.253.188.110.qld.leaptel.network. [123.253.188.110]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3c49037sm216111905ad.36.2026.01.13.20.47.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Jan 2026 20:47:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768366067; x=1768970867; 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=67A9pmsOmD3VIwoIzZX+CzBTINC+AlN1BFRXkGK7aDA=; b=JoeFtqSX3yKGlbS8jfuLpXY3e9/a5ytCRHqOSVrLDeRMaA7pZLRvAl07n2Fx/KxfcH 9RTEy9KW+HFqwxmiUM/hEhJXX210094/SSjmjzYGSd1L/cvzMZOPiVnNUOj0/r2f3MEc wU3vAOOUowsFeyhKOGSFhZwKH+tmvfeAfiYk70CIsyG7rdjVAuAf2VykhxpvMsUwDXLI 2aIPG7tdZwzkSil+Ymj/WECtUTmAUfeaRd+gzzRHQ6YChoAYZt8lhXYMNCUy7IXvmUqp LiqUZ4TW45/TAfkSzUaCxUkG48rNQGipduqxe3k9bE6Aqj5+9IckOSYn/ktKXWbwvMLz 7HTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768366067; x=1768970867; 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=67A9pmsOmD3VIwoIzZX+CzBTINC+AlN1BFRXkGK7aDA=; b=eYq49f3wGTASxPNFAZkWkYmf2xovKnXUSnmCc6UNWF/Pa2GlG1X9DCvAJAwXzdKTb5 h0MhmliFmmALPpqKIh0/R4lLpU/8m4MVsMxcFvrvoAHByHoBhM4U03HHwhk2AY3A7ac8 a959sFy2ZixVd2ToJXel8IR61yfiLc2SLt7+2TETkEBdg52WlpEpV6ALwwAXTaxIYG41 6jVxzhkhcgd3ucwogysBv6KrMM9RWUNoTGh4gD1g+Tq6P/GANTJSJeCZaO2k4gSUVBk7 KstQF6UgTx4QYFfgV7HYryLkhOB5+2vSc/YdtunfEWOeobGky9Syy6cH9XaEYcGew11X 612g== X-Forwarded-Encrypted: i=1; AJvYcCVjeb5Hk2GyZjvQg5W1PhhzRi1GUczAIW3mKOQN95aGEfQ0MZytJU64P23zsIr98Q2Z2PHOnv/kc5lH@nongnu.org X-Gm-Message-State: AOJu0YwM+Vj5l8xUHfQ3i8m1b29ATaSaFdpEhQfoYTBpRwWcURvMYx0m OmfRkePDcROsx0E08yte7iIeTd3znoXzoaJxXeHh9i1dIruI9r75CQJg6csSEg== X-Gm-Gg: AY/fxX6uDNwMTcmrdFOrClTFx7kAxiCVSX9Gw4aXG/PMsf3zfCitW4Fo/CcPfwb46oc kY55kneppj1krFYtjx6a0lyq6GCMwn9s5BjR10+dl2CTMd1zUFspiu9TLDDsqD7EPv+GgMKmLYd QFDmmxTnZPQWDucDJjin8C+cmcFXR6MxiRZazT3z2FvAgp7YFEeO7Uo2ENiQWeG/3DxuzlUCFo2 dUSb1dqRTI0eCU/A6nBn2gqkR1o5AXq0ibHVK/mEfwFnvwtGKSKKzdDYycHmOVJh6xk+jD7mnjP PjMwiBulN942HAbhKlbaq9Cssz0LWXYnL+8lwNtb5DQJqhfJiYfgrZ90xgCPn77nEM7kdZjhORY HEabnTrS3SsO8Vgmr8zzw4EiFf9hhe+cbLRwhEDSr0rJmJ4qQ5Fj5j5x7PjSDeEOZy0IERXdOff xIowbdG/dYMrt7SqXd3a1P/uP0YEg9ntiyaLfXhErog7rvzc6o31MiTtLTFWF0wHnMf2/YTQ== X-Received: by 2002:a17:903:b84:b0:297:e3c4:b2b0 with SMTP id d9443c01a7336-2a599e56a0fmr15606515ad.54.1768366067440; Tue, 13 Jan 2026 20:47:47 -0800 (PST) From: Nicholas Piggin To: qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: Nicholas Piggin , Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , bin.meng@windriver.com, vivahavey@gmail.com, Alvin Chang , Yu-Ming Chang , Joel Stanley Subject: [RFC PATCH 05/25] target/riscv/debug: Update itrigger_enabled after changing privilege Date: Wed, 14 Jan 2026 14:46:38 +1000 Message-ID: <20260114044701.1173347-6-npiggin@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260114044701.1173347-1-npiggin@gmail.com> References: <20260114044701.1173347-1-npiggin@gmail.com> MIME-Version: 1.0 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=2607:f8b0:4864:20::62e; envelope-from=npiggin@gmail.com; helo=mail-pl1-x62e.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, FREEMAIL_FROM=0.001, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1768366488062158500 Content-Type: text/plain; charset="utf-8" The !icount_enabled() path should update itrigger_enabled after changing privilege, which can change whether or not an icount trigger is enabled. Signed-off-by: Nicholas Piggin --- target/riscv/cpu_helper.c | 7 +++++++ target/riscv/debug.c | 7 +++++++ target/riscv/debug.h | 3 +++ 3 files changed, 17 insertions(+) diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index dd6c861a90..e096da939b 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -1030,9 +1030,12 @@ void riscv_ctr_add_entry(CPURISCVState *env, target_= long src, target_long dst, =20 void riscv_cpu_set_mode(CPURISCVState *env, target_ulong newpriv, bool vir= t_en) { + bool change =3D false; + g_assert(newpriv <=3D PRV_M && newpriv !=3D PRV_RESERVED); =20 if (newpriv !=3D env->priv || env->virt_enabled !=3D virt_en) { + change =3D true; if (icount_enabled()) { riscv_itrigger_update_priv(env); } @@ -1075,6 +1078,10 @@ void riscv_cpu_set_mode(CPURISCVState *env, target_u= long newpriv, bool virt_en) riscv_cpu_update_mip(env, 0, 0); } } + + if (change) { + riscv_cpu_debug_change_priv(env); + } } =20 /* diff --git a/target/riscv/debug.c b/target/riscv/debug.c index 2effbb49af..51c5934bfa 100644 --- a/target/riscv/debug.c +++ b/target/riscv/debug.c @@ -1090,6 +1090,13 @@ void riscv_trigger_realize(CPURISCVState *env) } } =20 +void riscv_cpu_debug_change_priv(CPURISCVState *env) +{ + if (!icount_enabled()) { + env->itrigger_enabled =3D riscv_itrigger_enabled(env); + } +} + void riscv_trigger_reset_hold(CPURISCVState *env) { target_ulong tdata1 =3D build_tdata1(env, TRIGGER_TYPE_AD_MATCH, 0, 0); diff --git a/target/riscv/debug.h b/target/riscv/debug.h index f76b8f944a..5a14b7894e 100644 --- a/target/riscv/debug.h +++ b/target/riscv/debug.h @@ -153,4 +153,7 @@ void riscv_trigger_reset_hold(CPURISCVState *env); =20 bool riscv_itrigger_enabled(CPURISCVState *env); void riscv_itrigger_update_priv(CPURISCVState *env); + +void riscv_cpu_debug_change_priv(CPURISCVState *env); + #endif /* RISCV_DEBUG_H */ --=20 2.51.0 From nobody Sun Feb 8 12:15:01 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1768366099; cv=none; d=zohomail.com; s=zohoarc; b=H7hG5Aad5YW5l9xlc+2yHjeF2THX07VWnZWv2R44La0Ii+uDCkbacbrOMgz+jjoEdDnpwj6wQbwcj4eMgW9Wnf4XzSl/ns3gcK9WTNF44SQUs56Cq2vKZHwVPyfqUllo5qGOgEbI9v02hgNBgm6y9FLylCNN4zCi98Llr3MhN6A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768366099; 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=VF8crHFa+z0IL+BbS7WLnNbJmuaTvsGsIEpdQfUVH40=; b=fLK6aYIG2xNmLqAXWZAQCryXe+CJMYMmOXUKah/+4H1zhghXF8HMI+9yl/SOKmVMLT7uAsKmT6ZCKyt9ne6j6w3Z90PPw7OPJ5UR2xtv5QAIc+aqkh8S1BLY9EpwLRnR1qx25H6GxP54z3bWuwis4idp25ZhxCdtJlcXPk3x9yI= 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 1768366099938483.42195249579447; Tue, 13 Jan 2026 20:48:19 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vfsnZ-00046Q-DY; Tue, 13 Jan 2026 23:48:02 -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 1vfsnT-0003rk-8b for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:47:56 -0500 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vfsnR-0003md-Rm for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:47:54 -0500 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-2a0a33d0585so51417165ad.1 for ; Tue, 13 Jan 2026 20:47:53 -0800 (PST) Received: from lima-default (123.253.188.110.qld.leaptel.network. [123.253.188.110]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3c49037sm216111905ad.36.2026.01.13.20.47.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Jan 2026 20:47:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768366072; x=1768970872; 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=VF8crHFa+z0IL+BbS7WLnNbJmuaTvsGsIEpdQfUVH40=; b=CVjs2Aq35X7bnnnTo8VwaifmOjomDw6B1TuS3eUmL18hYqZFq3LYgd6JDOhGW901SF qoBx8AgTAI2ONvQOqHWThH5TSfHCayxyL985dYWEcwinQgyxBI9fk2kRkbX9EhyMKu76 GJTa8810xQWbrRGmeWF5AbT59Amt3mhlUWkoqTVB4X9RfLuAfkUMrOefov47BkFIWUWB jn1j7dMmL9Sy1AwUDmypn4UZ5ZGU/a18KA8ZjS/pLAIf9H7IziOiygJFAlTdUreIggJ+ nGOSyCBIpUY0/augtXlI5z/KecU5aRstSXVAXXvqQUG9SowvLeEhOy/BBlUM0yzkIEjt zsHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768366072; x=1768970872; 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=VF8crHFa+z0IL+BbS7WLnNbJmuaTvsGsIEpdQfUVH40=; b=a2gdmCWaFpxueVAKeQfeBhxX8tRjKvS7JMVaC6tTrEdDQ7QsXeg0GBWjGA/LalJY/N EIt5cmzHbAzOjjApcv2hSVUUaMlejj8IS4xgq4VZVezxX1xnq74I35nu3pC6QkH/KLnM lhriIRZh25huZdewEVx1192aT5y/eKHXpu5eiJevPArtEmtnS7LmnMeMg5GyZ+gYO6Ey 2sgPD/Nej57UZXBjB2MWA58sl6wD4fz752RI5i9CtLolc1gXML5SQSM1efMSIjTZPQtG C3yFvHeSlRqNftwPZ738A87d99USgIYBHOGMosJ+9tcvDeTX7ntVut4DHgiDGjwZmrn1 AR3Q== X-Forwarded-Encrypted: i=1; AJvYcCUeUX84RNEiczPBAQFntQvp6JOmBxt1B+9PCmW7t9iHb2rw5gyIKYZKhOU93yAUk/pOXO7FhQSBl2FP@nongnu.org X-Gm-Message-State: AOJu0YwlJ2ywZdzNabKech0iSkqx1O+2N88Co13RxKfQogZvkHypVVa7 esMNYNbGB0a0e0LMj9i/TuVdRACLoXANffb1uA7yCb52trRF7zSvW8BI X-Gm-Gg: AY/fxX6JMMuVnBB/dG0XB4eB92xNxpFW5e7Y4mgx8FPsHKjM6x9DWUc0ghdXdAxIdeL 52hITJrE9D3wBkHUTej48wBD57GC6spUslL/rXXYoj6c9o4IvKO/fU9APb91/v+NjWXrm/qHPOH uLPeP/P2l8RlZCxzWD5Vx3bbiyd7SP7yMwuqgLOsyyWSFReyC6R+aCojPFZPvslP6u0JwTqdQ2Q xJn5vYB+vJ5WN9xe7J1UyEZEm3yGLFJKfue3//AVwrqYGDGgdv1kzh4qkZPFT/P0aQj+pv1VrzP R8BVCF50FTCpHkh5gMscTquZBhCYUrCg/9tLOH7LhilXfjKXDA+2EITVTss7P314OSCJnYPgbHF hMpXFPtMIXWeZsXN8t4PY5JtHD7MQlMdNu00iJ5chr6bxClMKJmo+F2iOOCLi/8yGFBfNB5bJOY qbHA0WOLHfK3QMPiMR9lwOGOwGXlDm0IB0T1W5/XX5oD4KODR70lMxUjwjlG0MiSB3f2V5Sw== X-Received: by 2002:a17:902:ea0a:b0:29f:301a:f6d2 with SMTP id d9443c01a7336-2a599dd18b2mr14059405ad.19.1768366072493; Tue, 13 Jan 2026 20:47:52 -0800 (PST) From: Nicholas Piggin To: qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: Nicholas Piggin , Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , bin.meng@windriver.com, vivahavey@gmail.com, Alvin Chang , Yu-Ming Chang , Joel Stanley Subject: [RFC PATCH 06/25] target/riscv/debug: Implement get_trigger_action for icount type trigger Date: Wed, 14 Jan 2026 14:46:39 +1000 Message-ID: <20260114044701.1173347-7-npiggin@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260114044701.1173347-1-npiggin@gmail.com> References: <20260114044701.1173347-1-npiggin@gmail.com> MIME-Version: 1.0 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=2607:f8b0:4864:20::630; envelope-from=npiggin@gmail.com; helo=mail-pl1-x630.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, FREEMAIL_FROM=0.001, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1768366100471158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Nicholas Piggin --- target/riscv/debug.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/target/riscv/debug.c b/target/riscv/debug.c index 51c5934bfa..af9c4e37cd 100644 --- a/target/riscv/debug.c +++ b/target/riscv/debug.c @@ -110,6 +110,8 @@ static trigger_action_t get_trigger_action(CPURISCVStat= e *env, action =3D (tdata1 & TYPE6_ACTION) >> 12; break; case TRIGGER_TYPE_INST_CNT: + action =3D (tdata1 & ITRIGGER_ACTION); + break; case TRIGGER_TYPE_INT: case TRIGGER_TYPE_EXCP: case TRIGGER_TYPE_EXT_SRC: --=20 2.51.0 From nobody Sun Feb 8 12:15:01 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1768366095; cv=none; d=zohomail.com; s=zohoarc; b=L+NbYjLXXPy9+7OMUOdfddKC9An4TbWbw1sE3lXEHPCak4lM8pMXvSMRIiM7DZHOBy6k5as2oFvVJBnCuBFub5bsdRa/YiRnLWvLu+Le2vu8icdItznvDbD6V6JV5rND+x8PzRCDcbOHi5QsQKgf5iZFBc16tjQpsQFJqOiq9n8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768366095; 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=VUx02NhdWX1hPv+U0D9qWfOlv5rUxOUAPxBnO2/bP0o=; b=Asz8xApiTF20h3z4017wrM3tpxHhVcBXwgCWG4ZUebBd0h4HF8dBsxrhnp+MM8rqqNeOcVkVKPjSh5H9v70xLAOhvyC8h5A6IT/HKpp0a1Qi2C3sNlxbamdLXwGmtr+laqf8pG69A6ZN92EwFL86CPIAEd3+nt3FxgOSMx1wLYs= 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 1768366095370823.7130845110539; Tue, 13 Jan 2026 20:48:15 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vfsnd-0004IR-9U; Tue, 13 Jan 2026 23:48:07 -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 1vfsnY-00045i-87 for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:48:00 -0500 Received: from mail-pg1-x535.google.com ([2607:f8b0:4864:20::535]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vfsnW-0003na-TE for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:48:00 -0500 Received: by mail-pg1-x535.google.com with SMTP id 41be03b00d2f7-c1e4a9033abso4311825a12.3 for ; Tue, 13 Jan 2026 20:47:58 -0800 (PST) Received: from lima-default (123.253.188.110.qld.leaptel.network. [123.253.188.110]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3c49037sm216111905ad.36.2026.01.13.20.47.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Jan 2026 20:47:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768366077; x=1768970877; 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=VUx02NhdWX1hPv+U0D9qWfOlv5rUxOUAPxBnO2/bP0o=; b=U0jsbf/elWvV4Y8O1WA/qoOCkrCGVlJJE5gXOu4YouGFzKDvDfcfwzobV29bBBUsQl IJplOspgeUR/oZU2MdkIFWKs9Vj74Iem1adYT5qabJNzQy6p3asQdNu/rjMw3WJmwtSE MobMhD/6xTO6IT0DD8jjkBYTkCx5c52tyv0wFNBEisBYzg+4yv7E4bsT17dHz8Sw8pAs KgqBv9F+jDM4aUZbOfjFMpD4hk+52PbPX6yuSRONghHz2/R0X5qMjMqVemC1Sou20stu CLkOqmZXhpyeX7FjcI7aLQHyvzqZLzr4w4GO0iP3ff80XcYdBJ/Yc943X1FU830FvhC7 GmXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768366077; x=1768970877; 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=VUx02NhdWX1hPv+U0D9qWfOlv5rUxOUAPxBnO2/bP0o=; b=ljIaX7d5cF0tFoWh+ki5IkwdefG4A+X6dYA+bYEph2wjkSuz/QGCI0wIO5O3DRuTns t+bMs98w+O05oVZX9Nkxo0iZfUhzxaR+f0GqKq6esHQ174iY49FceGEiwGgs3pyPV1Jl yMQovkpxSeNANQ+GF0Ytg93eU1KuWBwsH8/GKp4QNXB9qCYj/bLNg70z+qPT9KsNUgEK WEEjoTQOR7T/+WxvQQl1W6TpWMwhdYpJRbTX+O2rz1JmWb9gJWfgCzLJ98YEnUKu01cO 0MMOvy72I08hx83OHl35iAfk7HyNRF3Cy97CuTcjM/VQ/tf5g8LCGy4mTjMq4BN59nYF PRgQ== X-Forwarded-Encrypted: i=1; AJvYcCXC62zo5XhQDY/cqtWPkR/Mk4jyn4AEPlZn91LrSVvynrvs14jQEDXmkmPqw7NiE8F5UkG6t1190m/K@nongnu.org X-Gm-Message-State: AOJu0YxA7oDEHHuuu/JlYjTvr/G2JvA2jTQ12SXydAhUBL9UJzVwz2NE pKLST7OSy3ee8NEfo9FUpcBilDoGX98Q6JolYshPoNVkv6taYeKxpnmH X-Gm-Gg: AY/fxX4iYtJsP+3zW901Ou81V5wbO9mTFSzO91Tvk0RMBxFur17Ibih0+bRqKvNwMqL CnHSOHINRSWG+LCKiUlJ5rle3nuVv/Mu5LlDHogV+CdkdRtsei1c8sZhZp3bc7fiXhk27YmmmKW /x9xpcy1rT6cy67cIZ7npB0zR+sYHx6Hm4+mh3WNN7RbvZMZ5TmPiuFQoGoBJ/yp7SK61plsMFv RkgYmgZ/oMrJBC0TxHXBIe8gQmRpA+fnf6qgC+GbVcvJWrUeaSvQ9H4Ky/YSdQSM+vtvwrMgK3Z WlDLQHmVjwupiX4NqCIjkugtOHIDrdPvoq11S3Ie6IrZd0b97KUDuN92FuyUBiPHLhEX9v0Eqa9 iQ0bGat+JIagcL0SPooQGVFPuJ2i9PHhJ7PduTA84IOYKYyqbRyoGLpEV2kiJZsf7U3QmCbSmS1 V+Zrt1Qwsc+7SQOBrF7oHUwx1vPpG3P+HC2aHMDXCIbaNXGU8kGKCRRUqqA/ydFY1D1apiHw== X-Received: by 2002:a05:6a20:748e:b0:366:14b0:1a3f with SMTP id adf61e73a8af0-38bed22cc8bmr1549074637.77.1768366077556; Tue, 13 Jan 2026 20:47:57 -0800 (PST) From: Nicholas Piggin To: qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: Nicholas Piggin , Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , bin.meng@windriver.com, vivahavey@gmail.com, Alvin Chang , Yu-Ming Chang , Joel Stanley Subject: [RFC PATCH 07/25] target/riscv/debug: Fix migration post_load icount_enabled() test Date: Wed, 14 Jan 2026 14:46:40 +1000 Message-ID: <20260114044701.1173347-8-npiggin@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260114044701.1173347-1-npiggin@gmail.com> References: <20260114044701.1173347-1-npiggin@gmail.com> MIME-Version: 1.0 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=2607:f8b0:4864:20::535; envelope-from=npiggin@gmail.com; helo=mail-pg1-x535.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, FREEMAIL_FROM=0.001, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1768366096989158500 Content-Type: text/plain; charset="utf-8" itrigger_enabled is relevant to the !icount_enabled() path, the test in debug_post_load() is inverted. Signed-off-by: Nicholas Piggin --- target/riscv/machine.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/riscv/machine.c b/target/riscv/machine.c index 09c032a879..34fd73c920 100644 --- a/target/riscv/machine.c +++ b/target/riscv/machine.c @@ -230,7 +230,7 @@ static int debug_post_load(void *opaque, int version_id) RISCVCPU *cpu =3D opaque; CPURISCVState *env =3D &cpu->env; =20 - if (icount_enabled()) { + if (!icount_enabled()) { env->itrigger_enabled =3D riscv_itrigger_enabled(env); } =20 --=20 2.51.0 From nobody Sun Feb 8 12:15:01 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1768366117; cv=none; d=zohomail.com; s=zohoarc; b=fOgWkRnsLtDlKse8YEe0eHJ2SZg9l3YQo18bkpKXRQyobZ/4JGTHocFxM042G4AdOiUp0oRJIaEIyLaAprisf9oJjZPAj5l4c0twusFYoSh42Re3gnVPv3kvL4qKMALmCZoMDoTHvF8Vk4gLG0r04a4vb/Coc6LcgaSlN94n61s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768366117; 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=9saHGUl9EQTg8H2X9TYI4nPrJjSrH32IOQ9QngSUeho=; b=caQU8mVFvFEaqhvCXDcyXL3/7x6ig6xgAF6z+v7yGGBUcyiSLwmJH9FhyrH+VBkw1FJRkdB4I8Bn7zDVsHlV9pI+m7zHBDac+8WHFxKaPhNYlhKUB6agnDvUI98hPrXjy+48WXF6dJST/LZSIPBn35vxr+aEij/SaM+/Nyl+isE= 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 1768366117402100.41142167477574; Tue, 13 Jan 2026 20:48:37 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vfsnq-0004SX-Dh; Tue, 13 Jan 2026 23:48:20 -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 1vfsnd-0004Jv-Fp for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:48:07 -0500 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vfsnc-0003o5-2M for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:48:05 -0500 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-2a0d5c365ceso55440665ad.3 for ; Tue, 13 Jan 2026 20:48:03 -0800 (PST) Received: from lima-default (123.253.188.110.qld.leaptel.network. [123.253.188.110]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3c49037sm216111905ad.36.2026.01.13.20.47.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Jan 2026 20:48:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768366082; x=1768970882; 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=9saHGUl9EQTg8H2X9TYI4nPrJjSrH32IOQ9QngSUeho=; b=HQuez1mmZCuztsSVIYri+kbcvk74ipBqPBcou+0yRUksnDJsBWExTBIS1rk1ARi34n NxilwSyf6O8LCto8cbOKuRHLNWdJcaG+8Mq2cfugHswwZJURXgpp9TRNN+ZJYy3LK5Qc iiiGWNO/CIQd0DJvahYftjyeqW83Us+YEyuuTkYzI2RlZekgKn4o1ECsTtq6l7ndzi6A 37V1rLxQ3oiLaZL7akJHJLhZb//9SpNQ2aHiv49MGEhAzns5d/NCiTgzQDsTecAoDULS hrZxCvdlnq1AoSZgji6DpofrjFYFSEOq6Yi/bBxR5AfKPaUWHT69XxXkFWt6GRSjxyo9 w/ew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768366082; x=1768970882; 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=9saHGUl9EQTg8H2X9TYI4nPrJjSrH32IOQ9QngSUeho=; b=PfTVgqXd5QGtzvG31rpVI5vLFm4Qz6sx9hBZM5/p8qP/H7l4KGHmKDb48mPUHh16SX faaeKM43PWau5BmGFsUK8Shjk1CgSDVTptctTv7EawngWxGPlLC8OiuZPozhVL1uPgcq ppZ+Wo9HcbiZWbdNUjDmHcolb5x+1OjctRHZB4l1sINf74IOJgTQEMIF2XCOQX794Htx 6YoAKV7OEs9YcSGzzNNoyBKo4j1JgLpH9nswcT+wJ5YuI7WIZXMWZIP8aXRCuIwcqguI LHcsyb9lVNu9mBVED8Po3y0TjBPi8qtoijW6LepEY7Mu0Rn6oN02wbISRZ8N+km6vyKj LOVw== X-Forwarded-Encrypted: i=1; AJvYcCWh40njX9Tx+JKVmPPkoSTmOQRJ7HApPHWMLGCmIdIuq6iKL+WdkMVwD9EEG30+a/jFPMnK3fdKyHSM@nongnu.org X-Gm-Message-State: AOJu0Yxlc8VU2Pt+3ZSZrOyZm8fzNEGKHlRXe/qnTWAJ6A8nVym98CFp /GevYWTGmbY1waBPNEW9T+O8wtiqpKAb+V/vAa/DTxpT2m0MJkSfNHNh X-Gm-Gg: AY/fxX5vopPmCzRi1MFbzb4ZxicBAkzIl0l/SqUem+Dk0ODfMDdRQuC3JLaO/7QetOY t32cbh3ZmvlVSZabnvtpN5K8rjB+F1S+014FLCzsO8dbZh7sVqhGQTybhTFGgdTmHIkHq8Cny1M MILfPb3gGuVdhK8D5x7sfIMc82aHWkM11TQ6z9XDZFEe1bNR62uvskuJw6K/68U3ZD2rLsunklo Oyg06KKP+uTRnliTI9TCqj4SnBg+k3m3lJNeoO4DaZCuHL7b4Ioa+ub8WaGuypPsD/oJX1LSI32 SAWxbIexvqOFT0/V5qKq0A+3TmYMe5GosSLDKpWXOX9J1pNl987bmVcl/1O//giBcbJG5nBEDp5 /j1aJ/hI1gjMCwUh2n/ANWTMSPF78KgzVbyHWW3AxN0VoX1EcMc1pFLd3aG+xVjI+ue0gCawnGm A1T9TJqMwc4T/exw1B1aGxV3zpmWaO79GYCXDRfdAbGAcZ2eRRiLHmdlRMW+La1JS08dnRyw== X-Received: by 2002:a17:902:c410:b0:29e:a615:f508 with SMTP id d9443c01a7336-2a599e23086mr14796685ad.28.1768366082562; Tue, 13 Jan 2026 20:48:02 -0800 (PST) From: Nicholas Piggin To: qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: Nicholas Piggin , Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , bin.meng@windriver.com, vivahavey@gmail.com, Alvin Chang , Yu-Ming Chang , Joel Stanley Subject: [RFC PATCH 08/25] target/riscv/debug: Fix icount privilege matching icount_enabled() test Date: Wed, 14 Jan 2026 14:46:41 +1000 Message-ID: <20260114044701.1173347-9-npiggin@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260114044701.1173347-1-npiggin@gmail.com> References: <20260114044701.1173347-1-npiggin@gmail.com> MIME-Version: 1.0 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=2607:f8b0:4864:20::636; envelope-from=npiggin@gmail.com; helo=mail-pl1-x636.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, FREEMAIL_FROM=0.001, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1768366118690158500 Content-Type: text/plain; charset="utf-8" itrigger_enabled should be set if the privilege does match. The test is inverted. Signed-off-by: Nicholas Piggin --- target/riscv/debug.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/riscv/debug.c b/target/riscv/debug.c index af9c4e37cd..ecedffd3b9 100644 --- a/target/riscv/debug.c +++ b/target/riscv/debug.c @@ -679,7 +679,7 @@ bool riscv_itrigger_enabled(CPURISCVState *env) if (get_trigger_type(env, i) !=3D TRIGGER_TYPE_INST_CNT) { continue; } - if (check_itrigger_priv(env, i)) { + if (!check_itrigger_priv(env, i)) { continue; } count =3D itrigger_get_count(env, i); --=20 2.51.0 From nobody Sun Feb 8 12:15:01 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1768366329; cv=none; d=zohomail.com; s=zohoarc; b=fiyJqCdcCDiAiaTIUAWwVxNrenKIicOHBx7FedFF+C0g8cyjrOmthldE5LhuxG8cYdf/xGfcIvVLtkmaIRMyCoY9tWS6Zksrhw2R+A0quMVvzI5tPsJZ3Lgh8RK1Cg3XRJrqOTPtefV91ZGP2FxK+APDTJHvxE8KaCtv3tbikwc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768366329; 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=3luBxTCpa8sPpFQ5gO3pZBPxYpvr96ETycK7Q9rpUQ4=; b=RiFt4W2HunxYOFoNBbfVW3u8ncEJSnycHIJMv08qr4hD0Y37/k5MLIINIuqIPTNnv4BWPqOx5kyYAJMSJQJZXFCuSHzHp2i90pLBxsKHmyCgDPTzdwcTl0/YiAR3dfRysr7ZPZpBxpvq4HAx/we39mAqXpKJ9aoMPnqvvrNQsdA= 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 1768366329221313.08263253848554; Tue, 13 Jan 2026 20:52:09 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vfso2-0004bX-J3; Tue, 13 Jan 2026 23:48:31 -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 1vfsnj-0004MH-Sa for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:48:12 -0500 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vfsnh-0003ow-0n for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:48:10 -0500 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-2a07fac8aa1so62234615ad.1 for ; Tue, 13 Jan 2026 20:48:08 -0800 (PST) Received: from lima-default (123.253.188.110.qld.leaptel.network. [123.253.188.110]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3c49037sm216111905ad.36.2026.01.13.20.48.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Jan 2026 20:48:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768366088; x=1768970888; 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=3luBxTCpa8sPpFQ5gO3pZBPxYpvr96ETycK7Q9rpUQ4=; b=htVNtMFnJuczslD+dGzRsJDkTDc23l8OVJi/0Kc4hs9qMyI0iAJI93UWu5DYZL304M HADf8GiQ9wAQG88tMG0dhTGwKtMeGNhl/bfKL82l4BZDGznxNbuCzQ77vh1Z4DUIFTrb oji2Hq7soP1GQj/LM2B4gMHU96Un5X1j022B9vEjAmRkbYdN76YcXZ1X3DswhFaInc2j SBFVpvwcHRcgLUe/0sMDD2Ma6Ngghug9Tj9C7wC+aWiCBLK+HPoBSGvVNf0Mf7x5vqYM zjHDqXd+sn8RC91vw5DXYaBz1cKQtYmaHluE8C5/BCY93OFR68FhZdgpA8z7nbu+4s1R 0Pjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768366088; x=1768970888; 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=3luBxTCpa8sPpFQ5gO3pZBPxYpvr96ETycK7Q9rpUQ4=; b=EsFR00p+lKBxU7LPfV59WWa+PB1ZkOiiS87f689llJtjhDZMwP3P9+KTomMKk07nnM 4s0ewqCGR6l5GQMHgBkpaif3dMFCXgsHBtKC05oRy26dB956tvTZs7slgK26hBAc5km9 xvNBZR24I1t8dLWB93sDZjoDeGVpABjobZgij/KsPO3IpDefk7pdTguodV+I5nPeEKfC eY7hZw3ozqmMsH1QpIdKJS08se8CQLC6KDg8qmQVL76mqSARI9ldQQ6rRxGt3Tdrxg5a um/nsqMdCG+d+ZiL28udzeCeU1tl0uHAlwAXxfuOg3wlHfbDPQKtBE3p8uZnc7tXAxVn NBLg== X-Forwarded-Encrypted: i=1; AJvYcCV1DC4GI9Ckd+ys94oIJJeL0urouuTLhh74fwmGPbhM97Jb7eNuyhkMSWNW9lyTiOiBT8Nf6TH/Eevy@nongnu.org X-Gm-Message-State: AOJu0YxeVDMpyJfeflwF+ZjxaTDOuxZKnZ9Lah2thKnRnjPSvg/sM6WV UAzNK74u2DIbD/BDuG0pTY1BJFbuEtQPYczg0d3muUnAjuIAHjIhTZ1O X-Gm-Gg: AY/fxX4x35uJ0sfkakC0x8C7yhG0SroUdd0yPi1PtAHi0DHpZoJ8+JZxmFgO5JSegaR 7UZJAGC5MQKj/wg+dC+/5K7tbFge2XYXhqgV8Wwx0OQLeeLprcrF8sQQQzqBljdhS5BsIxycZyU PWLhfrnlrmDGXJj1Jnoobb2018d6Fly+GauJ/7VTeZCeSSZeVr93fwk0rAkzM8+gMVs7JQVR76q O5pyh/+nFYVBGzbN3cNQJ79JIL9UNNPU55NJ3aUST8beJOyfso7bycKG9oUG/pK9n7LfgjfoH2u JYr8cGJYOtz2jU5rqJbbB37kzik6zEIv4N27F0sd/PjZWku9fQe+1a9obKtiCayiKcDrP9ojKF0 orTtIfHuUsK6WL7J/u1YsaEEUlMqCkEFoLvUOU7IYqgZWHjDKKzGorLFOSRCCX+Ku1j2KF3aMZg FKaiJMg6hajrHRfjif0QoDedr7Ncyct2W3hCbGHOCaJ/zD2MAP0wBVak0tyOo= X-Received: by 2002:a17:902:ea09:b0:2a1:e19:ff0 with SMTP id d9443c01a7336-2a599e76d50mr16007985ad.39.1768366087731; Tue, 13 Jan 2026 20:48:07 -0800 (PST) From: Nicholas Piggin To: qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: Nicholas Piggin , Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , bin.meng@windriver.com, vivahavey@gmail.com, Alvin Chang , Yu-Ming Chang , Joel Stanley Subject: [RFC PATCH 09/25] target/riscv/debug: Implement icount trigger textra matching Date: Wed, 14 Jan 2026 14:46:42 +1000 Message-ID: <20260114044701.1173347-10-npiggin@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260114044701.1173347-1-npiggin@gmail.com> References: <20260114044701.1173347-1-npiggin@gmail.com> MIME-Version: 1.0 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=2607:f8b0:4864:20::634; envelope-from=npiggin@gmail.com; helo=mail-pl1-x634.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, FREEMAIL_FROM=0.001, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1768366332191158500 Content-Type: text/plain; charset="utf-8" icount triggers are subject to textra checks, per spec. Signed-off-by: Nicholas Piggin --- target/riscv/debug.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/target/riscv/debug.c b/target/riscv/debug.c index ecedffd3b9..d835c0e79a 100644 --- a/target/riscv/debug.c +++ b/target/riscv/debug.c @@ -675,11 +675,12 @@ static bool check_itrigger_priv(CPURISCVState *env, i= nt index) bool riscv_itrigger_enabled(CPURISCVState *env) { int count; + for (int i =3D 0; i < RV_MAX_TRIGGERS; i++) { if (get_trigger_type(env, i) !=3D TRIGGER_TYPE_INST_CNT) { continue; } - if (!check_itrigger_priv(env, i)) { + if (!trigger_common_match(env, TRIGGER_TYPE_INST_CNT, i)) { continue; } count =3D itrigger_get_count(env, i); --=20 2.51.0 From nobody Sun Feb 8 12:15:01 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1768366141; cv=none; d=zohomail.com; s=zohoarc; b=nsHF8LP25sGdSv1vP3m+0/fulK5kxez1SrRn5BjyThYBvl5QEgEfs6LQI6/2Tn7RGrMdXUkQgQ0GvFXrVe/DHDJISKGHG2NqVjreinqdYvQZu4jxnBFvI70LSg9/svcM2s5dapjMM5IlBpn00v66dTXvRqPvYlzp/MlUoB02lBo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768366141; 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=Z2Hb19DkgCo3AeCu7BNIkPGvJ4ku8WfXnjreJrPfJ2w=; b=CaUOsZWBF5r5T1mY1dtH7dl5H1biszk//LeT1pnET/IHOM9SQD0ybfEEUmh7BcfVPYA0XgwN9Nooxjnp2FIkO0RWRAY4vsN15SmYMsc+pe2y50VBj4MJloBbYz0QiovwuSJ1+xUovOuBeuEipEErn3LBZJF1L1faj5OXcjUxDXM= 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 17683661414646.469184288671613; Tue, 13 Jan 2026 20:49:01 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vfsoA-0004nb-G4; Tue, 13 Jan 2026 23:48:39 -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 1vfsnp-0004Ut-Q9 for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:48:18 -0500 Received: from mail-pg1-x535.google.com ([2607:f8b0:4864:20::535]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vfsnm-0003pN-46 for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:48:17 -0500 Received: by mail-pg1-x535.google.com with SMTP id 41be03b00d2f7-c4464dfeae8so5432003a12.3 for ; Tue, 13 Jan 2026 20:48:13 -0800 (PST) Received: from lima-default (123.253.188.110.qld.leaptel.network. [123.253.188.110]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3c49037sm216111905ad.36.2026.01.13.20.48.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Jan 2026 20:48:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768366093; x=1768970893; 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=Z2Hb19DkgCo3AeCu7BNIkPGvJ4ku8WfXnjreJrPfJ2w=; b=VCohNXzHnmUFbYanvB1wLBVdYjrAS8rlpxDLDdCc5JgFYClQbcoqTBGzpzAGU/vgTF yazinHY4dNnqcq2j8tAIc3+/I1HCxwP4m6Wgx8WqkU2qBrT7sA+t/0tzcpzowq/Rikv+ K8Wd43DjiATlUdqSSb218cZbrbFMlr/9nZTicOaLFtWvjtjv3zxJ1r9t/fiKAx1knitu OKgibv3ySYzaTEZWF4AMt9OCje1oIYb8b6+qguwoFITgmlqPDh0ytf+0uPmwKF1dVeoA n6y7XW+gMRnNHMtwpjsPS1GS789DF/eEMws+SbbyWq8oc+JaHxLWOS8Mt4j/MrTC9k4+ ZfAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768366093; x=1768970893; 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=Z2Hb19DkgCo3AeCu7BNIkPGvJ4ku8WfXnjreJrPfJ2w=; b=HyW8kckJL3+KY3AimvzSRcGtWMZdN3zBwM6ITSiuRVwy3WWeXvDF0CxUMMBw1L3lWK DXDBZPv06p312oWS5ibyD1oFF9BBuFb2AcZ5LtDVrJOmTE/fDEJwiZiNZxjKy8/Y0N9I f/EFjcLdU59aGUu/wb4c4y7Zngo1g1Jp+8Ech7PNMTpLjg5WYECGRf0b7p64WjkuzDqm TJP6LaiSKtezRcK+NgBXXIOmv9w6c6am/PjQNp4hNwgpkCJTAnrYZLzcMqgQoFNc7/Lv LsYWPDQ3MprFAWTL2hs9AwRT7JN07kjkJFeWWhdetpX/TSBJPQm365VqirBrDY+mIcAz EskA== X-Forwarded-Encrypted: i=1; AJvYcCXA4f0xERc01HcNNigxscwJ/QSAGbEfqnDV1a3ArDmpEdjZPImfWpheXIQak3FzvLi7dATgQmcM7yLM@nongnu.org X-Gm-Message-State: AOJu0YxVLXN6Y9Ch3lqN1wyRcjoZ4g4Wc1k4JUkuUIL+tDh2nmsHhgXv zJIyFzIfxKupdcLMA+21kNooA8wrUsqaCQZFjQlrUPThMQ6nwmk9DwrZQa4Q6Q== X-Gm-Gg: AY/fxX4xyDrmtODiQ5lOTQ0GjsQn3JeKIrHpeYz/wT3P6j8Rj5fbCq60anXIK7kfS+7 QFYk4C5ytiHHKW4vwNq6rufoB2yWzFY78yi75WtblTjggzmSjpkQ4vzStXiW7ymz0TI5wG7DFrn RlZ/R9no3vRbAkfq26AoDj/1MDnq9YZReH7B4li68KuXxk4L4gsbbb92BhBc6ARMWhv9n/OPbT0 irJvSb6bto1adxTPFtc0KwdQOaW6qM3rPujl9vt3b+MtYBE2kiNF3VEKWp90xzIVchOx5JngsFC DEd5A4+KyI7THteMIS68wo+xxblHqQAdeS1SyyAHaxp3IJVVLIIeGrjQVB4pW9Az6G9sNuhlIt2 FJqnQobS5oQ+4fxD+hJnLzmrCD/OFzLzS/0N7yRMgMoPs5dk8xFOPuiBikcAjbrC50sqXAHeJ8Q HrzE8FxEc4cdxaGmKyAmfVsDi7NuF5+vp/Flc/NO8jGZWh6QsqfxL/x8mL2NhARjVO8BVEXA== X-Received: by 2002:a05:6a20:729b:b0:361:2d0c:fd81 with SMTP id adf61e73a8af0-38befaf6a41mr1244313637.28.1768366092875; Tue, 13 Jan 2026 20:48:12 -0800 (PST) From: Nicholas Piggin To: qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: Nicholas Piggin , Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , bin.meng@windriver.com, vivahavey@gmail.com, Alvin Chang , Yu-Ming Chang , Joel Stanley Subject: [RFC PATCH 10/25] target/riscv/debug: Maintain itrigger_enabled in helper_itrigger_match() Date: Wed, 14 Jan 2026 14:46:43 +1000 Message-ID: <20260114044701.1173347-11-npiggin@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260114044701.1173347-1-npiggin@gmail.com> References: <20260114044701.1173347-1-npiggin@gmail.com> MIME-Version: 1.0 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=2607:f8b0:4864:20::535; envelope-from=npiggin@gmail.com; helo=mail-pg1-x535.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, FREEMAIL_FROM=0.001, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1768366142600158500 Content-Type: text/plain; charset="utf-8" helper_itrigger_match() iterates over all triggers so it can maintain itrigger_enabled rather than calling riscv_itrigger_enabled() which becomes O(N^2) where N is the number of icount triggers. Signed-off-by: Nicholas Piggin --- target/riscv/debug.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/target/riscv/debug.c b/target/riscv/debug.c index d835c0e79a..7ae02fe2d2 100644 --- a/target/riscv/debug.c +++ b/target/riscv/debug.c @@ -693,9 +693,18 @@ bool riscv_itrigger_enabled(CPURISCVState *env) return false; } =20 +/* + * This is called by TCG when an instruction completes. + * TCG runs in single-step mode when itrigger_enabled =3D true, so + * it can call after each insn. + */ void helper_itrigger_match(CPURISCVState *env) { int count; + bool enabled =3D false; + + g_assert(env->itrigger_enabled); + for (int i =3D 0; i < RV_MAX_TRIGGERS; i++) { if (get_trigger_type(env, i) !=3D TRIGGER_TYPE_INST_CNT) { continue; @@ -709,10 +718,12 @@ void helper_itrigger_match(CPURISCVState *env) } itrigger_set_count(env, i, count--); if (!count) { - env->itrigger_enabled =3D riscv_itrigger_enabled(env); do_trigger_action(env, i); + } else { + enabled =3D true; } } + env->itrigger_enabled =3D enabled; } =20 static void riscv_itrigger_update_count(CPURISCVState *env) --=20 2.51.0 From nobody Sun Feb 8 12:15:01 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1768366283; cv=none; d=zohomail.com; s=zohoarc; b=lcx4wF839Mi24QHHWxfn8yH/3hiRU3sKtQXlOkiuKyA6kt/4qDch3JFP19YsQ0jMlLk5YqH8LHf04EoBkrcQMyzKjwveo3j8UaOrPRLtXlRhNc2pvjWG/gOfVBIQU8OCsp+wVEFaoHsroHxlEBysd4gSGb/X8vThF7Cw7cC40YU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768366283; 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=Ofm+N/LDiPzYAnLWkV+TDBOxIPdJ2LtztPUqgJYqw8Q=; b=WhRF/ugLFNPtocVJNBHeHKIoB3fm5Q17C3jZxxmgzqQcl+DnVHCCL5zqM6l4mx8/sq1UQVUqFjojNL8EJ+HS9R0wHmbVkSMLg+mTdjKjRVCgHDDsvjGhp4qCj9mja1y2mdAzK3kx+0+wwf+5ay2N7NTMhlBb7arWu3FKGrSK5QI= 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 1768366283199137.50352048640207; Tue, 13 Jan 2026 20:51:23 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vfsoC-0004zT-Ef; Tue, 13 Jan 2026 23:48:40 -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 1vfsns-0004aA-Vz for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:48:22 -0500 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vfsnr-0003pz-9m for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:48:20 -0500 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-2a0d5c365ceso55441635ad.3 for ; Tue, 13 Jan 2026 20:48:18 -0800 (PST) Received: from lima-default (123.253.188.110.qld.leaptel.network. [123.253.188.110]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3c49037sm216111905ad.36.2026.01.13.20.48.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Jan 2026 20:48:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768366098; x=1768970898; 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=Ofm+N/LDiPzYAnLWkV+TDBOxIPdJ2LtztPUqgJYqw8Q=; b=gb1ikUnmqWxyGPbSXLtbmZmzyS7mgtcfr9F0zapmRCqlvWGAqt/4D58vxNIlDV1QMR 5Lr09+bSwU/L8ZhroSvTFRtI+8q45I/jy3FY3Isascffi4h6X8QOrj/UItMxIDitoBhF yhJeKmVXfu/J/M9BIsCkcCQ4X/F6D7vGQOvWP+VoBsdaRau5Ezf7g7WvohOoi/0rZ4EI c4u26S0NzJY9vaEEDeAziJIUEuIh+ljB813+g/e0Kfyyg5Ia96mqnKc6ih3jXOBkBVjy iVqu+2jer6kE9fXkcKazBcNXiodgJMp4zDbClYSR5ygJcja3y4Qo9vaanQDy84JaeYF+ AGwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768366098; x=1768970898; 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=Ofm+N/LDiPzYAnLWkV+TDBOxIPdJ2LtztPUqgJYqw8Q=; b=R++MM8+/8OJ2TCYr7ap4soLbM7R914rsoT7al3hoT8AftwY4QSd9Mo2+k/sUWApHXR /JN90GJvODF4/s+euyTwlvqqE0ZwJQi3jvI9R1WRVrg0anFiWesFdnDBx78e18d7TsfC pGL95/HRt/Zyx7sakdM3OHCpPrSYCkM1iG9U/j9bND0qxxJDv58UcdcvPtrhNCXXOLIP h5pMt9ilgKr343hsXvbiY8c0vC2r5dZxJ8yflZeIsaVF3OJtzkf/tsZ5nqweGal43wro 0T7BVt9pN5cttYo3Jaf9tbHwBBaEuREL+l6zM2q9n5XcFBCP06MmuHra7XTG72HTDAJw 7vNQ== X-Forwarded-Encrypted: i=1; AJvYcCUw9wJDVh7/foPWOmy3ybQodMh4w7KucItz981PC5R/QNPNwyZMoUhoBWEi5nxqK63vceOSqNQPmpXX@nongnu.org X-Gm-Message-State: AOJu0YyvmLoOFtoL3FYoxrAKQcc8+hO8wo8xzWRyv2fWF/d21Y4MJj6S ARsK02GRxAc0T1jb2mJu5VSqc/iFEe2Uu4U38yrVgE8JBMlyXTRzrbiC X-Gm-Gg: AY/fxX56xlYfC7AEG7zvhTosZznFm0RRtJgu1VoiSzJ/8MXHKbWtRHeNb3BFC6f9cXZ HzcYv/+txFnjpm3Z0NtwET+LDeMV/0/F5rLJ6A0Cq5XB3/rMwHFjPYGZGU50o1Ngw8YV45lxeGk Ktb3lvFXoA+gO6uJt30jEDzNnaiwGO82Mh0ndRzhfOE3wsjU6xlXJGMJE80Y1agZMyUxO/j+mlh tRmsjje99ZbDxH3trr9JRpCyGxhPNVK9b2qvPgdtTvH6FN6oGl13fZzL9zbzTGQgmKWrP8kM0z2 Em2Kx346iAAluN4MJZp5WwUO73gGVXwjxiZvWq6Udbn2CJs+2RR9WP31XoSlen6UpDf1vXijSPj LolhzLZw+/2xH+gtx8EUcsi6QSVb4yu9K3sJY4H6m/fwexQ75wUuFucwnv4smsBSsNgO5yHaOV5 ouHwV9nrotczIuotjYTqAEdGSrUnf4+8BszvQKa0sF0RXQobEST+xITcLNg9arSTCRyPfcAQ== X-Received: by 2002:a17:902:d4c7:b0:2a2:f2a5:4136 with SMTP id d9443c01a7336-2a599dc866amr14488245ad.22.1768366097974; Tue, 13 Jan 2026 20:48:17 -0800 (PST) From: Nicholas Piggin To: qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: Nicholas Piggin , Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , bin.meng@windriver.com, vivahavey@gmail.com, Alvin Chang , Yu-Ming Chang , Joel Stanley Subject: [RFC PATCH 11/25] target/riscv/debug: Fix breakpoint matching action Date: Wed, 14 Jan 2026 14:46:44 +1000 Message-ID: <20260114044701.1173347-12-npiggin@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260114044701.1173347-1-npiggin@gmail.com> References: <20260114044701.1173347-1-npiggin@gmail.com> MIME-Version: 1.0 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=2607:f8b0:4864:20::630; envelope-from=npiggin@gmail.com; helo=mail-pl1-x630.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, FREEMAIL_FROM=0.001, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1768366285310158500 Content-Type: text/plain; charset="utf-8" The debug exception callback is too late to find the action for the trigger(s) which caused it, and it is actually passing the wrong thing to do_trigger_action(), which expects a trigger index but is given DBG_ACTION_BP (which will be interpreted as trigger 0 and use the action set for that trigger). It could be possible to derive the trigger index from the bp/wp address, but that is clunky and it is really the action that determines whether an exception should be raised, also multiple triggers may perform their actions in the same cycle, so it is more consistent to check action during the breakpoint matching phase. If a breakpoint exception is to be taken then that is signaled at that time. Signed-off-by: Nicholas Piggin --- target/riscv/debug.c | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/target/riscv/debug.c b/target/riscv/debug.c index 7ae02fe2d2..bd61b7ff02 100644 --- a/target/riscv/debug.c +++ b/target/riscv/debug.c @@ -280,7 +280,8 @@ static target_ulong textra_validate(CPURISCVState *env,= target_ulong tdata3) return textra; } =20 -static void do_trigger_action(CPURISCVState *env, target_ulong trigger_ind= ex) +/* Return true if an exception should be raised */ +static bool do_trigger_action(CPURISCVState *env, target_ulong trigger_ind= ex) { trigger_action_t action =3D get_trigger_action(env, trigger_index); =20 @@ -288,8 +289,7 @@ static void do_trigger_action(CPURISCVState *env, targe= t_ulong trigger_index) case DBG_ACTION_NONE: break; case DBG_ACTION_BP: - riscv_raise_exception(env, RISCV_EXCP_BREAKPOINT, 0); - break; + return true; case DBG_ACTION_DBG_MODE: case DBG_ACTION_TRACE0: case DBG_ACTION_TRACE1: @@ -302,6 +302,7 @@ static void do_trigger_action(CPURISCVState *env, targe= t_ulong trigger_index) default: g_assert_not_reached(); } + return false; } =20 /* @@ -718,7 +719,9 @@ void helper_itrigger_match(CPURISCVState *env) } itrigger_set_count(env, i, count--); if (!count) { - do_trigger_action(env, i); + if (do_trigger_action(env, i)) { + riscv_raise_exception(env, RISCV_EXCP_BREAKPOINT, 0); + } } else { enabled =3D true; } @@ -965,11 +968,11 @@ void riscv_cpu_debug_excp_handler(CPUState *cs) =20 if (cs->watchpoint_hit) { if (cs->watchpoint_hit->flags & BP_CPU) { - do_trigger_action(env, DBG_ACTION_BP); + riscv_raise_exception(env, RISCV_EXCP_BREAKPOINT, 0); } } else { if (cpu_breakpoint_test(cs, env->pc, BP_CPU)) { - do_trigger_action(env, DBG_ACTION_BP); + riscv_raise_exception(env, RISCV_EXCP_BREAKPOINT, 0); } } } @@ -1006,8 +1009,10 @@ bool riscv_cpu_debug_check_breakpoint(CPUState *cs) pc =3D env->tdata2[i]; =20 if ((ctrl & TYPE2_EXEC) && (bp->pc =3D=3D pc)) { - env->badaddr =3D pc; - return true; + if (do_trigger_action(env, i)) { + env->badaddr =3D pc; + return true; + } } break; case TRIGGER_TYPE_AD_MATCH6: @@ -1015,8 +1020,10 @@ bool riscv_cpu_debug_check_breakpoint(CPUState *cs) pc =3D env->tdata2[i]; =20 if ((ctrl & TYPE6_EXEC) && (bp->pc =3D=3D pc)) { - env->badaddr =3D pc; - return true; + if (do_trigger_action(env, i)) { + env->badaddr =3D pc; + return true; + } } break; default: @@ -1067,7 +1074,9 @@ bool riscv_cpu_debug_check_watchpoint(CPUState *cs, C= PUWatchpoint *wp) } =20 if ((wp->flags & flags) && (wp->vaddr =3D=3D addr)) { - return true; + if (do_trigger_action(env, i)) { + return true; + } } break; case TRIGGER_TYPE_AD_MATCH6: @@ -1083,7 +1092,9 @@ bool riscv_cpu_debug_check_watchpoint(CPUState *cs, C= PUWatchpoint *wp) } =20 if ((wp->flags & flags) && (wp->vaddr =3D=3D addr)) { - return true; + if (do_trigger_action(env, i)) { + return true; + } } break; default: --=20 2.51.0 From nobody Sun Feb 8 12:15:01 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1768366382; cv=none; d=zohomail.com; s=zohoarc; b=m0/e3SGbj71XuECQvzFSmbzTUxYNcOw4RDERjLm+HU64IPCjQjbR/V916wZ7esBH9A5zJ4rJ87yJEK1Hs8v1jLTdZRFlCfMjHgkZerGcN4sHpiq/NcCfCOpZUU/AdJjaezI9K3oI9P3oLb+2PNT/qL8ZQHQNVXKUZ02Zb7BIKgU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768366382; 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=CotJR1Z3l8Bpy1C6R68fyNJ4Hc80/eynZMelGXfH+B0=; b=hb9Zcpq5t590jkniZN9BeReYFdCwCYKhlcEGhGyFugDn81BFnzCWByDGq0QuVtA3rCOTfz32O7Q+qSvanFxbLKrX4B6ecAynSG1d51e+aCm7lCvz1CPSAn3uiB7O8M3tfccwxG9vKEnpWW2HoVb0OV1QPPQjBwRxWcPRfsGZE58= 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 1768366382820518.0255629235129; Tue, 13 Jan 2026 20:53:02 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vfsoB-0004tf-T2; Tue, 13 Jan 2026 23:48:39 -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 1vfsnx-0004ay-Q9 for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:48:28 -0500 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vfsnw-0003r4-DN for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:48:25 -0500 Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-2a0a95200e8so47288055ad.0 for ; Tue, 13 Jan 2026 20:48:23 -0800 (PST) Received: from lima-default (123.253.188.110.qld.leaptel.network. [123.253.188.110]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3c49037sm216111905ad.36.2026.01.13.20.48.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Jan 2026 20:48:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768366103; x=1768970903; 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=CotJR1Z3l8Bpy1C6R68fyNJ4Hc80/eynZMelGXfH+B0=; b=KXJ15O2pra4lK9wQ5ATVm5imY+IRKyx7IxBUdf/k2efp1VM+97U/oADwlsR22YvPqY M+xjutrHnmiImExz0Bn/OYxzRa3U81o/Y/danNBb1M3nTOkVCyqz1nGh+IWs5ZE2dmE8 RECE0ER34iNz9DO2vCRkCy5d4MUua5vYcHi7t2BJN19wT4Upow2qkLU8ngoglJxkXrHJ Nj00dLlvKygK6GSNLRQWSESrZm7jVmNVPih50LfAmms0oW2pFb6NYGXivgP6/18ekzt8 NNl2qGjX9gga4WrWYkrd1zdvWYkTROPI3UKLx9egarhhPq6umYzJjYa0DFSPv/Qb6lZR 6x3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768366103; x=1768970903; 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=CotJR1Z3l8Bpy1C6R68fyNJ4Hc80/eynZMelGXfH+B0=; b=AhApnsOonpZoYkVMs73iWtWWKsSHzbha7YJm3YFZkAc6aKFuDXWStSNNhdz9PLcA3H 6agAaBvY+QwNWHNBHmuGPdX8kDF0fbsT6ZQUkLQ1LMM3w+pBQe2gXsL//9KQKm07lfMU jlaXXqIkICtOLmQPWenzp9ZFgmQy8i2eHEMIJKwKX5oqeVHHm1Jame9866sv6j80zmYZ K67W5vZ5omXZKV6UNZN53dprhroUehm7IJYMr9NSp/HY8nmQgU9tLndOWRhd0eZWi3jZ 3kpBDy+91LFdE1zVaax1wU82KzRvfKJvZQbbXVZuFYS7FTrxcJ7SvI1T3wLVExpyXQtj gz/g== X-Forwarded-Encrypted: i=1; AJvYcCWQvYpDZ/C8R1UBNLZVaUM8wenD4P2QIgvGQqyXcjBjr69JON87iRJvgBWtX/xrzTEilhhf9YPE/OcK@nongnu.org X-Gm-Message-State: AOJu0YxfPjZzQIAtpOLc3riS2ubLMNM8t4oogCtNaGUGd8FXR8VHUNzK VxfvJTU1E5Xg/Dn59xmNUPvWCIBA22MipeEPVhMpqid5mbZtdC5g4MIE X-Gm-Gg: AY/fxX419IkFq7M5cHok+9uetWtIrWHJKkmDA/2Ow7xipL0GyqD+g9JBAwsypb322NE wHkzXgiEi9zx8fpv1qA+mKgfLXDl5Stu6CI5JfaNSSvVotuO2cDHosUvMYXKw35VNa27RRJjEzp cWMD6pTmAJotCEZ7vQRVNheYs/wtqOGZGJfSuPAxLIuO+EkYlOwQE69cYdhL1RK5klAYf6d+aWN oU51c33usDAajAcgs/unc2ht5MRKOukdOicdnp20Uz7xWUfi4c/NcBHxWvWS7zRgcWT1UJ/gM39 4iVMSbXfATc3oNYhY5uAISPJLBXTZZLe0TxfifCH40vQKyJ7WnjpxQ9zIEGqK5BkOuUjhPysqlw 7EK6KbaRRRqdpigV4ffZn5EaRhDkQ/jJLcoUX7LSY9mWjvcRHViKjTMlmjFFVTO88Oj4fb5KFz2 RqOybT3Uzxh2w9lg4hW2PadYuGnQuTOiun4XPYDlxh0SNESMUzFL8R0fjQ9udMDu5PbUXqdg== X-Received: by 2002:a17:902:d552:b0:2a0:f46a:b842 with SMTP id d9443c01a7336-2a599e76f97mr14835745ad.28.1768366103039; Tue, 13 Jan 2026 20:48:23 -0800 (PST) From: Nicholas Piggin To: qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: Nicholas Piggin , Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , bin.meng@windriver.com, vivahavey@gmail.com, Alvin Chang , Yu-Ming Chang , Joel Stanley Subject: [RFC PATCH 12/25] target/riscv/debug: Put mcontrol load/store match address into tval Date: Wed, 14 Jan 2026 14:46:45 +1000 Message-ID: <20260114044701.1173347-13-npiggin@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260114044701.1173347-1-npiggin@gmail.com> References: <20260114044701.1173347-1-npiggin@gmail.com> MIME-Version: 1.0 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=2607:f8b0:4864:20::62a; envelope-from=npiggin@gmail.com; helo=mail-pl1-x62a.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, FREEMAIL_FROM=0.001, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1768366385650158500 Content-Type: text/plain; charset="utf-8" When an mc/mc6 trigger triggers on a load/store and raises a breakpoint exception, put the matching memory address into tval, as is already done for exec addresses matching. Tval for breakpoint exceptions is optional in the spec, but it seems more consistent to implement it for load/store if exec is implemented. Signed-off-by: Nicholas Piggin --- target/riscv/debug.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/target/riscv/debug.c b/target/riscv/debug.c index bd61b7ff02..19c45fb13c 100644 --- a/target/riscv/debug.c +++ b/target/riscv/debug.c @@ -1075,6 +1075,7 @@ bool riscv_cpu_debug_check_watchpoint(CPUState *cs, C= PUWatchpoint *wp) =20 if ((wp->flags & flags) && (wp->vaddr =3D=3D addr)) { if (do_trigger_action(env, i)) { + env->badaddr =3D wp->vaddr; return true; } } @@ -1093,6 +1094,7 @@ bool riscv_cpu_debug_check_watchpoint(CPUState *cs, C= PUWatchpoint *wp) =20 if ((wp->flags & flags) && (wp->vaddr =3D=3D addr)) { if (do_trigger_action(env, i)) { + env->badaddr =3D wp->vaddr; return true; } } --=20 2.51.0 From nobody Sun Feb 8 12:15:01 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1768366283; cv=none; d=zohomail.com; s=zohoarc; b=hm8Ys9RSHzJO13nmEQZoJZ/a5uTEkPNlXfkAkg/ba7cL141fl3CAw9U2+2y+boSbLOMQUTVnPKswy4BVQGdvIk0C6xdgAerIXnIW9k6nlrAcvUi+8cCj0X9QgQTYmh1MsUTuV6wQ1O34Zs44ce/roPZDJSENeu3ictBiGQms8BI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768366283; 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=3xGtMJKc8fbK/RX0Osf7Yr/1w4EJKUbQsbZnj2zQwzQ=; b=NdZ2duAQ/yIuWgUHDYMc7o8yJ/M8sc0G/eDW+YgEflLnw1Z/J69EZgt++ZzkhQwvWvk64jL9qbBU3BZlRbzcJpD6s/Ie3FfWX8G4DNBVCbuSFy9ko4dS0gXYiZQjWQvylh4yxvhSbmS6oszxTBoiLgFlu/54dQ9wlPX6f+y93ms= 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 1768366283225814.7969003351919; Tue, 13 Jan 2026 20:51:23 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vfsoE-00055u-JT; Tue, 13 Jan 2026 23:48:42 -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 1vfso2-0004gh-RI for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:48:31 -0500 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vfso1-0003rV-CF for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:48:30 -0500 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-2a1022dda33so50079665ad.2 for ; Tue, 13 Jan 2026 20:48:28 -0800 (PST) Received: from lima-default (123.253.188.110.qld.leaptel.network. [123.253.188.110]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3c49037sm216111905ad.36.2026.01.13.20.48.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Jan 2026 20:48:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768366108; x=1768970908; 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=3xGtMJKc8fbK/RX0Osf7Yr/1w4EJKUbQsbZnj2zQwzQ=; b=lJojp72H7poCTQGsEjSJgB4eJD7veMik52sB9fDMst5PSb8H+sDVMVcg6cJua4faBE tFHhhvmUXvMG67CLt2eOa0v8RDQTrZQn3/COm7W2iwBczkhguyRNXbTXJOpYAVVaZiP1 6OWNanuJv8X7hFxHxQvVbPLEnynpBKbRPcJB2aoL+zQtyYUJyC9WXVLhubVgzVazEiqp ywweOG8JLvuMU1wDvvFJ8v6ZBUQ6ZdVi6+PERSzjILqCGTuQsvH00KQFq2SQYak7oEm2 vblO5KQIOOTKy4fpcnyLY9WRNkx7TBZibJTSQM1Dt0TqLfcPmEzWOkTFU8rgfFSYNHpH c4zw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768366108; x=1768970908; 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=3xGtMJKc8fbK/RX0Osf7Yr/1w4EJKUbQsbZnj2zQwzQ=; b=CVDeY2U0jERUNRA5qSJcUa7q2GwKlaA42GySOmsBC/91Q4HEfmVIUGkHgwrovnp2bo rX7U0TFtNVYbZ4E/2hDOJ2dQrbOq5NS/8bUqSwCR3RurTeCrnH1+YRlASX10AQoOeMdX h7gYtdXbQBCCbOq7lfZRNeGCvTXWFJGmYL1NllVDH6DuMci1/ogoeOhKdmRHicDxM2nF P8ggM8/8D2ty6oFEa0355BCl6cK+A8d2SsiGFsoJIM8AXQ2mq3zpivJcMRkBSNyiKMLk NaP5qQzBeFQQvJbDw5wxm6cjW5JpfIc0F0pEJtyUcirdflG0buXeBpG2+K9zMy02VQq+ xZ5w== X-Forwarded-Encrypted: i=1; AJvYcCUN3l9YrTyAvK5zD9utOD6SLneZNq33JeeSL2YmJENv+6uCgT5TPmF5XZX8N99P/DV1kPTHJvU4VyJe@nongnu.org X-Gm-Message-State: AOJu0Yz9P2WvfjIBfcjpmLoWB/qAjGQUvmnOUby2wpHXmruP93T76duU f8gjAQXcS6eQNjLrDGHgL+iAB8ivrKkuNajnyZXFU3yjFey5bMjpd3bg X-Gm-Gg: AY/fxX66D7JxW9a5c2GUdSa3ZgX1no0wwyva7QB7VOBHSHNTXw8DvJFrYNhtogGN5u9 0bMDC6yF7aAWMZL+BEmZ+v5vNMziIXAngOjyVl/k+RdOfUpDbqHmPMIFC//WCvb74xzIDQLHqza 4Bx4exVlEsrArbqYvJrml/Bx8bGYxV7t9JIF6NUCHn3zf0+VA63Z5IkjhiZLNsUXaG161Rzi1FH 2ZH769pMRJJNiDtGro7NnMEQv7ZMBb6JJK71zQvafsMzgK/k6sY+Zrut63fL1a9z8Un1kj4/qqa TTsuIOommaE+Zd1zYYwcbaHTHkbe09HjHLVP+GigD2vVo2/lrk+iMYmJ33O7sSWeE6tpEI99vaN YvB89H2s7OvFzPghWv8wfwT1HAQFEM/0PHi3MU8aQRxbTu/OrgljXHGpDf9Z1n6nP2yO1b40cPh 0NI66bJATCKwkzzNvJm4MdSJLtSNSaxIyjfo9MXg6emxrYZRy1C5JqrC4vI5M= X-Received: by 2002:a17:903:2cf:b0:295:99f0:6c66 with SMTP id d9443c01a7336-2a599e09e05mr16186025ad.36.1768366108085; Tue, 13 Jan 2026 20:48:28 -0800 (PST) From: Nicholas Piggin To: qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: Nicholas Piggin , Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , bin.meng@windriver.com, vivahavey@gmail.com, Alvin Chang , Yu-Ming Chang , Joel Stanley Subject: [RFC PATCH 13/25] target/riscv/debug: Remove breakpoints on reset Date: Wed, 14 Jan 2026 14:46:46 +1000 Message-ID: <20260114044701.1173347-14-npiggin@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260114044701.1173347-1-npiggin@gmail.com> References: <20260114044701.1173347-1-npiggin@gmail.com> MIME-Version: 1.0 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=2607:f8b0:4864:20::62e; envelope-from=npiggin@gmail.com; helo=mail-pl1-x62e.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, FREEMAIL_FROM=0.001, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1768366285255158500 Content-Type: text/plain; charset="utf-8" Remove TCG breakpoints/watchpoints when the CPU is reset. Currently they get lost. Signed-off-by: Nicholas Piggin --- target/riscv/debug.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/target/riscv/debug.c b/target/riscv/debug.c index 19c45fb13c..973de3b2e2 100644 --- a/target/riscv/debug.c +++ b/target/riscv/debug.c @@ -1131,6 +1131,19 @@ void riscv_trigger_reset_hold(CPURISCVState *env) =20 /* init to type 2 triggers */ for (i =3D 0; i < RV_MAX_TRIGGERS; i++) { + int trigger_type =3D get_trigger_type(env, i); + + switch (trigger_type) { + case TRIGGER_TYPE_AD_MATCH: + type2_breakpoint_remove(env, i); + break; + case TRIGGER_TYPE_AD_MATCH6: + type6_breakpoint_remove(env, i); + break; + default: + break; + } + /* * type =3D TRIGGER_TYPE_AD_MATCH * dmode =3D 0 (both debug and M-mode can write tdata) @@ -1147,8 +1160,6 @@ void riscv_trigger_reset_hold(CPURISCVState *env) env->tdata1[i] =3D tdata1; env->tdata2[i] =3D 0; env->tdata3[i] =3D 0; - env->cpu_breakpoint[i] =3D NULL; - env->cpu_watchpoint[i] =3D NULL; timer_del(env->itrigger_timer[i]); } =20 --=20 2.51.0 From nobody Sun Feb 8 12:15:01 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1768366136; cv=none; d=zohomail.com; s=zohoarc; b=G1OeSLgZOYpcdGu5FofZ3vRRtTrsVEuIuscaTJ/BhWq8KQjSIwi1UJgFgomEQkQzAy5W/SkyeEL3zHscR896j3EPg0wF8fXQGQ9DTX7L0qXBZxkF5QGvGQyNXYPBbwNKWTnvZNCp4XkGfKgP8UwAUTlSsiBKMOFQtVMpI94H18s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768366136; 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=kAsFVKRwN90WkmQQPQFGWYihLeux/Lo7eb+Pl/bXD/w=; b=E0zauX1P95P79fvExg+NrYjHv03hk14z8tAup1G2zUYeJUSiqwU0WJs2K/f7yyPgvXfe480eL2lYIRiQ6szZP5HSq5sf0lOaVIOCxd6IC6G+WDWHjK7iH/Hfx5aOQ7Ui8SC/uvdMiFGyJtPEkBt7hKF0g6Rr/VD6DhXN3uk4C0g= 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 1768366136513562.5404707267676; Tue, 13 Jan 2026 20:48:56 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vfsoG-0005Ms-Q0; Tue, 13 Jan 2026 23:48:44 -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 1vfso9-0004q4-69 for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:48:37 -0500 Received: from mail-pl1-x635.google.com ([2607:f8b0:4864:20::635]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vfso6-0003sG-Kv for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:48:36 -0500 Received: by mail-pl1-x635.google.com with SMTP id d9443c01a7336-29f102b013fso75528125ad.2 for ; Tue, 13 Jan 2026 20:48:34 -0800 (PST) Received: from lima-default (123.253.188.110.qld.leaptel.network. [123.253.188.110]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3c49037sm216111905ad.36.2026.01.13.20.48.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Jan 2026 20:48:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768366113; x=1768970913; 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=kAsFVKRwN90WkmQQPQFGWYihLeux/Lo7eb+Pl/bXD/w=; b=R5I+AdKENkytsOwYtqEoGJO9jL0nPSRjB9JnEmI05yMDI7xxcCCU0wHEsT9LNTTgLk VK2zfd1WJe1zYvFBkLzt4GflHnscq7viYTmjaCc2PiqjS6dCBUG6lXIHn6/NXU29LP/F B2ZsaKRpaI3qoEvCEQeGTfvgecKC2uFPYhXAZHDUGUU5D2kuRTT7VDC5LYHuYYcGhIJi GdxpjlNgmFWPObWGeLHiDBDACLH1Az7juqVZa+PcEwWK1HE6aCVcxNfbFSXe7D111mzg x2aDbiobEn6jonte+fqvILjIpVeeunRRitJkFjw6QjmE7+2bUK7FT187Nm6L27KJG3X4 3PjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768366113; x=1768970913; 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=kAsFVKRwN90WkmQQPQFGWYihLeux/Lo7eb+Pl/bXD/w=; b=GUInExKeZT47ZxN/ok18AGh4AlICbVhMTwcKpU3aJW+Zaa13wL+2sxDXG8E9tZFueB 380Ja8Lv+T3CWQfgvK32f60xzm15UhIQXgJHthceU0+E4qqtRJ6FsS6bWnmZaeDucqiI Mjk+/ZZ2ESMAnuRRrQHwJSpqeBjfs/Eokzc0ajxVudxkJKqPBSyLehHsnPyQhrz/g9sE 5g7DDbmqjGSdUuScAx0yMjv/l+AD1mfiLTRjyh0WuzjuT4buKdfhIUa0+l8g/RPO4hpO oQJkkmiAiFDW+0XC0hgz2JwvTnsccfsCBsgAEaKBf3SFtYqcR2wT5lDQuhhmz17N9ioy nupg== X-Forwarded-Encrypted: i=1; AJvYcCWB3pg1vm3lEFmzuxqrCU/7xvfgxpg1ompo1bNYSbvN45L9CYAdEBxpUjXGnPNhbCJwtgLWHKeDmAqf@nongnu.org X-Gm-Message-State: AOJu0YwXyonx7xkkJ4cUhG3Z/07dbyihqSDZO/idwwcruJIEUGOf1SUA nsspLDF90bdxDljzDMwwNJijmb+pxVFdnhtg/ZfB6jviDeGj0HFYKa0O X-Gm-Gg: AY/fxX538u/I0lAO1tIOL+a8VDpqMaMfk79e8JLBKpdUShJGDjU5w3RGheUbBUdffIn 2iHJLNZe0LrZUtzGqFKP/6O58cqBotxX9SusG/8yrukKUWUIZ/fAcU8Z9GaxXLnS129n2Bvb9S5 olgGoqug3RJ2X7yExi54kQvGY65iLgrJu50ZH4Dj4ufdYQIqytUmKavWPBp3rncBXrfUetqkyS5 bd3mLhUoqtvn9YCI2rbIPluHm7c957qNFJkSTEeDmwK1bJz++Pcie5IGWnkps5LacZRNiHzUQ70 GermNAxUQeLcV95U2mz80REyv9w9jQ31LBHVjiDHgFncSsEU4MkjbOhVuwwCtyKSCwzTyVy7IwN qBU3o4+ouFeP12wvnr+6O6qkYfdr+5K+5Z2I1ydTaxiYPgSNcnc0TzlGW/41dyzSs8Z3d7GsFmt swK4ZFLjJnD7FgsZ9iMm3IjgWuXDkuI1IkDunvN517sag6/Y8acUOJl7Uce7E= X-Received: by 2002:a17:903:2a83:b0:2a0:c1f6:6bc2 with SMTP id d9443c01a7336-2a599e73cedmr14380345ad.59.1768366113267; Tue, 13 Jan 2026 20:48:33 -0800 (PST) From: Nicholas Piggin To: qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: Nicholas Piggin , Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , bin.meng@windriver.com, vivahavey@gmail.com, Alvin Chang , Yu-Ming Chang , Joel Stanley Subject: [RFC PATCH 14/25] target/riscv/debug: Move debug CPU post_load details into debug.c Date: Wed, 14 Jan 2026 14:46:47 +1000 Message-ID: <20260114044701.1173347-15-npiggin@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260114044701.1173347-1-npiggin@gmail.com> References: <20260114044701.1173347-1-npiggin@gmail.com> MIME-Version: 1.0 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=2607:f8b0:4864:20::635; envelope-from=npiggin@gmail.com; helo=mail-pl1-x635.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, FREEMAIL_FROM=0.001, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1768366139747158500 Content-Type: text/plain; charset="utf-8" No need for machine.c to know internals of how debug.c maintains debug state. Signed-off-by: Nicholas Piggin --- target/riscv/debug.c | 9 ++++++++- target/riscv/debug.h | 2 +- target/riscv/machine.c | 4 +--- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/target/riscv/debug.c b/target/riscv/debug.c index 973de3b2e2..24161fd46b 100644 --- a/target/riscv/debug.c +++ b/target/riscv/debug.c @@ -673,7 +673,7 @@ static bool check_itrigger_priv(CPURISCVState *env, int= index) return icount_priv_match(env, index); } =20 -bool riscv_itrigger_enabled(CPURISCVState *env) +static bool riscv_itrigger_enabled(CPURISCVState *env) { int count; =20 @@ -1124,6 +1124,13 @@ void riscv_cpu_debug_change_priv(CPURISCVState *env) } } =20 +void riscv_cpu_debug_post_load(CPURISCVState *env) +{ + if (!icount_enabled()) { + env->itrigger_enabled =3D riscv_itrigger_enabled(env); + } +} + void riscv_trigger_reset_hold(CPURISCVState *env) { target_ulong tdata1 =3D build_tdata1(env, TRIGGER_TYPE_AD_MATCH, 0, 0); diff --git a/target/riscv/debug.h b/target/riscv/debug.h index 5a14b7894e..400c023943 100644 --- a/target/riscv/debug.h +++ b/target/riscv/debug.h @@ -151,9 +151,9 @@ bool riscv_cpu_debug_check_watchpoint(CPUState *cs, CPU= Watchpoint *wp); void riscv_trigger_realize(CPURISCVState *env); void riscv_trigger_reset_hold(CPURISCVState *env); =20 -bool riscv_itrigger_enabled(CPURISCVState *env); void riscv_itrigger_update_priv(CPURISCVState *env); =20 void riscv_cpu_debug_change_priv(CPURISCVState *env); +void riscv_cpu_debug_post_load(CPURISCVState *env); =20 #endif /* RISCV_DEBUG_H */ diff --git a/target/riscv/machine.c b/target/riscv/machine.c index 34fd73c920..bee1445a31 100644 --- a/target/riscv/machine.c +++ b/target/riscv/machine.c @@ -230,9 +230,7 @@ static int debug_post_load(void *opaque, int version_id) RISCVCPU *cpu =3D opaque; CPURISCVState *env =3D &cpu->env; =20 - if (!icount_enabled()) { - env->itrigger_enabled =3D riscv_itrigger_enabled(env); - } + riscv_cpu_debug_post_load(env); =20 return 0; } --=20 2.51.0 From nobody Sun Feb 8 12:15:01 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1768366317; cv=none; d=zohomail.com; s=zohoarc; b=A3ItL7tT4LxK4yCpfjoeSMcCctIPvEsJkqfPZvdhd8X+o2DKYDAA1BgSU0a20BsetPoAMbCCZBLqHaFfcBZ1Y1S2vLWIq6tuJNTGXF625Bkh3kO20xU83WZmRvESRaa7DfJAm6d9VgGz2cwFWkrE8ZzMJb8Gb+O3ZZk/3Y/q69E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768366317; 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=qvCDt1t2ZjnFsrVTwfes5buVqpc80guQM15D2ZP9G30=; b=SCfgMx55W5c3YrWyMhDiyWr+unXpNMEXoO+PAjsaGXsra2W1OpE9CiMNxXt6TAU6AGOKP+Mh1a42LPpZl5az9kTHoIfMRGVtFwpHw4JBmFdfblFzYU+8zAYZScCREFHX4v7xWwToEAMhLx1QiMXmhXhfeeAQpY7YUTieaynRqdE= 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 1768366317426560.0713959429072; Tue, 13 Jan 2026 20:51:57 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vfsoK-0005ZV-1Z; Tue, 13 Jan 2026 23:48:48 -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 1vfsoE-0005Cd-IO for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:48:42 -0500 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vfsoB-0003t9-T1 for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:48:41 -0500 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-2a3e89aa5d0so64211665ad.1 for ; Tue, 13 Jan 2026 20:48:39 -0800 (PST) Received: from lima-default (123.253.188.110.qld.leaptel.network. [123.253.188.110]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3c49037sm216111905ad.36.2026.01.13.20.48.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Jan 2026 20:48:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768366118; x=1768970918; 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=qvCDt1t2ZjnFsrVTwfes5buVqpc80guQM15D2ZP9G30=; b=QWBek8SS5p0/QYICOYYc4mscZtzc58h//UB+Q8wXK8RAO+wjcgsSyB4LQM06Esud1V 6zXQNMW8f+Fn+Mtsl0/9z6VX0Q1WL9Rv08gLJ86rFwwTiFGYWxxB5X2/V160Gdngo5Qx GUq3JTWPfDLLfAcjNfdTEOIq1SyBKJmqQr/3TxHWsLhSQB27Qnf+4WBwVaZ4HdLb42kx MQhg3afRh6xFeV5qHnhew4/WnHtESfskA3lG4i75wlx6DQ10j7Fb1iXWkD9MkaDwxOJ3 N1P2rvilAzajO+dHzSihStA2rVSb58qKpsaAVtZD+ADtcy2sek4WJSfGVMYEkkfaKplN 5oIA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768366118; x=1768970918; 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=qvCDt1t2ZjnFsrVTwfes5buVqpc80guQM15D2ZP9G30=; b=lY1bFoOxUDi770iw8KYRQqhfVjvgNXnXSF6z8ryT2i2TT+pKafW/MAfWhMxByApe8Z uYbdJiqXCN6mRmkdK7pY6Kz8yVyTBaXMROnmBimCw4rEpCr5Dq0htcgc85qr04nySVk6 Ra6ci5qk2057lauuJ78O81/2LRkEvAfVf7ZFp0bizdxtKaxLb6v3KGXheDTt+JGrROVl e89oWDRe2HoPlhVs9EdoHKaSsKXL5+nRk8Xrhx++O2j3XLlvrq6+urY7O0/WtKxGaKEl jaTXV8qgCZzoMo845l12DkvaQttnNhTVpbwPWemjaEfUX99RIdL0R8uNUplRxwkUulOf 1BOw== X-Forwarded-Encrypted: i=1; AJvYcCUQ/fIIFsoFX5VHGIZ6W2yOmSx4W/9zLzWkIqOHLlw/nFXK7Xr+QE4sZMrvsVit1mgemcf6KV631/o9@nongnu.org X-Gm-Message-State: AOJu0Yy+cvfravjMHbiiKoPiSMRDFDU4/F+1GtzZOmIS3lm1dZ7hmv6W xTMIcj/kjuu9+aXbgbVk2bb5H6jx31sL6+cGBo8CBdyExmW3UvCouzDM X-Gm-Gg: AY/fxX4gpw3ECNHOZGKQLons8iMyFabygB1cm359ROFJ/MwZgXXulvHNM1BjF8Yf9GK cebpvzjGm/JtACkZWXmmzgDMz0UVNgDsmVInogMOM5MzRrrZ6DRhATNHtcIGM0Y+MPCy6azuUkF zJKXE8XlHYtGpv66aPttYHM67KN1r4eN8IdOimLv2jPBxGXJpVE4tgrjvq8BpjQvdl7SfeT4X9n r2NgmjOSI/6UI75FDh7zRwkywEYejg/fJi3/jbDr/lq6l/z3EUZPa6Pj+WND81T6gAQQeaV0yFI TducmRERNtQFGx+wDaQ4JHb0OGSJWd1QL1qIV8MsTHXgnsrXcmgnhQci0mLlH5xAeKcueZoap+g eEfL1CK8mLJmdMvZyGSYZRw1IIeZbs2SfBK470s/TkV18pIx1ifiQs99NEviAn9pNFljUFsulFq ttwocBrC1HjkD5faMZLJj9jz0QEjdn+DhYY+QcLyj+UfV7wmnxqceY7gJiCD4= X-Received: by 2002:a17:903:2ecb:b0:2a1:3cd9:a734 with SMTP id d9443c01a7336-2a59bc36b61mr7470745ad.43.1768366118364; Tue, 13 Jan 2026 20:48:38 -0800 (PST) From: Nicholas Piggin To: qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: Nicholas Piggin , Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , bin.meng@windriver.com, vivahavey@gmail.com, Alvin Chang , Yu-Ming Chang , Joel Stanley Subject: [RFC PATCH 15/25] target/riscv/debug: Insert breakpoints after migration Date: Wed, 14 Jan 2026 14:46:48 +1000 Message-ID: <20260114044701.1173347-16-npiggin@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260114044701.1173347-1-npiggin@gmail.com> References: <20260114044701.1173347-1-npiggin@gmail.com> MIME-Version: 1.0 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=2607:f8b0:4864:20::636; envelope-from=npiggin@gmail.com; helo=mail-pl1-x636.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, FREEMAIL_FROM=0.001, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1768366320541158500 Content-Type: text/plain; charset="utf-8" After migration, TCG breakpoints should be re-established based on debug register state. icount trigger timer in the icount_enabled() path is also missing, but that path will be removed subsequently so don't bother to fix it. Signed-off-by: Nicholas Piggin --- target/riscv/debug.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/target/riscv/debug.c b/target/riscv/debug.c index 24161fd46b..a30b345b25 100644 --- a/target/riscv/debug.c +++ b/target/riscv/debug.c @@ -1126,6 +1126,20 @@ void riscv_cpu_debug_change_priv(CPURISCVState *env) =20 void riscv_cpu_debug_post_load(CPURISCVState *env) { + for (int i =3D 0; i < RV_MAX_TRIGGERS; i++) { + int trigger_type =3D get_trigger_type(env, i); + + switch (trigger_type) { + case TRIGGER_TYPE_AD_MATCH: + type2_breakpoint_insert(env, i); + break; + case TRIGGER_TYPE_AD_MATCH6: + type6_breakpoint_insert(env, i); + break; + default: + break; + } + } if (!icount_enabled()) { env->itrigger_enabled =3D riscv_itrigger_enabled(env); } --=20 2.51.0 From nobody Sun Feb 8 12:15:01 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1768366347; cv=none; d=zohomail.com; s=zohoarc; b=MWMT+9kWg0p3aWQS5VZdnphPb33BJdHRxWb69ER7xTKZzEHX+nBK6489e24RLSuEd0hadtr+2YMQ5qT/3KSGXs4vtptmPy6dOJh/GHaCZu0wvmH3oCt6EwmwY0ccRGhlcJazOX5xnu8ornLIBkycGxTbq+pdMcLLq9zXLJm9svM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768366347; 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=1WIwTEEt83xmDiYrW0fSW8coAM7IrPEJt9OsUoCFXbQ=; b=e1sekSy3egO5RD1r9d6EIV3U8yfniHB9YYIJwWN8gNuWWZD1V4fxtdBfrqAJ8lvppcGpEPs0HqNZgOGK+baRD9VZHxspCJ4smr5JxTO7v15iM9D0L3pRUMh5ZWG3/1LHbrA969y2Lj127kVQpS6adeK1+WnzX4S9jK388QqNgSg= 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 1768366347601717.5381679341722; Tue, 13 Jan 2026 20:52:27 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vfsoL-0005jI-6X; Tue, 13 Jan 2026 23:48:49 -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 1vfsoI-0005ar-PO for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:48:47 -0500 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vfsoG-0003zO-Q7 for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:48:46 -0500 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-2a3e89aa5d0so64211925ad.1 for ; Tue, 13 Jan 2026 20:48:44 -0800 (PST) Received: from lima-default (123.253.188.110.qld.leaptel.network. [123.253.188.110]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3c49037sm216111905ad.36.2026.01.13.20.48.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Jan 2026 20:48:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768366123; x=1768970923; 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=1WIwTEEt83xmDiYrW0fSW8coAM7IrPEJt9OsUoCFXbQ=; b=JvpNHOhjxvtyQZpIpNbTn89fTNvNLetRp/dbxiqP4ZhSj+O5/NC3qrSsGtmpUxvHu1 cpdx5n5G317kWh9tQJEBfCthOwRHsRE+kA+FWD6CKorCmPJsjVMY0rGzhe7I20JmrvuH wxt5XX4cjjTxpVi3fHsoGoYinttBYMmTy0AJ4ZnKr40C75N/4G6YOwxMVJt507crLAEi J5dq2n9Wba5yjeGZD9F55OCcX3b26NKXAlDIZGx4HA/XXkkf+10UKLQHIfSFaVNWF/R9 VR+LbyR/4JaMKkFlPz6WkvnRo9lsALX2Dq3t6c7tJfIInYAyiDwqoStoInRtPGiXQXtf r0Fw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768366123; x=1768970923; 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=1WIwTEEt83xmDiYrW0fSW8coAM7IrPEJt9OsUoCFXbQ=; b=AjKA7HEjX+toeWQIo+JRhShmNiOUmXaRgmpnDcMVNgX4mYF/1DNKlVM92vVzzcA2FC BXc5ZCK1zLm+VWGQe3K246hq76gv5P3u7w4CxsPzbSLpeWPAYfzlzLx6cy0kVkR/rs9M TABkA3K9WJQUov42603uRJjvF22FKMZDLu3beBkYHApfb9tyROIb0xsMH8lfrGg50oAI LdV9EEJ5MDzKmYZVU7B3mll7K1KAQYgPj6kOyw/tx/X0uBEYoLC4T1l7BbjHbBQCf6Ka cD6jUbpiCYmpssCqRrIkoNhezwwMHCPYrDJTjoqsch6gRdErrCH3x1D50LE5efnUQog2 RSFg== X-Forwarded-Encrypted: i=1; AJvYcCUhVzpXivl70tFS6es5pU4v1K5qx6qz1+/TYsB6B7USFzRnx5m+RjR6d4AuZ+QJeY5bAinoPrA07n6V@nongnu.org X-Gm-Message-State: AOJu0YyfeeakG0MxX8zI1kJd3tfF0j8gPQ324uHTROaMhxFTzZ0ADXHN qaPvlu5w/CtVqmC1Sni1F1rAiUb9yVkdTyfpH+hBNFAX0n//NLcXdsz4ZAo/zw== X-Gm-Gg: AY/fxX4KI9F7//StN8GDcIcB8TbXb3d4XGmn0KhsVqg1j4HJp/ebvplMS17UkTBn4Za pxm/n4RPyyfbsjG0kTKUvZGpCUr/u/8I+qImpRgthL5chz+30EAYi2Z2V3NaIWpaM82PaVMXWMh trGFqfNSEomypj4HlBypPX4X6kbBR0VKnYL/T0ho5+eh8KO8v8EHG8pLRX7MVssIkaoUbBnMz2X MRaESBUQYOGr85XVJbLIYYLa+TvFWyClTO63xBVDVjmiYYIASKrF5t+MtuqQLdwb+7plF3TgBGX q8mcNhu3yILhBoICx8Oj+83e5gmFkgjPNIQ3iBKd+eszqaSyJG0w+/+7I9EFtXPg6S3Z0rnm3vs oOGrjtxu98kgEbh18l0XO82qsYaCkyetOMkv4/J6c6FxThU3EeWuARrKrOvInx3uVKEwUIx7c4Y Ru6lESbV4DpMceRbEGmXDS/6E9eO/+ayqRd9ynrufLM+VLGkLOUup8JGTwgGo= X-Received: by 2002:a17:902:ebc1:b0:2a0:9040:6377 with SMTP id d9443c01a7336-2a59bb73defmr10766625ad.18.1768366123477; Tue, 13 Jan 2026 20:48:43 -0800 (PST) From: Nicholas Piggin To: qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: Nicholas Piggin , Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , bin.meng@windriver.com, vivahavey@gmail.com, Alvin Chang , Yu-Ming Chang , Joel Stanley Subject: [RFC PATCH 16/25] target/riscv/debug: Remove itrigger icount-enabled mode Date: Wed, 14 Jan 2026 14:46:49 +1000 Message-ID: <20260114044701.1173347-17-npiggin@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260114044701.1173347-1-npiggin@gmail.com> References: <20260114044701.1173347-1-npiggin@gmail.com> MIME-Version: 1.0 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=2607:f8b0:4864:20::630; envelope-from=npiggin@gmail.com; helo=mail-pl1-x630.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, FREEMAIL_FROM=0.001, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1768366349424158500 Content-Type: text/plain; charset="utf-8" When QEMU icount is enabled, the riscv icount trigger facility is implemented cleverly using precise counting timers rather than single-stepping TCG. I found this possibly has some bugs, it is a bit complicated and splits testing between icount and !icount, and icount enabled is not the important case for performance. Therefore remove the separate icount enabled path. Signed-off-by: Nicholas Piggin --- target/riscv/cpu.c | 6 -- target/riscv/cpu.h | 2 - target/riscv/cpu_helper.c | 3 - target/riscv/debug.c | 115 ++----------------------------------- target/riscv/debug.h | 3 - target/riscv/tcg/tcg-cpu.c | 2 +- 6 files changed, 5 insertions(+), 126 deletions(-) diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index ffd98e8eed..057e221808 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -942,12 +942,6 @@ static void riscv_cpu_realize(DeviceState *dev, Error = **errp) =20 riscv_cpu_register_gdb_regs_for_features(cs); =20 -#ifndef CONFIG_USER_ONLY - if (cpu->cfg.debug) { - riscv_trigger_realize(&cpu->env); - } -#endif - qemu_init_vcpu(cs); cpu_reset(cs); =20 diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 35d1f6362c..a718287d41 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -450,8 +450,6 @@ struct CPUArchState { target_ulong mcontext; struct CPUBreakpoint *cpu_breakpoint[RV_MAX_TRIGGERS]; struct CPUWatchpoint *cpu_watchpoint[RV_MAX_TRIGGERS]; - QEMUTimer *itrigger_timer[RV_MAX_TRIGGERS]; - int64_t last_icount; bool itrigger_enabled; =20 /* machine specific rdtime callback */ diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index e096da939b..55518cad86 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -1036,9 +1036,6 @@ void riscv_cpu_set_mode(CPURISCVState *env, target_ul= ong newpriv, bool virt_en) =20 if (newpriv !=3D env->priv || env->virt_enabled !=3D virt_en) { change =3D true; - if (icount_enabled()) { - riscv_itrigger_update_priv(env); - } =20 riscv_pmu_update_fixed_ctrs(env, newpriv, virt_en); } diff --git a/target/riscv/debug.c b/target/riscv/debug.c index a30b345b25..69e7037fac 100644 --- a/target/riscv/debug.c +++ b/target/riscv/debug.c @@ -30,8 +30,6 @@ #include "trace.h" #include "exec/helper-proto.h" #include "exec/watchpoint.h" -#include "system/cpu-timers.h" -#include "exec/icount.h" =20 /* * The following M-mode trigger CSRs are implemented: @@ -668,11 +666,6 @@ itrigger_set_count(CPURISCVState *env, int index, int = value) ITRIGGER_COUNT, value); } =20 -static bool check_itrigger_priv(CPURISCVState *env, int index) -{ - return icount_priv_match(env, index); -} - static bool riscv_itrigger_enabled(CPURISCVState *env) { int count; @@ -729,62 +722,6 @@ void helper_itrigger_match(CPURISCVState *env) env->itrigger_enabled =3D enabled; } =20 -static void riscv_itrigger_update_count(CPURISCVState *env) -{ - int count, executed; - /* - * Record last icount, so that we can evaluate the executed instructio= ns - * since last privilege mode change or timer expire. - */ - int64_t last_icount =3D env->last_icount, current_icount; - current_icount =3D env->last_icount =3D icount_get_raw(); - - for (int i =3D 0; i < RV_MAX_TRIGGERS; i++) { - if (get_trigger_type(env, i) !=3D TRIGGER_TYPE_INST_CNT) { - continue; - } - count =3D itrigger_get_count(env, i); - if (!count) { - continue; - } - /* - * Only when privilege is changed or itrigger timer expires, - * the count field in itrigger tdata1 register is updated. - * And the count field in itrigger only contains remaining value. - */ - if (check_itrigger_priv(env, i)) { - /* - * If itrigger enabled in this privilege mode, the number of - * executed instructions since last privilege change - * should be reduced from current itrigger count. - */ - executed =3D current_icount - last_icount; - itrigger_set_count(env, i, count - executed); - if (count =3D=3D executed) { - do_trigger_action(env, i); - } - } else { - /* - * If itrigger is not enabled in this privilege mode, - * the number of executed instructions will be discard and - * the count field in itrigger will not change. - */ - timer_mod(env->itrigger_timer[i], - current_icount + count); - } - } -} - -static void riscv_itrigger_timer_cb(void *opaque) -{ - riscv_itrigger_update_count((CPURISCVState *)opaque); -} - -void riscv_itrigger_update_priv(CPURISCVState *env) -{ - riscv_itrigger_update_count(env); -} - static target_ulong itrigger_validate(CPURISCVState *env, target_ulong ctrl) { @@ -808,21 +745,9 @@ static target_ulong itrigger_validate(CPURISCVState *e= nv, static void itrigger_reg_write(CPURISCVState *env, target_ulong index, int tdata_index, target_ulong val) { - target_ulong new_val; - switch (tdata_index) { case TDATA1: - /* set timer for icount */ - new_val =3D itrigger_validate(env, val); - if (new_val !=3D env->tdata1[index]) { - env->tdata1[index] =3D new_val; - if (icount_enabled()) { - env->last_icount =3D icount_get_raw(); - /* set the count to timer */ - timer_mod(env->itrigger_timer[index], - env->last_icount + itrigger_get_count(env, index= )); - } - } + env->tdata1[index] =3D itrigger_validate(env, val); break; case TDATA2: qemu_log_mask(LOG_UNIMP, @@ -858,27 +783,10 @@ static void anytype_reg_write(CPURISCVState *env, tar= get_ulong index, } } =20 -static int itrigger_get_adjust_count(CPURISCVState *env) -{ - int count =3D itrigger_get_count(env, env->trigger_cur), executed; - if ((count !=3D 0) && check_itrigger_priv(env, env->trigger_cur)) { - executed =3D icount_get_raw() - env->last_icount; - count +=3D executed; - } - return count; -} - target_ulong tdata_csr_read(CPURISCVState *env, int tdata_index) { - int trigger_type; switch (tdata_index) { case TDATA1: - trigger_type =3D extract_trigger_type(env, - env->tdata1[env->trigger_cur]); - if ((trigger_type =3D=3D TRIGGER_TYPE_INST_CNT) && icount_enabled(= )) { - return deposit64(env->tdata1[env->trigger_cur], 10, 14, - itrigger_get_adjust_count(env)); - } return env->tdata1[env->trigger_cur]; case TDATA2: return env->tdata2[env->trigger_cur]; @@ -949,7 +857,7 @@ void tdata_csr_write(CPURISCVState *env, int tdata_inde= x, target_ulong val) g_assert_not_reached(); } =20 - if (check_itrigger && !icount_enabled()) { + if (check_itrigger) { env->itrigger_enabled =3D riscv_itrigger_enabled(env); } } @@ -1107,21 +1015,9 @@ bool riscv_cpu_debug_check_watchpoint(CPUState *cs, = CPUWatchpoint *wp) return false; } =20 -void riscv_trigger_realize(CPURISCVState *env) -{ - int i; - - for (i =3D 0; i < RV_MAX_TRIGGERS; i++) { - env->itrigger_timer[i] =3D timer_new_ns(QEMU_CLOCK_VIRTUAL, - riscv_itrigger_timer_cb, env= ); - } -} - void riscv_cpu_debug_change_priv(CPURISCVState *env) { - if (!icount_enabled()) { - env->itrigger_enabled =3D riscv_itrigger_enabled(env); - } + env->itrigger_enabled =3D riscv_itrigger_enabled(env); } =20 void riscv_cpu_debug_post_load(CPURISCVState *env) @@ -1140,9 +1036,7 @@ void riscv_cpu_debug_post_load(CPURISCVState *env) break; } } - if (!icount_enabled()) { - env->itrigger_enabled =3D riscv_itrigger_enabled(env); - } + env->itrigger_enabled =3D riscv_itrigger_enabled(env); } =20 void riscv_trigger_reset_hold(CPURISCVState *env) @@ -1181,7 +1075,6 @@ void riscv_trigger_reset_hold(CPURISCVState *env) env->tdata1[i] =3D tdata1; env->tdata2[i] =3D 0; env->tdata3[i] =3D 0; - timer_del(env->itrigger_timer[i]); } =20 env->mcontext =3D 0; diff --git a/target/riscv/debug.h b/target/riscv/debug.h index 400c023943..bee42b8593 100644 --- a/target/riscv/debug.h +++ b/target/riscv/debug.h @@ -148,11 +148,8 @@ void riscv_cpu_debug_excp_handler(CPUState *cs); bool riscv_cpu_debug_check_breakpoint(CPUState *cs); bool riscv_cpu_debug_check_watchpoint(CPUState *cs, CPUWatchpoint *wp); =20 -void riscv_trigger_realize(CPURISCVState *env); void riscv_trigger_reset_hold(CPURISCVState *env); =20 -void riscv_itrigger_update_priv(CPURISCVState *env); - void riscv_cpu_debug_change_priv(CPURISCVState *env); void riscv_cpu_debug_post_load(CPURISCVState *env); =20 diff --git a/target/riscv/tcg/tcg-cpu.c b/target/riscv/tcg/tcg-cpu.c index 988b2d905f..677172ae2d 100644 --- a/target/riscv/tcg/tcg-cpu.c +++ b/target/riscv/tcg/tcg-cpu.c @@ -177,7 +177,7 @@ static TCGTBCPUState riscv_get_tb_cpu_state(CPUState *c= s) ? EXT_STATUS_DIRTY : EXT_STATUS_DISABLED; } =20 - if (cpu->cfg.debug && !icount_enabled()) { + if (cpu->cfg.debug) { flags =3D FIELD_DP32(flags, TB_FLAGS, ITRIGGER, env->itrigger_enab= led); } #endif --=20 2.51.0 From nobody Sun Feb 8 12:15:01 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1768366382; cv=none; d=zohomail.com; s=zohoarc; b=XybBK2G5qEG+b6PhS9Mqh7bpoSoRb5xFfs9BXXG8a4pWuDpFl5Jfc2fwTXklA6QF4gxfk3nIPJheZ73CWnG36+NZutXd7W3aSSe/AFYfKFIXQ6mX824WUlQb+hSKwiJXbTQUmlvkSQscrir7UhXZBm24c0rz0axOaoZhBHBaepw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768366382; 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=ujtaD3rpMRG6C9bV6uOL1SwEhG44fFewsfi9z3ZrKzg=; b=iv8RFr7A990AMYHfpbp6wjii7vzaTvUsKZuWBXUZiILJ/zbvO7W7AL5EJekelHqMlgwvL5WeBd9eZUc8AksFcZUHVnlE43TFLVgbLtrYPK0rUMvds9fw4lpdVS17ta43hfbZUTSfvutCufnKttsJSCd7UytqNKxD+oYCLTK/5b0= 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 1768366382696964.3322696501525; Tue, 13 Jan 2026 20:53:02 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vfsoP-0006JW-Em; Tue, 13 Jan 2026 23:48:53 -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 1vfsoN-00062D-5e for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:48:51 -0500 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vfsoL-00040F-Pf for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:48:50 -0500 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-2a12ebe4b74so78444915ad.0 for ; Tue, 13 Jan 2026 20:48:49 -0800 (PST) Received: from lima-default (123.253.188.110.qld.leaptel.network. [123.253.188.110]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3c49037sm216111905ad.36.2026.01.13.20.48.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Jan 2026 20:48:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768366128; x=1768970928; 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=ujtaD3rpMRG6C9bV6uOL1SwEhG44fFewsfi9z3ZrKzg=; b=WG0fNd4oyxhVGtUATZi4oLkmsyIEcHU4W0IvS/7O59eYc+PgQS1K/7JDmtJSSH2Vey CaWeHhjLk2mzIuE+AdMp44fH2Onb9rbcl3c9MlnxvH3KkYT2SPDJ69ah28relPElW1My usYIeJHZ7U4v+iuWHgseUlQlXiZpEEPpU2Yw23KfOE/o98AJiVvGW+JJxmduOvbI1Tck iU/MJ3cJp0KkasURR1YJt2FxLu0MCK5ywZMHGAv0lA3XHmTJWbjAtqS725R2jcOcJG6l /th6QzjNpQrBPJPLYPxxWaMkddWZRaIysCLAnrlIRD7sgKT5e1oPosqYinjeQPNsC5hq EM5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768366128; x=1768970928; 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=ujtaD3rpMRG6C9bV6uOL1SwEhG44fFewsfi9z3ZrKzg=; b=PukrCFoNoGtaf0jGZ2BhOPKFDGA2PZXJJoPkDIG0rGGIWkOEcyQmJQ+cK8Ic67d6yD R/WQ6kw19u3eZiMhugc9U4vVSQpnDqvnbwf93s1IwOhiJhdGwUSMOk3xDAsC5TfKrrVb ap9qaz612DAIKhTx752cjiizVlTuk2/TWP0th5pc8+hBzE7/+eveEbcT/aoP5OXedjrm lWJK0mSj0Y1G5olSp55klLrTZzjPlJTB31aMZ3+JudBlX5XE0NXOF3mMX9tPft3sEDfw ROHmdGcYbLlB5reoY3RdJxZNhVEXwti720UVxbfFJMV9uvIgptjnjxyRXIf1hB61eJYb 7+7g== X-Forwarded-Encrypted: i=1; AJvYcCXXnf+ARzfI9hkE5tUIria5xiyb3gOA7KoY6OQwe4+vDl4ZyYjgSHxA81jK0NDnNVq7mOjLkM+i0m6U@nongnu.org X-Gm-Message-State: AOJu0Yx3Je3NxOjxbhRJVGn5Z93WrOEl/7bo4yymHmhBoXJuwKeN6k47 ssZP0mfenKCyJE4rV5GKSQMrIRXoCmCyHwNIiChWpzHNEYh2ONv9mi03 X-Gm-Gg: AY/fxX4b75Bif2rFqmHet8ZlpMoZgC1Y0I4FqdKi9ElGmtM++lWmVEFIY7DSmrckIEz TG+l6MV1aiPZ8dos+UdDUE+RR9IcqxKF8gYb2cyiN25eVsoQruFvimbsZXDUFHq/foOJEibDLCF 0OIVEc0ZMtdSGQZ2j10J6zFs0XPwdzGgZ2oIGQdI2wW1O00b+hcpChYk4ZUcN3bo5RiusXQ00oY ea98fAiEROv+twNkzqifq5oB+a6dztNIDlkIP370I0gArjZlnSFiGPxzOJhk/q8LOO9TuOQ8FdI GcChaW3Omgl3cxDPgLTLSGs3rBsxv2/O2p4OSLhibeNG2vj1Jxmxuc+makDHAHfY6fmg5mUKE1K Q15kkYYtGFN/VN5hm7QP23vJsrdEa3Rsi2bH94PEyqNscWJK1VjNPole7v9NvLtDcrZJ6gKkPhm pYALNagOW1Ip4f0c61/wSjV+SwfJ4cSfExvw2AglJnSK3B9z0w+ejBuLAD5Ww= X-Received: by 2002:a17:902:ec83:b0:2a3:ec72:f462 with SMTP id d9443c01a7336-2a599dd2409mr15287415ad.25.1768366128502; Tue, 13 Jan 2026 20:48:48 -0800 (PST) From: Nicholas Piggin To: qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: Nicholas Piggin , Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , bin.meng@windriver.com, vivahavey@gmail.com, Alvin Chang , Yu-Ming Chang , Joel Stanley Subject: [RFC PATCH 17/25] target/riscv/debug: Advertise icount trigger type in tinfo Date: Wed, 14 Jan 2026 14:46:50 +1000 Message-ID: <20260114044701.1173347-18-npiggin@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260114044701.1173347-1-npiggin@gmail.com> References: <20260114044701.1173347-1-npiggin@gmail.com> MIME-Version: 1.0 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=2607:f8b0:4864:20::636; envelope-from=npiggin@gmail.com; helo=mail-pl1-x636.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, FREEMAIL_FROM=0.001, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1768366383664158500 Content-Type: text/plain; charset="utf-8" icount triggers are supported so tinfo should advertise them. Signed-off-by: Nicholas Piggin --- target/riscv/debug.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/target/riscv/debug.c b/target/riscv/debug.c index 69e7037fac..605ed95b14 100644 --- a/target/riscv/debug.c +++ b/target/riscv/debug.c @@ -865,7 +865,9 @@ void tdata_csr_write(CPURISCVState *env, int tdata_inde= x, target_ulong val) target_ulong tinfo_csr_read(CPURISCVState *env) { /* assume all triggers support the same types of triggers */ + /* XXX: should we set 1 (version 1.0) in the version field? */ return BIT(TRIGGER_TYPE_AD_MATCH) | + BIT(TRIGGER_TYPE_INST_CNT) | BIT(TRIGGER_TYPE_AD_MATCH6); } =20 --=20 2.51.0 From nobody Sun Feb 8 12:15:01 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1768366179; cv=none; d=zohomail.com; s=zohoarc; b=hPjvbAKIKvomDnFFOA3rV+yRf/tOoxBoJrYJsYgWZkeaxa9QPXpuBWgo/RTQlMeJb1TUyqwt37N4/8m/NTRh1CIy/hAk5LRWxiNRfRBDziFhW602OlMGn9Aro/Fk7YFgId6/Hg//ekXaTpHM2+JrIe7rClsc1FeHi3TvZ2hlcxk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768366179; 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=VK4aPl7fMVwdbjFxbfeAzb4k8GM5T4FA88o6ceW+Ta4=; b=QBCsBFpb4SyV9ZYYYlJTsA50TdVRZUAE2b9p+UDqYMDkTWgTeNH1CJ+/K6D1EQ6JUl4dYaUt/KVSL+r+1c0m23ZtMccU2OZ1d1OyDR8a5zWIPbRWfhE3xxfkEMUeyfyInYdblkZyo2EoUJgJ85Pv1IbHq2k/eTZoRQLpzlx0NYM= 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 1768366179036375.3786781887959; Tue, 13 Jan 2026 20:49:39 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vfsoU-0006mZ-4f; Tue, 13 Jan 2026 23:48:58 -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 1vfsoS-0006h1-Cr for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:48:56 -0500 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vfsoQ-00045q-S4 for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:48:56 -0500 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-29f1bc40b35so90133555ad.2 for ; Tue, 13 Jan 2026 20:48:54 -0800 (PST) Received: from lima-default (123.253.188.110.qld.leaptel.network. [123.253.188.110]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3c49037sm216111905ad.36.2026.01.13.20.48.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Jan 2026 20:48:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768366133; x=1768970933; 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=VK4aPl7fMVwdbjFxbfeAzb4k8GM5T4FA88o6ceW+Ta4=; b=RUgr9q9erCxD0UbrXj0Rh4ut7fHeOjn2gPJrqUQjGpWlAR0eskFw2VI7QdnibI/3Bp 4w3hjPZcHchxvaA+O81WncYnKy5prK2fCVIboijRv3xZI5k83CMOPK7fM9QqniLFz8km rqZboIfX5rw8pxYP2X4vY3vrtlgbmJjvo253z0b4GJ3Bi3elLqIVt3r2cP/gZvgjNiod g+Nu4qNgDa8MapNkL2KFeQJORy2tR47NLwXlvAqAG1BaScaYzD15WqRuqIixAKqN5SZ3 u+Ipm/m68yZ6Izvk9flXXbfP5DxYK2bGmES512CP+vhjS10YTQBoGbdxT+Pd5rMNA/Sg lNmA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768366133; x=1768970933; 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=VK4aPl7fMVwdbjFxbfeAzb4k8GM5T4FA88o6ceW+Ta4=; b=AxiyoHVUlvwnnqpAkHaXQpeobZUfBlAvKxvBGCEXkju9iVGbEHznLbeg8cPOOrK8Kq Aa8uZ3O+QeIHffumNPpyrNfna8+3moqd8BdmVva0/r6y6kzyF3HZKJ0+4ir6pzrEeF5k Oc2PCEEUK7Kehff5Ma1bUMnfM1Rb2HgY8wmAlI7SGqgttmJex7KGc/z8A22j4OCU8FDP +TT3cA+fAisS8mLUKpFJdKgvu+SmokXmX5IjusZ3YF+JbQDLzLned7niyROoDIHx94Nd gY6PyNWHSTcIUv8EfZ8h7gsAxXJzKfBDd8tGs0HOs9iSX6egedqefhpYWV50MUkdCcnj yPlA== X-Forwarded-Encrypted: i=1; AJvYcCWaRqDgHtKRDREasTa+blIcULE205qNyMVXzmFQGlpixDuf5hg5uRcZkyAdb9AT238dOf25X4S1Q+yq@nongnu.org X-Gm-Message-State: AOJu0YwXi6o8FvZ+vQphqTdMKtVwwij+rRs5oDx5KFtqj2DOxoB7TPiA HaIxRkHys6rd2YdftNt7uMsAQBN7hznlE6Ur5HF/mnEgpmSkBBe25xtR X-Gm-Gg: AY/fxX5f/rlbH+oY99T0vJFmN5oSmqi6ErFsfsNMtCiOZatezXE0OhhDxlwMzeeuzSa VYGZiA7P2lVK6xrZ691cNkw2a/jCNA6ErGB7nz0WFmgoKi8ak0c1+CmsBH7hlG21N3n8xmN6GkD +NA/0XUCTx9vm5b33DuRldm8Qf15mXnIY7LdxUe5hujyyC1x7TH3NsZg3F0vGM3lcMzaTbtmd2k ovh+M5LeH5nF3onO5A9HgKQNAhdlqZxTACzJffl6GyWPIQc4ikfjNfeIFCOoKh9PJ9vuLhTQ0cl Hhyc9Zej1+mm+7KzJC9JaGJraNxVtQidjbn9NfyZ5GrfxqXvAQ0FtU2D5nnLV0l6r+wvFyCAD5N IqAEpfNd1I1UrCiL8b27iGw0rfKzr0iO/L55ooEHD0btCd6Gne6uEXhJiv2cZ50xsXOrMnD7PKj M2/FRaG6jsHnf64eIfaJJYQ0M0VM9+YAT/uvPqFSRdi7SKKmglUwj6CDaByvoQp+2YWJijuA== X-Received: by 2002:a17:902:f601:b0:2a5:8c1c:743d with SMTP id d9443c01a7336-2a599e5b738mr15465045ad.50.1768366133645; Tue, 13 Jan 2026 20:48:53 -0800 (PST) From: Nicholas Piggin To: qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: Nicholas Piggin , Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , bin.meng@windriver.com, vivahavey@gmail.com, Alvin Chang , Yu-Ming Chang , Joel Stanley Subject: [RFC PATCH 18/25] target/riscv/debug: Reset trigger type to unavailable Date: Wed, 14 Jan 2026 14:46:51 +1000 Message-ID: <20260114044701.1173347-19-npiggin@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260114044701.1173347-1-npiggin@gmail.com> References: <20260114044701.1173347-1-npiggin@gmail.com> MIME-Version: 1.0 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=2607:f8b0:4864:20::634; envelope-from=npiggin@gmail.com; helo=mail-pl1-x634.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, FREEMAIL_FROM=0.001, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1768366182011158500 Content-Type: text/plain; charset="utf-8" Reset triggers to type 15 (unavailable). The reset value for tdata1 type field is implementation specific, legal values are permitted. Unavailable is a legal value, and some implementations may not support type2 triggers so use that instead. Signed-off-by: Nicholas Piggin --- target/riscv/debug.c | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/target/riscv/debug.c b/target/riscv/debug.c index 605ed95b14..96b00193e2 100644 --- a/target/riscv/debug.c +++ b/target/riscv/debug.c @@ -1043,10 +1043,10 @@ void riscv_cpu_debug_post_load(CPURISCVState *env) =20 void riscv_trigger_reset_hold(CPURISCVState *env) { - target_ulong tdata1 =3D build_tdata1(env, TRIGGER_TYPE_AD_MATCH, 0, 0); + target_ulong tdata1 =3D build_tdata1(env, TRIGGER_TYPE_UNAVAIL, 0, 0); int i; =20 - /* init to type 2 triggers */ + /* init to type 15 (unavailable) triggers */ for (i =3D 0; i < RV_MAX_TRIGGERS; i++) { int trigger_type =3D get_trigger_type(env, i); =20 @@ -1061,19 +1061,6 @@ void riscv_trigger_reset_hold(CPURISCVState *env) break; } =20 - /* - * type =3D TRIGGER_TYPE_AD_MATCH - * dmode =3D 0 (both debug and M-mode can write tdata) - * maskmax =3D 0 (unimplemented, always 0) - * sizehi =3D 0 (match against any size, RV64 only) - * hit =3D 0 (unimplemented, always 0) - * select =3D 0 (always 0, perform match on address) - * timing =3D 0 (always 0, trigger before instruction) - * sizelo =3D 0 (match against any size) - * action =3D 0 (always 0, raise a breakpoint exception) - * chain =3D 0 (unimplemented, always 0) - * match =3D 0 (always 0, when any compare value equals tdata2) - */ env->tdata1[i] =3D tdata1; env->tdata2[i] =3D 0; env->tdata3[i] =3D 0; --=20 2.51.0 From nobody Sun Feb 8 12:15:01 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1768366268; cv=none; d=zohomail.com; s=zohoarc; b=JTXiy6N0irO2UGVLWsfOosEn9+iLpKSO5EhGrHnNnJ+Jog/8kb50FIxN5oz6voBw0pmcDkLddanqxbPZnkCrMSpWcueCpAswZPEEpfhR/Y5EnQdLQir846kk1Gz9+xFHDWW0rP18L52a5emfhRP7SrquHHAL1HpwaMcw8Nq+bTo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768366268; 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=pI2YqBsnmZnjxYYwvL4iB2ONG36VVpDA3n68JruGryM=; b=iOroaBC/m3+LhTjKQgWqj6fk8+2Knzmiqi3EOfcEbNgbl3WLLrMb5l6FBKENk51sWEJBjU5z7QCjOGHdPfapIZ2bLx8aHLfvr044PO/MXvFU/4ESygD83GecSXSca54jx4Uv/9jKCavWsGdA+r1bZIWJunPKmbIOZfiTH2JPCng= 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 1768366268453490.55362911319855; Tue, 13 Jan 2026 20:51:08 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vfsoh-00070F-92; Tue, 13 Jan 2026 23:49:11 -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 1vfsoY-0006uj-S1 for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:49:04 -0500 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vfsoW-00049I-5h for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:49:02 -0500 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-29f30233d8aso54326605ad.0 for ; Tue, 13 Jan 2026 20:48:59 -0800 (PST) Received: from lima-default (123.253.188.110.qld.leaptel.network. [123.253.188.110]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3c49037sm216111905ad.36.2026.01.13.20.48.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Jan 2026 20:48:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768366139; x=1768970939; 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=pI2YqBsnmZnjxYYwvL4iB2ONG36VVpDA3n68JruGryM=; b=abRdofVmVKXKlOAH+H3rddHi0+R2+ro2Z/8BJPrtWD205NIixLio/3L8IIGwhCV5/w 2Sba4UXqKF2AS7GoPSIBm23zOV+ENN/BphHhUJUt98m2XE4rmvdZMVVd2/TDc65rAg1C WZpKv45vgOeyxQBUzhdOm64nrW4yOlgNbsFaW++3DB4n1YEJ1JIGI0Ns0yJCQAmoq452 vBXSD3c1aag0lyKDHYSXNqPsoWLe7BtdkEaZm0yxXETeVNr5QLzg+8cKDsfZcKwXHPCe Y1HS7ei/eKtaNGqB+xGHUtgMHmdlIOCoN7oMMpjsG+K5AeMtWasQgcnI0GHVUrT6iHls GtHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768366139; x=1768970939; 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=pI2YqBsnmZnjxYYwvL4iB2ONG36VVpDA3n68JruGryM=; b=gHbalBOeXaSUJbtI2Dt/5iIpLBLJdIIGGMn8LMWgvpMPZbg3MWEmUUDM7bXrGYZaeQ 7aYzn0FfINlminwuQfn+5tx/J+P9Lz3xV11zy8NI5EJbEIJUv6Ps59ObgLViHO2ry4Cy b/MWJRH0tTzPept2sMnZRc0vr3kj6IPXzbUljeHvIpMaPCqPddRLL8mnrGKrWhWX8gP4 +gWKp8WF3ZCP26ZpzWnrwO9qyWRfyJRdKkIaR94+VOSju8DFDPUszvVXPa0X2HESLYlK dDdWnzNY4bdwIFRlPnOmvKdldrKtNBvBQqIvmljkuDP177GnYXsTtLT8e5I16bVFQLDs xvzQ== X-Forwarded-Encrypted: i=1; AJvYcCXrzMfR+qDwnqYcOXGcJKvgDeOIyD7I7Xhz/8QGMIN+xcbrLqREmsvVuK8nGAQ3vrpOYDx2otreBinJ@nongnu.org X-Gm-Message-State: AOJu0YwsshWhT+PUPisT/+Ms7eSFasqQpp9zow4GaaHwDEFbhhBVb8+R w67Jiviq6aIYBB/OlKL0yJT4BTTYeY1ThW3CbsaF6oRAxRI1P0NUSdPW X-Gm-Gg: AY/fxX4toCA+rK65+vx1Ujs4CfjabKlnUkgn36n3Qfd392TbEs8ypthcmMVIg1B15cl FeWvPbcDMonSAl6didmlPlze4EmKkqC5NonLAfIeUInJZ4mdt2d08wDe2ptazYIYbGewJIVdEa3 ZE4I4tmTVddnmZTnZtbf6VRO53qA5z50mY+JTjX9cr7xajdoI8nGQCJLPN8DBfxFh1y5u94Xhph bmuKB1sArkiJV8WsUkCGlO8TS1Pw4TizcrHhyk4BQhwJH/YWYubapQDLDMi3war074Qzgo3RLkL kx3Cwse8S69IWSe/x1mSVsL4et0VAcTAXsqDHSHUKjjhQr7WzhNcXKieK/bdVz+mE1fxk6k9DqE DzpQovcfsxkwezuOKi0sh4UGAGtElbOriMjq9XvvcDvGrtmFvHCt0tmxj9rLEbt5a/xpwKVnGIf 3WOUlO/zWRC7i0ihyXeeqrGgbAsFCwvVm8gtr1RpL24IbLqItnU2iklkxERvs= X-Received: by 2002:a17:902:f70f:b0:2a0:ccdb:218d with SMTP id d9443c01a7336-2a599db93aamr14773215ad.17.1768366138837; Tue, 13 Jan 2026 20:48:58 -0800 (PST) From: Nicholas Piggin To: qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: Nicholas Piggin , Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , bin.meng@windriver.com, vivahavey@gmail.com, Alvin Chang , Yu-Ming Chang , Joel Stanley Subject: [RFC PATCH 19/25] target/riscv/debug: Add new debug state format Date: Wed, 14 Jan 2026 14:46:52 +1000 Message-ID: <20260114044701.1173347-20-npiggin@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260114044701.1173347-1-npiggin@gmail.com> References: <20260114044701.1173347-1-npiggin@gmail.com> MIME-Version: 1.0 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=2607:f8b0:4864:20::634; envelope-from=npiggin@gmail.com; helo=mail-pl1-x634.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, FREEMAIL_FROM=0.001, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1768366269304158500 Content-Type: text/plain; charset="utf-8" Some Sdtrig implementations support more than 2 debug triggers, but the Sdtrig vmstate is tied to 2 triggers. Extending this will be a compatibility issue anyway, so move to a nicer layout and provide state for all 32 architecturally possible triggers. Signed-off-by: Nicholas Piggin --- target/riscv/cpu.h | 35 ++++++-- target/riscv/csr.c | 7 +- target/riscv/debug.c | 167 +++++++++++++++++++++---------------- target/riscv/debug.h | 3 +- target/riscv/machine.c | 31 ++++++- target/riscv/tcg/tcg-cpu.c | 3 +- 6 files changed, 157 insertions(+), 89 deletions(-) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index a718287d41..44ed1665e2 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -194,6 +194,28 @@ FIELD(VTYPE, VMA, 7, 1) FIELD(VTYPE, VEDIV, 8, 2) FIELD(VTYPE, RESERVED, 10, sizeof(target_ulong) * 8 - 11) =20 +#ifndef CONFIG_USER_ONLY +typedef struct SdtrigTrigger { + target_ulong tdata1; + target_ulong tdata2; + target_ulong tdata3; +} SdtrigTrigger; + +typedef struct SdtrigState { + /* Architected state */ + target_ulong trigger_cur; /* tselect */ + SdtrigTrigger triggers[RV_MAX_SDTRIG_TRIGGERS]; + target_ulong tcontrol; + target_ulong mcontext; /* hcontext */ + target_ulong scontext; + + /* QEMU state */ + struct CPUBreakpoint *cpu_breakpoint[RV_MAX_SDTRIG_TRIGGERS]; + struct CPUWatchpoint *cpu_watchpoint[RV_MAX_SDTRIG_TRIGGERS]; + bool itrigger_enabled; +} SdtrigState; +#endif + typedef struct PMUCTRState { /* Current value of a counter */ uint64_t mhpmcounter_val; @@ -443,14 +465,11 @@ struct CPUArchState { target_ulong mseccfg; =20 /* trigger module */ - target_ulong trigger_cur; - target_ulong tdata1[RV_MAX_TRIGGERS]; - target_ulong tdata2[RV_MAX_TRIGGERS]; - target_ulong tdata3[RV_MAX_TRIGGERS]; - target_ulong mcontext; - struct CPUBreakpoint *cpu_breakpoint[RV_MAX_TRIGGERS]; - struct CPUWatchpoint *cpu_watchpoint[RV_MAX_TRIGGERS]; - bool itrigger_enabled; + SdtrigState sdtrig_state; + /* migration compat */ + target_ulong old_tdata1[RV_DEFAULT_TRIGGERS]; + target_ulong old_tdata2[RV_DEFAULT_TRIGGERS]; + target_ulong old_tdata3[RV_DEFAULT_TRIGGERS]; =20 /* machine specific rdtime callback */ uint64_t (*rdtime_fn)(void *); diff --git a/target/riscv/csr.c b/target/riscv/csr.c index 05c7ec8352..ec70a47d0b 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -5311,7 +5311,8 @@ static RISCVException read_tdata(CPURISCVState *env, = int csrno, target_ulong *val) { /* return 0 in tdata1 to end the trigger enumeration */ - if (env->trigger_cur >=3D RV_MAX_TRIGGERS && csrno =3D=3D CSR_TDATA1) { + if (env->sdtrig_state.trigger_cur >=3D RV_MAX_SDTRIG_TRIGGERS && + csrno =3D=3D CSR_TDATA1) { *val =3D 0; return RISCV_EXCP_NONE; } @@ -5345,7 +5346,7 @@ static RISCVException read_tinfo(CPURISCVState *env, = int csrno, static RISCVException read_mcontext(CPURISCVState *env, int csrno, target_ulong *val) { - *val =3D env->mcontext; + *val =3D env->sdtrig_state.mcontext; return RISCV_EXCP_NONE; } =20 @@ -5363,7 +5364,7 @@ static RISCVException write_mcontext(CPURISCVState *e= nv, int csrno, mask =3D rv32 ? MCONTEXT32 : MCONTEXT64; } =20 - env->mcontext =3D val & mask; + env->sdtrig_state.mcontext =3D val & mask; return RISCV_EXCP_NONE; } =20 diff --git a/target/riscv/debug.c b/target/riscv/debug.c index 96b00193e2..22f7958a79 100644 --- a/target/riscv/debug.c +++ b/target/riscv/debug.c @@ -90,13 +90,15 @@ static inline target_ulong extract_trigger_type(CPURISC= VState *env, static inline target_ulong get_trigger_type(CPURISCVState *env, target_ulong trigger_index) { - return extract_trigger_type(env, env->tdata1[trigger_index]); + SdtrigTrigger *trigger =3D &env->sdtrig_state.triggers[trigger_index]; + return extract_trigger_type(env, trigger->tdata1); } =20 static trigger_action_t get_trigger_action(CPURISCVState *env, target_ulong trigger_index) { - target_ulong tdata1 =3D env->tdata1[trigger_index]; + SdtrigTrigger *trigger =3D &env->sdtrig_state.triggers[trigger_index]; + target_ulong tdata1 =3D trigger->tdata1; int trigger_type =3D get_trigger_type(env, trigger_index); trigger_action_t action =3D DBG_ACTION_NONE; =20 @@ -155,7 +157,7 @@ static inline target_ulong build_tdata1(CPURISCVState *= env, =20 bool tdata_available(CPURISCVState *env, int tdata_index) { - int trigger_type =3D get_trigger_type(env, env->trigger_cur); + int trigger_type =3D get_trigger_type(env, env->sdtrig_state.trigger_c= ur); =20 if (unlikely(tdata_index >=3D TDATA_NUM)) { return false; @@ -166,13 +168,13 @@ bool tdata_available(CPURISCVState *env, int tdata_in= dex) =20 target_ulong tselect_csr_read(CPURISCVState *env) { - return env->trigger_cur; + return env->sdtrig_state.trigger_cur; } =20 void tselect_csr_write(CPURISCVState *env, target_ulong val) { - if (val < RV_MAX_TRIGGERS) { - env->trigger_cur =3D val; + if (val < RV_DEFAULT_TRIGGERS) { + env->sdtrig_state.trigger_cur =3D val; } } =20 @@ -342,7 +344,8 @@ static bool icount_priv_match(CPURISCVState *env, targe= t_ulong tdata1) static bool trigger_priv_match(CPURISCVState *env, trigger_type_t type, int trigger_index) { - target_ulong tdata1 =3D env->tdata1[trigger_index]; + SdtrigTrigger *trigger =3D &env->sdtrig_state.triggers[trigger_index]; + target_ulong tdata1 =3D trigger->tdata1; =20 switch (type) { case TRIGGER_TYPE_AD_MATCH: @@ -371,7 +374,8 @@ static bool trigger_priv_match(CPURISCVState *env, trig= ger_type_t type, static bool trigger_textra_match(CPURISCVState *env, trigger_type_t type, int trigger_index) { - target_ulong textra =3D env->tdata3[trigger_index]; + SdtrigTrigger *trigger =3D &env->sdtrig_state.triggers[trigger_index]; + target_ulong textra =3D trigger->tdata3; target_ulong mhvalue, mhselect; =20 if (type < TRIGGER_TYPE_AD_MATCH || type > TRIGGER_TYPE_AD_MATCH6) { @@ -399,7 +403,7 @@ static bool trigger_textra_match(CPURISCVState *env, tr= igger_type_t type, break; case MHSELECT_MCONTEXT: /* Match if the low bits of mcontext/hcontext equal mhvalue. */ - if (mhvalue !=3D env->mcontext) { + if (mhvalue !=3D env->sdtrig_state.mcontext) { return false; } break; @@ -477,8 +481,9 @@ static target_ulong type2_mcontrol_validate(CPURISCVSta= te *env, =20 static void type2_breakpoint_insert(CPURISCVState *env, target_ulong index) { - target_ulong ctrl =3D env->tdata1[index]; - target_ulong addr =3D env->tdata2[index]; + SdtrigTrigger *trigger =3D &env->sdtrig_state.triggers[index]; + target_ulong ctrl =3D trigger->tdata1; + target_ulong addr =3D trigger->tdata2; bool enabled =3D type2_breakpoint_enabled(ctrl); CPUState *cs =3D env_cpu(env); int flags =3D BP_CPU | BP_STOP_BEFORE_ACCESS; @@ -489,7 +494,8 @@ static void type2_breakpoint_insert(CPURISCVState *env,= target_ulong index) } =20 if (ctrl & TYPE2_EXEC) { - cpu_breakpoint_insert(cs, addr, flags, &env->cpu_breakpoint[index]= ); + cpu_breakpoint_insert(cs, addr, flags, + &env->sdtrig_state.cpu_breakpoint[index]); } =20 if (ctrl & TYPE2_LOAD) { @@ -503,12 +509,12 @@ static void type2_breakpoint_insert(CPURISCVState *en= v, target_ulong index) size =3D type2_breakpoint_size(env, ctrl); if (size !=3D 0) { cpu_watchpoint_insert(cs, addr, size, flags, - &env->cpu_watchpoint[index]); + &env->sdtrig_state.cpu_watchpoint[index]= ); } else { def_size =3D riscv_cpu_mxl(env) =3D=3D MXL_RV64 ? 8 : 4; =20 cpu_watchpoint_insert(cs, addr, def_size, flags, - &env->cpu_watchpoint[index]); + &env->sdtrig_state.cpu_watchpoint[index]= ); } } } @@ -517,29 +523,32 @@ static void type2_breakpoint_remove(CPURISCVState *en= v, target_ulong index) { CPUState *cs =3D env_cpu(env); =20 - if (env->cpu_breakpoint[index]) { - cpu_breakpoint_remove_by_ref(cs, env->cpu_breakpoint[index]); - env->cpu_breakpoint[index] =3D NULL; + if (env->sdtrig_state.cpu_breakpoint[index]) { + cpu_breakpoint_remove_by_ref(cs, + env->sdtrig_state.cpu_breakpoint[inde= x]); + env->sdtrig_state.cpu_breakpoint[index] =3D NULL; } =20 - if (env->cpu_watchpoint[index]) { - cpu_watchpoint_remove_by_ref(cs, env->cpu_watchpoint[index]); - env->cpu_watchpoint[index] =3D NULL; + if (env->sdtrig_state.cpu_watchpoint[index]) { + cpu_watchpoint_remove_by_ref(cs, + env->sdtrig_state.cpu_watchpoint[inde= x]); + env->sdtrig_state.cpu_watchpoint[index] =3D NULL; } } =20 static void type2_reg_write(CPURISCVState *env, target_ulong index, int tdata_index, target_ulong val) { + SdtrigTrigger *trigger =3D &env->sdtrig_state.triggers[index]; switch (tdata_index) { case TDATA1: - env->tdata1[index] =3D type2_mcontrol_validate(env, val); + trigger->tdata1 =3D type2_mcontrol_validate(env, val); break; case TDATA2: - env->tdata2[index] =3D val; + trigger->tdata2 =3D val; break; case TDATA3: - env->tdata3[index] =3D textra_validate(env, val); + trigger->tdata3 =3D textra_validate(env, val); break; default: g_assert_not_reached(); @@ -593,8 +602,9 @@ static target_ulong type6_mcontrol6_validate(CPURISCVSt= ate *env, =20 static void type6_breakpoint_insert(CPURISCVState *env, target_ulong index) { - target_ulong ctrl =3D env->tdata1[index]; - target_ulong addr =3D env->tdata2[index]; + SdtrigTrigger *trigger =3D &env->sdtrig_state.triggers[index]; + target_ulong ctrl =3D trigger->tdata1; + target_ulong addr =3D trigger->tdata2; bool enabled =3D type6_breakpoint_enabled(ctrl); CPUState *cs =3D env_cpu(env); int flags =3D BP_CPU | BP_STOP_BEFORE_ACCESS; @@ -605,7 +615,8 @@ static void type6_breakpoint_insert(CPURISCVState *env,= target_ulong index) } =20 if (ctrl & TYPE6_EXEC) { - cpu_breakpoint_insert(cs, addr, flags, &env->cpu_breakpoint[index]= ); + cpu_breakpoint_insert(cs, addr, flags, + &env->sdtrig_state.cpu_breakpoint[index]); } =20 if (ctrl & TYPE6_LOAD) { @@ -620,10 +631,10 @@ static void type6_breakpoint_insert(CPURISCVState *en= v, target_ulong index) size =3D extract32(ctrl, 16, 4); if (size !=3D 0) { cpu_watchpoint_insert(cs, addr, size, flags, - &env->cpu_watchpoint[index]); + &env->sdtrig_state.cpu_watchpoint[index]= ); } else { cpu_watchpoint_insert(cs, addr, 8, flags, - &env->cpu_watchpoint[index]); + &env->sdtrig_state.cpu_watchpoint[index]= ); } } } @@ -636,15 +647,16 @@ static void type6_breakpoint_remove(CPURISCVState *en= v, target_ulong index) static void type6_reg_write(CPURISCVState *env, target_ulong index, int tdata_index, target_ulong val) { + SdtrigTrigger *trigger =3D &env->sdtrig_state.triggers[index]; switch (tdata_index) { case TDATA1: - env->tdata1[index] =3D type6_mcontrol6_validate(env, val); + trigger->tdata1 =3D type6_mcontrol6_validate(env, val); break; case TDATA2: - env->tdata2[index] =3D val; + trigger->tdata2 =3D val; break; case TDATA3: - env->tdata3[index] =3D textra_validate(env, val); + trigger->tdata3 =3D textra_validate(env, val); break; default: g_assert_not_reached(); @@ -656,21 +668,22 @@ static void type6_reg_write(CPURISCVState *env, targe= t_ulong index, static inline int itrigger_get_count(CPURISCVState *env, int index) { - return get_field(env->tdata1[index], ITRIGGER_COUNT); + SdtrigTrigger *trigger =3D &env->sdtrig_state.triggers[index]; + return get_field(trigger->tdata1, ITRIGGER_COUNT); } =20 static inline void itrigger_set_count(CPURISCVState *env, int index, int value) { - env->tdata1[index] =3D set_field(env->tdata1[index], - ITRIGGER_COUNT, value); + SdtrigTrigger *trigger =3D &env->sdtrig_state.triggers[index]; + trigger->tdata1 =3D set_field(trigger->tdata1, ITRIGGER_COUNT, value); } =20 static bool riscv_itrigger_enabled(CPURISCVState *env) { int count; =20 - for (int i =3D 0; i < RV_MAX_TRIGGERS; i++) { + for (int i =3D 0; i < RV_MAX_SDTRIG_TRIGGERS; i++) { if (get_trigger_type(env, i) !=3D TRIGGER_TYPE_INST_CNT) { continue; } @@ -697,9 +710,9 @@ void helper_itrigger_match(CPURISCVState *env) int count; bool enabled =3D false; =20 - g_assert(env->itrigger_enabled); + g_assert(env->sdtrig_state.itrigger_enabled); =20 - for (int i =3D 0; i < RV_MAX_TRIGGERS; i++) { + for (int i =3D 0; i < RV_MAX_SDTRIG_TRIGGERS; i++) { if (get_trigger_type(env, i) !=3D TRIGGER_TYPE_INST_CNT) { continue; } @@ -719,7 +732,7 @@ void helper_itrigger_match(CPURISCVState *env) enabled =3D true; } } - env->itrigger_enabled =3D enabled; + env->sdtrig_state.itrigger_enabled =3D enabled; } =20 static target_ulong itrigger_validate(CPURISCVState *env, @@ -745,16 +758,17 @@ static target_ulong itrigger_validate(CPURISCVState *= env, static void itrigger_reg_write(CPURISCVState *env, target_ulong index, int tdata_index, target_ulong val) { + SdtrigTrigger *trigger =3D &env->sdtrig_state.triggers[index]; switch (tdata_index) { case TDATA1: - env->tdata1[index] =3D itrigger_validate(env, val); + trigger->tdata1 =3D itrigger_validate(env, val); break; case TDATA2: qemu_log_mask(LOG_UNIMP, "tdata2 is not supported for icount trigger\n"); break; case TDATA3: - env->tdata3[index] =3D textra_validate(env, val); + trigger->tdata3 =3D textra_validate(env, val); break; default: g_assert_not_reached(); @@ -764,19 +778,21 @@ static void itrigger_reg_write(CPURISCVState *env, ta= rget_ulong index, static void anytype_reg_write(CPURISCVState *env, target_ulong index, int tdata_index, target_ulong val) { + SdtrigTrigger *trigger =3D &env->sdtrig_state.triggers[index]; + /* * This should check the value is valid for at least one of the suppor= ted * trigger types. */ switch (tdata_index) { case TDATA1: - env->tdata1[env->trigger_cur] =3D val; + trigger->tdata1 =3D val; break; case TDATA2: - env->tdata2[env->trigger_cur] =3D val; + trigger->tdata2 =3D val; break; case TDATA3: - env->tdata3[env->trigger_cur] =3D val; + trigger->tdata3 =3D val; break; default: g_assert_not_reached(); @@ -785,13 +801,16 @@ static void anytype_reg_write(CPURISCVState *env, tar= get_ulong index, =20 target_ulong tdata_csr_read(CPURISCVState *env, int tdata_index) { + target_ulong index =3D env->sdtrig_state.trigger_cur; + SdtrigTrigger *trigger =3D &env->sdtrig_state.triggers[index]; + switch (tdata_index) { case TDATA1: - return env->tdata1[env->trigger_cur]; + return trigger->tdata1; case TDATA2: - return env->tdata2[env->trigger_cur]; + return trigger->tdata2; case TDATA3: - return env->tdata3[env->trigger_cur]; + return trigger->tdata3; default: g_assert_not_reached(); } @@ -799,15 +818,16 @@ target_ulong tdata_csr_read(CPURISCVState *env, int t= data_index) =20 void tdata_csr_write(CPURISCVState *env, int tdata_index, target_ulong val) { - int trigger_type =3D get_trigger_type(env, env->trigger_cur); + target_ulong index =3D env->sdtrig_state.trigger_cur; + int trigger_type =3D get_trigger_type(env, index); bool check_itrigger =3D false; =20 switch (trigger_type) { case TRIGGER_TYPE_AD_MATCH: - type2_breakpoint_remove(env, env->trigger_cur); + type2_breakpoint_remove(env, index); break; case TRIGGER_TYPE_AD_MATCH6: - type6_breakpoint_remove(env, env->trigger_cur); + type6_breakpoint_remove(env, index); break; case TRIGGER_TYPE_INST_CNT: /* @@ -831,17 +851,17 @@ void tdata_csr_write(CPURISCVState *env, int tdata_in= dex, target_ulong val) =20 switch (trigger_type) { case TRIGGER_TYPE_AD_MATCH: - type2_reg_write(env, env->trigger_cur, tdata_index, val); + type2_reg_write(env, index, tdata_index, val); break; case TRIGGER_TYPE_AD_MATCH6: - type6_reg_write(env, env->trigger_cur, tdata_index, val); + type6_reg_write(env, index, tdata_index, val); break; case TRIGGER_TYPE_INST_CNT: - itrigger_reg_write(env, env->trigger_cur, tdata_index, val); + itrigger_reg_write(env, index, tdata_index, val); check_itrigger =3D true; break; case TRIGGER_TYPE_UNAVAIL: - anytype_reg_write(env, env->trigger_cur, tdata_index, val); + anytype_reg_write(env, index, tdata_index, val); break; case TRIGGER_TYPE_INT: case TRIGGER_TYPE_EXCP: @@ -858,7 +878,7 @@ void tdata_csr_write(CPURISCVState *env, int tdata_inde= x, target_ulong val) } =20 if (check_itrigger) { - env->itrigger_enabled =3D riscv_itrigger_enabled(env); + env->sdtrig_state.itrigger_enabled =3D riscv_itrigger_enabled(env); } } =20 @@ -898,7 +918,8 @@ bool riscv_cpu_debug_check_breakpoint(CPUState *cs) int i; =20 QTAILQ_FOREACH(bp, &cs->breakpoints, entry) { - for (i =3D 0; i < RV_MAX_TRIGGERS; i++) { + for (i =3D 0; i < RV_MAX_SDTRIG_TRIGGERS; i++) { + SdtrigTrigger *trigger =3D &env->sdtrig_state.triggers[i]; trigger_type =3D get_trigger_type(env, i); =20 switch (trigger_type) { @@ -915,8 +936,8 @@ bool riscv_cpu_debug_check_breakpoint(CPUState *cs) =20 switch (trigger_type) { case TRIGGER_TYPE_AD_MATCH: - ctrl =3D env->tdata1[i]; - pc =3D env->tdata2[i]; + ctrl =3D trigger->tdata1; + pc =3D trigger->tdata2; =20 if ((ctrl & TYPE2_EXEC) && (bp->pc =3D=3D pc)) { if (do_trigger_action(env, i)) { @@ -926,8 +947,8 @@ bool riscv_cpu_debug_check_breakpoint(CPUState *cs) } break; case TRIGGER_TYPE_AD_MATCH6: - ctrl =3D env->tdata1[i]; - pc =3D env->tdata2[i]; + ctrl =3D trigger->tdata1; + pc =3D trigger->tdata2; =20 if ((ctrl & TYPE6_EXEC) && (bp->pc =3D=3D pc)) { if (do_trigger_action(env, i)) { @@ -955,7 +976,8 @@ bool riscv_cpu_debug_check_watchpoint(CPUState *cs, CPU= Watchpoint *wp) int flags; int i; =20 - for (i =3D 0; i < RV_MAX_TRIGGERS; i++) { + for (i =3D 0; i < RV_MAX_SDTRIG_TRIGGERS; i++) { + SdtrigTrigger *trigger =3D &env->sdtrig_state.triggers[i]; trigger_type =3D get_trigger_type(env, i); =20 switch (trigger_type) { @@ -972,8 +994,8 @@ bool riscv_cpu_debug_check_watchpoint(CPUState *cs, CPU= Watchpoint *wp) =20 switch (trigger_type) { case TRIGGER_TYPE_AD_MATCH: - ctrl =3D env->tdata1[i]; - addr =3D env->tdata2[i]; + ctrl =3D trigger->tdata1; + addr =3D trigger->tdata2; flags =3D 0; =20 if (ctrl & TYPE2_LOAD) { @@ -991,8 +1013,8 @@ bool riscv_cpu_debug_check_watchpoint(CPUState *cs, CP= UWatchpoint *wp) } break; case TRIGGER_TYPE_AD_MATCH6: - ctrl =3D env->tdata1[i]; - addr =3D env->tdata2[i]; + ctrl =3D trigger->tdata1; + addr =3D trigger->tdata2; flags =3D 0; =20 if (ctrl & TYPE6_LOAD) { @@ -1019,12 +1041,12 @@ bool riscv_cpu_debug_check_watchpoint(CPUState *cs,= CPUWatchpoint *wp) =20 void riscv_cpu_debug_change_priv(CPURISCVState *env) { - env->itrigger_enabled =3D riscv_itrigger_enabled(env); + env->sdtrig_state.itrigger_enabled =3D riscv_itrigger_enabled(env); } =20 void riscv_cpu_debug_post_load(CPURISCVState *env) { - for (int i =3D 0; i < RV_MAX_TRIGGERS; i++) { + for (int i =3D 0; i < RV_MAX_SDTRIG_TRIGGERS; i++) { int trigger_type =3D get_trigger_type(env, i); =20 switch (trigger_type) { @@ -1038,7 +1060,7 @@ void riscv_cpu_debug_post_load(CPURISCVState *env) break; } } - env->itrigger_enabled =3D riscv_itrigger_enabled(env); + env->sdtrig_state.itrigger_enabled =3D riscv_itrigger_enabled(env); } =20 void riscv_trigger_reset_hold(CPURISCVState *env) @@ -1047,7 +1069,8 @@ void riscv_trigger_reset_hold(CPURISCVState *env) int i; =20 /* init to type 15 (unavailable) triggers */ - for (i =3D 0; i < RV_MAX_TRIGGERS; i++) { + for (i =3D 0; i < RV_MAX_SDTRIG_TRIGGERS; i++) { + SdtrigTrigger *trigger =3D &env->sdtrig_state.triggers[i]; int trigger_type =3D get_trigger_type(env, i); =20 switch (trigger_type) { @@ -1061,10 +1084,10 @@ void riscv_trigger_reset_hold(CPURISCVState *env) break; } =20 - env->tdata1[i] =3D tdata1; - env->tdata2[i] =3D 0; - env->tdata3[i] =3D 0; + trigger->tdata1 =3D tdata1; + trigger->tdata2 =3D 0; + trigger->tdata3 =3D 0; } =20 - env->mcontext =3D 0; + env->sdtrig_state.mcontext =3D 0; } diff --git a/target/riscv/debug.h b/target/riscv/debug.h index bee42b8593..8a047c8073 100644 --- a/target/riscv/debug.h +++ b/target/riscv/debug.h @@ -24,7 +24,8 @@ =20 #include "exec/breakpoint.h" =20 -#define RV_MAX_TRIGGERS 2 +#define RV_MAX_SDTRIG_TRIGGERS 32 +#define RV_DEFAULT_TRIGGERS 2 =20 /* register index of tdata CSRs */ enum { diff --git a/target/riscv/machine.c b/target/riscv/machine.c index bee1445a31..fdd5e8b67b 100644 --- a/target/riscv/machine.c +++ b/target/riscv/machine.c @@ -225,10 +225,32 @@ static bool debug_needed(void *opaque) return cpu->cfg.debug; } =20 +static int debug_pre_save(void *opaque) +{ + RISCVCPU *cpu =3D opaque; + CPURISCVState *env =3D &cpu->env; + int i; + + for (i =3D 0; i < RV_DEFAULT_TRIGGERS; i++) { + env->old_tdata1[i] =3D env->sdtrig_state.triggers[i].tdata1; + env->old_tdata2[i] =3D env->sdtrig_state.triggers[i].tdata2; + env->old_tdata3[i] =3D env->sdtrig_state.triggers[i].tdata3; + } + + return 0; +} + static int debug_post_load(void *opaque, int version_id) { RISCVCPU *cpu =3D opaque; CPURISCVState *env =3D &cpu->env; + int i; + + for (i =3D 0; i < RV_DEFAULT_TRIGGERS; i++) { + env->sdtrig_state.triggers[i].tdata1 =3D env->old_tdata1[i]; + env->sdtrig_state.triggers[i].tdata2 =3D env->old_tdata2[i]; + env->sdtrig_state.triggers[i].tdata3 =3D env->old_tdata3[i]; + } =20 riscv_cpu_debug_post_load(env); =20 @@ -240,12 +262,13 @@ static const VMStateDescription vmstate_debug =3D { .version_id =3D 2, .minimum_version_id =3D 2, .needed =3D debug_needed, + .pre_save =3D debug_pre_save, .post_load =3D debug_post_load, .fields =3D (const VMStateField[]) { - VMSTATE_UINTTL(env.trigger_cur, RISCVCPU), - VMSTATE_UINTTL_ARRAY(env.tdata1, RISCVCPU, RV_MAX_TRIGGERS), - VMSTATE_UINTTL_ARRAY(env.tdata2, RISCVCPU, RV_MAX_TRIGGERS), - VMSTATE_UINTTL_ARRAY(env.tdata3, RISCVCPU, RV_MAX_TRIGGERS), + VMSTATE_UINTTL(env.sdtrig_state.trigger_cur, RISCVCPU), + VMSTATE_UINTTL_ARRAY(env.old_tdata1, RISCVCPU, RV_DEFAULT_TRIGGERS= ), + VMSTATE_UINTTL_ARRAY(env.old_tdata2, RISCVCPU, RV_DEFAULT_TRIGGERS= ), + VMSTATE_UINTTL_ARRAY(env.old_tdata3, RISCVCPU, RV_DEFAULT_TRIGGERS= ), VMSTATE_END_OF_LIST() } }; diff --git a/target/riscv/tcg/tcg-cpu.c b/target/riscv/tcg/tcg-cpu.c index 677172ae2d..bcc8cfcece 100644 --- a/target/riscv/tcg/tcg-cpu.c +++ b/target/riscv/tcg/tcg-cpu.c @@ -178,7 +178,8 @@ static TCGTBCPUState riscv_get_tb_cpu_state(CPUState *c= s) } =20 if (cpu->cfg.debug) { - flags =3D FIELD_DP32(flags, TB_FLAGS, ITRIGGER, env->itrigger_enab= led); + flags =3D FIELD_DP32(flags, TB_FLAGS, ITRIGGER, + env->sdtrig_state.itrigger_enabled); } #endif =20 --=20 2.51.0 From nobody Sun Feb 8 12:15:01 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1768366247; cv=none; d=zohomail.com; s=zohoarc; b=ULoqSheQ6yzG2NlBBuj35g5kgnOlFU/AV+ft+A5IZVsT+7rODkZlWGzBqSTwOJ8F+h4iepn4a2jVpd61Gi299l4A5fCjnIMFUCZRfUKkntqNNaCSPT2+SKN7pqRj7xYcGx1ir4lNGiGK9Pu616x3d2KA5oAtR5uGsfbUw5HRN+I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768366247; 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=H0wkxMxuLksSJG2HBXSoSzL8cM026VEw8G4DFyhgQmI=; b=Vw7hl5UMRJQhxzhi0Y/YGSx6laAmG49TEh0u43eEQqdcPgxAAU+U3OXlwKJqrlPhtGVP0K8Cmrq1uN3w8PqX4nTtVax/p49crGHu5/J2hAtx5v1zgjRXsc2gaaGRD9KFxi2b/t4JueMJrM0yGkinR5R39Kyg0YrQIC+EVyamx7A= 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 1768366247679319.3109598190931; Tue, 13 Jan 2026 20:50:47 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vfsoy-0007Bj-Di; Tue, 13 Jan 2026 23:49:28 -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 1vfsoe-0006z6-Tm for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:49:09 -0500 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vfsoc-00049o-P2 for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:49:08 -0500 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-2a0ac29fca1so52788535ad.2 for ; Tue, 13 Jan 2026 20:49:05 -0800 (PST) Received: from lima-default (123.253.188.110.qld.leaptel.network. [123.253.188.110]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3c49037sm216111905ad.36.2026.01.13.20.48.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Jan 2026 20:49:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768366144; x=1768970944; 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=H0wkxMxuLksSJG2HBXSoSzL8cM026VEw8G4DFyhgQmI=; b=TjCWVlY7dAlCJ39fi7yO4XrV/ndWRP/ewTZeDhFqiE07XXamhtX2546FGbIu1gSDId atwvlckBZ3kkp+BohCrg+Lg5XRGrIZQQWLwf2Cwl44ispATh6S+gh6BpO/Gd0GmfA2Zo LCfDFvc+4n4gW8pH7mneiXYFOj/eJGI3f8in9DavhPyfZxWbtLAfUVAM3UDU3KFZz1RQ 8uO5zqta+/+tjAjSYVd8ACsSVGGCdP1T27IKrcy2KxhC7ZBgXCp3UyKHtwQVPAaz9ewO gjPMKmd9RcTvWTEjKVfCfjSz4lknzXYv7w6CQ5CIxyxFqGipOw7FEzQk7MeOE6J2g+8W sNEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768366144; x=1768970944; 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=H0wkxMxuLksSJG2HBXSoSzL8cM026VEw8G4DFyhgQmI=; b=n0YeIljTonuOZJXRtZEQvpNbkNxOSJTbRszaO+o233tI+7OdkNd0vpgtw6h+jrGRYO uO1k2nJMI7tzrsKrQt/6u9inuXeM9qnEgqmEGcbD2VXDJMenJn8KB2tULu2K+EMKBKnA cG7yUQmVf5wKwD/S3fRKIFfQwUxgNOsijDG0Jbm5OZsBGGULVqj+NsIraVt1t0z/Druo kHUEe9nvi57tLv/byhsus4X6eP3a+boTA+dnaChey/R6zYNnvy7fIv2tMVuWsHkk6Tr6 dPNKTV9cPKDtawe8aiheDmA2On0UPUiRBPmRL9NWZqSm1rmbjq4Jvgqf/O27rElhU6mK TZNA== X-Forwarded-Encrypted: i=1; AJvYcCU53epFC64CtAnq6abp7fL5W34saSkwNChM/HfrvSSBPISA7PgHDjeNg4O6NR8z/L9MyMg1SHYVRQY5@nongnu.org X-Gm-Message-State: AOJu0YzpF7V/j4NmTRwt/5jUQXfJBo3BLJ5WU9z73MULWlPvwjhFfXyY 8BJW2pcVknWrYhWmZLKo3J8fI60aL2W+xIt1n2f1L0Ll4YNCi89uX+zg X-Gm-Gg: AY/fxX6VjBFpUbI9pft90qX1hK9Yxf22X/S8n4laMbnm6g0O0VvypQg39Qp/+dy5IPt IVhbb9PxuDyvC1UdM5LAEFqRtcl4rPfukPZEBY7QxbL6/GK6xDCkA1a1IWftNsJUYCTHf6CiQ4q CN6LBDmiHY5JBUCyDVCthk6CUXPERRZD4Lw8D8qENjEkcJ2QOtQZKLbvs6mUMC1+BX5L9zJBMZQ D1+sFG3vFECopTmcV/C9ZzSXpitA9wKXgyDeOvnq3MROrzYQOBGPnu33Qtiuvcuc0md3O4r0H3n BNR2qVMTf68la+4exT/izVzgvgJw8WoLL4e905XQFhd1rB4rVDmpY7ZEMMdAGXlnL4LoxL4hD0T FLIc1eCkbAKXT+PTLva6lldm5yeKSmUou8GmsYDqaRyL+wxoIQanVR+vVucJqZ068CJAjon5pRk hmTuqc4gdCzTIQOjNvqQS24kyTCm6H9OrHBJOpFTWZeTdNmL8kdepj6OjF3R4= X-Received: by 2002:a17:903:1b47:b0:2a3:bf5f:926b with SMTP id d9443c01a7336-2a599e8f884mr15538695ad.47.1768366144022; Tue, 13 Jan 2026 20:49:04 -0800 (PST) From: Nicholas Piggin To: qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: Nicholas Piggin , Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , bin.meng@windriver.com, vivahavey@gmail.com, Alvin Chang , Yu-Ming Chang , Joel Stanley Subject: [RFC PATCH 20/25] target/riscv/debug: Migrate mcontext using new sdtrig vmstate Date: Wed, 14 Jan 2026 14:46:53 +1000 Message-ID: <20260114044701.1173347-21-npiggin@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260114044701.1173347-1-npiggin@gmail.com> References: <20260114044701.1173347-1-npiggin@gmail.com> MIME-Version: 1.0 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=2607:f8b0:4864:20::62d; envelope-from=npiggin@gmail.com; helo=mail-pl1-x62d.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, FREEMAIL_FROM=0.001, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1768366249237158500 Content-Type: text/plain; charset="utf-8" The debug migration state does not include mcontext. Change to using a new sdtrig vmstate format that allows for all architectural state if mcontext !=3D 0. This means a machine is sometimes-migratable, which on second thoughts is probably bad. Is there a better way to do this, or could we just break compat and move to the new vmstate? Not yet signed off. --- target/riscv/machine.c | 58 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/target/riscv/machine.c b/target/riscv/machine.c index fdd5e8b67b..23a5f60d2a 100644 --- a/target/riscv/machine.c +++ b/target/riscv/machine.c @@ -221,8 +221,10 @@ static const VMStateDescription vmstate_kvmtimer =3D { static bool debug_needed(void *opaque) { RISCVCPU *cpu =3D opaque; + CPURISCVState *env =3D &cpu->env; =20 - return cpu->cfg.debug; + return cpu->cfg.debug && + env->sdtrig_state.mcontext =3D=3D 0; } =20 static int debug_pre_save(void *opaque) @@ -273,6 +275,59 @@ static const VMStateDescription vmstate_debug =3D { } }; =20 +/* + * This is a newer version of the debug (sdtrig) state, required + * to migrate hcontext/mcontext. + */ +static bool sdtrig_needed(void *opaque) +{ + RISCVCPU *cpu =3D opaque; + CPURISCVState *env =3D &cpu->env; + + return cpu->cfg.debug && + env->sdtrig_state.mcontext !=3D 0; +} + +static int sdtrig_post_load(void *opaque, int version_id) +{ + RISCVCPU *cpu =3D opaque; + CPURISCVState *env =3D &cpu->env; + + riscv_cpu_debug_post_load(env); + + return 0; +} + +static const VMStateDescription vmstate_sdtrig_trigger =3D { + .name =3D "cpu/sdtrig/trigger", + .version_id =3D 1, + .minimum_version_id =3D 1, + .fields =3D (const VMStateField[]) { + VMSTATE_UINTTL(tdata1, SdtrigTrigger), + VMSTATE_UINTTL(tdata2, SdtrigTrigger), + VMSTATE_UINTTL(tdata3, SdtrigTrigger), + VMSTATE_END_OF_LIST() + } +}; + +static const VMStateDescription vmstate_sdtrig =3D { + .name =3D "cpu/sdtrig", + .version_id =3D 1, + .minimum_version_id =3D 1, + .needed =3D sdtrig_needed, + .post_load =3D sdtrig_post_load, + .fields =3D (const VMStateField[]) { + VMSTATE_UINTTL(env.sdtrig_state.trigger_cur, RISCVCPU), + VMSTATE_UINTTL(env.sdtrig_state.tcontrol, RISCVCPU), + VMSTATE_UINTTL(env.sdtrig_state.mcontext, RISCVCPU), + VMSTATE_UINTTL(env.sdtrig_state.scontext, RISCVCPU), + VMSTATE_STRUCT_ARRAY(env.sdtrig_state.triggers, RISCVCPU, + RV_MAX_SDTRIG_TRIGGERS, + 0, vmstate_sdtrig_trigger, SdtrigTrigger), + VMSTATE_END_OF_LIST() + } +}; + static int riscv_cpu_post_load(void *opaque, int version_id) { RISCVCPU *cpu =3D opaque; @@ -514,6 +569,7 @@ const VMStateDescription vmstate_riscv_cpu =3D { #endif &vmstate_envcfg, &vmstate_debug, + &vmstate_sdtrig, &vmstate_smstateen, &vmstate_jvt, &vmstate_elp, --=20 2.51.0 From nobody Sun Feb 8 12:15:01 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1768366194; cv=none; d=zohomail.com; s=zohoarc; b=XTQ+apWTmoeOrpjQOruJgo4ZPURZGpcz07YQhdkeQmlTq4VWTcIp7Ur414T7kj60lqowxPSP3x1hfae0lRPc7T9/WvznTn18Vxdhcsp1nwYVDtIydj9vET9eNatJJYn0Ld+CVmTC34qulOn/gG/F5jt8yJfPuGSgjmrSvYhhXWs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768366194; 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=ZuF6YEIztB5mevIrTN7lKK2Hx7jAvfRwQrJI7h3suow=; b=MVQfbQ/vYHCr5JOrlRnmzFwN4H2yGhCb1ic9SZCyUnypjmzh5KDywfQHgwlT1nmLtSEo6t4nfqX/38ZgF9NEHzQ875uHc9YV/f9EwPaFGsGtzH3oFrBeVmqjQ91TYY25YOVHRDtaocNsZC5omAkIZgZ9OaFcv+6MaWtuKhZkkE4= 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 1768366194982142.2072946331283; Tue, 13 Jan 2026 20:49:54 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vfsp9-0007O6-CN; Tue, 13 Jan 2026 23:49:39 -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 1vfsoi-00074V-Uc for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:49:13 -0500 Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vfsoh-0004Ae-4m for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:49:12 -0500 Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-2a0d52768ccso55605905ad.1 for ; Tue, 13 Jan 2026 20:49:10 -0800 (PST) Received: from lima-default (123.253.188.110.qld.leaptel.network. [123.253.188.110]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3c49037sm216111905ad.36.2026.01.13.20.49.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Jan 2026 20:49:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768366149; x=1768970949; 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=ZuF6YEIztB5mevIrTN7lKK2Hx7jAvfRwQrJI7h3suow=; b=Ij9hNqL1Fp+j7DOpEjhaqCtEtebgGTaBHAjPWdsWFs910vo8NoMEo11Fub7rWkzA6T Pok89PFFkACHWaZI164Vyu/8R4CNz9TeXXXChUjKSh4Hz0WoLmfLelxtqLIUa9DwjQOy aXe6ysPfdFaL62tih6xW+OqGkc7qrobqdGokn7ZzkGRm2zzLEsWnYdbryOblaKfHEvN8 tH7Rc6RGDx6wYv1y/TwNw5eeGZV6/tchVNXXtmXitKq4ikK2Ecj3djgeNXBJkUMdRJiu Pdqn3oeS14imdijrCkj6QudnkqBd4D6i44o0xeHOBJYOBgZdosfOXmIFH9WHk+GdcvP6 W5Rg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768366149; x=1768970949; 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=ZuF6YEIztB5mevIrTN7lKK2Hx7jAvfRwQrJI7h3suow=; b=gqbXSm7ZdhS06pwaAtD34ssT/IAmMmoXpA1JVAbcgv926CY5SJb39Jcz8Bgfr8hjqw uEHVJu5fQoU+FgUnd/KF3SOA0VylHkVnAGunM8OSjQRXfKHfwDv4Il5nTxSiGfNwRSHv tpH5TVYpzsrszTBsEXqxkXduvfxVBz/8YQKjQ60zmoSiftno89kofaMsHocJd5EyiBiI xWUqYroNMMhtTuZX1OMGaOqiKML0M/GY2/EFwEzfe9DMAxaaiW5Eporq5V55aqmAG0M5 jAqoW8hIx7WdDoNoOR1FXNTCN9ZZB6eEQ95fVEOWCEqhCR4MW24B33ao6t+cY8X5K5wO ww5Q== X-Forwarded-Encrypted: i=1; AJvYcCW7YjOULxAY5wRwxfEMkzLuXd4/KSLRJ24gPCsl1JBptRQUreo51RPFflLQxlQsSGbwEASMzBal2qIw@nongnu.org X-Gm-Message-State: AOJu0Yzr8KMR5LUFx4AcI/UC6wYqFOY6UYaL6mRODxkm1cg8+oD90I7q Fkwrrp2VKH+EEMrFX1vA5oaVbnP7FsIAG4T+gV4o5dCi8XOXomgKRkzg X-Gm-Gg: AY/fxX4n7QNFu4alRSSQB/EKCn5Io3L0T7VwOq8Bt5bAbzTAdUzLEmmCt7r+KwSiGO8 DetGMjvy4UqmoFB8Te5DAAkJPIDKVTmLHCrBLE+F95n39wK4PRcMSbenFGk6yOMiuMgwzP0CoYG 38LV+23gdr6iQVfvboK2g0obRyDwn9ZqcEdEga2c1/jwOQQjNL00sbdG849u9G7brSALrOVPmEn wgocbAbSJt52HmbT7mkMY/gVlMf56L8dUJEvu/th0xRgbFv5KuZAthkBZ+9mOwFyYydhONP1rqQ yBAJrVLw4z2vJtlllxUlUnvgVaImfe52BzDJbAbHViXfWDIP8QF/l2Zu+/LN56H1nb8txam7fZg YbHJeUoiI6Ejd6eRluDxISYNunuYo5i7gwxwPfVTOKh7zLtmjSQCXPXeVwn39nLZAF6WBjULNRv 3sccF8NRpCJW3yjmhL382dQCuFCUYAGkKv//EHkhkhiZS0TDmkt6P2w+z+wGo= X-Received: by 2002:a17:902:f690:b0:2a0:8df5:2f6f with SMTP id d9443c01a7336-2a59bb2a4e8mr8344305ad.15.1768366149111; Tue, 13 Jan 2026 20:49:09 -0800 (PST) From: Nicholas Piggin To: qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: Nicholas Piggin , Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , bin.meng@windriver.com, vivahavey@gmail.com, Alvin Chang , Yu-Ming Chang , Joel Stanley Subject: [RFC PATCH 21/25] target/riscv/debug: Implementation specific Sdtrig configuration Date: Wed, 14 Jan 2026 14:46:54 +1000 Message-ID: <20260114044701.1173347-22-npiggin@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260114044701.1173347-1-npiggin@gmail.com> References: <20260114044701.1173347-1-npiggin@gmail.com> MIME-Version: 1.0 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=2607:f8b0:4864:20::629; envelope-from=npiggin@gmail.com; helo=mail-pl1-x629.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, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1768366197782158500 Content-Type: text/plain; charset="utf-8" Implement a Sdtrig CPU configuration class that provides details about the Sdtrig configuration. It is stored as a pointer in RISCVCPUClass to avoid issues with nested compound literals inside static initialisers with GCC 11. For now, the number of supported triggers is configurable. This requires some logic Signed-off-by: Nicholas Piggin --- target/riscv/cpu.c | 25 +++++++++++++++++++++++++ target/riscv/cpu.h | 4 ++++ target/riscv/debug.c | 5 ++++- target/riscv/debug.h | 4 ++++ target/riscv/machine.c | 11 ++++++++--- 5 files changed, 45 insertions(+), 4 deletions(-) diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index 057e221808..6f7a327fc7 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -23,6 +23,7 @@ #include "qemu/log.h" #include "cpu.h" #include "cpu_vendorid.h" +#include "debug.h" #include "internals.h" #include "qapi/error.h" #include "qapi/visitor.h" @@ -2816,6 +2817,11 @@ static void riscv_cpu_class_base_init(ObjectClass *c= , const void *data) mcc->def->vext_spec =3D def->vext_spec; } mcc->def->misa_ext |=3D def->misa_ext; +#if !defined(CONFIG_USER_ONLY) + if (def->debug_cfg) { + mcc->def->debug_cfg =3D def->debug_cfg; + } +#endif =20 riscv_cpu_cfg_merge(&mcc->def->cfg, &def->cfg); =20 @@ -2951,6 +2957,18 @@ void riscv_isa_write_fdt(RISCVCPU *cpu, void *fdt, c= har *nodename) DEFINE_RISCV_CPU(type_name, parent_type_name, \ .profile =3D &(profile_)) =20 +#if !defined(CONFIG_USER_ONLY) +/* Sdtrig implementation has 2 triggers that support match, match6, icount= */ +static const RISCVSdtrigConfig default_sdtrig_config =3D { + .nr_triggers =3D 2, +}; + +bool riscv_sdtrig_default_implementation(const RISCVSdtrigConfig *config) +{ + return config =3D=3D &default_sdtrig_config; +} +#endif + static const TypeInfo riscv_cpu_type_infos[] =3D { { .name =3D TYPE_RISCV_CPU, @@ -2968,6 +2986,9 @@ static const TypeInfo riscv_cpu_type_infos[] =3D { .cfg.mmu =3D true, .cfg.pmp =3D true, .priv_spec =3D PRIV_VERSION_LATEST, +#if !defined(CONFIG_USER_ONLY) + .debug_cfg =3D &default_sdtrig_config, +#endif ), =20 DEFINE_ABSTRACT_RISCV_CPU(TYPE_RISCV_VENDOR_CPU, TYPE_RISCV_CPU), @@ -2995,6 +3016,10 @@ static const TypeInfo riscv_cpu_type_infos[] =3D { #else .cfg.max_satp_mode =3D VM_1_10_SV57, #endif + +#if !defined(CONFIG_USER_ONLY) + .debug_cfg =3D &default_sdtrig_config, +#endif ), =20 DEFINE_RISCV_CPU(TYPE_RISCV_CPU_MAX, TYPE_RISCV_DYNAMIC_CPU, diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 44ed1665e2..c4f1cb0a9d 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -571,6 +571,9 @@ typedef struct RISCVCSR RISCVCSR; typedef struct RISCVCPUDef { RISCVMXL misa_mxl_max; /* max mxl for this cpu */ RISCVCPUProfile *profile; +#if !defined(CONFIG_USER_ONLY) + const RISCVSdtrigConfig *debug_cfg; +#endif uint32_t misa_ext; int priv_spec; int32_t vext_spec; @@ -666,6 +669,7 @@ void riscv_cpu_set_aia_ireg_rmw_fn(CPURISCVState *env, = uint32_t priv, void *rmw_fn_arg); =20 RISCVException smstateen_acc_ok(CPURISCVState *env, int index, uint64_t bi= t); +bool riscv_sdtrig_default_implementation(const RISCVSdtrigConfig *config); #endif /* !CONFIG_USER_ONLY */ =20 void riscv_cpu_set_mode(CPURISCVState *env, target_ulong newpriv, bool vir= t_en); diff --git a/target/riscv/debug.c b/target/riscv/debug.c index 22f7958a79..93615b43fb 100644 --- a/target/riscv/debug.c +++ b/target/riscv/debug.c @@ -173,7 +173,10 @@ target_ulong tselect_csr_read(CPURISCVState *env) =20 void tselect_csr_write(CPURISCVState *env, target_ulong val) { - if (val < RV_DEFAULT_TRIGGERS) { + CPUState *cs =3D env_cpu(env); + RISCVCPUClass *mcc =3D RISCV_CPU_GET_CLASS(cs); + + if (val < mcc->def->debug_cfg->nr_triggers) { env->sdtrig_state.trigger_cur =3D val; } } diff --git a/target/riscv/debug.h b/target/riscv/debug.h index 8a047c8073..3ba12f95cd 100644 --- a/target/riscv/debug.h +++ b/target/riscv/debug.h @@ -135,6 +135,10 @@ enum { #define MHSELECT_IGNORE 0 #define MHSELECT_MCONTEXT 4 =20 +typedef struct RISCVSdtrigConfig { + unsigned int nr_triggers; +} RISCVSdtrigConfig; + bool tdata_available(CPURISCVState *env, int tdata_index); =20 target_ulong tselect_csr_read(CPURISCVState *env); diff --git a/target/riscv/machine.c b/target/riscv/machine.c index 23a5f60d2a..9f65bdca9b 100644 --- a/target/riscv/machine.c +++ b/target/riscv/machine.c @@ -221,10 +221,12 @@ static const VMStateDescription vmstate_kvmtimer =3D { static bool debug_needed(void *opaque) { RISCVCPU *cpu =3D opaque; + RISCVCPUClass *mcc =3D RISCV_CPU_GET_CLASS(cpu); CPURISCVState *env =3D &cpu->env; =20 return cpu->cfg.debug && - env->sdtrig_state.mcontext =3D=3D 0; + (riscv_sdtrig_default_implementation(mcc->def->debug_cfg) && + env->sdtrig_state.mcontext =3D=3D 0); } =20 static int debug_pre_save(void *opaque) @@ -277,15 +279,18 @@ static const VMStateDescription vmstate_debug =3D { =20 /* * This is a newer version of the debug (sdtrig) state, required - * to migrate hcontext/mcontext. + * to migrate hcontext/mcontext, or machines with non-default + * sdtrig implementation. */ static bool sdtrig_needed(void *opaque) { RISCVCPU *cpu =3D opaque; + RISCVCPUClass *mcc =3D RISCV_CPU_GET_CLASS(cpu); CPURISCVState *env =3D &cpu->env; =20 return cpu->cfg.debug && - env->sdtrig_state.mcontext !=3D 0; + !(riscv_sdtrig_default_implementation(mcc->def->debug_cfg) && + env->sdtrig_state.mcontext =3D=3D 0); } =20 static int sdtrig_post_load(void *opaque, int version_id) --=20 2.51.0 From nobody Sun Feb 8 12:15:01 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1768366280; cv=none; d=zohomail.com; s=zohoarc; b=iohu3vyVmw03bZ0DiCPsySm/EYuf0SdWkTo1OQg0o/SnzL5SZGnJFY42ETTr/ByCU68gFBsj0G4/ietAN9CaDeWlutT8C1L7HJNe7v0osDAGhfYwZDpC5j8b23lyGESInHasEyGGLisNYUns2jwUJiG8+y6SckE3VHyUcPF9wwQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768366280; 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=3eKZ10Amt60QMkjRz6h5QFY2aN0VC8P3myZNHWyL8sw=; b=KxrzouEqN1kIMYoar3ny7iLCvkyp55hP7YzMzgpqOb/1K88zmuXEKqzdiP7v2qbtpkxwpT35GJEFfM+Jodmq/Aq5c0THIiOA2V5tvZaqox/Fmy4KWxjwaItQz/qe3y9VUyluwea/2vubCepgIGE1SrHkuswiT0dLhz9Sbi6ENJw= 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 1768366280003305.00547800346635; Tue, 13 Jan 2026 20:51:20 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vfspA-0007bW-AH; Tue, 13 Jan 2026 23:49:40 -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 1vfson-0007Al-IK for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:49:20 -0500 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vfsol-0004BW-HH for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:49:16 -0500 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-2a102494058so2248455ad.0 for ; Tue, 13 Jan 2026 20:49:15 -0800 (PST) Received: from lima-default (123.253.188.110.qld.leaptel.network. [123.253.188.110]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3c49037sm216111905ad.36.2026.01.13.20.49.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Jan 2026 20:49:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768366154; x=1768970954; 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=3eKZ10Amt60QMkjRz6h5QFY2aN0VC8P3myZNHWyL8sw=; b=mG09vu9B7hnwc+pjHqFNwwnOgtzkgJQJva8OkxKmLHQbjDDrxFOpTENvRowUB3bAj8 I91S37qlbayiPxy5HG2dPFSIetZjSu9HV841hDWE3VKq/j7vSzuCpsD1L1mAVm+MAadi auAkn+a8Mvw6aeQ9yFIt0l8O8gWhN0OKMBHg2FdhI+RaacS0Z6zuZ8u0CZFgiPj91DLK mrzAENnFWPebQuNblT728h/fcV5+wnwghAjah3udrAV6cG21Zkwu0oDzlvdwVJwsDDuc S7D03ip4XQDaDVDk3auRAMDDIHhlCB2d6fkUkJQLFQ/Du1SALnqUH8x1LOg7NfO/mJBE Ia1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768366154; x=1768970954; 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=3eKZ10Amt60QMkjRz6h5QFY2aN0VC8P3myZNHWyL8sw=; b=KwT6bTRMmdM0SnR/68EbNuRIYJ0ycvefUxscktjS2XGTpswDCnG+lCakttnPiiErBO l8TGLkBbn588L+trY+tDYYjo/qU2uLAqaSVfA7qNgBOw6xSZHplG3jTQL0gWTAKTKu0m mqlDsC5KNsJsfOAipOL8bHgxOlNrJMTDJzGj7lIFLQ/1mR8VGa1pE++U5Q5YgqBqSP5G s/rsIzlppHZHqS2Syh/9HsH85GPxhHcIUkYt8K5PnN9Qppx29gzYo8ghnKThiKZ+/xp0 Y9yMthjaL5caewV6guBPwWw7K5QDXNjH94K53TSUEb1qV0lMTdUL0g1ovZQ9C0iWhmc6 PYZQ== X-Forwarded-Encrypted: i=1; AJvYcCXqTC9B1US+rFp9xuBZ6WfwPF2c8LkyeaqGEALO964zm9CBmZnXW6BSMzyswB2AXiuX1V52Dd270MMH@nongnu.org X-Gm-Message-State: AOJu0YxqXcjb0iVDzSSCbyPIdGcu+9lxxRPToKNp7dl8Ka0ICjf4jaog VL5+k4CLBcLuk1NNVEak593byaVip4iIu8xnPSDmaf4JefgAw9TUDntY X-Gm-Gg: AY/fxX5+HaSchUXnThAwHN+oeOUpC3yGXKQZ9ocd3zhk4rUGUfpFEA67J4QHfeZAnJU 756VLbtx/eG9ld7w3qdxwyGz0d/abs66i2sEHSrcmi5Ba752rBYdPHPizoje7VpoG3sgfOkWvnn QoW//+aEZXoytVypIyylR/HulGz6WybRChpmwJ25MC85pyszKidSvq4HQbNeupr1SqwwpYxhXH7 Kdvu1HaqXkR7dxDkodGYG1YOogRTALleqczkLu4sLHicVbxiiTZfzcHkaQ6YABR5qohMeSabeiE 0WEM99b8665PD5/WHrKDCEqh9NeOJkLluKl+C1ON3Dpseb8yUfozIPQ0SCahXUwJXWrHOCrrazX o8o6AFBNPYRa/azPxVuGgPabs/gbCtnfl00Ee1PhMUYBVm3UDl5QQiJQWCw6PezAwFPHnQm0pve xMprlN7RYAwpFcdNWFLoXIQf/bR0ltajrPmy+zeq5N7N5aifDp46UVJE1f1oU= X-Received: by 2002:a17:903:41c3:b0:2a0:f0bf:197a with SMTP id d9443c01a7336-2a599dac241mr14070195ad.13.1768366154198; Tue, 13 Jan 2026 20:49:14 -0800 (PST) From: Nicholas Piggin To: qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: Nicholas Piggin , Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , bin.meng@windriver.com, vivahavey@gmail.com, Alvin Chang , Yu-Ming Chang , Joel Stanley Subject: [RFC PATCH 22/25] target/riscv/debug: Support heterogeneous trigger types Date: Wed, 14 Jan 2026 14:46:55 +1000 Message-ID: <20260114044701.1173347-23-npiggin@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260114044701.1173347-1-npiggin@gmail.com> References: <20260114044701.1173347-1-npiggin@gmail.com> MIME-Version: 1.0 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=2607:f8b0:4864:20::62e; envelope-from=npiggin@gmail.com; helo=mail-pl1-x62e.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, FREEMAIL_FROM=0.001, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1768366282287158500 Content-Type: text/plain; charset="utf-8" Not all Sdtrig implementations have heterogeneous triggers. Add support to the CPU class Sdtrig config to specify the trigger types that each trigger supports. Signed-off-by: Nicholas Piggin --- target/riscv/cpu.c | 8 ++++++++ target/riscv/debug.c | 17 +++++++++++++---- target/riscv/debug.h | 5 +++++ 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index 6f7a327fc7..5708da5054 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -2961,6 +2961,14 @@ void riscv_isa_write_fdt(RISCVCPU *cpu, void *fdt, c= har *nodename) /* Sdtrig implementation has 2 triggers that support match, match6, icount= */ static const RISCVSdtrigConfig default_sdtrig_config =3D { .nr_triggers =3D 2, + .triggers =3D { + [0 ... 1] =3D { + .type_mask =3D (1 << TRIGGER_TYPE_AD_MATCH) | + (1 << TRIGGER_TYPE_AD_MATCH6) | + (1 << TRIGGER_TYPE_INST_CNT) | + (1 << TRIGGER_TYPE_UNAVAIL), + }, + }, }; =20 bool riscv_sdtrig_default_implementation(const RISCVSdtrigConfig *config) diff --git a/target/riscv/debug.c b/target/riscv/debug.c index 93615b43fb..e8d343bf42 100644 --- a/target/riscv/debug.c +++ b/target/riscv/debug.c @@ -845,11 +845,19 @@ void tdata_csr_write(CPURISCVState *env, int tdata_in= dex, target_ulong val) } =20 if (tdata_index =3D=3D TDATA1) { + CPUState *cs =3D env_cpu(env); + RISCVCPUClass *mcc =3D RISCV_CPU_GET_CLASS(cs); + if (val =3D=3D 0) { /* special case, writing 0 results in disabled trigger */ val =3D build_tdata1(env, TRIGGER_TYPE_UNAVAIL, 0, 0); } trigger_type =3D extract_trigger_type(env, val); + if (!(mcc->def->debug_cfg->triggers[index].type_mask & + (1 << trigger_type))) { + val =3D build_tdata1(env, TRIGGER_TYPE_UNAVAIL, 0, 0); + trigger_type =3D extract_trigger_type(env, val); + } } =20 switch (trigger_type) { @@ -887,11 +895,12 @@ void tdata_csr_write(CPURISCVState *env, int tdata_in= dex, target_ulong val) =20 target_ulong tinfo_csr_read(CPURISCVState *env) { - /* assume all triggers support the same types of triggers */ + CPUState *cs =3D env_cpu(env); + RISCVCPUClass *mcc =3D RISCV_CPU_GET_CLASS(cs); + target_ulong index =3D env->sdtrig_state.trigger_cur; + /* XXX: should we set 1 (version 1.0) in the version field? */ - return BIT(TRIGGER_TYPE_AD_MATCH) | - BIT(TRIGGER_TYPE_INST_CNT) | - BIT(TRIGGER_TYPE_AD_MATCH6); + return mcc->def->debug_cfg->triggers[index].type_mask; } =20 void riscv_cpu_debug_excp_handler(CPUState *cs) diff --git a/target/riscv/debug.h b/target/riscv/debug.h index 3ba12f95cd..f9e840d615 100644 --- a/target/riscv/debug.h +++ b/target/riscv/debug.h @@ -135,8 +135,13 @@ enum { #define MHSELECT_IGNORE 0 #define MHSELECT_MCONTEXT 4 =20 +struct trigger_properties { + uint16_t type_mask; /* Trigger types supported (0 =3D no trigger here)= */ +}; + typedef struct RISCVSdtrigConfig { unsigned int nr_triggers; + struct trigger_properties triggers[RV_MAX_SDTRIG_TRIGGERS]; } RISCVSdtrigConfig; =20 bool tdata_available(CPURISCVState *env, int tdata_index); --=20 2.51.0 From nobody Sun Feb 8 12:15:01 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1768366366; cv=none; d=zohomail.com; s=zohoarc; b=ISBgAD+WB4asqnYllGCrLw6Lt3czgVA7JpIQfLMoCs4Bngwm6tN1jrIopIk5vBzIS5r5gDO9D6kzlQsTPCka1HfU++4Ovfp/swnRsjuiBH45H1gqtl+41Ydh4bUECVlrviEQw2kSKjIX1f7IoD/BRG/mabnSvpnakt7VaVL7gh8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768366366; 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=rNzsJq6kudxVf3nVXDeExz5WeTdkRECgPvPbcRQeMNU=; b=FFwv07K0yCrE9GxXXYuHZBaigUCL9uqG+hUje27+x9knI0PLA81ePI1ud0G3+HtWP7fJbjbA7kIC3Ji7QMwDtdX1+csQtf9GlDwkARJOhw8pIYRgFMEr3TbopAO6cXJ40buTxYAHXBokj3cOBOa+6IZv1rrYxG8+wFYb9ZNUv+8= 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 1768366366698187.49902280167203; Tue, 13 Jan 2026 20:52:46 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vfspB-0007j9-7K; Tue, 13 Jan 2026 23:49:41 -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 1vfsos-0007Co-61 for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:49:27 -0500 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vfsoq-0004Bx-KX for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:49:21 -0500 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-2a0f3f74587so61242375ad.2 for ; Tue, 13 Jan 2026 20:49:20 -0800 (PST) Received: from lima-default (123.253.188.110.qld.leaptel.network. [123.253.188.110]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3c49037sm216111905ad.36.2026.01.13.20.49.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Jan 2026 20:49:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768366159; x=1768970959; 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=rNzsJq6kudxVf3nVXDeExz5WeTdkRECgPvPbcRQeMNU=; b=BbYH36/2crQkwit/3DXSz1vilxz9aQqtMMkqliAhfFk7FmheG1VYLxbFsqCZeD/NqH UIV4kvxX1f7v48OV4Yb9L4s/F42WD3C/TI9MLu76QZNm0tos9TIOpqZiUJC9TOX+IkFR Os9tYpGmjOZ4dWn3qMH8oo+2T3fKeLksDp1sfPbRBnFnHNss+c95q1188yIEM9SL4OCJ XDr2ZHJQWfDAlcXKtrjjZtYRk4x4qrJSGX9dCxQ+Yr7Mfu+v/JnxYahDCQ8F0pf0GON/ 3RFkdnPvb31atKRBaJBPSS10d3kh8tFGGCNrAQN98hRAEJJiPfqK6+i/Na5bqumVtJAW Bs6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768366159; x=1768970959; 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=rNzsJq6kudxVf3nVXDeExz5WeTdkRECgPvPbcRQeMNU=; b=LtlCEzGT1OhHmGnVGn2h3PVofulXVJnBNQKd21Xn1Ezz2p0sJu+y35U16Rei7UzaEl oOq96gNMG5DSjFHJCbtABK8KdUqZAdlFvoDvzJ/RRf3VTVZuO4aWmXHRYrUNzCA9fnqJ seaOopKf3e6KZtTO/clSsX834Pz4/t4o3NYr8dAo/CHSjM67a3ej8F9fsDbdMA/uoJs4 A9Lhc9Cp2qcuNFc5ZC4k7AQg9xxlf1RaZta+lXJ71iqHuGRsvEjG7LHRE0ulbb8NqNiR 7jeAvMNfLiZ56H2IxRbFZKMIus+DjRmERiVovhHq0NkiPdrxkG95DFUULSlht97n1QWr AcgQ== X-Forwarded-Encrypted: i=1; AJvYcCVfhVs3ohfVOd+tfeRSB2L2VMOjwnGrIIbfw0EzWR94HnbhF1I+DyrSVzf2sBXBxjasI5aIlWiRgmo6@nongnu.org X-Gm-Message-State: AOJu0YyRJKntD9/yP3aXmipPjToIZ78eBYRU6oGK7a+6cZMVMAhHuOP9 Dsfp9I1eNZZbn4CRTtjGfDLNG8y8qnDdKdjpy+OGluoK8lRnTWYL5naZ0bUY1A== X-Gm-Gg: AY/fxX5WiZX/RCd+EzjVYPmRblq0MVNCuuC9yvx7KPoU0ZDwJ0J9iD6G8E4DDRRMiMj riVzwlD6pJF0Y6GwPDImlQJ8n7RxgDHokE7jsHqwBrHKrZnPT1Y1piBEFZij8hCKPuJlOeGgJ/a MSbLUPvzgAD0OqoF/x15FpASuHARe9J9U0t7UVaPffdi9WGZPVSWtfv6/KrqyMJEdn280/Nzh2R FTWy3raeYgcaKdjB7MFm67oVMohtFrGnrJusU2NU/ovSN9gnGtBuk5sS1xHcGVNPpV/lyje6ZXr t0NPLEy0e2GmL0PMsDcIdZze3LhK6Yj0HpnhLTQloBIRKMfdXgtXsglK9I4a9QRT230EjlQHxb4 r8DH+ETc+fV9cmTeiS86WPHxqn6lZygn29pwMIT27H5YbbJ2KuUYYb3RKSEz01xSxr6CWxQ7dyY n5onKtAOZPUtExuJc9+xVGmsLfQCnMFPEqQjjyGKo9TeO8SRmbiXQQ7a+E5No= X-Received: by 2002:a17:902:ce91:b0:29f:e787:2b9b with SMTP id d9443c01a7336-2a599e47481mr13685485ad.41.1768366159235; Tue, 13 Jan 2026 20:49:19 -0800 (PST) From: Nicholas Piggin To: qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: Nicholas Piggin , Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , bin.meng@windriver.com, vivahavey@gmail.com, Alvin Chang , Yu-Ming Chang , Joel Stanley Subject: [RFC PATCH 23/25] target/riscv/debug: Support heterogeneous mcontrol access types Date: Wed, 14 Jan 2026 14:46:56 +1000 Message-ID: <20260114044701.1173347-24-npiggin@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260114044701.1173347-1-npiggin@gmail.com> References: <20260114044701.1173347-1-npiggin@gmail.com> MIME-Version: 1.0 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=2607:f8b0:4864:20::634; envelope-from=npiggin@gmail.com; helo=mail-pl1-x634.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, FREEMAIL_FROM=0.001, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1768366367624158500 Content-Type: text/plain; charset="utf-8" Similarly to the last patch, mcontrol/mcontrol6 trigger types may not implement the same read/write/execute match capability. Add configuration to describe what access type matches are supported. Signed-off-by: Nicholas Piggin --- target/riscv/cpu.c | 1 + target/riscv/debug.c | 26 ++++++++++++++++++++------ target/riscv/debug.h | 1 + 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index 5708da5054..d349457c87 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -2967,6 +2967,7 @@ static const RISCVSdtrigConfig default_sdtrig_config = =3D { (1 << TRIGGER_TYPE_AD_MATCH6) | (1 << TRIGGER_TYPE_INST_CNT) | (1 << TRIGGER_TYPE_UNAVAIL), + .mcontrol_rwx_mask =3D 0x7, /* WP/BP */ }, }, }; diff --git a/target/riscv/debug.c b/target/riscv/debug.c index e8d343bf42..d7c171736f 100644 --- a/target/riscv/debug.c +++ b/target/riscv/debug.c @@ -449,7 +449,11 @@ static inline bool type2_breakpoint_enabled(target_ulo= ng ctrl) static target_ulong type2_mcontrol_validate(CPURISCVState *env, target_ulong ctrl) { + CPUState *cs =3D env_cpu(env); + RISCVCPUClass *mcc =3D RISCV_CPU_GET_CLASS(cs); + target_ulong index =3D env->sdtrig_state.trigger_cur; target_ulong val; + target_ulong rwx_mask; uint32_t size; =20 /* validate the generic part first */ @@ -475,9 +479,12 @@ static target_ulong type2_mcontrol_validate(CPURISCVSt= ate *env, } } =20 - /* keep the mode and attribute bits */ - val |=3D (ctrl & (TYPE2_U | TYPE2_S | TYPE2_M | - TYPE2_LOAD | TYPE2_STORE | TYPE2_EXEC)); + /* only set supported access (load/store/exec) bits */ + rwx_mask =3D mcc->def->debug_cfg->triggers[index].mcontrol_rwx_mask; + val |=3D ctrl & rwx_mask; + + /* keep the mode bits */ + val |=3D ctrl & (TYPE2_U | TYPE2_S | TYPE2_M); =20 return val; } @@ -573,7 +580,11 @@ static inline bool type6_breakpoint_enabled(target_ulo= ng ctrl) static target_ulong type6_mcontrol6_validate(CPURISCVState *env, target_ulong ctrl) { + CPUState *cs =3D env_cpu(env); + RISCVCPUClass *mcc =3D RISCV_CPU_GET_CLASS(cs); + target_ulong index =3D env->sdtrig_state.trigger_cur; target_ulong val; + target_ulong rwx_mask; uint32_t size; =20 /* validate the generic part first */ @@ -596,9 +607,12 @@ static target_ulong type6_mcontrol6_validate(CPURISCVS= tate *env, val |=3D (ctrl & TYPE6_SIZE); } =20 - /* keep the mode and attribute bits */ - val |=3D (ctrl & (TYPE6_VU | TYPE6_VS | TYPE6_U | TYPE6_S | TYPE6_M | - TYPE6_LOAD | TYPE6_STORE | TYPE6_EXEC)); + /* only set supported access (load/store/exec) bits */ + rwx_mask =3D mcc->def->debug_cfg->triggers[index].mcontrol_rwx_mask; + val |=3D ctrl & rwx_mask; + + /* keep the mode bits */ + val |=3D (ctrl & (TYPE6_VU | TYPE6_VS | TYPE6_U | TYPE6_S | TYPE6_M)); =20 return val; } diff --git a/target/riscv/debug.h b/target/riscv/debug.h index f9e840d615..c9f7225954 100644 --- a/target/riscv/debug.h +++ b/target/riscv/debug.h @@ -137,6 +137,7 @@ enum { =20 struct trigger_properties { uint16_t type_mask; /* Trigger types supported (0 =3D no trigger here)= */ + uint8_t mcontrol_rwx_mask; /* mc/mc6 rwx access match supported */ }; =20 typedef struct RISCVSdtrigConfig { --=20 2.51.0 From nobody Sun Feb 8 12:15:01 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1768366339; cv=none; d=zohomail.com; s=zohoarc; b=VTx3WbxCnsaG69qBDStWHaGmIbKzzmYnwgWr+QvPRKmCn9rxsnlb/66yn+N4ozN2F3QRyED6PVEo6So757aF0XekXMyvsnVA8mV5c0f+3INLBZ5N5FILBfAUBdHcTzEl7fd8hRRt8dPWxjyWqjqhdaOtJ3ajvkDXgwF7JsZFrAY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768366339; 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=e4RKJkMMFPN4YQUEajOwFLoOkui52htamyphMm0OHOM=; b=UsFX1NNlWayyC5Xv6o05Tn1tlNywc668l/MAJLBVQ9qXGjIcLSHib1BZUvYHZkymKV3UJsWJOnb6GCU9BLnYlhis7aucMQwkfy6GGpreuXagpZxybHIcjB14oaH5rD6d4EV8IH5Qyu4RCxrnSHLRcgdthp1cMLx+jZESXv94lAw= 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 1768366339046658.7482984964413; Tue, 13 Jan 2026 20:52:19 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vfspB-0007je-Em; Tue, 13 Jan 2026 23:49:41 -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 1vfsox-0007E2-S3 for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:49:28 -0500 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vfsow-0004Ci-BO for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:49:27 -0500 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-2a102494058so2248745ad.0 for ; Tue, 13 Jan 2026 20:49:25 -0800 (PST) Received: from lima-default (123.253.188.110.qld.leaptel.network. [123.253.188.110]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3c49037sm216111905ad.36.2026.01.13.20.49.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Jan 2026 20:49:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768366164; x=1768970964; 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=e4RKJkMMFPN4YQUEajOwFLoOkui52htamyphMm0OHOM=; b=HK9h24Y2e38E6A/bwYlPfrKHdsgujDY/k5p6/oInBEtwdnc6AYyPFvGH37qy0w1Jt9 bYRjqWVn2HajkE+Tce/fb8IrvFeFRNo0uNr9/oQdk4QywilJSrHYrGI/uKdVzRLW297Q WjNuieWJl+JWvZUYIr/BFu+BzWfCus1C6bPnBihBOpR0q30x1Engsf7LQHz+FPtMkLOu 31sz/sa0ndjLEzcyyRP9RvuiC0flLidTCsLFydlD28XR6EQu8u6CMUvInDbitp6xhgdL P3Gb81owPk+UNbVWW6CwfbvsoT+61cDz6Hjlzak+ZZgnhkjl1tp4ofTHAJPR+atIllR9 6L5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768366164; x=1768970964; 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=e4RKJkMMFPN4YQUEajOwFLoOkui52htamyphMm0OHOM=; b=FGNZxlYb8WgiPZIAaRXVoVx9GjSaW0oyzCkW/rJbDM15+coQedH515Ksutxy4GB1HE WL/+XermJsgaqqJ9YewaLhDFjOFD1sbK1yoJNkqCvYdIkrDjBHnmpExHJqCVpovrU/Hk 1NNGymCkp8E3BfEBkQdfCUwPksoGNnLqrxpj0x0Qn2QP9QkmDdoE/Hhp9CD2U1rIpbaH AEni7Z1yLUBXeC+WO2t2VHdyByBtUs4pL6tH5GLJjxW2OLHi0VZTiMlxuhxXLD3MVuC/ rYyu4v+jomqGcMmSAQ0AlKMMNjzHdsKpiE35e54lp8YLDjoUwl5j+yVkIl+rx5RrTQKp XSQw== X-Forwarded-Encrypted: i=1; AJvYcCWbOVkah4JCvKMlQ6wFoMLLqPuEtOtw8VTlcl7fzBlvFK/bQxWegvnM5XRU/0BuCx6tM7NQNu5IAi0+@nongnu.org X-Gm-Message-State: AOJu0YwvMcrNTw/CkPBJQaRrulj5wPuuZbOmveGRJ0FfwMCDA5UDIAkB FlRM75NbPcYV3bTOA9WwRQgOpHGVgNGge53RUrUCaIGArck8XDkkggYd X-Gm-Gg: AY/fxX5qwF0o4/6jbDVQeaI7r7A3LXTNndeQG5CyCQHwbhR7C7Dz1Efrac/7xWk/hEf scc4aTbzSMsnJT1fGwohT95szCUtYUqDnNqpygiB1soONMI2yiEWFz0H06Jm8lp5pPxcVtmusFb 9UzOHY20QIV4BD21aXRmy2cR5WX9TH6tlGEboPXvqtpyk70fKGOhGK1qJqbcWp8h7NFDl1K5Ntt vEDu5f+BTD6qp0odIho7hphj4Qv8lJI9/9ZEh4BbkgBW6xY+mCSgZMaP9FtTWTPtWCj5anlIa9e gIcXyNMlmPHPV/epT/fKjyONcwghzGPKOL+Y9bVkBBMWWveuKOB96bhZZs+CB9busONqe4DJwBs lli1B6cvOD7+oIlghjr8tH1ACtlCdYvlOemogfXatj2EBSV1c6w54SDD9ueKeqmATkjSvxni1OY vN+XBNRQcTVrVLyuM0qfCdHZg1mOQD877qQlcNs374GePVDsIH2rZMy4Fj0SWhcAfyd4Wxsg== X-Received: by 2002:a17:903:46c4:b0:2a0:b432:4a6 with SMTP id d9443c01a7336-2a599df90edmr17867225ad.15.1768366164274; Tue, 13 Jan 2026 20:49:24 -0800 (PST) From: Nicholas Piggin To: qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: Nicholas Piggin , Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , bin.meng@windriver.com, vivahavey@gmail.com, Alvin Chang , Yu-Ming Chang , Joel Stanley Subject: [RFC PATCH 24/25] target/riscv/debug: Emulate TT Ascalon Sdtrig Date: Wed, 14 Jan 2026 14:46:57 +1000 Message-ID: <20260114044701.1173347-25-npiggin@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260114044701.1173347-1-npiggin@gmail.com> References: <20260114044701.1173347-1-npiggin@gmail.com> MIME-Version: 1.0 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=2607:f8b0:4864:20::632; envelope-from=npiggin@gmail.com; helo=mail-pl1-x632.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, FREEMAIL_FROM=0.001, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1768366339498158500 Content-Type: text/plain; charset="utf-8" This adds initial Tenstorrent Ascalon Sdtrig implementation details. Ascalon has 9 triggers: 4 mcontrol6 triggers that can match exec access, 4 mcontrol6 triggers that can match load / store access, and 1 icount trigger. Signed-off-by: Nicholas Piggin --- target/riscv/cpu.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index d349457c87..bdc33bb746 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -2972,6 +2972,28 @@ static const RISCVSdtrigConfig default_sdtrig_config= =3D { }, }; =20 +#if defined(TARGET_RISCV64) +static const RISCVSdtrigConfig tt_ascalon_sdtrig_config =3D { + .nr_triggers =3D 9, + .triggers =3D { + [0 ... 3] =3D { + .type_mask =3D (1 << TRIGGER_TYPE_AD_MATCH6) | + (1 << TRIGGER_TYPE_UNAVAIL), + .mcontrol_rwx_mask =3D 0x4, /* BP */ + }, + [4 ... 7] =3D { + .type_mask =3D (1 << TRIGGER_TYPE_AD_MATCH6) | + (1 << TRIGGER_TYPE_UNAVAIL), + .mcontrol_rwx_mask =3D 0x3, /* WP */ + }, + [8] =3D { + .type_mask =3D (1 << TRIGGER_TYPE_INST_CNT) | + (1 << TRIGGER_TYPE_UNAVAIL), + }, + }, +}; +#endif + bool riscv_sdtrig_default_implementation(const RISCVSdtrigConfig *config) { return config =3D=3D &default_sdtrig_config; @@ -3166,6 +3188,9 @@ static const TypeInfo riscv_cpu_type_infos[] =3D { .misa_ext =3D RVG | RVC | RVS | RVU | RVH | RVV, .priv_spec =3D PRIV_VERSION_1_13_0, .vext_spec =3D VEXT_VERSION_1_00_0, +#if !defined(CONFIG_USER_ONLY) + .debug_cfg =3D &tt_ascalon_sdtrig_config, +#endif =20 /* ISA extensions */ .cfg.mmu =3D true, --=20 2.51.0 From nobody Sun Feb 8 12:15:01 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1768366386; cv=none; d=zohomail.com; s=zohoarc; b=Stl3shkjM+buboXhONECHB0RV6/fQTgSsRctKduKXIq790FdVO6D6ZWS8hhY/JrB9ykr/xktGQvvQqa7wWsDO1YgwbTnLJ3DCdYeBuj6s/qKOCyrBM5nkNAnaG6dUp4CjwdW3A54IkYzBFdm/eZc5DiqTLKt2nUgFWiTtPAYHy0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768366386; 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=+kY0TVgsVm0GPorTwNSyfEoAVAqvdoi35N7aeXTAA74=; b=TviGckcKBR62OCVeamyQc+44OWwCcVLyxnoPzRgd3AX7p/vI4qz0bMQv6tfbNV86uxEelnZ2J0up2VUeqFCKa1tWzezkMspnhPgSc3EMcWtYdABBvNqp4ERah5z54QUo2wnRdvSA2d50okB/vCUAeITNCKMaFffhnJLSsucNQxI= 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 176836638678933.94727179961444; Tue, 13 Jan 2026 20:53:06 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vfspD-00081y-8Z; Tue, 13 Jan 2026 23:49:43 -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 1vfsp2-0007Im-9q for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:49:35 -0500 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vfsp0-0004DR-Ls for qemu-devel@nongnu.org; Tue, 13 Jan 2026 23:49:31 -0500 Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-2a3e76d0f64so2558085ad.1 for ; Tue, 13 Jan 2026 20:49:30 -0800 (PST) Received: from lima-default (123.253.188.110.qld.leaptel.network. [123.253.188.110]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3c49037sm216111905ad.36.2026.01.13.20.49.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Jan 2026 20:49:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768366169; x=1768970969; 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=+kY0TVgsVm0GPorTwNSyfEoAVAqvdoi35N7aeXTAA74=; b=Rb3jc8qAkeUHUYvXd0YidPKFSUVZUG+gXqsc5zdMhl5WjcWtWYVyc6CQ3GSKMYYXY9 KAneqoUgywBlbkkK9oFGLR9PrcrxDhGdS9fKeR+DgnARfIJR8mtWCf9rUIymvHIpRu82 waV2RMJ2+TDl8Hko0l0JiwhQhznIAnNFq967i3KcExgVLOzOvPifno77NQOgzLo+cVsU l9CuQ6kIRFtyk9LAxnKNQ66MLXK7bgL924rH90/Lu8upOwIuj/3WAu43yL8V60s+8pz0 CuseG6qP+OKGNa/DJXiKmEBq5rYBodWU2ZhVk3B+0AWwKPojJhEbhTAIY8D4utHfkcH8 gV+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768366169; x=1768970969; 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=+kY0TVgsVm0GPorTwNSyfEoAVAqvdoi35N7aeXTAA74=; b=JssHwJe+QomPVSnhD3hlV2cL+whomHDFlDHsPtEAPAYt1nDmVBL9bmmCc0FDcx/Oah 5IMIEfcoVIfSh6HbabqxVwHPFNCnQs+cVfLXV9DxC8b+oWjvUND+Tj/G1b+gsaoQhh1k QQZTwAXxWkx7woYa09d0wKiHbc7p2CG1WGMBKOc2DMdIO3GnWIhy5BBi8ZF9SbOxi+4d 18xqicsqeQt+LW2V9wBoajCG1kcxWyBLVzBL4Gjf2vv44MwzlmuxbEyloFmF3A7y/uv9 hkTvKJH6BFWKQWZCuxWmvUosf1QtdJKU3UX2RXB21CmtaJaaRV/Xmy8Kponja5zdzjPK bYtg== X-Forwarded-Encrypted: i=1; AJvYcCW4mzJ8T75myqywTQPjAGr/hvbhf/qccny6QCVf3k2LF+o4ZlnwTRVBI9ilEVbW0po84LWxvIoPBlvc@nongnu.org X-Gm-Message-State: AOJu0YyjIucyc+vCn1M7f6eo9pLLxN27PWyPRVDZPQ28pSa9VUzWQo2R OTowhyxJ2JvdZQRSD5culXDjwuMbIva5rBXxsPqTwKrSx2/+vPT6IsCK X-Gm-Gg: AY/fxX7AivFUnSJbiKcJTGz7AyntiCFcgZ9udg5/8ubB5x1O2ygTSciTSwpqGrpjWNL Q7yaZ7Wc6l4xpjd3lYaHfIfTmiwfFmOZAOJwB+epLCyVnHYUkubNZaxxIBfEobgzQhLtVstK9su lOSpHLx5HJ8tW3vihdGTnkkKKUuUjwTUfIKs7mYWX7BIylj1mnCBwLJqXitRgvWQebca3Io5wIW McoRlhHrj0G83AwJ7MkPKasMFggwulFzU0vdY4rRMXGwQqL79E3RHis6XGszqBLlCcbCjtsnfAM ULhhnSFxqSUoXoNC0RTOgUDbOpwmXz66/sqd2F4o+ipIh4N6MmBn2QZParyhfndvLkVFy7dLTyQ LoQ1hH+FpJeswrmsC01oScfOD1zux1HnTLBOODNnN2Eknz9HAgYPWt2yG32/6x4gbL/YM7sr5Dr Q4cykxTcZZnHhPZgYU4r/2X3DR+MMA/iLc1bCpfJ8d0C6bddDiSQe9hjQAG8bzrTU6CkD5mA== X-Received: by 2002:a17:903:17c5:b0:299:bda7:ae45 with SMTP id d9443c01a7336-2a58b53655emr44501875ad.25.1768366169350; Tue, 13 Jan 2026 20:49:29 -0800 (PST) From: Nicholas Piggin To: qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: Nicholas Piggin , Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , bin.meng@windriver.com, vivahavey@gmail.com, Alvin Chang , Yu-Ming Chang , Joel Stanley Subject: [RFC PATCH 25/25] target/riscv/debug: Fix minor comment typos Date: Wed, 14 Jan 2026 14:46:58 +1000 Message-ID: <20260114044701.1173347-26-npiggin@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260114044701.1173347-1-npiggin@gmail.com> References: <20260114044701.1173347-1-npiggin@gmail.com> MIME-Version: 1.0 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=2607:f8b0:4864:20::62a; envelope-from=npiggin@gmail.com; helo=mail-pl1-x62a.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, FREEMAIL_FROM=0.001, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1768366388432158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Nicholas Piggin --- target/riscv/debug.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/riscv/debug.c b/target/riscv/debug.c index d7c171736f..32aa46262a 100644 --- a/target/riscv/debug.c +++ b/target/riscv/debug.c @@ -120,7 +120,7 @@ static trigger_action_t get_trigger_action(CPURISCVStat= e *env, break; case TRIGGER_TYPE_NO_EXIST: case TRIGGER_TYPE_UNAVAIL: - qemu_log_mask(LOG_GUEST_ERROR, "trigger type: %d does not exit\n", + qemu_log_mask(LOG_GUEST_ERROR, "trigger type: %d does not exist\n", trigger_type); break; default: @@ -895,7 +895,7 @@ void tdata_csr_write(CPURISCVState *env, int tdata_inde= x, target_ulong val) trigger_type); break; case TRIGGER_TYPE_NO_EXIST: - qemu_log_mask(LOG_GUEST_ERROR, "trigger type: %d does not exit\n", + qemu_log_mask(LOG_GUEST_ERROR, "trigger type: %d does not exist\n", trigger_type); break; default: --=20 2.51.0