MIPS: Make the die_lock be raw
On preempt-rt this lock needs to be raw, so it does not get converted to a sleeping spinlock. Trying to sleep in a panic is not really desireable. Signed-off-by: Wu Zhangjin <wuzhangjin@gmail.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Cc: linux-mips@linux-mips.org Patchwork: https://patchwork.linux-mips.org/patch/2636/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
committed by
Ralf Baechle
parent
49de830ad7
commit
4d85f6afa4
@@ -364,7 +364,7 @@ static int regs_to_trapnr(struct pt_regs *regs)
|
|||||||
return (regs->cp0_cause >> 2) & 0x1f;
|
return (regs->cp0_cause >> 2) & 0x1f;
|
||||||
}
|
}
|
||||||
|
|
||||||
static DEFINE_SPINLOCK(die_lock);
|
static DEFINE_RAW_SPINLOCK(die_lock);
|
||||||
|
|
||||||
void __noreturn die(const char *str, struct pt_regs *regs)
|
void __noreturn die(const char *str, struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
@@ -378,7 +378,7 @@ void __noreturn die(const char *str, struct pt_regs *regs)
|
|||||||
sig = 0;
|
sig = 0;
|
||||||
|
|
||||||
console_verbose();
|
console_verbose();
|
||||||
spin_lock_irq(&die_lock);
|
raw_spin_lock_irq(&die_lock);
|
||||||
bust_spinlocks(1);
|
bust_spinlocks(1);
|
||||||
#ifdef CONFIG_MIPS_MT_SMTC
|
#ifdef CONFIG_MIPS_MT_SMTC
|
||||||
mips_mt_regdump(dvpret);
|
mips_mt_regdump(dvpret);
|
||||||
@@ -387,7 +387,7 @@ void __noreturn die(const char *str, struct pt_regs *regs)
|
|||||||
printk("%s[#%d]:\n", str, ++die_counter);
|
printk("%s[#%d]:\n", str, ++die_counter);
|
||||||
show_registers(regs);
|
show_registers(regs);
|
||||||
add_taint(TAINT_DIE);
|
add_taint(TAINT_DIE);
|
||||||
spin_unlock_irq(&die_lock);
|
raw_spin_unlock_irq(&die_lock);
|
||||||
|
|
||||||
if (in_interrupt())
|
if (in_interrupt())
|
||||||
panic("Fatal exception in interrupt");
|
panic("Fatal exception in interrupt");
|
||||||
|
Reference in New Issue
Block a user