qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 1/1] goldfish_rtc: keep time offset when resetting
@ 2025-03-21 22:12 Heinrich Schuchardt
  2025-03-31 14:16 ` Philippe Mathieu-Daudé
  0 siblings, 1 reply; 2+ messages in thread
From: Heinrich Schuchardt @ 2025-03-21 22:12 UTC (permalink / raw)
  To: Anup Patel, Alistair Francis
  Cc: Frederik Du Toit Lotter, Philippe Mathieu-Daudé, qemu-riscv,
	qemu-devel, qemu-stable, Heinrich Schuchardt

Currently resetting the 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.

Cc: qemu-stable@nongnu.org
Reported-by: Frederik Du Toit Lotter <fred.lotter@canonical.com>
Fixes: 9a5b40b8427 ("hw: rtc: Add Goldfish RTC device")
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
v2:
	Remove a superfluous intialization to nul.
	Add Cc:, Fixes:, and Reviewed-by: tags.
v1:
	https://lore.kernel.org/qemu-devel/CAAhSdy0-we9B19wRRqk_rRFkjY2LPPMRGaTdE=_4Ge_pCR4Y4Q@mail.gmail.com/T/
---
 hw/rtc/goldfish_rtc.c | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/hw/rtc/goldfish_rtc.c b/hw/rtc/goldfish_rtc.c
index 0f1b53e0e4..d83cc26481 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,11 @@ 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);
 }
 
 static const Property goldfish_rtc_properties[] = {
-- 
2.48.1



^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH v2 1/1] goldfish_rtc: keep time offset when resetting
  2025-03-21 22:12 [PATCH v2 1/1] goldfish_rtc: keep time offset when resetting Heinrich Schuchardt
@ 2025-03-31 14:16 ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 2+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-03-31 14:16 UTC (permalink / raw)
  To: Heinrich Schuchardt, Anup Patel, Alistair Francis
  Cc: Frederik Du Toit Lotter, qemu-riscv, qemu-devel, qemu-stable

On 21/3/25 23:12, Heinrich Schuchardt wrote:
> Currently resetting the 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.
> 
> Cc: qemu-stable@nongnu.org
> Reported-by: Frederik Du Toit Lotter <fred.lotter@canonical.com>
> Fixes: 9a5b40b8427 ("hw: rtc: Add Goldfish RTC device")
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
> v2:
> 	Remove a superfluous intialization to nul.
> 	Add Cc:, Fixes:, and Reviewed-by: tags.
> v1:
> 	https://lore.kernel.org/qemu-devel/CAAhSdy0-we9B19wRRqk_rRFkjY2LPPMRGaTdE=_4Ge_pCR4Y4Q@mail.gmail.com/T/
> ---
>   hw/rtc/goldfish_rtc.c | 13 ++++++-------
>   1 file changed, 6 insertions(+), 7 deletions(-)

Thanks, patch queued!


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2025-03-31 14:17 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-21 22:12 [PATCH v2 1/1] goldfish_rtc: keep time offset when resetting Heinrich Schuchardt
2025-03-31 14:16 ` Philippe Mathieu-Daudé

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).