locking, x86: mce: Annotate cmci_discover_lock as raw
authorThomas Gleixner <tglx@linutronix.de>
Thu, 15 Jul 2010 12:28:02 +0000 (14:28 +0200)
committerIngo Molnar <mingo@elte.hu>
Tue, 13 Sep 2011 09:12:09 +0000 (11:12 +0200)
The cmci_discover_lock can be taken in atomic context (cpu bring
up sequence) and therefore cannot be preempted on -rt.

In mainline this change documents the low level nature of
the lock - otherwise there's no functional difference. Lockdep
and Sparse checking will work as usual.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/cpu/mcheck/mce_intel.c

index 8694ef56459d8e26761e6344df513ebf3af9dce6..38e49bc95ffcc5eba26631a7ac59618b1dafc660 100644 (file)
@@ -28,7 +28,7 @@ static DEFINE_PER_CPU(mce_banks_t, mce_banks_owned);
  * cmci_discover_lock protects against parallel discovery attempts
  * which could race against each other.
  */
-static DEFINE_SPINLOCK(cmci_discover_lock);
+static DEFINE_RAW_SPINLOCK(cmci_discover_lock);
 
 #define CMCI_THRESHOLD 1
 
@@ -85,7 +85,7 @@ static void cmci_discover(int banks, int boot)
        int hdr = 0;
        int i;
 
-       spin_lock_irqsave(&cmci_discover_lock, flags);
+       raw_spin_lock_irqsave(&cmci_discover_lock, flags);
        for (i = 0; i < banks; i++) {
                u64 val;
 
@@ -116,7 +116,7 @@ static void cmci_discover(int banks, int boot)
                        WARN_ON(!test_bit(i, __get_cpu_var(mce_poll_banks)));
                }
        }
-       spin_unlock_irqrestore(&cmci_discover_lock, flags);
+       raw_spin_unlock_irqrestore(&cmci_discover_lock, flags);
        if (hdr)
                printk(KERN_CONT "\n");
 }
@@ -150,7 +150,7 @@ void cmci_clear(void)
 
        if (!cmci_supported(&banks))
                return;
-       spin_lock_irqsave(&cmci_discover_lock, flags);
+       raw_spin_lock_irqsave(&cmci_discover_lock, flags);
        for (i = 0; i < banks; i++) {
                if (!test_bit(i, __get_cpu_var(mce_banks_owned)))
                        continue;
@@ -160,7 +160,7 @@ void cmci_clear(void)
                wrmsrl(MSR_IA32_MCx_CTL2(i), val);
                __clear_bit(i, __get_cpu_var(mce_banks_owned));
        }
-       spin_unlock_irqrestore(&cmci_discover_lock, flags);
+       raw_spin_unlock_irqrestore(&cmci_discover_lock, flags);
 }
 
 /*