]> git.ipfire.org Git - thirdparty/qemu.git/commitdiff
pl031: Update last RTCLR value on write in case it's read back
authorJessica Clarke <jrtc27@jrtc27.com>
Mon, 26 Feb 2024 14:07:24 +0000 (14:07 +0000)
committerMichael Tokarev <mjt@tls.msk.ru>
Tue, 27 Feb 2024 17:36:50 +0000 (20:36 +0300)
The PL031 allows you to read RTCLR, which is meant to give you the last
value written. PL031State has an lr field which is used when reading
from RTCLR, and is present in the VM migration state, but we never
actually update it, so it always reads as its initial 0 value.

Cc: qemu-stable@nongnu.org
Signed-off-by: Jessica Clarke <jrtc27@jrtc27.com>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Message-id: 20240222000341.1562443-1-jrtc27@jrtc27.com
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
(cherry picked from commit 4d28d57c9f2eb1cdf70b29cea6e50282e010075b)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
hw/rtc/pl031.c

index b01d0e75d1af40334289df94795fa5e5e3c513e6..2f3cd04eeb4bd40c5c4cbb115f02eb358b56c7e5 100644 (file)
@@ -141,6 +141,7 @@ static void pl031_write(void * opaque, hwaddr offset,
         g_autofree const char *qom_path = object_get_canonical_path(opaque);
         struct tm tm;
 
+        s->lr = value;
         s->tick_offset += value - pl031_get_count(s);
 
         qemu_get_timedate(&tm, s->tick_offset);