On (11/01/18 09:05), Daniel Wang wrote:
Another deadlock scenario could be the following one:
printk() console_trylock() down_trylock() raw_spin_lock_irqsave(&sem->lock, flags) <NMI> panic() console_flush_on_panic() console_trylock() raw_spin_lock_irqsave(&sem->lock, flags) // deadlock
There are no patches addressing this one at the moment. And it's unclear if you are hitting this scenario.
I am not sure, but Steven's patches did make the deadlock I saw go away...
You certainly can find cases when "busy spin on console_sem owner" logic can reduce some possibilities.
But spin_lock(&lock); NMI; spin_lock(&lock); code is still in the kernel.
A little swamped by other things lately but I'll run a test with it. If it works, would you recommend taking your patch alone
Let's first figure out if it works.
-ss