• Thomas Gleixner's avatar
    x86: MCE: Add raw_lock conversion again · ed5c41d3
    Thomas Gleixner authored
    Commit ea431643 ("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
    59d958d2 ("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: default avatarClark Williams <williams@redhat.com>
    Reported-by: default avatarSteven Rostedt <rostedt@goodmis.org>
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    ed5c41d3
mce_intel.c 9.83 KB