Hi Andy, I was reading some of the comments in nmi.c and came across this:
/* * NMIs can page fault or hit breakpoints which will cause it to lose * its NMI context with the CPU when the breakpoint or page fault does an IRET. * * As a result, NMIs can nest if NMIs get unmasked due an IRET during * NMI processing. On x86_64, the asm glue protects us from nested NMIs * if the outer NMI came from kernel mode, but we can still nest if the * outer NMI came from user mode. What confuses me is "but we can still nest if the outer NMI came from user mode". How can that happen? You mean do_nmi() can be called nested even on x86_64 if the first NMI happened in user mode? -- Steve

