Re: [patch 1/2] x86_64 page fault NMI-safe

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Mathieu Desnoyers
Date: Wednesday, July 14, 2010 - 1:39 pm

* Linus Torvalds (torvalds@linux-foundation.org) wrote
[...]

Let's try to figure out how far we can go with this idea. First, to answer
Ingo's critic, let's assume we do a stack frame copy before entering the
"generic" nmi handler routine.


Maybe incrementing a per-cpu missed NMIs count could be appropriate here so we
know how many NMIs should be replayed at iret ?


I assume you mean "popf/ret" here. So assuming we use a frame copy, we should
change the nmi stack pointer in the nesting 0 nmi stack copy, so the nesting 0
NMI iret will trigger the fault.


That would mean bringing back the NMI stack pointer to the (nesting - 1) nmi
stack copy.


This would be rather:
- Copy the nesting 0 stack copy back onto the real nmi stack.
- clear the percpu nmi stack pointer

** !


Which presumably faults if we changed the return stack for an invalid one and
executes as many NMIs as there are "missed nmis" counted (missed nmis should
probably be read with an xchg() instruction).

So, one question persists, regarding the "** !" comment: what do we do if an NMI
comes in exactly at that point ? I'm afraid it will overwrite the "real" nmi
stack, and therefore drop all the "pending" nmis by setting the nmi stack return
address to a valid one.

Thanks,

Mathieu

