[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 07/41] apic: save apic_delivered flag
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PULL 07/41] apic: save apic_delivered flag |
Date: |
Fri, 27 Jan 2017 14:45:15 +0100 |
From: Pavel Dovgalyuk <address@hidden>
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 <address@hidden>
Message-Id: <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 insertions(+)
diff --git a/hw/intc/apic_common.c b/hw/intc/apic_common.c
index 3945dfd..17df24c 100644
--- a/hw/intc/apic_common.c
+++ b/hw/intc/apic_common.c
@@ -385,6 +385,25 @@ 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,
@@ -397,6 +416,19 @@ 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,
@@ -431,6 +463,7 @@ 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 1209eb4..20ad28c 100644
--- a/include/hw/i386/apic_internal.h
+++ b/include/hw/i386/apic_internal.h
@@ -189,6 +189,8 @@ 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 {
--
1.8.3.1
- [Qemu-devel] [PULL 00/41] Misc changes for 2017-01-27, Paolo Bonzini, 2017/01/27
- [Qemu-devel] [PULL 03/41] replay: don't use rtc clock on loadvm phase, Paolo Bonzini, 2017/01/27
- [Qemu-devel] [PULL 04/41] savevm: add public save_vmstate function, Paolo Bonzini, 2017/01/27
- [Qemu-devel] [PULL 05/41] replay: save/load initial state, Paolo Bonzini, 2017/01/27
- [Qemu-devel] [PULL 01/41] icount: update instruction counter on apic patching, Paolo Bonzini, 2017/01/27
- [Qemu-devel] [PULL 02/41] replay: improve interrupt handling, Paolo Bonzini, 2017/01/27
- [Qemu-devel] [PULL 06/41] replay: exception replay fix, Paolo Bonzini, 2017/01/27
- [Qemu-devel] [PULL 07/41] apic: save apic_delivered flag,
Paolo Bonzini <=
- [Qemu-devel] [PULL 08/41] memory: tune mtree_print_mr() to dump mr type, Paolo Bonzini, 2017/01/27
- [Qemu-devel] [PULL 12/41] hw/isa/lpc_ich9: negotiate SMI broadcast on pc-q35-2.9+ machine types, Paolo Bonzini, 2017/01/27
- [Qemu-devel] [PULL 11/41] hw/isa/lpc_ich9: add broadcast SMI feature, Paolo Bonzini, 2017/01/27
- [Qemu-devel] [PULL 13/41] block/iscsi: avoid data corruption with cache=writeback, Paolo Bonzini, 2017/01/27
- [Qemu-devel] [PULL 09/41] memory: hmp: add "-f" for "info mtree", Paolo Bonzini, 2017/01/27
- [Qemu-devel] [PULL 10/41] hw/isa/lpc_ich9: add SMI feature negotiation via fw_cfg, Paolo Bonzini, 2017/01/27
- [Qemu-devel] [PULL 14/41] Introduce DEVICE_CATEGORY_CPU for CPU devices, Paolo Bonzini, 2017/01/27
- [Qemu-devel] [PULL 15/41] hw/scsi: Fix debug message of cdb structure in scsi-generic, Paolo Bonzini, 2017/01/27
- [Qemu-devel] [PULL 17/41] block: get max_transfer limit for char (scsi-generic) devices, Paolo Bonzini, 2017/01/27
- [Qemu-devel] [PULL 18/41] x86-KVM: Supply TSC and APIC clock rates to guest like VMWare, Paolo Bonzini, 2017/01/27