| From 5706af4a7052a5048f3e4a2cbc65ee66c71bdfa8 Mon Sep 17 00:00:00 2001 |
| From: Thomas Gleixner <tglx@linutronix.de> |
| Date: Thu, 15 Jul 2010 14:28:02 +0200 |
| Subject: [PATCH] x86: mce: Convert cmci_discover_lock to raw_spinlock |
| |
| commit 5706af4a7052a5048f3e4a2cbc65ee66c71bdfa8 in tip. |
| |
| cmci_discover_lock() is taken in atomic contexts (cpu bring |
| up). Convert it to a raw_spinlock. |
| |
| Signed-off-by: Thomas Gleixner <tglx@linutronix.de> |
| |
| diff --git a/arch/x86/kernel/cpu/mcheck/mce_intel.c b/arch/x86/kernel/cpu/mcheck/mce_intel.c |
| index 7c78563..10c063d 100644 |
| --- a/arch/x86/kernel/cpu/mcheck/mce_intel.c |
| +++ b/arch/x86/kernel/cpu/mcheck/mce_intel.c |
| @@ -27,7 +27,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 |
| |
| @@ -84,7 +84,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; |
| |
| @@ -114,7 +114,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"); |
| } |
| @@ -148,7 +148,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; |
| @@ -158,7 +158,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); |
| } |
| |
| /* |
| -- |
| 1.7.1.1 |
| |