diff options
| author | James Bottomley <James.Bottomley@HansenPartnership.com> | 2016-01-07 18:51:13 -0500 |
|---|---|---|
| committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2016-01-07 18:51:13 -0500 |
| commit | abaee091a18c19ccd86feb1c8374585d82e96777 (patch) | |
| tree | 01602bae73e1278c3d98dafe1c269049927c58ce /kernel/trace | |
| parent | a2746fb16e41b7c8f02aa4d2605ecce97abbebbd (diff) | |
| parent | 3f8d6f2a0797e8c650a47e5c1b5c2601a46f4293 (diff) | |
Merge branch 'jejb-scsi' into misc
Diffstat (limited to 'kernel/trace')
| -rw-r--r-- | kernel/trace/ring_buffer.c | 17 | ||||
| -rw-r--r-- | kernel/trace/trace_events.c | 16 |
2 files changed, 25 insertions, 8 deletions
diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c index 75f1d05ea82d..9c6045a27ba3 100644 --- a/kernel/trace/ring_buffer.c +++ b/kernel/trace/ring_buffer.c | |||
| @@ -1887,12 +1887,6 @@ rb_event_index(struct ring_buffer_event *event) | |||
| 1887 | return (addr & ~PAGE_MASK) - BUF_PAGE_HDR_SIZE; | 1887 | return (addr & ~PAGE_MASK) - BUF_PAGE_HDR_SIZE; |
| 1888 | } | 1888 | } |
| 1889 | 1889 | ||
| 1890 | static void rb_reset_reader_page(struct ring_buffer_per_cpu *cpu_buffer) | ||
| 1891 | { | ||
| 1892 | cpu_buffer->read_stamp = cpu_buffer->reader_page->page->time_stamp; | ||
| 1893 | cpu_buffer->reader_page->read = 0; | ||
| 1894 | } | ||
| 1895 | |||
| 1896 | static void rb_inc_iter(struct ring_buffer_iter *iter) | 1890 | static void rb_inc_iter(struct ring_buffer_iter *iter) |
| 1897 | { | 1891 | { |
| 1898 | struct ring_buffer_per_cpu *cpu_buffer = iter->cpu_buffer; | 1892 | struct ring_buffer_per_cpu *cpu_buffer = iter->cpu_buffer; |
| @@ -2803,8 +2797,11 @@ rb_reserve_next_event(struct ring_buffer *buffer, | |||
| 2803 | 2797 | ||
| 2804 | event = __rb_reserve_next(cpu_buffer, &info); | 2798 | event = __rb_reserve_next(cpu_buffer, &info); |
| 2805 | 2799 | ||
| 2806 | if (unlikely(PTR_ERR(event) == -EAGAIN)) | 2800 | if (unlikely(PTR_ERR(event) == -EAGAIN)) { |
| 2801 | if (info.add_timestamp) | ||
| 2802 | info.length -= RB_LEN_TIME_EXTEND; | ||
| 2807 | goto again; | 2803 | goto again; |
| 2804 | } | ||
| 2808 | 2805 | ||
| 2809 | if (!event) | 2806 | if (!event) |
| 2810 | goto out_fail; | 2807 | goto out_fail; |
| @@ -3626,7 +3623,7 @@ rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer) | |||
| 3626 | 3623 | ||
| 3627 | /* Finally update the reader page to the new head */ | 3624 | /* Finally update the reader page to the new head */ |
| 3628 | cpu_buffer->reader_page = reader; | 3625 | cpu_buffer->reader_page = reader; |
| 3629 | rb_reset_reader_page(cpu_buffer); | 3626 | cpu_buffer->reader_page->read = 0; |
| 3630 | 3627 | ||
| 3631 | if (overwrite != cpu_buffer->last_overrun) { | 3628 | if (overwrite != cpu_buffer->last_overrun) { |
| 3632 | cpu_buffer->lost_events = overwrite - cpu_buffer->last_overrun; | 3629 | cpu_buffer->lost_events = overwrite - cpu_buffer->last_overrun; |
| @@ -3636,6 +3633,10 @@ rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer) | |||
| 3636 | goto again; | 3633 | goto again; |
| 3637 | 3634 | ||
| 3638 | out: | 3635 | out: |
| 3636 | /* Update the read_stamp on the first event */ | ||
| 3637 | if (reader && reader->read == 0) | ||
| 3638 | cpu_buffer->read_stamp = reader->page->time_stamp; | ||
| 3639 | |||
| 3639 | arch_spin_unlock(&cpu_buffer->lock); | 3640 | arch_spin_unlock(&cpu_buffer->lock); |
| 3640 | local_irq_restore(flags); | 3641 | local_irq_restore(flags); |
| 3641 | 3642 | ||
diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c index 6bbc5f652355..4f6ef6912e00 100644 --- a/kernel/trace/trace_events.c +++ b/kernel/trace/trace_events.c | |||
| @@ -582,6 +582,12 @@ static void __ftrace_clear_event_pids(struct trace_array *tr) | |||
| 582 | unregister_trace_sched_wakeup(event_filter_pid_sched_wakeup_probe_pre, tr); | 582 | unregister_trace_sched_wakeup(event_filter_pid_sched_wakeup_probe_pre, tr); |
| 583 | unregister_trace_sched_wakeup(event_filter_pid_sched_wakeup_probe_post, tr); | 583 | unregister_trace_sched_wakeup(event_filter_pid_sched_wakeup_probe_post, tr); |
| 584 | 584 | ||
| 585 | unregister_trace_sched_wakeup_new(event_filter_pid_sched_wakeup_probe_pre, tr); | ||
| 586 | unregister_trace_sched_wakeup_new(event_filter_pid_sched_wakeup_probe_post, tr); | ||
| 587 | |||
| 588 | unregister_trace_sched_waking(event_filter_pid_sched_wakeup_probe_pre, tr); | ||
| 589 | unregister_trace_sched_waking(event_filter_pid_sched_wakeup_probe_post, tr); | ||
| 590 | |||
| 585 | list_for_each_entry(file, &tr->events, list) { | 591 | list_for_each_entry(file, &tr->events, list) { |
| 586 | clear_bit(EVENT_FILE_FL_PID_FILTER_BIT, &file->flags); | 592 | clear_bit(EVENT_FILE_FL_PID_FILTER_BIT, &file->flags); |
| 587 | } | 593 | } |
| @@ -1729,6 +1735,16 @@ ftrace_event_pid_write(struct file *filp, const char __user *ubuf, | |||
| 1729 | tr, INT_MAX); | 1735 | tr, INT_MAX); |
| 1730 | register_trace_prio_sched_wakeup(event_filter_pid_sched_wakeup_probe_post, | 1736 | register_trace_prio_sched_wakeup(event_filter_pid_sched_wakeup_probe_post, |
| 1731 | tr, 0); | 1737 | tr, 0); |
| 1738 | |||
| 1739 | register_trace_prio_sched_wakeup_new(event_filter_pid_sched_wakeup_probe_pre, | ||
| 1740 | tr, INT_MAX); | ||
| 1741 | register_trace_prio_sched_wakeup_new(event_filter_pid_sched_wakeup_probe_post, | ||
| 1742 | tr, 0); | ||
| 1743 | |||
| 1744 | register_trace_prio_sched_waking(event_filter_pid_sched_wakeup_probe_pre, | ||
| 1745 | tr, INT_MAX); | ||
| 1746 | register_trace_prio_sched_waking(event_filter_pid_sched_wakeup_probe_post, | ||
| 1747 | tr, 0); | ||
| 1732 | } | 1748 | } |
| 1733 | 1749 | ||
| 1734 | /* | 1750 | /* |
