qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] [v3] hw/arm_gic.c: Fix save/load of irq_target


From: Dmitry Koshelev
Subject: Re: [Qemu-devel] [PATCH] [v3] hw/arm_gic.c: Fix save/load of irq_target array
Date: Fri, 21 Oct 2011 17:58:43 +0400

On Fri, Oct 21, 2011 at 3:42 PM, Andreas Färber <address@hidden> wrote:
> Am 20.10.2011 12:48, schrieb Dmitry Koshelev:
>> irq_target array saving/loading is in the wrong loop.
>> Version bump.
>>
>> Signed-off-by: Dmitry Koshelev <address@hidden>
>
> Acked-by: Andreas Färber <address@hidden>
>
> Applies cleanly now.
>
> Is there a particular use case that was broken before and works now, or
> did this turn up during code review only?

There is a use case but it's complicated and involves proprietary software.

>
> Andreas
>
>> ---
>>  hw/arm_gic.c |   16 ++++++++--------
>>  1 files changed, 8 insertions(+), 8 deletions(-)
>>
>> diff --git a/hw/arm_gic.c b/hw/arm_gic.c
>> index 83213dd..8dd8742 100644
>> --- a/hw/arm_gic.c
>> +++ b/hw/arm_gic.c
>> @@ -658,9 +658,6 @@ static void gic_save(QEMUFile *f, void *opaque)
>>      qemu_put_be32(f, s->enabled);
>>      for (i = 0; i < NUM_CPU(s); i++) {
>>          qemu_put_be32(f, s->cpu_enabled[i]);
>> -#ifndef NVIC
>> -        qemu_put_be32(f, s->irq_target[i]);
>> -#endif
>>          for (j = 0; j < 32; j++)
>>              qemu_put_be32(f, s->priority1[j][i]);
>>          for (j = 0; j < GIC_NIRQ; j++)
>> @@ -674,6 +671,9 @@ static void gic_save(QEMUFile *f, void *opaque)
>>          qemu_put_be32(f, s->priority2[i]);
>>      }
>>      for (i = 0; i < GIC_NIRQ; i++) {
>> +#ifndef NVIC
>> +        qemu_put_be32(f, s->irq_target[i]);
>> +#endif
>>          qemu_put_byte(f, s->irq_state[i].enabled);
>>          qemu_put_byte(f, s->irq_state[i].pending);
>>          qemu_put_byte(f, s->irq_state[i].active);
>> @@ -689,15 +689,12 @@ static int gic_load(QEMUFile *f, void *opaque, int 
>> version_id)
>>      int i;
>>      int j;
>>
>> -    if (version_id != 1)
>> +    if (version_id != 2)
>>          return -EINVAL;
>>
>>      s->enabled = qemu_get_be32(f);
>>      for (i = 0; i < NUM_CPU(s); i++) {
>>          s->cpu_enabled[i] = qemu_get_be32(f);
>> -#ifndef NVIC
>> -        s->irq_target[i] = qemu_get_be32(f);
>> -#endif
>>          for (j = 0; j < 32; j++)
>>              s->priority1[j][i] = qemu_get_be32(f);
>>          for (j = 0; j < GIC_NIRQ; j++)
>> @@ -711,6 +708,9 @@ static int gic_load(QEMUFile *f, void *opaque, int 
>> version_id)
>>          s->priority2[i] = qemu_get_be32(f);
>>      }
>>      for (i = 0; i < GIC_NIRQ; i++) {
>> +#ifndef NVIC
>> +        s->irq_target[i] = qemu_get_be32(f);
>> +#endif
>>          s->irq_state[i].enabled = qemu_get_byte(f);
>>          s->irq_state[i].pending = qemu_get_byte(f);
>>          s->irq_state[i].active = qemu_get_byte(f);
>> @@ -739,5 +739,5 @@ static void gic_init(gic_state *s)
>>      }
>>      memory_region_init_io(&s->iomem, &gic_dist_ops, s, "gic_dist", 0x1000);
>>      gic_reset(s);
>> -    register_savevm(NULL, "arm_gic", -1, 1, gic_save, gic_load, s);
>> +    register_savevm(NULL, "arm_gic", -1, 2, gic_save, gic_load, s);
>>  }
>
>
> --
> SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
> GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746, AG Nürnberg
>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]