From: Alistair Francis <alistair23@gmail.com>
To: Ian Brockbank <Ian.Brockbank@cirrus.com>
Cc: qemu-devel@nongnu.org, qemu-riscv@nongnu.org,
Palmer Dabbelt <palmer@dabbelt.com>,
Alistair Francis <alistair.francis@wdc.com>,
Bin Meng <bmeng.cn@gmail.com>, Weiwei Li <liwei1518@gmail.com>,
Daniel Henrique Barboza <dbarboza@ventanamicro.com>,
Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
LIU Zhiwei <zhiwei_liu@c-sky.com>
Subject: Re: [PATCH 04/11 v2] target/riscv: Update CSR xie in CLIC mode
Date: Fri, 6 Sep 2024 12:58:41 +1000 [thread overview]
Message-ID: <CAKmqyKN+emnjxdCdX9_kBEqZoo4OtdJeSearxEB3o-Ak374tQw@mail.gmail.com> (raw)
In-Reply-To: <20240819160742.27586-8-Ian.Brockbank@cirrus.com>
On Tue, Aug 20, 2024 at 2:15 AM Ian Brockbank <Ian.Brockbank@cirrus.com> wrote:
>
> From: Ian Brockbank <ian.brockbank@cirrus.com>
>
> The xie CSR appears hardwired to zero in CLIC mode, replaced by separate
> memory-mapped interrupt enables (clicintie[i]). Writes to xie will be
> ignored and will not trap (i.e., no access faults).
>
> Signed-off-by: LIU Zhiwei <zhiwei_liu@c-sky.com>
> Signed-off-by: Ian Brockbank <ian.brockbank@cirrus.com>
> ---
> target/riscv/csr.c | 34 ++++++++++++++++++++++------------
> 1 file changed, 22 insertions(+), 12 deletions(-)
>
> diff --git a/target/riscv/csr.c b/target/riscv/csr.c
> index 9c824c0d8f..a5978e0929 100644
> --- a/target/riscv/csr.c
> +++ b/target/riscv/csr.c
> @@ -30,6 +30,10 @@
> #include "qemu/guest-random.h"
> #include "qapi/error.h"
>
> +#if !defined(CONFIG_USER_ONLY)
> +#include "hw/intc/riscv_clic.h"
> +#endif
This doesn't seem like the way to go
> +
> /* CSR function table public API */
> void riscv_get_csr_ops(int csrno, riscv_csr_operations *ops)
> {
> @@ -1805,16 +1809,19 @@ static RISCVException rmw_mie64(CPURISCVState *env, int csrno,
> uint64_t *ret_val,
> uint64_t new_val, uint64_t wr_mask)
> {
> - uint64_t mask = wr_mask & all_ints;
> + /* Access to xie will be ignored in CLIC mode and will not trap. */
> + if (!riscv_clic_is_clic_mode(env)) {
We can just implement this check, it's only two lines
> + uint64_t mask = wr_mask & all_ints;
>
> - if (ret_val) {
> - *ret_val = env->mie;
> - }
> + if (ret_val) {
> + *ret_val = env->mie;
> + }
>
> - env->mie = (env->mie & ~mask) | (new_val & mask);
> + env->mie = (env->mie & ~mask) | (new_val & mask);
>
> - if (!riscv_has_ext(env, RVH)) {
> - env->mie &= ~((uint64_t)HS_MODE_INTERRUPTS);
> + if (!riscv_has_ext(env, RVH)) {
> + env->mie &= ~((uint64_t)HS_MODE_INTERRUPTS);
> + }
> }
>
> return RISCV_EXCP_NONE;
> @@ -2906,13 +2913,13 @@ static int read_mintstatus(CPURISCVState *env, int csrno, target_ulong *val)
> static int read_mintthresh(CPURISCVState *env, int csrno, target_ulong *val)
> {
> *val = env->mintthresh;
> - return 0;
> + return RISCV_EXCP_NONE;
This change should be made when these functions are added
Alistair
> }
>
> static int write_mintthresh(CPURISCVState *env, int csrno, target_ulong val)
> {
> env->mintthresh = val;
> - return 0;
> + return RISCV_EXCP_NONE;
> }
>
> /* Supervisor Trap Setup */
> @@ -3059,7 +3066,10 @@ static RISCVException rmw_sie64(CPURISCVState *env, int csrno,
> *ret_val |= env->sie & nalias_mask;
> }
>
> - env->sie = (env->sie & ~sie_mask) | (new_val & sie_mask);
> + /* Writes to xie will be ignored in CLIC mode and will not trap. */
> + if (!riscv_clic_is_clic_mode(env)) {
> + env->sie = (env->sie & ~sie_mask) | (new_val & sie_mask);
> + }
> }
>
> return ret;
> @@ -3337,13 +3347,13 @@ static int read_sintstatus(CPURISCVState *env, int csrno, target_ulong *val)
> static int read_sintthresh(CPURISCVState *env, int csrno, target_ulong *val)
> {
> *val = env->sintthresh;
> - return 0;
> + return RISCV_EXCP_NONE;
> }
>
> static int write_sintthresh(CPURISCVState *env, int csrno, target_ulong val)
> {
> env->sintthresh = val;
> - return 0;
> + return RISCV_EXCP_NONE;
> }
>
> /* Supervisor Protection and Translation */
> --
> 2.46.0.windows.1
> This message and any attachments may contain privileged and confidential information that is intended solely for the person(s) to whom it is addressed. If you are not an intended recipient you must not: read; copy; distribute; discuss; take any action in or make any reliance upon the contents of this message; nor open or read any attachment. If you have received this message in error, please notify us as soon as possible on the following telephone number and destroy this message including any attachments. Thank you. Cirrus Logic International (UK) Ltd and Cirrus Logic International Semiconductor Ltd are companies registered in Scotland, with registered numbers SC089839 and SC495735 respectively. Our registered office is at 7B Nightingale Way, Quartermile, Edinburgh, EH3 9EG, UK. Tel: +44 (0)131 272 7000. www.cirrus.com
>
next prev parent reply other threads:[~2024-09-06 3:00 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <https://lists.gnu.org/archive/html/qemu-riscv/2024-08/msg00234.html>
2024-08-14 8:27 ` [PATCH 00/11] RISC-V: support CLIC v0.9 specification Ian Brockbank
2024-08-14 8:27 ` [PATCH 03/11] hw/intc: Add CLIC device Ian Brockbank
2024-08-14 8:27 ` [PATCH 02/11] target/riscv: Update CSR xintthresh in CLIC mode Ian Brockbank
2024-08-14 8:27 ` [PATCH 01/11] target/riscv: Add CLIC CSR mintstatus Ian Brockbank
2024-08-14 8:27 ` [PATCH 04/11] target/riscv: Update CSR xie in CLIC mode Ian Brockbank
2024-08-14 8:27 ` [PATCH 05/11] target/riscv: Update CSR xip " Ian Brockbank
2024-08-14 8:27 ` [PATCH 07/11] target/riscv: Update CSR xnxti " Ian Brockbank
2024-08-14 8:27 ` [PATCH 06/11] target/riscv: Update CSR xtvec " Ian Brockbank
2024-08-14 14:11 ` [PATCH 00/11] RISC-V: support CLIC v0.9 specification Ian Brockbank
2024-08-19 16:02 ` [PATCH 00/11 v2] " Ian Brockbank
2024-08-19 16:02 ` [PATCH 01/11 v2] target/riscv: Add CLIC CSR mintstatus Ian Brockbank
2024-09-06 2:44 ` Alistair Francis
2024-09-06 3:04 ` Alistair Francis
2024-08-19 16:02 ` [PATCH 02/11 v2] target/riscv: Update CSR xintthresh in CLIC mode Ian Brockbank
2024-09-06 2:52 ` Alistair Francis
2024-08-19 16:02 ` [PATCH 03/11 v2] hw/intc: Add CLIC device Ian Brockbank
2024-08-19 16:02 ` [PATCH 04/11 v2] target/riscv: Update CSR xie in CLIC mode Ian Brockbank
2024-09-06 2:58 ` Alistair Francis [this message]
2024-09-06 3:20 ` Alistair Francis
2024-08-19 16:02 ` [PATCH 05/11 v2] target/riscv: Update CSR xip " Ian Brockbank
2024-08-19 16:02 ` [PATCH 06/11 v2] target/riscv: Update CSR xtvec " Ian Brockbank
2024-09-06 3:02 ` Alistair Francis
2024-08-19 16:02 ` [PATCH 07/11 v2] target/riscv: Update CSR xnxti " Ian Brockbank
2024-08-19 16:02 ` [PATCH 08/11 v2] target/riscv: Update interrupt handling " Ian Brockbank
2024-09-06 3:49 ` Alistair Francis
2024-08-19 16:02 ` [PATCH 09/11 v2] target/riscv: Update interrupt return " Ian Brockbank
2024-08-19 16:02 ` [PATCH 10/11 v2] hw/riscv: add CLIC into virt machine Ian Brockbank
2024-08-19 16:02 ` [PATCH 11/11 v2] tests: add riscv clic qtest case and a function in qtest Ian Brockbank
2024-09-06 3:52 ` Alistair Francis
2024-09-04 7:57 ` [PATCH 00/11 v2] RISC-V: support CLIC v0.9 specification Ian Brockbank
2024-09-06 2:48 ` Alistair Francis
2024-09-06 3:56 ` Alistair Francis
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAKmqyKN+emnjxdCdX9_kBEqZoo4OtdJeSearxEB3o-Ak374tQw@mail.gmail.com \
--to=alistair23@gmail.com \
--cc=Ian.Brockbank@cirrus.com \
--cc=alistair.francis@wdc.com \
--cc=bmeng.cn@gmail.com \
--cc=dbarboza@ventanamicro.com \
--cc=liwei1518@gmail.com \
--cc=palmer@dabbelt.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-riscv@nongnu.org \
--cc=zhiwei_liu@c-sky.com \
--cc=zhiwei_liu@linux.alibaba.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).