[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] target/riscv: rvv: Fix incorrect vlen comparison in prop_vle
From: |
Alistair Francis |
Subject: |
Re: [PATCH] target/riscv: rvv: Fix incorrect vlen comparison in prop_vlen_set |
Date: |
Wed, 29 Jan 2025 11:31:45 +1000 |
On Fri, Jan 24, 2025 at 7:06 PM Max Chou <max.chou@sifive.com> wrote:
>
> In prop_vlen_set function, there is an incorrect comparison between
> vlen(bit) and vlenb(byte).
> This will cause unexpected error when user applies the `vlen=1024` cpu
> option with a vendor predefined cpu type that the default vlen is
> 1024(vlenb=128).
>
> Signed-off-by: Max Chou <max.chou@sifive.com>
Thanks!
Applied to riscv-to-apply.next
Alistair
> ---
> target/riscv/cpu.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c
> index 3d4bd157d2c..2f53acbab59 100644
> --- a/target/riscv/cpu.c
> +++ b/target/riscv/cpu.c
> @@ -2034,6 +2034,7 @@ static void prop_vlen_set(Object *obj, Visitor *v,
> const char *name,
> void *opaque, Error **errp)
> {
> RISCVCPU *cpu = RISCV_CPU(obj);
> + uint16_t cpu_vlen = cpu->cfg.vlenb << 3;
> uint16_t value;
>
> if (!visit_type_uint16(v, name, &value, errp)) {
> @@ -2045,10 +2046,10 @@ static void prop_vlen_set(Object *obj, Visitor *v,
> const char *name,
> return;
> }
>
> - if (value != cpu->cfg.vlenb && riscv_cpu_is_vendor(obj)) {
> + if (value != cpu_vlen && riscv_cpu_is_vendor(obj)) {
> cpu_set_prop_err(cpu, name, errp);
> error_append_hint(errp, "Current '%s' val: %u\n",
> - name, cpu->cfg.vlenb << 3);
> + name, cpu_vlen);
> return;
> }
>
> --
> 2.34.1
>
>