From 5f5ba8d3970ff692a68e56d3bcfbc007206b34f5 Mon Sep 17 00:00:00 2001 From: Jan Kiszka Date: Sat, 15 Nov 2008 09:08:34 +0100 Subject: [PATCH] Fix in-kernel IOAPIC reset Transfer ioapic state to the in-kernel implementation on reset, fixing a systematic reboot issue of 2.6.18 RHEL/CentOS kernels, but probably also other, more sporadic reboot hangs (seen after Windows Vista installation e.g.). Signed-off-by: Jan Kiszka Signed-off-by: Avi Kivity --- hw/apic.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/hw/apic.c b/hw/apic.c index 20e995c3a3..88367848c9 100644 --- a/hw/apic.c +++ b/hw/apic.c @@ -1246,8 +1246,14 @@ static void ioapic_reset(void *opaque) int i; memset(s, 0, sizeof(*s)); + s->base_address = IOAPIC_DEFAULT_BASE_ADDRESS; for(i = 0; i < IOAPIC_NUM_PINS; i++) s->ioredtbl[i] = 1 << 16; /* mask LVT */ +#ifdef KVM_CAP_IRQCHIP + if (kvm_enabled() && qemu_kvm_irqchip_in_kernel()) { + kvm_kernel_ioapic_load_from_user(s); + } +#endif } static CPUReadMemoryFunc *ioapic_mem_read[3] = { -- 2.11.4.GIT