Thread (9 messages) 9 messages, 3 authors, 2006-12-29

Re: 2 CPUs, but only one is used

From: Giuliano Pochini <hidden>
Date: 2006-12-24 16:26:32

On Wed, 20 Dec 2006 08:16:55 -0600
Nathan Lynch [off-list ref] wrote:
quoted
quoted
I have a dual G4 MDD mac running linux 2.6.19. When I boot with maxcpus=1 and
then I issue "echo 1 >/sys/devices/system/cpu/cpu1/online" the second CPU is
put online without errors, but it stays idle+wait=100% and of course
user+system+nice=0%. It works fine without maxcpus=1. No problems with 2.6.18.

I saw that there are some cpu hotplug related changes in 2.6.19, but I have
no access to a non-ppc dual cpu box to check if the problem also affects
other architectures right now.
I tried to reproduce the problem on an intel box, but I couldn't. /sys
contains only the cpu0 file if it boots with maxcpus=1.
Can you try to git bisect to find the change which caused the
regression?
I finally have some time to spend on this issue.

At the end of kernel/cpu.c::cpu_up() both cpus are set as present, possible
and online. The problem is that in kernel/sched.c::find_idlest_group()
p->cpus_allowed is always 1 (it should be 3). I tried to put a dump_stack()
or a printk(mask) in set_cpu_mask() but it crashes badly when mask is not 3,
ie. anything different from khelper or kthread, so I couldn't know what sets
the wrong cpumask.


--
Giuliano.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help