On Fri, Mar 21, 2025 at 1:43 PM Heinrich Schuchardt <heinrich.schucha...@canonical.com> wrote: > > Currently resetting leads to resynchronizing the Goldfish RTC with the > system clock of the host. In real hardware an RTC reset would not change > the wall time. Other RTCs like pl031 do not show this behavior. > > Move the synchronization of the RTC with the system clock to the instance > realization. > > Reported-by: Frederik Du Toit Lotter <fred.lot...@canonical.com> > Signed-off-by: Heinrich Schuchardt <heinrich.schucha...@canonical.com>
LGTM. Reviewed-by: Anup Patel <a...@brainfault.org> Regards, Anup > --- > hw/rtc/goldfish_rtc.c | 14 +++++++------- > 1 file changed, 7 insertions(+), 7 deletions(-) > > diff --git a/hw/rtc/goldfish_rtc.c b/hw/rtc/goldfish_rtc.c > index 0f1b53e0e4..203a343511 100644 > --- a/hw/rtc/goldfish_rtc.c > +++ b/hw/rtc/goldfish_rtc.c > @@ -239,15 +239,8 @@ static const VMStateDescription goldfish_rtc_vmstate = { > static void goldfish_rtc_reset(DeviceState *dev) > { > GoldfishRTCState *s = GOLDFISH_RTC(dev); > - struct tm tm; > > timer_del(s->timer); > - > - qemu_get_timedate(&tm, 0); > - s->tick_offset = mktimegm(&tm); > - s->tick_offset *= NANOSECONDS_PER_SECOND; > - s->tick_offset -= qemu_clock_get_ns(rtc_clock); > - s->tick_offset_vmstate = 0; > s->alarm_next = 0; > s->alarm_running = 0; > s->irq_pending = 0; > @@ -258,6 +251,7 @@ static void goldfish_rtc_realize(DeviceState *d, Error > **errp) > { > SysBusDevice *dev = SYS_BUS_DEVICE(d); > GoldfishRTCState *s = GOLDFISH_RTC(d); > + struct tm tm; > > memory_region_init_io(&s->iomem, OBJECT(s), > &goldfish_rtc_ops[s->big_endian], s, > @@ -267,6 +261,12 @@ static void goldfish_rtc_realize(DeviceState *d, Error > **errp) > sysbus_init_irq(dev, &s->irq); > > s->timer = timer_new_ns(rtc_clock, goldfish_rtc_interrupt, s); > + > + qemu_get_timedate(&tm, 0); > + s->tick_offset = mktimegm(&tm); > + s->tick_offset *= NANOSECONDS_PER_SECOND; > + s->tick_offset -= qemu_clock_get_ns(rtc_clock); > + s->tick_offset_vmstate = 0; > } > > static const Property goldfish_rtc_properties[] = { > -- > 2.48.1 > >