Re: [patch 2/2] x86 NMI-safe INT3 and Page Fault

From: Avi Kivity
Date: Sun Jul 18 2010 - 05:25:25 EST


On 07/17/2010 12:39 AM, Linus Torvalds wrote:
On Fri, Jul 16, 2010 at 12:26 PM, Avi Kivity<avi@xxxxxxxxxx> wrote:
On 07/16/2010 09:37 PM, Linus Torvalds wrote:
Non-NMI code should simply never have to even _think_ about NMI's. Why
should it? It should just do whatever comes "natural" within its own
context.
But we're not talking about non-NMI code.
Yes, we are. We're talking about breakpoints (look at the subject
line), and you are very much talking about things like that _idiotic_
vmalloc_sync_all() by module loading code etc etc.

Well, I'd put it in the nmi handler registration code, but you're right. A user placing breakpoints can't even tell whether the breakpoint will be hit by NMI code, especially data breakpoints.

Every _single_ "solution" I have seen - apart from my suggestion - has
been about making code "special" because some other code might run in
an NMI. Module init sequences having to do idiotic things just because
they have data structures that might get accessed by NMI.

And the thing is, if we just do NMI's correctly, and allow nesting,
ALL THOSE PROBLEMS GO AWAY. And there is no reason what-so-ever to do
stupid things elsewhere.

In other words, why the hell are you arguing? Help Mathieu write the
low-level NMI handler right, and remove that idiotic
"vmalloc_sync_all()" that is fundamentally broken and should not
exist. Rather than talk about adding more of that kind of crap.

Well, at least we'll get a good test case for kvm's nmi blocking emulation (it's tricky since if we fault on an iret sometimes nmis get unblocked even though the instruction did not complete).

--
error compiling committee.c: too many arguments to function

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/