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 <bige...@linutronix.de> >> >> 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.
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? >> Note there is no need to use local_inc for acquired variable, >> since it's a percpu variable with strict nesting scopes. >> >> Signed-off-by: Sebastian Andrzej Siewior <bige...@linutronix.de> >> Signed-off-by: Alexei Starovoitov <a...@kernel.org> >> Signed-off-by: Vlastimil Babka <vba...@suse.cz> > > Other than that, thank you two ;) Thank you too :) Do you agree with my fixups and addition here? https://lore.kernel.org/all/efc30cf9-8351-4889-8245-cc4a6893e...@suse.cz/ > Sebastian