summaryrefslogtreecommitdiff
path: root/tools/lib/traceevent/plugins/plugin_function.c
diff options
context:
space:
mode:
authorJens Axboe <axboe@kernel.dk>2020-08-13 18:01:38 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2020-08-19 09:27:10 +0300
commit7e430e763be2a0c7eefe2675fc574d8ed6b00874 (patch)
treecb80dc778c2ae489d3bac28563af8e07231d7596 /tools/lib/traceevent/plugins/plugin_function.c
parentdf18711f9c002335f278628206ffc65af6fdf1f6 (diff)
downloadlinux-7e430e763be2a0c7eefe2675fc574d8ed6b00874.tar.xz
task_work: only grab task signal lock when needed
commit ebf0d100df0731901c16632f78d78d35f4123bc4 upstream. If JOBCTL_TASK_WORK is already set on the targeted task, then we need not go through {lock,unlock}_task_sighand() to set it again and queue a signal wakeup. This is safe as we're checking it _after_ adding the new task_work with cmpxchg(). The ordering is as follows: task_work_add() get_signal() -------------------------------------------------------------- STORE(task->task_works, new_work); STORE(task->jobctl); mb(); mb(); LOAD(task->jobctl); LOAD(task->task_works); This speeds up TWA_SIGNAL handling quite a bit, which is important now that io_uring is relying on it for all task_work deliveries. Cc: Peter Zijlstra <peterz@infradead.org> Cc: Jann Horn <jannh@google.com> Acked-by: Oleg Nesterov <oleg@redhat.com> Signed-off-by: Jens Axboe <axboe@kernel.dk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'tools/lib/traceevent/plugins/plugin_function.c')
0 files changed, 0 insertions, 0 deletions