[PATCH] pl031: Update last RTCLR value on write in case it's read back

Jessica Clarke posted 1 patch 9 months, 1 week ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20240222000341.1562443-1-jrtc27@jrtc27.com
Maintainers: Peter Maydell <peter.maydell@linaro.org>
hw/rtc/pl031.c | 1 +
1 file changed, 1 insertion(+)
[PATCH] pl031: Update last RTCLR value on write in case it's read back
Posted by Jessica Clarke 9 months, 1 week ago
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.

Signed-off-by: Jessica Clarke <jrtc27@jrtc27.com>
---
 hw/rtc/pl031.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/hw/rtc/pl031.c b/hw/rtc/pl031.c
index 837b0bdf9b..563bb4b446 100644
--- a/hw/rtc/pl031.c
+++ b/hw/rtc/pl031.c
@@ -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);
-- 
2.34.1
Re: [PATCH] pl031: Update last RTCLR value on write in case it's read back
Posted by Peter Maydell 9 months, 1 week ago
On Thu, 22 Feb 2024 at 00:04, Jessica Clarke <jrtc27@jrtc27.com> wrote:
>
> 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.
>
> Signed-off-by: Jessica Clarke <jrtc27@jrtc27.com>
> ---

Thanks for the patch -- looks like this bug has been present since
the first version of the pl031 emulation was added back in 2007...
Applied to target-arm.next.

-- PMM
Re: [PATCH] pl031: Update last RTCLR value on write in case it's read back
Posted by Alex Bennée 9 months, 1 week ago
Jessica Clarke <jrtc27@jrtc27.com> writes:

> 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.
>
> Signed-off-by: Jessica Clarke <jrtc27@jrtc27.com>

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>

-- 
Alex Bennée
Virtualisation Tech Lead @ Linaro