[PATCH] cpu hoptlug: avoid usage of smp_processor_id() in preemptible code
authorHeiko Carstens <heiko.carstens@de.ibm.com>
Mon, 7 Nov 2005 08:58:38 +0000 (00:58 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Mon, 7 Nov 2005 15:53:29 +0000 (07:53 -0800)
commita4c4af7c8dc1eccdfb8c57e1684f08179b4407e6
tree210773f292da3ba85818402f1945ee7b14ba8c71
parentcc658cfe3c66a6124b5a8db90cdcdd440201b1dc
[PATCH] cpu hoptlug: avoid usage of smp_processor_id() in preemptible code

Replace smp_processor_id() with any_online_cpu(cpu_online_map) in order to
avoid lots of "BUG: using smp_processor_id() in preemptible [00000001]
code:..." messages in case taking a cpu online fails.

All the traces start at the last notifier_call_chain(...) in kernel/cpu.c.
Since we hold the cpu_control semaphore it shouldn't be any problem to access
cpu_online_map.

The reason why cpu_up failed is simply that the cpu that was supposed to be
taken online wasn't even there.  That is because on s390 we never know when a
new cpu comes and therefore cpu_possible_map consists of only ones and doesn't
reflect reality.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
kernel/sched.c
kernel/softirq.c
kernel/softlockup.c
kernel/workqueue.c