]> git.baikalelectronics.ru Git - kernel.git/commit
x86: MCE: Add raw_lock conversion again
authorThomas Gleixner <tglx@linutronix.de>
Tue, 5 Aug 2014 20:57:19 +0000 (22:57 +0200)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 6 Aug 2014 00:34:33 +0000 (17:34 -0700)
commit52e0f2f29db423aecb45322b98a300a9a3d42122
tree92e9da8fa9be8d12fb5ebd00ab89ba4feb68be34
parent32971b3c6c52bd794e2f32e4bc0ba4b035ab162e
x86: MCE: Add raw_lock conversion again

Commit 6d47efe5d1e5 ("x86/mce: Fix CMCI preemption bugs") breaks RT by
the completely unrelated conversion of the cmci_discover_lock to a
regular (non raw) spinlock.  This lock was annotated in commit
f8128719099c ("locking, x86: mce: Annotate cmci_discover_lock as raw")
with a proper explanation why.

The argument for converting the lock back to a regular spinlock was:

 - it does percpu ops without disabling preemption. Preemption is not
   disabled due to the mistaken use of a raw spinlock.

Which is complete nonsense.  The raw_spinlock is disabling preemption in
the same way as a regular spinlock.  In mainline spinlock maps to
raw_spinlock, in RT spinlock becomes a "sleeping" lock.

raw_spinlock has on RT exactly the same semantics as in mainline.  And
because this lock is taken in non preemptible context it must be raw on
RT.

Undo the locking brainfart.

Reported-by: Clark Williams <williams@redhat.com>
Reported-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: stable@vger.kernel.org
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
arch/x86/kernel/cpu/mcheck/mce_intel.c