x86: smp_boot no longer uses smp_call_*
authorBarret Rhoden <brho@cs.berkeley.edu>
Sat, 20 Jul 2013 01:05:17 +0000 (18:05 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Sat, 20 Jul 2013 01:17:42 +0000 (18:17 -0700)
commit6164a0c0fa2069371737562bad3db2e9ebd800dc
tree57fcb6d990a0efb0555ddcb6b7b459f72da0c483
parent297ae036eba01316a1c62c3e8ffb5952fcfbcc1e
x86: smp_boot no longer uses smp_call_*

Instead, we have a dedicated IRQ vector that does nothing but return.
This is enough to break the non-core0s out of their hlt.

Other than it being nice to not need the ancient smp_callsi_ (which
might go away), this is needed if you run with FAST_COREID.  Before,
smp_call_ would trigger a full irq_handler(), which increments pcpui
irq_depth, before core_id() is ready.  The other option would be to use
a core_id_early() call in irq_handler(), which I dislike.

Also, don't repurpose the POKE_HANDLER() without thinking about how it
might interact with abort_halt().
kern/arch/x86/smp_boot.c
kern/arch/x86/smp_entry32.S
kern/arch/x86/smp_entry64.S
kern/arch/x86/trapentry32.S
kern/arch/x86/trapentry64.S