Add virtual time context description to vmstate_riscv_cpu. After cpu being loaded, virtual time context is updated to KVM.
Signed-off-by: Yifei Jiang jiangyifei@huawei.com Signed-off-by: Yipeng Yin yinyipeng1@huawei.com --- target/riscv/cpu.c | 11 +++++++++++ 1 file changed, 11 insertions(+)
diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index bbc9726a20..9891d4012b 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -471,10 +471,18 @@ static void riscv_cpu_init(Object *obj) cpu_set_cpustate_pointers(cpu); }
+static int cpu_post_load(void *opaque, int version_id) +{ + RISCVCPU *cpu = opaque; + cpu->env.kvm_timer_dirty = true; + return 0; +} + static const VMStateDescription vmstate_riscv_cpu = { .name = "cpu", .version_id = 1, .minimum_version_id = 1, + .post_load = cpu_post_load, .fields = (VMStateField[]) { VMSTATE_UINTTL_ARRAY(env.gpr, RISCVCPU, 32), VMSTATE_UINT64_ARRAY(env.fpr, RISCVCPU, 32), @@ -488,6 +496,9 @@ static const VMStateDescription vmstate_riscv_cpu = { VMSTATE_UINTTL(env.sbadaddr, RISCVCPU), VMSTATE_UINTTL(env.mip, RISCVCPU), VMSTATE_UINTTL(env.satp, RISCVCPU), + VMSTATE_UINT64(env.kvm_timer_time, RISCVCPU), + VMSTATE_UINT64(env.kvm_timer_compare, RISCVCPU), + VMSTATE_UINT64(env.kvm_timer_state, RISCVCPU), VMSTATE_END_OF_LIST() } };