diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Kconfig.debug | 6 | ||||
-rw-r--r-- | lib/Makefile | 9 | ||||
-rw-r--r-- | lib/percpu_counter.c | 7 | ||||
-rw-r--r-- | lib/smp_processor_id.c | 6 |
4 files changed, 23 insertions, 5 deletions
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index d2099f41aa1e..c459e8547bd8 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug | |||
@@ -419,7 +419,6 @@ config DEBUG_LOCKING_API_SELFTESTS | |||
419 | 419 | ||
420 | config STACKTRACE | 420 | config STACKTRACE |
421 | bool | 421 | bool |
422 | depends on DEBUG_KERNEL | ||
423 | depends on STACKTRACE_SUPPORT | 422 | depends on STACKTRACE_SUPPORT |
424 | 423 | ||
425 | config DEBUG_KOBJECT | 424 | config DEBUG_KOBJECT |
@@ -563,6 +562,9 @@ config BACKTRACE_SELF_TEST | |||
563 | for distributions or general kernels, but only for kernel | 562 | for distributions or general kernels, but only for kernel |
564 | developers working on architecture code. | 563 | developers working on architecture code. |
565 | 564 | ||
565 | Note that if you want to also test saved backtraces, you will | ||
566 | have to enable STACKTRACE as well. | ||
567 | |||
566 | Say N if you are unsure. | 568 | Say N if you are unsure. |
567 | 569 | ||
568 | config LKDTM | 570 | config LKDTM |
@@ -634,6 +636,8 @@ config LATENCYTOP | |||
634 | Enable this option if you want to use the LatencyTOP tool | 636 | Enable this option if you want to use the LatencyTOP tool |
635 | to find out which userspace is blocking on what kernel operations. | 637 | to find out which userspace is blocking on what kernel operations. |
636 | 638 | ||
639 | source kernel/trace/Kconfig | ||
640 | |||
637 | config PROVIDE_OHCI1394_DMA_INIT | 641 | config PROVIDE_OHCI1394_DMA_INIT |
638 | bool "Remote debugging over FireWire early on boot" | 642 | bool "Remote debugging over FireWire early on boot" |
639 | depends on PCI && X86 | 643 | depends on PCI && X86 |
diff --git a/lib/Makefile b/lib/Makefile index 74b0cfb1fcc3..4b836a53c08f 100644 --- a/lib/Makefile +++ b/lib/Makefile | |||
@@ -8,6 +8,15 @@ lib-y := ctype.o string.o vsprintf.o cmdline.o \ | |||
8 | sha1.o irq_regs.o reciprocal_div.o argv_split.o \ | 8 | sha1.o irq_regs.o reciprocal_div.o argv_split.o \ |
9 | proportions.o prio_heap.o ratelimit.o | 9 | proportions.o prio_heap.o ratelimit.o |
10 | 10 | ||
11 | ifdef CONFIG_FTRACE | ||
12 | # Do not profile string.o, since it may be used in early boot or vdso | ||
13 | CFLAGS_REMOVE_string.o = -pg | ||
14 | # Also do not profile any debug utilities | ||
15 | CFLAGS_REMOVE_spinlock_debug.o = -pg | ||
16 | CFLAGS_REMOVE_list_debug.o = -pg | ||
17 | CFLAGS_REMOVE_debugobjects.o = -pg | ||
18 | endif | ||
19 | |||
11 | lib-$(CONFIG_MMU) += ioremap.o | 20 | lib-$(CONFIG_MMU) += ioremap.o |
12 | lib-$(CONFIG_SMP) += cpumask.o | 21 | lib-$(CONFIG_SMP) += cpumask.o |
13 | 22 | ||
diff --git a/lib/percpu_counter.c b/lib/percpu_counter.c index 119174494cb5..4a8ba4bf5f6f 100644 --- a/lib/percpu_counter.c +++ b/lib/percpu_counter.c | |||
@@ -52,7 +52,7 @@ EXPORT_SYMBOL(__percpu_counter_add); | |||
52 | * Add up all the per-cpu counts, return the result. This is a more accurate | 52 | * Add up all the per-cpu counts, return the result. This is a more accurate |
53 | * but much slower version of percpu_counter_read_positive() | 53 | * but much slower version of percpu_counter_read_positive() |
54 | */ | 54 | */ |
55 | s64 __percpu_counter_sum(struct percpu_counter *fbc) | 55 | s64 __percpu_counter_sum(struct percpu_counter *fbc, int set) |
56 | { | 56 | { |
57 | s64 ret; | 57 | s64 ret; |
58 | int cpu; | 58 | int cpu; |
@@ -62,7 +62,12 @@ s64 __percpu_counter_sum(struct percpu_counter *fbc) | |||
62 | for_each_online_cpu(cpu) { | 62 | for_each_online_cpu(cpu) { |
63 | s32 *pcount = per_cpu_ptr(fbc->counters, cpu); | 63 | s32 *pcount = per_cpu_ptr(fbc->counters, cpu); |
64 | ret += *pcount; | 64 | ret += *pcount; |
65 | if (set) | ||
66 | *pcount = 0; | ||
65 | } | 67 | } |
68 | if (set) | ||
69 | fbc->count = ret; | ||
70 | |||
66 | spin_unlock(&fbc->lock); | 71 | spin_unlock(&fbc->lock); |
67 | return ret; | 72 | return ret; |
68 | } | 73 | } |
diff --git a/lib/smp_processor_id.c b/lib/smp_processor_id.c index 6c90fb90e19c..3b4dc098181e 100644 --- a/lib/smp_processor_id.c +++ b/lib/smp_processor_id.c | |||
@@ -7,7 +7,7 @@ | |||
7 | #include <linux/kallsyms.h> | 7 | #include <linux/kallsyms.h> |
8 | #include <linux/sched.h> | 8 | #include <linux/sched.h> |
9 | 9 | ||
10 | unsigned int debug_smp_processor_id(void) | 10 | notrace unsigned int debug_smp_processor_id(void) |
11 | { | 11 | { |
12 | unsigned long preempt_count = preempt_count(); | 12 | unsigned long preempt_count = preempt_count(); |
13 | int this_cpu = raw_smp_processor_id(); | 13 | int this_cpu = raw_smp_processor_id(); |
@@ -37,7 +37,7 @@ unsigned int debug_smp_processor_id(void) | |||
37 | /* | 37 | /* |
38 | * Avoid recursion: | 38 | * Avoid recursion: |
39 | */ | 39 | */ |
40 | preempt_disable(); | 40 | preempt_disable_notrace(); |
41 | 41 | ||
42 | if (!printk_ratelimit()) | 42 | if (!printk_ratelimit()) |
43 | goto out_enable; | 43 | goto out_enable; |
@@ -49,7 +49,7 @@ unsigned int debug_smp_processor_id(void) | |||
49 | dump_stack(); | 49 | dump_stack(); |
50 | 50 | ||
51 | out_enable: | 51 | out_enable: |
52 | preempt_enable_no_resched(); | 52 | preempt_enable_no_resched_notrace(); |
53 | out: | 53 | out: |
54 | return this_cpu; | 54 | return this_cpu; |
55 | } | 55 | } |