diff --git a/[refs] b/[refs] index 0d19a8986bbe..83b26a6ff22f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 0e2e63dd608bf5844ffae7bf7d860de18a62724c +refs/heads/master: adb8e118f288dc4c569ac9a89010b81a4745fbf0 diff --git a/trunk/include/linux/perf_event.h b/trunk/include/linux/perf_event.h index 7cd7b356447d..7098ebbb3b3a 100644 --- a/trunk/include/linux/perf_event.h +++ b/trunk/include/linux/perf_event.h @@ -599,7 +599,7 @@ struct perf_mmap_data { local_t head; /* write position */ local_t nest; /* nested writers */ local_t events; /* event limit */ - local_t wakeup; /* needs a wakeup */ + local_t wakeup; /* wakeup stamp */ local_t lost; /* nr records lost */ long watermark; /* wakeup watermark */ diff --git a/trunk/kernel/perf_event.c b/trunk/kernel/perf_event.c index 7a932526946f..1531e0b409a5 100644 --- a/trunk/kernel/perf_event.c +++ b/trunk/kernel/perf_event.c @@ -3056,8 +3056,8 @@ int perf_output_begin(struct perf_output_handle *handle, handle->offset = offset; handle->head = head; - if (head - tail > data->watermark) - local_inc(&data->wakeup); + if (head - local_read(&data->wakeup) > data->watermark) + local_add(data->watermark, &data->wakeup); if (have_lost) { lost_event.header.type = PERF_RECORD_LOST;