aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/events/ring_buffer.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/events/ring_buffer.c')
-rw-r--r--kernel/events/ring_buffer.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/kernel/events/ring_buffer.c b/kernel/events/ring_buffer.c
index fc2701c99207..8b3b73630fa4 100644
--- a/kernel/events/ring_buffer.c
+++ b/kernel/events/ring_buffer.c
@@ -38,11 +38,8 @@ static void perf_output_wakeup(struct perf_output_handle *handle)
38{ 38{
39 atomic_set(&handle->rb->poll, POLL_IN); 39 atomic_set(&handle->rb->poll, POLL_IN);
40 40
41 if (handle->nmi) { 41 handle->event->pending_wakeup = 1;
42 handle->event->pending_wakeup = 1; 42 irq_work_queue(&handle->event->pending);
43 irq_work_queue(&handle->event->pending);
44 } else
45 perf_event_wakeup(handle->event);
46} 43}
47 44
48/* 45/*
@@ -102,7 +99,7 @@ out:
102 99
103int perf_output_begin(struct perf_output_handle *handle, 100int perf_output_begin(struct perf_output_handle *handle,
104 struct perf_event *event, unsigned int size, 101 struct perf_event *event, unsigned int size,
105 int nmi, int sample) 102 int sample)
106{ 103{
107 struct ring_buffer *rb; 104 struct ring_buffer *rb;
108 unsigned long tail, offset, head; 105 unsigned long tail, offset, head;
@@ -127,7 +124,6 @@ int perf_output_begin(struct perf_output_handle *handle,
127 124
128 handle->rb = rb; 125 handle->rb = rb;
129 handle->event = event; 126 handle->event = event;
130 handle->nmi = nmi;
131 handle->sample = sample; 127 handle->sample = sample;
132 128
133 if (!rb->nr_pages) 129 if (!rb->nr_pages)