Re: Problem with WARN_ON in mutex_trylock() and rxrpc

From: Peter Zijlstra
Date: Tue Dec 10 2019 - 16:54:06 EST


On Tue, Dec 10, 2019 at 09:32:25PM +0100, Sebastian Andrzej Siewior wrote:
> On 2019-12-10 20:25:38 [+0100], Peter Zijlstra wrote:
> > AFAICT the only assumption it relies on are:
> >
> > - that the softirq will cleanly preempt a task. That is, the task
> > context must not change under the softirq execution.
> >
> > - that the softirq runs non-preemptible.
> >
> > Now, both these properties are rather fundamental to how our softirqs
> > work. And can, therefore, be relied upon, irrespective of the mutex
> > implementation.
>
> softirq is preemptible on -RT (I think you know that already but just in
> case).

Indeed, but there it also runs in task context and then it all works
naturally. The !preempt thing is required for when it runs on top of a
task; then it functions as a priority ceiling like construct.