diff options
| author | Ingo Molnar <mingo@elte.hu> | 2012-02-17 06:55:07 -0500 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2012-02-17 06:55:07 -0500 |
| commit | 09bda4432a8a4d4db2b2b94697abc8d732a9ff73 (patch) | |
| tree | 8449aac6af302967dcbabdfb315bf691491a4241 /kernel | |
| parent | d1e169da9e20efc0762da6ec160dd7740d0103f5 (diff) | |
| parent | 47b0edcb599ea6eb9ef16d3a08932a0e01485293 (diff) | |
Merge branch 'tip/perf/core' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace into perf/core
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/irq/chip.c | 2 | ||||
| -rw-r--r-- | kernel/printk.c | 5 | ||||
| -rw-r--r-- | kernel/softirq.c | 6 | ||||
| -rw-r--r-- | kernel/trace/ftrace.c | 17 | ||||
| -rw-r--r-- | kernel/trace/trace.c | 6 | ||||
| -rw-r--r-- | kernel/trace/trace_events_filter.c | 7 | ||||
| -rw-r--r-- | kernel/trace/trace_syscalls.c | 4 |
7 files changed, 31 insertions, 16 deletions
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c index f7c543a801d9..fc418249f01f 100644 --- a/kernel/irq/chip.c +++ b/kernel/irq/chip.c | |||
| @@ -16,6 +16,8 @@ | |||
| 16 | #include <linux/interrupt.h> | 16 | #include <linux/interrupt.h> |
| 17 | #include <linux/kernel_stat.h> | 17 | #include <linux/kernel_stat.h> |
| 18 | 18 | ||
| 19 | #include <trace/events/irq.h> | ||
| 20 | |||
| 19 | #include "internals.h" | 21 | #include "internals.h" |
| 20 | 22 | ||
| 21 | /** | 23 | /** |
diff --git a/kernel/printk.c b/kernel/printk.c index 13c0a1143f49..cb8a6bd697c6 100644 --- a/kernel/printk.c +++ b/kernel/printk.c | |||
| @@ -44,6 +44,9 @@ | |||
| 44 | 44 | ||
| 45 | #include <asm/uaccess.h> | 45 | #include <asm/uaccess.h> |
| 46 | 46 | ||
| 47 | #define CREATE_TRACE_POINTS | ||
| 48 | #include <trace/events/printk.h> | ||
| 49 | |||
| 47 | /* | 50 | /* |
| 48 | * Architectures can override it: | 51 | * Architectures can override it: |
| 49 | */ | 52 | */ |
| @@ -542,6 +545,8 @@ MODULE_PARM_DESC(ignore_loglevel, "ignore loglevel setting, to" | |||
| 542 | static void _call_console_drivers(unsigned start, | 545 | static void _call_console_drivers(unsigned start, |
| 543 | unsigned end, int msg_log_level) | 546 | unsigned end, int msg_log_level) |
| 544 | { | 547 | { |
| 548 | trace_console(&LOG_BUF(0), start, end, log_buf_len); | ||
| 549 | |||
| 545 | if ((msg_log_level < console_loglevel || ignore_loglevel) && | 550 | if ((msg_log_level < console_loglevel || ignore_loglevel) && |
| 546 | console_drivers && start != end) { | 551 | console_drivers && start != end) { |
| 547 | if ((start & LOG_BUF_MASK) > (end & LOG_BUF_MASK)) { | 552 | if ((start & LOG_BUF_MASK) > (end & LOG_BUF_MASK)) { |
diff --git a/kernel/softirq.c b/kernel/softirq.c index 4eb3a0fa351e..06d40993594a 100644 --- a/kernel/softirq.c +++ b/kernel/softirq.c | |||
| @@ -385,6 +385,12 @@ void raise_softirq(unsigned int nr) | |||
| 385 | local_irq_restore(flags); | 385 | local_irq_restore(flags); |
| 386 | } | 386 | } |
| 387 | 387 | ||
| 388 | void __raise_softirq_irqoff(unsigned int nr) | ||
| 389 | { | ||
| 390 | trace_softirq_raise(nr); | ||
| 391 | or_softirq_pending(1UL << nr); | ||
| 392 | } | ||
| 393 | |||
| 388 | void open_softirq(int nr, void (*action)(struct softirq_action *)) | 394 | void open_softirq(int nr, void (*action)(struct softirq_action *)) |
| 389 | { | 395 | { |
| 390 | softirq_vec[nr].action = action; | 396 | softirq_vec[nr].action = action; |
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c index 683d559a0eef..d1499e910fe8 100644 --- a/kernel/trace/ftrace.c +++ b/kernel/trace/ftrace.c | |||
| @@ -1129,7 +1129,7 @@ static struct ftrace_hash *alloc_ftrace_hash(int size_bits) | |||
| 1129 | return NULL; | 1129 | return NULL; |
| 1130 | 1130 | ||
| 1131 | size = 1 << size_bits; | 1131 | size = 1 << size_bits; |
| 1132 | hash->buckets = kzalloc(sizeof(*hash->buckets) * size, GFP_KERNEL); | 1132 | hash->buckets = kcalloc(size, sizeof(*hash->buckets), GFP_KERNEL); |
| 1133 | 1133 | ||
| 1134 | if (!hash->buckets) { | 1134 | if (!hash->buckets) { |
| 1135 | kfree(hash); | 1135 | kfree(hash); |
| @@ -3146,8 +3146,10 @@ ftrace_set_regex(struct ftrace_ops *ops, unsigned char *buf, int len, | |||
| 3146 | mutex_lock(&ftrace_regex_lock); | 3146 | mutex_lock(&ftrace_regex_lock); |
| 3147 | if (reset) | 3147 | if (reset) |
| 3148 | ftrace_filter_reset(hash); | 3148 | ftrace_filter_reset(hash); |
| 3149 | if (buf) | 3149 | if (buf && !ftrace_match_records(hash, buf, len)) { |
| 3150 | ftrace_match_records(hash, buf, len); | 3150 | ret = -EINVAL; |
| 3151 | goto out_regex_unlock; | ||
| 3152 | } | ||
| 3151 | 3153 | ||
| 3152 | mutex_lock(&ftrace_lock); | 3154 | mutex_lock(&ftrace_lock); |
| 3153 | ret = ftrace_hash_move(ops, enable, orig_hash, hash); | 3155 | ret = ftrace_hash_move(ops, enable, orig_hash, hash); |
| @@ -3157,6 +3159,7 @@ ftrace_set_regex(struct ftrace_ops *ops, unsigned char *buf, int len, | |||
| 3157 | 3159 | ||
| 3158 | mutex_unlock(&ftrace_lock); | 3160 | mutex_unlock(&ftrace_lock); |
| 3159 | 3161 | ||
| 3162 | out_regex_unlock: | ||
| 3160 | mutex_unlock(&ftrace_regex_lock); | 3163 | mutex_unlock(&ftrace_regex_lock); |
| 3161 | 3164 | ||
| 3162 | free_ftrace_hash(hash); | 3165 | free_ftrace_hash(hash); |
| @@ -3173,10 +3176,10 @@ ftrace_set_regex(struct ftrace_ops *ops, unsigned char *buf, int len, | |||
| 3173 | * Filters denote which functions should be enabled when tracing is enabled. | 3176 | * Filters denote which functions should be enabled when tracing is enabled. |
| 3174 | * If @buf is NULL and reset is set, all functions will be enabled for tracing. | 3177 | * If @buf is NULL and reset is set, all functions will be enabled for tracing. |
| 3175 | */ | 3178 | */ |
| 3176 | void ftrace_set_filter(struct ftrace_ops *ops, unsigned char *buf, | 3179 | int ftrace_set_filter(struct ftrace_ops *ops, unsigned char *buf, |
| 3177 | int len, int reset) | 3180 | int len, int reset) |
| 3178 | { | 3181 | { |
| 3179 | ftrace_set_regex(ops, buf, len, reset, 1); | 3182 | return ftrace_set_regex(ops, buf, len, reset, 1); |
| 3180 | } | 3183 | } |
| 3181 | EXPORT_SYMBOL_GPL(ftrace_set_filter); | 3184 | EXPORT_SYMBOL_GPL(ftrace_set_filter); |
| 3182 | 3185 | ||
| @@ -3191,10 +3194,10 @@ EXPORT_SYMBOL_GPL(ftrace_set_filter); | |||
| 3191 | * is enabled. If @buf is NULL and reset is set, all functions will be enabled | 3194 | * is enabled. If @buf is NULL and reset is set, all functions will be enabled |
| 3192 | * for tracing. | 3195 | * for tracing. |
| 3193 | */ | 3196 | */ |
| 3194 | void ftrace_set_notrace(struct ftrace_ops *ops, unsigned char *buf, | 3197 | int ftrace_set_notrace(struct ftrace_ops *ops, unsigned char *buf, |
| 3195 | int len, int reset) | 3198 | int len, int reset) |
| 3196 | { | 3199 | { |
| 3197 | ftrace_set_regex(ops, buf, len, reset, 0); | 3200 | return ftrace_set_regex(ops, buf, len, reset, 0); |
| 3198 | } | 3201 | } |
| 3199 | EXPORT_SYMBOL_GPL(ftrace_set_notrace); | 3202 | EXPORT_SYMBOL_GPL(ftrace_set_notrace); |
| 3200 | /** | 3203 | /** |
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index a3f1bc5d2a00..10d5503f0d04 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c | |||
| @@ -2764,12 +2764,12 @@ static const char readme_msg[] = | |||
| 2764 | "tracing mini-HOWTO:\n\n" | 2764 | "tracing mini-HOWTO:\n\n" |
| 2765 | "# mount -t debugfs nodev /sys/kernel/debug\n\n" | 2765 | "# mount -t debugfs nodev /sys/kernel/debug\n\n" |
| 2766 | "# cat /sys/kernel/debug/tracing/available_tracers\n" | 2766 | "# cat /sys/kernel/debug/tracing/available_tracers\n" |
| 2767 | "wakeup preemptirqsoff preemptoff irqsoff function sched_switch nop\n\n" | 2767 | "wakeup wakeup_rt preemptirqsoff preemptoff irqsoff function nop\n\n" |
| 2768 | "# cat /sys/kernel/debug/tracing/current_tracer\n" | 2768 | "# cat /sys/kernel/debug/tracing/current_tracer\n" |
| 2769 | "nop\n" | 2769 | "nop\n" |
| 2770 | "# echo sched_switch > /sys/kernel/debug/tracing/current_tracer\n" | 2770 | "# echo wakeup > /sys/kernel/debug/tracing/current_tracer\n" |
| 2771 | "# cat /sys/kernel/debug/tracing/current_tracer\n" | 2771 | "# cat /sys/kernel/debug/tracing/current_tracer\n" |
| 2772 | "sched_switch\n" | 2772 | "wakeup\n" |
| 2773 | "# cat /sys/kernel/debug/tracing/trace_options\n" | 2773 | "# cat /sys/kernel/debug/tracing/trace_options\n" |
| 2774 | "noprint-parent nosym-offset nosym-addr noverbose\n" | 2774 | "noprint-parent nosym-offset nosym-addr noverbose\n" |
| 2775 | "# echo print-parent > /sys/kernel/debug/tracing/trace_options\n" | 2775 | "# echo print-parent > /sys/kernel/debug/tracing/trace_options\n" |
diff --git a/kernel/trace/trace_events_filter.c b/kernel/trace/trace_events_filter.c index 24aee7127451..76afaee99dbc 100644 --- a/kernel/trace/trace_events_filter.c +++ b/kernel/trace/trace_events_filter.c | |||
| @@ -685,7 +685,7 @@ find_event_field(struct ftrace_event_call *call, char *name) | |||
| 685 | 685 | ||
| 686 | static int __alloc_pred_stack(struct pred_stack *stack, int n_preds) | 686 | static int __alloc_pred_stack(struct pred_stack *stack, int n_preds) |
| 687 | { | 687 | { |
| 688 | stack->preds = kzalloc(sizeof(*stack->preds)*(n_preds + 1), GFP_KERNEL); | 688 | stack->preds = kcalloc(n_preds + 1, sizeof(*stack->preds), GFP_KERNEL); |
| 689 | if (!stack->preds) | 689 | if (!stack->preds) |
| 690 | return -ENOMEM; | 690 | return -ENOMEM; |
| 691 | stack->index = n_preds; | 691 | stack->index = n_preds; |
| @@ -826,8 +826,7 @@ static int __alloc_preds(struct event_filter *filter, int n_preds) | |||
| 826 | if (filter->preds) | 826 | if (filter->preds) |
| 827 | __free_preds(filter); | 827 | __free_preds(filter); |
| 828 | 828 | ||
| 829 | filter->preds = | 829 | filter->preds = kcalloc(n_preds, sizeof(*filter->preds), GFP_KERNEL); |
| 830 | kzalloc(sizeof(*filter->preds) * n_preds, GFP_KERNEL); | ||
| 831 | 830 | ||
| 832 | if (!filter->preds) | 831 | if (!filter->preds) |
| 833 | return -ENOMEM; | 832 | return -ENOMEM; |
| @@ -1486,7 +1485,7 @@ static int fold_pred(struct filter_pred *preds, struct filter_pred *root) | |||
| 1486 | children = count_leafs(preds, &preds[root->left]); | 1485 | children = count_leafs(preds, &preds[root->left]); |
| 1487 | children += count_leafs(preds, &preds[root->right]); | 1486 | children += count_leafs(preds, &preds[root->right]); |
| 1488 | 1487 | ||
| 1489 | root->ops = kzalloc(sizeof(*root->ops) * children, GFP_KERNEL); | 1488 | root->ops = kcalloc(children, sizeof(*root->ops), GFP_KERNEL); |
| 1490 | if (!root->ops) | 1489 | if (!root->ops) |
| 1491 | return -ENOMEM; | 1490 | return -ENOMEM; |
| 1492 | 1491 | ||
diff --git a/kernel/trace/trace_syscalls.c b/kernel/trace/trace_syscalls.c index cb654542c1a1..43500153dd1e 100644 --- a/kernel/trace/trace_syscalls.c +++ b/kernel/trace/trace_syscalls.c | |||
| @@ -468,8 +468,8 @@ int __init init_ftrace_syscalls(void) | |||
| 468 | unsigned long addr; | 468 | unsigned long addr; |
| 469 | int i; | 469 | int i; |
| 470 | 470 | ||
| 471 | syscalls_metadata = kzalloc(sizeof(*syscalls_metadata) * | 471 | syscalls_metadata = kcalloc(NR_syscalls, sizeof(*syscalls_metadata), |
| 472 | NR_syscalls, GFP_KERNEL); | 472 | GFP_KERNEL); |
| 473 | if (!syscalls_metadata) { | 473 | if (!syscalls_metadata) { |
| 474 | WARN_ON(1); | 474 | WARN_ON(1); |
| 475 | return -ENOMEM; | 475 | return -ENOMEM; |
