Messages in this thread | | | From | John Ogness <> | Subject | Re: [PATCH 2/4] printk: disable optimistic spin during panic | Date | Thu, 27 Jan 2022 13:49:44 +0106 |
| |
On 2022-01-27, Petr Mladek <pmladek@suse.com> wrote: > I mean that chance of dealock caused by the internal semaohore spin > lock is super small. In compare, a lot of tricky code is guarded > by console_sem. It looks like a big risk to ignore the semaphore > early in panic().
Agreed.
> A better solution would be to use raw_spin_trylock_irqsave() in > down_trylock().
down_trylock() is attempting to decrement a semaphore. It should not fail just because another CPU is also in the process of decrementing/incrementing the semaphore.
Maybe a down_trylock_cond() could be introduced where the trylock could fail if a given condition is not met. The function would need to implement its own internal trylock spin loop to check the condition. But then we could pass in a condition for it to abort. For example, when in panic and we are not the panic CPU.
John
| |