qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH] Revert "apic: save apic_delivered flag"


From: Pavel Dovgalyuk
Subject: Re: [Qemu-devel] [PATCH] Revert "apic: save apic_delivered flag"
Date: Thu, 23 Mar 2017 10:34:04 +0300
User-agent: Type for Android

This value is used by mc146818rtc.
Therefore it affects the vitrual machine state.
I've encountered the cases when replay was broken without migrating of this 
variable.

⁣Отправлено с помощью BlueMail ​

На 22 Мар 2017 г., 15:13, в 15:13, Paolo Bonzini <address@hidden> написал:>This 
reverts commit 07bfa354772f2de67008dc66c201b627acff0106.
>The global variable is only read as part of a
>
>            apic_reset_irq_delivered();
>            qemu_irq_raise(s->irq);
>            if (!apic_get_irq_delivered()) {
>
>sequence, so the value never matters at migration time.
>
>Reported-by: Dr. David Alan Gilbert <address@hidden>
>Cc: Pavel Dovgalyuk <address@hidden>
>Signed-off-by: Paolo Bonzini <address@hidden>
>---
> hw/intc/apic_common.c           | 33 ---------------------------------
> include/hw/i386/apic_internal.h |  2 --
> 2 files changed, 35 deletions(-)
>
>diff --git a/hw/intc/apic_common.c b/hw/intc/apic_common.c
>index 7a6e771..c3829e3 100644
>--- a/hw/intc/apic_common.c
>+++ b/hw/intc/apic_common.c
>@@ -387,25 +387,6 @@ static bool apic_common_sipi_needed(void *opaque)
>     return s->wait_for_sipi != 0;
> }
>
>-static bool apic_irq_delivered_needed(void *opaque)
>-{
>-    APICCommonState *s = APIC_COMMON(opaque);
>-    return s->cpu == X86_CPU(first_cpu) && apic_irq_delivered != 0;
>-}
>-
>-static void apic_irq_delivered_pre_save(void *opaque)
>-{
>-    APICCommonState *s = APIC_COMMON(opaque);
>-    s->apic_irq_delivered = apic_irq_delivered;
>-}
>-
>-static int apic_irq_delivered_post_load(void *opaque, int version_id)
>-{
>-    APICCommonState *s = APIC_COMMON(opaque);
>-    apic_irq_delivered = s->apic_irq_delivered;
>-    return 0;
>-}
>-
> static const VMStateDescription vmstate_apic_common_sipi = {
>     .name = "apic_sipi",
>     .version_id = 1,
>@@ -418,19 +399,6 @@ static const VMStateDescription
>vmstate_apic_common_sipi = {
>     }
> };
>
>-static const VMStateDescription vmstate_apic_irq_delivered = {
>-    .name = "apic_irq_delivered",
>-    .version_id = 1,
>-    .minimum_version_id = 1,
>-    .needed = apic_irq_delivered_needed,
>-    .pre_save = apic_irq_delivered_pre_save,
>-    .post_load = apic_irq_delivered_post_load,
>-    .fields = (VMStateField[]) {
>-        VMSTATE_INT32(apic_irq_delivered, APICCommonState),
>-        VMSTATE_END_OF_LIST()
>-    }
>-};
>-
> static const VMStateDescription vmstate_apic_common = {
>     .name = "apic",
>     .version_id = 3,
>@@ -465,7 +433,6 @@ static const VMStateDescription vmstate_apic_common
>= {
>     },
>     .subsections = (const VMStateDescription*[]) {
>         &vmstate_apic_common_sipi,
>-        &vmstate_apic_irq_delivered,
>         NULL
>     }
> };
>diff --git a/include/hw/i386/apic_internal.h
>b/include/hw/i386/apic_internal.h
>index 20ad28c..1209eb4 100644
>--- a/include/hw/i386/apic_internal.h
>+++ b/include/hw/i386/apic_internal.h
>@@ -189,8 +189,6 @@ struct APICCommonState {
>     DeviceState *vapic;
>     hwaddr vapic_paddr; /* note: persistence via kvmvapic */
>     bool legacy_instance_id;
>-
>-    int apic_irq_delivered; /* for saving static variable */
> };
>
> typedef struct VAPICState {
>--
>2.9.3


reply via email to

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