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

Reply via email to