diff options
Diffstat (limited to 'kernel/events/ring_buffer.c')
-rw-r--r-- | kernel/events/ring_buffer.c | 10 |
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 | ||
103 | int perf_output_begin(struct perf_output_handle *handle, | 100 | int 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) |