John Baldwin wrote:
> > The theory is that the BIOS has the corect information, but in the
> > wrong order, and FreeBSD cares about the order, but Linux and Windows
> > do not, because they;ve performed an additional optimization that lets
> > them start the APs simultaneously, and a side effect of this is that
> > they don't care about order of start, they just care *that* they start.
> Except that in this case we have a 2-cpu system so we are only starting
> one additional processor. Hence, this entire argument is irrelevant.
I don't believe this is true.
When the FreeBSD code tries to start an AP, it sends an INIT IPI
to the processor in question, after setting some global variables
for the stack and the APIC ID index it thinks it's starting. Then
it waits for an IPI back, with a bit set, and the increment of the
global ncpu variable.
There are basically three places where it cares about the APIC ID
that it's starting.
The Windows code, for sure, and the Linux code, perhaps, don't
care that they get a response back in kind, and they don't care
that an expected specific CPU sends the response IPI.
What exact version of FreeBSD are you running, <email@example.com>?
Depending on the version, I can probably provide a patch that
does what I'm suggesting, some time this week. If it doesn't
work, it's not like you've lost anything by trying it...
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-smp" in the body of the message