From: Steven Rostedt <rostedt@goodmis.org>
To: Andy Lutomirski <luto@amacapital.net>
Cc: LKML <linux-kernel@vger.kernel.org>, Jiri Olsa <jolsa@redhat.com>
Subject: Re: Question: Outer NMI can nest if from user mode?
Date: Thu, 18 Aug 2016 11:48:45 -0400 [thread overview]
Message-ID: <20160818114845.24e0473e@gandalf.local.home> (raw)
In-Reply-To: <20160818112155.634bebcb@gandalf.local.home>
On Thu, 18 Aug 2016 11:21:55 -0400
Steven Rostedt <rostedt@goodmis.org> wrote:
> 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?
Never mind. Jiri pointed out this patch (which I forgot about :-p)
9b6e6a8334d56 x86/nmi/64: Switch stacks on userspace NMI entry
Which switches the stack to the kernel stack from the NMI stack if we
came from user mode. That explains how the asm glue wont catch it.
-- Steve
next prev parent reply other threads:[~2016-08-19 1:42 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-18 15:21 Steven Rostedt
2016-08-18 15:48 ` Steven Rostedt [this message]
2016-08-18 15:56 ` Steven Rostedt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160818114845.24e0473e@gandalf.local.home \
--to=rostedt@goodmis.org \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@amacapital.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®