summaryrefslogtreecommitdiff
path: root/kernel/events
diff options
context:
space:
mode:
authorKyle Huey <me@kylehuey.com>2024-04-13 17:16:18 +0300
committerIngo Molnar <mingo@kernel.org>2024-04-14 23:26:32 +0300
commitfd20bb51ed3913e0d25085eb79e8c0babfb4ee28 (patch)
treedc04a0e50f99f43e9b9dd4f194cdd26109b9b815 /kernel/events
parent4a013980666857c1eb2df6a2137817caa21d38a6 (diff)
downloadlinux-fd20bb51ed3913e0d25085eb79e8c0babfb4ee28.tar.xz
perf/ring_buffer: Trigger IO signals for watermark_wakeup
perf_output_wakeup() already marks the perf event fd available for polling. Trigger IO signals with FASYNC too. Signed-off-by: Kyle Huey <khuey@kylehuey.com> Signed-off-by: Ingo Molnar <mingo@kernel.org> Link: https://lore.kernel.org/r/20240413141618.4160-3-khuey@kylehuey.com
Diffstat (limited to 'kernel/events')
-rw-r--r--kernel/events/ring_buffer.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/kernel/events/ring_buffer.c b/kernel/events/ring_buffer.c
index 60ed43d1c29e..4013408ce012 100644
--- a/kernel/events/ring_buffer.c
+++ b/kernel/events/ring_buffer.c
@@ -22,6 +22,10 @@ static void perf_output_wakeup(struct perf_output_handle *handle)
atomic_set(&handle->rb->poll, EPOLLIN);
handle->event->pending_wakeup = 1;
+
+ if (*perf_event_fasync(handle->event) && !handle->event->pending_kill)
+ handle->event->pending_kill = POLL_IN;
+
irq_work_queue(&handle->event->pending_irq);
}