x64: Fix rare SMP deadlock when acquiring stack
The SMP bringup code uses a linked list of stacks. The APs are all brought up concurrently and so to acquire a stack, they compare and swap on smp_stack_free. The current code works as long as the compare and swap succeeds, if it fails, then smp_stack_free MUST be read again otherwise the AP will be deadlocked. This patch fixes the current code by enforcing a re-read on a cmpxchg failure. Reviewed-by:Glauber Costa <glommer@cloudius-systems.com> Signed-off-by:
Dan Schatzberg <schatzberg.dan@gmail.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
Please register or sign in to comment