On Mon, Feb 17, 2025 at 6:35 AM Vlastimil Babka <vbabka@xxxxxxx> wrote: > > On 2/17/25 15:19, Sebastian Andrzej Siewior wrote: > > On 2025-02-14 17:27:39 [+0100], Vlastimil Babka wrote: > >> From: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> > >> > >> In !PREEMPT_RT local_lock_irqsave() disables interrupts to protect > >> critical section, but it doesn't prevent NMI, so the fully reentrant > >> code cannot use local_lock_irqsave() for exclusive access. > >> > >> Introduce localtry_lock_t and localtry_lock_irqsave() that > >> disables interrupts and sets acquired=1, so localtry_lock_irqsave() > >> from NMI attempting to acquire the same lock will return false. > >> > >> In PREEMPT_RT local_lock_irqsave() maps to preemptible spin_lock(). > >> Map localtry_lock_irqsave() to preemptible spin_trylock(). > >> When in hard IRQ or NMI return false right away, since > >> spin_trylock() is not safe due to PI issues. > > > > spin_trylock() is not safe due to explicit locking in the underneath > > rt_spin_trylock() implementation. Removing this explicit locking and > > attempting only "trylock" is undesired due to PI implications. Makes sense. > Just to be sure, you're suggesting how to reword that sentence in the > changelog to make it more precise right? > Alexei will you incorporate that in your version? Sure. Let's squash patches 3 and 4 and add above commit log clarification. Whoever respins first can do it.