Patches contributed by Eötvös Lorand University
commit 66a05d6b47a299b6bdeb645bc2d536109cd800b4
Merge: c36910c147fd 3d337c653c94
Author: Ingo Molnar <mingo@elte.hu>
Date: Wed Dec 3 18:52:46 2008 +0100
Merge branch 'oprofile-for-tip' of git://git.kernel.org/pub/scm/linux/kernel/git/rric/oprofile into x86/urgent
commit c36910c147fd7b129a8f1269c76b9767c99de5cd
Merge: 70d7d3575782 09ee17eb8ea8
Author: Ingo Molnar <mingo@elte.hu>
Date: Wed Dec 3 12:54:45 2008 +0100
Merge branch 'iommu-fixes-2.6.28' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu into x86/urgent
commit 764f3b95131a7ce5c992e3d00caf590fcada2f7b
Author: Ingo Molnar <mingo@elte.hu>
Date: Wed Dec 3 10:33:58 2008 +0100
tracing/function-graph-tracer: enabled by default
CONFIG_FUNCTION_GRAPH_TRACER depends on FUNCTION_TRACER already,
(turning it non-default) so it so making it default-n is pointless.
So enable it by default - it's a nice extension of the function tracer.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
diff --git a/kernel/trace/Kconfig b/kernel/trace/Kconfig
index 8b6b673b4d6c..bde6f03512d5 100644
--- a/kernel/trace/Kconfig
+++ b/kernel/trace/Kconfig
@@ -67,6 +67,7 @@ config FUNCTION_GRAPH_TRACER
bool "Kernel Function Graph Tracer"
depends on HAVE_FUNCTION_GRAPH_TRACER
depends on FUNCTION_TRACER
+ default y
help
Enable the kernel to trace a function at both its return
and its entry.
commit dfdc5437bd62dd6a26961e27f26b671374749875
Merge: f0461d0146ee 061e41fdb504 878719e831d9
Author: Ingo Molnar <mingo@elte.hu>
Date: Wed Dec 3 08:54:47 2008 +0100
Merge commit 'v2.6.28-rc7'; branch 'x86/dumpstack' into tracing/ftrace
Merge x86/dumpstack into tracing/ftrace because upcoming ftrace changes
depend on cleanups already in x86/dumpstack.
Also merge to latest upstream -rc.
diff --cc arch/x86/kernel/Makefile
index d274425fb076,b62a7667828e,db3216a9d2b9..a3049da61985
--- a/arch/x86/kernel/Makefile
+++ b/arch/x86/kernel/Makefile
@@@@ -11,15 -11,9 -11,8 +11,15 @@@@ ifdef CONFIG_FUNCTION_TRACE
CFLAGS_REMOVE_tsc.o = -pg
CFLAGS_REMOVE_rtc.o = -pg
CFLAGS_REMOVE_paravirt-spinlocks.o = -pg
+CFLAGS_REMOVE_ftrace.o = -pg
+endif
+
++ifdef CONFIG_FUNCTION_GRAPH_TRACER
++# Don't trace __switch_to() but let it for function tracer
++CFLAGS_REMOVE_process_32.o = -pg
++CFLAGS_REMOVE_process_64.o = -pg
+ endif
+
#
# vsyscalls (which work on the user stack) should have
# no stack-protector checks:
diff --cc include/linux/sched.h
index 7ad48f2a2758,55e30d114477,5c38db536e07..2d0a93c31228
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@@@ -1356,26 -1347,15 -1345,7 +1360,26 @@@@ struct task_struct
#ifdef CONFIG_LATENCYTOP
int latency_record_count;
struct latency_record latency_record[LT_SAVECOUNT];
+#endif
+ /*
+ * time slack values; these are used to round up poll() and
+ * select() etc timeout values. These are in nanoseconds.
+ */
+ unsigned long timer_slack_ns;
+ unsigned long default_timer_slack_ns;
+
+ struct list_head *scm_work_list;
++#ifdef CONFIG_FUNCTION_GRAPH_TRACER
++ /* Index of current stored adress in ret_stack */
++ int curr_ret_stack;
++ /* Stack of return addresses for return function tracing */
++ struct ftrace_ret_stack *ret_stack;
++ /*
++ * Number of functions that haven't been traced
++ * because of depth overrun.
++ */
++ atomic_t trace_overrun;
+ #endif
};
/*
diff --cc kernel/profile.c
index 7f93a5042d3b,dc41827fbfee,a9e422df6bf6..60adefb59b5e
--- a/kernel/profile.c
+++ b/kernel/profile.c
@@@@ -544,7 -544,7 -544,7 +544,7 @@@@ static const struct file_operations pro
};
#ifdef CONFIG_SMP
- static inline void profile_nop(void *unused)
-static void __init profile_nop(void *unused)
++static void profile_nop(void *unused)
{
}
diff --cc kernel/sched.c
index 52490bf6b884,b7480fb5c3dc,d906f72b42d2..7729c4bbc8ba
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@@@ -1459,11 -1453,12 -1439,9 +1459,12 @@@@ static int task_hot(struct task_struct
static unsigned long cpu_avg_load_per_task(int cpu)
{
struct rq *rq = cpu_rq(cpu);
+ + unsigned long nr_running = ACCESS_ONCE(rq->nr_running);
- - if (rq->nr_running)
- - rq->avg_load_per_task = rq->load.weight / rq->nr_running;
+ + if (nr_running)
+ + rq->avg_load_per_task = rq->load.weight / nr_running;
+ else
+ rq->avg_load_per_task = 0;
return rq->avg_load_per_task;
}
commit f0461d0146ee30927bc7efa2ae24ea8c6693b725
Merge: 66eafebc1086 48d68b20d008
Author: Ingo Molnar <mingo@elte.hu>
Date: Wed Dec 3 08:49:21 2008 +0100
Merge branches 'tracing/ftrace' and 'tracing/function-graph-tracer' into tracing/core
commit 6083aa485c86933ee444dc2242270d37ea4664cb
Merge: dcb7731a185e 93093d099e5d
Author: Ingo Molnar <mingo@elte.hu>
Date: Wed Dec 3 08:25:56 2008 +0100
Merge branch 'x86/io' into x86/iommu
Merge x86/io into x86/iommu due to a small patch conflict in io.h.
commit a64d31baed104be25305e9c71585d3ea4ee9a418
Merge: 1c39194878c0 061e41fdb504
Author: Ingo Molnar <mingo@elte.hu>
Date: Tue Dec 2 20:09:50 2008 +0100
Merge branch 'linus' into cpus4096
Conflicts:
kernel/trace/ring_buffer.c
commit 222658e08f72cd539d01f3aabdc258c596f487e2
Merge: 74bf3cabc306 65c6dc6adbe7 c072c24975ec d51090b34602 a838c2ec6ea1 f1eecf0e4f07 604094f46151 f08340c5d68a
Author: Ingo Molnar <mingo@elte.hu>
Date: Tue Dec 2 09:20:44 2008 +0100
Merge branches 'tracing/branch-tracer', 'tracing/ftrace', 'tracing/function-graph-tracer', 'tracing/markers', 'tracing/powerpc', 'tracing/stack-tracer' and 'tracing/tracepoints' into tracing/core
commit 74bf3cabc306f31ddd02f2c1b0540a6cfcacc593
Merge: c7cc77307669 4f5a7f40ddba
Author: Ingo Molnar <mingo@elte.hu>
Date: Tue Dec 2 09:20:29 2008 +0100
Merge branch 'tracing/urgent' into tracing/core
Conflicts:
kernel/trace/ring_buffer.c
commit f6d2e6f57bba66272b28dd20c949b14ce39cb804
Merge: 8caac56305ce 7b1dedca42ac
Author: Ingo Molnar <mingo@elte.hu>
Date: Mon Dec 1 20:36:13 2008 +0100
Merge branch 'x86/urgent' into x86/iommu