-- 
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[patch 0/2] x86: NMI-safe trap handlers, Mathieu Desnoyers, (Wed Jul 14, 8:49 am)
[patch 1/2] x86_64 page fault NMI-safe, Mathieu Desnoyers, (Wed Jul 14, 8:49 am)
[patch 2/2] x86 NMI-safe INT3 and Page Fault, Mathieu Desnoyers, (Wed Jul 14, 8:49 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Linus Torvalds, (Wed Jul 14, 9:28 am)
Re: [patch 2/2] x86 NMI-safe INT3 and Page Fault, Maciej W. Rozycki, (Wed Jul 14, 9:42 am)
Re: [patch 0/2] x86: NMI-safe trap handlers, Andi Kleen, (Wed Jul 14, 10:06 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Mathieu Desnoyers, (Wed Jul 14, 10:06 am)
Re: [patch 0/2] x86: NMI-safe trap handlers, Mathieu Desnoyers, (Wed Jul 14, 10:08 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Linus Torvalds, (Wed Jul 14, 11:10 am)
Re: [patch 2/2] x86 NMI-safe INT3 and Page Fault, Mathieu Desnoyers, (Wed Jul 14, 11:12 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Ingo Molnar, (Wed Jul 14, 11:46 am)
Re: [patch 0/2] x86: NMI-safe trap handlers, Andi Kleen, (Wed Jul 14, 11:56 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Linus Torvalds, (Wed Jul 14, 12:14 pm)
Re: [patch 2/2] x86 NMI-safe INT3 and Page Fault, Maciej W. Rozycki, (Wed Jul 14, 12:21 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Frederic Weisbecker, (Wed Jul 14, 12:36 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Linus Torvalds, (Wed Jul 14, 12:41 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Linus Torvalds, (Wed Jul 14, 12:54 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Andi Kleen, (Wed Jul 14, 12:56 pm)
Re: [patch 2/2] x86 NMI-safe INT3 and Page Fault, Mathieu Desnoyers, (Wed Jul 14, 12:58 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Mathieu Desnoyers, (Wed Jul 14, 1:05 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Andi Kleen, (Wed Jul 14, 1:07 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, H. Peter Anvin, (Wed Jul 14, 1:08 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Mathieu Desnoyers, (Wed Jul 14, 1:17 pm)
Re: [patch 2/2] x86 NMI-safe INT3 and Page Fault, Maciej W. Rozycki, (Wed Jul 14, 1:36 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Mathieu Desnoyers, (Wed Jul 14, 1:39 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Linus Torvalds, (Wed Jul 14, 1:55 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Ingo Molnar, (Wed Jul 14, 2:18 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Linus Torvalds, (Wed Jul 14, 2:23 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Maciej W. Rozycki, (Wed Jul 14, 2:45 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Linus Torvalds, (Wed Jul 14, 2:52 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Frederic Weisbecker, (Wed Jul 14, 3:14 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Mathieu Desnoyers, (Wed Jul 14, 3:21 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Mathieu Desnoyers, (Wed Jul 14, 3:31 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Maciej W. Rozycki, (Wed Jul 14, 3:31 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Frederic Weisbecker, (Wed Jul 14, 3:31 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Linus Torvalds, (Wed Jul 14, 3:37 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Frederic Weisbecker, (Wed Jul 14, 3:48 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Jeremy Fitzhardinge, (Wed Jul 14, 3:51 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Linus Torvalds, (Wed Jul 14, 3:56 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Linus Torvalds, (Wed Jul 14, 4:02 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Andi Kleen, (Wed Jul 14, 4:09 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Mathieu Desnoyers, (Wed Jul 14, 4:11 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Linus Torvalds, (Wed Jul 14, 4:22 pm)
Re: [patch 0/2] x86: NMI-safe trap handlers, Tejun Heo, (Wed Jul 14, 4:29 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Tejun Heo, (Wed Jul 14, 4:32 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Frederic Weisbecker, (Wed Jul 14, 4:38 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Steven Rostedt, (Wed Jul 14, 4:40 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Jeremy Fitzhardinge, (Wed Jul 14, 4:54 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Linus Torvalds, (Wed Jul 14, 6:23 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Linus Torvalds, (Wed Jul 14, 6:45 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Frederic Weisbecker, (Thu Jul 15, 7:11 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Andi Kleen, (Thu Jul 15, 7:35 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Steven Rostedt, (Thu Jul 15, 7:46 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Linus Torvalds, (Thu Jul 15, 7:51 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Linus Torvalds, (Thu Jul 15, 8:38 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Mathieu Desnoyers, (Thu Jul 15, 9:26 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Mathieu Desnoyers, (Thu Jul 15, 9:44 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Linus Torvalds, (Thu Jul 15, 9:49 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Mathieu Desnoyers, (Thu Jul 15, 10:38 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Mathieu Desnoyers, (Thu Jul 15, 11:31 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Linus Torvalds, (Thu Jul 15, 11:43 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Linus Torvalds, (Thu Jul 15, 11:48 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, H. Peter Anvin, (Thu Jul 15, 1:44 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Mathieu Desnoyers, (Thu Jul 15, 3:01 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Linus Torvalds, (Thu Jul 15, 3:16 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, H. Peter Anvin, (Thu Jul 15, 3:24 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Linus Torvalds, (Thu Jul 15, 3:26 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Mathieu Desnoyers, (Thu Jul 15, 3:30 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, H. Peter Anvin, (Thu Jul 15, 3:46 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Andi Kleen, (Thu Jul 15, 3:58 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, H. Peter Anvin, (Thu Jul 15, 4:20 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Linus Torvalds, (Thu Jul 15, 4:23 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, H. Peter Anvin, (Thu Jul 15, 4:41 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Linus Torvalds, (Thu Jul 15, 4:44 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, H. Peter Anvin, (Thu Jul 15, 4:46 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Andi Kleen, (Thu Jul 15, 4:48 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Frederic Weisbecker, (Fri Jul 16, 3:47 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Frederic Weisbecker, (Fri Jul 16, 4:21 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Steven Rostedt, (Fri Jul 16, 4:43 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Frederic Weisbecker, (Fri Jul 16, 5:00 am)
Re: [patch 2/2] x86 NMI-safe INT3 and Page Fault, Avi Kivity, (Fri Jul 16, 5:28 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Steven Rostedt, (Fri Jul 16, 5:54 am)
Re: [patch 2/2] x86 NMI-safe INT3 and Page Fault, Mathieu Desnoyers, (Fri Jul 16, 7:49 am)
Re: [patch 2/2] x86 NMI-safe INT3 and Page Fault, Andi Kleen, (Fri Jul 16, 8:34 am)
Re: [patch 2/2] x86 NMI-safe INT3 and Page Fault, Mathieu Desnoyers, (Fri Jul 16, 8:40 am)
Re: [patch 2/2] x86 NMI-safe INT3 and Page Fault, Avi Kivity, (Fri Jul 16, 9:47 am)
Re: [patch 2/2] x86 NMI-safe INT3 and Page Fault, Mathieu Desnoyers, (Fri Jul 16, 9:58 am)
Re: [patch 2/2] x86 NMI-safe INT3 and Page Fault, Avi Kivity, (Fri Jul 16, 10:54 am)
Re: [patch 2/2] x86 NMI-safe INT3 and Page Fault, H. Peter Anvin, (Fri Jul 16, 11:05 am)
Re: [patch 2/2] x86 NMI-safe INT3 and Page Fault, Avi Kivity, (Fri Jul 16, 11:15 am)
Re: [patch 2/2] x86 NMI-safe INT3 and Page Fault, H. Peter Anvin, (Fri Jul 16, 11:17 am)
Re: [patch 2/2] x86 NMI-safe INT3 and Page Fault, Mathieu Desnoyers, (Fri Jul 16, 11:22 am)
Re: [patch 2/2] x86 NMI-safe INT3 and Page Fault, Linus Torvalds, (Fri Jul 16, 11:25 am)
Re: [patch 2/2] x86 NMI-safe INT3 and Page Fault, Avi Kivity, (Fri Jul 16, 11:28 am)
Re: [patch 2/2] x86 NMI-safe INT3 and Page Fault, Avi Kivity, (Fri Jul 16, 11:32 am)
Re: [patch 2/2] x86 NMI-safe INT3 and Page Fault, Linus Torvalds, (Fri Jul 16, 11:37 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Mathieu Desnoyers, (Fri Jul 16, 12:13 pm)
Re: [patch 2/2] x86 NMI-safe INT3 and Page Fault, Avi Kivity, (Fri Jul 16, 12:26 pm)
Re: [patch 2/2] x86 NMI-safe INT3 and Page Fault, Andi Kleen, (Fri Jul 16, 12:28 pm)
Re: [patch 2/2] x86 NMI-safe INT3 and Page Fault, H. Peter Anvin, (Fri Jul 16, 12:29 pm)
Re: [patch 2/2] x86 NMI-safe INT3 and Page Fault, Andi Kleen, (Fri Jul 16, 12:30 pm)
Re: [patch 2/2] x86 NMI-safe INT3 and Page Fault, Avi Kivity, (Fri Jul 16, 12:32 pm)
Re: [patch 2/2] x86 NMI-safe INT3 and Page Fault, Andi Kleen, (Fri Jul 16, 12:32 pm)
Re: [patch 2/2] x86 NMI-safe INT3 and Page Fault, Andi Kleen, (Fri Jul 16, 12:34 pm)
Re: [patch 2/2] x86 NMI-safe INT3 and Page Fault, Avi Kivity, (Fri Jul 16, 12:39 pm)
Re: [patch 2/2] x86 NMI-safe INT3 and Page Fault, Linus Torvalds, (Fri Jul 16, 2:39 pm)
Re: [patch 2/2] x86 NMI-safe INT3 and Page Fault, Andi Kleen, (Fri Jul 16, 3:07 pm)
Re: [patch 2/2] x86 NMI-safe INT3 and Page Fault, Linus Torvalds, (Fri Jul 16, 3:26 pm)
Re: [patch 2/2] x86 NMI-safe INT3 and Page Fault, Mathieu Desnoyers, (Fri Jul 16, 3:40 pm)
Re: [patch 2/2] x86 NMI-safe INT3 and Page Fault, Andi Kleen, (Fri Jul 16, 3:41 pm)
Re: [patch 2/2] x86 NMI-safe INT3 and Page Fault, Linus Torvalds, (Fri Jul 16, 6:15 pm)
Re: [patch 2/2] x86 NMI-safe INT3 and Page Fault, Avi Kivity, (Sun Jul 18, 2:23 am)
Re: [patch 2/2] x86 NMI-safe INT3 and Page Fault, Avi Kivity, (Sun Jul 18, 2:26 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Avi Kivity, (Sun Jul 18, 4:03 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Linus Torvalds, (Sun Jul 18, 10:36 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Avi Kivity, (Sun Jul 18, 11:04 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Linus Torvalds, (Sun Jul 18, 11:17 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Linus Torvalds, (Sun Jul 18, 11:22 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Steven Rostedt, (Sun Jul 18, 11:43 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Linus Torvalds, (Sun Jul 18, 12:26 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Avi Kivity, (Mon Jul 19, 12:32 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Peter Zijlstra, (Tue Aug 3, 10:18 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Mathieu Desnoyers, (Tue Aug 3, 11:25 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Linus Torvalds, (Tue Aug 3, 11:56 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Mathieu Desnoyers, (Tue Aug 3, 12:45 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Linus Torvalds, (Tue Aug 3, 1:02 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Ingo Molnar, (Tue Aug 3, 1:10 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Ingo Molnar, (Tue Aug 3, 1:21 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Mathieu Desnoyers, (Tue Aug 3, 1:54 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Mathieu Desnoyers, (Tue Aug 3, 2:16 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Peter Zijlstra, (Tue Aug 3, 11:27 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Dave Chinner, (Tue Aug 3, 11:46 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Peter Zijlstra, (Tue Aug 3, 11:46 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Ingo Molnar, (Wed Aug 4, 12:14 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Ingo Molnar, (Wed Aug 4, 12:21 am)
Re: [patch 2/2] x86 NMI-safe INT3 and Page Fault, Peter Zijlstra, (Wed Aug 4, 2:46 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Mathieu Desnoyers, (Wed Aug 4, 7:06 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Mathieu Desnoyers, (Wed Aug 4, 7:45 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Peter Zijlstra, (Wed Aug 4, 7:50 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Peter Zijlstra, (Wed Aug 4, 7:56 am)
Re: [patch 2/2] x86 NMI-safe INT3 and Page Fault, H. Peter Anvin, (Wed Aug 4, 1:23 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Mathieu Desnoyers, (Thu Aug 5, 6:42 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Mathieu Desnoyers, (Thu Aug 5, 6:49 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Masami Hiramatsu, (Thu Aug 5, 11:18 pm)
Re: [patch 1/2] x86_64 page fault NMI-safe, Peter Zijlstra, (Fri Aug 6, 2:50 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Peter Zijlstra, (Fri Aug 6, 2:51 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Peter Zijlstra, (Fri Aug 6, 3:11 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Peter Zijlstra, (Fri Aug 6, 4:14 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Mathieu Desnoyers, (Fri Aug 6, 6:37 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Mathieu Desnoyers, (Fri Aug 6, 6:46 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Mathieu Desnoyers, (Fri Aug 6, 7:13 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Mathieu Desnoyers, (Fri Aug 6, 7:15 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Masami Hiramatsu, (Sat Aug 7, 2:51 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Frederic Weisbecker, (Mon Aug 9, 9:53 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Steven Rostedt, (Wed Aug 11, 7:34 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Steven Rostedt, (Wed Aug 11, 7:44 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Mathieu Desnoyers, (Sun Aug 15, 6:35 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Avi Kivity, (Sun Aug 15, 9:33 am)
Re: [patch 1/2] x86_64 page fault NMI-safe, Mathieu Desnoyers, (Sun Aug 15, 9:44 am)