[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 07/12] apic_common: vapic_paddr synchronization f
From: |
Pavel Dovgalyuk |
Subject: |
[Qemu-devel] [PATCH v2 07/12] apic_common: vapic_paddr synchronization fix |
Date: |
Thu, 28 Aug 2014 15:19:03 +0400 |
User-agent: |
StGit/0.16 |
This patch postpones vapic_paddr initialization, which is perfromed
by the migration functions. When vapic_paddr is synchronized within
the migration process, apic_common functions could operate with incorrect
apic state, if it hadn't loaded yet. This patch postpones the synchronization
until whole virtual machine state is loaded.
Signed-off-by: Pavel Dovgalyuk <address@hidden>
---
hw/intc/apic_common.c | 10 +++++++++-
1 files changed, 9 insertions(+), 1 deletions(-)
diff --git a/hw/intc/apic_common.c b/hw/intc/apic_common.c
index 2d2dfcb..c3590a6 100644
--- a/hw/intc/apic_common.c
+++ b/hw/intc/apic_common.c
@@ -91,13 +91,21 @@ void apic_enable_tpr_access_reporting(DeviceState *dev,
bool enable)
}
}
+static void do_apic_enable_vapic(void *data)
+{
+ APICCommonState *s = APIC_COMMON(data);
+ APICCommonClass *info = APIC_COMMON_GET_CLASS(s);
+
+ info->vapic_base_update(s);
+}
+
void apic_enable_vapic(DeviceState *dev, hwaddr paddr)
{
APICCommonState *s = APIC_COMMON(dev);
APICCommonClass *info = APIC_COMMON_GET_CLASS(s);
s->vapic_paddr = paddr;
- info->vapic_base_update(s);
+ run_on_cpu(CPU(s->cpu), do_apic_enable_vapic, s);
}
void apic_handle_tpr_access_report(DeviceState *dev, target_ulong ip,
- [Qemu-devel] [PATCH v2 00/12] Fixing hardware migration issues, Pavel Dovgalyuk, 2014/08/28
- [Qemu-devel] [PATCH v2 01/12] integratorcp: adding vmstate for save/restore, Pavel Dovgalyuk, 2014/08/28
- [Qemu-devel] [PATCH v2 02/12] pcspk: adding vmstate for save/restore, Pavel Dovgalyuk, 2014/08/28
- [Qemu-devel] [PATCH v2 03/12] fdc: adding vmstate for save/restore, Pavel Dovgalyuk, 2014/08/28
- [Qemu-devel] [PATCH v2 04/12] parallel: adding vmstate for save/restore, Pavel Dovgalyuk, 2014/08/28
- [Qemu-devel] [PATCH v2 05/12] serial: fixing vmstate for save/restore, Pavel Dovgalyuk, 2014/08/28
- [Qemu-devel] [PATCH v2 06/12] apic_common: fixing loading vmstate, Pavel Dovgalyuk, 2014/08/28
- [Qemu-devel] [PATCH v2 07/12] apic_common: vapic_paddr synchronization fix,
Pavel Dovgalyuk <=
- [Qemu-devel] [PATCH v2 08/12] hpet: fixing saving and loading process, Pavel Dovgalyuk, 2014/08/28
- [Qemu-devel] [PATCH v2 09/12] pckbd: adding new fields to vmstate, Pavel Dovgalyuk, 2014/08/28
- [Qemu-devel] [PATCH v2 10/12] piix: do not raise irq while loading vmstate, Pavel Dovgalyuk, 2014/08/28
- [Qemu-devel] [PATCH v2 11/12] mc146818rtc: add missed field to vmstate, Pavel Dovgalyuk, 2014/08/28
- [Qemu-devel] [PATCH v2 12/12] pl031: add missed field to vmstate, Pavel Dovgalyuk, 2014/08/28
- Re: [Qemu-devel] [PATCH v2 00/12] Fixing hardware migration issues, Paolo Bonzini, 2014/08/28