Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 292709
b: refs/heads/master
c: 79fb4ad
h: refs/heads/master
i:
  292707: 3a1f08d
v: v3
  • Loading branch information
Steven Rostedt authored and Steven Rostedt committed Feb 24, 2012
1 parent 14f83c5 commit 7bb330c
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 7 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 626109130267713cac020515504ec341e47c96f9
refs/heads/master: 79fb4ad63e8266ffac1f69bbb45a6f86570493e7
14 changes: 8 additions & 6 deletions trunk/arch/x86/kernel/entry_64.S
Original file line number Diff line number Diff line change
Expand Up @@ -1624,11 +1624,12 @@ first_nmi:
* | pt_regs |
* +-------------------------+
*
* The saved RIP is used to fix up the copied RIP that a nested
* NMI may zero out. The original stack frame and the temp storage
* The saved stack frame is used to fix up the copied stack frame
* that a nested NMI may change to make the interrupted NMI iret jump
* to the repeat_nmi. The original stack frame and the temp storage
* is also used by nested NMIs and can not be trusted on exit.
*/
/* Do not pop rdx, nested NMIs will corrupt it */
/* Do not pop rdx, nested NMIs will corrupt that part of the stack */
movq (%rsp), %rdx
CFI_RESTORE rdx

Expand All @@ -1641,6 +1642,8 @@ first_nmi:
.endr
CFI_DEF_CFA_OFFSET SS+8-RIP

/* Everything up to here is safe from nested NMIs */

/*
* If there was a nested NMI, the first NMI's iret will return
* here. But NMIs are still enabled and we can take another
Expand All @@ -1667,9 +1670,8 @@ end_repeat_nmi:

/*
* Everything below this point can be preempted by a nested
* NMI if the first NMI took an exception. Repeated NMIs
* caused by an exception and nested NMI will start here, and
* can still be preempted by another NMI.
* NMI if the first NMI took an exception and reset our iret stack
* so that we repeat another NMI.
*/
pushq_cfi $-1 /* ORIG_RAX: no syscall to restart */
subq $ORIG_RAX-R15, %rsp
Expand Down

0 comments on commit 7bb330c

Please sign in to comment.