Thread (161 messages) 161 messages, 8 authors, 2025-04-24

Re: [PATCH v4 01/39] task_work: Fix TWA_NMI_CURRENT error handling

From: Peter Zijlstra <peterz@infradead.org>
Date: 2025-01-22 12:28:34
Also in: linux-perf-users, linux-toolchains, lkml

On Tue, Jan 21, 2025 at 06:30:53PM -0800, Josh Poimboeuf wrote:
It's possible for irq_work_queue() to fail if the work has already been
claimed.  That can happen if a TWA_NMI_CURRENT task work is requested
before a previous TWA_NMI_CURRENT IRQ work on the same CPU has gotten a
chance to run.
I'm confused, if it fails then it's already pending, and we'll get the
notification already. You can still add the work.
The error has to be checked before the write to task->task_works.  Also
the try_cmpxchg() loop isn't needed in NMI context.  The TWA_NMI_CURRENT
case really is special, keep things simple by keeping its code all
together in one place.
NMIs can nest, consider #DB (which is NMI like) doing task_work_add()
and getting interrupted with NMI doing the same.


Might all this be fallout from trying to fix that schedule() bug from
the next patch, because as is, I don't see it.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help