On Fri, Mar 28, 2025 at 1:22 AM Daniel Henrique Barboza
<dbarb...@ventanamicro.com> wrote:
>
> This commit breaks KVM boot on older kernels, like reported in [1], due
> to senvcfg not being available in them.
>
> There's also another problem related to scounteren. Using a recent
> enough guest buildroot, 'ping' will be build with rdtime support. In
> this case, doing a ping in a KVM guest while exposing scounteren will
> result in an error. The root cause relates to how KVM handles
> scounteren, but QEMU can work around it by initializing scounteren with
> the host value during init().
>
> Fixing these issues in a non-rushed-bandaid manner results in an amount
> of design changes that I don't feel comfortable pushing during code
> freeze, so for 10.0 we'll remove the CSRs and re-introduce them in 10.1
> with the adequate support.
>
> This reverts commit 4db19d5b21e058e6eb3474b6be470d1184afaa9e.
>
> [1] 
> https://lore.kernel.org/qemu-riscv/CABJz62OfUDHYkQ0T3rGHStQprf1c7_E0qBLbLKhfv=+jb0s...@mail.gmail.com/
>
> Reported-by: Andrea Bolognani <abolo...@redhat.com>
> Signed-off-by: Daniel Henrique Barboza <dbarb...@ventanamicro.com>

Reviewed-by: Alistair Francis <alistair.fran...@wdc.com>

Alistair

> ---
>  target/riscv/kvm/kvm-cpu.c | 6 ------
>  1 file changed, 6 deletions(-)
>
> diff --git a/target/riscv/kvm/kvm-cpu.c b/target/riscv/kvm/kvm-cpu.c
> index 4ffeeaa1c9..0f4997a918 100644
> --- a/target/riscv/kvm/kvm-cpu.c
> +++ b/target/riscv/kvm/kvm-cpu.c
> @@ -624,8 +624,6 @@ static void kvm_riscv_reset_regs_csr(CPURISCVState *env)
>      env->stval = 0;
>      env->mip = 0;
>      env->satp = 0;
> -    env->scounteren = 0;
> -    env->senvcfg = 0;
>  }
>
>  static int kvm_riscv_get_regs_csr(CPUState *cs)
> @@ -641,8 +639,6 @@ static int kvm_riscv_get_regs_csr(CPUState *cs)
>      KVM_RISCV_GET_CSR(cs, env, stval, env->stval);
>      KVM_RISCV_GET_CSR(cs, env, sip, env->mip);
>      KVM_RISCV_GET_CSR(cs, env, satp, env->satp);
> -    KVM_RISCV_GET_CSR(cs, env, scounteren, env->scounteren);
> -    KVM_RISCV_GET_CSR(cs, env, senvcfg, env->senvcfg);
>
>      return 0;
>  }
> @@ -660,8 +656,6 @@ static int kvm_riscv_put_regs_csr(CPUState *cs)
>      KVM_RISCV_SET_CSR(cs, env, stval, env->stval);
>      KVM_RISCV_SET_CSR(cs, env, sip, env->mip);
>      KVM_RISCV_SET_CSR(cs, env, satp, env->satp);
> -    KVM_RISCV_SET_CSR(cs, env, scounteren, env->scounteren);
> -    KVM_RISCV_SET_CSR(cs, env, senvcfg, env->senvcfg);
>
>      return 0;
>  }
> --
> 2.48.1
>
>

Reply via email to