[haiku-development] Re: SMP: Is MAX_BOOT_CPUS 4 restriction intentional?

  • From: "François Revol" <revol@xxxxxxx>
  • To: haiku-development@xxxxxxxxxxxxx
  • Date: Mon, 28 Sep 2009 14:49:06 +0200 CEST

> Hi All,
>
> Some days ago we have a hardware update here. ;-) And now my working
> station has "Intel(R) Core(TM)i7 CPU 920 @ 2,67 GHz" CPU inside and
> looks
> like a machine with 8 CPUs. I tried to boot Haiku on this PC. In
> default
> case Haiku freezed at early stage - there was a boot logo, all boot
> icons
> were grayed and I have no possibility to open boot menu. It only
> possible
> to boot either with "SMP off" boot option or with some CPU cores
> switched
> off in BIOS. There were also some messages in the syslog about
> "maximal
> count of CPU(4) reached". Well, I quickly browse through the source
> and
> found the following define in
> headers/private/kernel/boot/platform/bios_ia32/platform_kernel_args.h
>
>   17 // must match SMP_MAX_CPUS in arch_smp.h
>   18 #define MAX_BOOT_CPUS 4

It seems to be needed to avoid some races, I also tried to bump it to 8
with QEMU and it didn't work either...
Now, if it's really a race, then it is just "more likely" with 8 than
4, so it's not a correct fix ;)

> I have increased MAX_BOOT_CPUS to 8 and completely rebuild the Haiku
> installation. This version of Haiku goes to boot until the last (the
> "Rocket") icon and freeze without go to blue desktop. After that I
> have
> activated on-screen debugging and saw that all stopped with log
> message
> "Not possible to start debugger. The message: "tid < MAX HEAPS". I
> think
> the following assert was occured but was not handled:

Likely MAX_HEAPS is 4 as well somewhere ?
src/system/libroot/posix/malloc/heap.h:
   enum { MAX_HEAPS = B_MAX_CPU_COUNT };

hmm it should be 8 then..

> And now I need some more suggestions from you how to debug this
> situation
> and let Haiku boot with 8 CPUs. ;-) Thank you!
>
should try to dprintf() tid to make sure :p


François.

Other related posts: