Re: [PATCH 0/11 v2] Use local_lock for pcp protection and reduce stat overhead

From: Peter Zijlstra
Date: Thu Apr 08 2021 - 12:48:57 EST


On Wed, Apr 07, 2021 at 09:24:12PM +0100, Mel Gorman wrote:
> Why local_lock? PREEMPT_RT considers the following sequence to be unsafe
> as documented in Documentation/locking/locktypes.rst
>
> local_irq_disable();
> raw_spin_lock(&lock);

Almost, the above is actually OK on RT. The problematic one is:

local_irq_disable();
spin_lock(&lock);

That doesn't work on RT since spin_lock() turns into a PI-mutex which
then obviously explodes if it tries to block with IRQs disabled.

And it so happens, that's exactly the one at hand.