From nobody Tue Apr 30 06:25:54 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=1617971078; cv=none; d=zohomail.com; s=zohoarc; b=Zs+z0TwQxsxSXgYW8ZarPFDK7y/TpTKQxtH5P+z5tZp/1NvyewHOrDpA8ytYk8cnGaB834TNWKxkQnJ69UpgV+C8bPHheMSsJSNnhQPiajcfogYbQY+YLETYy/0lDJicsuOMefAJIy2/ApCR1b5kxBuFtApHH92gA0tztgnRM8M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1617971078; 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=YzqrMObVHUxDKPxHVidx59H9AlonXX2HTdbap3k3pzU=; b=FnVKIljrI+qvHLr+kidAdF+/W1zOCDpPE0BiLHFwMIPg0poVvp1piZjcAGuNcBY+WAnf7JA+kwCju4J2gguQDyJ5j/ScB4GE0w9kprrKlPFBYHG83V1ovAa8JTkXdRGov7YFIWBCE9opFN/fWtKHxGbLyX7dyC65pUlNsZRnxfs= 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 1617971078080166.6952499569885; Fri, 9 Apr 2021 05:24:38 -0700 (PDT) Received: from localhost ([::1]:56890 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lUqBg-0002U5-Kb for importer@patchew.org; Fri, 09 Apr 2021 08:24:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48034) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lUq9E-0000c9-PN; Fri, 09 Apr 2021 08:22:05 -0400 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:37640) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lUq9C-0000i2-1i; Fri, 09 Apr 2021 08:22:04 -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; 09 Apr 2021 20:21:58 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Apr 2021 05:03:08 -0700 Received: from unknown (HELO alistair-risc6-laptop.wdc.com) ([10.225.167.98]) by uls-op-cesaip01.wdc.com with ESMTP; 09 Apr 2021 05:21:58 -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=1617970921; x=1649506921; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=S0sfoUXLHQc/pUjewitz2fdpjNYtkwDNkeFqT57A9v0=; b=naJe8bwPP7fEDgMcw0q7OwucoSi26q2puqItm1hOVeHFG3jtjvKgHbzY tU0pAAn6aJRU+7KrYC4aitltq3GJMQuztlN90h40F76wFw1cIjIcQ11/s 8lku8WXrAQuEPG6r+xFXWRIqhOz1OsCcvqDh4bU04aDjcgsrtwHercr+I WWULIMMnJYHM4YNEsK2G/Rs3bQQX7e/eH5D25yoLKhRuWUMy4Bxb6Pwrk p4uuH0fcApLhOVRCYrHF1llvTj/XxIcDqzHUAXFDctK21zhh8+MCJaLGZ 2HFSqJgC2ohMBckak5IPZSoAgo2ArXczRCwI4Utaq9KXx91hRzFGAjs3t g==; IronPort-SDR: ObJHlJLPbgnV8akhjI4cUVKhd4aQpRwSPRZunNDBv3aZ+cHtUOYpsqss+S1Gm5tCFvme7CEZBW /IxP1HrTLVazzGZPs/XDCVNzut2L4fcPhWZ4sDK0RlOfefueWKQIXVxPJdrm0/yO+OKnxuDCai rxP7vH2EaEvWVjMMRkglK/m4F0DtPqQghjBbusA7/DO7eS6iYcjkX0MvHG2ahZOjaxzmaLbpaU S39j3MXY/V4qX1oS3ZiddmR79z2FGbVYARo0Tjx2eekP++jNebG1sV+dIyJS2Fv8zPYUsvDpuF hQs= X-IronPort-AV: E=Sophos;i="5.82,209,1613404800"; d="scan'208";a="164302800" IronPort-SDR: tNeagxNo/hl2h+/T1sGssYZWuGphPPMVX0UtIZeEB0S8fS+O0+gyIWzNmQiwssVbvwMASTBUFW +WDqeiOJIsm/S6TPUdami+0X0w1ejezqElIx5BHRXU4cCWARMrOatV+23p3RowtPo/ZelnHr38 mUeqXLqr+tALb1pV8Rl31F9pNYymjjTvx719Ap0PnNsgBgpPCq0AH+QaIcfeUTvQ9uQOJ47xnu 3oEnaQegn/8cFd4eAcxf6ZrwFPzXJ2ctouqNnsZJqY1exXbyqg+J3blg4PnXB5Rms9ggDy3N14 uSyXCJTEqT5URywkJgbHcf/w IronPort-SDR: eyetF5l9Ph57VP8FKcSRdAptUa2ascwiBYmOL6SjtraqgdgfxG2NCCtc0GHdbRJpKC26zLSSGX nN6Lvi+Tz86SzrygrMK5QUUJo7eYIyHlckACyXnKfNlI4+bntq25DFlR5iJJpt2tzrDYebtHFU /Etcc/pjMqKgEgpBHse5USgXOYGmvFoSBtwDUihDNQvQLj2cIE2lw5G3WMqc6JJYyB0wqxMm/R WxZyvMhx9dRfZacoRJ8DI3Tk0AUlHpkd6F5e9olfWQUecFFjA7F4ufeBVBo7EM7QZNYTQAe7c5 aB4= WDCIronportException: Internal From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v2 1/8] target/riscv: Fix the PMP is locked check when using TOR Date: Fri, 9 Apr 2021 08:19:56 -0400 Message-Id: <040c147d100a86e14007e4cabc7da22855f24b87.1617970729.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.31.0 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=726c96411=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, RCVD_IN_MSPIKE_H2=-0.001, 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.0 From nobody Tue Apr 30 06:25:54 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=1617971294; cv=none; d=zohomail.com; s=zohoarc; b=iVFyeQKnN5Nqa8TVm7EaIgy73Onr7ST/AR+89DGMjzecE1uscW/3GZgQw98o1ZdrTevbMVjdMh/9Gw6m1lQzvDZzDUOgLO3MlGF4tNjOiERfn+bs4j6ouGSxt0QmEFHlP/smW2vpbJQAX42eUVkarRevKk7T/bwPmpI4sfDG6WY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1617971294; 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=ehoaYyP1SXSHQ1EIF82sCgoYjHUDWaVheIcXUpo7yto=; b=XHH3z6HX6RE9JplwWN/GOz9zYCiNPHcL1j2KguKFGMNYn96Oj9ySVdSupKVFZxydpbXAITlwhrvcEBDWgeXD0vkRrF6VfXYFgZ6yFJR4BI+ZrxYyl3eU2Y5PuRDZh91sgSyxficRC4S4n0flqXLhLgG7MEz9v0O4F0gp5zfeovU= 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 1617971294906548.7275653461816; Fri, 9 Apr 2021 05:28:14 -0700 (PDT) Received: from localhost ([::1]:37966 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lUqFB-0006V5-Gu for importer@patchew.org; Fri, 09 Apr 2021 08:28:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48186) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lUq9m-0000j5-RB; Fri, 09 Apr 2021 08:22:40 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:13110) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lUq9f-0000ud-EL; Fri, 09 Apr 2021 08:22:38 -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; 09 Apr 2021 20:22:14 +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; 09 Apr 2021 05:03:17 -0700 Received: from unknown (HELO alistair-risc6-laptop.wdc.com) ([10.225.167.98]) by uls-op-cesaip02.wdc.com with ESMTP; 09 Apr 2021 05:22:06 -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=1617970951; x=1649506951; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ZRSu18u1FsBj8Of4XRmHZ8i/NxUK3I+0gnIJ2LKuObA=; b=WbJ4ry5moMV8rwq9EGwKuf0GLRSAs3Q4SU/j4R8atIp3p6Cgxk+JIoYf DOYYjpwyc+8xfZ2NeJevD+CEKQ3ccCUONGquwX2xhtgLjfATIcXZPjk3I X2TrwFjuHw1bHMouLeFVdJpZAyRQTiYtglQzKty34ZLXlt3ja8zivRpYX vGogBnRCBhRckjxtY2XoA+eY7f+orFPEUa5gXtqAQYTWPVInj9iyfYXKx //fuxw4ysWeVuKCFKjlFcmZwTp4kuee9tEAs7ynnKuFcPkE6JIyZZCiy5 myBa4qXzVhona9vY0zwces7XGNWrE0+zTM0pKacULFXyRe9fEpRIH7H2F Q==; IronPort-SDR: evvI/tWcX458vQ21+8TLaFOzHWG+gWBJgoX1PWA82eBL8BKS8TN2MYeENd8iggSeRyVavnvgL9 H2NKnF84Dlup6+ZGQGMuoDPaFrJHoj311rXf12GqOK2c158egv+s40AyHMIBSBl1jeiCAAt6Ju wRpSKxmUYEyFjz+xxdwQv1+lzjvp89d9vUxwJo1eZuyfpkOCVdVs3GmoYoaWFYpGtylNvcnOU1 w1phwgOUhzoGQ/UW/wwJziR+I16aATAOA+X5zaHrsCH9kaRvrmJBGD6yzALqiB6oZR9C5f8sSc kLY= X-IronPort-AV: E=Sophos;i="5.82,209,1613404800"; d="scan'208";a="163998908" IronPort-SDR: dafp2ZwXMyTxeLtipmEbpXBK8EEnW8GPeEC7qhPv4bN/Dr8heQ2/TFDCJIWTW1aL3alneBwKAZ EFpUH8nRAEBzadi5hnkimI5tR8K+EDuTEy7LvR6xBJFV1/xHnHrK+G16JJBoaxN2MGzGHUyvcy NJYkuEwreCLeQYdqIOhcgb2X5cwxC2Q4gTsZR3qvFy2VadIAaOmeG040eq8D4V4mWg+iMa/XSN 32w0M6TxVy0aPMCIs0vETG1Bdug/FJxF5H4EqAgmGcPALBNm9vSbkVf4jj2j1LglPHEws/nCMp W7ZJ4LN74AGY4k7ARbqLg05i IronPort-SDR: oZQEpGo8OUW4gO3j6lPzv8oy11sDlQ2y6ICZ3PENyIX1D8GFTb2GYXjXijVnbH8n/9FjGjJk1L HCwIlo+FqIOLhRUl69oCSAB0/U5zvybe7xltFZv81FYJWUr49ZP8VgmCbXoWF9RnpMfZOfJlp6 0CNpqiV9kFDLmaqViA7xIP4mpbyH9JP9v/oiqtW39faHgXQmdWz7yT4j6S3BAqQHgN9hPJiHRN FISwKm/N7ZidAGMmLyWLC3pT7m0acTUnDZFlyeqqxaPTkPfb6LKCqIZASkBPM0qImNaTb1nb2Y 99s= WDCIronportException: Internal From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v2 2/8] target/riscv: Define ePMP mseccfg Date: Fri, 9 Apr 2021 08:20:05 -0400 Message-Id: X-Mailer: git-send-email 2.31.0 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.42; envelope-from=prvs=726c96411=alistair.francis@wdc.com; helo=esa4.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=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.0 From nobody Tue Apr 30 06:25:54 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=1617971158; cv=none; d=zohomail.com; s=zohoarc; b=N2u5h5/+HE80a5xioyWJqSDKQBQeYpYbgUXDA4zYNRlJEhvbFBYrUCDLRvRB8kHwCWApP7AWD+nwU8jK5sOL4x88/R2RoPMMJH2hAdzAiMl3UQRYitVzrPbiH05qU2w/VUWHBw9GoSbO8FzUGGTjxSu1rRL93zbuRs+y6l9Uaps= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1617971158; 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=T7CA84FPpWjV6etm8ZTYNsbpDg44HgfWNQZfi4bO348=; b=meAE7Lmy1mCVwrjh4cI4WsfqMMOgstmLkjjoIGYdb9VehpvalsbVaEUl2paNlCrbPlPAEiRbXE8B8akYPRGccXQWEo/63oR/gN+zAnzY3mtWFoK1ywyfsI5TZeFvH53cUbvi6/LOiRl/FPyZcLCHfnFmS5Nv86F/DqaaTmeAYlQ= 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 161797115804682.97271379550136; Fri, 9 Apr 2021 05:25:58 -0700 (PDT) Received: from localhost ([::1]:58716 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lUqCw-0003Ex-TW for importer@patchew.org; Fri, 09 Apr 2021 08:25:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48108) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lUq9Y-0000gc-FL; Fri, 09 Apr 2021 08:22:26 -0400 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:37630) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lUq9R-0000cp-Of; Fri, 09 Apr 2021 08:22:24 -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; 09 Apr 2021 20:22:16 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Apr 2021 05:03:26 -0700 Received: from unknown (HELO alistair-risc6-laptop.wdc.com) ([10.225.167.98]) by uls-op-cesaip01.wdc.com with ESMTP; 09 Apr 2021 05:22:16 -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=1617970937; x=1649506937; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Emy89PT75W/m7gnXNBv5IRhW/jx9xxwLsHzjvOO01c8=; b=eySqtkLV5g8r+yY4GrEvePoX1kIZO98s8h0PajyuImcUf7ZaM6HJCMeR vTZLvEmAdCp3dZECB/oDqcAy0woeWKh2C1YVuvOiblJEFLR8ODid2aRU8 4VtrZzAUEux/9EHfxQ+0OzApxz2Kx15WrA0VKA4TCEQpDn1dnCFtKvCIl Kfa2lGCG8WSAwK2Cdsqg6LZHS2L+kTAhTonXeDJS2eDJLGcZT47BotVzg 1nFigw/IukTWNZyK3nI08NGffhhEPcNM/kPZnz0ST/zrTSywC7k3jld8a OrPXTUyaj+7i9eaqb1+QsRjxNpYmvpcUnZGd6JQ18Ivob0R1ranbn/Wh0 A==; IronPort-SDR: 46Hbe5zXwpwV7cBfl1c2lYNbvGPqkTrzp49wS8uB6j2e5Fagc67owrD92ChljLJErR8PDiOv4D SgGIi7ffMHQ+BjZqBzrebqPGrNcuWRYuBg3abc7Xd4gpedQh+jRWa7HKeCQFLBN7LM0FDusrQZ WEbvuzDQXhjWNiPY4+tCC93PATkuVianZPebI8mRWjiZPCmGUGajxnPi2WO0l9jrabH8DL1x6n 0h2RoGfnOAUHrLYxXkZ2924esgM9OAuj2I6PBsFTWZTWzFEm6c/koTI8/an1k6oMIg+T+GtXBH qcM= X-IronPort-AV: E=Sophos;i="5.82,209,1613404800"; d="scan'208";a="164302817" IronPort-SDR: BC8O/20N+i5vHKpA+cdWaskgYGwvtAVDPrio/ex3rIy6q5i3cb76e34iVqkwa0tCJbDYYbA6Uj aaKZOClCzSIWn6Z3X31mNlXqcm4DZ+y48DZlR8QFiYZbKy5aiy1tSlH48w14Ed9UYK0vyF3DYo kECAz0HLa8thlWRnZ3P/WwXh3yQhZ7MqYQeDeboX6vI8BjQFIV94BKqmAzWPO25GXG2rkFKUOh N2MdMa2SGizTnuw8rbciB4pRVD/wa1nl1e44AccJjEPaWo0q23JyyH8PeQ3K6c+K3gvUfJW4RP uPRL5Dm3PeeBrzPp4KkP+/0w IronPort-SDR: OyboRPPMGoSFy/5lbmea1V0BH/xtFCJ0O43Va1etu/yd/INWoNNJJUogWO1QMnkcOEffyR/WTF +4vIosYQbrX90kOcKU8je2s89RHuX9A+RZn8JTPpfSXig5W4+00+KQo0mMbcs+DIkh0fccesH2 ZdhuDNpz6iyLxzxeYLs80PTMDqrX5kNi1wHV4vY5Bo6SE5t+er7RHqbSwwjRmTJ3WyhugasuH/ 0Zux0nc3vhv5g6swb8Sn6o5M/alNNCtMmkEZhguUMqy1bOH1aur3sixDyuU/4jy5k+hmZbstw0 NH8= WDCIronportException: Internal From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v2 3/8] target/riscv: Add the ePMP feature Date: Fri, 9 Apr 2021 08:20:14 -0400 Message-Id: X-Mailer: git-send-email 2.31.0 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=726c96411=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, RCVD_IN_MSPIKE_H2=-0.001, 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.0 From nobody Tue Apr 30 06:25:54 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=1617971244; cv=none; d=zohomail.com; s=zohoarc; b=SmSMVQh7moIDgDfKxGq1ma0dhYL36ljHv/WeZUmiD1RGWGkXSjcFA94vuI511g12onxfQZPN94dC2oKLCtvt+jcGhQEaoFLIWIF02VBn6F78JuG8wFYXZ5he8Xq1YK0ukVHlMZG/+3JVvjD5sdCNJaxP5EveA1KjpMXtECqCnpo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1617971244; 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=WnlGWwsekXM4MNsZgoWdZzPj0a00f+15WhUtqaHx6gA=; b=kre2++spVdR+GWb5AndGTlZvHycTrGZF2eN9yb2eYHaf4uxnILHySITbPw8scb0tF79/Z0zwxHnbpOrZoDGN0EDvTWas1QyhDUXLRe/cMleroZHKbzUljnWARCBM2bKg0AB8jNsM3jpqBngnh3/EcyY6SlcRXHk4KGuXQWLsYYs= 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 1617971244080960.0800776017571; Fri, 9 Apr 2021 05:27:24 -0700 (PDT) Received: from localhost ([::1]:35818 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lUqEN-0005cB-1X for importer@patchew.org; Fri, 09 Apr 2021 08:27:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48136) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lUq9h-0000hi-4O; Fri, 09 Apr 2021 08:22:33 -0400 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:60740) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lUq9b-0000sV-B0; Fri, 09 Apr 2021 08:22:32 -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; 09 Apr 2021 20:22:25 +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; 09 Apr 2021 05:03:35 -0700 Received: from unknown (HELO alistair-risc6-laptop.wdc.com) ([10.225.167.98]) by uls-op-cesaip02.wdc.com with ESMTP; 09 Apr 2021 05:22:24 -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=1617970947; x=1649506947; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ws0b7a5WkhdGJvZZ22fSs/KjBI0Z5b9RUY9KQomBeRM=; b=PKhkZU45mz+NLPW3UZeHEdWm9WlHqL1ub5Y1auU3VcpMNpaOk9/v/04/ 0wwc8NWBxQcVa/ymc4sOM7Si1oNC2KyZg7351dcrPWs1c2cFKvYK+Oh/V KEhNugEyv7Ww3Ba5T31H9uI4G6lt6cng+MShSonL99u9TwTLXvFavtDKT GP+M5+gCzEhPesc2plW0exWvvLCff8eDJQnO+OhhzRToMvcnzW41Ha9S0 Yg6myN3diy4M2n7cpSlPi0oTaY74QVC7gLRY+AOK2X3vv7xiDyL7DLXHd C45Gp3E2SD1fKRCoTmUvwO7JFPkwM2924Q+8sSJSZdq6+PS2VJ3AD4TfG w==; IronPort-SDR: /MoAe8+4+T3tdQg8/WaznYyyvFGJNpCtD/rIzq4HsqFfhyfNhVMNuJxOUyueCY/SeqYY6iurkP O1PVB6wK9R4IAlOXeyN2Xjp+VELdKFcb/zPD1SLzYx6fCLSRbnZiKn6SisuAYj3PUWmePWCYJD 7FryQeRoLXNAGbD9Hf1jOE8BQO0McN09ZKi9eyAv2rXApgcELmvKnbdZBtXdDv5SRoMb+ynU9N c96jKmAx/tKBcC1F4Ocj1tebQOWgcWoWA0X1cBZpk+J7Hs3hBMWxpznIi3UKzuJXQ8YpkEYpKw nm4= X-IronPort-AV: E=Sophos;i="5.82,209,1613404800"; d="scan'208";a="168803610" IronPort-SDR: S9R4jRgdcaswR9XQGwVgeiou1ucQKGH45ifZRxLzbIf+qEuYpwLVcIJcxBL5EjhPnt0FNaI1r3 b1pMQp2RhVXJZTXCLv5a2huBG/AyeWv7YSTYSmHjPxCEocwr0tXGZKKg4U9kTZwwLVJ13qeR4Y iCTeyP6MQfbLlN2kZoQB2EjK17O8bSC1b8qQ7zFsCSEwU33zStwB0J0H600wngrbzPwrZsm1su 95PoPVRHkdJmgTGGSAO8t0ySDxi4uUlu3O6sBHAk7sx47xyYRHXxnS0tleSoK6HNvguMcOAkSj nEdiqjMU/8zUtDqEyQVBQH/u IronPort-SDR: AeVp0T15jvseLbOw/8YpXk/VpYAWWiYCpbN1RiREcOzpnQ9VoOYc6NxkrwT+iGv0ukDRZxDiIl Bcsrpah2DrJHBApMTkw9SoVh1BPp+IWapkJefVFjlzKtGAB1qjM3L4nCBDoq6ODwqMegni+XRv WcPk+QO9r0UVcQ0FIFW6kDKJuNwGPRwvvt2OPUbkexbIJXW/U85YDV152c2pz/g7mB3stv+0M4 zvwULnrz04xvXCOgLvnEjVqkQJ5zdxYRdzeURlXwGzAVF5fbl8JfX3w2AuNauzbsqESuhDuwFe 0Eg= WDCIronportException: Internal From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v2 4/8] target/riscv: Add ePMP CSR access functions Date: Fri, 9 Apr 2021 08:20:23 -0400 Message-Id: X-Mailer: git-send-email 2.31.0 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=726c96411=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 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.0 From nobody Tue Apr 30 06:25:54 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=1617971336; cv=none; d=zohomail.com; s=zohoarc; b=WrNlRej1nNyx7m2759Nf6n+/G3oiHHfNALOYO8YqX2DRsaZE18evFNh/uZEjB21/cyByOvaWemywyChaj9CI9/sJ03klKbbrdQT1LTODlwxrH9rUVah5bExIMUGJqJ9OaHKpOurhQorZTJnANuULrjPh8tdQRjnaPRE3HUW0rZs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1617971336; 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=8XI+PWM3JLTpS8gcR/5eA9Y0iunmdlvELJChlkkbsow=; b=Q48wssKZXdet1ETp6t6I0cHaMmI9EoOy9sHArmWXF/3xTo3GGsAd8Ev/Hgtl1Vbu4dmvuoCzpbV6Skm8PvqbkTOAcFBQUPsqGXMR59m7FeHyzyArJCURMLuTIRPugyuFc4h5KNx2crHYfhduZjX2y1/zr2QqiF6sdfRLc2uvLlw= 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 1617971336552417.026351693553; Fri, 9 Apr 2021 05:28:56 -0700 (PDT) Received: from localhost ([::1]:39906 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lUqFr-0007JY-74 for importer@patchew.org; Fri, 09 Apr 2021 08:28:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48196) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lUq9o-0000jZ-Ns; Fri, 09 Apr 2021 08:22:41 -0400 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:60740) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lUq9j-0000sV-ES; Fri, 09 Apr 2021 08:22:40 -0400 Received: from h199-255-45-15.hgst.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 09 Apr 2021 20:22:34 +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; 09 Apr 2021 05:02:09 -0700 Received: from unknown (HELO alistair-risc6-laptop.wdc.com) ([10.225.167.98]) by uls-op-cesaip02.wdc.com with ESMTP; 09 Apr 2021 05:22: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=1617970955; x=1649506955; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=XMpWji7VLRiH7hFzuP+S4zuKmFdTXmWKPHOjZfDOFMU=; b=Ps9OwVHTU1vgxDxv0ktl2ufrcfoD5ayZ3ZQRuUFeQttjqLBS9kvhG8LW Ief25KguXUlnsdjSWwz3q1bqH9Bshz5ivOhezxtZjDqB8hy1MzM7RZ+8H WIOJQLpQODfkfLMNG2rRyaTkMDrAFdadEqIMNC3P1Mx7sXh63SzdgYB87 lMZBf6km9a/nBsFLAWZectlnt9xXRFnSE7NhNFxitKeEHqQfXMnx8AWux lDUO3JMsaHPM/eotwmVbr4X6qV1w7wzl7UgboHGYkVxq1aWoBELtyUpEh ExdjbbzK69dr+/0SKUD1sMxq5VPr9AzpvS09WCD28S5mOwXY2ix123kj9 w==; IronPort-SDR: sKEMKZYFNqcRmSIGVy+WQXh8+ip7/iPdDvu+uJLgHJNy0uArRx6wYCbXjddtLz2YyTp3oxd9B7 BSi2HIvNnlVx1wyfgsgugqCwSa0Djuqnntt8kwW2QvjUkzdUTjodgVS231/OgF8ca/ipKW98FX 2sPFsm+9Yu/ijiamAIyiJr99qcRR2I829TNqZXamxgjq4wj+Cl95BLglLWM4Jt2RrQ6iSAg+wQ vNJJKChlcgzQ6uicOnvX6ffuggOQ4HFqBgrF9xC4CJrTwD8klRqbizxSdhhegVC+As51rDIG4S lTs= X-IronPort-AV: E=Sophos;i="5.82,209,1613404800"; d="scan'208";a="168803621" IronPort-SDR: cFrr6/dj3IbJuRolSUe4Oefa4QHdK++JxZkywBZSe3iVR8rObZqtb/10D+5gpfBBOW9OkpIqPh ShUyp/p0uVvOOpeaoxFZRvyZVe2/2wA9X4HB94+1bmPCg16s4Ot3oo0las1LNsayqCHtnScVOm iIsjPghEOSPqj0+WbRi3OvL8QQk5WB0ywF7IEn85gulXev43zW5pIjUKISHMzTnPF3cDN+nEia X17bLynhuTrcY45h6Ymw6bmHU7JcSCkEiBFzQivjgXbsf66Sl/mN+lFcr5YEp5EbEUPQtu6N/b 98D7BaU23zPQ9w24w5KCL8Al IronPort-SDR: olGKs3GSl6JTs6YNn7ZPUMOz7aHx4pstA9Eye+vHu1Zke+8rC3a2AZwF0sTG4pkSIHtiqLhW1H 465F9iNMv4cAbz4wITjacwEH3Tcgb5/RcCJpMlnSJ1Ulgq+Oip41J+7iTNr6E2/Ih0TRSpe9YJ UrVBibqNXpqlTt60CQQHOY8VX3SZZc0+LiYNbLrm6YwXHfjLcslmJZLTxx3kLfeRizXsgRKXWs z3JIY2Bg/xoXFVqNaHWMsIev3CpAXSlKwZ92+rMhkH1DTNKz+ppMIvP0ZTuAc4baDOpHYcfj9H BeY= WDCIronportException: Internal From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v2 5/8] target/riscv: Implementation of enhanced PMP (ePMP) Date: Fri, 9 Apr 2021 08:20:32 -0400 Message-Id: <3f4a8b1fa0cd5deed00beb585010d6b1cc59efb6.1617970729.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.31.0 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=726c96411=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 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 --- target/riscv/pmp.c | 165 +++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 153 insertions(+), 12 deletions(-) diff --git a/target/riscv/pmp.c b/target/riscv/pmp.c index e35988eec2..cd44d81eba 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,33 @@ 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 +352,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); @@ -328,10 +467,12 @@ void pmpcfg_csr_write(CPURISCVState *env, uint32_t re= g_index, =20 trace_pmpcfg_csr_write(env->mhartid, reg_index, val); =20 - if ((reg_index & 1) && (sizeof(target_ulong) =3D=3D 8)) { - qemu_log_mask(LOG_GUEST_ERROR, - "ignoring pmpcfg write - incorrect address\n"); - return; + if (!riscv_feature(env, RISCV_FEATURE_EPMP) || !MSECCFG_RLB_ISSET(env)= ) { + if ((reg_index & 1) && (sizeof(target_ulong) =3D=3D 8)) { + qemu_log_mask(LOG_GUEST_ERROR, + "ignoring pmpcfg write - incorrect address\n"); + return; + } } =20 for (i =3D 0; i < sizeof(target_ulong); i++) { --=20 2.31.0 From nobody Tue Apr 30 06:25:54 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=1617971439; cv=none; d=zohomail.com; s=zohoarc; b=aFZOG8jfjffluPHsevhOoyJfPoh0WSKKenhcFmsnFnwZBfnKtephih0rLXai8OspB0h8U1l4I6WS6CYO7HSvWP3PCF4LjEA3wF219KIJnjkk+rOu3KG/EcBkwnMi6jAFSNyvCJX76n75zQ5LV0GqOLJb2yJ4IpKSK7zFPKfBY9o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1617971439; 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=no86BWAQUrOsUfxdmvxpiGKYDozrvxVvTki23Skeqoc=; b=d8DbphanTz5Ae/WF+PUKKgd3WmN4+5cAdU0ag5YxOBbiAHk58Xy94vRdPo/IBMxRYOYCfUX0KCgE8GfpvQb6ugKQeyXbho273adqyfF6maeaXBrKTVwvh7tbKX8E2n0fbzRKEUOUb9/tSEBETypAvomF6YLlkhNRMGq5LbWGj/o= 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 1617971439065678.173406510263; Fri, 9 Apr 2021 05:30:39 -0700 (PDT) Received: from localhost ([::1]:45698 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lUqHV-0001EK-EG for importer@patchew.org; Fri, 09 Apr 2021 08:30:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48254) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lUq9y-0000np-6R; Fri, 09 Apr 2021 08:22:51 -0400 Received: from esa1.hgst.iphmx.com ([68.232.141.245]:34657) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lUq9t-00010N-AF; Fri, 09 Apr 2021 08:22:49 -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; 09 Apr 2021 20:22:43 +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; 09 Apr 2021 05:03:53 -0700 Received: from unknown (HELO alistair-risc6-laptop.wdc.com) ([10.225.167.98]) by uls-op-cesaip02.wdc.com with ESMTP; 09 Apr 2021 05:22:42 -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=1617970965; x=1649506965; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=MaZjC7FTVAJ4nz8xz4oIR7br1hWd7l3UKYGeioVXxKY=; b=A/NwjuCl2gQMYGV0WcQFkzSZ3r6rBlx6io/wqXAzLAFK+tl7x00K2nm/ NATLVOSgnI6xu9bK+A5QUWbHvSvKpJhjir6bb9YwdcVf53JaQ7fwKdmvr ibbMw3wkUJ71NI2sEughlgBPehcPqLz4IKWD9sTq9aPpnF2o7UMr78YBN XzGPEVdQs9upj+T5EnZh5rd7KTEFsahFKOkmnNhH7g6MrE4CK7CxOu2jM XN8xheJm3XY23gYIIfN23sc4R3u4+9bXmGUie0UOw/WOCbbpMoltZ0vnU GN+enGLm5zVfgkZr78f+zn4AGU5XBz3KlnGOwNJMHD3LVj0AX9Cxjr3jl A==; IronPort-SDR: 17yiU/6rSbYbLhg22KAOoXlhnSGwiEYc/Eyj7DH231zT/SXyVCNyhaA1mtD91jJhLsWyzlV2W4 fAJRL8mDVrpNnLkrvIGb9YOdZsJcQBOfXS8xpNZq/geW+bkMT4HwCxxeqReMU+RkDoBffS3GL7 IHfGvfc5NGfFokjAPH4NICpTMUPvBYGoit2muI17yWyrUdArfp/Et6bT1zz+D09XCMIeSTD2jW tyNALyR59gbE+yYPMpXasR81CFWCyAEKUfJg1QfnoAywKGCTOwM56mVtrGnHgoWLWxpm/kyq1A 3HM= X-IronPort-AV: E=Sophos;i="5.82,209,1613404800"; d="scan'208";a="275175992" IronPort-SDR: 7eNlGqUHal00/asoyAyf3IhKtVwhFLzJwbpTsn5Fc/kXQeuXSrpAjUSJtYhJhcFXwigaW0hFxO fzMA5y/p3Ozr1w5wFPuaebV3MCpXrb0+vTcsxtIWnAxXUmoMiHj+0v/1tjmwOV84KerSgufAqK SKfg1DwfEXmZ6ulpxDQ1J2+v84gKFbe5wA9zC6BErdo5hz+jAcS4nLNcs/kkomGUY0SWRx+Luc SBhE8Qw+lZYjCSr78NfHHCMFBTJsp64ZSkW7DQwbcrYTzhePE9EIF3Xjp1TNSy/vE6GgHPM0EC qjJmMVifbo65DrqD6uo10j+E IronPort-SDR: 8D62nr0HOO3ZLF/X/5L+gypC9DPbdIx5mCJTgEzdpUATj+1ir85r7BR5PIcXTlDfhDg8XmTCgV rtOmv3nqbind7i2e+lKL+zxbbBgILm5jp5kmtHFrDcGkyC8H5/I1S1Xj14iMb93LVjZ09MpsXJ OPjs3Cbs/6hMPm/GiCEf5YdaZIAXCzisDg/MP91EOmvWwqXCWsZ902AxcMtf+lC0TltKfw+hJu jTnFOgMtortD7DKDO55GrWeZjMHTW1mid/Y08mQyXGdD2+dQ4LqFv1w/arJ3V/ppS79ON1/2w+ 0oQ= WDCIronportException: Internal From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v2 6/8] target/riscv: Add a config option for ePMP Date: Fri, 9 Apr 2021 08:20:40 -0400 Message-Id: X-Mailer: git-send-email 2.31.0 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=726c96411=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.0 From nobody Tue Apr 30 06:25:54 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=1617971581; cv=none; d=zohomail.com; s=zohoarc; b=S5iY2kGF9ia36xAboGWcSNB9wVyp+z61dIk6cfCH96kKCE0qHO54c6mBpF6xsnSoK6zO5rZV4ime1+37wNvaIHSuJXH3H4CtaPkf6Y8k/ZX9IO+/nKK5di9/hqbMbUX7STy0h3657wrQG2aA4rJOrWn0H0rP4zR6EVK2b7FN8hE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1617971581; 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=SPW2DBkec/Ey/aDtnRjzfNzTdD0viC7Q6cm7GOxT818=; b=chDs4sM/HcH+RDQ8bwSeO1WrhBBaL4OFK9+WerrkWlJG5lwbdgeJy/E+6I2lbChZ/4shLWIote1Brpdiw/VW8jB5EcPAMuRDpNusvIm02vuS7xmDYaGPsLvftIO48+hUV71XRz1a7slINywbERJFZ1tuy2d+mR3vND68IdPFzl0= 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 161797158147548.17174899712063; Fri, 9 Apr 2021 05:33:01 -0700 (PDT) Received: from localhost ([::1]:51420 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lUqJo-0003hy-GJ for importer@patchew.org; Fri, 09 Apr 2021 08:33:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48318) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lUqAQ-0001aB-6v; Fri, 09 Apr 2021 08:23:18 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:13152) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lUqAN-0001GV-Sw; Fri, 09 Apr 2021 08:23:17 -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; 09 Apr 2021 20:22:59 +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; 09 Apr 2021 05:04:01 -0700 Received: from unknown (HELO alistair-risc6-laptop.wdc.com) ([10.225.167.98]) by uls-op-cesaip02.wdc.com with ESMTP; 09 Apr 2021 05:22:51 -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=1617970995; x=1649506995; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=mZ+wqac0dNQBf14VBAdxbL798fGUkArSIFgASuf6VRY=; b=QsRXRpg9uvrx1sfaBXp+nC3GGZVFIC/irnx45NSdO/WPZuT3CC/bCKhS 7+DOdwDyw5DBaBUqPoZ98TJ9g/lCkOfrajLh+HEULwphP9K/BUigYOiSv QZH2oTUArLBVrJvLuYxFzNBvfGGiczjkfGe8gnAWJbU1vparNxxrUl0LD yhQtqKQFHFZuz/BxSz+yyU2/ubfJkAj0wi8X0J6sWWnc2t2wO8v0Z7fBL AV0DwIZxdZAWsgX3hBIXiQ9zs0GAA3Qff1ZIAVTmxqBnL2yyE4r9ngtPJ 3ZvcE0RlqQnVDzS4Fn3Wp1FKqX56rCXzUHUEsObJuJy6+I0ODrb1wSjzZ A==; IronPort-SDR: AMRX4yXgy/22qlDx7sQH4lsPVbTE15ofGkRpCV+jD4cADaE8T4YFRTl1mVEPI29kBmNJlF7kSL QF/QhNViOrEpHHX/gTW1s5At/CGOylaaAzVsbyiIBTOUTMtHqKou1PYuBNT7E0V1f+snDq9N+E MMyMPWJd6YqFGIuuC8TsNfkrgFKR4Cj2qGnDoi0ze2Sc+JdDo+hxqHyAHoumGZkw3gCoNvXZuU vW1W5FQngrAv3vFTNTJNn9JNY2zxdOi7uQmbB4AuJz1tmUgezknR8RoF0AWoUw63pt8RBtxItX R7M= X-IronPort-AV: E=Sophos;i="5.82,209,1613404800"; d="scan'208";a="163998942" IronPort-SDR: /E/2LP7rkzjKXIB+k3ofKT0W4W9JoQG4LujzpFt4LWXD3H8TUNFzJItq2wz0DRiC9h8riFW2AW gXbaOTelZYoy6fAdGwuqGhewKJ07BodLisEj1QJsEkqBfaewQVf4/y112UXi3t9nd3EW4FlsOA U+CRJgjGxDWkOWAuZds0v78UmOK/6TWbHINbL18lgkudQfY8JGKAvndXQjgf6xbczH9hAAQXEv +v+GnTGepgam1qNYVWfpO8W4eBDOqDr1G1ARcWYE9VFxWUNwyeKDU9CaABZ1zczEUtoC2bHSCy gsPif5ERD90c5gM3cxvr7J0C IronPort-SDR: qdIF7ZdSftHVHgHb+WRFWCfdTly7rKN5G8mTp57GYIZxCWseAn5YowaLMJvnFLkixVL6aFj7xR 50EigBcntOygt7gAaD63RkRHrXXRA2UdLbZqyWQKmqFK7h4SADromAZP2FShqXNseZPLSbyWxq B7ooVMRKWmxqtebmUkZwRhhOFPQAjWR+pnHL0vbYE9SRVZSWcobjJBfhLWYhkV/Iz0wGd6aMaK EbtzBvHK/GnBOfA+Yg1vAr6i+eLtFfibYLmtoP4cFAembTT1E6qulsLsY/roXmqGVapUM6ao6f BRE= WDCIronportException: Internal From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v2 7/8] target/riscv/pmp: Remove outdated comment Date: Fri, 9 Apr 2021 08:20:49 -0400 Message-Id: X-Mailer: git-send-email 2.31.0 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.42; envelope-from=prvs=726c96411=alistair.francis@wdc.com; helo=esa4.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=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 cd44d81eba..326d793f55 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.0 From nobody Tue Apr 30 06:25:54 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=1617971477; cv=none; d=zohomail.com; s=zohoarc; b=koEnJc0cYvh4KTVGD1ZGJkj6L69cAWMWt6qKwSXXYC5fbD+yi/NTjeOSIC3JG6Or4Xf935IR0vXygno5sAwp/sn1spDoqfr5LhEwDgNQ4aIQ4R/RlPv89S7dUDaQM3rKk8ShXhjXp4aUkEE8q0+3DNhy6ZzOyNJ6j8oxs03kSFQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1617971477; 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=WCpeIlwcx9c7hAqAiqN5jqLXbJ4P4k/V2OP2ly1IDB0=; b=EBUGFUos8xjDl7aZT8GiFYjr5rzfwJxT3NYrl6uvAyjSMb4BcHKLNLzenbt3wRF6+bIlYFHEkcbzkNufhq+ylzgdF9ME4XdMrX2C1bABv4JmAHyfBrgxjbD472hhpWNJCPrvzKGY4il+qHd/i+xk1sFdgMZ9itLAqUDOe5FyY68= 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 1617971477852896.9285634366073; Fri, 9 Apr 2021 05:31:17 -0700 (PDT) Received: from localhost ([::1]:47094 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lUqI8-0001nF-Ns for importer@patchew.org; Fri, 09 Apr 2021 08:31:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48272) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lUqAC-00014Z-Rm; Fri, 09 Apr 2021 08:23:04 -0400 Received: from esa1.hgst.iphmx.com ([68.232.141.245]:34671) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lUqAB-00019E-0n; Fri, 09 Apr 2021 08:23:04 -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; 09 Apr 2021 20:23:01 +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; 09 Apr 2021 05:02:36 -0700 Received: from unknown (HELO alistair-risc6-laptop.wdc.com) ([10.225.167.98]) by uls-op-cesaip01.wdc.com with ESMTP; 09 Apr 2021 05:23:00 -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=1617970983; x=1649506983; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=KkDjpKvdbSqWZYz4gimKn3z3IypB+PZxsPks2j19z+M=; b=FLMKfYSEjgxNHkjChurFrlg0RoB6XfuToAH/4GFKAyEIHQgBmQ897iGF RNV0rxLzciRmNp9njUJUtArFXDqCGmBP3qhoEudJPV5D089F0IYG3dLRI vRUmTXBXiDlpQnave+Jq8jD4FGLuaVuu7rcQR3SdQOuL2+fdFvCn+lgjj Tp4427oR/Bb47XYvk7I9ZOVW3M2OdRsiqkXFnt2U+ObSDFdS2gv9YRYYN iWqKhOJHYI57LbcMsZ952nB2HlPvNBVaygK+EvhsZ1cY+ofqAX3XNBqVc H3uKRoSIUirUKs2sTOD3HK0ZXBBGIpl5Xn9D1hQCAP2eIoWGYR9oUzwOh Q==; IronPort-SDR: ncPC17b466AKcz+ZGktNSVpXVsuxJ8GFgO8Sxj0VTB64z+RUM8DiWCjNP04j1LW6Tno5c+d79Z aI/XwVCC9S19MczlW0JMRNdvnzg+nn9s66kzAny2WrBBFVJnA8WVRiWvvvmqiYbSz8X9b2plCb aNETpC3Rlb+9B6mYG0tXcQk94aD5BUZ1na6fE6rRLoCrpWoJcGWhFMrxJ+Nz8PTVQ/7P6HJzyo R60QBBCfIm2GV3GmrmSGNjxeS0ptr0IRF3pen+3RQchZ9xFNJfsf0xqDLERTmj0F3mnCTocBh0 F4s= X-IronPort-AV: E=Sophos;i="5.82,209,1613404800"; d="scan'208";a="275175998" IronPort-SDR: pzePf3DuZ4MVLcfdGfrHSho59VzxcCzq/Z62xeBU/wVUI7HFHeL8L8a/TGFS0C3UmYoaC9ptPT TBHXblwBdtopbjDsx2gmX+d/6al8KPcsL48Q24Jb9LEvkO39oLSi80erjlJF2Qg8l4R+pEX+6O Ps6hhWOGxsn01XIefp/bDuwu5myjFDoB5kjRFNQwB3SLkG88NkdSPCgciKYf58gmLL1XPOKc6w 4YHn8/IfPWcfCBBmzWApHllrj7RxKak0NwTrdX7YOciZrWkVNkJnO8hdos9hBBSaF+8vnWLrSU e5oQj2AuSkFSivEdzttCbyvA IronPort-SDR: 557gYMeZ0DEp43yQ6v+cbOk3TQNl5y7VKhBFJQiPEkeWBmShyEG4/fK1ZNDon+h5Br7jPcH86T W90eaPuuQsNaR9CnXg1jp3YTm8WSYQkAW/cDmqWmp8av+kFqmP734nAnl2+8G5q8/a5RHODYdB 7B/lNgem7zk2lqsy0JEs5wIYd7RLuvT/pL7ceHNA8F+9o4QDJOxOyVX3A9vq8dDfi3mvc+wCww wBENuj8PG3WfmA1Yn0dKck/MoUhANVlCbMygbz38bEavdGhyeuyngk7MvkXPWPdlXCfeMeIL/0 M6Q= WDCIronportException: Internal From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v2 8/8] target/riscv: Add ePMP support for the Ibex CPU Date: Fri, 9 Apr 2021 08:20:58 -0400 Message-Id: <9bb6c290fe33b23bb7ff5e650661c74fbb38d90e.1617970729.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.31.0 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=726c96411=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" 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.0