openjdk 20 crash on linux kernel 5.19, because it can not support huge VM?

Ze Zhang zhangze.linux at gmail.com
Sat Nov 26 05:09:17 UTC 2022


ignore my mis-understanding

Ze Zhang <zhangze.linux at gmail.com> 于2022年11月26日周六 12:48写道:

> but I think there is a error about this part of the patch:
>
> diff --git a/target/riscv/csr.c b/target/riscv/csr.c
> index 5c9a7ee287..d26b830f1a 100644
> --- a/target/riscv/csr.c
> +++ b/target/riscv/csr.c
> @@ -1109,10 +1109,12 @@ static RISCVException read_mstatus(CPURISCVState
> *env,
> int csrno,
>
>  static int validate_vm(CPURISCVState *env, target_ulong vm)
>  {
> +    vm &= 0xf;
> +
>      if (riscv_cpu_mxl(env) == MXL_RV32) {
> -        return valid_vm_1_10_32[vm & 0xf];
> +        return valid_vm_1_10_32[vm] && (vm
> <=RISCV_CPU(env_cpu(env))->cfg.satp_mode);
>      } else {
> -        return valid_vm_1_10_64[vm & 0xf];
> +        return valid_vm_1_10_64[vm] && (vm
> <=RISCV_CPU(env_cpu(env))->cfg.satp_mode);
>      }
>  }
>
> maybe it should be:
>
>  static int validate_vm(CPURISCVState *env, target_ulong vm)
>  {
> +    vm &= 0xf;
> +
>      if (riscv_cpu_mxl(env) == MXL_RV32) {
> -        return valid_vm_1_10_32[vm & 0xf];
> +        if (vm <= RISCV_CPU(env_cpu(env))->cfg.satp_mode)
> +        {
> +            return valid_vm_1_10_32[vm];
> +        } else {
> +             return 0;
> +         }
>      } else {
> -        return valid_vm_1_10_64[vm & 0xf];
> +        if (vm <= RISCV_CPU(env_cpu(env))->cfg.satp_mode)
> +        {
> +            return valid_vm_1_10_64[vm];
> +        } else {
> +             return 0;
> +        }
>      }
>  }
>
>
> Ludovic Henry <ludovic at rivosinc.com> 于2022年11月26日周六 09:49写道:
>
>> The more proper fix in QEMU is being upstreamed with
>> https://lists.gnu.org/archive/html/qemu-riscv/2022-11/msg00105.html
>>
>> On Sat, Nov 26, 2022 at 1:06 AM Ze Zhang <zhangze.linux at gmail.com> wrote:
>>
>>> yes,
>>>
>>> all I have tried in the previous mail is about user-mode, because ONLY
>>> run linux kernel 5.19 on qemu 7.10 system mode, we can get a SV57 VM, so I
>>> run qemu system mode first, then in qemu system mode environment, run
>>> qemu-riscv64 user-mode cmdline, which means run qemu user mode in a qemu
>>> system mode linux system, otherwise test is not for SV57.
>>> openjdk team should do the detail test about this, I only care about
>>> qemu system mode.
>>>
>>> sincerely
>>>
>>> Vladimir Kempik <vladimir.kempik at gmail.com> 于2022年11月25日周五 17:56写道:
>>>
>>>> Hello
>>>>
>>>>  run qemu-riscv64 -L  xxxx   /usr/bin/java -version, result
>>>> is Segmentation fault,
>>>>
>>>>
>>>> That’s actually user-mode, isn’t it ?
>>>>
>>>> Regards, Vladimir
>>>>
>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/riscv-port-dev/attachments/20221126/4b57d75a/attachment.htm>


More information about the riscv-port-dev mailing list