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-unstable] Disable HPET broadcast mode on kexec.

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] Disable HPET broadcast mode on kexec.
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Thu, 01 Oct 2009 04:35:11 -0700
Delivery-date: Thu, 01 Oct 2009 04:36:28 -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 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 <=