Pre load is necessary, because we switched off resetting VM while loading in 
the replay mode. Calling reset handlers generates irqs, that make loading 
process non-deterministic.


Sent from mobile device



-------- Исходное сообщение --------
От: Paolo Bonzini <pbonz...@redhat.com> 
Дата:31.07.2014  17:01  (GMT+04:00) 
Кому: Pavel Dovgalyuk <pavel.dovga...@ispras.ru>,qemu-devel@nongnu.org 
Копия: 
peter.mayd...@linaro.org,peter.crosthwa...@xilinx.com,mark.bur...@greensocs.com,r...@ispras.ru,batuz...@ispras.ru,maria.klimushenk...@ispras.ru,ebl...@redhat.com,afaer...@suse.de,fred.kon...@greensocs.com
 
Тема: Re: [RFC PATCH v3 07/49] kvmapic: fixing loading vmstate 

Il 31/07/2014 14:54, Pavel Dovgalyuk ha scritto:
> +static int apic_pre_load(void *opaque)
> +{
> +    APICCommonState *s = APIC_COMMON(opaque);
> +    s->sipi_vector = 0;
> +    s->wait_for_sipi = 0;
> +    s->vapic_paddr = 0;
> +    return 0;

Is this necessary?  Or does reset already do that?

> +}
> +
>  static void apic_dispatch_pre_save(void *opaque)
>  {
>      APICCommonState *s = APIC_COMMON(opaque);
> @@ -345,12 +354,46 @@ static int apic_dispatch_post_load(void *opaque, int 
> version_id)
>      return 0;
>  }
>  
> +static bool apic_common_sipi_needed(void *opaque)
> +{
> +    APICCommonState *s = APIC_COMMON(opaque);
> +    return s->wait_for_sipi != 0;
> +}
> +
> +static const VMStateDescription vmstate_apic_common_sipi = {
> +    .name = "apic_sipi",
> +    .version_id = 1,
> +    .minimum_version_id = 1,
> +    .fields = (VMStateField[]) {
> +        VMSTATE_INT32(sipi_vector, APICCommonState),
> +        VMSTATE_INT32(wait_for_sipi, APICCommonState),
> +        VMSTATE_END_OF_LIST()
> +    }
> +};
> +
> +static bool apic_common_vapic_paddr_needed(void *opaque)
> +{
> +    APICCommonState *s = APIC_COMMON(opaque);
> +    return s->vapic_paddr != 0;
> +}
> +
> +static const VMStateDescription vmstate_apic_common_vapic_paddr = {
> +    .name = "apic_vapic_paddr",
> +    .version_id = 1,
> +    .minimum_version_id = 1,
> +    .fields = (VMStateField[]) {
> +        VMSTATE_UINT64(vapic_paddr, APICCommonState),
> +        VMSTATE_END_OF_LIST()
> +    }
> +};
> +
>  static const VMStateDescription vmstate_apic_common = {
>      .name = "apic",
> -    .version_id = 3,
> +    .version_id = 4,

You know what I'm going to say. :)

Paolo

Reply via email to