hw/rtc/aspeed_rtc: Use 64-bit offset for holding time_t difference
authorPeter Maydell <peter.maydell@linaro.org>
Thu, 31 Aug 2023 08:45:18 +0000 (09:45 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Thu, 31 Aug 2023 08:45:18 +0000 (09:45 +0100)
In the aspeed_rtc device we store a difference between two time_t
values in an 'int'. This is not really correct when time_t could
be 64 bits. Enlarge the field to 'int64_t'.

This is a migration compatibility break for the aspeed boards.
While we are changing the vmstate, remove the accidental
duplicate of the offset field.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
hw/rtc/aspeed_rtc.c
include/hw/rtc/aspeed_rtc.h

index f6da7b666d64825ebec04cfa0102b128d6e32f82..fa861e2d49400e6abfa2a5f2862e7443e5216f91 100644 (file)
@@ -136,11 +136,10 @@ static const MemoryRegionOps aspeed_rtc_ops = {
 
 static const VMStateDescription vmstate_aspeed_rtc = {
     .name = TYPE_ASPEED_RTC,
-    .version_id = 1,
+    .version_id = 2,
     .fields = (VMStateField[]) {
         VMSTATE_UINT32_ARRAY(reg, AspeedRtcState, 0x18),
-        VMSTATE_INT32(offset, AspeedRtcState),
-        VMSTATE_INT32(offset, AspeedRtcState),
+        VMSTATE_INT64(offset, AspeedRtcState),
         VMSTATE_END_OF_LIST()
     }
 };
index df61e46059ecb7219775e2cdb0405e3b5bc7f071..596dfebb46c21088d15647d236e0057f942daa58 100644 (file)
@@ -18,7 +18,7 @@ struct AspeedRtcState {
     qemu_irq irq;
 
     uint32_t reg[0x18];
-    int offset;
+    int64_t offset;
 
 };