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