[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] x86/nmi: self_nmi() should not unconditionally enable interrupts


  • To: xen-changelog@xxxxxxxxxxxxxxxxxxx
  • From: Xen patchbot-unstable <patchbot@xxxxxxx>
  • Date: Fri, 16 Nov 2012 03:33:08 +0000
  • Delivery-date: Fri, 16 Nov 2012 03:33:20 +0000
  • List-id: "Change log for Mercurial \(receive only\)" <xen-changelog.lists.xen.org>

# HG changeset patch
# User Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
# Date 1352973278 0
# Node ID b9b4456e12d1e207a12ee70562334708f7ea3ab2
# Parent  f50e2f4278ab45e2b2c2650dd10c694ffda68ba0
x86/nmi: self_nmi() should not unconditionally enable interrupts

It seems that all current callers have interrupts enabled, making the
code currently safe but dangerous.  Also, fix a trailing whitespace
issue.

Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
Committed-by: Keir Fraser <keir@xxxxxxx>
---


diff -r f50e2f4278ab -r b9b4456e12d1 xen/arch/x86/nmi.c
--- a/xen/arch/x86/nmi.c        Thu Nov 15 09:52:12 2012 +0000
+++ b/xen/arch/x86/nmi.c        Thu Nov 15 09:54:38 2012 +0000
@@ -482,13 +482,14 @@ void nmi_watchdog_tick(struct cpu_user_r
  * 8-3 and 8-4 in IA32 Reference Manual Volume 3. We send the IPI to
  * our own APIC ID explicitly which is valid.
  */
-void self_nmi(void) 
+void self_nmi(void)
 {
+    unsigned long flags;
     u32 id = get_apic_id();
-    local_irq_disable();
+    local_irq_save(flags);
     apic_wait_icr_idle();
     apic_icr_write(APIC_DM_NMI | APIC_DEST_PHYSICAL, id);
-    local_irq_enable();
+    local_irq_restore(flags);
 }
 
 static void do_nmi_trigger(unsigned char key)

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.