Peter Zijlstra
5fbd036b55
sched: Cleanup cpu_active madness
...
Stepan found:
CPU0 CPUn
_cpu_up()
__cpu_up()
boostrap()
notify_cpu_starting()
set_cpu_online()
while (!cpu_active())
cpu_relax()
<PREEMPT-out>
smp_call_function(.wait=1)
/* we find cpu_online() is true */
arch_send_call_function_ipi_mask()
/* wait-forever-more */
<PREEMPT-in>
local_irq_enable()
cpu_notify(CPU_ONLINE)
sched_cpu_active()
set_cpu_active()
Now the purpose of cpu_active is mostly with bringing down a cpu, where
we mark it !active to avoid the load-balancer from moving tasks to it
while we tear down the cpu. This is required because we only update the
sched_domain tree after we brought the cpu-down. And this is needed so
that some tasks can still run while we bring it down, we just don't want
new tasks to appear.
On cpu-up however the sched_domain tree doesn't yet include the new cpu,
so its invisible to the load-balancer, regardless of the active state.
So instead of setting the active state after we boot the new cpu (and
consequently having to wait for it before enabling interrupts) set the
cpu active before we set it online and avoid the whole mess.
Reported-by: Stepan Moskovchenko <stepanm@codeaurora.org >
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl >
Acked-by: Thomas Gleixner <tglx@linutronix.de >
Link: http://lkml.kernel.org/r/1323965362.18942.71.camel@twins
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2012-03-12 20:43:15 +01:00
Richard Kuo
74d04d6ffd
Hexagon: Add basic stacktrace functionality for Hexagon architecture.
...
Signed-off-by: Richard Kuo <rkuo@codeaurora.org >
Signed-off-by: Linas Vepstas <linas@codeaurora.org >
Acked-by: Arnd Bergmann <arnd@arndb.de >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2011-11-01 07:34:21 -07:00
Richard Kuo
e95bf452a9
Hexagon: Add configuration and makefiles for the Hexagon architecture.
...
Signed-off-by: Linas Vepstas <linas@codeaurora.org >
Signed-off-by: Richard Kuo <rkuo@codeaurora.org >
Acked-by: Arnd Bergmann <arnd@arndb.de >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2011-11-01 07:34:21 -07:00
Linas Vepstas
0d71e8791f
Hexagon: kgdb support files
...
Signed-off-by: Linas Vepstas <linas@codeaurora.org >
Acked-by: Arnd Bergmann <arnd@arndb.de >
Signed-off-by: Richard Kuo <rkuo@codeaurora.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2011-11-01 07:34:21 -07:00
Richard Kuo
65c3d7c525
Hexagon: Provide DMA implementation
...
Signed-off-by: Richard Kuo <rkuo@codeaurora.org >
Signed-off-by: Linas Vepstas <linas@codeaurora.org >
Acked-by: Arnd Bergmann <arnd@arndb.de >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2011-11-01 07:34:20 -07:00
Richard Kuo
43afdf5083
Hexagon: Add SMP support
...
Signed-off-by: Richard Kuo <rkuo@codeaurora.org >
Signed-off-by: Linas Vepstas <linas@codeaurora.org >
Acked-by: Arnd Bergmann <arnd@arndb.de >
Reviewed-by: Thomas Gleixner <tglx@linutronix.de >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2011-11-01 07:34:20 -07:00
Richard Kuo
cf9750bae2
Hexagon: Provide basic debugging and system trap support.
...
Signed-off-by: Richard Kuo <rkuo@codeaurora.org >
Signed-off-by: Linas Vepstas <linas@codeaurora.org >
Acked-by: Arnd Bergmann <arnd@arndb.de >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2011-11-01 07:34:19 -07:00
Richard Kuo
39e89c9fc5
Hexagon: Add ptrace support
...
Signed-off-by: Richard Kuo <rkuo@codeaurora.org >
Signed-off-by: Linas Vepstas <linas@codeaurora.org >
Acked-by: Arnd Bergmann <arnd@arndb.de >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2011-11-01 07:34:19 -07:00
Richard Kuo
71e4a47f32
Hexagon: Add time and timer functions
...
Signed-off-by: Richard Kuo <rkuo@codeaurora.org >
Acked-by: Arnd Bergmann <arnd@arndb.de >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2011-11-01 07:34:19 -07:00
Richard Kuo
2ac211bc42
Hexagon: Add interrupts
...
Signed-off-by: Richard Kuo <rkuo@codeaurora.org >
Signed-off-by: Linas Vepstas <linas@codeaurora.org >
Reviewed-by: Thomas Gleixner <tglx@linutronix.de >
Acked-by: Arnd Bergmann <arnd@arndb.de >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2011-11-01 07:34:19 -07:00
Richard Kuo
e03167b26b
Hexagon: Add startup code
...
Signed-off-by: Richard Kuo <rkuo@codeaurora.org >
Acked-by: Arnd Bergmann <arnd@arndb.de >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2011-11-01 07:34:19 -07:00
Richard Kuo
4b30f9652e
Hexagon: Add init_task and process functions
...
Signed-off-by: Richard Kuo <rkuo@codeaurora.org >
Acked-by: Arnd Bergmann <arnd@arndb.de >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2011-11-01 07:34:19 -07:00
Richard Kuo
cd5b61d6f4
Hexagon: Add signal functions
...
Signed-off-by: Richard Kuo <rkuo@codeaurora.org >
Signed-off-by: Linas Vepstas <linas@codeaurora.org >
Acked-by: Arnd Bergmann <arnd@arndb.de >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2011-11-01 07:34:19 -07:00
Linas Vepstas
98fb103694
Hexagon: Support dynamic module loading.
...
Modules should be compiled as ordinary .o's; shared objects are not
supported.
Signed-off-by: Linas Vepstas <linas@codeaurora.org >
Acked-by: Arnd Bergmann <arnd@arndb.de >
Signed-off-by: Richard Kuo <rkuo@codeaurora.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2011-11-01 07:34:19 -07:00
Linas Vepstas
b39e293e1d
Hexagon: Export ksyms defined in assembly files.
...
Signed-off-by: Linas Vepstas <linas@codeaurora.org >
Acked-by: Arnd Bergmann <arnd@arndb.de >
Signed-off-by: Richard Kuo <rkuo@codeaurora.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2011-11-01 07:34:19 -07:00
Richard Kuo
e49ee2906c
Hexagon: Add hypervisor interface
...
Signed-off-by: Richard Kuo <rkuo@codeaurora.org >
Acked-by: Arnd Bergmann <arnd@arndb.de >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2011-11-01 07:34:19 -07:00
Richard Kuo
b9398a8459
Hexagon: Add syscalls
...
Signed-off-by: Richard Kuo <rkuo@codeaurora.org >
Signed-off-by: Linas Vepstas <linas@codeaurora.org >
Acked-by: Arnd Bergmann <arnd@arndb.de >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2011-11-01 07:34:18 -07:00