I suspect this is because we configure the APICs to run in the flat
mode, which has this rather low limit. Quoting the Intel manual:
Flat Model — This model is selected by programming DFR bits 28 through
31 to 1111. Here, a unique logical APIC ID can be established for up to
8 local APICs by setting a different bit in the logical APIC ID field of
the LDR for each local APIC. A group of local APICs can then be selected
by setting one or more bits in the MDA.
Yes, Jakub, you are right. We used to use a broadcast IPI to wake up the
CPUs previously and therefore we were not limited by limitations of the
Flat Model of APIC. But now the observation suggests that the number of
CPUs we can wake up on IA-32 and AMD64 is indeed limited to 8.
Amadeo, if you see 8 CPUs as active and the rest as "not active" when
you run the "cpus" command from the kernel console, then it is not a
problem of enumeration but it is this implicit limitation of the current
implementation.
We'll try to fix this ..
M.D.
_______________________________________________
HelenOS-devel mailing list
[email protected]
http://lists.modry.cz/cgi-bin/listinfo/helenos-devel