By what mechanism is a BIOS or a kernel able to "see" (enumerate,identify,whatever term is right) other CPUs in an SMP system? How is the boot CPU able to initialise and then "launch" the second or third, fourth CPU?
This is not a question on how a user program has his thread scheduled on another cpu, thread affinity etc, but really down to the nitty-gritty lowest-level mechanism by which this works.
How I vaguely understand this might work is that an MMU temporarily keeps the second CPU on hold until the first one has initialised everything for itself, then for the second CPU, then receives a signal from the main CPU to start the other one. Still then it's not certain what the first thing is that the other cpu executes in an intel system; i.e. would it also start in 8086 mode first, requiring it to run the routine that enables A20 and jumps into PM?
I have coded in ASM in a previous life so I can understand well-explained theoretical answers but I have very little real-life coding experience so just being redirected to Linux kernel source (which I'm already going to try anyway) won't be an answer to my Q :-)