From: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
To: Alistair Francis <alistair23@gmail.com>,
qemu-riscv@nongnu.org, liwei1518@gmail.com,
zhiwei_liu@linux.alibaba.com, palmer@dabbelt.com,
bin.meng@windriver.com, qemu-devel@nongnu.org
Cc: "Alistair Francis" <alistair.francis@wdc.com>,
fabian.thomas@cispa.de, "Bin Meng" <bmeng.cn@gmail.com>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Richard Henderson" <richard.henderson@linaro.org>
Subject: Re: [PATCH] target/riscv: rvzicbo: Fixup CBO extension register calculation
Date: Tue, 14 May 2024 06:10:53 -0300 [thread overview]
Message-ID: <14e88990-963c-45ef-bf51-662d54857c6e@ventanamicro.com> (raw)
In-Reply-To: <20240514023910.301766-1-alistair.francis@wdc.com>
On 5/13/24 23:39, Alistair Francis wrote:
> When running the instruction
>
> ```
> cbo.flush 0(x0)
> ```
>
> QEMU would segfault.
>
> The issue was in cpu_gpr[a->rs1] as QEMU does not have cpu_gpr[0]
> allocated.
>
> In order to fix this let's use the existing get_address()
> helper. This also has the benefit of performing pointer mask
> calculations on the address specified in rs1.
>
> The pointer masking specificiation specifically states:
>
> """
> Cache Management Operations: All instructions in Zicbom, Zicbop and Zicboz
> """
>
> So this is the correct behaviour and we previously have been incorrectly
> not masking the address.
>
> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
> Reported-by: Fabian Thomas <fabian.thomas@cispa.de>
> Fixes: e05da09b7cfd ("target/riscv: implement Zicbom extension")
> ---
LGTM but I wonder if this is the same fix as this one sent by Phil a month
ago or so:
https://lore.kernel.org/qemu-riscv/20240419110514.69697-1-philmd@linaro.org/
("[PATCH] target/riscv: Use get_address() to get address with Zicbom extensions")
Thanks,
Daniel
> target/riscv/insn_trans/trans_rvzicbo.c.inc | 16 ++++++++++++----
> 1 file changed, 12 insertions(+), 4 deletions(-)
>
> diff --git a/target/riscv/insn_trans/trans_rvzicbo.c.inc b/target/riscv/insn_trans/trans_rvzicbo.c.inc
> index d5d7095903..15711c3140 100644
> --- a/target/riscv/insn_trans/trans_rvzicbo.c.inc
> +++ b/target/riscv/insn_trans/trans_rvzicbo.c.inc
> @@ -31,27 +31,35 @@
> static bool trans_cbo_clean(DisasContext *ctx, arg_cbo_clean *a)
> {
> REQUIRE_ZICBOM(ctx);
> - gen_helper_cbo_clean_flush(tcg_env, cpu_gpr[a->rs1]);
> + TCGv src = get_address(ctx, a->rs1, 0);
> +
> + gen_helper_cbo_clean_flush(tcg_env, src);
> return true;
> }
>
> static bool trans_cbo_flush(DisasContext *ctx, arg_cbo_flush *a)
> {
> REQUIRE_ZICBOM(ctx);
> - gen_helper_cbo_clean_flush(tcg_env, cpu_gpr[a->rs1]);
> + TCGv src = get_address(ctx, a->rs1, 0);
> +
> + gen_helper_cbo_clean_flush(tcg_env, src);
> return true;
> }
>
> static bool trans_cbo_inval(DisasContext *ctx, arg_cbo_inval *a)
> {
> REQUIRE_ZICBOM(ctx);
> - gen_helper_cbo_inval(tcg_env, cpu_gpr[a->rs1]);
> + TCGv src = get_address(ctx, a->rs1, 0);
> +
> + gen_helper_cbo_inval(tcg_env, src);
> return true;
> }
>
> static bool trans_cbo_zero(DisasContext *ctx, arg_cbo_zero *a)
> {
> REQUIRE_ZICBOZ(ctx);
> - gen_helper_cbo_zero(tcg_env, cpu_gpr[a->rs1]);
> + TCGv src = get_address(ctx, a->rs1, 0);
> +
> + gen_helper_cbo_zero(tcg_env, src);
> return true;
> }
next prev parent reply other threads:[~2024-05-14 9:11 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-14 2:39 [PATCH] target/riscv: rvzicbo: Fixup CBO extension register calculation Alistair Francis
2024-05-14 7:09 ` Richard Henderson
2024-05-14 9:10 ` Daniel Henrique Barboza [this message]
2024-05-16 5:09 ` Alistair Francis
2024-06-04 8:32 ` Philippe Mathieu-Daudé
2024-06-04 11:37 ` Philippe Mathieu-Daudé
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=14e88990-963c-45ef-bf51-662d54857c6e@ventanamicro.com \
--to=dbarboza@ventanamicro.com \
--cc=alistair.francis@wdc.com \
--cc=alistair23@gmail.com \
--cc=bin.meng@windriver.com \
--cc=bmeng.cn@gmail.com \
--cc=fabian.thomas@cispa.de \
--cc=liwei1518@gmail.com \
--cc=palmer@dabbelt.com \
--cc=philmd@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-riscv@nongnu.org \
--cc=richard.henderson@linaro.org \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.