WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-3.4-testing] Disable HPET broadcast mode on kexec.

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-3.4-testing] Disable HPET broadcast mode on kexec.
From: "Xen patchbot-3.4-testing" <patchbot-3.4-testing@xxxxxxxxxxxxxxxxxxx>
Date: Thu, 01 Oct 2009 08:25:33 -0700
Delivery-date: Thu, 01 Oct 2009 08:27:17 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# 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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-3.4-testing] Disable HPET broadcast mode on kexec., Xen patchbot-3.4-testing <=