From patchwork Tue Jul 18 22:47:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kaiwen Xue X-Patchwork-Id: 1809554 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=rivosinc-com.20221208.gappssmtp.com header.i=@rivosinc-com.20221208.gappssmtp.com header.a=rsa-sha256 header.s=20221208 header.b=wRvIdWWN; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4R5J4x04GRz1yY9 for ; Wed, 19 Jul 2023 11:24:17 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qLvuR-0004Rc-D1; Tue, 18 Jul 2023 21:23:20 -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 1qLtUp-0003O2-FL for qemu-devel@nongnu.org; Tue, 18 Jul 2023 18:48:43 -0400 Received: from mail-pf1-x436.google.com ([2607:f8b0:4864:20::436]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qLtUn-0004y6-SC for qemu-devel@nongnu.org; Tue, 18 Jul 2023 18:48:43 -0400 Received: by mail-pf1-x436.google.com with SMTP id d2e1a72fcca58-666e3b15370so4639582b3a.0 for ; Tue, 18 Jul 2023 15:48:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20221208.gappssmtp.com; s=20221208; t=1689720520; x=1692312520; 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=jmBntf7xa3Sa8583LrioSnWbCw8LdNAWYw7xgKjdTZs=; b=wRvIdWWNBeCuLcgKC0B7v1oVzj0yL/qM9XltxuQXW1QnsZmXaB3rpjSbCS3GlTiF4a 0OsRyWhQtxmJjp0JCrCjl7W8l7X8eBKJ6Hw2XhHyggUc50NWe3uJ/w39i+FXxCGTPdIF EddADv4S1n3kdeq5LeOKLr+//KCIaLqfs5noRAk4c7k+dHWbubVQYXt3/9sxZJyBQL9x C161uZGAfd2j8J4r+wUbTOGLMhcXMxYGf0KY8kC7S7N+ecqBe61gy+w64cJ9B3+jdq1q YredKVjCnR+SSdQI8EQYVwh+b4zGcgpjf9IObiuFyjtR0D8apKcHf+362t/efMA8psgl JvUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689720520; x=1692312520; 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=jmBntf7xa3Sa8583LrioSnWbCw8LdNAWYw7xgKjdTZs=; b=USe6OYz/n6ybPfwdcItHJgpAtW/lXLtgk9+Z82jOrfHboGHsSYmu+tMnqs6PPaScTd EoW9r4e6l7V3QJXRDpw4xE/GST3PYxbqsu1Z0lEGykMDnKlIgEA4ks8BpVioIcbC4x0x mnPwY0B+kkh6i93AezwacpkzGuNjw+JcaURYWXQpiLUSIWva1vKQFFn0wnc7TDw0I/Dq Cy2RgHlUYU1P9LWeKG+mfd48RhecjCsI6lweaXWua2RcwduoYRmm1GsaXTo2+137K+xh 5LRJFBcxZV/X1/zQgaA8ks3kwQq2xXfAdMlzxjqozm3eA6Jhk1P45teG1/E+PcWbTC8d zoiA== X-Gm-Message-State: ABy/qLbPC75doT/tckoWKMMbU9F/VLfIWMC6fE52X2BXDygbOU8fhpT/ PU1FQiSF77slEog79FKZ5o1OOw== X-Google-Smtp-Source: APBJJlGqIlG87iJYTN0vokmOLJLA7MLB/3inkZ6UqPX3S7dtCCdbKzpXLjTIjG5Nil1f1mg+BtqU1w== X-Received: by 2002:a05:6a00:134e:b0:67f:48a2:5d9f with SMTP id k14-20020a056a00134e00b0067f48a25d9fmr4180811pfu.11.1689720520397; Tue, 18 Jul 2023 15:48:40 -0700 (PDT) Received: from kaiwenx.ba.rivosinc.com ([66.220.2.162]) by smtp.gmail.com with ESMTPSA id i14-20020aa787ce000000b00682669dc19bsm1983312pfo.201.2023.07.18.15.48.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Jul 2023 15:48:40 -0700 (PDT) From: Kaiwen Xue To: qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: Kaiwen Xue , Palmer Dabbelt , Alistair Francis , Bin Meng , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , Atish Kumar Patra , Kaiwen Xue Subject: [PATCH 1/3] target/riscv: Add cycle & instret privilege mode filtering properties Date: Tue, 18 Jul 2023 15:47:43 -0700 Message-ID: X-Mailer: git-send-email 2.41.0 In-Reply-To: References: MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::436; envelope-from=kaiwenx@rivosinc.com; helo=mail-pf1-x436.google.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Tue, 18 Jul 2023 21:23:14 -0400 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org This adds the properties for ISA extension smcntrpmf. Patches implementing it will follow. Signed-off-by: Kaiwen Xue Signed-off-by: Kaiwen Xue --- target/riscv/cpu.c | 2 ++ target/riscv/cpu_cfg.h | 1 + 2 files changed, 3 insertions(+) diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index 9339c0241d..31a1862561 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -132,6 +132,7 @@ static const struct isa_ext_data isa_edata_arr[] = { ISA_EXT_DATA_ENTRY(smstateen, PRIV_VERSION_1_12_0, ext_smstateen), ISA_EXT_DATA_ENTRY(ssaia, PRIV_VERSION_1_12_0, ext_ssaia), ISA_EXT_DATA_ENTRY(sscofpmf, PRIV_VERSION_1_12_0, ext_sscofpmf), + ISA_EXT_DATA_ENTRY(smcntrpmf, PRIV_VERSION_1_12_0, ext_smcntrpmf), ISA_EXT_DATA_ENTRY(sstc, PRIV_VERSION_1_12_0, ext_sstc), ISA_EXT_DATA_ENTRY(svadu, PRIV_VERSION_1_12_0, ext_svadu), ISA_EXT_DATA_ENTRY(svinval, PRIV_VERSION_1_12_0, ext_svinval), @@ -1753,6 +1754,7 @@ static Property riscv_cpu_extensions[] = { /* Defaults for standard extensions */ DEFINE_PROP_UINT8("pmu-num", RISCVCPU, cfg.pmu_num, 16), DEFINE_PROP_BOOL("sscofpmf", RISCVCPU, cfg.ext_sscofpmf, false), + DEFINE_PROP_BOOL("smcntrpmf", RISCVCPU, cfg.ext_smcntrpmf, false), DEFINE_PROP_BOOL("Zifencei", RISCVCPU, cfg.ext_ifencei, true), DEFINE_PROP_BOOL("Zicsr", RISCVCPU, cfg.ext_icsr, true), DEFINE_PROP_BOOL("Zihintpause", RISCVCPU, cfg.ext_zihintpause, true), diff --git a/target/riscv/cpu_cfg.h b/target/riscv/cpu_cfg.h index 2bd9510ba3..424246cbec 100644 --- a/target/riscv/cpu_cfg.h +++ b/target/riscv/cpu_cfg.h @@ -69,6 +69,7 @@ struct RISCVCPUConfig { bool ext_zihintpause; bool ext_smstateen; bool ext_sstc; + bool ext_smcntrpmf; bool ext_svadu; bool ext_svinval; bool ext_svnapot; From patchwork Tue Jul 18 22:47:44 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kaiwen Xue X-Patchwork-Id: 1809551 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=rivosinc-com.20221208.gappssmtp.com header.i=@rivosinc-com.20221208.gappssmtp.com header.a=rsa-sha256 header.s=20221208 header.b=mxSU+RY0; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4R5J4S1n6jz1yY9 for ; Wed, 19 Jul 2023 11:23:52 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qLvuQ-0004RW-1R; Tue, 18 Jul 2023 21:23:18 -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 1qLtUs-0003Og-G6 for qemu-devel@nongnu.org; Tue, 18 Jul 2023 18:48:46 -0400 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qLtUp-0004yO-LJ for qemu-devel@nongnu.org; Tue, 18 Jul 2023 18:48:46 -0400 Received: by mail-pf1-x42a.google.com with SMTP id d2e1a72fcca58-666ecf9a0ceso4245810b3a.2 for ; Tue, 18 Jul 2023 15:48:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20221208.gappssmtp.com; s=20221208; t=1689720522; x=1692312522; 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=8DUPikPAfjyyKt79jlbtqMzW7aLfCUXGDXyALVvO2zM=; b=mxSU+RY0if2ZuFXTWK98FMdRUXkCtb9rKbev13klIzE+YCMBGWuQOG83vRDc7P/ah+ ILZT8MaDge8Y8sngt1i3zTciW9KcUoM4ArE1WXLRtgKkEiwAYWgxzehh2ZMYRbk4S/L5 XdqPkYhbhxhrgN8RP66kKtQuR374khqqRvVYQcIF0nR7MfDcAG/K5EKRxjrE4K/H5pT1 2z356IaFm7VsEfLXs1MU6iAiLCZCHsQnh/mZga+b6z2mS+wmDwPKK2TcpktLNas5iCtH ovHHzXrE5sHwUezdT1Pm2utNL871v4rqGGn4u9ADt+ybFZqkdqCbe5lUJAqIz7D3V5FK hItg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689720522; x=1692312522; 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=8DUPikPAfjyyKt79jlbtqMzW7aLfCUXGDXyALVvO2zM=; b=VAlnUy53YSLk4fkB5Inp+Co6Spot27bBRgfjJI733HS/3u8DVySEsMGMlukN1ODEfE T4fn2HmKys7tB7H0q7Zzw9IvFEMVG07aqqi0B53zYRyxGK9W9Qw1dcyQn2mJC/T7+cWz lzKHl+GWCBCXEDtXi0Pm2kRn+jGFCpDohI2wQ6h6uJiZ/zBot6srfkKlV/rcltj8mmbX 1+h2dLh8r0aCxj1HiKSiwQTsNlA9fR2WPfP20p0v6CcXQoEYj+dn5ffVce6Z1U6JTQ7V bWtoCqzvzaOB20gM1hHRMD8+2o/r2Hp6supj7y4mTMLeFKpwPDPFlRE+oRZZX2C0fQYd IqEQ== X-Gm-Message-State: ABy/qLYBXbPhmScfFiaEKLxZYaJiZiCSDL0Fy7oBk+XAeBySD2AaUioc D5+9KsLR7mUO486Ceecm4gGTmA== X-Google-Smtp-Source: APBJJlFN+Yy78NtHgoB6z+cK6L/q5wLZBfmlLmVL/i14jbTGvutA0QSRM3kxAo94XTPVn8/WZ9D65Q== X-Received: by 2002:a05:6a20:9484:b0:12c:9518:7899 with SMTP id hs4-20020a056a20948400b0012c95187899mr421317pzb.24.1689720522505; Tue, 18 Jul 2023 15:48:42 -0700 (PDT) Received: from kaiwenx.ba.rivosinc.com ([66.220.2.162]) by smtp.gmail.com with ESMTPSA id i14-20020aa787ce000000b00682669dc19bsm1983312pfo.201.2023.07.18.15.48.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Jul 2023 15:48:42 -0700 (PDT) From: Kaiwen Xue To: qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: Kaiwen Xue , Palmer Dabbelt , Alistair Francis , Bin Meng , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , Atish Kumar Patra , Kaiwen Xue Subject: [PATCH 2/3] target/riscv: Add cycle & instret privilege mode filtering definitions Date: Tue, 18 Jul 2023 15:47:44 -0700 Message-ID: X-Mailer: git-send-email 2.41.0 In-Reply-To: References: MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::42a; envelope-from=kaiwenx@rivosinc.com; helo=mail-pf1-x42a.google.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Tue, 18 Jul 2023 21:23:14 -0400 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org This adds the definitions for ISA extension smcntrpmf. Signed-off-by: Kaiwen Xue Signed-off-by: Kaiwen Xue --- target/riscv/cpu.h | 6 ++++++ target/riscv/cpu_bits.h | 29 +++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 6ea22e0eea..3cdf5d09f7 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -283,6 +283,12 @@ struct CPUArchState { target_ulong mcountinhibit; + /* PMU cycle & instret privilege mode filtering */ + target_ulong mcyclecfg; + target_ulong mcyclecfgh; + target_ulong minstretcfg; + target_ulong minstretcfgh; + /* PMU counter state */ PMUCTRState pmu_ctrs[RV_MAX_MHPMCOUNTERS]; diff --git a/target/riscv/cpu_bits.h b/target/riscv/cpu_bits.h index 59f0ffd9e1..0a25fb276b 100644 --- a/target/riscv/cpu_bits.h +++ b/target/riscv/cpu_bits.h @@ -401,6 +401,10 @@ /* Machine counter-inhibit register */ #define CSR_MCOUNTINHIBIT 0x320 +/* Machine counter configuration registers */ +#define CSR_MCYCLECFG 0x321 +#define CSR_MINSTRETCFG 0x322 + #define CSR_MHPMEVENT3 0x323 #define CSR_MHPMEVENT4 0x324 #define CSR_MHPMEVENT5 0x325 @@ -431,6 +435,9 @@ #define CSR_MHPMEVENT30 0x33e #define CSR_MHPMEVENT31 0x33f +#define CSR_MCYCLECFGH 0x721 +#define CSR_MINSTRETCFGH 0x722 + #define CSR_MHPMEVENT3H 0x723 #define CSR_MHPMEVENT4H 0x724 #define CSR_MHPMEVENT5H 0x725 @@ -879,6 +886,28 @@ typedef enum RISCVException { /* PMU related bits */ #define MIE_LCOFIE (1 << IRQ_PMU_OVF) +#define MCYCLECFG_BIT_MINH BIT_ULL(62) +#define MCYCLECFGH_BIT_MINH BIT(30) +#define MCYCLECFG_BIT_SINH BIT_ULL(61) +#define MCYCLECFGH_BIT_SINH BIT(29) +#define MCYCLECFG_BIT_UINH BIT_ULL(60) +#define MCYCLECFGH_BIT_UINH BIT(28) +#define MCYCLECFG_BIT_VSINH BIT_ULL(59) +#define MCYCLECFGH_BIT_VSINH BIT(27) +#define MCYCLECFG_BIT_VUINH BIT_ULL(58) +#define MCYCLECFGH_BIT_VUINH BIT(26) + +#define MINSTRETCFG_BIT_MINH BIT_ULL(62) +#define MINSTRETCFGH_BIT_MINH BIT(30) +#define MINSTRETCFG_BIT_SINH BIT_ULL(61) +#define MINSTRETCFGH_BIT_SINH BIT(29) +#define MINSTRETCFG_BIT_UINH BIT_ULL(60) +#define MINSTRETCFGH_BIT_UINH BIT(28) +#define MINSTRETCFG_BIT_VSINH BIT_ULL(59) +#define MINSTRETCFGH_BIT_VSINH BIT(27) +#define MINSTRETCFG_BIT_VUINH BIT_ULL(58) +#define MINSTRETCFGH_BIT_VUINH BIT(26) + #define MHPMEVENT_BIT_OF BIT_ULL(63) #define MHPMEVENTH_BIT_OF BIT(31) #define MHPMEVENT_BIT_MINH BIT_ULL(62) From patchwork Tue Jul 18 22:47:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kaiwen Xue X-Patchwork-Id: 1809552 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=rivosinc-com.20221208.gappssmtp.com header.i=@rivosinc-com.20221208.gappssmtp.com header.a=rsa-sha256 header.s=20221208 header.b=fALrsQcN; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4R5J4V70zcz1yY9 for ; Wed, 19 Jul 2023 11:23:54 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qLvuS-0004S0-7F; Tue, 18 Jul 2023 21:23:20 -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 1qLtV7-0003R9-R4 for qemu-devel@nongnu.org; Tue, 18 Jul 2023 18:49:01 -0400 Received: from mail-pf1-x42b.google.com ([2607:f8b0:4864:20::42b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qLtUs-0004yz-DW for qemu-devel@nongnu.org; Tue, 18 Jul 2023 18:49:01 -0400 Received: by mail-pf1-x42b.google.com with SMTP id d2e1a72fcca58-666ecf9a081so6258644b3a.2 for ; Tue, 18 Jul 2023 15:48:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20221208.gappssmtp.com; s=20221208; t=1689720524; x=1692312524; 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=/5KRXSS3DUc7aMWMTPL8fRz80+vQ74aVXKA6ZvPBjS4=; b=fALrsQcNnnBKxMa4sbcYmfQd5zTE1NbL+z+UqQ5IJAo4KzrPcimSOuz/tP94VpOOY5 hsoUqZCTHIzad8j4PcnAneX7EyXuJfxdrGoO+cA3n/rFLVgGdcyToHJwtDpRgcopARaR 3fWmu/YpMJuF2lXaxe1zQvXIJWqzTlqKjwDVCds8K+N7JD8onveGD2B7rk6jGEkKBVW2 otVQxZG/nFhp3BdFVNcvQn8B+u7TwJ1GhM2jBr/NjlCxIb6+Ys6p0jr/P1bs5yoGXeGE 5/TN3eqXJ49P4X+Lw0jtfZEtA4hyWmpdXdP2dnKh2J/hhAfEfJGFrfCgIIHcco3qkko0 u5iw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689720524; x=1692312524; 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=/5KRXSS3DUc7aMWMTPL8fRz80+vQ74aVXKA6ZvPBjS4=; b=VoPkK0jJ3cSaCPpzYAgOM1FqnpWXnjlYciVH2z1lIXojz2EJCXaFhWPb3EsL6dgTB+ hKbn/fNQ+HPFnyV0UQPVS6kBD0UeviWTDc3zuNffrBOLWlZx92om297HokJdLawJTdRy 1gGv8d5GnRmFkYuiBSsNKLjEEHpyXiERLXamgAIm+OZe3c1rxut13Qa3bQxe8wA7msFZ 1OzFbRaF1tDT5DLsmorX2VO2rCKmk4hzeA7xYK2VlPSAQgof1IDDZz9+E0fxKW8E3Y8Y oTUCNFRxutq2n6g4L/Tw5foHchPOeUF3A8WEW2V2EGseZpU4BE0VTjy2uBtyWd1ohJaq 8Pxg== X-Gm-Message-State: ABy/qLZAmgMLzMzMuIlDadCh9hgSG9Aa9xOJ+XO5ji0MvSLDr+pOCz1I JnXBIfiaCjBDMe5G82IExBadAg== X-Google-Smtp-Source: APBJJlFI85vVQT7ZBtXatmEU3BItJ8q4D64KA1l423YRA3QoGbXKSlzUAHK7rlYUtaMs9k1xnHtZig== X-Received: by 2002:a05:6a21:33a6:b0:12d:10b6:98f9 with SMTP id yy38-20020a056a2133a600b0012d10b698f9mr20088339pzb.56.1689720524305; Tue, 18 Jul 2023 15:48:44 -0700 (PDT) Received: from kaiwenx.ba.rivosinc.com ([66.220.2.162]) by smtp.gmail.com with ESMTPSA id i14-20020aa787ce000000b00682669dc19bsm1983312pfo.201.2023.07.18.15.48.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Jul 2023 15:48:44 -0700 (PDT) From: Kaiwen Xue To: qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: Kaiwen Xue , Palmer Dabbelt , Alistair Francis , Bin Meng , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , Atish Kumar Patra , Kaiwen Xue Subject: [PATCH 3/3] target/riscv: Add cycle & instret privilege mode filtering support Date: Tue, 18 Jul 2023 15:47:45 -0700 Message-ID: <3ed71e9812a806b98dd519594af52b9525ec459c.1689631639.git.kaiwenx@rivosinc.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: References: MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::42b; envelope-from=kaiwenx@rivosinc.com; helo=mail-pf1-x42b.google.com X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, DKIM_INVALID=0.1, DKIM_SIGNED=0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Tue, 18 Jul 2023 21:23:14 -0400 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org QEMU only calculates dummy cycles and instructions, so there is no actual means to stop the icount in QEMU. Hence this patch merely adds the functionality of accessing the cfg registers, and cause no actual effects on the counting of cycle and instret counters. Signed-off-by: Kaiwen Xue Signed-off-by: Kaiwen Xue --- target/riscv/csr.c | 73 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/target/riscv/csr.c b/target/riscv/csr.c index ea7585329e..b1d5e85a79 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -218,6 +218,17 @@ static RISCVException sscofpmf(CPURISCVState *env, int csrno) return RISCV_EXCP_NONE; } +static RISCVException smcntrpmf(CPURISCVState *env, int csrno) +{ + RISCVCPU *cpu = env_archcpu(env); + + if (!cpu->cfg.ext_smcntrpmf) { + return RISCV_EXCP_ILLEGAL_INST; + } + + return RISCV_EXCP_NONE; +} + static RISCVException any(CPURISCVState *env, int csrno) { return RISCV_EXCP_NONE; @@ -800,6 +811,54 @@ static int read_hpmcounterh(CPURISCVState *env, int csrno, target_ulong *val) #else /* CONFIG_USER_ONLY */ +static int read_mcyclecfg(CPURISCVState *env, int csrno, target_ulong *val) +{ + *val = env->mcyclecfg; + return RISCV_EXCP_NONE; +} + +static int write_mcyclecfg(CPURISCVState *env, int csrno, target_ulong val) +{ + env->mcyclecfg = val; + return RISCV_EXCP_NONE; +} + +static int read_mcyclecfgh(CPURISCVState *env, int csrno, target_ulong *val) +{ + *val = env->mcyclecfgh; + return RISCV_EXCP_NONE; +} + +static int write_mcyclecfgh(CPURISCVState *env, int csrno, target_ulong val) +{ + env->mcyclecfgh = val; + return RISCV_EXCP_NONE; +} + +static int read_minstretcfg(CPURISCVState *env, int csrno, target_ulong *val) +{ + *val = env->minstretcfg; + return RISCV_EXCP_NONE; +} + +static int write_minstretcfg(CPURISCVState *env, int csrno, target_ulong val) +{ + env->minstretcfg = val; + return RISCV_EXCP_NONE; +} + +static int read_minstretcfgh(CPURISCVState *env, int csrno, target_ulong *val) +{ + *val = env->minstretcfgh; + return RISCV_EXCP_NONE; +} + +static int write_minstretcfgh(CPURISCVState *env, int csrno, target_ulong val) +{ + env->minstretcfgh = val; + return RISCV_EXCP_NONE; +} + static int read_mhpmevent(CPURISCVState *env, int csrno, target_ulong *val) { int evt_index = csrno - CSR_MCOUNTINHIBIT; @@ -4506,6 +4565,13 @@ riscv_csr_operations csr_ops[CSR_TABLE_SIZE] = { write_mcountinhibit, .min_priv_ver = PRIV_VERSION_1_11_0 }, + [CSR_MCYCLECFG] = { "mcyclecfg", smcntrpmf, read_mcyclecfg, + write_mcyclecfg, + .min_priv_ver = PRIV_VERSION_1_12_0 }, + [CSR_MINSTRETCFG] = { "minstretcfg", smcntrpmf, read_minstretcfg, + write_minstretcfg, + .min_priv_ver = PRIV_VERSION_1_12_0 }, + [CSR_MHPMEVENT3] = { "mhpmevent3", any, read_mhpmevent, write_mhpmevent }, [CSR_MHPMEVENT4] = { "mhpmevent4", any, read_mhpmevent, @@ -4565,6 +4631,13 @@ riscv_csr_operations csr_ops[CSR_TABLE_SIZE] = { [CSR_MHPMEVENT31] = { "mhpmevent31", any, read_mhpmevent, write_mhpmevent }, + [CSR_MCYCLECFGH] = { "mcyclecfgh", smcntrpmf, read_mcyclecfgh, + write_mcyclecfgh, + .min_priv_ver = PRIV_VERSION_1_12_0 }, + [CSR_MINSTRETCFGH] = { "minstretcfgh", smcntrpmf, read_minstretcfgh, + write_minstretcfgh, + .min_priv_ver = PRIV_VERSION_1_12_0 }, + [CSR_MHPMEVENT3H] = { "mhpmevent3h", sscofpmf, read_mhpmeventh, write_mhpmeventh, .min_priv_ver = PRIV_VERSION_1_12_0 },