Hi, These patches were done in the context of gitlab #2573 [1]. The gitlab entry per se will probably be closed as a guest software bug, but while working on it I noticed that we're writing a TCG-initialized env->mstatus in KVM.
This is happening because riscv_cpu_reset_hold() is doing all TCG related initialization first, and then calling kvm_riscv_reset_vcpu() in the end. For example, we're writing '0xa0000000' in 'sstatus' because TCG is setting env->mstatus = 0xa0000000. First patch separates KVM vcpu initialization from TCG, centering all KVM reset procedure into kvm_riscv_reset_vcpu(). Patches 2 and 3 are small improvements made around get/put KVM csr regs. [1] https://gitlab.com/qemu-project/qemu/-/issues/2573 Daniel Henrique Barboza (3): target/riscv/cpu: ignore TCG init for KVM CPUs in reset_hold target/riscv/kvm: use env->sie to read/write 'sie' CSR target/riscv/kvm: reset all available KVM CSRs in kvm_reset() target/riscv/cpu.c | 9 +++++---- target/riscv/kvm/kvm-cpu.c | 15 ++++++++++----- 2 files changed, 15 insertions(+), 9 deletions(-) -- 2.48.1