|
|
|
|
|
|
|
|
|
|
xen-changelog
[Xen-changelog] [xen-unstable] Disable HPET broadcast mode on kexec.
# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1254396336 -3600
# Node ID 26708cdf86be4a796a51c7770bab2c18c525671d
# Parent 6472342c8ab0789b844714bcf557e9e5eeacca42
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/arch/x86/crash.c | 4 ++++
xen/arch/x86/hpet.c | 7 ++++---
2 files changed, 8 insertions(+), 3 deletions(-)
diff -r 6472342c8ab0 -r 26708cdf86be xen/arch/x86/crash.c
--- a/xen/arch/x86/crash.c Wed Sep 30 08:51:21 2009 +0100
+++ b/xen/arch/x86/crash.c Thu Oct 01 12:25:36 2009 +0100
@@ -25,6 +25,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;
@@ -83,6 +84,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 6472342c8ab0 -r 26708cdf86be xen/arch/x86/hpet.c
--- a/xen/arch/x86/hpet.c Wed Sep 30 08:51:21 2009 +0100
+++ b/xen/arch/x86/hpet.c Thu Oct 01 12:25:36 2009 +0100
@@ -604,8 +604,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;
@@ -619,7 +620,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
|
<Prev in Thread] |
Current Thread |
[Next in Thread> |
- [Xen-changelog] [xen-unstable] Disable HPET broadcast mode on kexec.,
Xen patchbot-unstable <=
|
|
|
|
|