diff options
Diffstat (limited to 'kernel/trace/trace_boot.c')
| -rw-r--r-- | kernel/trace/trace_boot.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/kernel/trace/trace_boot.c b/kernel/trace/trace_boot.c index a29ef23ffb47..c21d5f3956ad 100644 --- a/kernel/trace/trace_boot.c +++ b/kernel/trace/trace_boot.c | |||
| @@ -41,14 +41,12 @@ void disable_boot_trace(void) | |||
| 41 | 41 | ||
| 42 | static int boot_trace_init(struct trace_array *tr) | 42 | static int boot_trace_init(struct trace_array *tr) |
| 43 | { | 43 | { |
| 44 | int cpu; | ||
| 45 | boot_trace = tr; | 44 | boot_trace = tr; |
| 46 | 45 | ||
| 47 | if (!tr) | 46 | if (!tr) |
| 48 | return 0; | 47 | return 0; |
| 49 | 48 | ||
| 50 | for_each_cpu(cpu, cpu_possible_mask) | 49 | tracing_reset_online_cpus(tr); |
| 51 | tracing_reset(tr, cpu); | ||
| 52 | 50 | ||
| 53 | tracing_sched_switch_assign_trace(tr); | 51 | tracing_sched_switch_assign_trace(tr); |
| 54 | return 0; | 52 | return 0; |
| @@ -131,7 +129,9 @@ struct tracer boot_tracer __read_mostly = | |||
| 131 | 129 | ||
| 132 | void trace_boot_call(struct boot_trace_call *bt, initcall_t fn) | 130 | void trace_boot_call(struct boot_trace_call *bt, initcall_t fn) |
| 133 | { | 131 | { |
| 132 | struct ftrace_event_call *call = &event_boot_call; | ||
| 134 | struct ring_buffer_event *event; | 133 | struct ring_buffer_event *event; |
| 134 | struct ring_buffer *buffer; | ||
| 135 | struct trace_boot_call *entry; | 135 | struct trace_boot_call *entry; |
| 136 | struct trace_array *tr = boot_trace; | 136 | struct trace_array *tr = boot_trace; |
| 137 | 137 | ||
| @@ -144,20 +144,24 @@ void trace_boot_call(struct boot_trace_call *bt, initcall_t fn) | |||
| 144 | sprint_symbol(bt->func, (unsigned long)fn); | 144 | sprint_symbol(bt->func, (unsigned long)fn); |
| 145 | preempt_disable(); | 145 | preempt_disable(); |
| 146 | 146 | ||
| 147 | event = trace_buffer_lock_reserve(tr, TRACE_BOOT_CALL, | 147 | buffer = tr->buffer; |
| 148 | event = trace_buffer_lock_reserve(buffer, TRACE_BOOT_CALL, | ||
| 148 | sizeof(*entry), 0, 0); | 149 | sizeof(*entry), 0, 0); |
| 149 | if (!event) | 150 | if (!event) |
| 150 | goto out; | 151 | goto out; |
| 151 | entry = ring_buffer_event_data(event); | 152 | entry = ring_buffer_event_data(event); |
| 152 | entry->boot_call = *bt; | 153 | entry->boot_call = *bt; |
| 153 | trace_buffer_unlock_commit(tr, event, 0, 0); | 154 | if (!filter_check_discard(call, entry, buffer, event)) |
| 155 | trace_buffer_unlock_commit(buffer, event, 0, 0); | ||
| 154 | out: | 156 | out: |
| 155 | preempt_enable(); | 157 | preempt_enable(); |
| 156 | } | 158 | } |
| 157 | 159 | ||
| 158 | void trace_boot_ret(struct boot_trace_ret *bt, initcall_t fn) | 160 | void trace_boot_ret(struct boot_trace_ret *bt, initcall_t fn) |
| 159 | { | 161 | { |
| 162 | struct ftrace_event_call *call = &event_boot_ret; | ||
| 160 | struct ring_buffer_event *event; | 163 | struct ring_buffer_event *event; |
| 164 | struct ring_buffer *buffer; | ||
| 161 | struct trace_boot_ret *entry; | 165 | struct trace_boot_ret *entry; |
| 162 | struct trace_array *tr = boot_trace; | 166 | struct trace_array *tr = boot_trace; |
| 163 | 167 | ||
| @@ -167,13 +171,15 @@ void trace_boot_ret(struct boot_trace_ret *bt, initcall_t fn) | |||
| 167 | sprint_symbol(bt->func, (unsigned long)fn); | 171 | sprint_symbol(bt->func, (unsigned long)fn); |
| 168 | preempt_disable(); | 172 | preempt_disable(); |
| 169 | 173 | ||
| 170 | event = trace_buffer_lock_reserve(tr, TRACE_BOOT_RET, | 174 | buffer = tr->buffer; |
| 175 | event = trace_buffer_lock_reserve(buffer, TRACE_BOOT_RET, | ||
| 171 | sizeof(*entry), 0, 0); | 176 | sizeof(*entry), 0, 0); |
| 172 | if (!event) | 177 | if (!event) |
| 173 | goto out; | 178 | goto out; |
| 174 | entry = ring_buffer_event_data(event); | 179 | entry = ring_buffer_event_data(event); |
| 175 | entry->boot_ret = *bt; | 180 | entry->boot_ret = *bt; |
| 176 | trace_buffer_unlock_commit(tr, event, 0, 0); | 181 | if (!filter_check_discard(call, entry, buffer, event)) |
| 182 | trace_buffer_unlock_commit(buffer, event, 0, 0); | ||
| 177 | out: | 183 | out: |
| 178 | preempt_enable(); | 184 | preempt_enable(); |
| 179 | } | 185 | } |
