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