@@ -821,16 +821,18 @@ IRQ(248); IRQ(249); IRQ(250); IRQ(251); IRQ(252); IRQ(253); IRQ(254); IRQ(255)
821821#define IRQ_STACK 2
822822#define EXC_STACK 2
823823#define BAD_STACK 2
824+ #define NMI_STACK 2
824825#else
825826#define IRQ_STACK 1
827+ #define NMI_STACK 6 /* NMI stack */
826828#define EXC_STACK 7
827- #define BAD_STACK 7 /* Horrible things: NMIs, double faults, MCEs */
829+ #define BAD_STACK 7 /* Horrible things: double faults, MCEs */
828830#endif
829831
830832.align 16
831833idt:
832834 IDT( 0 , TRAP, EXC_STACK); IDT( 1 , TRAP, EXC_STACK)
833- IDT( 2 , TRAP, BAD_STACK ); IDT( 3 , TRAP, EXC_STACK)
835+ IDT( 2 , TRAP, NMI_STACK ); IDT( 3 , TRAP, EXC_STACK)
834836 IDT( 4 , TRAP, EXC_STACK); IDT( 5 , TRAP, EXC_STACK)
835837 IDT( 6 , TRAP, EXC_STACK); IDT( 7 , TRAP, EXC_STACK)
836838 IDT( 8 , TRAP, BAD_STACK); IDT( 9 , TRAP, EXC_STACK)
@@ -1041,26 +1043,42 @@ gdt80: /* LGDT descriptor for long mode */
10411043.align 16
10421044_exception_stack:
10431045 .fill CONFIG_X86_EXCEPTION_STACK_SIZE, 1 , 0xAA
1046+ .global _nmi_stack
1047+ .align 16
1048+ _nmi_stack:
1049+ .fill CONFIG_X86_EXCEPTION_STACK_SIZE, 1 , 0xAA
10441050
10451051#if CONFIG_MP_NUM_CPUS > 1
10461052.global _exception_stack1
10471053.align 16
10481054_exception_stack1:
10491055 .fill CONFIG_X86_EXCEPTION_STACK_SIZE, 1 , 0xAA
1056+ .global _nmi_stack1
1057+ .align 16
1058+ _nmi_stack1:
1059+ .fill CONFIG_X86_EXCEPTION_STACK_SIZE, 1 , 0xAA
10501060#endif
10511061
10521062#if CONFIG_MP_NUM_CPUS > 2
10531063.global _exception_stack2
10541064.align 16
10551065_exception_stack2:
10561066 .fill CONFIG_X86_EXCEPTION_STACK_SIZE, 1 , 0xAA
1067+ .global _nmi_stack2
1068+ .align 16
1069+ _nmi_stack2:
1070+ .fill CONFIG_X86_EXCEPTION_STACK_SIZE, 1 , 0xAA
10571071#endif
10581072
10591073#if CONFIG_MP_NUM_CPUS > 3
10601074.global _exception_stack3
10611075.align 16
10621076_exception_stack3:
10631077 .fill CONFIG_X86_EXCEPTION_STACK_SIZE, 1 , 0xAA
1078+ .global _nmi_stack3
1079+ .align 16
1080+ _nmi_stack3:
1081+ .fill CONFIG_X86_EXCEPTION_STACK_SIZE, 1 , 0xAA
10641082#endif
10651083
10661084#ifdef CONFIG_X86_KPTI
0 commit comments