From nobody Thu May 16 03:32:59 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=wdc.com ARC-Seal: i=1; a=rsa-sha256; t=1618813323; cv=none; d=zohomail.com; s=zohoarc; b=SB01ZC8Sxd64MdQMIaeIomLhzTrfLC1FNfU//bSk7V+Z06hfrPvefDP4qz1wc5A+yvAL9wJoCLAWsMFzartVlAT2pyER2OzcTGKTAdq9Hl6agxdyb3+hNNORu53GLNFoD7XsDYK11Q9z38sKhQ2KJFdRF1EPMvG7B0aDFrhbBRo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618813323; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=YvTMfs80EfEBvjMZIVQdePAevNR80GYh7TAmQOXNWlM=; b=jiQXBGMN7soOd2o0a9NFMd73GUjLzyfELxMS8C02p9h8V91YnNWm1on1Xz7e908BGNJgpIJSx+rJU5lhQDhJa94Cl6w6sCIMwAX5zuLaLAEzkGXmqneqLyqRJ8X5fpi/ZAADCxA9N3sOYKDXriULj0Ml0ul3eQLSSBxJAU1fU2I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1618813323797729.5474336140661; Sun, 18 Apr 2021 23:22:03 -0700 (PDT) Received: from localhost ([::1]:56364 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lYNII-00078E-M8 for importer@patchew.org; Mon, 19 Apr 2021 02:22:02 -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 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 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 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 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" IronPort-SDR: o+75Sb4aX9zmYb1LE9UNk1o/qhjIiWPykHxceq1QUJjhxurJLnR3Y4dneGV1IiZKvcCB/RdNn6 qhY6fXSzhK4rfsBop0yW5eYOPJgdA/KH5LIzOi2OFq363KrKHUIM0gfnVEGhV0xHq+jA3JlvJ8 2YpSeS9XazJMdfm3Nu+RyEPbg5CvKPyTE0hMKdEsZiv6weI7ra7JQloO4L5XBmjysTgy/rXM2k NuKoAJEztjdnuWcs5LmFRDIckzf5GGJITbA+d4mMsR/lH8iDW26KC57pkZDKGPOxdstjx4mHCI 5D2YcW74KyCB2rOaS8Trd0tF IronPort-SDR: uDuAjhU7dhi+1howAo+qWqsFWH3sGn3HC9/bUmhr+8skZbCnBjVBlEZSIzsK5Kc5YRYzOUW7OY pXXk/d7kTlnBcbm+el9OmxHK7AnFMlyGNjeP0RBNuiz0j7w1FYDgE6+sACgMJD986odbM+faSP N2zgxvrSZBUahMCHpK/3QwO6AinHiEWEpxLkFl6675fo5vL0I+/jR8RtooKTWE2GSQHXFeXTl2 tu0tZs4HwCBjyzFYHKkBNlKPvgKvndUuXVhCEwmzwZR+zsmmQ27moXPM2RWFQ3R4EB9+Z1j4rH duI= WDCIronportException: Internal 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 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=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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" 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, uint= 32_t pmp_index) return 0; } =20 - /* In TOR mode, need to check the lock bit of the next pmp - * (if there is a next) - */ - const uint8_t a_field =3D - 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 =3D=3D a_field)) { - return 1; - } - return 0; } =20 @@ -380,7 +370,23 @@ void pmpaddr_csr_write(CPURISCVState *env, uint32_t ad= dr_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 =3D env->pmp_state.pmp[addr_index + 1].cfg_reg; + + if (pmp_cfg & PMP_LOCK && + PMP_AMATCH_TOR =3D=3D 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 =3D val; pmp_update_rule(env, addr_index); --=20 2.31.1 From nobody Thu May 16 03:32:59 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=wdc.com ARC-Seal: i=1; a=rsa-sha256; t=1618813126; cv=none; d=zohomail.com; s=zohoarc; b=Dg1VSXwgGWKZZ8fxEM59gJPwopdUimOYVzhRmd3Kv7Tz+mru4YhOnEuX/0f1sOmscANLG+k7HsgIjM6r6i/ckLhel4IMZS/oljZxY0R8CPLo8uLhUpWj3g1byEYlyy9Rug6q7kWwnffCdZ296rF9HD6wZzq//LWBFzn5AYXgPHs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618813126; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=6sjjSjXJRSaVfVhPwRcMXq+d8gIdi8+2Lfn2mwxMjLc=; b=f3+/b+lODO5qDjE8tCYcb5wBnb44LDQ/ARgKqCL/5WuD4vn6io/DSdTACpGKPnX6pK8nfAD3mEoKNHI5jgf1ZZZ24P4+/5EpRSNE0feOMMGxqedChCwmFK/rwUIkKzN9q4xYaiPiZik2nj/w+qZecqKqbAG5GzOHaCtVWpFsgmM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1618813126040560.05263106193; Sun, 18 Apr 2021 23:18:46 -0700 (PDT) Received: from localhost ([::1]:49290 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lYNF6-0004AI-Pk for importer@patchew.org; Mon, 19 Apr 2021 02:18:44 -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 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 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 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 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" IronPort-SDR: n/bEGsZ9KaT4MlU13SQjhXGA70NvWpY+QQHGQ/I8waX4XJtBu38jpu/C8ENrda9EoicgPiMFUC wRbplpUBLzXQ+Aao6qDAYALhGges6IczA6Swu6nfOmmFRikwqafjiBpji5FB/Kd+t6NuJ9tzea v9s0UqLtQ1POBgdsqF/KiNUWCcjU+qq8h9Q7rfXmwjZwFiZHhVzdD1/l/d2gd8mUA1ATHizYt/ AXKaP2baoZP5AsUhhGbqgypXK4QgkeLCzriasXa4XFHTvGL7fyakkn8Ueb719oOWlMmrWbP0La Es8wSXYicWWoU6+tbPB51v0N IronPort-SDR: pAKVXrogrOhTys+S65Igw6AtaGtQjSvUZykFMF+eIqLhjZ5n6knCb9kNPDJFtmkZ7h6QCUU8Uu bymuBroxriAS5d8N8n5RHYsPTYjH3EJaRS09ifQNETskha/Rioqv5Ww1Oe6i6ZFNxRrMNWa75+ Yctu4ZVEZoWhS/fHgU555VHHMi3RoJRrtDYcSxYfZN/IfvozyQOyizbEixfXXWgtK2npDRumIS +nXW5adttIpUPgspynSpORN4f3uBPWw7Lkjt1sWrw6Bl8JQuN9HUG13CB8lTdjsKSdEJOiSlqE +N4= WDCIronportException: Internal 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 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=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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" 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 =20 +/* Enhanced Physical Memory Protection (ePMP) */ +#define CSR_MSECCFG 0x390 +#define CSR_MSECCFGH 0x391 /* Physical Memory Protection */ #define CSR_PMPCFG0 0x3a0 #define CSR_PMPCFG1 0x3a1 --=20 2.31.1 From nobody Thu May 16 03:32:59 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=wdc.com ARC-Seal: i=1; a=rsa-sha256; t=1618813198; cv=none; d=zohomail.com; s=zohoarc; b=M+ntv8UvFbpiD2HnUK81cgp+f2tjnyoijw0fLfOKZr/Kde2Aod4u/lFrPxm5Ebqa/JHC85j0syTickye2y4TjIdomumWcGv7z5lb++shAIWVNpPKxaJ+OdQY24hFiRP2/DJa7oFFkU3KUaRzE0PCAgWKdpEM6ykVNI0hR4mlpzU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618813198; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=v/nqRXxjp/yCZKAC8SCrLokg+Ax/Hxtszpexe45uQiw=; b=izeSkXiLZI0TwOPV5l7oIOv/HP4alHqShGOpQs+ecdHY2ZYb8qJ6p3iNtv27kFMZWr1Ffh6CSlfL03p+8eGOt/RCyzMQvvvjnYvNYMCnGCtsH7pxBBLvuj5Inajcn8cPGCb1op9dE3HSIzz66MHczQyIRctLYvwo2YdkuSmBWBs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1618813198235145.07262720040114; Sun, 18 Apr 2021 23:19:58 -0700 (PDT) Received: from localhost ([::1]:52130 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lYNGH-0005Jl-3b for importer@patchew.org; Mon, 19 Apr 2021 02:19:57 -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 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 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 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 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" IronPort-SDR: LUBW467kJLxHB9MCnFO1KgbG+cQ2Jg9z6tenxfP65hE1dWmEg4waurTQ6mbExgPrDGOOXQqsHj KDxjD0/vaoo4Z3raOcPLoHhC7rFtBYgnCDWoPhMph/mTJFhToaF00ITg69MtNbtqQ1aUBvqKJ9 /dVJrDYmOZsIXtbt/kQNovsqs7k3t1NIay2pp26/gYMIDkIkX1M6UPbhziPXdvK2fNlso7XGpt msEgtJP50aHWA++6QswMCqCqrLCnLkY7Elf6cX658oQ9l20jIwu1EI+wqQnnlS+I/8dpXKWLy2 KUWA7S7iycHEaPQzwLtAQ99w IronPort-SDR: r88Ocmw4WEqwMah5NMSbeqbxGi/v/sp+m/DqU/AKKZ/bzjKltsqjH0BRS4cdPr42DCwLuja8TD iP08XkcVExo4AgEJ6LXvSQwftec5yaa3uMGmSSpi7Dky4wWG9ubeO+ZGIppnMOhz7SquXMgICY Tt+l/qvOUpcCFHZ5RUdfp8AL5q2aaMHGaof4Vaw7b1Oso7VNIFpiJuURH1FraimO0pezs5v+y6 wn1qA3lpS01Tmcqf9863Shk9S3XD61Fp3c7ql84ouwY5TXrSklKMQkjoSMKuA86PrSv6e8yx2k z5k= WDCIronportException: Internal 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 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=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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" The spec is avaliable at: https://docs.google.com/document/d/1Mh_aiHYxemL0umN3GTTw8vsbmzHZ_nxZXgjgOUz= bvc8 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 }; =20 --=20 2.31.1 From nobody Thu May 16 03:32:59 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=wdc.com ARC-Seal: i=1; a=rsa-sha256; t=1618813459; cv=none; d=zohomail.com; s=zohoarc; b=djdv7VAYxNVxmly2NsQggwUBPxqdDIdBHfrHH2AL1l+nlCF2aoXIqnNgR3yqqw7xDdCTqZnrSbIxj0XXA2XuMw3xaOtcsMeplDxJYhPdhOM5Y7NX2i1Qmmq56X1B7j7p6/QNzj6Whz/mKm1BoTcLqFk5ttIeyS+6sDbJuMUVTb4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618813459; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=zHwg0asAUNe2koZvnrb86GdLnVy0QUltdD0AY5GZ0Go=; b=FMJyS7HaH4obFH1/cPuMcrXesUbwqerBMs6kxcTOXRcG2fC+HWyvnArsaGqHQ2Qws2iMYAMz2IBguLZGzH4eWfcqCcRVxfahyqpmn2uXqbwtkOMAwEdvzJHBUTB2Z5/40xBM5jwc+Cv54ryqux1aNDTHLtHvdyu7LfIBJN/WNYM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1618813459548908.9361564095894; Sun, 18 Apr 2021 23:24:19 -0700 (PDT) Received: from localhost ([::1]:60358 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lYNKT-0000LY-AK for importer@patchew.org; Mon, 19 Apr 2021 02:24:17 -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 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 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 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 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" IronPort-SDR: KyLitMif4mkgwXscZgDylwXQpIPeVKm7FTUWY5F6oovjNlyHTEGH69ZqSyoCP5Gjfr/Tet98IL zkCFxEPsR/V2pRQfbwSCpi1bMK4rFI3KX3350Utq24JuzGXs2Qcc7yASIaVgcd6Ao5/IwuL9hu /i1wx8U+lhMxU5acfPtSxZ6JYIR5W6UoktV4Ga3cdRiDXjFF+IXVHeO8m0gX80kik8B1rFX57F Vg5C9rpPObfae2/N6CCLc89DvremGLKsxFhPv0wQxCCZfI/l7plg1eEYkSMLMG5zzqRXeiCBMi 79PxRTayhGPToEHcrWQKqFBR IronPort-SDR: qUge56ollVQDhxfCtXiG7V9BwScHRkYaWYkKREQo8qeHmCe/BNmWIWs0Od7QGHSlzxSM1712r0 MgFNwrOzHyfBenvwb9Y7TqJr1wA4lQ0n+hgG/bctztqKTVIFwkFTqd6gVuB8+pj77LnRxwf8+T ObeKbUcBMgevrg3aHkYncb2+Hk+Q+CVFyqbXxdC0BrozEhj/7crVaylBoRr4lZ1BTpnjlZZn7T FiuApLEW11Oc+mW5Z4hBupTYQF46L3t+t0bDR7gEj5dbwYamhXlktaAGgGFmBSX4KecSCQt2n0 Wro= WDCIronportException: Internal 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 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=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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" 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 { =20 /* physical memory protection */ pmp_table_t pmp_state; + target_ulong mseccfg; =20 /* 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; =20 +typedef enum { + MSECCFG_MML =3D 1 << 0, + MSECCFG_MMWP =3D 1 << 1, + MSECCFG_RLB =3D 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); =20 +#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 csrn= o) =20 return RISCV_EXCP_ILLEGAL_INST; } + +static RISCVException epmp(CPURISCVState *env, int csrno) +{ + if (env->priv =3D=3D PRV_M && riscv_feature(env, RISCV_FEATURE_EPMP)) { + return RISCV_EXCP_NONE; + } + + return RISCV_EXCP_ILLEGAL_INST; +} #endif =20 /* User Floating-Point CSRs */ @@ -1343,6 +1352,20 @@ static RISCVException write_mtinst(CPURISCVState *en= v, int csrno, } =20 /* Physical Memory Protection */ +static RISCVException read_mseccfg(CPURISCVState *env, int csrno, + target_ulong *val) +{ + *val =3D 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] =3D { [CSR_MTINST] =3D { "mtinst", hmode, read_mtinst, writ= e_mtinst }, =20 /* Physical Memory Protection */ + [CSR_MSECCFG] =3D { "mseccfg", epmp, read_mseccfg, write_mseccfg }, [CSR_PMPCFG0] =3D { "pmpcfg0", pmp, read_pmpcfg, write_pmpcfg }, [CSR_PMPCFG1] =3D { "pmpcfg1", pmp, read_pmpcfg, write_pmpcfg }, [CSR_PMPCFG2] =3D { "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, uint= 32_t addr_index) return val; } =20 +/* + * 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 lock= ed */ + if (!MSECCFG_RLB_ISSET(env)) { + for (i =3D 0; i < MAX_RISCV_PMPS; i++) { + if (pmp_is_locked(env, i)) { + val &=3D ~MSECCFG_RLB; + break; + } + } + } + + /* Sticky bits */ + val |=3D (env->mseccfg & (MSECCFG_MMWP | MSECCFG_MML)); + + env->mseccfg =3D 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, uint6= 4_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) "har= t %" PRIu64 ": read addr%" PRIu32", val: 0x%" PRIx64 pmpaddr_csr_write(uint64_t mhartid, uint32_t addr_index, uint64_t val) "ha= rt %" PRIu64 ": write addr%" PRIu32", val: 0x%" PRIx64 + +mseccfg_csr_read(uint64_t mhartid, uint64_t val) "hart %" PRIu64 ": read m= seccfg, val: 0x%" PRIx64 +mseccfg_csr_write(uint64_t mhartid, uint64_t val) "hart %" PRIu64 ": write= mseccfg, val: 0x%" PRIx64 --=20 2.31.1 From nobody Thu May 16 03:32:59 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=wdc.com ARC-Seal: i=1; a=rsa-sha256; t=1618813585; cv=none; d=zohomail.com; s=zohoarc; b=Fc0dekPHm0gCmmj2a/eOGvlIrAeP2tVUMTbkURHcJ4o/inG3pyQhk/xkeIVtliMuPoqdGCRkSoqoIGSLOUlEQ+ccwPdEPTSwn/yjbc26xb2Zmk9y/ra9hbpSCgn5RrAXqmv9l3XPm0oMJ1YZl8mzTCijk83C312rt68JmSoWKAU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618813585; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=XToL78sH5wQlsdZXt+PGVNYHDM5v7NNjimWXP/oDL2w=; b=cV1pFYiKejDjmuLyEjfz3ETe/7YRdeqBzA7anM1B3KRlX2TtVZEH4V4dadOh/CjdPHt/dUcsuo3Aow8AsgoCDE9YHufMzS/ePDOfVAz435jDGDQjmAYiURtyRG3rUR44wcR7x0RTZg2HJOr7Nj9gPDLDajyzv6cYHHZlAH9mBEY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1618813585038330.3702302101259; Sun, 18 Apr 2021 23:26:25 -0700 (PDT) Received: from localhost ([::1]:35838 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lYNMV-0001rw-UW for importer@patchew.org; Mon, 19 Apr 2021 02:26:23 -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 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 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 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 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" IronPort-SDR: ip3C6iFu77nc1Xp0J2MNR2KzUKBM9ns1CVBmEqSm1/eUBLqBkRsj58NoP3Gsxg8MJkQT2Nw0uN 34u8M4QUH83Q6qoz7vgtN9Hxc5f5M5rTU/3K+HuLIapvsd1hY+P6bdHQlPwQd1ndUsweZ+4CHT 2tvjhK2Wl+J14bjGuXNU/YVPwL3EMO4s8tRqzxgB69fbQ4uJQp+LcVfFgprA1rsWtMgza18Vig BAUSmj0FqJBwHui0IwLL2Q3IdBMGPsBtkXv57EsuAOZgkV40wfziyrvXtY/4jlQZANR4UYPaL0 Oe45LoR8ktkiSDOVcadQ9WLq IronPort-SDR: 0fjmKylvrWluVTXLiSOzoqh0Slws7gG9IfVFe8n9D2aqZuRDXX9/EIpARnIFI6kFCL3W6kngbT 1dYV8mKo7S4ECityyzjrEFwKEl4trmR/rZiv8+LqWofDSVT3Aw01PVHTsRO5vSlthQrA33Spb9 GL250A7AzJU+4NfiaTySRyc3oiWsrNu2ebsvwae7GHbpi1mT3K+htnlOacIQbmvFW8p4rcAx3p erScXiFKOGFQ1t6OnHAPXJivMhxV7p0UKk7U6q06kudmgxA+q/LlpJb9tqmF74LCiZkKi6E0y5 t6g= WDCIronportException: Internal 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 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=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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" 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_nxZXgjgOUz= bvc8 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 =3D val; - pmp_update_rule(env, pmp_index); + bool locked =3D true; + + if (riscv_feature(env, RISCV_FEATURE_EPMP)) { + /* mseccfg.RLB is set */ + if (MSECCFG_RLB_ISSET(env)) { + locked =3D false; + } + + /* mseccfg.MML is not set */ + if (!MSECCFG_MML_ISSET(env) && !pmp_is_locked(env, pmp_index))= { + locked =3D false; + } + + /* mseccfg.MML is set */ + if (MSECCFG_MML_ISSET(env)) { + /* not adding execute bit */ + if ((val & PMP_LOCK) !=3D 0 && (val & PMP_EXEC) !=3D PMP_E= XEC) { + locked =3D false; + } + /* shared region and not adding X bit */ + if ((val & PMP_LOCK) !=3D PMP_LOCK && + (val & 0x7) !=3D (PMP_WRITE | PMP_EXEC)) { + locked =3D false; + } + } } else { + if (!pmp_is_locked(env, pmp_index)) { + locked =3D false; + } + } + + if (locked) { qemu_log_mask(LOG_GUEST_ERROR, "ignoring pmpcfg write - locked= \n"); + } else { + env->pmp_state.pmp[pmp_index].cfg_reg =3D 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; =20 + 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 =3D 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 =3D=3D PRV_M && !(privs & PMP_EXEC)) { + ret =3D true; + *allowed_privs =3D PMP_READ | PMP_WRITE; + } else { + ret =3D false; + *allowed_privs =3D 0; + } + + return ret; + } + } + if ((!riscv_feature(env, RISCV_FEATURE_PMP)) || (mode =3D=3D PRV_M)) { /* * Privileged spec v1.10 states if HW doesn't implement any PMP en= try @@ -294,13 +351,94 @@ bool pmp_hart_has_privs(CPURISCVState *env, target_ul= ong addr, pmp_get_a_field(env->pmp_state.pmp[i].cfg_reg); =20 /* - * 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 =3D + ((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) =3D=3D 2) && (PMP_AMATCH_OFF !=3D a_field)) { - *allowed_privs =3D PMP_READ | PMP_WRITE | PMP_EXEC; - if ((mode !=3D PRV_M) || pmp_is_locked(env, i)) { - *allowed_privs &=3D 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 =3D PMP_READ | PMP_WRITE | PMP_EXEC; + if ((mode !=3D PRV_M) || pmp_is_locked(env, i)) { + *allowed_privs &=3D env->pmp_state.pmp[i].cfg_reg; + } + } else { + /* + * If mseccfg.MML Bit set, do the enhanced pmp priv check + */ + if (mode =3D=3D PRV_M) { + switch (epmp_operation) { + case 0: + case 1: + case 4: + case 5: + case 6: + case 7: + case 8: + *allowed_privs =3D 0; + break; + case 2: + case 3: + case 14: + *allowed_privs =3D PMP_READ | PMP_WRITE; + break; + case 9: + case 10: + *allowed_privs =3D PMP_EXEC; + break; + case 11: + case 13: + *allowed_privs =3D PMP_READ | PMP_EXEC; + break; + case 12: + case 15: + *allowed_privs =3D PMP_READ; + break; + } + } else { + switch (epmp_operation) { + case 0: + case 8: + case 9: + case 12: + case 13: + case 14: + *allowed_privs =3D 0; + break; + case 1: + case 10: + case 11: + *allowed_privs =3D PMP_EXEC; + break; + case 2: + case 4: + case 15: + *allowed_privs =3D PMP_READ; + break; + case 3: + case 6: + *allowed_privs =3D PMP_READ | PMP_WRITE; + break; + case 5: + *allowed_privs =3D PMP_READ | PMP_EXEC; + break; + case 7: + *allowed_privs =3D PMP_READ | PMP_WRITE | PMP_EXEC; + break; + } + } } =20 ret =3D ((privs & *allowed_privs) =3D=3D privs); --=20 2.31.1 From nobody Thu May 16 03:32:59 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=wdc.com ARC-Seal: i=1; a=rsa-sha256; t=1618813479; cv=none; d=zohomail.com; s=zohoarc; b=YhEu682biSUwLQo4EpaujHpXEjncC0FQV8DuVWzcsLcSXjx9+CJKjQmloBD8tYv5oBYKDGKjFL7r+YXBPW9QnqsRBHG2AZjd7bWWIkGhf8NyVCeF/3D6+k19FqO8zSdMIH8jtvGd53AEicoHknhm9g8aNUHSq+Q/nwpN72bk/Mw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618813479; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Gdhn/oTaJconIPq4nHe09wD3soWr4CUt8PjEa+R2YfM=; b=nk98i4ChsvxTJiieqMB+BuV6Jjp5VauHv45DbAUhqZnXW0DGFqLUagehbQAODwoLAVaUGD9Q94hGNJqITZ2Z3+8ZE7qyHUlnyd6bWE18DVt2PHGOr4w7lhSSMy+NoAgKV20li580zg1FYwmeNAd+ogG44wzV0NPATpIq3qD7whE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1618813479949354.43875365974316; Sun, 18 Apr 2021 23:24:39 -0700 (PDT) Received: from localhost ([::1]:60654 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lYNKo-0000TG-Oj for importer@patchew.org; Mon, 19 Apr 2021 02:24:38 -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 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 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 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 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" IronPort-SDR: QvH0U3R7QV+wsE9vvefI++R1epTBx1bmGIcT1AorUvS0ULTAFLi4JaTOZtv7pfCXLmLv8gMazz eEFbila0F+H1tSGH3kcYkccMIublnQqyyaUy9zNPp6A2MfqpoMTiVQwd9UAGYFlBvuAKk0EiM7 tUiO8noPPQTdi4y6MvOMUsApWVJP8fojYjs7s+9+4yGN+pFFHx7DLV7xxVhczp6Gq8Nh64tNn9 DPXG/KutArsEWEhmPSTsoBVpDU2jUXRHv4VlVolC5yQquX/lBgkMtxjeJVhPheKPGb6Ejn7YPn HhSfvmxS8xSfh8QtpeVKjgT6 IronPort-SDR: KVxzA7rG6LQyYRGilcTZIJNiGgpBlkKI5OiDZyQdhKQjs5Xcj+C0eNBncNRjeVNlRQXF63BbcO TQEBK/CUWneX7p+sngAPwdbc3Kh9WZ2+zJud8wktwK9NkqTFXtualmAN+8RI6p2wszZX1PTCUf WKrvcopV9X75Ost/TDYY8XUSPtDm/Ecyl7XXZYQcZJI8A7lXyvLium2EJWV0i+R4pG6AzBtqrk J0/kl4v4QXEvXyNOunjAEMkaAPjaW/DCOkHY/jB9MMhP+0gxhVVB9WtDgRVgH2gVIoat+FWB9m RAM= WDCIronportException: Internal 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 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=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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" 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=3Dtrue'. 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) =20 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); + } } =20 set_resetvec(env, cpu->cfg.resetvec); @@ -554,6 +562,8 @@ static Property riscv_cpu_properties[] =3D { 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(), }; --=20 2.31.1 From nobody Thu May 16 03:32:59 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=wdc.com ARC-Seal: i=1; a=rsa-sha256; t=1618813670; cv=none; d=zohomail.com; s=zohoarc; b=e7FsWHfTaLc8S69C8LRYj871W0LZ06aKr8ucy0mhB2RV5L8zyJSH+/ViNP3jMflNDs+Xjk+2usOzJtHpGhoxtW9l1It/45w+50uZnwOeL7X4jUeCndLxYfdHePFS3xn+2eNEOvIE5b025IaGz1UltaZTkkctI588cysqsGPtiBo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618813670; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=0iCXRQWjRGvkKAzcmbQ3rmXfuAl+z6tzPumGnU9I6pM=; b=jxQBpgUr/OAY5AjOgv8jfZA0hLqNzqHjc5HT7hEnrNRu/9u5NIjMwpxM8H+KhcSH/iQT93tFsYqHjWrgNbkCHyY9W2S07YpXUPheNILVl23YLRqqG8lkYhbGIXTsAK+TE9jtHUrg8ecT2Wm12RzdngUGtGqAz3OJhiL9sneF/cY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1618813670868833.2214460822481; Sun, 18 Apr 2021 23:27:50 -0700 (PDT) Received: from localhost ([::1]:39106 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lYNNt-0003IJ-RP for importer@patchew.org; Mon, 19 Apr 2021 02:27:49 -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 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 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 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 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" IronPort-SDR: 2Mp45XV2J2WWdOtmQTJAOSP4/nc/sQQSIUE6SVfFzNTYZfQ+ExPa+TA7kPv7rUT4mo0nCFTnQn gPlOXszv9U3ZX+MmRpft4/9jOQiJfj0QDDJXD47QzJLPzx7HrpKfTb7hXgRp5v3FgtnZocJsxn CrdoQfsZ9LaofwNnFOS2nzCq+xs4f9fRezKsjb+6rfm9FwHRevqCuxXmpaCY4110Inu8MZIN7E D30K7K+Cud3j0emCgo2YvDJkLnpLPjxq8ZSXvaNz+fsabDrhlYLGmzyj6+Gsw3KAhE89IjNMHh rFitGLJd9a/2/Zkv8Arzxz3U IronPort-SDR: 2dLAWcHGmHX2M8cc3PdndiidIkrRCKERREulwCHpTkZLiLALvyFARiUF2nI9S+PU0YobrukURH t7BsrUGz3q6WWhYtXHsLtww5F1Og4Qa7cLWYWbddiTqJzV5J+oSNw1ui296WCvPLjS6TOLpCJa sD/gBFFbGXi2iM7t3C/wylhQu2hOn0kd3tmZc8CYeDmpsZx5k1a4PkbB6OceoiU91ozud3mMck jDg25sWDjGjpQxkmtlZJQtLLdr6Ezxtr8QYUL1sFLYA5Yj9RXdh/nRKUobN7QXKjKj5soBp/TX 3ew= WDCIronportException: Internal 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 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=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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" 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 . */ =20 -/* - * PMP (Physical Memory Protection) is as-of-yet unused and needs testing. - */ - #include "qemu/osdep.h" #include "qemu/log.h" #include "qapi/error.h" --=20 2.31.1 From nobody Thu May 16 03:32:59 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=wdc.com ARC-Seal: i=1; a=rsa-sha256; t=1618813309; cv=none; d=zohomail.com; s=zohoarc; b=RXMIJO3vW06WDSD5K1Mk+Vw2qhyPlO57WsTA0B4qn286IQL2SkbYrab3vz2sGmhITB2lA1a0L+kzKZeN1Jzjjv6yvDrsCg5KjZEsF3cVrCLtNZoZuULzqc67eKmvL2Ei0UoRceCX4Kg97zndJMQuns15RfWsDRQtyGZyMquiwRs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618813309; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=qAt657BVZ35epv7OucilbeFB75Gj8R2srgwdhVpWb/s=; b=iZ6fG4+PbM9qpQr+35EU5QRg+20VPGxX5lvm/pvDvMCkdENkVu8Tl375M92qprZR3S6MNZQ9EJbHMSrF4UJ+lokcZGtqbcrhJ4nxIW+zvg9+cw5sXc7bm/NEnL7fmLzVwS63VK7vELqWAOA+QDLePtOd49GCcFVomKHhypXT7RU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1618813309813892.3140439938468; Sun, 18 Apr 2021 23:21:49 -0700 (PDT) Received: from localhost ([::1]:55002 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lYNI4-0006TU-Ok for importer@patchew.org; Mon, 19 Apr 2021 02:21:48 -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 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 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 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 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" IronPort-SDR: p/OKF/KUYDR1WzCwkvBtMU8j6B5jQyV0AUQPUDXckqMlJAqc55NkmGv05dKCa1uoJAK1qt6jvH WnmVpME8b1BvlhZK14EQIPa8t4CTVxEwEk2/rMLw0phQsLQ2OaSU8zJYPs4GL+obzgn7cy/+xi poYz3BdLmTGmuOXfvc4h3xbUvulTYhjXCv/xL92ZMjo/UIX3w5lzmPAuNdNby6NDDLE345bP7k FAgQ3Rr8180CVpZo88X6U1eE3be+nJk7imz6pdn+jnrbXScpOHw0NmONHQEpGJJAp1n78VxiKg zsmaESsgNCFdnk2NjasD64tb IronPort-SDR: D2/5EbiIG0aWWfXvnlxgq7V4EPbfULfZbnVuWUSKkECi00FT86gE8Ns/GbOIrhxXz4eFqu+7AF xsEEzc9DgL9dQ2Om/nl/4ej3om0f2cQeUZRfU51tm+yCZrby4uakQiQ7TbQ3TXjcvYt/4Jyaf9 v/cEej5XeYOJyw3A7B2kJTRE6BquMcMQ9O2jMpyb1jEiYlIQqRcpWynsO00MGcfZs64KkqNyfi NIW3OhbkCH2kBUvM7Ks37UoYKg+vWba3PlZPhTt9JQo2XkcV6kHwyFZrVnp+iUzHgoHdjMjakK 6IU= WDCIronportException: Internal 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 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=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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" 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); } =20 static void rv32_imafcu_nommu_cpu_init(Object *obj) --=20 2.31.1