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

Avi Kivity
2010-07-18T09:25:22Z

On 07/17/2010 12:39 AM, Linus Torvalds wrote:
> On Fri, Jul 16, 2010 at 12:26 PM, Avi Kivity<avi@redhat.com> 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