From patchwork Mon Apr 19 06:16:25 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 1467786 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: 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: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=wdc.com header.i=@wdc.com header.a=rsa-sha256 header.s=dkim.wdc.com header.b=NLNyAug7; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4FNxWN14N6z9s1l for ; Mon, 19 Apr 2021 16:20:16 +1000 (AEST) Received: from localhost ([::1]:52318 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lYNGY-0005OK-6K for incoming@patchwork.ozlabs.org; Mon, 19 Apr 2021 02:20:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43228) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lYND7-0002k4-Ue; Mon, 19 Apr 2021 02:16:42 -0400 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:33742) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lYND3-0004w7-Ji; Mon, 19 Apr 2021 02:16:41 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1618812997; x=1650348997; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=/Ok+tcjiS+FZn/FXu1Fpq+gKJ8dmBUMypcJItbhVtUk=; b=NLNyAug7M94rcuuwzCW0UHJ4EW8P2FQyiSLf9QtFXUmyJVemAdEimK4J 0fMrC0zvT3YaVEYBWKk7alu2erHhKLyCdRKHR2hB5P8pp9nX2hBe3UHEL Pqj259SuuRz6nnbd6JtD9Cdk8JxHh92l/80PKOBsiWmyy/mvjY5r0PvOJ DVSlIlL1VtRx5FPGmkS29kqyWYS9XLGChJMzQPvlvHXpA6Fskj9dUoe4S Dk/JikDSHc+lCue1kX5a/NgBGnWCDLWxN84rd8gLQZDzN09+E4uOCvdAK 3cJHLUuTzhVPOAq3hXEQYODFQpdMYrFB/grQ6nm2CrNLhgDlmPN1G4g43 A==; IronPort-SDR: QLP9VRP+EUJVYoL8yDBNoSpJ0Jv7eK0EqTcHb9YCVTkZkn0pO7rO9YsWJduDWh1YnpxSm7Iu04 zdSXB4TPifkhsAya1YGzPwBl3j+fEXNNy6gGFd4G8gY73fzwX3+8DboBWKt8r30ixx2bb4s+c6 kb0KFPqHrlXqauK6ignIqbYBhl3Ud3HgX19OumIbX00UBjU0KfNrKJvQJXQlnh6OTJMmwJSWWQ kwKRnvTXCZVFxKoVQua5kOOz2oND1QtduyOeTO4RKemxTfGIcaos50UF45lrAM6vOqnuABKcJp vy8= X-IronPort-AV: E=Sophos;i="5.82,233,1613404800"; d="scan'208";a="165415572" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 19 Apr 2021 14:16:35 +0800 IronPort-SDR: o+75Sb4aX9zmYb1LE9UNk1o/qhjIiWPykHxceq1QUJjhxurJLnR3Y4dneGV1IiZKvcCB/RdNn6 qhY6fXSzhK4rfsBop0yW5eYOPJgdA/KH5LIzOi2OFq363KrKHUIM0gfnVEGhV0xHq+jA3JlvJ8 2YpSeS9XazJMdfm3Nu+RyEPbg5CvKPyTE0hMKdEsZiv6weI7ra7JQloO4L5XBmjysTgy/rXM2k NuKoAJEztjdnuWcs5LmFRDIckzf5GGJITbA+d4mMsR/lH8iDW26KC57pkZDKGPOxdstjx4mHCI 5D2YcW74KyCB2rOaS8Trd0tF Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Apr 2021 22:57:19 -0700 IronPort-SDR: uDuAjhU7dhi+1howAo+qWqsFWH3sGn3HC9/bUmhr+8skZbCnBjVBlEZSIzsK5Kc5YRYzOUW7OY pXXk/d7kTlnBcbm+el9OmxHK7AnFMlyGNjeP0RBNuiz0j7w1FYDgE6+sACgMJD986odbM+faSP N2zgxvrSZBUahMCHpK/3QwO6AinHiEWEpxLkFl6675fo5vL0I+/jR8RtooKTWE2GSQHXFeXTl2 tu0tZs4HwCBjyzFYHKkBNlKPvgKvndUuXVhCEwmzwZR+zsmmQ27moXPM2RWFQ3R4EB9+Z1j4rH duI= WDCIronportException: Internal Received: from unknown (HELO alistair-risc6-laptop.wdc.com) ([10.225.166.23]) by uls-op-cesaip02.wdc.com with ESMTP; 18 Apr 2021 23:16:33 -0700 From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v4 1/8] target/riscv: Fix the PMP is locked check when using TOR Date: Mon, 19 Apr 2021 16:16:25 +1000 Message-Id: <2831241458163f445a89bd59c59990247265b0c6.1618812899.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: References: MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.153.144; envelope-from=prvs=736d87ece=alistair.francis@wdc.com; helo=esa5.hgst.iphmx.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_PASS=-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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair.francis@wdc.com, bmeng.cn@gmail.com, palmer@dabbelt.com, alistair23@gmail.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" The RISC-V spec says: if PMP entry i is locked and pmpicfg.A is set to TOR, writes to pmpaddri-1 are ignored. The current QEMU code ignores accesses to pmpaddri-1 and pmpcfgi-1 which is incorrect. Update the pmp_is_locked() function to not check the supporting fields and instead enforce the lock functionality in the pmpaddr write operation. Signed-off-by: Alistair Francis Reviewed-by: Bin Meng --- target/riscv/pmp.c | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/target/riscv/pmp.c b/target/riscv/pmp.c index cff020122a..a3b253bb15 100644 --- a/target/riscv/pmp.c +++ b/target/riscv/pmp.c @@ -59,16 +59,6 @@ static inline int pmp_is_locked(CPURISCVState *env, uint32_t pmp_index) return 0; } - /* In TOR mode, need to check the lock bit of the next pmp - * (if there is a next) - */ - const uint8_t a_field = - pmp_get_a_field(env->pmp_state.pmp[pmp_index + 1].cfg_reg); - if ((env->pmp_state.pmp[pmp_index + 1u].cfg_reg & PMP_LOCK) && - (PMP_AMATCH_TOR == a_field)) { - return 1; - } - return 0; } @@ -380,7 +370,23 @@ void pmpaddr_csr_write(CPURISCVState *env, uint32_t addr_index, target_ulong val) { trace_pmpaddr_csr_write(env->mhartid, addr_index, val); + if (addr_index < MAX_RISCV_PMPS) { + /* + * In TOR mode, need to check the lock bit of the next pmp + * (if there is a next). + */ + if (addr_index + 1 < MAX_RISCV_PMPS) { + uint8_t pmp_cfg = env->pmp_state.pmp[addr_index + 1].cfg_reg; + + if (pmp_cfg & PMP_LOCK && + PMP_AMATCH_TOR == pmp_get_a_field(pmp_cfg)) { + qemu_log_mask(LOG_GUEST_ERROR, + "ignoring pmpaddr write - pmpcfg + 1 locked\n"); + return; + } + } + if (!pmp_is_locked(env, addr_index)) { env->pmp_state.pmp[addr_index].addr_reg = val; pmp_update_rule(env, addr_index); From patchwork Mon Apr 19 06:16:38 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 1467782 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: 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: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=wdc.com header.i=@wdc.com header.a=rsa-sha256 header.s=dkim.wdc.com header.b=Ou95Jg4L; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4FNxSr3NCXz9t15 for ; Mon, 19 Apr 2021 16:18:04 +1000 (AEST) Received: from localhost ([::1]:46130 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lYNEP-0002ot-Q6 for incoming@patchwork.ozlabs.org; Mon, 19 Apr 2021 02:18:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43250) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lYNDB-0002nK-7U; Mon, 19 Apr 2021 02:16:45 -0400 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:39840) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lYND9-0004zu-Ih; Mon, 19 Apr 2021 02:16:44 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1618813003; x=1650349003; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=6Pem7nn+Ai8i7C1vw/hr6N5V118h5TJ3Ltyh7wyBDJY=; b=Ou95Jg4LQi6Qo7NOk29wyMrMj3eXmZSxx74yojGEHnPIW/GkCkAIv4O0 QetUxi6GfNqm8PLit/pWsnUAftmWkRNAgWUYx0AX3rAMx/LWWVPvy8qUW 4zrxbyP/UxeIC4bAYXjRIso+0ZDLk8S317NdknKv61M+KLxoqVmcSEqeW BVbvsUBipCAqPK61IxySSZAAEh6cVFCGAR9Bu1DmGNl+cTvOAg6fzmGX4 4CJsuq0Dhngcb+k/j8A07Olr48G6oEhsCvuO2nNRW0RgjRM+J+4KZ2s1t 6IHsDhwwkYvHEL5Lneypr6gGLOV5hmW4kigd2MOaQxHirMlMqj7W75zPK g==; IronPort-SDR: 87/Qog4CkqRNJ7B1EB9yIcNp8nPF+Q6cMBZHPlhS2OYat4az31oMEnIRaWhe62bfH9atqjHSV7 p9H1v8mZu2fFEbztlsPdhcc8x784meIffTKhrcR4dqAyYtgPjdXPn8BGHYcso4eWmPn3PpjI2f Dv2GIdTzpIddXW6PFVJmBTvLtvsMHJpeuhSYKKp1OOo88L5dN+LbTxirAlHXHvsxMszsysmqsw tv6OLzqibW3IhP96eLpQbS26XxorKWav+ntrqW7f3AQVrLumgUAvEoc8UKBb5lBfXdMz9ezvWS jY4= X-IronPort-AV: E=Sophos;i="5.82,233,1613404800"; d="scan'208";a="169947779" Received: from uls-op-cesaip02.wdc.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 19 Apr 2021 14:16:41 +0800 IronPort-SDR: n/bEGsZ9KaT4MlU13SQjhXGA70NvWpY+QQHGQ/I8waX4XJtBu38jpu/C8ENrda9EoicgPiMFUC wRbplpUBLzXQ+Aao6qDAYALhGges6IczA6Swu6nfOmmFRikwqafjiBpji5FB/Kd+t6NuJ9tzea v9s0UqLtQ1POBgdsqF/KiNUWCcjU+qq8h9Q7rfXmwjZwFiZHhVzdD1/l/d2gd8mUA1ATHizYt/ AXKaP2baoZP5AsUhhGbqgypXK4QgkeLCzriasXa4XFHTvGL7fyakkn8Ueb719oOWlMmrWbP0La Es8wSXYicWWoU6+tbPB51v0N Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Apr 2021 22:55:49 -0700 IronPort-SDR: pAKVXrogrOhTys+S65Igw6AtaGtQjSvUZykFMF+eIqLhjZ5n6knCb9kNPDJFtmkZ7h6QCUU8Uu bymuBroxriAS5d8N8n5RHYsPTYjH3EJaRS09ifQNETskha/Rioqv5Ww1Oe6i6ZFNxRrMNWa75+ Yctu4ZVEZoWhS/fHgU555VHHMi3RoJRrtDYcSxYfZN/IfvozyQOyizbEixfXXWgtK2npDRumIS +nXW5adttIpUPgspynSpORN4f3uBPWw7Lkjt1sWrw6Bl8JQuN9HUG13CB8lTdjsKSdEJOiSlqE +N4= WDCIronportException: Internal Received: from unknown (HELO alistair-risc6-laptop.wdc.com) ([10.225.166.23]) by uls-op-cesaip01.wdc.com with ESMTP; 18 Apr 2021 23:16:39 -0700 From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v4 2/8] target/riscv: Define ePMP mseccfg Date: Mon, 19 Apr 2021 16:16:38 +1000 Message-Id: <63245b559f477a9ce6d4f930136d2d7fd7f99c78.1618812899.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: References: MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.153.141; envelope-from=prvs=736d87ece=alistair.francis@wdc.com; helo=esa3.hgst.iphmx.com X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 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_MED=-2.3, SPF_HELO_PASS=-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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair.francis@wdc.com, bmeng.cn@gmail.com, palmer@dabbelt.com, alistair23@gmail.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Hou Weiying Use address 0x390 and 0x391 for the ePMP CSRs. Signed-off-by: Hongzheng-Li Signed-off-by: Hou Weiying Signed-off-by: Myriad-Dreamin Reviewed-by: Alistair Francis Message-Id: [ Changes by AF: - Tidy up commit message ] Signed-off-by: Alistair Francis Reviewed-by: Bin Meng --- target/riscv/cpu_bits.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/target/riscv/cpu_bits.h b/target/riscv/cpu_bits.h index 8549d77b4f..24d89939a0 100644 --- a/target/riscv/cpu_bits.h +++ b/target/riscv/cpu_bits.h @@ -220,6 +220,9 @@ #define CSR_MTINST 0x34a #define CSR_MTVAL2 0x34b +/* Enhanced Physical Memory Protection (ePMP) */ +#define CSR_MSECCFG 0x390 +#define CSR_MSECCFGH 0x391 /* Physical Memory Protection */ #define CSR_PMPCFG0 0x3a0 #define CSR_PMPCFG1 0x3a1 From patchwork Mon Apr 19 06:16:44 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 1467784 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: 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: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=wdc.com header.i=@wdc.com header.a=rsa-sha256 header.s=dkim.wdc.com header.b=qD7ho70m; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4FNxTf6Kw4z9t15 for ; Mon, 19 Apr 2021 16:18:46 +1000 (AEST) Received: from localhost ([::1]:48810 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lYNF6-0003ya-7j for incoming@patchwork.ozlabs.org; Mon, 19 Apr 2021 02:18:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43296) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lYNDO-0002sc-FQ; Mon, 19 Apr 2021 02:16:58 -0400 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:6358) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lYNDI-000541-2d; Mon, 19 Apr 2021 02:16:58 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1618813054; x=1650349054; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=AEdLUUCBoQL5rEE7QdTBd0JifO8NvjBpCTUmr7NrzuA=; b=qD7ho70m9irsHj70Z/0poFKfGt8byMakeSUk/H4Fid8Mv0xMJhroUTJN B/CKrKQOoiCdaSpuYekNs3RP81iw7A2YrjuvT+fglQN5RVrl2IRxpOb0G Kdh3ASAviuIczZ56VxIw2+lq9upy8X0n46JPmy5Dl7xLjilzSNXw5S+E0 Z78wzR7kC0w4DEKPtS8IkrpAits4vU238iif+tQ16ETQVUOszgPYiZFWN QGYGD+XKXNpgde8mMcAjrZ0EZPc4xDY2bkBXAeFt6uG70LJMdZWCohTPt uAZ9gp1qkl3yh6VicRJuhLsEaiAMzTYCfaoWyn94TPMadLnpFjApBtt92 w==; IronPort-SDR: Q2bKQ+LFsjJMpaI6kcVxUW2HEKSaDSp0xPqMsPu/8P4Omj96gQVb0LqroPi33qBcfYDKnqUZh+ gtCf6T/0Zz6hQb168W2nK+32muZtp5RrSpMtS0gZRK81mOs+BkgsrNHnI6ahu86XZ2Nwq5JmoJ 4AUq8yY4g3z4Ko79kGlvv9+II0oM/wdujINZta2papcsRx7FxKG9ACZZVLNPyMRYb6EkZCk5xy Yy3onV9Ooo1uqp/zbIBEqMpetRe+39aAM2qXkzH4wrBBKhla20gTbXroGAW365FZ7I9EfvrHzB L5Q= X-IronPort-AV: E=Sophos;i="5.82,233,1613404800"; d="scan'208";a="269339318" Received: from uls-op-cesaip01.wdc.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 19 Apr 2021 14:17:31 +0800 IronPort-SDR: LUBW467kJLxHB9MCnFO1KgbG+cQ2Jg9z6tenxfP65hE1dWmEg4waurTQ6mbExgPrDGOOXQqsHj KDxjD0/vaoo4Z3raOcPLoHhC7rFtBYgnCDWoPhMph/mTJFhToaF00ITg69MtNbtqQ1aUBvqKJ9 /dVJrDYmOZsIXtbt/kQNovsqs7k3t1NIay2pp26/gYMIDkIkX1M6UPbhziPXdvK2fNlso7XGpt msEgtJP50aHWA++6QswMCqCqrLCnLkY7Elf6cX658oQ9l20jIwu1EI+wqQnnlS+I/8dpXKWLy2 KUWA7S7iycHEaPQzwLtAQ99w Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Apr 2021 22:57:34 -0700 IronPort-SDR: r88Ocmw4WEqwMah5NMSbeqbxGi/v/sp+m/DqU/AKKZ/bzjKltsqjH0BRS4cdPr42DCwLuja8TD iP08XkcVExo4AgEJ6LXvSQwftec5yaa3uMGmSSpi7Dky4wWG9ubeO+ZGIppnMOhz7SquXMgICY Tt+l/qvOUpcCFHZ5RUdfp8AL5q2aaMHGaof4Vaw7b1Oso7VNIFpiJuURH1FraimO0pezs5v+y6 wn1qA3lpS01Tmcqf9863Shk9S3XD61Fp3c7ql84ouwY5TXrSklKMQkjoSMKuA86PrSv6e8yx2k z5k= WDCIronportException: Internal Received: from unknown (HELO alistair-risc6-laptop.wdc.com) ([10.225.166.23]) by uls-op-cesaip02.wdc.com with ESMTP; 18 Apr 2021 23:16:47 -0700 From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v4 3/8] target/riscv: Add the ePMP feature Date: Mon, 19 Apr 2021 16:16:44 +1000 Message-Id: <28c8855c80b0388a08c3ae009f5467e2b3960ce0.1618812899.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: References: MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=736d87ece=alistair.francis@wdc.com; helo=esa2.hgst.iphmx.com X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 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_MED=-2.3, SPF_HELO_PASS=-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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair.francis@wdc.com, bmeng.cn@gmail.com, palmer@dabbelt.com, alistair23@gmail.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" The spec is avaliable at: https://docs.google.com/document/d/1Mh_aiHYxemL0umN3GTTw8vsbmzHZ_nxZXgjgOUzbvc8 Signed-off-by: Alistair Francis Reviewed-by: Bin Meng --- target/riscv/cpu.h | 1 + 1 file changed, 1 insertion(+) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 842d3ab810..13a08b86f6 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -81,6 +81,7 @@ enum { RISCV_FEATURE_MMU, RISCV_FEATURE_PMP, + RISCV_FEATURE_EPMP, RISCV_FEATURE_MISA }; From patchwork Mon Apr 19 06:16:53 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 1467789 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: 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: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=wdc.com header.i=@wdc.com header.a=rsa-sha256 header.s=dkim.wdc.com header.b=j1HH2qye; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4FNxZD3LW8z9tkB for ; Mon, 19 Apr 2021 16:22:42 +1000 (AEST) Received: from localhost ([::1]:56620 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lYNIu-0007ES-0V for incoming@patchwork.ozlabs.org; Mon, 19 Apr 2021 02:22:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43378) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lYNDb-0003Dz-RF; Mon, 19 Apr 2021 02:17:11 -0400 Received: from esa1.hgst.iphmx.com ([68.232.141.245]:63199) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lYNDZ-0005D7-N2; Mon, 19 Apr 2021 02:17:11 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1618813029; x=1650349029; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=BeGxDstgSVmAKMR32zQD2g9vyfnlWWfmmbhPOYG0QOo=; b=j1HH2qyetZBhPPUjlfKdq/EDxlEuhPaCh41kakS9/Q7pGaq+Ii14+fD3 bkHAADK0HDt0XeG25plqG6tI65WxOPNa4FHHxrCyE/g1OHmj1mfKtGpyW uwQZo+oUEbqyaHN6effQuZAmtacnk7g+wq6Wqki8IPcAkMhm6AhI2xJoi IVzBDUubtM854iC7HGYAes06D+Pnjl7seHbYKXkoXl7ok+eP4qbbSrDiv 6TXelpYTmHWZFEnozR5epgCQMCoCd935Dl4UhrFDU0kqRPuxCvPP1mmvg q8ScRCyYpxofOqE1PUweW1HkOehQUnGU+V02f9N+lkItu6xdXFqn8n40d w==; IronPort-SDR: N/DnHSvg79Nmuz15QFsQ7l16J9aIBbl0q1AaxlhDxbn0sZ79Wk/7lPT875nmT1OXTXqjaf3/Ai JzdOwx+SPssGWt3ZWmwf0l0S0waMUjUSErkh4LWqjaaMpS+DKNLKdhh3B0NGZrHC5nlPOejIEj BNHhBY83BZZsFo4VM1RJboN+ngD5p3i3XBbyQqicxCbD4fSpNTnWpWwvU7OT4iJg5tOadNfC6N qXQWlGuOiMFWCAhlpygbP2jHNbmn3smR6j6AmK+RBVxlajuh0La65eZt8TrLHccaaKdQ7GUXoe cl0= X-IronPort-AV: E=Sophos;i="5.82,233,1613404800"; d="scan'208";a="276347564" Received: from uls-op-cesaip02.wdc.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 19 Apr 2021 14:17:07 +0800 IronPort-SDR: KyLitMif4mkgwXscZgDylwXQpIPeVKm7FTUWY5F6oovjNlyHTEGH69ZqSyoCP5Gjfr/Tet98IL zkCFxEPsR/V2pRQfbwSCpi1bMK4rFI3KX3350Utq24JuzGXs2Qcc7yASIaVgcd6Ao5/IwuL9hu /i1wx8U+lhMxU5acfPtSxZ6JYIR5W6UoktV4Ga3cdRiDXjFF+IXVHeO8m0gX80kik8B1rFX57F Vg5C9rpPObfae2/N6CCLc89DvremGLKsxFhPv0wQxCCZfI/l7plg1eEYkSMLMG5zzqRXeiCBMi 79PxRTayhGPToEHcrWQKqFBR Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Apr 2021 22:56:15 -0700 IronPort-SDR: qUge56ollVQDhxfCtXiG7V9BwScHRkYaWYkKREQo8qeHmCe/BNmWIWs0Od7QGHSlzxSM1712r0 MgFNwrOzHyfBenvwb9Y7TqJr1wA4lQ0n+hgG/bctztqKTVIFwkFTqd6gVuB8+pj77LnRxwf8+T ObeKbUcBMgevrg3aHkYncb2+Hk+Q+CVFyqbXxdC0BrozEhj/7crVaylBoRr4lZ1BTpnjlZZn7T FiuApLEW11Oc+mW5Z4hBupTYQF46L3t+t0bDR7gEj5dbwYamhXlktaAGgGFmBSX4KecSCQt2n0 Wro= WDCIronportException: Internal Received: from unknown (HELO alistair-risc6-laptop.wdc.com) ([10.225.166.23]) by uls-op-cesaip01.wdc.com with ESMTP; 18 Apr 2021 23:17:01 -0700 From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v4 4/8] target/riscv: Add ePMP CSR access functions Date: Mon, 19 Apr 2021 16:16:53 +1000 Message-Id: <270762cb2507fba6a9eeb99a774cf49f7da9cc32.1618812899.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: References: MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.141.245; envelope-from=prvs=736d87ece=alistair.francis@wdc.com; helo=esa1.hgst.iphmx.com X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 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_MED=-2.3, SPF_HELO_PASS=-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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair.francis@wdc.com, bmeng.cn@gmail.com, palmer@dabbelt.com, alistair23@gmail.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Hou Weiying Signed-off-by: Hongzheng-Li Signed-off-by: Hou Weiying Signed-off-by: Myriad-Dreamin Message-Id: [ Changes by AF: - Rebase on master - Fix build errors - Fix some style issues ] Signed-off-by: Alistair Francis Reviewed-by: Bin Meng --- target/riscv/cpu.h | 1 + target/riscv/pmp.h | 14 ++++++++++++++ target/riscv/csr.c | 24 ++++++++++++++++++++++++ target/riscv/pmp.c | 34 ++++++++++++++++++++++++++++++++++ target/riscv/trace-events | 3 +++ 5 files changed, 76 insertions(+) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 13a08b86f6..83b315e0b2 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -230,6 +230,7 @@ struct CPURISCVState { /* physical memory protection */ pmp_table_t pmp_state; + target_ulong mseccfg; /* machine specific rdtime callback */ uint64_t (*rdtime_fn)(uint32_t); diff --git a/target/riscv/pmp.h b/target/riscv/pmp.h index b82a30f0d5..a9a0b363a7 100644 --- a/target/riscv/pmp.h +++ b/target/riscv/pmp.h @@ -36,6 +36,12 @@ typedef enum { PMP_AMATCH_NAPOT /* Naturally aligned power-of-two region */ } pmp_am_t; +typedef enum { + MSECCFG_MML = 1 << 0, + MSECCFG_MMWP = 1 << 1, + MSECCFG_RLB = 1 << 2 +} mseccfg_field_t; + typedef struct { target_ulong addr_reg; uint8_t cfg_reg; @@ -55,6 +61,10 @@ typedef struct { void pmpcfg_csr_write(CPURISCVState *env, uint32_t reg_index, target_ulong val); target_ulong pmpcfg_csr_read(CPURISCVState *env, uint32_t reg_index); + +void mseccfg_csr_write(CPURISCVState *env, target_ulong val); +target_ulong mseccfg_csr_read(CPURISCVState *env); + void pmpaddr_csr_write(CPURISCVState *env, uint32_t addr_index, target_ulong val); target_ulong pmpaddr_csr_read(CPURISCVState *env, uint32_t addr_index); @@ -68,4 +78,8 @@ void pmp_update_rule_nums(CPURISCVState *env); uint32_t pmp_get_num_rules(CPURISCVState *env); int pmp_priv_to_page_prot(pmp_priv_t pmp_priv); +#define MSECCFG_MML_ISSET(env) get_field(env->mseccfg, MSECCFG_MML) +#define MSECCFG_MMWP_ISSET(env) get_field(env->mseccfg, MSECCFG_MMWP) +#define MSECCFG_RLB_ISSET(env) get_field(env->mseccfg, MSECCFG_RLB) + #endif diff --git a/target/riscv/csr.c b/target/riscv/csr.c index f0a74f0eb8..97ceff718f 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -200,6 +200,15 @@ static RISCVException pmp(CPURISCVState *env, int csrno) return RISCV_EXCP_ILLEGAL_INST; } + +static RISCVException epmp(CPURISCVState *env, int csrno) +{ + if (env->priv == PRV_M && riscv_feature(env, RISCV_FEATURE_EPMP)) { + return RISCV_EXCP_NONE; + } + + return RISCV_EXCP_ILLEGAL_INST; +} #endif /* User Floating-Point CSRs */ @@ -1343,6 +1352,20 @@ static RISCVException write_mtinst(CPURISCVState *env, int csrno, } /* Physical Memory Protection */ +static RISCVException read_mseccfg(CPURISCVState *env, int csrno, + target_ulong *val) +{ + *val = mseccfg_csr_read(env); + return RISCV_EXCP_NONE; +} + +static RISCVException write_mseccfg(CPURISCVState *env, int csrno, + target_ulong val) +{ + mseccfg_csr_write(env, val); + return RISCV_EXCP_NONE; +} + static RISCVException read_pmpcfg(CPURISCVState *env, int csrno, target_ulong *val) { @@ -1581,6 +1604,7 @@ riscv_csr_operations csr_ops[CSR_TABLE_SIZE] = { [CSR_MTINST] = { "mtinst", hmode, read_mtinst, write_mtinst }, /* Physical Memory Protection */ + [CSR_MSECCFG] = { "mseccfg", epmp, read_mseccfg, write_mseccfg }, [CSR_PMPCFG0] = { "pmpcfg0", pmp, read_pmpcfg, write_pmpcfg }, [CSR_PMPCFG1] = { "pmpcfg1", pmp, read_pmpcfg, write_pmpcfg }, [CSR_PMPCFG2] = { "pmpcfg2", pmp, read_pmpcfg, write_pmpcfg }, diff --git a/target/riscv/pmp.c b/target/riscv/pmp.c index a3b253bb15..e35988eec2 100644 --- a/target/riscv/pmp.c +++ b/target/riscv/pmp.c @@ -419,6 +419,40 @@ target_ulong pmpaddr_csr_read(CPURISCVState *env, uint32_t addr_index) return val; } +/* + * Handle a write to a mseccfg CSR + */ +void mseccfg_csr_write(CPURISCVState *env, target_ulong val) +{ + int i; + + trace_mseccfg_csr_write(env->mhartid, val); + + /* RLB cannot be enabled if it's already 0 and if any regions are locked */ + if (!MSECCFG_RLB_ISSET(env)) { + for (i = 0; i < MAX_RISCV_PMPS; i++) { + if (pmp_is_locked(env, i)) { + val &= ~MSECCFG_RLB; + break; + } + } + } + + /* Sticky bits */ + val |= (env->mseccfg & (MSECCFG_MMWP | MSECCFG_MML)); + + env->mseccfg = val; +} + +/* + * Handle a read from a mseccfg CSR + */ +target_ulong mseccfg_csr_read(CPURISCVState *env) +{ + trace_mseccfg_csr_read(env->mhartid, env->mseccfg); + return env->mseccfg; +} + /* * Calculate the TLB size if the start address or the end address of * PMP entry is presented in thie TLB page. diff --git a/target/riscv/trace-events b/target/riscv/trace-events index b7e371ee97..49ec4d3b7d 100644 --- a/target/riscv/trace-events +++ b/target/riscv/trace-events @@ -6,3 +6,6 @@ pmpcfg_csr_read(uint64_t mhartid, uint32_t reg_index, uint64_t val) "hart %" PRI pmpcfg_csr_write(uint64_t mhartid, uint32_t reg_index, uint64_t val) "hart %" PRIu64 ": write reg%" PRIu32", val: 0x%" PRIx64 pmpaddr_csr_read(uint64_t mhartid, uint32_t addr_index, uint64_t val) "hart %" PRIu64 ": read addr%" PRIu32", val: 0x%" PRIx64 pmpaddr_csr_write(uint64_t mhartid, uint32_t addr_index, uint64_t val) "hart %" PRIu64 ": write addr%" PRIu32", val: 0x%" PRIx64 + +mseccfg_csr_read(uint64_t mhartid, uint64_t val) "hart %" PRIu64 ": read mseccfg, val: 0x%" PRIx64 +mseccfg_csr_write(uint64_t mhartid, uint64_t val) "hart %" PRIu64 ": write mseccfg, val: 0x%" PRIx64 From patchwork Mon Apr 19 06:17:11 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 1467793 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: 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: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=wdc.com header.i=@wdc.com header.a=rsa-sha256 header.s=dkim.wdc.com header.b=XjcxIUJ6; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4FNxcq3Mpgz9tkB for ; Mon, 19 Apr 2021 16:24:59 +1000 (AEST) Received: from localhost ([::1]:60694 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lYNL6-0000U7-Vn for incoming@patchwork.ozlabs.org; Mon, 19 Apr 2021 02:24:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43406) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lYNDr-0003Ko-00; Mon, 19 Apr 2021 02:17:27 -0400 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:62510) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lYNDo-0005O0-1d; Mon, 19 Apr 2021 02:17:26 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1618813102; x=1650349102; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=PE2c4ObM6Gr0qU9UHL1PTts/qWLjfUxUgyJIh+V2ACI=; b=XjcxIUJ6vORBrLpr0nd5x4eQ/eQSKPUqpwaUFNc7DDFbGwB7myGv9si5 fs5xgLNaVvcUu+H98qiHlonUvQAp5MiDTzWQr+UmB5k6sTVFsi2s6Sb22 3Qc+9t573JkVhoEw9brPlI8A7XCLw0y/jjvWZofdi0hrGyG0yj/GN3uCS fRGdJG3us9esDhaNtn1ghxuFWgxb39xkmjcHqSJkLXaimcsKH4Q55Imqs 6hj5EHhC/FrXI2XgEH1FKDH+xQA/7bit6/gq53mshsnxlKeVV9o+BsuX0 uurYiv3txYKccKUzwrKQNjKjSobf/PQcuHmpPI/DKfopw9YwqwJ4B1Z1W Q==; IronPort-SDR: gQrLa2yqEhjtvTTOVPCo/waqr+hFlytmtammnmD09qvJcrB8rB18mma3jIVAYmR6ALyG6YQdGf CJdWfg+v0r9uspzjBDqN7MmXWFSyveLoFXAMq3dAq+z0ombiuEHeTpZKX88CIKvQPPOwZnwwiZ Z+vSR0w4CX6DBxq6Ua+dpNTENXhw0Kk62GQowVRmhS8DK5AU0EpiioNhhluFgLiStJ3jewPWmj xtu6ZKWEbY9srB6ptQVSotNwu8xdYNjZfM0fndKQ60Kz32whusLeH7+T7yYll3Y0MCYKWONnWP GJM= X-IronPort-AV: E=Sophos;i="5.82,233,1613404800"; d="scan'208";a="269339353" Received: from uls-op-cesaip02.wdc.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 19 Apr 2021 14:18:20 +0800 IronPort-SDR: ip3C6iFu77nc1Xp0J2MNR2KzUKBM9ns1CVBmEqSm1/eUBLqBkRsj58NoP3Gsxg8MJkQT2Nw0uN 34u8M4QUH83Q6qoz7vgtN9Hxc5f5M5rTU/3K+HuLIapvsd1hY+P6bdHQlPwQd1ndUsweZ+4CHT 2tvjhK2Wl+J14bjGuXNU/YVPwL3EMO4s8tRqzxgB69fbQ4uJQp+LcVfFgprA1rsWtMgza18Vig BAUSmj0FqJBwHui0IwLL2Q3IdBMGPsBtkXv57EsuAOZgkV40wfziyrvXtY/4jlQZANR4UYPaL0 Oe45LoR8ktkiSDOVcadQ9WLq Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Apr 2021 22:56:30 -0700 IronPort-SDR: 0fjmKylvrWluVTXLiSOzoqh0Slws7gG9IfVFe8n9D2aqZuRDXX9/EIpARnIFI6kFCL3W6kngbT 1dYV8mKo7S4ECityyzjrEFwKEl4trmR/rZiv8+LqWofDSVT3Aw01PVHTsRO5vSlthQrA33Spb9 GL250A7AzJU+4NfiaTySRyc3oiWsrNu2ebsvwae7GHbpi1mT3K+htnlOacIQbmvFW8p4rcAx3p erScXiFKOGFQ1t6OnHAPXJivMhxV7p0UKk7U6q06kudmgxA+q/LlpJb9tqmF74LCiZkKi6E0y5 t6g= WDCIronportException: Internal Received: from unknown (HELO alistair-risc6-laptop.wdc.com) ([10.225.166.23]) by uls-op-cesaip01.wdc.com with ESMTP; 18 Apr 2021 23:17:18 -0700 From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v4 5/8] target/riscv: Implementation of enhanced PMP (ePMP) Date: Mon, 19 Apr 2021 16:17:11 +1000 Message-Id: X-Mailer: git-send-email 2.31.1 In-Reply-To: References: MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=736d87ece=alistair.francis@wdc.com; helo=esa2.hgst.iphmx.com X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 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_MED=-2.3, SPF_HELO_PASS=-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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair.francis@wdc.com, bmeng.cn@gmail.com, palmer@dabbelt.com, alistair23@gmail.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Hou Weiying This commit adds support for ePMP v0.9.1. The ePMP spec can be found in: https://docs.google.com/document/d/1Mh_aiHYxemL0umN3GTTw8vsbmzHZ_nxZXgjgOUzbvc8 Signed-off-by: Hongzheng-Li Signed-off-by: Hou Weiying Signed-off-by: Myriad-Dreamin Message-Id: [ Changes by AF: - Rebase on master - Update to latest spec - Use a switch case to handle ePMP MML permissions - Fix a few bugs ] Signed-off-by: Alistair Francis Reviewed-by: Bin Meng --- target/riscv/pmp.c | 154 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 146 insertions(+), 8 deletions(-) diff --git a/target/riscv/pmp.c b/target/riscv/pmp.c index e35988eec2..e1f5776316 100644 --- a/target/riscv/pmp.c +++ b/target/riscv/pmp.c @@ -90,11 +90,42 @@ static inline uint8_t pmp_read_cfg(CPURISCVState *env, uint32_t pmp_index) static void pmp_write_cfg(CPURISCVState *env, uint32_t pmp_index, uint8_t val) { if (pmp_index < MAX_RISCV_PMPS) { - if (!pmp_is_locked(env, pmp_index)) { - env->pmp_state.pmp[pmp_index].cfg_reg = val; - pmp_update_rule(env, pmp_index); + bool locked = true; + + if (riscv_feature(env, RISCV_FEATURE_EPMP)) { + /* mseccfg.RLB is set */ + if (MSECCFG_RLB_ISSET(env)) { + locked = false; + } + + /* mseccfg.MML is not set */ + if (!MSECCFG_MML_ISSET(env) && !pmp_is_locked(env, pmp_index)) { + locked = false; + } + + /* mseccfg.MML is set */ + if (MSECCFG_MML_ISSET(env)) { + /* not adding execute bit */ + if ((val & PMP_LOCK) != 0 && (val & PMP_EXEC) != PMP_EXEC) { + locked = false; + } + /* shared region and not adding X bit */ + if ((val & PMP_LOCK) != PMP_LOCK && + (val & 0x7) != (PMP_WRITE | PMP_EXEC)) { + locked = false; + } + } } else { + if (!pmp_is_locked(env, pmp_index)) { + locked = false; + } + } + + if (locked) { qemu_log_mask(LOG_GUEST_ERROR, "ignoring pmpcfg write - locked\n"); + } else { + env->pmp_state.pmp[pmp_index].cfg_reg = val; + pmp_update_rule(env, pmp_index); } } else { qemu_log_mask(LOG_GUEST_ERROR, @@ -217,6 +248,32 @@ static bool pmp_hart_has_privs_default(CPURISCVState *env, target_ulong addr, { bool ret; + if (riscv_feature(env, RISCV_FEATURE_EPMP)) { + if (MSECCFG_MMWP_ISSET(env)) { + /* + * The Machine Mode Whitelist Policy (mseccfg.MMWP) is set + * so we default to deny all, even for M-mode. + */ + *allowed_privs = 0; + return false; + } else if (MSECCFG_MML_ISSET(env)) { + /* + * The Machine Mode Lockdown (mseccfg.MML) bit is set + * so we can only execute code in M-mode with an applicable + * rule. Other modes are disabled. + */ + if (mode == PRV_M && !(privs & PMP_EXEC)) { + ret = true; + *allowed_privs = PMP_READ | PMP_WRITE; + } else { + ret = false; + *allowed_privs = 0; + } + + return ret; + } + } + if ((!riscv_feature(env, RISCV_FEATURE_PMP)) || (mode == PRV_M)) { /* * Privileged spec v1.10 states if HW doesn't implement any PMP entry @@ -294,13 +351,94 @@ bool pmp_hart_has_privs(CPURISCVState *env, target_ulong addr, pmp_get_a_field(env->pmp_state.pmp[i].cfg_reg); /* - * If the PMP entry is not off and the address is in range, do the priv - * check + * Convert the PMP permissions to match the truth table in the + * ePMP spec. */ + const uint8_t epmp_operation = + ((env->pmp_state.pmp[i].cfg_reg & PMP_LOCK) >> 4) | + ((env->pmp_state.pmp[i].cfg_reg & PMP_READ) << 2) | + (env->pmp_state.pmp[i].cfg_reg & PMP_WRITE) | + ((env->pmp_state.pmp[i].cfg_reg & PMP_EXEC) >> 2); + if (((s + e) == 2) && (PMP_AMATCH_OFF != a_field)) { - *allowed_privs = PMP_READ | PMP_WRITE | PMP_EXEC; - if ((mode != PRV_M) || pmp_is_locked(env, i)) { - *allowed_privs &= env->pmp_state.pmp[i].cfg_reg; + /* + * If the PMP entry is not off and the address is in range, + * do the priv check + */ + if (!MSECCFG_MML_ISSET(env)) { + /* + * If mseccfg.MML Bit is not set, do pmp priv check + * This will always apply to regular PMP. + */ + *allowed_privs = PMP_READ | PMP_WRITE | PMP_EXEC; + if ((mode != PRV_M) || pmp_is_locked(env, i)) { + *allowed_privs &= env->pmp_state.pmp[i].cfg_reg; + } + } else { + /* + * If mseccfg.MML Bit set, do the enhanced pmp priv check + */ + if (mode == PRV_M) { + switch (epmp_operation) { + case 0: + case 1: + case 4: + case 5: + case 6: + case 7: + case 8: + *allowed_privs = 0; + break; + case 2: + case 3: + case 14: + *allowed_privs = PMP_READ | PMP_WRITE; + break; + case 9: + case 10: + *allowed_privs = PMP_EXEC; + break; + case 11: + case 13: + *allowed_privs = PMP_READ | PMP_EXEC; + break; + case 12: + case 15: + *allowed_privs = PMP_READ; + break; + } + } else { + switch (epmp_operation) { + case 0: + case 8: + case 9: + case 12: + case 13: + case 14: + *allowed_privs = 0; + break; + case 1: + case 10: + case 11: + *allowed_privs = PMP_EXEC; + break; + case 2: + case 4: + case 15: + *allowed_privs = PMP_READ; + break; + case 3: + case 6: + *allowed_privs = PMP_READ | PMP_WRITE; + break; + case 5: + *allowed_privs = PMP_READ | PMP_EXEC; + break; + case 7: + *allowed_privs = PMP_READ | PMP_WRITE | PMP_EXEC; + break; + } + } } ret = ((privs & *allowed_privs) == privs); From patchwork Mon Apr 19 06:17:25 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 1467790 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: 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: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=wdc.com header.i=@wdc.com header.a=rsa-sha256 header.s=dkim.wdc.com header.b=BXIgTf1f; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4FNxZR2fqgz9tkB for ; Mon, 19 Apr 2021 16:22:55 +1000 (AEST) Received: from localhost ([::1]:57054 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lYNJ5-0007Or-Kg for incoming@patchwork.ozlabs.org; Mon, 19 Apr 2021 02:22:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43420) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lYNDz-0003VA-Ly; Mon, 19 Apr 2021 02:17:35 -0400 Received: from esa1.hgst.iphmx.com ([68.232.141.245]:63233) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lYNDx-0005Td-Rd; Mon, 19 Apr 2021 02:17:35 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1618813053; x=1650349053; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=KQtAdV5LP9iEiyOwP2HFZ15i0V8DACTLNBdpl+Fu7po=; b=BXIgTf1fHRkjOcSIUO3ney5JvslDchON3WkLHEoaHafhQGFw7HSRPf4F oBfLrReoMVgiOTawghxhljLlD7Av8JY1e78JaUNqiS3997/WmiUQ+BXwI pqhtd4WKoyPWxgZQtVwgMIo5epq26S6YycWgZklbLCDRxBSOmeG9uxd/r NMZ2e5c9U2MB7lxIXSOujFwbITRDCIOqrOBjNql6ZKA/L3zcoLX/oMiux RKk6VnJkdUKD5/ajo/b85dE0AHHp8qeSsUy5zfBs8zuhBzb6OJ7y82+iW X6KfpfpGUTIQ2rKzUvJ/O4d1QrW4F2WACop2Eq10IOarN1Wie4c+YrJTo g==; IronPort-SDR: zjrYFOeitNgcKQi2bwQLy27nf546kMBZ8AB4UKrABQoIrjBTB3/YLStWFivRKirGgEH/fvNqQI 5Y6sgB3e8GOsHTNmm0Qh23MxTbQRYFxOqxgpOV5WX+Xk9t8y74xNZX9oW0ArfNXkHpR/8JuXc0 LVbUJhQPVQhcsIaYOwwoQPNdxMEXBLXYPSpjT3RYkXddvC0x2ItmA2C96cSd3zHIevug6JqRZl BaSQMM4sLbDILqcsmH6pYxMnZdHtxs6whZ7LAnY7bFbZ6uAHB0hyHIY12CdrOC34XT+eeE1rv8 vIk= X-IronPort-AV: E=Sophos;i="5.82,233,1613404800"; d="scan'208";a="276347587" Received: from uls-op-cesaip02.wdc.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 19 Apr 2021 14:17:31 +0800 IronPort-SDR: QvH0U3R7QV+wsE9vvefI++R1epTBx1bmGIcT1AorUvS0ULTAFLi4JaTOZtv7pfCXLmLv8gMazz eEFbila0F+H1tSGH3kcYkccMIublnQqyyaUy9zNPp6A2MfqpoMTiVQwd9UAGYFlBvuAKk0EiM7 tUiO8noPPQTdi4y6MvOMUsApWVJP8fojYjs7s+9+4yGN+pFFHx7DLV7xxVhczp6Gq8Nh64tNn9 DPXG/KutArsEWEhmPSTsoBVpDU2jUXRHv4VlVolC5yQquX/lBgkMtxjeJVhPheKPGb6Ejn7YPn HhSfvmxS8xSfh8QtpeVKjgT6 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Apr 2021 22:56:39 -0700 IronPort-SDR: KVxzA7rG6LQyYRGilcTZIJNiGgpBlkKI5OiDZyQdhKQjs5Xcj+C0eNBncNRjeVNlRQXF63BbcO TQEBK/CUWneX7p+sngAPwdbc3Kh9WZ2+zJud8wktwK9NkqTFXtualmAN+8RI6p2wszZX1PTCUf WKrvcopV9X75Ost/TDYY8XUSPtDm/Ecyl7XXZYQcZJI8A7lXyvLium2EJWV0i+R4pG6AzBtqrk J0/kl4v4QXEvXyNOunjAEMkaAPjaW/DCOkHY/jB9MMhP+0gxhVVB9WtDgRVgH2gVIoat+FWB9m RAM= WDCIronportException: Internal Received: from unknown (HELO alistair-risc6-laptop.wdc.com) ([10.225.166.23]) by uls-op-cesaip01.wdc.com with ESMTP; 18 Apr 2021 23:17:29 -0700 From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v4 6/8] target/riscv: Add a config option for ePMP Date: Mon, 19 Apr 2021 16:17:25 +1000 Message-Id: X-Mailer: git-send-email 2.31.1 In-Reply-To: References: MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.141.245; envelope-from=prvs=736d87ece=alistair.francis@wdc.com; helo=esa1.hgst.iphmx.com X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 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_MED=-2.3, SPF_HELO_PASS=-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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair.francis@wdc.com, bmeng.cn@gmail.com, palmer@dabbelt.com, alistair23@gmail.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Hou Weiying Add a config option to enable experimental support for ePMP. This is disabled by default and can be enabled with 'x-epmp=true'. Signed-off-by: Hongzheng-Li Signed-off-by: Hou Weiying Signed-off-by: Myriad-Dreamin Message-Id: Signed-off-by: Alistair Francis Reviewed-by: Bin Meng --- target/riscv/cpu.h | 1 + target/riscv/cpu.c | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 83b315e0b2..add734bbbd 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -304,6 +304,7 @@ struct RISCVCPU { uint16_t elen; bool mmu; bool pmp; + bool epmp; uint64_t resetvec; } cfg; }; diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index e530df9385..66787d019c 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -412,6 +412,14 @@ static void riscv_cpu_realize(DeviceState *dev, Error **errp) if (cpu->cfg.pmp) { set_feature(env, RISCV_FEATURE_PMP); + + /* + * Enhanced PMP should only be available + * on harts with PMP support + */ + if (cpu->cfg.epmp) { + set_feature(env, RISCV_FEATURE_EPMP); + } } set_resetvec(env, cpu->cfg.resetvec); @@ -554,6 +562,8 @@ static Property riscv_cpu_properties[] = { DEFINE_PROP_UINT16("elen", RISCVCPU, cfg.elen, 64), DEFINE_PROP_BOOL("mmu", RISCVCPU, cfg.mmu, true), DEFINE_PROP_BOOL("pmp", RISCVCPU, cfg.pmp, true), + DEFINE_PROP_BOOL("x-epmp", RISCVCPU, cfg.epmp, false), + DEFINE_PROP_UINT64("resetvec", RISCVCPU, cfg.resetvec, DEFAULT_RSTVEC), DEFINE_PROP_END_OF_LIST(), }; From patchwork Mon Apr 19 06:17:35 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 1467794 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: 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: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=wdc.com header.i=@wdc.com header.a=rsa-sha256 header.s=dkim.wdc.com header.b=M/pMZVCb; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4FNxff3RBnz9tl3 for ; Mon, 19 Apr 2021 16:26:34 +1000 (AEST) Received: from localhost ([::1]:36204 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lYNMe-00025q-DR for incoming@patchwork.ozlabs.org; Mon, 19 Apr 2021 02:26:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43484) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lYNEP-0003dO-CR; Mon, 19 Apr 2021 02:18:01 -0400 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:51967) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lYNEN-0005iI-JT; Mon, 19 Apr 2021 02:18:01 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1618813079; x=1650349079; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=X32Jz9b6DgriBA4iY1sJRtque35/x8I2uhDBULiF2bQ=; b=M/pMZVCbsrvkhVpTzAeRPtcxglIdA4vUvx9q5rcO9GaL+7rYbbn0vJA0 b+4HWLtdU2fPsYYPt80uKRwsNCgBsQcv+gkFGHamnHkznp6ZpblL4GJj+ 7M9ft0By90yBWLYTCCzSYAo4uIvcp6ERLjUrI/iE2hijkMteAnsp5s8tM xqe9zZ0CR9XVNHebvCbjqr3rmndaz0Pixkjiw00KqDy2GqXgDBTZyMhYP O5LI/8Igh8bB8T81JnO9u1ljvl7rec9FOWspKQgr2vqeaySUpeuQQJ9QB Oj0aLBo2v+tsX0+j5LMY3tmAT5ZhcG/h2HEDSkbkiWTCv25zg/YUE/NSe A==; IronPort-SDR: wSG6f0FednopVF74DyJ47jleCEBQBfdF3E7qL1/Ne19PZxWfK3IBM/y86d7Ix2renvpE3HIhxD 7k78U959l3ltVJeNNzVtlNcFqNu9UeeEAWnNNiBPKJCmfv0CpJRDkwwWWl9m+kLY3w/9RsnN0e ZucGb86cei6/MFdVcZefhhl69PQN8WZ0UJisDX2AM57D3tMje0bwggJ+77pirUeX59NXjGmo3b DXWJFQ0CliR56p3mPSdJz2W1ACNzVq7e5je9N2MsU1ZlDHQ65ctT+bL0KE5XnWOGOuHmNYog8M cGI= X-IronPort-AV: E=Sophos;i="5.82,233,1613404800"; d="scan'208";a="169947849" Received: from uls-op-cesaip02.wdc.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 19 Apr 2021 14:17:57 +0800 IronPort-SDR: 2Mp45XV2J2WWdOtmQTJAOSP4/nc/sQQSIUE6SVfFzNTYZfQ+ExPa+TA7kPv7rUT4mo0nCFTnQn gPlOXszv9U3ZX+MmRpft4/9jOQiJfj0QDDJXD47QzJLPzx7HrpKfTb7hXgRp5v3FgtnZocJsxn CrdoQfsZ9LaofwNnFOS2nzCq+xs4f9fRezKsjb+6rfm9FwHRevqCuxXmpaCY4110Inu8MZIN7E D30K7K+Cud3j0emCgo2YvDJkLnpLPjxq8ZSXvaNz+fsabDrhlYLGmzyj6+Gsw3KAhE89IjNMHh rFitGLJd9a/2/Zkv8Arzxz3U Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Apr 2021 22:57:05 -0700 IronPort-SDR: 2dLAWcHGmHX2M8cc3PdndiidIkrRCKERREulwCHpTkZLiLALvyFARiUF2nI9S+PU0YobrukURH t7BsrUGz3q6WWhYtXHsLtww5F1Og4Qa7cLWYWbddiTqJzV5J+oSNw1ui296WCvPLjS6TOLpCJa sD/gBFFbGXi2iM7t3C/wylhQu2hOn0kd3tmZc8CYeDmpsZx5k1a4PkbB6OceoiU91ozud3mMck jDg25sWDjGjpQxkmtlZJQtLLdr6Ezxtr8QYUL1sFLYA5Yj9RXdh/nRKUobN7QXKjKj5soBp/TX 3ew= WDCIronportException: Internal Received: from unknown (HELO alistair-risc6-laptop.wdc.com) ([10.225.166.23]) by uls-op-cesaip01.wdc.com with ESMTP; 18 Apr 2021 23:17:47 -0700 From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v4 7/8] target/riscv/pmp: Remove outdated comment Date: Mon, 19 Apr 2021 16:17:35 +1000 Message-Id: <10387eec21d2f17c499a78fdba85280cab4dd27f.1618812899.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: References: MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.153.141; envelope-from=prvs=736d87ece=alistair.francis@wdc.com; helo=esa3.hgst.iphmx.com X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 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_MED=-2.3, SPF_HELO_PASS=-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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair.francis@wdc.com, bmeng.cn@gmail.com, palmer@dabbelt.com, alistair23@gmail.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Alistair Francis Reviewed-by: Bin Meng --- target/riscv/pmp.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/target/riscv/pmp.c b/target/riscv/pmp.c index e1f5776316..78203291de 100644 --- a/target/riscv/pmp.c +++ b/target/riscv/pmp.c @@ -19,10 +19,6 @@ * this program. If not, see . */ -/* - * PMP (Physical Memory Protection) is as-of-yet unused and needs testing. - */ - #include "qemu/osdep.h" #include "qemu/log.h" #include "qapi/error.h" From patchwork Mon Apr 19 06:18:06 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 1467785 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: 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: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=wdc.com header.i=@wdc.com header.a=rsa-sha256 header.s=dkim.wdc.com header.b=Z59gyV0c; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4FNxVx3vx4z9vFg for ; Mon, 19 Apr 2021 16:19:53 +1000 (AEST) Received: from localhost ([::1]:50980 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lYNGB-0004qG-GW for incoming@patchwork.ozlabs.org; Mon, 19 Apr 2021 02:19:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43582) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lYNFN-0004na-2u; Mon, 19 Apr 2021 02:19:02 -0400 Received: from esa6.hgst.iphmx.com ([216.71.154.45]:36710) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lYNEt-0005yK-7j; Mon, 19 Apr 2021 02:18:59 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1618813111; x=1650349111; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=bAxzhW2heL1O/qeLTh6rWsqzlTWl7MNh1NZ6zHObLQU=; b=Z59gyV0czQYTMK0eZTh6Vv8OeRb7IT3S8FTe3d2+LoXeblTc94ZG3lCh PTHrwxLhOGL+Pb+Xpbzt7cxBz9YRpvW1Lv3xRYBRErbRl+lFifDshcNp5 aGE4DDPl55WGA373/gSW2Un+jP/pibryxeLoq5cWSsUgER41JxNwpH3LX gSYuxbRRXRjTKuZeXky/ni9xrK3+huwi+9fxAOReQgPAhViJ9o8rjNjoG /r2hveG/R4EfHqQDkh9e3Cv3tM2CVOPlNC2Ix3KHdRkRl2HLTxUg+QIIE 7GnzEa3nqgbslwGA/65TZ+IAq6igXUBQ/PmHoGwVZhzsSo7jI4Adxpipj Q==; IronPort-SDR: TCUQKa7GXDRWULLU74kyjCsfM1gAk91pw5zdkOFgIHxOw6Xq27l7NcJKB7mmYK0kPk6RWxH/G+ wzzKZy/jW/kHHSMM/y18UPqttmWpg0WVAvTpMoXIYTY9W6fWRZSwE3kAoRXDHEgUy7AW3/aylv KKN9/Ymk3l50t5JBy3Ni1ffWsi0JFnyUXcKKl/DS079kNWaYXJG+SP5djfk/7izUaO4jmgPoIU 7wBZEn9+Jt6a+v43uy4qmjURaSjOyC55jsWjj168DOXz9fy+8YpR1lSU2upT0DDbWiuSQvPoBw KJI= X-IronPort-AV: E=Sophos;i="5.82,233,1613404800"; d="scan'208";a="165961266" Received: from uls-op-cesaip02.wdc.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 19 Apr 2021 14:18:30 +0800 IronPort-SDR: p/OKF/KUYDR1WzCwkvBtMU8j6B5jQyV0AUQPUDXckqMlJAqc55NkmGv05dKCa1uoJAK1qt6jvH WnmVpME8b1BvlhZK14EQIPa8t4CTVxEwEk2/rMLw0phQsLQ2OaSU8zJYPs4GL+obzgn7cy/+xi poYz3BdLmTGmuOXfvc4h3xbUvulTYhjXCv/xL92ZMjo/UIX3w5lzmPAuNdNby6NDDLE345bP7k FAgQ3Rr8180CVpZo88X6U1eE3be+nJk7imz6pdn+jnrbXScpOHw0NmONHQEpGJJAp1n78VxiKg zsmaESsgNCFdnk2NjasD64tb Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Apr 2021 22:57:37 -0700 IronPort-SDR: D2/5EbiIG0aWWfXvnlxgq7V4EPbfULfZbnVuWUSKkECi00FT86gE8Ns/GbOIrhxXz4eFqu+7AF xsEEzc9DgL9dQ2Om/nl/4ej3om0f2cQeUZRfU51tm+yCZrby4uakQiQ7TbQ3TXjcvYt/4Jyaf9 v/cEej5XeYOJyw3A7B2kJTRE6BquMcMQ9O2jMpyb1jEiYlIQqRcpWynsO00MGcfZs64KkqNyfi NIW3OhbkCH2kBUvM7Ks37UoYKg+vWba3PlZPhTt9JQo2XkcV6kHwyFZrVnp+iUzHgoHdjMjakK 6IU= WDCIronportException: Internal Received: from unknown (HELO alistair-risc6-laptop.wdc.com) ([10.225.166.23]) by uls-op-cesaip02.wdc.com with ESMTP; 18 Apr 2021 23:18:26 -0700 From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v4 8/8] target/riscv: Add ePMP support for the Ibex CPU Date: Mon, 19 Apr 2021 16:18:06 +1000 Message-Id: X-Mailer: git-send-email 2.31.1 In-Reply-To: References: MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.154.45; envelope-from=prvs=736d87ece=alistair.francis@wdc.com; helo=esa6.hgst.iphmx.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, SPF_HELO_PASS=-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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair.francis@wdc.com, bmeng.cn@gmail.com, palmer@dabbelt.com, alistair23@gmail.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" The physical Ibex CPU has ePMP support and it's enabled for the OpenTitan machine so let's enable ePMP support for the Ibex CPU in QEMU. Signed-off-by: Alistair Francis Reviewed-by: Bin Meng --- target/riscv/cpu.c | 1 + 1 file changed, 1 insertion(+) diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index 66787d019c..4bf6a00636 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -202,6 +202,7 @@ static void rv32_ibex_cpu_init(Object *obj) set_misa(env, RV32 | RVI | RVM | RVC | RVU); set_priv_version(env, PRIV_VERSION_1_10_0); qdev_prop_set_bit(DEVICE(obj), "mmu", false); + qdev_prop_set_bit(DEVICE(obj), "x-epmp", true); } static void rv32_imafcu_nommu_cpu_init(Object *obj)