On 2/21/21 10:55 AM, Philippe Mathieu-Daudé wrote: > On 2/21/21 10:24 AM, Claudio Fontana wrote: >> From: Claudio Fontana <cfont...@centriq4.arch.suse.de> >> >> KVM has its own cpu->kvm_vtime. >> >> Adjust cpu vmstate by putting unused fields instead of the >> VMSTATE_TIMER_PTR when TCG is not available. >> >> Signed-off-by: Claudio Fontana <cfont...@suse.de> >> --- >> target/arm/cpu.c | 4 +++- >> target/arm/machine.c | 5 +++++ >> 2 files changed, 8 insertions(+), 1 deletion(-) >> >> diff --git a/target/arm/cpu.c b/target/arm/cpu.c >> index 1d81a1e7ac..b929109054 100644 >> --- a/target/arm/cpu.c >> +++ b/target/arm/cpu.c >> @@ -1322,6 +1322,7 @@ static void arm_cpu_realizefn(DeviceState *dev, Error >> **errp) >> } >> } >> >> +#ifdef CONFIG_TCG >> { >> uint64_t scale; >> >> @@ -1347,7 +1348,8 @@ static void arm_cpu_realizefn(DeviceState *dev, Error >> **errp) >> cpu->gt_timer[GTIMER_HYPVIRT] = timer_new(QEMU_CLOCK_VIRTUAL, scale, >> arm_gt_hvtimer_cb, cpu); > > What about Xen?
Good question, what about it.. Ccing also Olaf. > >> } >> -#endif >> +#endif /* CONFIG_TCG */ >> +#endif /* !CONFIG_USER_ONLY */ >> >> cpu_exec_realizefn(cs, &local_err); >> if (local_err != NULL) { >> diff --git a/target/arm/machine.c b/target/arm/machine.c >> index 666ef329ef..13d7c6d930 100644 >> --- a/target/arm/machine.c >> +++ b/target/arm/machine.c >> @@ -822,8 +822,13 @@ const VMStateDescription vmstate_arm_cpu = { >> VMSTATE_UINT32(env.exception.syndrome, ARMCPU), >> VMSTATE_UINT32(env.exception.fsr, ARMCPU), >> VMSTATE_UINT64(env.exception.vaddress, ARMCPU), >> +#ifdef CONFIG_TCG >> VMSTATE_TIMER_PTR(gt_timer[GTIMER_PHYS], ARMCPU), >> VMSTATE_TIMER_PTR(gt_timer[GTIMER_VIRT], ARMCPU), >> +#else >> + VMSTATE_UNUSED(sizeof(QEMUTimer *)), >> + VMSTATE_UNUSED(sizeof(QEMUTimer *)), >> +#endif /* CONFIG_TCG */ >> { >> .name = "power_state", >> .version_id = 0, >> >