[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-3.4-testing] Disable HPET broadcast mode on kexec.
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1254410199 -3600 # Node ID 9ea1640248e78065851e4098f94a4a139fb5524e # Parent a154809facf81cc5a708ddf1b566115631af860e Disable HPET broadcast mode on kexec. Without this the new kernel cannot receive timer interrupts from the legacy sources. Hangs are observed in the second kernel's "check_timer()" routing or at "Checking 'hlt' instruction." Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> xen-unstable changeset: 20265:26708cdf86be xen-unstable date: Thu Oct 01 12:25:36 2009 +0100 --- xen/arch/x86/crash.c | 4 ++++ xen/arch/x86/hpet.c | 7 ++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff -r a154809facf8 -r 9ea1640248e7 xen/arch/x86/crash.c --- a/xen/arch/x86/crash.c Thu Oct 01 16:16:07 2009 +0100 +++ b/xen/arch/x86/crash.c Thu Oct 01 16:16:39 2009 +0100 @@ -26,6 +26,7 @@ #include <public/xen.h> #include <asm/shared.h> #include <asm/hvm/support.h> +#include <asm/hpet.h> static atomic_t waiting_for_crash_ipi; static unsigned int crashing_cpu; @@ -97,6 +98,9 @@ void machine_crash_shutdown(void) nmi_shootdown_cpus(); + if ( hpet_broadcast_is_available() ) + hpet_disable_legacy_broadcast(); + disable_IO_APIC(); hvm_cpu_down(); diff -r a154809facf8 -r 9ea1640248e7 xen/arch/x86/hpet.c --- a/xen/arch/x86/hpet.c Thu Oct 01 16:16:07 2009 +0100 +++ b/xen/arch/x86/hpet.c Thu Oct 01 16:16:39 2009 +0100 @@ -600,8 +600,9 @@ void hpet_disable_legacy_broadcast(void) void hpet_disable_legacy_broadcast(void) { u32 cfg; - - spin_lock_irq(&legacy_hpet_event.lock); + unsigned long flags; + + spin_lock_irqsave(&legacy_hpet_event.lock, flags); legacy_hpet_event.flags |= HPET_EVT_DISABLE; @@ -615,7 +616,7 @@ void hpet_disable_legacy_broadcast(void) cfg &= ~HPET_CFG_LEGACY; hpet_write32(cfg, HPET_CFG); - spin_unlock_irq(&legacy_hpet_event.lock); + spin_unlock_irqrestore(&legacy_hpet_event.lock, flags); smp_send_event_check_mask(cpu_online_map); } _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |