lkml.org 
[lkml]   [2004]   [Jul]   [19]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
/
DateMon, 19 Jul 2004 17:31:33 +1000
FromNick Piggin <>
SubjectRe: sched domains bringup race?
Keshavamurthy Anil S wrote:
> On Thu, Jul 15, 2004 at 07:13:46PM -0700, Dave Hansen wrote:
> 
>>I keep getting oopses for the non-boot CPU in find_busiest_group(). 
>>This occurs the first time that the CPU goes idle.  Those groups are set
>>up in sched_init_smp(), which is called after smp_init():
>>
>>static int init(void * unused)
>>{
>>	...
>>        fixup_cpu_present_map();
>>        smp_init();
>>        sched_init_smp();
>>
>>But, the idle threads for the secondary CPUs are initialized in
>>smp_init().  So, what happens when a CPU tries to schedule (using sched
>>domains) before sched_init_smp() completes?  I think it goes boom! :)
>>
>>Anyway, I was thinking that we should just hold the runqueue lock on the
>>non-boot CPUs until the sched domain init code is done.  Does that sound
>>feasible?
> 
> 
> Even on my system which is Intel 865 chipset (P4 with HT enabled system) 
> I see a bug check somewhere in the schedular_tick during boot.
> However if I move the sched_init_smp() after do_basic_setup() the
> kernel boots without any problem. Any clue here?
> 
>  static int init(void * unused)
>  {
>  	...
>          fixup_cpu_present_map();
>          smp_init();
> 	 populate_rootfs();
> 	 do_basic_setup();
> 
>          sched_init_smp();

There shouldn't be any problem doing that if we have to, obviously we
need to know why. Is it possible that cpu_sibling_map, or one of the
CPU masks isn't set up correctly at the time of the call?
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 14:04    [from the cache]
©2003-2008