On 26/01/2017 14:03, Pavel Dovgalyuk wrote: >> From: Paolo Bonzini [mailto:pbonz...@redhat.com] >> On 26/01/2017 13:34, Pavel Dovgalyuk wrote: >>> This patch implements saving/restoring of static apic_delivered variable. >>> >>> v8: saving static variable only for one of the APICs >>> >>> Signed-off-by: Pavel Dovgalyuk <pavel.dovga...@ispras.ru> >>> --- >>> hw/intc/apic_common.c | 37 >>> +++++++++++++++++++++++++++++++++++++ >>> include/hw/i386/apic_internal.h | 2 ++ >>> 2 files changed, 39 insertions(+) >>> >>> diff --git a/hw/intc/apic_common.c b/hw/intc/apic_common.c >>> index d78c885..edacb16 100644 >>> --- a/hw/intc/apic_common.c >>> +++ b/hw/intc/apic_common.c >>> @@ -384,6 +384,29 @@ static bool apic_common_sipi_needed(void *opaque) >>> return s->wait_for_sipi != 0; >>> } >>> >>> +static bool apic_irq_delivered_needed(void *opaque) >>> +{ >>> + static APICCommonState *first_apic; >>> + APICCommonState *s = APIC_COMMON(opaque); >>> + if (!first_apic) { >>> + first_apic = s; >>> + } >>> + return s == first_apic; >> >> Should also check " && apic_irq_delivered != 0". > > Reset of this variable when machine reboots is also forgotten.
Ok, I'll queue this patch with the condition changed, can you send one for reset? Paolo