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? > } > -#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, >