From nobody Sat May 4 10:56:44 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=1616464922; cv=none; d=zohomail.com; s=zohoarc; b=KzygsF9aMMDZmkgYaWuetNbfUxju9w5vPNXW4rwfIn7ajpobgHkUCONkEvlLJ8MKuG8eO8QFI31b1r6sGL8Js+JWruBADAOBpF3xCphmTehOHcUga11UqwYQcNuG21CO3B/Sk+JELsmnnLtOk3tFjJeAAb+HyrcpfT+GGYwQ6PU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1616464922; 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=levbL/Bca4+Y/FZmFgdc5RqTZXj0ue5urydsilVHGvw=; b=bFOq3/rkUexh60O3BLob4DUiUFrp83r3v7G1okikTcmDSEQoJQeYlvHLA3P3JP0B9MoY/tliQTjabxYJI/SDZJbgB4KiCNfuKnDUCD13y93cFCQDePgS9R2HFxRrXhQ2D9uy6k8HpXGev4NeNIp4anMN6cDbY8CGjB+BfyCEbmk= 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 1616464922577794.3116318021732; Mon, 22 Mar 2021 19:02:02 -0700 (PDT) Received: from localhost ([::1]:37944 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lOWMr-0004Au-E7 for importer@patchew.org; Mon, 22 Mar 2021 22:02:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:50146) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOWKV-0002Dw-I2 for qemu-devel@nongnu.org; Mon, 22 Mar 2021 21:59:35 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:2067) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOWKR-0006u2-A9 for qemu-devel@nongnu.org; Mon, 22 Mar 2021 21:59:34 -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; 23 Mar 2021 09:59:28 +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; 22 Mar 2021 18:41:36 -0700 Received: from cn6ntbqq2.ad.shared (HELO alistair-risc6-laptop.hgst.com) ([10.86.49.5]) by uls-op-cesaip01.wdc.com with ESMTP; 22 Mar 2021 18:59:27 -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=1616464771; x=1648000771; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=5cxLdJ+6aVMG866gofXFqzW+8RWcHnphigjP9lE2nAA=; b=r3N7+pXKmQfoHQy2oc8yvBN8EztY2GdT3f/3NiPcWZndK6P5jCwOa3vA 3C1246iL4FHHOvqPu5JsWaa1ysK4AYOSsbXmJITwWqdMlsqj9bhOPvhE4 /jFSHzKWnrNDo1sI+wxFa+u9ERiiR69MNzSHEkAHNHHhU3GAA255uUVHn aWQiLm1TIshgvlsWtapUlroIdZHntQ33umjYy2oyRx1Q4EZQOJwSLPAQL CcdMm606atjBQWML6yOjxXdFfE0cA1/3Xz+9L8sJQX6byWNeI6eEA2Mv+ a/ZTZAFdDSnp3VIVWgdfTDbeKhAV7Wmfa/DuUc0LA4Fb9YC94A/Mxphzs g==; IronPort-SDR: DzEdH+CpCGgsr1wPpY0mNdylIspintX9Ou18uykS42cOoXj4OC41ZyRWPuoQjGdsFbtereZIFz lr3WTnUuVMV7Vt/rNHDf2G7eSZiP5b2o39ehlXWXVl2XIc0IvzpfvUYe4ZD6BLONssYxSiAwpy KMug/6A7xUi8Q7Jhb6bmdvJkKy32EDB0DpKZZITpA+PcaIt7+ctWek8846ui12wLqHvaJZBB0D bkV40b4BkpByG/Lng/bYgGLdJvB7V+vCS3DdI+AWzPO1QM2W+vdDT3cg1jbXS0q7uzUn5xHjnD XQs= X-IronPort-AV: E=Sophos;i="5.81,270,1610380800"; d="scan'208";a="162707623" IronPort-SDR: XGz16Adje9745tsGCnyGnJoJLWIJHjwbVxhbQj9HPOGXdpfJLV+5t655/290jkYpNnhW4dZDKY fCX72XBA0+DZmtXM85/4smv4tb8DktJm0XW7/trTrcNb2wo0MdqTGHwWznT7FXC/2jRpuKpu9n vl+A/45bG0QCzS5o2D2KJtGxyslEOzk5TM1B5Vd9WZgyJ752ehTvTyYE2JvVwsjQ+OfFBo2CxG o4+mLGkB6wWc204foLiNQladr0X+CADpirjbDNRYVrcO6iop4mmI8c8ZICLDsEH1C8hmXvw37q CBWhnrF0J4X2RF2woeq5oKEx IronPort-SDR: ml+0iKLwCImZq8PI+Fdqn/gc8f50K8Xmcbnv81sqhaCveMa2ypcuVWJMmD+1l5bhmre9L1nGaz li3R4QkXd8pDvdhFiCOuU3Q6a8PzvuCvdv1I1CndrOS+akJnhj5LNB3XPbiiQYFaAqSjtlqntq 0GccIjq31uYZldk2PemkEF4CGR4noXqaKNa355z9V/MJUkvk1opAep3BOfUzKMyDLucful7Oy0 K3/xgPhFVHeuMEOQ5h0+D06fthpAgEU5pxHUe82xHQ0wDQBmSvsdXNj5yMRHfMw7kIc7C+G+CM jxY= WDCIronportException: Internal From: Alistair Francis To: peter.maydell@linaro.org Subject: [PULL 01/16] target/riscv: fix vs() to return proper error code Date: Mon, 22 Mar 2021 21:57:41 -0400 Message-Id: <20210323015756.3168650-2-alistair.francis@wdc.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210323015756.3168650-1-alistair.francis@wdc.com> References: <20210323015756.3168650-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=709ee912d=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: Frank Chang , alistair23@gmail.com, Alistair Francis , Richard Henderson , qemu-devel@nongnu.org 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: Frank Chang vs() should return -RISCV_EXCP_ILLEGAL_INST instead of -1 if rvv feature is not enabled. If -1 is returned, exception will be raised and cs->exception_index will be set to the negative return value. The exception will then be treated as an instruction access fault instead of illegal instruction fault. Signed-off-by: Frank Chang Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis Message-id: 20210223065935.20208-1-frank.chang@sifive.com Signed-off-by: Alistair Francis --- target/riscv/csr.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/riscv/csr.c b/target/riscv/csr.c index fd2e6363f3..d2ae73e4a0 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -54,7 +54,7 @@ static int vs(CPURISCVState *env, int csrno) if (env->misa & RVV) { return 0; } - return -1; + return -RISCV_EXCP_ILLEGAL_INST; } =20 static int ctr(CPURISCVState *env, int csrno) --=20 2.30.1 From nobody Sat May 4 10:56:44 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=1616465309; cv=none; d=zohomail.com; s=zohoarc; b=nzc+t3Bvta3ai21ef74KNdXzZl5ZjV/3mzFeia4Ndu7DRMpMl14bm/x1W2XIRcMZTR0tdetGdXkGZC6RB5rGYwzAdNZy50n+UuXBoOJzr64NqjG5Z5PGuqTYZnwkNjUCY2KSqFGPCvw+2e/WjY/PMdlojTBGlxz7Mkpbo+Y0iCE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1616465309; 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=gd+wRwJBG0LQWvAxMWb3UqCZs39n16GJv/LYdKdAcBQ=; b=e8RA27FCz3tsDsIik3fvKljcnJ6KeYjTh5NPUTm8U/z0jSYi2ZN0LpwPrke40SdHEHnaXpuU7kxr5P2bX2zlbkCkw3g5684Q/UIhfv7CK3QW1+ZlfaLtkPgLMBWrsBQ8p1n/48mxVBFRwvhcYbWUY72VNBK2hcw7It8htd72iFA= 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 1616465309061257.3082182221468; Mon, 22 Mar 2021 19:08:29 -0700 (PDT) Received: from localhost ([::1]:56012 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lOWT6-0003Uk-0H for importer@patchew.org; Mon, 22 Mar 2021 22:08:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:50188) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOWKW-0002FM-Fd for qemu-devel@nongnu.org; Mon, 22 Mar 2021 21:59:36 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:2072) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOWKT-0006vy-0f for qemu-devel@nongnu.org; Mon, 22 Mar 2021 21:59:36 -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; 23 Mar 2021 09:59:29 +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; 22 Mar 2021 18:41:37 -0700 Received: from cn6ntbqq2.ad.shared (HELO alistair-risc6-laptop.hgst.com) ([10.86.49.5]) by uls-op-cesaip01.wdc.com with ESMTP; 22 Mar 2021 18:59: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=1616464773; x=1648000773; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=6wsHhJwVSWA7s3cp00lrXQHs9DoK8QKhbrZwSkAGJQM=; b=i9PBKhSP6WIGC3Tldza7RfjUNfpoHNSCRky50iXOzlD2vH8GDU0SnuJq hdnbuOV3RG9ryAQr4VeIaLq7kvsl5I5wOFDfptmFfJ4dPCP9pFsUAtM1G Xjikn59QcRfEWcSd0HU0SOXKRS9Dhftf+lo4dwM9U0o5tpt3wTr+olNf2 PZRjBoTgsVetGe6vXXWe+4XcYZ/vQ/hthQTB3N4ERvmKNH7HsXSqAv6OU S4Ys1B7VpmWyoOPLawr4Zc0hqmdqvGBsSkZSh6T9NeHAuzdI+Y+STGWdg W31z0p0OGoc9WlEmagFxnf0qOOaO6SKjUVQo32CmW2itvfRN+1MQQ51Ck w==; IronPort-SDR: Hv7rPF8yMB1jAJyVa2HNLCFww+CFmp76ktmb21B9vc23kLFNbxSdHvzn32lx35o9cjEVBAxnTf acoOsfivf6K9FoddR8Z+n7eSJAGXuaGin/h6c4jAC8Y3v+i8iNa6u47Rh0o5icoStfZ5yG10B4 hM05r2JH+0KYfiaPtj4nuMZXQcHOA4qdu+mdeQg625OqzugpEhTTjA9hXekOB/tWt/oCJo8zjq 2IV3sdjiVcHfqOTg8bQ785ghsHX9CgT+ndIF61b2CuP6UJkvNoM1LFUwMFkBczn/IE8pPs/jxA K+Y= X-IronPort-AV: E=Sophos;i="5.81,270,1610380800"; d="scan'208";a="162707625" IronPort-SDR: qC2+KbuK4h7TS3pgsbPOhJUFXhSxkxemZ1r62J49EjgiKyNuf4z7nsYXVdHLrcb12Bp6kOUH58 Xk6wpqH+onWL5027a4vTIbot8fIPvoV4ajszKyfXo17P4W3di/Ypc55c1PFoR6rsemvyNPIxlt yah1ukrHfKSYFDXCXAogZnPr4sSflKr6n2r8E/pS2OoJhJiF6/0kxcCr0ihUPdpwvH2WRoqVSI TOdn35iXeyHOey/TUDQi7ZZO1FFTxD/FeZs+ErNBzQelHWd6nPdqjsmgf6t4pGqJY1E6Z59G/c 1jPIHgRlxtsAYWCUCtT8A1dD IronPort-SDR: 2AAckqq9A6wnUnP++n1kbHVNYdoqRDG1H6ZLP8mfCfcp7OvPt+KGLTQ0MQ6hh6JUGhKkqQfH+f Dhx0A95MinDXjSN3HIbnhKlQib6EzoSQ8I7UhEOO3SWe4lBoF/ixbY9ZpjEhFpkzLNiCcm2Tep /+NXPIiJia8sspD4Dd+UsyDYunLcUiqwdY7yS3S6ri+MbIOYDscTtZRMJdavtPEO4n0U6TiPxs 4Cv+X7e4eqYox4HnmQdSOOBVmfhAbfdAGXzg9JaYOF0sf5Ye+ADr3yy1q4TeB9+Zz3ShzU2I0A 0Uc= WDCIronportException: Internal From: Alistair Francis To: peter.maydell@linaro.org Subject: [PULL 02/16] hw/char: disable ibex uart receive if the buffer is full Date: Mon, 22 Mar 2021 21:57:42 -0400 Message-Id: <20210323015756.3168650-3-alistair.francis@wdc.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210323015756.3168650-1-alistair.francis@wdc.com> References: <20210323015756.3168650-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=709ee912d=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: alistair23@gmail.com, Alistair Francis , qemu-devel@nongnu.org, Alexander Wagner 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: Alexander Wagner Not disabling the UART leads to QEMU overwriting the UART receive buffer wi= th the newest received byte. The rx_level variable is added to allow the use of the existing OpenTitan driver libraries. Signed-off-by: Alexander Wagner Reviewed-by: Alistair Francis Message-id: 20210309152130.13038-1-alexander.wagner@ulal.de Signed-off-by: Alistair Francis --- include/hw/char/ibex_uart.h | 4 ++++ hw/char/ibex_uart.c | 23 ++++++++++++++++++----- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/include/hw/char/ibex_uart.h b/include/hw/char/ibex_uart.h index 03d19e3f6f..546f958eb8 100644 --- a/include/hw/char/ibex_uart.h +++ b/include/hw/char/ibex_uart.h @@ -62,6 +62,8 @@ REG32(FIFO_CTRL, 0x1c) FIELD(FIFO_CTRL, RXILVL, 2, 3) FIELD(FIFO_CTRL, TXILVL, 5, 2) REG32(FIFO_STATUS, 0x20) + FIELD(FIFO_STATUS, TXLVL, 0, 5) + FIELD(FIFO_STATUS, RXLVL, 16, 5) REG32(OVRD, 0x24) REG32(VAL, 0x28) REG32(TIMEOUT_CTRL, 0x2c) @@ -82,6 +84,8 @@ struct IbexUartState { uint8_t tx_fifo[IBEX_UART_TX_FIFO_SIZE]; uint32_t tx_level; =20 + uint32_t rx_level; + QEMUTimer *fifo_trigger_handle; uint64_t char_tx_time; =20 diff --git a/hw/char/ibex_uart.c b/hw/char/ibex_uart.c index edcaa30ade..73b8f2e45b 100644 --- a/hw/char/ibex_uart.c +++ b/hw/char/ibex_uart.c @@ -66,7 +66,8 @@ static int ibex_uart_can_receive(void *opaque) { IbexUartState *s =3D opaque; =20 - if (s->uart_ctrl & R_CTRL_RX_ENABLE_MASK) { + if ((s->uart_ctrl & R_CTRL_RX_ENABLE_MASK) + && !(s->uart_status & R_STATUS_RXFULL_MASK)) { return 1; } =20 @@ -83,6 +84,11 @@ static void ibex_uart_receive(void *opaque, const uint8_= t *buf, int size) =20 s->uart_status &=3D ~R_STATUS_RXIDLE_MASK; s->uart_status &=3D ~R_STATUS_RXEMPTY_MASK; + /* The RXFULL is set after receiving a single byte + * as the FIFO buffers are not yet implemented. + */ + s->uart_status |=3D R_STATUS_RXFULL_MASK; + s->rx_level +=3D 1; =20 if (size > rx_fifo_level) { s->uart_intr_state |=3D R_INTR_STATE_RX_WATERMARK_MASK; @@ -199,6 +205,7 @@ static void ibex_uart_reset(DeviceState *dev) s->uart_timeout_ctrl =3D 0x00000000; =20 s->tx_level =3D 0; + s->rx_level =3D 0; =20 s->char_tx_time =3D (NANOSECONDS_PER_SECOND / 230400) * 10; =20 @@ -243,11 +250,15 @@ static uint64_t ibex_uart_read(void *opaque, hwaddr a= ddr, =20 case R_RDATA: retvalue =3D s->uart_rdata; - if (s->uart_ctrl & R_CTRL_RX_ENABLE_MASK) { + if ((s->uart_ctrl & R_CTRL_RX_ENABLE_MASK) && (s->rx_level > 0)) { qemu_chr_fe_accept_input(&s->chr); =20 - s->uart_status |=3D R_STATUS_RXIDLE_MASK; - s->uart_status |=3D R_STATUS_RXEMPTY_MASK; + s->rx_level -=3D 1; + s->uart_status &=3D ~R_STATUS_RXFULL_MASK; + if (s->rx_level =3D=3D 0) { + s->uart_status |=3D R_STATUS_RXIDLE_MASK; + s->uart_status |=3D R_STATUS_RXEMPTY_MASK; + } } break; case R_WDATA: @@ -261,7 +272,8 @@ static uint64_t ibex_uart_read(void *opaque, hwaddr add= r, case R_FIFO_STATUS: retvalue =3D s->uart_fifo_status; =20 - retvalue |=3D s->tx_level & 0x1F; + retvalue |=3D (s->rx_level & 0x1F) << R_FIFO_STATUS_RXLVL_SHIFT; + retvalue |=3D (s->tx_level & 0x1F) << R_FIFO_STATUS_TXLVL_SHIFT; =20 qemu_log_mask(LOG_UNIMP, "%s: RX fifos are not supported\n", __func__); @@ -364,6 +376,7 @@ static void ibex_uart_write(void *opaque, hwaddr addr, s->uart_fifo_ctrl =3D value; =20 if (value & R_FIFO_CTRL_RXRST_MASK) { + s->rx_level =3D 0; qemu_log_mask(LOG_UNIMP, "%s: RX fifos are not supported\n", __func__); } --=20 2.30.1 From nobody Sat May 4 10:56:44 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=1616465463; cv=none; d=zohomail.com; s=zohoarc; b=Enn9ZrnobAXNv/GITkiAR3KTI8xPNolgLMB3iOtAzJtrqF/O+bTk1+Tts2WaDRtDRSjbqW7XJ8yHYPjYMP3TqnIkiT+vChBfoKr05Vv48PxOe27rGwocayHq3Chnx9fbGAFJizTQN1tgMmBSRAAJg/g1m77jaMYWViB96ONr6kE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1616465463; 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=yjz1kXFZdyLKp+Wh9r+gxDU2Eeg6WY5KlDhtHJExzds=; b=nU8n1JTo7+88wwA3zdoeoPV6KwY4/Dlmy8PhwooSu6LL8TpIxDWJdEQphhv7glWeBJQcMoM/8Tslp+55THiZKRgo8FQ/sGSdxw/3HkdNsTbsXl7YXs3Q9kDREPG4UBw/7gjmPmzrjVCa4HHH8LPmlF4im7KkjcDQwcgaf6P9Aqc= 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 1616465463932931.867052517224; Mon, 22 Mar 2021 19:11:03 -0700 (PDT) Received: from localhost ([::1]:33440 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lOWVa-0005xg-P0 for importer@patchew.org; Mon, 22 Mar 2021 22:11:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:50210) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOWKX-0002GJ-Bx for qemu-devel@nongnu.org; Mon, 22 Mar 2021 21:59:37 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:2067) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOWKV-0006u2-5U for qemu-devel@nongnu.org; Mon, 22 Mar 2021 21:59:37 -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; 23 Mar 2021 09:59:30 +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; 22 Mar 2021 18:41:38 -0700 Received: from cn6ntbqq2.ad.shared (HELO alistair-risc6-laptop.hgst.com) ([10.86.49.5]) by uls-op-cesaip01.wdc.com with ESMTP; 22 Mar 2021 18:59:30 -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=1616464775; x=1648000775; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=GVsjdmcVX62JFZyhKUVU/2XYRym5KuPEP4kwrlGAMdA=; b=iQf+jwY1MTNR3plKRONW/aV91QF7m+gX6F64N6mMKFJZ+toaKc0m6JXG Hc0moaCU73IaTlyAn0LmNUd1qZ1ee4tJvNr48zyh6Ti10BMC7zD2sh1Z6 INkv4XkgWH6CKPWB8+wQcA8KnOt695RXnP+v+M/EQyuFTMHilaz3fz3Pv s7RqSe4qTjXlOs2oJOUhSv/FmDcrqwwxpR8TAcZxLREnjsunDqE7+pJnt MuBOfEO20rP75ziZ+Qw0qPKze4XuaVokYC3gC2BoSSwmWGU9BCKmVlTb3 5pAi1sCYzLNykKVOFbQa8gRi185desZmrP6vBqE6UWThrFxca8SBAltHe A==; IronPort-SDR: qujE89TBRha7m5bUBUB2FCwT5z69itvU7CmcnOYXVixYLe9RhrkrqAiFJUI/PNEtF5//PnuPtT X4XsLAs2CRFlQzXMR5NgYq68QtREV33FhbmY+ycd/kNNx5ZWzp6QyYjCH3PKonUnrwISmeoKSl cY5Cf3006X6UtH3YeEJ4NpGPgoMnX2RWjM7p1SjQVv+VuJXJrQuySlxaSJY1t8k3HG3uG3t+It b++gNvlpSOLvQ4Woba+/B5W2+9gs2lHE9hxdQcozExXTjCS6wEXwSdwmgVIkXbE26R1EYm1HQG CXo= X-IronPort-AV: E=Sophos;i="5.81,270,1610380800"; d="scan'208";a="162707629" IronPort-SDR: 3mAS8YSK7A3k3qx8vnAJx1wCr/5tZ4LyBmLOm2KjiDPTo44V04BN6RAixTP0pz65hPguIrgclv uSG5IrIocY6a4Kuw3Ozdzi4YaWZ4aJQCeYFbEP9P+ELl0G9BmnrmT2cxHYlToS2wmmi2LbycjC OCJDLZyUX4emv4NctJcR1uwan0oSm8TTT/TNNQvvqkLBBZUSLhj37L+AOElTJbTBedhdyJAQPX 2BcLZ/iiQINwDnzawBvJHy3Ide63b3cSGRZvwkNEb45PiP4xekRePXPv3WMnofVIXaPYiKAxQe aMt2i7yA5DsEcg3TGRql3MBm IronPort-SDR: SCd02aVYPkXgT6JOI3kP96p9YW7gl/atbfDGjn4jDxUvaSCQGncmUI1k23pPkAoP5legi964Lf uK4xFcxkBA6kzfMEmOQps2sWLydCXz6P7+qk7BuKpIDqA1BgEFVYZlt3BMHm84J0SbJU4fSLbh TicAEsqL59SfPvY1dH+LdKWBXycVPq4uun26SC9M+cVAUiV+/MngbXZJRA66pBSRTSl5kLBJRm S740yIZbM/aAwToWaULDErNxXlEfk+9fo/zFtOjYncibVYkXMe+dDparsi0PiU1tyvmD3ohMwh Weo= WDCIronportException: Internal From: Alistair Francis To: peter.maydell@linaro.org Subject: [PULL 03/16] target/riscv: propagate PMP permission to TLB page Date: Mon, 22 Mar 2021 21:57:43 -0400 Message-Id: <20210323015756.3168650-4-alistair.francis@wdc.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210323015756.3168650-1-alistair.francis@wdc.com> References: <20210323015756.3168650-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=709ee912d=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: alistair23@gmail.com, Alistair Francis , qemu-devel@nongnu.org, Jim Shu 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: Jim Shu Currently, PMP permission checking of TLB page is bypassed if TLB hits Fix it by propagating PMP permission to TLB page permission. PMP permission checking also use MMU-style API to change TLB permission and size. Signed-off-by: Jim Shu Reviewed-by: Alistair Francis Message-id: 1613916082-19528-2-git-send-email-cwshu@andestech.com Signed-off-by: Alistair Francis --- target/riscv/pmp.h | 4 +- target/riscv/cpu_helper.c | 84 +++++++++++++++++++++++++++++---------- target/riscv/pmp.c | 80 +++++++++++++++++++++++++++---------- 3 files changed, 125 insertions(+), 43 deletions(-) diff --git a/target/riscv/pmp.h b/target/riscv/pmp.h index c8d5ef4a69..b82a30f0d5 100644 --- a/target/riscv/pmp.h +++ b/target/riscv/pmp.h @@ -59,11 +59,13 @@ void pmpaddr_csr_write(CPURISCVState *env, uint32_t add= r_index, target_ulong val); target_ulong pmpaddr_csr_read(CPURISCVState *env, uint32_t addr_index); bool pmp_hart_has_privs(CPURISCVState *env, target_ulong addr, - target_ulong size, pmp_priv_t priv, target_ulong mode); + target_ulong size, pmp_priv_t privs, pmp_priv_t *allowed_privs, + target_ulong mode); bool pmp_is_range_in_tlb(CPURISCVState *env, hwaddr tlb_sa, target_ulong *tlb_size); void pmp_update_rule_addr(CPURISCVState *env, uint32_t pmp_index); 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 #endif diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index 83a6bcfad0..fa385594df 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -280,6 +280,49 @@ void riscv_cpu_set_mode(CPURISCVState *env, target_ulo= ng newpriv) env->load_res =3D -1; } =20 +/* + * get_physical_address_pmp - check PMP permission for this physical addre= ss + * + * Match the PMP region and check permission for this physical address and= it's + * TLB page. Returns 0 if the permission checking was successful + * + * @env: CPURISCVState + * @prot: The returned protection attributes + * @tlb_size: TLB page size containing addr. It could be modified after PMP + * permission checking. NULL if not set TLB page for addr. + * @addr: The physical address to be checked permission + * @access_type: The type of MMU access + * @mode: Indicates current privilege level. + */ +static int get_physical_address_pmp(CPURISCVState *env, int *prot, + target_ulong *tlb_size, hwaddr addr, + int size, MMUAccessType access_type, + int mode) +{ + pmp_priv_t pmp_priv; + target_ulong tlb_size_pmp =3D 0; + + if (!riscv_feature(env, RISCV_FEATURE_PMP)) { + *prot =3D PAGE_READ | PAGE_WRITE | PAGE_EXEC; + return TRANSLATE_SUCCESS; + } + + if (!pmp_hart_has_privs(env, addr, size, 1 << access_type, &pmp_priv, + mode)) { + *prot =3D 0; + return TRANSLATE_PMP_FAIL; + } + + *prot =3D pmp_priv_to_page_prot(pmp_priv); + if (tlb_size !=3D NULL) { + if (pmp_is_range_in_tlb(env, addr & ~(*tlb_size - 1), &tlb_size_pm= p)) { + *tlb_size =3D tlb_size_pmp; + } + } + + return TRANSLATE_SUCCESS; +} + /* get_physical_address - get the physical address for this virtual address * * Do a page table walk to obtain the physical address corresponding to a @@ -442,9 +485,11 @@ restart: pte_addr =3D base + idx * ptesize; } =20 - if (riscv_feature(env, RISCV_FEATURE_PMP) && - !pmp_hart_has_privs(env, pte_addr, sizeof(target_ulong), - 1 << MMU_DATA_LOAD, PRV_S)) { + int pmp_prot; + int pmp_ret =3D get_physical_address_pmp(env, &pmp_prot, NULL, pte= _addr, + sizeof(target_ulong), + MMU_DATA_LOAD, PRV_S); + if (pmp_ret !=3D TRANSLATE_SUCCESS) { return TRANSLATE_PMP_FAIL; } =20 @@ -682,13 +727,14 @@ bool riscv_cpu_tlb_fill(CPUState *cs, vaddr address, = int size, #ifndef CONFIG_USER_ONLY vaddr im_address; hwaddr pa =3D 0; - int prot, prot2; + int prot, prot2, prot_pmp; bool pmp_violation =3D false; bool first_stage_error =3D true; bool two_stage_lookup =3D false; int ret =3D TRANSLATE_FAIL; int mode =3D mmu_idx; - target_ulong tlb_size =3D 0; + /* default TLB page size */ + target_ulong tlb_size =3D TARGET_PAGE_SIZE; =20 env->guest_phys_fault_addr =3D 0; =20 @@ -745,10 +791,10 @@ bool riscv_cpu_tlb_fill(CPUState *cs, vaddr address, = int size, =20 prot &=3D prot2; =20 - if (riscv_feature(env, RISCV_FEATURE_PMP) && - (ret =3D=3D TRANSLATE_SUCCESS) && - !pmp_hart_has_privs(env, pa, size, 1 << access_type, mode)= ) { - ret =3D TRANSLATE_PMP_FAIL; + if (ret =3D=3D TRANSLATE_SUCCESS) { + ret =3D get_physical_address_pmp(env, &prot_pmp, &tlb_size= , pa, + size, access_type, mode); + prot &=3D prot_pmp; } =20 if (ret !=3D TRANSLATE_SUCCESS) { @@ -771,25 +817,21 @@ bool riscv_cpu_tlb_fill(CPUState *cs, vaddr address, = int size, "%s address=3D%" VADDR_PRIx " ret %d physical " TARGET_FMT_plx " prot %d\n", __func__, address, ret, pa, prot); - } =20 - if (riscv_feature(env, RISCV_FEATURE_PMP) && - (ret =3D=3D TRANSLATE_SUCCESS) && - !pmp_hart_has_privs(env, pa, size, 1 << access_type, mode)) { - ret =3D TRANSLATE_PMP_FAIL; + if (ret =3D=3D TRANSLATE_SUCCESS) { + ret =3D get_physical_address_pmp(env, &prot_pmp, &tlb_size, pa, + size, access_type, mode); + prot &=3D prot_pmp; + } } + if (ret =3D=3D TRANSLATE_PMP_FAIL) { pmp_violation =3D true; } =20 if (ret =3D=3D TRANSLATE_SUCCESS) { - if (pmp_is_range_in_tlb(env, pa & TARGET_PAGE_MASK, &tlb_size)) { - tlb_set_page(cs, address & ~(tlb_size - 1), pa & ~(tlb_size - = 1), - prot, mmu_idx, tlb_size); - } else { - tlb_set_page(cs, address & TARGET_PAGE_MASK, pa & TARGET_PAGE_= MASK, - prot, mmu_idx, TARGET_PAGE_SIZE); - } + tlb_set_page(cs, address & ~(tlb_size - 1), pa & ~(tlb_size - 1), + prot, mmu_idx, tlb_size); return true; } else if (probe) { return false; diff --git a/target/riscv/pmp.c b/target/riscv/pmp.c index 80d0334e1b..ebd874cde3 100644 --- a/target/riscv/pmp.c +++ b/target/riscv/pmp.c @@ -217,6 +217,35 @@ static int pmp_is_in_range(CPURISCVState *env, int pmp= _index, target_ulong addr) return result; } =20 +/* + * Check if the address has required RWX privs when no PMP entry is matche= d. + */ +static bool pmp_hart_has_privs_default(CPURISCVState *env, target_ulong ad= dr, + target_ulong size, pmp_priv_t privs, pmp_priv_t *allowed_privs, + target_ulong mode) +{ + bool 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 + * or no PMP entry matches an M-Mode access, the access succeeds. + */ + ret =3D true; + *allowed_privs =3D PMP_READ | PMP_WRITE | PMP_EXEC; + } else { + /* + * Other modes are not allowed to succeed if they don't * match a = rule, + * but there are rules. We've checked for no rule earlier in this + * function. + */ + ret =3D false; + *allowed_privs =3D 0; + } + + return ret; +} + =20 /* * Public Interface @@ -226,18 +255,19 @@ static int pmp_is_in_range(CPURISCVState *env, int pm= p_index, target_ulong addr) * Check if the address has required RWX privs to complete desired operati= on */ bool pmp_hart_has_privs(CPURISCVState *env, target_ulong addr, - target_ulong size, pmp_priv_t privs, target_ulong mode) + target_ulong size, pmp_priv_t privs, pmp_priv_t *allowed_privs, + target_ulong mode) { int i =3D 0; int ret =3D -1; int pmp_size =3D 0; target_ulong s =3D 0; target_ulong e =3D 0; - pmp_priv_t allowed_privs =3D 0; =20 /* Short cut if no rules */ if (0 =3D=3D pmp_get_num_rules(env)) { - return (env->priv =3D=3D PRV_M) ? true : false; + return pmp_hart_has_privs_default(env, addr, size, privs, + allowed_privs, mode); } =20 if (size =3D=3D 0) { @@ -277,37 +307,25 @@ bool pmp_hart_has_privs(CPURISCVState *env, target_ul= ong addr, * check */ if (((s + e) =3D=3D 2) && (PMP_AMATCH_OFF !=3D a_field)) { - allowed_privs =3D PMP_READ | PMP_WRITE | PMP_EXEC; + *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; + *allowed_privs &=3D env->pmp_state.pmp[i].cfg_reg; } =20 - if ((privs & allowed_privs) =3D=3D privs) { - ret =3D 1; - break; - } else { - ret =3D 0; - break; - } + ret =3D ((privs & *allowed_privs) =3D=3D privs); + break; } } =20 /* No rule matched */ if (ret =3D=3D -1) { - if (mode =3D=3D PRV_M) { - ret =3D 1; /* Privileged spec v1.10 states if no PMP entry mat= ches an - * M-Mode access, the access succeeds */ - } else { - ret =3D 0; /* Other modes are not allowed to succeed if they d= on't - * match a rule, but there are rules. We've checked = for - * no rule earlier in this function. */ - } + return pmp_hart_has_privs_default(env, addr, size, privs, + allowed_privs, mode); } =20 return ret =3D=3D 1 ? true : false; } =20 - /* * Handle a write to a pmpcfg CSP */ @@ -442,3 +460,23 @@ bool pmp_is_range_in_tlb(CPURISCVState *env, hwaddr tl= b_sa, =20 return false; } + +/* + * Convert PMP privilege to TLB page privilege. + */ +int pmp_priv_to_page_prot(pmp_priv_t pmp_priv) +{ + int prot =3D 0; + + if (pmp_priv & PMP_READ) { + prot |=3D PAGE_READ; + } + if (pmp_priv & PMP_WRITE) { + prot |=3D PAGE_WRITE; + } + if (pmp_priv & PMP_EXEC) { + prot |=3D PAGE_EXEC; + } + + return prot; +} --=20 2.30.1 From nobody Sat May 4 10:56:44 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=1616465075; cv=none; d=zohomail.com; s=zohoarc; b=W5pRBSQInkDDPbRKkSvR5kkNtJl0NnyT6jL/u+Byy+BWXUB5DNH7uQMQf/TO8maqIHf4aNvarA5XCVfee7MTMgLQUl+GHRxbBvYMP+PdS6tWS68gO9cD8R48qNS+eIydrW+bl8t7jlYaunqrE8/lMjvHyYvhWF4orCzRuwxiQSk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1616465075; 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=9Nw84SloyK55FCuoo3te+BHyPzG6VXYbedMUJYLw/gI=; b=RHDBc36xCQRjYui1pV2H931VwauArLhBN+BVN0J8aXe6bV3pYpp5Ki/TXqORRpnc6aX91/ksRG28F7L174PLkHlsavp8Ws4nQIG2q0imsBC87BDKsIjt5cVikwyNWas9cNXB+u0nUpC9z5snsvZhAxrgWA/vs7STZSOulvkK8KY= 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 1616465075301931.4083140914101; Mon, 22 Mar 2021 19:04:35 -0700 (PDT) Received: from localhost ([::1]:45106 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lOWPK-0007FI-09 for importer@patchew.org; Mon, 22 Mar 2021 22:04:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:50242) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOWKY-0002JH-Py for qemu-devel@nongnu.org; Mon, 22 Mar 2021 21:59:38 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:2065) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOWKV-0006tH-Le for qemu-devel@nongnu.org; Mon, 22 Mar 2021 21:59:38 -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; 23 Mar 2021 09:59:31 +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; 22 Mar 2021 18:41:39 -0700 Received: from cn6ntbqq2.ad.shared (HELO alistair-risc6-laptop.hgst.com) ([10.86.49.5]) by uls-op-cesaip01.wdc.com with ESMTP; 22 Mar 2021 18:59:31 -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=1616464775; x=1648000775; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=e0wPF4NnKArSDskGO9hzTzDQBAc+lSTe2SoOBIijAA0=; b=R2W9NqbrXyYvDm2kP4lDnPXqEsAv8Xiq3JjRGGcinWiHVlxMsyCaCW6P 11hWHVkeCLUG6jVJF6L6JWpEBGz8OrGNjUr0A2L1QDMeWDzExv6Yfh3NM sN06unxHhvJtpo29BBDxEWfGUhK2GHPECCzk+y3ixUrTzu7SMYaZ4v3Eg COJGZmWWWVwBYOxH8KmARbY9fB3n1mmav8j/lVYumELXVk8hDHXNgFc7J 5BTU+8lY57mb949hNF7QCstaxBEowAv4pK1Bnb4QO/zd9bgeI3t8QEmPd lsuh1bi0y+myZS+KlYR4TMAD+I2XRtiWTzqktjhD8WH46QQMSFFk+MyFZ Q==; IronPort-SDR: u7MdztvPr9gOqc4HxCsHASM1FtysyC3WD8k4CFd/9AfTFkwoW/3qV1giDH0pCu8gp+WRvonFEX IQz3DsixC1eNLNGGKqFZx4CRbToXHRsHv74TxTGtXBF4E5a9xXxa0aHOSxeIlc6Cyi1vV3Gc5J 8MIA6PhevK1PZnxBU/+Z1pevZ1YJPANwaUX4hP2p5hcsPaczWq9oe0WbYAjhbwTXTW0D3glO66 6ca1yAd/Z5YW021h/qE8XoFONholRetE5Xk6+tVJ0uaCld4MrMMGo43H1tBCmYy58IHdngqYZK WiI= X-IronPort-AV: E=Sophos;i="5.81,270,1610380800"; d="scan'208";a="162707631" IronPort-SDR: rJLdzMbJJE+Wf4fuIRg+dyv98PA6hfy6bgbLQRkepqz6KyJr1imtqt9pky71Pxy4aU45lLsTT6 9Oxn7UAmJeGr2P5hIarIjcQH7XdYod18HlU6ojZOVhHIldmVZ0Ks4esI5dX9f8+w/vrDVErOU/ FL2ScA2goCbUFBXgpk66F3D5E9jI69h0VbVzSaRFXq3hU3ufQtQd5nSdbRgZUHkkv8a0OvEV9R YxDdpc3aljd6dU1SEVygGnJJed/RSFcTkmuCn/A8iicGPLKPLRQc4DfMjr9S1QbgWyWTbr/Rdb kDHlCbvMcPc8jTPOr9XGTVOV IronPort-SDR: 1LK2OHYgUu2kqKd9y8p8McKjtzq+/3peqbumZhoKgq2ar75n5c/+AUqTvt1vv73aM/mJ0MWSyx YXSUz1YZCFF3qdppkoT4XT40kKxFQ2PZlDsF0CCiyBfzTWInXBHqeGcWRsA/gYsLkZRzfH5WYf QYLXzlcAlUJmvUsQ37ae18OUKgOEvMVOuYtUwkxvdbggpzVV3//Sr2XaYfAg4JKvOlL+B5OemM qtBjz3cQ0AO6vMv+tDZ84mG+ECwFt0FfJt+Ywso0xcn07E0ECSDQeNZZ3vbIwZgYuzLm574MYO IkQ= WDCIronportException: Internal From: Alistair Francis To: peter.maydell@linaro.org Subject: [PULL 04/16] target/riscv: add log of PMP permission checking Date: Mon, 22 Mar 2021 21:57:44 -0400 Message-Id: <20210323015756.3168650-5-alistair.francis@wdc.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210323015756.3168650-1-alistair.francis@wdc.com> References: <20210323015756.3168650-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=709ee912d=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: alistair23@gmail.com, Alistair Francis , qemu-devel@nongnu.org, Jim Shu 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: Jim Shu Like MMU translation, add qemu log of PMP permission checking for debugging. Signed-off-by: Jim Shu Reviewed-by: Alistair Francis Message-id: 1613916082-19528-3-git-send-email-cwshu@andestech.com Signed-off-by: Alistair Francis --- target/riscv/cpu_helper.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index fa385594df..0515f9aec8 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -794,6 +794,12 @@ bool riscv_cpu_tlb_fill(CPUState *cs, vaddr address, i= nt size, if (ret =3D=3D TRANSLATE_SUCCESS) { ret =3D get_physical_address_pmp(env, &prot_pmp, &tlb_size= , pa, size, access_type, mode); + + qemu_log_mask(CPU_LOG_MMU, + "%s PMP address=3D" TARGET_FMT_plx " ret %d = prot" + " %d tlb_size " TARGET_FMT_lu "\n", + __func__, pa, ret, prot_pmp, tlb_size); + prot &=3D prot_pmp; } =20 @@ -821,6 +827,12 @@ bool riscv_cpu_tlb_fill(CPUState *cs, vaddr address, i= nt size, if (ret =3D=3D TRANSLATE_SUCCESS) { ret =3D get_physical_address_pmp(env, &prot_pmp, &tlb_size, pa, size, access_type, mode); + + qemu_log_mask(CPU_LOG_MMU, + "%s PMP address=3D" TARGET_FMT_plx " ret %d prot" + " %d tlb_size " TARGET_FMT_lu "\n", + __func__, pa, ret, prot_pmp, tlb_size); + prot &=3D prot_pmp; } } --=20 2.30.1 From nobody Sat May 4 10:56:44 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=1616464926; cv=none; d=zohomail.com; s=zohoarc; b=h0pOj7p30WGh3/ga+zOCWTZXIvPy1fLUn9ddimhYLcCpd9M/Ixx1P3JwpsZ9GFeQnDNRfD2lYbD5Jk6FVblOpm2iOEdbcQUIkVsNgGPugUkJ489qxlHA5x1c6RjMe6WWdD1aT/6/COSeE4JG4HNXcPF+4jM90SOy8QsxnTfREqA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1616464926; 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=Xb6zUpP2SWUvPzCWTAgRGbsEMgejQbM0d6NvzrVA6/g=; b=Wm5lGkvuf2ObCCkCw04pN81qch/1zW36tZpkxJfwoMfB8gI/MfnYX/cu8RAV2AvzEzBGEaOCdmcBTzMhWe3mm8V5Yk+2EhNd+OHDHcCUtxm7IGmh1YpLrlcwLLP0B92YKgtEfuLjBfb0Yp8oOINuWhYqC+sIiW5+E+W9CekgnHM= 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 1616464926353232.37469128223847; Mon, 22 Mar 2021 19:02:06 -0700 (PDT) Received: from localhost ([::1]:38224 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lOWMv-0004IA-86 for importer@patchew.org; Mon, 22 Mar 2021 22:02:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:50234) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOWKY-0002Iq-J2 for qemu-devel@nongnu.org; Mon, 22 Mar 2021 21:59:38 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:2072) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOWKW-0006vy-Px for qemu-devel@nongnu.org; Mon, 22 Mar 2021 21:59:38 -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; 23 Mar 2021 09:59:32 +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; 22 Mar 2021 18:41:40 -0700 Received: from cn6ntbqq2.ad.shared (HELO alistair-risc6-laptop.hgst.com) ([10.86.49.5]) by uls-op-cesaip01.wdc.com with ESMTP; 22 Mar 2021 18:59:32 -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=1616464776; x=1648000776; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=M3ja62j7MMfTX7V+NcJceB2jsnYTLHyZQabnKhkSZ8U=; b=jr9m8qbn5SDggjRo3WRlRRjPpg9rfRrWZu+71PaWoTdoPkpBDnzCp/Oq amhbZUab0JzP/xG+/X2LBLmL+Xcky5jdeqaKQ0QsabJ9fH4dQpCu3ByQ9 ZNkzF5CWjXHGp/1H/adyv4/3A3Je6szB1joXAkmZKZr/Wqy0X0O5iIP7r goXyoPTKk/c2Pn0IRR1pW1WoEY1tT6L9vvvUpl2NkCIxtNGMo78pTj9nF YXwTOa2Y/yJ/kbekp2Nck2EiwCLnwUgH3y3+EK9DKKwv45kcQYIT2Jg/r zpzCVPpgpsCczbGfiEKdGMqspiPp1yQ/XRLaKZlFwvfEl/4E0rd631Ljk g==; IronPort-SDR: 5SrcbcyGahmRebwPv2CZmm5M4mVfcm6So/7Rcg3LYbO81AXv0NP3MzPPxLUjeDWNZvtnTz4ETS 0fLASRoeIdr8RqQEZ7rVRJ3ZD+5L71PxSm6PoGHbQR5Yy0ziTBlv3GUA1aM2ffJRzRttuv5IT0 62yFrUSJE8X/uC4TmLHGrJV/1xH5rxZTa3wAf8+Kk6rJYNs51HX5cNRjvmAFh1UwHJPzw6Bbpt tHOkHgTAVM3C3Yj1gIX2aHhWnKE9fCafuvS8UjIa5FtqKxOy9xPH0RHtPqMVZJVpxjRuquCPAZ /YQ= X-IronPort-AV: E=Sophos;i="5.81,270,1610380800"; d="scan'208";a="162707634" IronPort-SDR: RrZoqLS5dfi4g3b/paoQpoqGffwPbQsiMAUd8iUT8vPEdHige6XBYRxV4R8b5iY5Ml8XWMRnoz IhniQpwKF2RrE9PEI1rMWgyYMwDmV4o/Iy3hA0nOWU5VxqjnTiFZWvllm2xK3CXgurE6nCQOxA 2czqfGq5Cth9dw8R8IcysyCoEdScb/UYPmnQlyGyu5Fq9Ozea2/cpn4hUgKixu1ILGj45ZJgO6 C0EldywmVrh3SSZ1FDaWyel/juz8goIj0y/oc0XWflUvy5jWudXSzLkbLSOn0RVBztG3d1Q6Zn oBD/jfIpfxj9TXzcKq6exllU IronPort-SDR: vzejUOa1veslcPTweEUDARUnJOVlGLdPLlYxVElZxjpIEg9Fn1UzfLFrg0IO9N9qMgF3SRWPkU XgD0/BW8C+CsUTPgPfv++iuHL7/9svIbIcwFNj3znpit9FtRM0Jr/ZeP6O196vY60Tx4bnvnkJ d8ARtCtqJBSfBaE8MRLy+C9fiau0ur/gQsz6nBZS6l90oKHHcEqvLVO5ArUaEjLhdy2+I2VNz5 CG1zXFPm7yS7VyTbaptM3TnWVxQLgG/L239GLuE7B2a2Ic145HTHI92kiVaQmLXd0cCIqx44iN cSI= WDCIronportException: Internal From: Alistair Francis To: peter.maydell@linaro.org Subject: [PULL 05/16] target/riscv: flush TLB pages if PMP permission has been changed Date: Mon, 22 Mar 2021 21:57:45 -0400 Message-Id: <20210323015756.3168650-6-alistair.francis@wdc.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210323015756.3168650-1-alistair.francis@wdc.com> References: <20210323015756.3168650-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=709ee912d=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: alistair23@gmail.com, Alistair Francis , qemu-devel@nongnu.org, Jim Shu 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: Jim Shu If PMP permission of any address has been changed by updating PMP entry, flush all TLB pages to prevent from getting old permission. Signed-off-by: Jim Shu Reviewed-by: Alistair Francis Message-id: 1613916082-19528-4-git-send-email-cwshu@andestech.com Signed-off-by: Alistair Francis --- target/riscv/pmp.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/target/riscv/pmp.c b/target/riscv/pmp.c index ebd874cde3..cff020122a 100644 --- a/target/riscv/pmp.c +++ b/target/riscv/pmp.c @@ -28,6 +28,7 @@ #include "qapi/error.h" #include "cpu.h" #include "trace.h" +#include "exec/exec-all.h" =20 static void pmp_write_cfg(CPURISCVState *env, uint32_t addr_index, uint8_t val); @@ -347,6 +348,9 @@ void pmpcfg_csr_write(CPURISCVState *env, uint32_t reg_= index, cfg_val =3D (val >> 8 * i) & 0xff; pmp_write_cfg(env, (reg_index * 4) + i, cfg_val); } + + /* If PMP permission of any addr has been changed, flush TLB pages. */ + tlb_flush(env_cpu(env)); } =20 =20 --=20 2.30.1 From nobody Sat May 4 10:56:44 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=1616465091; cv=none; d=zohomail.com; s=zohoarc; b=mXOgA7yi8nZipaOEpRbxROePwLjuNbp+WiAQ7VGWWJI1to0OJV0D3DMxzRdmnK25J/hZhLmX+xsjEh39upi2DfI7Jbth6sI7QyN366lOvz6j0ko9lEC+GG1tvnzpRhAXf6158wTxgOF2ERO96QN64XdzHqFjLEcpeXIZuPxI93g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1616465091; 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=Mtm8TBCS4D61cEkcoc1mEp+5xHtFMA2QKC82ghlprlk=; b=KlelwvRiZLrKjyW2zbPtxXneoaR935E9uwSM8b9UCuTgnIpISrbYkWnQnBVm7jeG70AMGdFVqFhSfyvlE/8DenwShnhRIbtodwTDGVhAl1Pr3ilXchcf+mtDn7QDhSI7bYgZ5zA+twGo+O88l9tkD0EAParPIFrLPldQ92GBc2w= 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 1616465091521394.34774127601463; Mon, 22 Mar 2021 19:04:51 -0700 (PDT) Received: from localhost ([::1]:45470 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lOWPa-0007Om-Fv for importer@patchew.org; Mon, 22 Mar 2021 22:04:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:50250) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOWKZ-0002Kr-LB for qemu-devel@nongnu.org; Mon, 22 Mar 2021 21:59:39 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:2067) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOWKX-0006u2-MO for qemu-devel@nongnu.org; Mon, 22 Mar 2021 21:59:39 -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; 23 Mar 2021 09:59:33 +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; 22 Mar 2021 18:41:41 -0700 Received: from cn6ntbqq2.ad.shared (HELO alistair-risc6-laptop.hgst.com) ([10.86.49.5]) by uls-op-cesaip01.wdc.com with ESMTP; 22 Mar 2021 18:59: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=1616464777; x=1648000777; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=LECnBNUuCJ7SLj62iaExeXoe+kDx2JkPWICQ8uG/7jo=; b=ngkd0TyfbqDyD7tb4Hj8MoiZRCgIJRGvWTL5Vzp6vrWi7j98Pd8SjUH/ xtgeRMfZJgkCGTAjMK1AzfTVcE8SRusix9etqVZKSNcvDj4oRtMwzQDH5 MGh4WQoAGUfR6jsePGzsxo4nWiMvU3T0Q5Ee+zy8f2gLrOvm0VJkzH0Pk 3kYMQoTUK/0Q2wMJyTaiISbkBVIPDoav4U+PdDCcDip1jSNWE9eOEEIKf Idgd9b+vEUHM/qZpqaSbhfSlgKRg2W3PNbAEsOMG7r3xXggBJSgGuTO/p EYA2EA3T50Js+NPxP+2vxyjQNzCCRp+wQ3rw3eMuE4jfbKLXQCKHekj7H g==; IronPort-SDR: FHHeK5cbmXq8lLuilQvYfLficjX5kt110m9ePlWOO+vhOcrtJMV9eGxfmjQBlgktDNiJgDdvlG sgbe1kd7KFMfjNuhzLFLRYvAsQlpEX/mQnmVSzrw8MExh41f6qfFGL3G13LHDsoivZ9Ox6pCt4 eH6KqWBoqE3+2ZYauDbPjmcyVdTRhAVNsc/5Vl/ZvZMLdut6u+S6m9zbj1fMjgh3hl4WNtnXTh d9MKxpEdDoe1QqnkhdBvFl23xc0OOWNgMzthUreJN9mPXrsHflrt18inlqXUlkfcTa6ULEZeFQ mSM= X-IronPort-AV: E=Sophos;i="5.81,270,1610380800"; d="scan'208";a="162707635" IronPort-SDR: 00o1Ug7u2bwrirQ+SP+FiLhXvMU7nAblDXX3FkWJM+7yvpd5mBM8Lj68n0wf3/3PlVjdLV1h2F 0a6+0J2bo9eToJB5JgpEZ3c6DCwKAqT8Qzr0uueZQwBC7y1Sbf0UrvqgYpk/EjbG/P5QASZYYQ jNnrDeO5WbeDnwm1dLWCkH3TgUnaxvXDnJety5Tt7rCNT6EMr778ry5BohaQyooXNyb62J4Vsq VWfcdjsxXqX19rWGi+uimrsqXtkLucFM0sDumrGHsMSfJD6JxMF99yF94CfX4xFhuqQBEOigxl R6w9TmRgODebCKK6RvC9TyDD IronPort-SDR: qqb3OOHKC0sbwtsoPvie3KbAm9/YnS3XpxpDRyaKUGU52DOVrwhllFY2NEXD0cMhmhTvf43/Ss pOfDryKnKw8c9yh07jXNlhz82WRPrdESVu0YdAH5iGeo3GVcV2DSRJ5Nqz2+c2E+dbbK7RmVSx AQjIdTETcA/TpYXUSzoUCtTureaFQuNRu2wzQpoyfqD/8MPlb/p8vUsduonSOusanUNydkRJOW beQsOuFjTd+ZJvU525GJsL4YtzQcNlzpHRMUoBO5BhsleQyPUXJH56g+wOMAhZQ82LN5qm9s/b BGw= WDCIronportException: Internal From: Alistair Francis To: peter.maydell@linaro.org Subject: [PULL 06/16] target/riscv: Adjust privilege level for HLV(X)/HSV instructions Date: Mon, 22 Mar 2021 21:57:46 -0400 Message-Id: <20210323015756.3168650-7-alistair.francis@wdc.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210323015756.3168650-1-alistair.francis@wdc.com> References: <20210323015756.3168650-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=709ee912d=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: alistair23@gmail.com, Alistair Francis , qemu-devel@nongnu.org, Georg Kotheimer 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: Georg Kotheimer According to the specification the "field SPVP of hstatus controls the privilege level of the access" for the hypervisor virtual-machine load and store instructions HLV, HLVX and HSV. Signed-off-by: Georg Kotheimer Reviewed-by: Alistair Francis Message-id: 20210311103005.1400718-1-georg.kotheimer@kernkonzept.com Signed-off-by: Alistair Francis --- target/riscv/cpu_helper.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index 0515f9aec8..b15a60d8a2 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -368,7 +368,11 @@ static int get_physical_address(CPURISCVState *env, hw= addr *physical, use_background =3D true; } =20 - if (mode =3D=3D PRV_M && access_type !=3D MMU_INST_FETCH) { + /* MPRV does not affect the virtual-machine load/store + instructions, HLV, HLVX, and HSV. */ + if (riscv_cpu_two_stage_lookup(mmu_idx)) { + mode =3D get_field(env->hstatus, HSTATUS_SPVP); + } else if (mode =3D=3D PRV_M && access_type !=3D MMU_INST_FETCH) { if (get_field(env->mstatus, MSTATUS_MPRV)) { mode =3D get_field(env->mstatus, MSTATUS_MPP); } @@ -741,19 +745,18 @@ bool riscv_cpu_tlb_fill(CPUState *cs, vaddr address, = int size, qemu_log_mask(CPU_LOG_MMU, "%s ad %" VADDR_PRIx " rw %d mmu_idx %d\n", __func__, address, access_type, mmu_idx); =20 - if (mode =3D=3D PRV_M && access_type !=3D MMU_INST_FETCH) { - if (get_field(env->mstatus, MSTATUS_MPRV)) { - mode =3D get_field(env->mstatus, MSTATUS_MPP); + /* MPRV does not affect the virtual-machine load/store + instructions, HLV, HLVX, and HSV. */ + if (riscv_cpu_two_stage_lookup(mmu_idx)) { + mode =3D get_field(env->hstatus, HSTATUS_SPVP); + } else if (mode =3D=3D PRV_M && access_type !=3D MMU_INST_FETCH && + get_field(env->mstatus, MSTATUS_MPRV)) { + mode =3D get_field(env->mstatus, MSTATUS_MPP); + if (riscv_has_ext(env, RVH) && get_field(env->mstatus, MSTATUS_MPV= )) { + two_stage_lookup =3D true; } } =20 - if (riscv_has_ext(env, RVH) && env->priv =3D=3D PRV_M && - access_type !=3D MMU_INST_FETCH && - get_field(env->mstatus, MSTATUS_MPRV) && - get_field(env->mstatus, MSTATUS_MPV)) { - two_stage_lookup =3D true; - } - if (riscv_cpu_virt_enabled(env) || ((riscv_cpu_two_stage_lookup(mmu_idx) || two_stage_lookup) && access_type !=3D MMU_INST_FETCH)) { --=20 2.30.1 From nobody Sat May 4 10:56:44 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=1616465593; cv=none; d=zohomail.com; s=zohoarc; b=jePn/3l7r0Gp4tyDPt5IJ98L8hQb2+k2M/RhCErnqR413d1fOfV/d+gaEYpVT0JgNWDijpi2gp0l2krLADopf7DGURJFUCQTxj4BBI6QJKM5URYCNo2DGEgoAmRR1Hn8s5BJO9CPwVinnTsxV34KWK0TYMCG2jDDdq4dKun6kio= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1616465593; 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=3KtyjDCPIGXg04+qkUgvnN+RNMekKv6v5R/0Q9jlml4=; b=U8bGl2IJ/bJ4/gkweb3dnJ2GChJebLJgeJId+K1y0xWSaOUXedIK4UUDXerzI+xv4vDu1m8B3Vz/uti3ymjhlF+ACdRGAxW8p615lZ3ZbSZSGRX3YFliEyzulAWqZ+CXOEdy6PUOCqswQAGIQQ2R3oECqx4EYbKeTQrUh2w6eb0= 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 1616465593551396.5245177523884; Mon, 22 Mar 2021 19:13:13 -0700 (PDT) Received: from localhost ([::1]:38162 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lOWXg-00085o-IP for importer@patchew.org; Mon, 22 Mar 2021 22:13:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:50286) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOWKa-0002Mu-ON for qemu-devel@nongnu.org; Mon, 22 Mar 2021 21:59:40 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:2072) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOWKY-0006vy-Vb for qemu-devel@nongnu.org; Mon, 22 Mar 2021 21:59:40 -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; 23 Mar 2021 09:59:34 +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; 22 Mar 2021 18:41:42 -0700 Received: from cn6ntbqq2.ad.shared (HELO alistair-risc6-laptop.hgst.com) ([10.86.49.5]) by uls-op-cesaip01.wdc.com with ESMTP; 22 Mar 2021 18:59:34 -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=1616464779; x=1648000779; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=XwkbafFkgXx0cHFkkMZ6VWtj3HM8KkoaaxCJWf09dIU=; b=fCB15BtUiTexkfS0dO5VFfgPnrsZANOG/SXvOAsbfDiUAQS58rSgILB6 rVe+uU5V4h6o/y/6FMnqD+/bzSbop1rKm3xbYfA+/m3Ht/X5Gt8yMf9Ye +C5n0sEwbs1O22cRtPzMCix9m8R/xGZV4GwY5+uSwUA44+g5r96RtxyOh oaqQNohJqNYdpobjo8DhGTgZrBKWBUGovfAr3iN0vSMcSG7YzTW5fjYZE xSYl808+cKxVtcPDKbTgzZKVatL9AIcytZ5jULLyaXSwC1eyTktWKmBFJ qstv2yVvGmgeGPiY6lajYhd6eUNn12G5rswXlJxTGeqAWGPFIdUZdiWoY w==; IronPort-SDR: n1OmZo6PsxFtm7kyZX3OKwVEQgeSmV5mob05Npj+XSucGtrxlWOlMFgEXl2bPGUDBhhsL3EP7K ZXQC8B7jCS0zKGVUqvCwygxlSq1OFRgpE8DFsZp+j7Sn8Ui1B3N1fCs5ctsBcXcU7PqsvgMJPl 4dIKI4Oo3lU+Fe+w/AUnZE8PFkYGAmZ8jRFtD7F7sAiaSwDHhgVftB4e4t3MIb6PeYoukHHA3v yS50aYvDXOFG3RF93ZToixcbSYNlv2O+9ecuFXWSS3HwYWtHZzWxGuNgcY0zmBR5+XYGwmXJ1T PZ4= X-IronPort-AV: E=Sophos;i="5.81,270,1610380800"; d="scan'208";a="162707636" IronPort-SDR: IN+Aoz9lfZQGgHUaNvAAc8/tjOljrgkFxcC9zqV24TQjUnPD7yLVQu0Bp5YaEipRbI9uD9sTUQ Xgbux7J7BzlaGaD6McEZ8bKkJ8CBNqjXqd292iTqZIEPgpKevWMt77hMdGlbx+1NVcIHSqd8jI 5T1iV3FExnOac8s/Hd3PPwwa5kpWXwt3owVtTs0KTWq39cWco/Q+nofk0ifdL8D4+31yom6Pjn yPbEMFD15HGNTd0kZjEGxP2aUeLhda8z8lJlBGn8V9x9QIZEUvK34nl5dL0shOMwAKjSv/hnKc n34Q+nmHTz6sGcMqM354EUzL IronPort-SDR: Q0eraa+CKHQ795u2CHim6+Vq2QBUQxI+uEzPERRkiy3PDB7JqRRUbir4UnQ4Vtw+dMpF5w1HTd yQ7GZph7yMVAxYdW5bdOl75923xObgC3v6ili8AlWmG8j3FPLde7KhVb3rlgW1MfC2iMnlVBv0 hKTN6Dq8vzrETi1V0RE+WBdlW5Wp0qVZNB/4klakGyl3snoiZa5h8aQy8NnUXHRdAomFv5qRlA OzOu2BkoUqwgEPebqZPkFRoqFU1wNIujVn+rQRRHzBxE9UrYY+cn5yzTCvWz3+8U+Qy9HDpci2 suo= WDCIronportException: Internal From: Alistair Francis To: peter.maydell@linaro.org Subject: [PULL 07/16] target/riscv: Make VSTIP and VSEIP read-only in hip Date: Mon, 22 Mar 2021 21:57:47 -0400 Message-Id: <20210323015756.3168650-8-alistair.francis@wdc.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210323015756.3168650-1-alistair.francis@wdc.com> References: <20210323015756.3168650-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=709ee912d=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: alistair23@gmail.com, Alistair Francis , qemu-devel@nongnu.org, Georg Kotheimer 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: Georg Kotheimer Signed-off-by: Georg Kotheimer Reviewed-by: Alistair Francis Message-id: 20210311094902.1377593-1-georg.kotheimer@kernkonzept.com Signed-off-by: Alistair Francis --- target/riscv/csr.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/target/riscv/csr.c b/target/riscv/csr.c index d2ae73e4a0..a9dba7f736 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -420,7 +420,8 @@ static const target_ulong sstatus_v1_10_mask =3D SSTATU= S_SIE | SSTATUS_SPIE | SSTATUS_UIE | SSTATUS_UPIE | SSTATUS_SPP | SSTATUS_FS | SSTATUS_XS | SSTATUS_SUM | SSTATUS_MXR | SSTATUS_SD; static const target_ulong sip_writable_mask =3D SIP_SSIP | MIP_USIP | MIP_= UEIP; -static const target_ulong hip_writable_mask =3D MIP_VSSIP | MIP_VSTIP | MI= P_VSEIP; +static const target_ulong hip_writable_mask =3D MIP_VSSIP; +static const target_ulong hvip_writable_mask =3D MIP_VSSIP | MIP_VSTIP | M= IP_VSEIP; static const target_ulong vsip_writable_mask =3D MIP_VSSIP; =20 static const char valid_vm_1_10_32[16] =3D { @@ -962,9 +963,9 @@ static int rmw_hvip(CPURISCVState *env, int csrno, targ= et_ulong *ret_value, target_ulong new_value, target_ulong write_mask) { int ret =3D rmw_mip(env, 0, ret_value, new_value, - write_mask & hip_writable_mask); + write_mask & hvip_writable_mask); =20 - *ret_value &=3D hip_writable_mask; + *ret_value &=3D hvip_writable_mask; =20 return ret; } --=20 2.30.1 From nobody Sat May 4 10:56:44 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=1616465221; cv=none; d=zohomail.com; s=zohoarc; b=JhhDeahGYOx+9PBopFASm9spwzCWxfW0qayuS5p1nO/DH4V+SzqTVgneiqjwlU5dbOy9wNPMXYwJAokKiNjaHuy+eKqG92dLXzE2/4UaLfZawq0v4/4O3e3lkMh3vmtyC1vb7P+moruZ3dEI3XnzpCba4K54/GCGpEpTWh/ymVo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1616465221; 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=gOpYQx4Z2PJ0devR646a9dUFvNYw5znKGuOUuEAF37s=; b=KvaPJA9JpxXWzOscuJD58z61x1Plvr4/ze21a4jxCcASJ464o9sK10mnJK11/gkzXGBeWdBBkaHIUi3lmmCAYXZ30M16os3oWeDJVwm/87g76GxuSefJrs0s5uQ9aS/rxX+EyWUNXktMtePzBB5v5AIZYKRgZ7eIS+e+olWqruo= 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 1616465221937118.39134659731053; Mon, 22 Mar 2021 19:07:01 -0700 (PDT) Received: from localhost ([::1]:51614 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lOWRg-0001co-Oq for importer@patchew.org; Mon, 22 Mar 2021 22:07:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:50298) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOWKb-0002Nx-J8 for qemu-devel@nongnu.org; Mon, 22 Mar 2021 21:59:41 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:2065) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOWKZ-0006tH-CM for qemu-devel@nongnu.org; Mon, 22 Mar 2021 21:59:41 -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; 23 Mar 2021 09:59:35 +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; 22 Mar 2021 18:41:43 -0700 Received: from cn6ntbqq2.ad.shared (HELO alistair-risc6-laptop.hgst.com) ([10.86.49.5]) by uls-op-cesaip01.wdc.com with ESMTP; 22 Mar 2021 18:59:34 -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=1616464779; x=1648000779; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=LPH3HiBhVT6SsrGndGfQmvetGHNAi3MZ7yoAIT6scTY=; b=Gb4aN7sfmjtFsJ0S/LtnhmRGmoggFzZa2QCSTrewo3pyVuQuLdou+TGY uerVvonpv8PPHScFPymseErFSHTtfSnY99Cyg/pm7o5wSZ7rozsApvtuz c6DHHabJGG9bVQ/CCi+wZ4wWOJL6q3GQY/IxxBBi8IEAWKUgRBb69sUtO UX58zmqckS43/FWnd1LWFdGc3nROUOgTThi8TcE1cEs6TAqUpCtBYre0S tok17kbDMF3Wq337HsHzwXhu7vqGVwfqh1S6KiOvCXAne0DaSsKmCUnN8 rZosBfQXR8R3RhIH+ngTeGYDmQ01C6iyy+MSviWohuFZ5WejGNa8kIfCm A==; IronPort-SDR: Uh2bjpZtfzjnF16itc1jmxJ/yR/AKLR1+2gb2hRyM8GCghGSz/URIm9IyUAoImyi61kcYpttOQ q2F2BOWgh3DdpB+Tc1lNqE+bJe2rMv2ZxMkX+74Th51uMyOsD7luAEcvjP7Jw6C0pNTQLZkbID Qfz6VuHRKy7so37eweS/trkrQ3ANtUnl5rjZEoLfOs21kflnLfQhz+rAAYV2cP8djGwiJSRtYM TF/f7/Dc3YQayWInxnmS+BrjkIy/oEXBwH74ocIW/q22+ZX35Hs+orX+0XOGo7dTwaqisy+ZkE j+c= X-IronPort-AV: E=Sophos;i="5.81,270,1610380800"; d="scan'208";a="162707637" IronPort-SDR: UboKDZuCGEgBB8xevumpR/dWFT0tRhZbdIShS2NPfYFCF493G0VBvi7NGnH+iNk5oq4j6ZfbIs kYSzOw9isuUvupBvDCFZZL5dKU+2NgqcoTmnMPoCI0WTOnUNar2fOjJxauS4i4J2EEbC1KbtXZ YHa5Tgzmd48n5mOdCn+JIKkAxuu7WwuDiSS82EI8rYGIzFibYCH62fQkAoq9+1YGROLNOLCkjG sWOiWm/+l8Kd1CVX/YzjoxT5UG9AbulN2Wfl3eP6Oj7ti5xCEGgYuoXfGxaXklRyWzuWdYRttA 5OmEEBHQT5j9tifgC3RW9Xhx IronPort-SDR: 5zlX5DwsYvuTp9EOhSLpcZqgEGfNByLy6HnAtA15rw8Kd/A+iY2qkISfnfd5Ok5+IkIHNTohEL WfzFXfs3IkecxW3Sgf9RfUTGfAsgo17LPe24QbDocN86hsplJQURv/SChZ6hq/ZhaK78dWlXpc IzcSIoTHHGqrM/+5zddzQ9ESW1M+eVxH0RQ8PVfkp8QWVJPG9FHei+zeE25NLCp4RLwBvrj/OM 1Tj/TLuQ+DmDyxpxRr9UFFIatc19T6U2cCbn7dFO4rGtxnIAqRutiDdtuUNt9BDZ/Brg+4ii8R E1U= WDCIronportException: Internal From: Alistair Francis To: peter.maydell@linaro.org Subject: [PULL 08/16] target/riscv: Use background registers also for MSTATUS_MPV Date: Mon, 22 Mar 2021 21:57:48 -0400 Message-Id: <20210323015756.3168650-9-alistair.francis@wdc.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210323015756.3168650-1-alistair.francis@wdc.com> References: <20210323015756.3168650-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=709ee912d=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: alistair23@gmail.com, Alistair Francis , qemu-devel@nongnu.org, Georg Kotheimer 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: Georg Kotheimer The current condition for the use of background registers only considers the hypervisor load and store instructions, but not accesses from M mode via MSTATUS_MPRV+MPV. Signed-off-by: Georg Kotheimer Reviewed-by: Alistair Francis Message-id: 20210311103036.1401073-1-georg.kotheimer@kernkonzept.com Signed-off-by: Alistair Francis --- target/riscv/cpu_helper.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index b15a60d8a2..8d4a62988d 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -364,7 +364,7 @@ static int get_physical_address(CPURISCVState *env, hwa= ddr *physical, * was called. Background registers will be used if the guest has * forced a two stage translation to be on (in HS or M mode). */ - if (!riscv_cpu_virt_enabled(env) && riscv_cpu_two_stage_lookup(mmu_idx= )) { + if (!riscv_cpu_virt_enabled(env) && two_stage) { use_background =3D true; } =20 --=20 2.30.1 From nobody Sat May 4 10:56:44 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=1616465670; cv=none; d=zohomail.com; s=zohoarc; b=a9UZPe9HcAhuAONj+GU4PC6ZPhlZKAJA0bupuSl2lCmrS/vmm/zDN1hrAb7dylEewCate4vKYgzS4P3lOP8J0D7WMgzKh1hRaWVDItEXpmV9+9XFOnikDKVEaRk8/6H0nKNGMa5Oh6K6x0X1xN0a6i5nMo5xYQ+2LVUhplpKGJ4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1616465670; 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=OV5f/s2tOwKH4Ds6Io00aoR0jTgqotZUeDrYmEEF1RI=; b=YaVqbjXR9T9RAN0TNAEhfyBenuJL2IYvCRWtS0MeIVwvyVUORV02OPUgeUWDVjUWcdHLkbIb7A0JusfHFJBko/0eCrfYqxpK0KT9bLdlhCJRj3etQOXITygStLFNZ8ce7uhIqOLLZWJt2EOex5gvMcEBQsMQMq1xMf6s1OxjAtE= 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 161646567059519.734727465735546; Mon, 22 Mar 2021 19:14:30 -0700 (PDT) Received: from localhost ([::1]:41456 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lOWYv-000133-EC for importer@patchew.org; Mon, 22 Mar 2021 22:14:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:50300) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOWKc-0002P6-Dj for qemu-devel@nongnu.org; Mon, 22 Mar 2021 21:59:42 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:2067) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOWKZ-0006u2-Ua for qemu-devel@nongnu.org; Mon, 22 Mar 2021 21:59:42 -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; 23 Mar 2021 09:59:36 +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; 22 Mar 2021 18:41:44 -0700 Received: from cn6ntbqq2.ad.shared (HELO alistair-risc6-laptop.hgst.com) ([10.86.49.5]) by uls-op-cesaip01.wdc.com with ESMTP; 22 Mar 2021 18:59:35 -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=1616464779; x=1648000779; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=oLkCz0lZT4A60erKaB4yvIxQdcUhOsonIWr+vFgAKrQ=; b=ccdkp3KciZnKGLRzMM4gcvaNNpVKOafM8kXez7XrN20apKRkAVe2fqDc lH1ed+3eErWu/+RwyXh4I8p1K6qkydFYDBFDbn3ItskRnp0upY4fcpaHl UvOKym59A2Gqsw8tvjZD7uYoFhRcFmyo4HXcFb/RawfRJd5AJbrYExZ3M wjVixxpkr5XJ8mqag4+cGvUS86yxhdEiDDDNwa4L3KENaRRdnIDZlxEAv Ah8ZbyvL92vIy4SJAJ/4qSiXdixKergecF2XDxM3h5sfVz3I4Uc/dipA5 nsLYl9e4SZo/AHTgkBdNVD/F5c1EhMfpx886i2mnIN33PVVDx+uDRZi+4 w==; IronPort-SDR: Tl+ISuT7fTo44ubY7lE9m1ALD76v9o69K33Iq+R2XVasiD0k5OakikQsQAdQtfSRvjSxJtrKc4 7RT52ATlKejP3POuLQ2k+N5ClED7XAzQ9/F3oHr4qkHWQJkLkRVTs0BBSRVThrizgdfuVys05t geB5ulg7i0GyAkchTdAxsd9+i3HdsrFdm27gjzx+gaYr/2XbDGC3XbFO3fOva61JoXrAOYLjGH FtCajpZvFEyqI8aizY4pG217cxRm6L/yzIveREKfr34JgPVz7mm4xycoxTtf+ZmtS3KfUYwJFd NRc= X-IronPort-AV: E=Sophos;i="5.81,270,1610380800"; d="scan'208";a="162707639" IronPort-SDR: KCLPEcoMaaUqtoafi7HrM1VLd88hczBoRbgD6a8zMmPQveZpxL8hzyCTuR8kRVY4SGVUf5TK4A 55SU+y0z0trCCe839fUhIs2nrCDUpw3bCthvNDSF6dJuIXXjpAnGm5qyDwgFBAHJA/ID54LhMZ bFZSUU3Lr8EP2a/jd0f6ARR84nCKGClWMzSJmBF9YL4GFYAMI6ErxTw9ZQtZ5jVHSTrUgLslFA u3V9iydI0+NHsiVXSakpfNp3wMR37eA8NRc50OD9VL0Sel+VZz5vTkkQ/vWRL4TgcAafs5Yypq AqxTB/3I9NPy8bc8EiVbpIFf IronPort-SDR: D+C2JqRPgd5kmn++R2GFVQV1gz6zMik0qatB420F74bIoQK9+eG8u9ewSi4sHOVavsl9Fq74Ot iQeKHmP96PCf5pVtxuJFHdzCa9QboYe1MxF2sQxDlO9hi3UTlDp1jOxOzpFI2mN0bYZOVivUBq 7UE2zcM/vPQMmhCExKeFlJFly1B/zNHC7W3FJlFrG6H5348ncfww+J19kZv9gc8tI8Y68+2pGq 7SOZRDy4GY+aRbsS4ulZ7t/pWAxGrvMj342ZhAJO1C+vF9cldWzJ1mtoYJmwbPnv0MZX52Nm2X 5D0= WDCIronportException: Internal From: Alistair Francis To: peter.maydell@linaro.org Subject: [PULL 09/16] hw/riscv: Add fw_cfg support to virt Date: Mon, 22 Mar 2021 21:57:49 -0400 Message-Id: <20210323015756.3168650-10-alistair.francis@wdc.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210323015756.3168650-1-alistair.francis@wdc.com> References: <20210323015756.3168650-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=709ee912d=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: alistair23@gmail.com, Bin Meng , Alistair Francis , qemu-devel@nongnu.org, Asherah Connor 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: Asherah Connor Provides fw_cfg for the virt machine on riscv. This enables using e.g. ramfb later. Signed-off-by: Asherah Connor Reviewed-by: Bin Meng Reviewed-by: Alistair Francis Message-id: 20210318235041.17175-2-ashe@kivikakk.ee Signed-off-by: Alistair Francis --- include/hw/riscv/virt.h | 2 ++ hw/riscv/virt.c | 30 ++++++++++++++++++++++++++++++ hw/riscv/Kconfig | 1 + 3 files changed, 33 insertions(+) diff --git a/include/hw/riscv/virt.h b/include/hw/riscv/virt.h index 632da52018..349fee1f89 100644 --- a/include/hw/riscv/virt.h +++ b/include/hw/riscv/virt.h @@ -40,6 +40,7 @@ struct RISCVVirtState { RISCVHartArrayState soc[VIRT_SOCKETS_MAX]; DeviceState *plic[VIRT_SOCKETS_MAX]; PFlashCFI01 *flash[2]; + FWCfgState *fw_cfg; =20 int fdt_size; }; @@ -53,6 +54,7 @@ enum { VIRT_PLIC, VIRT_UART0, VIRT_VIRTIO, + VIRT_FW_CFG, VIRT_FLASH, VIRT_DRAM, VIRT_PCIE_MMIO, diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index 0b39101a5e..e96ec4cbbc 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -53,6 +53,7 @@ static const MemMapEntry virt_memmap[] =3D { [VIRT_PLIC] =3D { 0xc000000, VIRT_PLIC_SIZE(VIRT_CPUS_MAX * 2)= }, [VIRT_UART0] =3D { 0x10000000, 0x100 }, [VIRT_VIRTIO] =3D { 0x10001000, 0x1000 }, + [VIRT_FW_CFG] =3D { 0x10100000, 0x18 }, [VIRT_FLASH] =3D { 0x20000000, 0x4000000 }, [VIRT_PCIE_ECAM] =3D { 0x30000000, 0x10000000 }, [VIRT_PCIE_MMIO] =3D { 0x40000000, 0x40000000 }, @@ -507,6 +508,28 @@ static inline DeviceState *gpex_pcie_init(MemoryRegion= *sys_mem, return dev; } =20 +static FWCfgState *create_fw_cfg(const MachineState *mc) +{ + hwaddr base =3D virt_memmap[VIRT_FW_CFG].base; + hwaddr size =3D virt_memmap[VIRT_FW_CFG].size; + FWCfgState *fw_cfg; + char *nodename; + + fw_cfg =3D fw_cfg_init_mem_wide(base + 8, base, 8, base + 16, + &address_space_memory); + fw_cfg_add_i16(fw_cfg, FW_CFG_NB_CPUS, (uint16_t)mc->smp.cpus); + + nodename =3D g_strdup_printf("/fw-cfg@%" PRIx64, base); + qemu_fdt_add_subnode(mc->fdt, nodename); + qemu_fdt_setprop_string(mc->fdt, nodename, + "compatible", "qemu,fw-cfg-mmio"); + qemu_fdt_setprop_sized_cells(mc->fdt, nodename, "reg", + 2, base, 2, size); + qemu_fdt_setprop(mc->fdt, nodename, "dma-coherent", NULL, 0); + g_free(nodename); + return fw_cfg; +} + static void virt_machine_init(MachineState *machine) { const MemMapEntry *memmap =3D virt_memmap; @@ -688,6 +711,13 @@ static void virt_machine_init(MachineState *machine) start_addr =3D virt_memmap[VIRT_FLASH].base; } =20 + /* + * Init fw_cfg. Must be done before riscv_load_fdt, otherwise the dev= ice + * tree cannot be altered and we get FDT_ERR_NOSPACE. + */ + s->fw_cfg =3D create_fw_cfg(machine); + rom_set_fw(s->fw_cfg); + /* Compute the fdt load address in dram */ fdt_load_addr =3D riscv_load_fdt(memmap[VIRT_DRAM].base, machine->ram_size, machine->fdt); diff --git a/hw/riscv/Kconfig b/hw/riscv/Kconfig index d139074b02..1de18cdcf1 100644 --- a/hw/riscv/Kconfig +++ b/hw/riscv/Kconfig @@ -33,6 +33,7 @@ config RISCV_VIRT select SIFIVE_PLIC select SIFIVE_TEST select VIRTIO_MMIO + select FW_CFG_DMA =20 config SIFIVE_E bool --=20 2.30.1 From nobody Sat May 4 10:56:44 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=1616465362; cv=none; d=zohomail.com; s=zohoarc; b=LTNxHdGav9qKD5rFBo4+Egsz5aNvDvpAAysKalvRPxgOo/7UdvY5HohcNyPtLUcqUAlhjTdSqknVGE9M3USd37JozMns0Ado8mdaD+ZYUQlI0Avf2O1FzR6gJ/esGW5rIXaWcJNZ3qxk14N1ytAcGmJco37ed8NLCpkcnvdfg+E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1616465362; 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=dR2wochJPNG0VF6t/loG5jKrh5e1YEcCM7qoY0E/5cA=; b=O19nwrT18WbVrM2gUCog59og2W07Ljhp4fGjTqkczFWRiP37PV4Y0TUhvtpjJ821ZCJyx8tVUuh7RHaiz1uKgp1lqzZpvyK/S/WjIUfhd1Sdg7WmpwUDK+9tDUtxuWdnEIyNZe/zyFaDk7bOi5vxClSLTVjFNT1CYOxT2HT6hyE= 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 1616465362091906.1908563245014; Mon, 22 Mar 2021 19:09:22 -0700 (PDT) Received: from localhost ([::1]:57704 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lOWTx-0004Do-09 for importer@patchew.org; Mon, 22 Mar 2021 22:09:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:50364) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOWKm-0002gA-TQ for qemu-devel@nongnu.org; Mon, 22 Mar 2021 21:59:52 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:2072) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOWKl-0006vy-3u for qemu-devel@nongnu.org; Mon, 22 Mar 2021 21:59:52 -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; 23 Mar 2021 09:59:38 +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; 22 Mar 2021 18:41:45 -0700 Received: from cn6ntbqq2.ad.shared (HELO alistair-risc6-laptop.hgst.com) ([10.86.49.5]) by uls-op-cesaip01.wdc.com with ESMTP; 22 Mar 2021 18:59:37 -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=1616464791; x=1648000791; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=n+t/4XqLP1Tl30ccvO+t9Nzu+o57JmIV+EnK5sVD+Sg=; b=hrhaL7lIp8UCPWUAO4DrNFHiVyzuhzX2s861PXeOyFIKrAmOGiQ2c0jK UElz9f+Yusk0DFGewZp3utsQQgqlkk1UoEyRl0vrzpizj8PK3yuVBUbuT mLhC7ch0o7DmZ8VObauoUVr0/Tlfk5AfXVlFOrjwMJj+i2uLlgQ+kZNka iAvMWhUkDhBbOsZwR/MEDjORS14xZLnBjXm+nHHmoEwVjjvdcsM6dfc7e 5rl2lMb/1CUOsDYlE2vsI+9zgnqTOAH70cSMo45B5SM8DtWe9u0CXJVtd y+TR4fyPJ4qd6aOjfh7U9KFhhurAQGFsIY2DMq6yb1GHViBfuNl9c9CMV Q==; IronPort-SDR: g8nknRJIKjHSXm/HLWXs5jElo1kbTyyWLwvJ2w9Z6z9eT8PIiZa8GTUcgkRvGVWfgTYogrCN6w K6A5UBUY+zCW/pECzrTzF36++pHKMCp+eujKwWvz1PHknW6y6XUiJzViz34/f9dLPU5bF9MI0g TqRhXQe1Ae5vXg/DEu++9YNSNUBPtiyfVEikSFrXRaoGJ58YkM/jjxTN3+ebcSVlIfnBq2Owpw Il3TsVbm3HsLxn/QMrLJO2Z/OuplbfQ4LQk53UUOjR/u5LXB8ZLileKNbfrRkW87SbUqBSNeGt a+o= X-IronPort-AV: E=Sophos;i="5.81,270,1610380800"; d="scan'208";a="162707640" IronPort-SDR: J/upp2esAk9mJxeRo0WZ0kKxpwqbudWyihFky5XPPQMjEmf2Bn45FzPTn2NIaK/dtY3+kROHAx rWGY7Et3q2tHu2T0GNyf3vaWfEMGNjNlM+o9F+4NgpC20/tpRISl3QIJR5zf7eHxOOSIP3RZOI U84FZdXzIty2oSpU70Q5IL5ukD9ph0/OHJ8h1f1eeMSVPr0FqhbC7LDF2RKWb27tZq8oaROq5Z WtOaMLcwHDd/sivdeIbsuTAXlTpke1G1k1sth5iC9Q8gfJpa65XwlzXYSJChk5Z9MowtAFigLI 6SbjvqM1MSS78U5EoJ5Vnkvn IronPort-SDR: 3zJVqPE4dPa3MbBRgYzyh43Obe7GB4x6V5kJYH+3PjXaQX4i/AF9tfHxYieMg8Pvv3mVr52yO0 5e0hoGuxS5xNzL4jWCCtzo/5hyzh/kWz68JJc7umdGL/0XOAxhai25D8Ik9dSH0zcnI9gW+IB5 g/jIMpDXKfrpr1d9+0mmMFmZyUtLxP659pjuMBIAuQ8S8tXi7XHFhMhOkcUNUyoZcvuYy8RNz7 0JszcvFvu5vA4TISKCT+sF3xeB6MKMiHOkXiALfrQB8ho0swnlDeOOwTfB+u3eNJpOjNYch8p3 Sk0= WDCIronportException: Internal From: Alistair Francis To: peter.maydell@linaro.org Subject: [PULL 10/16] hw/riscv: allow ramfb on virt Date: Mon, 22 Mar 2021 21:57:50 -0400 Message-Id: <20210323015756.3168650-11-alistair.francis@wdc.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210323015756.3168650-1-alistair.francis@wdc.com> References: <20210323015756.3168650-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=709ee912d=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: alistair23@gmail.com, Bin Meng , Alistair Francis , qemu-devel@nongnu.org, Asherah Connor 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: Asherah Connor Allow ramfb on virt. This lets `-device ramfb' work. Signed-off-by: Asherah Connor Reviewed-by: Bin Meng Reviewed-by: Alistair Francis Message-id: 20210318235041.17175-3-ashe@kivikakk.ee Signed-off-by: Alistair Francis --- hw/riscv/virt.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index e96ec4cbbc..c0dc69ff33 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -42,6 +42,7 @@ #include "sysemu/sysemu.h" #include "hw/pci/pci.h" #include "hw/pci-host/gpex.h" +#include "hw/display/ramfb.h" =20 static const MemMapEntry virt_memmap[] =3D { [VIRT_DEBUG] =3D { 0x0, 0x100 }, @@ -781,6 +782,8 @@ static void virt_machine_class_init(ObjectClass *oc, vo= id *data) mc->cpu_index_to_instance_props =3D riscv_numa_cpu_index_to_props; mc->get_default_cpu_node_id =3D riscv_numa_get_default_cpu_node_id; mc->numa_mem_supported =3D true; + + machine_class_allow_dynamic_sysbus_dev(mc, TYPE_RAMFB_DEVICE); } =20 static const TypeInfo virt_machine_typeinfo =3D { --=20 2.30.1 From nobody Sat May 4 10:56:44 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=1616465490; cv=none; d=zohomail.com; s=zohoarc; b=WvkO0NhBBDcl55NtiMNmhfiLktBrzE0EYknaUDAS/WttQKfZWY0QubJF4bbuNyuiC8Pnq4T7x01ll7LeoF2J12Etqar6YtsDY2x0YSkGs1any0fN/eyBx8jM1RDOdc02iJbYKwAe4xUgghbAhnsgG1vDP0CgoJvST/WhSLUW63s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1616465490; 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=y0KZGVbu/PSVYDYAP8A/X7AoHsVP/JwkS34FFBAWPDU=; b=hfz18VPj2b+Vej0PWNns25826S10Yj7tX5TsZO6rH6BLADKTAqO8neQSHYz7e/E6L+zceoucdPzo+gakjYLo+FwPhU4P+rLIUiOurp8LKgkmPTmR7ZWp6F7UAKdAd7Wu28Q+1Dx7SHjAt1/0alolMhJTuJQFxKQL/Q9uwllFdHI= 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 1616465490526956.1339339790276; Mon, 22 Mar 2021 19:11:30 -0700 (PDT) Received: from localhost ([::1]:34558 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lOWW1-0006V5-D0 for importer@patchew.org; Mon, 22 Mar 2021 22:11:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:50398) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOWKo-0002jU-8E for qemu-devel@nongnu.org; Mon, 22 Mar 2021 21:59:54 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:2065) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOWKm-0006tH-42 for qemu-devel@nongnu.org; Mon, 22 Mar 2021 21:59:53 -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; 23 Mar 2021 09:59:38 +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; 22 Mar 2021 18:41:46 -0700 Received: from cn6ntbqq2.ad.shared (HELO alistair-risc6-laptop.hgst.com) ([10.86.49.5]) by uls-op-cesaip01.wdc.com with ESMTP; 22 Mar 2021 18:59:38 -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=1616464792; x=1648000792; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=sfsQvFdyL9uIj2kFXA8Blt8I893397xyP9rjOUZgGqk=; b=D+4z+4EAaQ4lE4hZt98bzr1UDjBnVu4c/AiSVtrUgsiSo4AI1wzuVLoI BWyQuS1xJKA3tovRsCorjPlxzBdPF4zxSWU91nfHzLbi3I4Fp6pFO7ScB pXpMvbV7Y4nZDyErWVLm7zYE47tGUW21DVurcQcdOqF4Zn8HbY3vvg5At 5LSDf0CzmeOs43l6NdB+HFlSA86NRVC1HskY554xj17Iz84S28GKO5Bai bc5U4vxFgLFwtZ2tJACtU3eruA1nd2hBegAUPB502O3h5YkfrOZq306BS bOVaM4g6nOVzKUBI+hglK/u9wkMb1u/FiGlqMjDnxNcF0aopBzpQEf9dI g==; IronPort-SDR: j+FSVy1+xpFpPgGByABNHVMak327o2fBZMdSA00caQkLB/7SLU/wMbEqlzbmy7Jr7Do7/TUb+P SImmd/GS3S8YM6FTsuZ8YuhtnSbZZ+NhNZiV+5jOpnJEwhbTziAPmUFkkL++e/QW8ZDeKDp1U7 gaL21I0Gzj2OsXFvzDVVVVgbOxj3VBwcd0zvfxaPR4Fjt1qjSJj440AyFOnd/oELvaUH7ckwjC I7Mtv6/KTFYW/VTNQ7Dwb3L5Pp0gWwQlw/O2ChqTNXY1yBxXstnps32ayH4RfucXDjJk2KoiUp KDY= X-IronPort-AV: E=Sophos;i="5.81,270,1610380800"; d="scan'208";a="162707641" IronPort-SDR: 2BNtLHfn5cENSYzmTTmjallOYPN2cI6MNInbogh5QnbrJZrwqzkv2wauVEtPFOXKqQumHt+LIl MiYRDcdTzD08uQrPolsKHmidJpZkolxeITxoOevaNVfDWshbwGO+HDpefCMpd17wAS728RDJK1 8NH/guKrgdbQJj+YjbgmZvBIL8x5PLPssCB6xLOHB8FxdkVDqzq6Y/o0d/8klyiajD8Y3V7qlP SgMRkkbAAkK/aOWCg0tB/AqKOY9pw7yLWBlssac/LQIpq6QsUhntswk+BvxPOj2NIlJ20YOc7o oXQVM1wGLh95SY0J8fbR3fRn IronPort-SDR: NWsLZ9d7143VTwAFBXlEWGzt4hWs03OLI17HO0/8A9uWueju8cwbYFcrTNZWXy++d9UlMRVRV4 8qZ2JAl3ZH94kzheMk0PnwjFQ2ETwoZYoh7IuDloS+4//Zv/7vcfapP8cMeI/74qu6W1XUHall 2p8LDZpOt1oU2X6xBj1jC/++riy5HmPo4Brfe8uOfMdQpm51UAkskm4yilCqlmBzDqXhY1BvcI QvLnkyKSGLdsTu32HhWUpvp8BbX2mHRVws1dQ1Uw9gHZfgcj8HdCNvKWC1dGV57TpW1Dv1imiM diA= WDCIronportException: Internal From: Alistair Francis To: peter.maydell@linaro.org Subject: [PULL 11/16] target/riscv: Fix read and write accesses to vsip and vsie Date: Mon, 22 Mar 2021 21:57:51 -0400 Message-Id: <20210323015756.3168650-12-alistair.francis@wdc.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210323015756.3168650-1-alistair.francis@wdc.com> References: <20210323015756.3168650-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=709ee912d=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: alistair23@gmail.com, Alistair Francis , qemu-devel@nongnu.org, Georg Kotheimer 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: Georg Kotheimer The previous implementation was broken in many ways: - Used mideleg instead of hideleg to mask accesses - Used MIP_VSSIP instead of VS_MODE_INTERRUPTS to mask writes to vsie - Did not shift between S bits and VS bits (VSEIP <-> SEIP, ...) Signed-off-by: Georg Kotheimer Reviewed-by: Alistair Francis Message-id: 20210311094738.1376795-1-georg.kotheimer@kernkonzept.com Signed-off-by: Alistair Francis --- target/riscv/csr.c | 68 +++++++++++++++++++++++----------------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/target/riscv/csr.c b/target/riscv/csr.c index a9dba7f736..d2585395bf 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -749,30 +749,42 @@ static int write_sstatus(CPURISCVState *env, int csrn= o, target_ulong val) return write_mstatus(env, CSR_MSTATUS, newval); } =20 +static int read_vsie(CPURISCVState *env, int csrno, target_ulong *val) +{ + /* Shift the VS bits to their S bit location in vsie */ + *val =3D (env->mie & env->hideleg & VS_MODE_INTERRUPTS) >> 1; + return 0; +} + static int read_sie(CPURISCVState *env, int csrno, target_ulong *val) { if (riscv_cpu_virt_enabled(env)) { - /* Tell the guest the VS bits, shifted to the S bit locations */ - *val =3D (env->mie & env->mideleg & VS_MODE_INTERRUPTS) >> 1; + read_vsie(env, CSR_VSIE, val); } else { *val =3D env->mie & env->mideleg; } return 0; } =20 -static int write_sie(CPURISCVState *env, int csrno, target_ulong val) +static int write_vsie(CPURISCVState *env, int csrno, target_ulong val) { - target_ulong newval; + /* Shift the S bits to their VS bit location in mie */ + target_ulong newval =3D (env->mie & ~VS_MODE_INTERRUPTS) | + ((val << 1) & env->hideleg & VS_MODE_INTERRUPTS); + return write_mie(env, CSR_MIE, newval); +} =20 +static int write_sie(CPURISCVState *env, int csrno, target_ulong val) +{ if (riscv_cpu_virt_enabled(env)) { - /* Shift the guests S bits to VS */ - newval =3D (env->mie & ~VS_MODE_INTERRUPTS) | - ((val << 1) & VS_MODE_INTERRUPTS); + write_vsie(env, CSR_VSIE, val); } else { - newval =3D (env->mie & ~S_MODE_INTERRUPTS) | (val & S_MODE_INTERRU= PTS); + target_ulong newval =3D (env->mie & ~S_MODE_INTERRUPTS) | + (val & S_MODE_INTERRUPTS); + write_mie(env, CSR_MIE, newval); } =20 - return write_mie(env, CSR_MIE, newval); + return 0; } =20 static int read_stvec(CPURISCVState *env, int csrno, target_ulong *val) @@ -853,17 +865,25 @@ static int write_sbadaddr(CPURISCVState *env, int csr= no, target_ulong val) return 0; } =20 +static int rmw_vsip(CPURISCVState *env, int csrno, target_ulong *ret_value, + target_ulong new_value, target_ulong write_mask) +{ + /* Shift the S bits to their VS bit location in mip */ + int ret =3D rmw_mip(env, 0, ret_value, new_value << 1, + (write_mask << 1) & vsip_writable_mask & env->hidele= g); + *ret_value &=3D VS_MODE_INTERRUPTS; + /* Shift the VS bits to their S bit location in vsip */ + *ret_value >>=3D 1; + return ret; +} + static int rmw_sip(CPURISCVState *env, int csrno, target_ulong *ret_value, target_ulong new_value, target_ulong write_mask) { int ret; =20 if (riscv_cpu_virt_enabled(env)) { - /* Shift the new values to line up with the VS bits */ - ret =3D rmw_mip(env, CSR_MSTATUS, ret_value, new_value << 1, - (write_mask & sip_writable_mask) << 1 & env->mideleg= ); - ret &=3D vsip_writable_mask; - ret >>=3D 1; + ret =3D rmw_vsip(env, CSR_VSIP, ret_value, new_value, write_mask); } else { ret =3D rmw_mip(env, CSR_MSTATUS, ret_value, new_value, write_mask & env->mideleg & sip_writable_mask); @@ -1122,26 +1142,6 @@ static int write_vsstatus(CPURISCVState *env, int cs= rno, target_ulong val) return 0; } =20 -static int rmw_vsip(CPURISCVState *env, int csrno, target_ulong *ret_value, - target_ulong new_value, target_ulong write_mask) -{ - int ret =3D rmw_mip(env, 0, ret_value, new_value, - write_mask & env->mideleg & vsip_writable_mask); - return ret; -} - -static int read_vsie(CPURISCVState *env, int csrno, target_ulong *val) -{ - *val =3D env->mie & env->mideleg & VS_MODE_INTERRUPTS; - return 0; -} - -static int write_vsie(CPURISCVState *env, int csrno, target_ulong val) -{ - target_ulong newval =3D (env->mie & ~env->mideleg) | (val & env->midel= eg & MIP_VSSIP); - return write_mie(env, CSR_MIE, newval); -} - static int read_vstvec(CPURISCVState *env, int csrno, target_ulong *val) { *val =3D env->vstvec; --=20 2.30.1 From nobody Sat May 4 10:56:44 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=1616465217; cv=none; d=zohomail.com; s=zohoarc; b=fU3/Te3XuoyC2kWYiIs5niyEucm2RKsRqGEs3U7a5RvS//zV39afFl7iOoPond7WoUrvr5r39T938q5ntJQJ9ieaPb6jlynI1pkI2dacfZdCM95b1VTGMLJIhsmfuKfnrTulDMkGt62yjhO0AqPB3f77pCbsPm05sYLf2WKcKgA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1616465217; 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=MZf06f3B/dUAeVqv9o79L0+yX9WOnZLqP1eTxsOdVKQ=; b=Rs+Yrbb7RsC5wT0ziItE99OURVT968QZB+fTfjvvbdY70JPCcyQ9QadfET9DtIQ+azvbk2PpWbuG5pbDV36WIjYy9eITOIgiRUA8qaFKdyT2EFMuXfzUR95/+FCWAVCTF2s8ygB+d71oretjFhJdXHCMo9/2vY0/aYY1limUABo= 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 1616465217017963.549125620581; Mon, 22 Mar 2021 19:06:57 -0700 (PDT) Received: from localhost ([::1]:51336 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lOWRY-0001UP-EK for importer@patchew.org; Mon, 22 Mar 2021 22:06:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:50408) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOWKo-0002lF-Ue for qemu-devel@nongnu.org; Mon, 22 Mar 2021 21:59:54 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:2067) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOWKm-0006u2-OV for qemu-devel@nongnu.org; Mon, 22 Mar 2021 21:59:54 -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; 23 Mar 2021 09:59:39 +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; 22 Mar 2021 18:41:47 -0700 Received: from cn6ntbqq2.ad.shared (HELO alistair-risc6-laptop.hgst.com) ([10.86.49.5]) by uls-op-cesaip01.wdc.com with ESMTP; 22 Mar 2021 18:59: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=1616464792; x=1648000792; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=VISzj7nrHdSTOSETE9b6Nd1OPBUeFuhUpmZ+CkIAt6Q=; b=IiBa7mmDaaxoM4uAIT067PsFM5J+P3na0j0HjKO4z0307z6El8ncdDUL nj2D9n9duStc7X+tZPkw5UYOSgqCOvTTiN8qNoGLC2297NhO7LiUylR79 5GgEnc/yxl8kCFgNCdZoSUjbdWSZi3KctEkQZUqMzAu5QW4fU5LXjs/TB d1DAdvLmcWk1XVtsfqazSBZ5SdZOPS7SgoJsTShr6x9r0ygIXQQpeyESO 8nUacbSxU1GmNWDaIaq7vnj2tQZ6tXMpTM3QTY7Uj5uHdvoHNH/A7X2B4 l71mfmmZUI/MDqqmSElgskeZxf0MZnbha2Qd9jqHIicnjzR9VnMz52MjM g==; IronPort-SDR: kI8dWE/qEQ5j7xBmBB+aEOW+1FamnyndeKmQOL/p7n4R7IEE2a5WbzcNdPhPpF1piBsr0lkQo1 JoCV0lxsYVOrdBpA9GG4JE7wpdwNKiXIAxwTlydHMk5z2ZCHyI8naTD0TA1l8HMYyQAxO+fG4L 32K8/Odww1UbsNjo2/Nsxu5p/w3eI+m2YGlW+8XU03aFM+8207HBsdf7S6RbUa5yRAtva4O98Q ZL6o1OB9MOjmbpaFbvV7DJsK8wIBDPHspKT3gFB0WJojvNbV4SKqiapEGEyiBVJaGA0HtPnmvW 3ug= X-IronPort-AV: E=Sophos;i="5.81,270,1610380800"; d="scan'208";a="162707644" IronPort-SDR: wtPOUw/BS3HNiAgU0EK6gGBj0iVQ/qeTsqFRb/tJTFBfbBuvaJU4i++pIwA1sXE8CCSlQXR4rj bEB0eEjFgLTQ/dqX9akUtpd8PDrYbMZdiju8nf+2v8LfgqIGxEHoY76NC7tWC9GF/GKG2PXiu9 6ILQUjwe3Y3gE2GzXYUlboLDlq+tlAq1uGfgyD6OgcmjvRDLO4wPyotg8mGwnIMi8AvKA4lDxT uVIOIVcIECMH7vDXp37jtUDLNtAqr858SoL1I7uJkiHv5VBtxbVGBRip8j646zBfEZry8VuEyY PSuclnxw7BKwqR9Jvre3IHYo IronPort-SDR: TjZZ+/Es6ejcOcAFQtG/wfnSr+p/cVASPBxpqTg5qvVdJIuQqFqi85mWULYj9nC2JDeJ2sJ0YH 4fytwfCyj1JQystfgj7z7UynuWHaBqNMq34QoxxzvAzQz3+zLG0qqj7iAGc+pLiIjLWsn6W4S8 IdF4nq59l3wuyiUjEV+/GxK7kpTCMzvl9zRvrn29wo3pe65VGjkL5ZxVJd5rHg1ejHPU79MAVu 6BEQGFB75tEPGPaT1YgcoK1YrzI+5PelUbwIyVj/3UVsPDwiCOgiLI3/nZlbRXMmOOO65YVNQ4 9Vo= WDCIronportException: Internal From: Alistair Francis To: peter.maydell@linaro.org Subject: [PULL 12/16] target/riscv: Add proper two-stage lookup exception detection Date: Mon, 22 Mar 2021 21:57:52 -0400 Message-Id: <20210323015756.3168650-13-alistair.francis@wdc.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210323015756.3168650-1-alistair.francis@wdc.com> References: <20210323015756.3168650-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=709ee912d=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: alistair23@gmail.com, Alistair Francis , qemu-devel@nongnu.org, Georg Kotheimer 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: Georg Kotheimer The current two-stage lookup detection in riscv_cpu_do_interrupt falls short of its purpose, as all it checks is whether two-stage address translation either via the hypervisor-load store instructions or the MPRV feature would be allowed. What we really need instead is whether two-stage address translation was active when the exception was raised. However, in riscv_cpu_do_interrupt we do not have the information to reliably detect this. Therefore, when we raise a memory fault exception we have to record whether two-stage address translation is active. Signed-off-by: Georg Kotheimer Reviewed-by: Alistair Francis Message-id: 20210319141459.1196741-1-georg.kotheimer@kernkonzept.com Signed-off-by: Alistair Francis --- target/riscv/cpu.h | 4 ++++ target/riscv/cpu.c | 1 + target/riscv/cpu_helper.c | 21 ++++++++------------- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 0edb2826a2..0a33d387ba 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -213,6 +213,10 @@ struct CPURISCVState { target_ulong satp_hs; uint64_t mstatus_hs; =20 + /* Signals whether the current exception occurred with two-stage addre= ss + translation active. */ + bool two_stage_lookup; + target_ulong scounteren; target_ulong mcounteren; =20 diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index 2a990f6253..7d6ed80f6b 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -356,6 +356,7 @@ static void riscv_cpu_reset(DeviceState *dev) env->mstatus &=3D ~(MSTATUS_MIE | MSTATUS_MPRV); env->mcause =3D 0; env->pc =3D env->resetvec; + env->two_stage_lookup =3D false; #endif cs->exception_index =3D EXCP_NONE; env->load_res =3D -1; diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index 8d4a62988d..21c54ef561 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -654,6 +654,7 @@ static void raise_mmu_exception(CPURISCVState *env, tar= get_ulong address, g_assert_not_reached(); } env->badaddr =3D address; + env->two_stage_lookup =3D two_stage; } =20 hwaddr riscv_cpu_get_phys_page_debug(CPUState *cs, vaddr addr) @@ -695,6 +696,8 @@ void riscv_cpu_do_transaction_failed(CPUState *cs, hwad= dr physaddr, } =20 env->badaddr =3D addr; + env->two_stage_lookup =3D riscv_cpu_virt_enabled(env) || + riscv_cpu_two_stage_lookup(mmu_idx); riscv_raise_exception(&cpu->env, cs->exception_index, retaddr); } =20 @@ -718,6 +721,8 @@ void riscv_cpu_do_unaligned_access(CPUState *cs, vaddr = addr, g_assert_not_reached(); } env->badaddr =3D addr; + env->two_stage_lookup =3D riscv_cpu_virt_enabled(env) || + riscv_cpu_two_stage_lookup(mmu_idx); riscv_raise_exception(env, cs->exception_index, retaddr); } #endif /* !CONFIG_USER_ONLY */ @@ -967,16 +972,8 @@ void riscv_cpu_do_interrupt(CPUState *cs) /* handle the trap in S-mode */ if (riscv_has_ext(env, RVH)) { target_ulong hdeleg =3D async ? env->hideleg : env->hedeleg; - bool two_stage_lookup =3D false; =20 - if (env->priv =3D=3D PRV_M || - (env->priv =3D=3D PRV_S && !riscv_cpu_virt_enabled(env)) || - (env->priv =3D=3D PRV_U && !riscv_cpu_virt_enabled(env) && - get_field(env->hstatus, HSTATUS_HU))) { - two_stage_lookup =3D true; - } - - if ((riscv_cpu_virt_enabled(env) || two_stage_lookup) && write= _tval) { + if (env->two_stage_lookup && write_tval) { /* * If we are writing a guest virtual address to stval, set * this to 1. If we are trapping to VS we will set this to= 0 @@ -1014,10 +1011,7 @@ void riscv_cpu_do_interrupt(CPUState *cs) riscv_cpu_set_force_hs_excep(env, 0); } else { /* Trap into HS mode */ - if (!two_stage_lookup) { - env->hstatus =3D set_field(env->hstatus, HSTATUS_SPV, - riscv_cpu_virt_enabled(env)); - } + env->hstatus =3D set_field(env->hstatus, HSTATUS_SPV, fals= e); htval =3D env->guest_phys_fault_addr; } } @@ -1073,6 +1067,7 @@ void riscv_cpu_do_interrupt(CPUState *cs) * RISC-V ISA Specification. */ =20 + env->two_stage_lookup =3D false; #endif cs->exception_index =3D EXCP_NONE; /* mark handled to qemu */ } --=20 2.30.1 From nobody Sat May 4 10:56:44 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=1616465781; cv=none; d=zohomail.com; s=zohoarc; b=aAe9lunPNzg+MOJ5/nJyBcdC7yr0YeMl4cZNzW3GCXAPJpjeJC5Ax08W8xONKgOYCv9pFRSIqsnKEPJMApt+sZ8H35jKXfk0rQrAyHCf+L2HbgF7CK5sUwRLxjOWErdsWInlSsFvQvTQIvF07IzClQi1rMYYW/TFTTBJ9uhbFac= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1616465781; 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=e5cfQCXstBj8tj1vSnxsFIY9wg+zzHAmeKO00ANlsvI=; b=llTq/fH7krk0IPc2aAN/KmJre5mm7dTnuGvR7Pp5Ac2GWwivE0meTU+PrkH1tUDPFwxCTtfjdIzBs4ixTK0IeEJgDEngpNYhoM2imhOiD49gmMXD2adODHfoGTHnvNaWX0KJInqxwgAHoHJ/XwjBHH4dUIeJSJUwR1IX/+YSMY8= 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 1616465781499949.8125735588131; Mon, 22 Mar 2021 19:16:21 -0700 (PDT) Received: from localhost ([::1]:43486 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lOWai-000229-Bn for importer@patchew.org; Mon, 22 Mar 2021 22:16:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:50448) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOWKz-00038u-9U for qemu-devel@nongnu.org; Mon, 22 Mar 2021 22:00:05 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:2072) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOWKx-0006vy-9i for qemu-devel@nongnu.org; Mon, 22 Mar 2021 22:00:05 -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; 23 Mar 2021 09:59:40 +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; 22 Mar 2021 18:41:48 -0700 Received: from cn6ntbqq2.ad.shared (HELO alistair-risc6-laptop.hgst.com) ([10.86.49.5]) by uls-op-cesaip01.wdc.com with ESMTP; 22 Mar 2021 18:59:40 -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=1616464803; x=1648000803; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Pt+zzFWzl+7OxRVTSTlImJ1fRb2/n5V0OkAn7vFbaQY=; b=k8qIUAet08IYR1bfGvn4OfnAUQcVoAgZCBPPFBKGeP1W/DUQUJmkMdvS un3qHwJnoSbfk3EvHqY7X9guhIHxejFI52HjSn1K+e02l/xUMQ9DjB4sm 7GSSai3knF5vDscpZrWHYKkicM/xvzHeYHY/YTB+PRGVzjpSbNZxzI5/L Ei4HY30MaPFBd3vMyCrOhnzZmoKo37hAYuTexIHT/3ebEzQCo9BzZdNOc Jv2rRvQvLxYfg/sOZnLsUIxRAlSbmv31Ct2rLGqxH0kz+vvnhxJRTtvsb V7JGKf8zxq1kV6VPdvYDq4leL43m93FYFiNugvY29x79Tqzuh8bT8nSaB A==; IronPort-SDR: ynlty6keeFddtMSNqpN5nwlr/3EchqkDOFTbkdl0NJBB0GSQm6C3pkH4BE4vdWnravSFQ+FHQi 5M84+n7oLvid3bHnN3ntYHXzE2/Z7KvIBF0PPFDkELIkRZ53LC16toreDRcqaqbOWOEuxOIjQh peQlScp81JSCZgg6eCwx8eUIdMunjxAFuLNKw8CDoE9RFTQY2JxIDvCha3UwbwsFzsPWkyBLcf UJUKbS4GeNUrFh3YQXKWn/63iHbb/COZ6GxpqrHwNuyelFNxzFF/KKedz2hk/4CJweIfRKpG8W ffY= X-IronPort-AV: E=Sophos;i="5.81,270,1610380800"; d="scan'208";a="162707645" IronPort-SDR: fjJotshFsdQ02W8SDOV+Rf9uUwiKJrs0frSEY2K7BUa7vhsSncW/cgJY4jfxKceNss5pMP6vxL zs+LBIqJr7ndSIm3GCbHBdpwZ5T7sFy0ftPgoQc5Eci/Ii7gzfs/9qACukTqS+AgvOxbi1Okwk Yd20WnN9FceyMT3oQFhIFCheO4u1lNrXt8EZZQn46UayBii+xMtVYc1/bsZcVrrk0oyYc2IqFk MoD2FoGiKodh2wuL2Hg92l8CHnSt/XR/2ZwPVxUGhZgIh92pdbHN9y08hVWhpT/rZirxr/qL1N NdzxuJTmAoiVOz68OcbH6Qmz IronPort-SDR: kybWN8yaz672PCB0mVQuVlrp9TqL/0F8sXMUr636Xi8puDCQxL1kmtMcRPlJU/Ubl8Wu/NEsFD Chs223spk1JaXogQZfL3nmJvzXKsttgp4aFgVg5nXVCao/DnL2t2oKAynUliHffFOjvLKFrgXn QxzHVey1oWWx+aUn/sMJHQM/TjdEz2vqBeFe+mOnF/BEUyySte33K6txbw0FcXfoj4PQfrUQ1E RXRGgXqMHxOJ1GfhKMU1n7rpPSNWkSP8y7QDC0jm4bQ2Aiuz1Jgp2dFlOJ7GJDvYEStTwPxjXC NP8= WDCIronportException: Internal From: Alistair Francis To: peter.maydell@linaro.org Subject: [PULL 13/16] hw/block: m25p80: Support fast read for SST flashes Date: Mon, 22 Mar 2021 21:57:53 -0400 Message-Id: <20210323015756.3168650-14-alistair.francis@wdc.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210323015756.3168650-1-alistair.francis@wdc.com> References: <20210323015756.3168650-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=709ee912d=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: alistair23@gmail.com, Bin Meng , Alistair Francis , qemu-devel@nongnu.org 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: Bin Meng Per SST25VF016B datasheet [1], SST flash requires a dummy byte after the address bytes. Note only SPI mode is supported by SST flashes. [1] http://ww1.microchip.com/downloads/en/devicedoc/s71271_04.pdf Signed-off-by: Bin Meng Acked-by: Alistair Francis Message-id: 20210306060152.7250-1-bmeng.cn@gmail.com Signed-off-by: Alistair Francis --- hw/block/m25p80.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c index 5f9471d83c..183d3f44c2 100644 --- a/hw/block/m25p80.c +++ b/hw/block/m25p80.c @@ -895,6 +895,9 @@ static void decode_fast_read_cmd(Flash *s) s->needed_bytes =3D get_addr_length(s); switch (get_man(s)) { /* Dummy cycles - modeled with bytes writes instead of bits */ + case MAN_SST: + s->needed_bytes +=3D 1; + break; case MAN_WINBOND: s->needed_bytes +=3D 8; break; --=20 2.30.1 From nobody Sat May 4 10:56:44 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=1616465865; cv=none; d=zohomail.com; s=zohoarc; b=L0MzsiP66iCWTnHNJgbDgt9M+z+OJycs2KI2xF1N1CPIVBcV22dU5F4sjOPO+uKBGNccf5SEJRqIiYfYgTPx0GciP6JBpzjrmvx4/2FsNOngUGBTjeVNpV9IVyvHHtjyJMtjU+afbz0koLwD7W9cM/veg6zXicnM7nwCcs1RKh4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1616465865; 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=Pg4MlXCqqmOr2q3JPvJFNGjXWhgoxgp7gxcKJYolEa0=; b=cQ78E3oKGmda9il/vhD7yod0LCipwj4UHINOzRUyXddOvhqRHuOhwNIyzXILVu/0doLyOK1d370QSQkbepeXyTbNvZ0DmQhAvjYONW1bv6AUV0T5DZjRRcbEhnysrL46eCET/yueIypO16lvdkATmbayoz2VW5AugpiFxLsGjr8= 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 1616465865670582.0586458481284; Mon, 22 Mar 2021 19:17:45 -0700 (PDT) Received: from localhost ([::1]:45516 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lOWc4-0002vM-JV for importer@patchew.org; Mon, 22 Mar 2021 22:17:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:50474) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOWL0-0003Bt-LD for qemu-devel@nongnu.org; Mon, 22 Mar 2021 22:00:06 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:2065) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOWKy-0006tH-Mg for qemu-devel@nongnu.org; Mon, 22 Mar 2021 22:00:06 -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; 23 Mar 2021 09:59:41 +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; 22 Mar 2021 18:41:49 -0700 Received: from cn6ntbqq2.ad.shared (HELO alistair-risc6-laptop.hgst.com) ([10.86.49.5]) by uls-op-cesaip01.wdc.com with ESMTP; 22 Mar 2021 18:59:41 -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=1616464804; x=1648000804; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=mXSaw2aL0sxPF+xu4Mg8aZKNjLty8M+Q4NARUvJlxh8=; b=Xby+/rR7AYQzdS85OoQbIOgJ8uRJO3JBFjw2uLuEQRB3KrQHm9w47UjJ +yIpjE7YNqQVbfo40sXppSYbm7PJn+M8OA5xAaRyWg7iJwrUOLvQArZ7G i5LAY6tgQ9yqMBwsogAlXwALxRmD3GVBlW9rN1JdXE0TKUgfWdVMxFjok V2UGS2TskIQL5Pxein0kofn9iATB25k1m+WwdKmsh+t5tuiKhEBKOGzYe qKrrEAN0SH8cb+tkLOP2ERUzNazCrHELyQhbqWAgPd33IkLUQT9/z+lOf ePPgvqIXO+OtA1fQ4HD0tNSgv1qdYlrOb9m3ZXcnNpzlnS3X1m2KSM8dT A==; IronPort-SDR: A/5eb2w/Vh6ocFZ8cHY2cAa3UTYrGogSKFx2Kk79e5BVB2rxjsRqxoWgdWItdl7Ay6Sicbxcy2 ucj//pRNIdTRPO1mUr1g9Z+TYQN1KuGc1pXTibYP0qOt9bmR6QVb/PhQX8Ftem1zczxj1UUqLm bPA1wLpttRMwlPq4bx5upuk7HLEqHFnsu9Do/cuoYNLyn5PBY4gj16uvGGFrSayhLFw7zPHNCL 0PfYN4ySIKosqnfKTSJHPbn+lZbAYr9Ns/BrESj+TMAkhUZbKuFGcp+X8uTy2xkOPErzCscZHf G0k= X-IronPort-AV: E=Sophos;i="5.81,270,1610380800"; d="scan'208";a="162707648" IronPort-SDR: Z44toVkR9c0qHw9/Nbl+6KhCiWjOWefkg6wc80z2ZG7zWBGHuOAfytYXXaoBMw3Epgcr65IIWb MVaRStOAatQo/2IKF4SBeX8xjNbUfcxOiZv6etnljl6DevNKYaU254odRIW4v+o9KIlU15G4Jl L11tmqD3YEGtCCMTS/TtmP3flB2Q3/Z9aEPlumFEoUURbb+A5okj4z08mLPMdvj2OW5Dqch60v qQkkYy7TRXhhwHLCUVwoUr5z1FYSAAlsp+rRXnQSVGpJA9MPhzvZQola02Gpo8ZgFdVm2L/+4b rUtI0kqICY7HBrAY30/3CBoL IronPort-SDR: uU8EqSWiT5pSXY4wKIgdIaTHXhsFORyN5XL2vapNpwvE5Fruqd/pGiifPLuksUmeUrA5Snxn8h bvsbiBEWGBnipC7yIv8dA07u++Gadr3OdNVDCUdG1Y12zBl9YjBWC4JG1hT/aTKHeZLT+bpP/9 S0bHTVDAn8p2JRfMucKffID+VrFUNb7279+IcV2WubTC49+6jULeq0zwb9hwxu8R+z0wP0VzBT qoJv345Jucc5hcGkn+B34KVBBBgzrRjDUm/wiUFdh2DR9rpgCK2p+wxKvLbOknt5xX+ggx4Q+0 EXY= WDCIronportException: Internal From: Alistair Francis To: peter.maydell@linaro.org Subject: [PULL 14/16] hw/riscv: microchip_pfsoc: Map EMMC/SD mux register Date: Mon, 22 Mar 2021 21:57:54 -0400 Message-Id: <20210323015756.3168650-15-alistair.francis@wdc.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210323015756.3168650-1-alistair.francis@wdc.com> References: <20210323015756.3168650-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=709ee912d=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: alistair23@gmail.com, Bin Meng , Alistair Francis , qemu-devel@nongnu.org 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: Bin Meng Since HSS commit c20a89f8dcac, the Icicle Kit reference design has been updated to use a register mapped at 0x4f000000 instead of a GPIO to control whether eMMC or SD card is to be used. With this support the same HSS image can be used for both eMMC and SD card boot flow, while previously two different board configurations were used. This is undocumented but one can take a look at the HSS code HSS_MMCInit() in services/mmc/mmc_api.c. With this commit, HSS image built from 2020.12 release boots again. Signed-off-by: Bin Meng Reviewed-by: Alistair Francis Message-id: 20210322075248.136255-1-bmeng.cn@gmail.com Signed-off-by: Alistair Francis --- include/hw/riscv/microchip_pfsoc.h | 1 + hw/riscv/microchip_pfsoc.c | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/include/hw/riscv/microchip_pfsoc.h b/include/hw/riscv/microchi= p_pfsoc.h index d0c666aae0..d30916f45d 100644 --- a/include/hw/riscv/microchip_pfsoc.h +++ b/include/hw/riscv/microchip_pfsoc.h @@ -109,6 +109,7 @@ enum { MICROCHIP_PFSOC_ENVM_DATA, MICROCHIP_PFSOC_QSPI_XIP, MICROCHIP_PFSOC_IOSCB, + MICROCHIP_PFSOC_EMMC_SD_MUX, MICROCHIP_PFSOC_DRAM_LO, MICROCHIP_PFSOC_DRAM_LO_ALIAS, MICROCHIP_PFSOC_DRAM_HI, diff --git a/hw/riscv/microchip_pfsoc.c b/hw/riscv/microchip_pfsoc.c index 266f1c3342..c4146b7a6b 100644 --- a/hw/riscv/microchip_pfsoc.c +++ b/hw/riscv/microchip_pfsoc.c @@ -122,6 +122,7 @@ static const MemMapEntry microchip_pfsoc_memmap[] =3D { [MICROCHIP_PFSOC_ENVM_DATA] =3D { 0x20220000, 0x20000 }, [MICROCHIP_PFSOC_QSPI_XIP] =3D { 0x21000000, 0x1000000 }, [MICROCHIP_PFSOC_IOSCB] =3D { 0x30000000, 0x10000000 }, + [MICROCHIP_PFSOC_EMMC_SD_MUX] =3D { 0x4f000000, 0x4 }, [MICROCHIP_PFSOC_DRAM_LO] =3D { 0x80000000, 0x40000000 }, [MICROCHIP_PFSOC_DRAM_LO_ALIAS] =3D { 0xc0000000, 0x40000000 }, [MICROCHIP_PFSOC_DRAM_HI] =3D { 0x1000000000, 0x0 }, @@ -411,6 +412,11 @@ static void microchip_pfsoc_soc_realize(DeviceState *d= ev, Error **errp) sysbus_mmio_map(SYS_BUS_DEVICE(&s->ioscb), 0, memmap[MICROCHIP_PFSOC_IOSCB].base); =20 + /* eMMC/SD mux */ + create_unimplemented_device("microchip.pfsoc.emmc_sd_mux", + memmap[MICROCHIP_PFSOC_EMMC_SD_MUX].base, + memmap[MICROCHIP_PFSOC_EMMC_SD_MUX].size); + /* QSPI Flash */ memory_region_init_rom(qspi_xip_mem, OBJECT(dev), "microchip.pfsoc.qspi_xip", --=20 2.30.1 From nobody Sat May 4 10:56:44 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=1616465922; cv=none; d=zohomail.com; s=zohoarc; b=JP3CDYt6ANy8lmaXZAU/MXgJhHMivnvX/WeantCEQ8o7yJ9gBQhKyuHZx9gyGzeXphUeok3eEIW0uGnlNd1n7CSRr3+Wi0x0cSIVeZRF+Ht3+7I2jNEk8sMu4r7OKmqETEgvM9m2vzD5lsaQaLhUUVvMTvx8DKQPaccn5qEfcnc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1616465922; 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=M+ulnOSLVefs/16yhNdiM8Y++47yON6XMpcHQvYf5DE=; b=cwJwv1PbkSqhE4QaQEuLHJDycJqnsXcIh4QnldCUX2V3YdAu7TLrelYkq54bHuSW0wrnSjWq4jU3TI66CZHBlo/McEZ4a5VxwKHs+qfC6yyZK+FvwMrLxhzeCXm7IfmR7RFqNjlxGf1eqPKVCLuzA9jbmODJL2X9qG/Qq/a8KZk= 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 1616465922782707.7418472968938; Mon, 22 Mar 2021 19:18:42 -0700 (PDT) Received: from localhost ([::1]:47532 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lOWcz-0003lA-Ns for importer@patchew.org; Mon, 22 Mar 2021 22:18:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:50510) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOWL2-0003EX-IO for qemu-devel@nongnu.org; Mon, 22 Mar 2021 22:00:08 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:2067) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOWKz-0006u2-8a for qemu-devel@nongnu.org; Mon, 22 Mar 2021 22:00:08 -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; 23 Mar 2021 09:59:42 +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; 22 Mar 2021 18:41:50 -0700 Received: from cn6ntbqq2.ad.shared (HELO alistair-risc6-laptop.hgst.com) ([10.86.49.5]) by uls-op-cesaip01.wdc.com with ESMTP; 22 Mar 2021 18:59: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=1616464805; x=1648000805; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=JqAr5E9Kwf9A6+nylYqrMWH8g9p+Y3TFjSNQCa1EmAo=; b=al4gd1Wk6MbLYjgmPDxHnnXSQKFjEnMJZit4ahctradt4ZonaeVNJllB GSYjHtPvqQozX3Had4zxMNzxz4PfkxcdgEqZ/dvdGxUrC752qICRRqM0N DN+eXbZ9CH4fRcTBejemXtt/db8qw0jwBs+NSQDJUELQIHjzx5j7R+YW1 31aGf8k7T0jyimDdJLHeDQIVFybY1+caZRuJQ1s7si3nXpz3V+Anfy6NH YNraH+VbUPXv56Rg6yessX+VqckZDmuMPo3Di3KXRLfNit3YpqmEw0jpI hnsqxNEPNUJKTmBsU1PHY0WoxM4QrAeT5HkStzfOWjxY8KZPsCPA+uxTS Q==; IronPort-SDR: MntLIENEdwFVjd+7NhIRnzkGcCQbrBA468mGLhT+QNMzsSYasx1PaLHGB0yWATmPKfJedvMczb 6+9toCiPlT02gEJu6VbQqYvYxDzG507AqJLo9M6dU8sC8JPC7ghcMARcBbtbypCQ5JETgJa9e4 NqlBFvIBiG8gfWdV5kkO7l4jTPtXb+0FBvtTxcjHsQCsBFOBflkcJj0Qs1as9r3AB05jxVCU0i N4+1J1GfRZjpy/7t1Jum4TQ3LV30QN0Wubt4HOlCh1L7Cg5MhFwD/sSRINd5c6xaT58dqbVlDa Ltc= X-IronPort-AV: E=Sophos;i="5.81,270,1610380800"; d="scan'208";a="162707650" IronPort-SDR: MnJb9HruOKJAMy9RcL+E5IqcEpYj0rUAavJvXsIPJomRP/w0WWy7OpAyDTDBZqaq0TYANGGWxM THh20k0JZ/kyTSXK7VIhV6sqWZK8fqs79Mgegf439bQk61EFnW8pflUh2nqnwCNv7EQE2iSZvy DUtnyi5x0fgQZuDqKa8Va5ozHf0nRBJgrcZQNntBpwo/dLqib/zvMbREBj39qlhEp8IISMzvFk hz9cfCpm20eXMOxApSyAWWEHCXAVQecudw2cdWB69BX/T9mQpUiXmc12ne6x7TgFJPqD441tUm /4OVmMY7nmIfkgJk2BWDBqwy IronPort-SDR: B0Gd8fC891gWF4dOh5u0A+xQzxijc3PKZv6/PjowsFkm8AJ8ilawgabd9rQhT0m0AfY6Zi4anj s2jIZUYec0Fl1BueEH7VX0yIAeMGhZnrgfdYUhu4AxR9pwDdOV1mcopCqrquVZ5zr8KKHzMpVs MJvdszvDbdOyD6Nf0ndsr0dfMfGiD722W99g1Ngd614lXvyc37zpUbiTIDTTVWnTobUCDjxaD/ Z+UwsBl7bQDhMFMEolV3Os0wVrQISlDtcwfVaw5zJq2d6FL7RN2RrNmAVIYxOKsrmgFYxEKSr+ az4= WDCIronportException: Internal From: Alistair Francis To: peter.maydell@linaro.org Subject: [PULL 15/16] docs/system: riscv: Add documentation for 'microchip-icicle-kit' machine Date: Mon, 22 Mar 2021 21:57:55 -0400 Message-Id: <20210323015756.3168650-16-alistair.francis@wdc.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210323015756.3168650-1-alistair.francis@wdc.com> References: <20210323015756.3168650-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=709ee912d=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: alistair23@gmail.com, Bin Meng , Alistair Francis , qemu-devel@nongnu.org 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: Bin Meng This adds the documentation to describe what is supported for the 'microchip-icicle-kit' machine, and how to boot the machine in QEMU. Signed-off-by: Bin Meng Reviewed-by: Alistair Francis Message-id: 20210322075248.136255-2-bmeng.cn@gmail.com Signed-off-by: Alistair Francis --- docs/system/riscv/microchip-icicle-kit.rst | 89 ++++++++++++++++++++++ docs/system/target-riscv.rst | 1 + 2 files changed, 90 insertions(+) create mode 100644 docs/system/riscv/microchip-icicle-kit.rst diff --git a/docs/system/riscv/microchip-icicle-kit.rst b/docs/system/riscv= /microchip-icicle-kit.rst new file mode 100644 index 0000000000..4fe97bce3f --- /dev/null +++ b/docs/system/riscv/microchip-icicle-kit.rst @@ -0,0 +1,89 @@ +Microchip PolarFire SoC Icicle Kit (``microchip-icicle-kit``) +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +Microchip PolarFire SoC Icicle Kit integrates a PolarFire SoC, with one +SiFive's E51 plus four U54 cores and many on-chip peripherals and an FPGA. + +For more details about Microchip PolarFire SoC, please see: +https://www.microsemi.com/product-directory/soc-fpgas/5498-polarfire-soc-f= pga + +The Icicle Kit board information can be found here: +https://www.microsemi.com/existing-parts/parts/152514 + +Supported devices +----------------- + +The ``microchip-icicle-kit`` machine supports the following devices: + + * 1 E51 core + * 4 U54 cores + * Core Level Interruptor (CLINT) + * Platform-Level Interrupt Controller (PLIC) + * L2 Loosely Integrated Memory (L2-LIM) + * DDR memory controller + * 5 MMUARTs + * 1 DMA controller + * 2 GEM Ethernet controllers + * 1 SDHC storage controller + +Boot options +------------ + +The ``microchip-icicle-kit`` machine can start using the standard -bios +functionality for loading its BIOS image, aka Hart Software Services (HSS_= ). +HSS loads the second stage bootloader U-Boot from an SD card. It does not +support direct kernel loading via the -kernel option. One has to load kern= el +from U-Boot. + +The memory is set to 1537 MiB by default which is the minimum required high +memory size by HSS. A sanity check on ram size is performed in the machine +init routine to prompt user to increase the RAM size to > 1537 MiB when le= ss +than 1537 MiB ram is detected. + +Boot the machine +---------------- + +HSS 2020.12 release is tested at the time of writing. To build an HSS image +that can be booted by the ``microchip-icicle-kit`` machine, type the follo= wing +in the HSS source tree: + +.. code-block:: bash + + $ export CROSS_COMPILE=3Driscv64-linux- + $ cp boards/mpfs-icicle-kit-es/def_config .config + $ make BOARD=3Dmpfs-icicle-kit-es + +Download the official SD card image released by Microchip and prepare it f= or +QEMU usage: + +.. code-block:: bash + + $ wget ftp://ftpsoc.microsemi.com/outgoing/core-image-minimal-dev-icicle= -kit-es-sd-20201009141623.rootfs.wic.gz + $ gunzip core-image-minimal-dev-icicle-kit-es-sd-20201009141623.rootfs.w= ic.gz + $ qemu-img resize core-image-minimal-dev-icicle-kit-es-sd-20201009141623= .rootfs.wic 4G + +Then we can boot the machine by: + +.. code-block:: bash + + $ qemu-system-riscv64 -M microchip-icicle-kit -smp 5 \ + -bios path/to/hss.bin -sd path/to/sdcard.img \ + -nic user,model=3Dcadence_gem \ + -nic tap,ifname=3Dtap,model=3Dcadence_gem,script=3Dno \ + -display none -serial stdio \ + -chardev socket,id=3Dserial1,path=3Dserial1.sock,server=3Don,wait=3D= on \ + -serial chardev:serial1 + +With above command line, current terminal session will be used for the fir= st +serial port. Open another terminal window, and use `minicom` to connect the +second serial port. + +.. code-block:: bash + + $ minicom -D unix\#serial1.sock + +HSS output is on the first serial port (stdio) and U-Boot outputs on the +second serial port. U-Boot will automatically load the Linux kernel from +the SD card image. + +.. _HSS: https://github.com/polarfire-soc/hart-software-services diff --git a/docs/system/target-riscv.rst b/docs/system/target-riscv.rst index 94d99c4c82..8d5946fbbb 100644 --- a/docs/system/target-riscv.rst +++ b/docs/system/target-riscv.rst @@ -66,6 +66,7 @@ undocumented; you can get a complete list by running .. toctree:: :maxdepth: 1 =20 + riscv/microchip-icicle-kit riscv/sifive_u =20 RISC-V CPU features --=20 2.30.1 From nobody Sat May 4 10:56:44 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=1616465358; cv=none; d=zohomail.com; s=zohoarc; b=QnNdHoLO9fSWjqhtVyfTiA+9FOYxRgv7f5Ec0sAr3ZqCZvkDwgkZDJpowZh1dVURxKXKdhG0uh8O/Ycb//mbHHjD+UfcKBxQIbdI1rrcHl3KL0TSFe2kG5Io7A/FqGbW5aBrT/O9rJWixXdCz38dP8M5fW1WplO+Rh1QIMxLzrU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1616465358; 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=GxIMu4feI6l/Gb8ZuUJVLjYVynPPnNzubpCRpSupZtQ=; b=W7D8jl1rNbXONhMzwjQJbpv+kHkqqL9TtEVz/P1KM8Ea+x4ymX8mhpJsDBBvT7C9qIMEbrduf/ZkMTXAcD5GIGJvxzSBkYJdciGC6x5Urh1SAP916h7Wfq6bqvLHmSAsiu+i+Juohvf/KUoADj7A/0uR3ia8KTgPoDv5pBMX3Rc= 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 1616465358095116.94450084388461; Mon, 22 Mar 2021 19:09:18 -0700 (PDT) Received: from localhost ([::1]:57434 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lOWTs-00045X-Ho for importer@patchew.org; Mon, 22 Mar 2021 22:09:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:50584) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOWLC-0003Ki-Hj for qemu-devel@nongnu.org; Mon, 22 Mar 2021 22:00:18 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:2072) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOWL9-0006vy-LO for qemu-devel@nongnu.org; Mon, 22 Mar 2021 22:00:18 -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; 23 Mar 2021 09:59:43 +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; 22 Mar 2021 18:41:51 -0700 Received: from cn6ntbqq2.ad.shared (HELO alistair-risc6-laptop.hgst.com) ([10.86.49.5]) by uls-op-cesaip01.wdc.com with ESMTP; 22 Mar 2021 18:59:43 -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=1616464815; x=1648000815; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=TNfZPyDFekoOK3g9jUros8f9G/7SOUpQtng8jnIX0Bk=; b=an6wkyUdB1lo6qZRvl8PlaWiJLd8P9ZFsNSTQawhkXaCv4pk2MXuM0Pt EI7QCn1cd5zNocWiexSqAf/ZuH/soJEY4zGV5a8EyQkdfY/MeXkz3iZJk z3z9lwcwolQ94ictI3aSm1ylDwKVyYPBTJFUMbO8jKwX5SHFPfYEf/8Hf XqS1h2njCFSAcTkKXUBVBfc9xCEQWIcu3KXeZxi504J5BULRE2GfagQDa UNDI5HAOcuAQPqB/vT4L1bQ3pIwRJwcUBAGsPednHcCW8Pbl1AwQXzyXn h4loR307oJKcZML6nQq3+B0v0j/D61M6aBYjcIv40FbM+VvfcURg+/WIG Q==; IronPort-SDR: Eqf5vAHkl+Z2coKQN7EklffjPQSVsBjsY8lISt3RA/zg19WbzeK4hV3hf5YBxkp1i+adjwimkC VS9lBI9fQ5XuPbhKjE408AJSGpO7O4rtH51JFsRZREGqKtKUiG1HuY53APuW7ZImiJujYYNDL8 TwVGiTcldU7Eeb9unSIaPFqlx5tcbCyd5T006/LBOvGeqWXEcSwGUym1+eluKkeTnyj/0Ijyes ewMrXWJedf6EcIZCC9TNWaRGoON1hu3cgybRB6k1Ta/tSNYuWMkjftVwwShcWIXeJ3FlqI7Or9 GqY= X-IronPort-AV: E=Sophos;i="5.81,270,1610380800"; d="scan'208";a="162707651" IronPort-SDR: bXp2WMB7n/YrCrJgvRfvmPCqMvckd6wJT5bLmUbEEy0tRLc374JTOQMA8qw7PLk2gJEwVeCQ/D lQDjNApzCeYSOksgBOTv6b5KXpbu2xJhLTmfeEV6E2/7aRn/0MiY2+jdAK7FK0eXSGnOUj+c1W nzClXSlJBQxmPOCnCpkQAwwebw/7T9C7zuBLNw9xJx0OaoBvSM6Eab+149mmKEbyUVBJoBwwhm N32aVc15ZPAhqDRL6ns3Pc/uD6YjfO200oTKIrNH6sFjVWlb1PZHueqkf4w8OiOGpULkNUmjFn mdVKF8vLd6BQg1tLqdsVsYt9 IronPort-SDR: 8SpmuZWcSRmM46oi//b0EiwaCT2jWwaAtmFAnv/heqqecC1FquROhef6zeSQgYg53GM4O3nvfO kclDace5veUYE71R1BfsAIkUA7VUa65djKBAsPJ34wMn2Kxg4Pxo4JI9o75U0QAkDEFK8c3eTz 9GsyD0mfJNQMt9CnqmoxKdYEDeDFFvm58bt0+ksOROfW0hr5NwxT4t+Jhd3q1sJ44skUD9VqAi GIRCeWsiSmvzXfNlhNDPPneS9ZftHc0Un2uQvBqjnpqRe5A77xeRXIBsTl2eCxWkzTRU3fPF3c 7EI= WDCIronportException: Internal From: Alistair Francis To: peter.maydell@linaro.org Subject: [PULL 16/16] target/riscv: Prevent lost illegal instruction exceptions Date: Mon, 22 Mar 2021 21:57:56 -0400 Message-Id: <20210323015756.3168650-17-alistair.francis@wdc.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210323015756.3168650-1-alistair.francis@wdc.com> References: <20210323015756.3168650-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=709ee912d=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: alistair23@gmail.com, Richard Henderson , Alistair Francis , qemu-devel@nongnu.org, Georg Kotheimer 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: Georg Kotheimer When decode_insn16() fails, we fall back to decode_RV32_64C() for further compressed instruction decoding. However, prior to this change, we did not raise an illegal instruction exception, if decode_RV32_64C() fails to decode the instruction. This means that we skipped illegal compressed instructions instead of raising an illegal instruction exception. Instead of patching decode_RV32_64C(), we can just remove it, as it is dead code since f330433b363 anyway. Signed-off-by: Georg Kotheimer Reviewed-by: Alistair Francis Reviewed-by: Richard Henderson Message-id: 20210322121609.3097928-1-georg.kotheimer@kernkonzept.com Signed-off-by: Alistair Francis --- target/riscv/translate.c | 179 +-------------------------------------- 1 file changed, 1 insertion(+), 178 deletions(-) diff --git a/target/riscv/translate.c b/target/riscv/translate.c index 0f28b5f41e..2f9f5ccc62 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -67,20 +67,6 @@ typedef struct DisasContext { CPUState *cs; } DisasContext; =20 -#ifdef TARGET_RISCV64 -/* convert riscv funct3 to qemu memop for load/store */ -static const int tcg_memop_lookup[8] =3D { - [0 ... 7] =3D -1, - [0] =3D MO_SB, - [1] =3D MO_TESW, - [2] =3D MO_TESL, - [3] =3D MO_TEQ, - [4] =3D MO_UB, - [5] =3D MO_TEUW, - [6] =3D MO_TEUL, -}; -#endif - #ifdef TARGET_RISCV64 #define CASE_OP_32_64(X) case X: case glue(X, W) #else @@ -374,48 +360,6 @@ static void gen_jal(DisasContext *ctx, int rd, target_= ulong imm) ctx->base.is_jmp =3D DISAS_NORETURN; } =20 -#ifdef TARGET_RISCV64 -static void gen_load_c(DisasContext *ctx, uint32_t opc, int rd, int rs1, - target_long imm) -{ - TCGv t0 =3D tcg_temp_new(); - TCGv t1 =3D tcg_temp_new(); - gen_get_gpr(t0, rs1); - tcg_gen_addi_tl(t0, t0, imm); - int memop =3D tcg_memop_lookup[(opc >> 12) & 0x7]; - - if (memop < 0) { - gen_exception_illegal(ctx); - return; - } - - tcg_gen_qemu_ld_tl(t1, t0, ctx->mem_idx, memop); - gen_set_gpr(rd, t1); - tcg_temp_free(t0); - tcg_temp_free(t1); -} - -static void gen_store_c(DisasContext *ctx, uint32_t opc, int rs1, int rs2, - target_long imm) -{ - TCGv t0 =3D tcg_temp_new(); - TCGv dat =3D tcg_temp_new(); - gen_get_gpr(t0, rs1); - tcg_gen_addi_tl(t0, t0, imm); - gen_get_gpr(dat, rs2); - int memop =3D tcg_memop_lookup[(opc >> 12) & 0x7]; - - if (memop < 0) { - gen_exception_illegal(ctx); - return; - } - - tcg_gen_qemu_st_tl(dat, t0, ctx->mem_idx, memop); - tcg_temp_free(t0); - tcg_temp_free(dat); -} -#endif - #ifndef CONFIG_USER_ONLY /* The states of mstatus_fs are: * 0 =3D disabled, 1 =3D initial, 2 =3D clean, 3 =3D dirty @@ -447,83 +391,6 @@ static void mark_fs_dirty(DisasContext *ctx) static inline void mark_fs_dirty(DisasContext *ctx) { } #endif =20 -#if !defined(TARGET_RISCV64) -static void gen_fp_load(DisasContext *ctx, uint32_t opc, int rd, - int rs1, target_long imm) -{ - TCGv t0; - - if (ctx->mstatus_fs =3D=3D 0) { - gen_exception_illegal(ctx); - return; - } - - t0 =3D tcg_temp_new(); - gen_get_gpr(t0, rs1); - tcg_gen_addi_tl(t0, t0, imm); - - switch (opc) { - case OPC_RISC_FLW: - if (!has_ext(ctx, RVF)) { - goto do_illegal; - } - tcg_gen_qemu_ld_i64(cpu_fpr[rd], t0, ctx->mem_idx, MO_TEUL); - /* RISC-V requires NaN-boxing of narrower width floating point val= ues */ - tcg_gen_ori_i64(cpu_fpr[rd], cpu_fpr[rd], 0xffffffff00000000ULL); - break; - case OPC_RISC_FLD: - if (!has_ext(ctx, RVD)) { - goto do_illegal; - } - tcg_gen_qemu_ld_i64(cpu_fpr[rd], t0, ctx->mem_idx, MO_TEQ); - break; - do_illegal: - default: - gen_exception_illegal(ctx); - break; - } - tcg_temp_free(t0); - - mark_fs_dirty(ctx); -} - -static void gen_fp_store(DisasContext *ctx, uint32_t opc, int rs1, - int rs2, target_long imm) -{ - TCGv t0; - - if (ctx->mstatus_fs =3D=3D 0) { - gen_exception_illegal(ctx); - return; - } - - t0 =3D tcg_temp_new(); - gen_get_gpr(t0, rs1); - tcg_gen_addi_tl(t0, t0, imm); - - switch (opc) { - case OPC_RISC_FSW: - if (!has_ext(ctx, RVF)) { - goto do_illegal; - } - tcg_gen_qemu_st_i64(cpu_fpr[rs2], t0, ctx->mem_idx, MO_TEUL); - break; - case OPC_RISC_FSD: - if (!has_ext(ctx, RVD)) { - goto do_illegal; - } - tcg_gen_qemu_st_i64(cpu_fpr[rs2], t0, ctx->mem_idx, MO_TEQ); - break; - do_illegal: - default: - gen_exception_illegal(ctx); - break; - } - - tcg_temp_free(t0); -} -#endif - static void gen_set_rm(DisasContext *ctx, int rm) { TCGv_i32 t0; @@ -537,49 +404,6 @@ static void gen_set_rm(DisasContext *ctx, int rm) tcg_temp_free_i32(t0); } =20 -static void decode_RV32_64C0(DisasContext *ctx, uint16_t opcode) -{ - uint8_t funct3 =3D extract16(opcode, 13, 3); - uint8_t rd_rs2 =3D GET_C_RS2S(opcode); - uint8_t rs1s =3D GET_C_RS1S(opcode); - - switch (funct3) { - case 3: -#if defined(TARGET_RISCV64) - /* C.LD(RV64/128) -> ld rd', offset[7:3](rs1')*/ - gen_load_c(ctx, OPC_RISC_LD, rd_rs2, rs1s, - GET_C_LD_IMM(opcode)); -#else - /* C.FLW (RV32) -> flw rd', offset[6:2](rs1')*/ - gen_fp_load(ctx, OPC_RISC_FLW, rd_rs2, rs1s, - GET_C_LW_IMM(opcode)); -#endif - break; - case 7: -#if defined(TARGET_RISCV64) - /* C.SD (RV64/128) -> sd rs2', offset[7:3](rs1')*/ - gen_store_c(ctx, OPC_RISC_SD, rs1s, rd_rs2, - GET_C_LD_IMM(opcode)); -#else - /* C.FSW (RV32) -> fsw rs2', offset[6:2](rs1')*/ - gen_fp_store(ctx, OPC_RISC_FSW, rs1s, rd_rs2, - GET_C_LW_IMM(opcode)); -#endif - break; - } -} - -static void decode_RV32_64C(DisasContext *ctx, uint16_t opcode) -{ - uint8_t op =3D extract16(opcode, 0, 2); - - switch (op) { - case 0: - decode_RV32_64C0(ctx, opcode); - break; - } -} - static int ex_plus_1(DisasContext *ctx, int nf) { return nf + 1; @@ -779,8 +603,7 @@ static void decode_opc(CPURISCVState *env, DisasContext= *ctx, uint16_t opcode) } else { ctx->pc_succ_insn =3D ctx->base.pc_next + 2; if (!decode_insn16(ctx, opcode)) { - /* fall back to old decoder */ - decode_RV32_64C(ctx, opcode); + gen_exception_illegal(ctx); } } } else { --=20 2.30.1