|
@@ -1190,9 +1190,12 @@ ENTRY(nmi)
|
|
* we don't want to enable interrupts, because then we'll end
|
|
* we don't want to enable interrupts, because then we'll end
|
|
* up in an awkward situation in which IRQs are on but NMIs
|
|
* up in an awkward situation in which IRQs are on but NMIs
|
|
* are off.
|
|
* are off.
|
|
|
|
+ *
|
|
|
|
+ * We also must not push anything to the stack before switching
|
|
|
|
+ * stacks lest we corrupt the "NMI executing" variable.
|
|
*/
|
|
*/
|
|
|
|
|
|
- SWAPGS
|
|
|
|
|
|
+ SWAPGS_UNSAFE_STACK
|
|
cld
|
|
cld
|
|
movq %rsp, %rdx
|
|
movq %rsp, %rdx
|
|
movq PER_CPU_VAR(cpu_current_top_of_stack), %rsp
|
|
movq PER_CPU_VAR(cpu_current_top_of_stack), %rsp
|