From nobody Thu May 16 10:24:31 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1713296535; cv=none; d=zohomail.com; s=zohoarc; b=DC47ypkaLq3gRAoR/mvacAxoXMazIAUDoY0fhrAd6dWJzMYG1KYLOhG3fleN+xdlu/qVChFkGXEkn/nOBlqTgzN3d8OF3m4tEBXhVV6xSQWeekYcJhP+01j1n6Cuj2z7KT9HrDJlswm7Xt5eAJNJCakVhdvpticTtb1mVzdj0X4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1713296535; 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=ssIuZaHoHfxGkU2ooOzNE6RgtnB9PZD34dZd+Oj8vXc=; b=gluYHiCpjfJyWueqXNhn5IFRdy/8i3D2zYlSjYd6cxJ3Vq8YM+qUViAi9fjsQsfu78vRzEyyss8u29phzmYA3tLYMx4RI+rG0t6uTRnFETuL9JmAvfeMWh8MIP0TsGpiaEyn2ruBykOi6y6asnlis+3HlqY6JsmzO4+NH5/hS34= 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1713296535429537.1106832366611; Tue, 16 Apr 2024 12:42:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rwogd-0003IB-IK; Tue, 16 Apr 2024 15:41:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rwogb-0003HV-Gq for qemu-devel@nongnu.org; Tue, 16 Apr 2024 15:41:45 -0400 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rwogZ-00044u-35 for qemu-devel@nongnu.org; Tue, 16 Apr 2024 15:41:44 -0400 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-1e3c9300c65so41655945ad.0 for ; Tue, 16 Apr 2024 12:41:42 -0700 (PDT) Received: from grind.. ([2804:7f0:bdcd:fb00:6501:2693:db52:c621]) by smtp.gmail.com with ESMTPSA id h5-20020a170902704500b001e3c972c83bsm10160586plt.76.2024.04.16.12.41.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Apr 2024 12:41:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1713296501; x=1713901301; 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=ssIuZaHoHfxGkU2ooOzNE6RgtnB9PZD34dZd+Oj8vXc=; b=pKIpe4hQb+qM27AKuCvcj/dUM4X+N2y4W2IIXltgWxMO76PrdPBDmBH5swU2d5FmUz wz4q8uLf37S+dqIoYBnoiLXaH0TWRkELNSVrw1+2tNZ/b4OGDrGTOuNOpuYti6EXkPGz a9kIW084h9hY+joDf9epYx67XL3dUv3BK+TmzFqe0hxXrGSJL2a8QXerkrdUo3icsFP9 VDFsGx+M95WQKDVBj+bHGNjgbbui4VqWHLrCNoTjNCfDkDUpjwu7vY0M/KU/8A0R3w9Y xQ1rTadfSs2yQGU62ja/Z+rHjEJ6tCmm3a+4ZnP4oRE3q/SAa8EkP/9FkpCFxsKIezkj gCcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713296501; x=1713901301; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ssIuZaHoHfxGkU2ooOzNE6RgtnB9PZD34dZd+Oj8vXc=; b=wQJpqGQhe7SmrGaCa1k+dnq6nlLl7Q8n4zAYlwfgtIuV9I5C7sxkPdFSAfNKeMnVW0 gy7eFEwz6XhpXwjr1IuGEBjsY09GHoqb/i+OjIhm3d2rZj0KPY8V2o/7wmWzZdJX47wc kl+MyMEMVmS0nNWG9yB9n/dkKzGLqYMsuD1a3sm26QQLRdpVUXuJQiv1h+QuO3jcBtD2 mKBAEhjmIkARq4pSUUfuzY0GdKy6WJv1cG43Ra/b9WQtR0Zj8VZ3nlQKJpKSepA4usC4 XAzuCYFFeW4nb8510JqPz1erLZcIJ2St68BTq4ZkOH1ION5inXVe7u8EUCVZa8cPjOaE 3a6A== X-Gm-Message-State: AOJu0YzVCA0WtcYhiJuVvG9dkpMzmZ59q02aWntq4kcrwyg6d2y5pJ0j vwATNVrO4p9yiMW828tU1lTnIMs5STwFwSHriIcwIAe0TIoCxouDBPJo0nS4bup7FlFRtThNLGO Z X-Google-Smtp-Source: AGHT+IFjQlCuRTBdopuP4NNlMBHNMACwASl3i1Delc1p19MBWSguSgTMc85d7l/Iiu6pmxffVVDZKg== X-Received: by 2002:a17:902:f64a:b0:1e4:9ac6:1f3f with SMTP id m10-20020a170902f64a00b001e49ac61f3fmr13834007plg.5.1713296501065; Tue, 16 Apr 2024 12:41:41 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org, alistair.francis@wdc.com, bmeng@tinylab.org, liwei1518@gmail.com, zhiwei_liu@linux.alibaba.com, palmer@rivosinc.com, Daniel Henrique Barboza Subject: [PATCH for-9.1 v2 1/2] target/riscv/debug: set tval=pc in breakpoint exceptions Date: Tue, 16 Apr 2024 16:41:31 -0300 Message-ID: <20240416194132.1843699-2-dbarboza@ventanamicro.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240416194132.1843699-1-dbarboza@ventanamicro.com> References: <20240416194132.1843699-1-dbarboza@ventanamicro.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 client-ip=2607:f8b0:4864:20::631; envelope-from=dbarboza@ventanamicro.com; helo=mail-pl1-x631.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @ventanamicro.com) X-ZM-MESSAGEID: 1713296537279100001 Content-Type: text/plain; charset="utf-8" We're not setting (s/m)tval when triggering breakpoints of type 2 (mcontrol) and 6 (mcontrol6). According to the debug spec section 5.7.12, "Match Control Type 6": "The Privileged Spec says that breakpoint exceptions that occur on instruction fetches, loads, or stores update the tval CSR with either zero or the faulting virtual address. The faulting virtual address for an mcontrol6 trigger with action =3D 0 is the address being accessed and which caused that trigger to fire." A similar text is also found in the Debug spec section 5.7.11 w.r.t. mcontrol. Note that what we're doing ATM is not violating the spec, but it's simple enough to set mtval/stval and it makes life easier for any software that relies on this info. Given that we always use action =3D 0, save the faulting address for the mcontrol and mcontrol6 trigger breakpoints into env->badaddr, which is used as as scratch area for traps with address information. 'tval' is then set during riscv_cpu_do_interrupt(). Signed-off-by: Daniel Henrique Barboza --- target/riscv/cpu_helper.c | 1 + target/riscv/debug.c | 3 +++ 2 files changed, 4 insertions(+) diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index fc090d729a..f9c6d7053b 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -1717,6 +1717,7 @@ void riscv_cpu_do_interrupt(CPUState *cs) tval =3D env->bins; break; case RISCV_EXCP_BREAKPOINT: + tval =3D env->badaddr; if (cs->watchpoint_hit) { tval =3D cs->watchpoint_hit->hitaddr; cs->watchpoint_hit =3D NULL; diff --git a/target/riscv/debug.c b/target/riscv/debug.c index e30d99cc2f..b110370ea6 100644 --- a/target/riscv/debug.c +++ b/target/riscv/debug.c @@ -798,6 +798,7 @@ bool riscv_cpu_debug_check_breakpoint(CPUState *cs) if ((ctrl & TYPE2_EXEC) && (bp->pc =3D=3D pc)) { /* check U/S/M bit against current privilege level */ if ((ctrl >> 3) & BIT(env->priv)) { + env->badaddr =3D pc; return true; } } @@ -810,11 +811,13 @@ bool riscv_cpu_debug_check_breakpoint(CPUState *cs) if (env->virt_enabled) { /* check VU/VS bit against current privilege level= */ if ((ctrl >> 23) & BIT(env->priv)) { + env->badaddr =3D pc; return true; } } else { /* check U/S/M bit against current privilege level= */ if ((ctrl >> 3) & BIT(env->priv)) { + env->badaddr =3D pc; return true; } } --=20 2.44.0 From nobody Thu May 16 10:24:31 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1713296583; cv=none; d=zohomail.com; s=zohoarc; b=jf+HtiTvCKONmAqLjUWY1bXwVHzB221sPKXbTiRLUW3ID1Cf3qLPhzNczw6pviPgl/2SGu7YXIE4/heoBHn7YhQV5fHHrnsW2xxx5WXp4bQNEvJjuhXqSj5krfVPAooSs4BziNUzQi85Y2+kiR+BNEPJ8l8XvV5dsRo7y/Yo69w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1713296583; 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=nIXT4Ow0ePHNvQiW4c64R7S9d8m6CFTE0ZLlfQRIw4w=; b=A+aWnuVjk33LBj8hmXp1QYgJ2HATXeks4z+2/XH03r+siU1w/0xdYOAA6/r/BhXrLbvnxpwTCe1VF7l1O7XB2WqKMXuQ3Ix+cEPd01trxpR6fXTqz4Gdg8rzn87n5wpr2w66TsLrXacoaUeb5U7Y/FZHoSbtY5Wslb1OvbOMn0o= 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1713296583358265.9322025592503; Tue, 16 Apr 2024 12:43:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rwogf-0003J2-Fn; Tue, 16 Apr 2024 15:41:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rwoge-0003IJ-41 for qemu-devel@nongnu.org; Tue, 16 Apr 2024 15:41:48 -0400 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 1rwogb-00045I-P9 for qemu-devel@nongnu.org; Tue, 16 Apr 2024 15:41:47 -0400 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-1e3c3aa8938so30540625ad.1 for ; Tue, 16 Apr 2024 12:41:45 -0700 (PDT) Received: from grind.. ([2804:7f0:bdcd:fb00:6501:2693:db52:c621]) by smtp.gmail.com with ESMTPSA id h5-20020a170902704500b001e3c972c83bsm10160586plt.76.2024.04.16.12.41.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Apr 2024 12:41:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1713296504; x=1713901304; 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=nIXT4Ow0ePHNvQiW4c64R7S9d8m6CFTE0ZLlfQRIw4w=; b=LJdXHhydNUPcBG2bNgcTSMO6VhAkgYelybgq/ziVH+dYgRo9CFM9osjaUx1Ti+vGtm IXOE7Ac5w9O0fLz9HCOuWaM0e2XI7KBD2X17YY8hSvqZNvnmRnaWCEg4WZBAbZuFs+11 4M6hTGf0TKrWPKb0F0FQJrtGyfMFVUnJ7S8SzraocNYfCTlOrKZa+tR4akko1UHKQ633 ppKdSDITAQNP4C1zLnQhSLHAhoe1czw3s5qAsqhzVms8imjbTx/nO7+RrGTJna0OVACS dOUqq0tIi2lerxMIwl1qfhxL8dVvFsSUQrUXQsytMLr+dKj3hz6EgSIWVYuwJug5kfp/ A03w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713296504; x=1713901304; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=nIXT4Ow0ePHNvQiW4c64R7S9d8m6CFTE0ZLlfQRIw4w=; b=Wz7cOoRexefj/2G1wj9/3DQRJmWosrq4BE9teHCpLeU67A7WmxcA3/BUZknVvDp1QA wqvWpEqPJnW1GKctlFjBK1sXPEguo8lR+QftXjzqyJmrJa1Hau1CccV7+hWSqn5DPR8a vmQh3kejhYjC8Eu617KnU/68DCx4yqIke2LKtw4pV80E2T3CdPtRUkyuN4ptN9fIwyUo D7kGhaLZNHS/rfngqcUBEWdGDwhWwZO0GlJRNSvRbsN/skLKGat+bM9cl6hluajvkpS0 yWOk0U8kV5FaSrbEMVH5eLPid4wp4RmdigvngIupBB+FrXoDoI4j4FRPIUuOYNlBdIbm /ogg== X-Gm-Message-State: AOJu0YwjyayxMe03E+V0zNyIDhcHBnvXS0irBOAooaOUwXOwdY9NLjvd 4yWwvSbyEpjE2jMl2oU8dmC3gDwx9EMhzxKnq1FPnGpPBzmZoI5U9BmMVVKws2UCWvyerF71Sl2 N X-Google-Smtp-Source: AGHT+IG8lFONKE0bYSTjNnlkDB7gNgi017CmjRe3W4duWlr6iOdbUDUUvjfpZ2s8TRwDLnvAVmQAKQ== X-Received: by 2002:a17:903:26c3:b0:1e5:62:7aaa with SMTP id jg3-20020a17090326c300b001e500627aaamr10843183plb.20.1713296503815; Tue, 16 Apr 2024 12:41:43 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org, alistair.francis@wdc.com, bmeng@tinylab.org, liwei1518@gmail.com, zhiwei_liu@linux.alibaba.com, palmer@rivosinc.com, Daniel Henrique Barboza Subject: [PATCH for-9.1 v2 2/2] trans_privileged.c.inc: set (m|s)tval on ebreak breakpoint Date: Tue, 16 Apr 2024 16:41:32 -0300 Message-ID: <20240416194132.1843699-3-dbarboza@ventanamicro.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240416194132.1843699-1-dbarboza@ventanamicro.com> References: <20240416194132.1843699-1-dbarboza@ventanamicro.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 client-ip=2607:f8b0:4864:20::62e; envelope-from=dbarboza@ventanamicro.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, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @ventanamicro.com) X-ZM-MESSAGEID: 1713296585190100003 Content-Type: text/plain; charset="utf-8" Privileged spec section 4.1.9 mentions: "When a trap is taken into S-mode, stval is written with exception-specific information to assist software in handling the trap. (...) If stval is written with a nonzero value when a breakpoint, address-misaligned, access-fault, or page-fault exception occurs on an instruction fetch, load, or store, then stval will contain the faulting virtual address." A similar text is found for mtval in section 3.1.16. Setting mtval/stval in this scenario is optional, but some softwares read these regs when handling ebreaks. Write 'badaddr' in all ebreak breakpoints to write the appropriate 'tval' during riscv_do_cpu_interrrupt(). Signed-off-by: Daniel Henrique Barboza --- target/riscv/insn_trans/trans_privileged.c.inc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/target/riscv/insn_trans/trans_privileged.c.inc b/target/riscv/= insn_trans/trans_privileged.c.inc index 620ab54eb0..b89e3bd5b5 100644 --- a/target/riscv/insn_trans/trans_privileged.c.inc +++ b/target/riscv/insn_trans/trans_privileged.c.inc @@ -62,6 +62,10 @@ static bool trans_ebreak(DisasContext *ctx, arg_ebreak *= a) if (pre =3D=3D 0x01f01013 && ebreak =3D=3D 0x00100073 && post =3D=3D 0= x40705013) { generate_exception(ctx, RISCV_EXCP_SEMIHOST); } else { + TCGv temp =3D tcg_temp_new(); + tcg_gen_movi_tl(temp, ebreak_addr); + tcg_gen_st_tl(temp, tcg_env, offsetof(CPURISCVState, badaddr)); + generate_exception(ctx, RISCV_EXCP_BREAKPOINT); } return true; --=20 2.44.0