Patchwork hw/arm_mptimer: Save the timer state

login
register
mail settings
Submitter Peter Maydell
Date March 22, 2013, 3:49 p.m.
Message ID <1363967348-3044-1-git-send-email-peter.maydell@linaro.org>
Download mbox | patch
Permalink /patch/230102/
State New
Headers show

Comments

Peter Maydell - March 22, 2013, 3:49 p.m.
Add a missing VMSTATE_TIMER() entry to the arm_mptimer vmstate
description; this omission meant that we would probably hang on reload
when the timer failed to fire.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
 hw/arm_mptimer.c |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
Peter Crosthwaite - March 25, 2013, 12:38 a.m.
Hi Peter,

On Sat, Mar 23, 2013 at 1:49 AM, Peter Maydell <peter.maydell@linaro.org> wrote:
> Add a missing VMSTATE_TIMER() entry to the arm_mptimer vmstate
> description; this omission meant that we would probably hang on reload
> when the timer failed to fire.
>

I know load-save does not work for Zynq Linux. This will definately
help get us closer to a working state. Might have another go to see if
it gets any further with this. Thanks.

> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

Reviewed-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>

> ---
>  hw/arm_mptimer.c |    5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/hw/arm_mptimer.c b/hw/arm_mptimer.c
> index f59a9f1..317f5e4 100644
> --- a/hw/arm_mptimer.c
> +++ b/hw/arm_mptimer.c
> @@ -253,14 +253,15 @@ static int arm_mptimer_init(SysBusDevice *dev)
>
>  static const VMStateDescription vmstate_timerblock = {
>      .name = "arm_mptimer_timerblock",
> -    .version_id = 1,
> -    .minimum_version_id = 1,
> +    .version_id = 2,
> +    .minimum_version_id = 2,
>      .fields = (VMStateField[]) {
>          VMSTATE_UINT32(count, TimerBlock),
>          VMSTATE_UINT32(load, TimerBlock),
>          VMSTATE_UINT32(control, TimerBlock),
>          VMSTATE_UINT32(status, TimerBlock),
>          VMSTATE_INT64(tick, TimerBlock),
> +        VMSTATE_TIMER(timer, TimerBlock),
>          VMSTATE_END_OF_LIST()
>      }
>  };
> --
> 1.7.9.5
>
>

Patch

diff --git a/hw/arm_mptimer.c b/hw/arm_mptimer.c
index f59a9f1..317f5e4 100644
--- a/hw/arm_mptimer.c
+++ b/hw/arm_mptimer.c
@@ -253,14 +253,15 @@  static int arm_mptimer_init(SysBusDevice *dev)
 
 static const VMStateDescription vmstate_timerblock = {
     .name = "arm_mptimer_timerblock",
-    .version_id = 1,
-    .minimum_version_id = 1,
+    .version_id = 2,
+    .minimum_version_id = 2,
     .fields = (VMStateField[]) {
         VMSTATE_UINT32(count, TimerBlock),
         VMSTATE_UINT32(load, TimerBlock),
         VMSTATE_UINT32(control, TimerBlock),
         VMSTATE_UINT32(status, TimerBlock),
         VMSTATE_INT64(tick, TimerBlock),
+        VMSTATE_TIMER(timer, TimerBlock),
         VMSTATE_END_OF_LIST()
     }
 };