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>
Thanks! Applied to riscv-to-apply.next 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 > >