Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932108Ab0GOBvs (ORCPT ); Wed, 14 Jul 2010 21:51:48 -0400 Received: from smtp1.linux-foundation.org ([140.211.169.13]:42782 "EHLO smtp1.linux-foundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758125Ab0GOBvr (ORCPT ); Wed, 14 Jul 2010 21:51:47 -0400 MIME-Version: 1.0 In-Reply-To: References: <20100714154923.947138065@efficios.com> <20100714155804.049012415@efficios.com> <20100714170617.GB4955@Krystal> <20100714203940.GC22096@Krystal> <20100714222115.GA30122@Krystal> Date: Wed, 14 Jul 2010 18:45:28 -0700 Message-ID: Subject: Re: [patch 1/2] x86_64 page fault NMI-safe From: Linus Torvalds To: Mathieu Desnoyers Cc: LKML , Andrew Morton , Ingo Molnar , Peter Zijlstra , Steven Rostedt , Steven Rostedt , Frederic Weisbecker , Thomas Gleixner , Christoph Hellwig , Li Zefan , Lai Jiangshan , Johannes Berg , Masami Hiramatsu , Arnaldo Carvalho de Melo , Tom Zanussi , KOSAKI Motohiro , Andi Kleen , "H. Peter Anvin" , Jeremy Fitzhardinge , "Frank Ch. Eigler" , Tejun Heo Content-Type: text/plain; charset=ISO-8859-1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1355 Lines: 33 On Wed, Jul 14, 2010 at 6:23 PM, Linus Torvalds wrote: > > So this is what I think it might look like, with the %rip in place. > [ ...] > Hmm? I didn't fill in the iret fault details, because I thought that would be trivial. We get an exception, it's a slow case, how hard can it be to just call the NMI code? But thinking some more about it, it doesn't feel as trivial any more. We want to set up that same nesting code for the faked NMI call, but now I made it be two separate variables, and they need to be set in an NMI-safe way without us actually having access to the whole NMI blocking that the CPU does for a real NMI. So there's a few subtleties there too. Probably need to make the two percpu values adjacent, and use cmpxchg16b in the "emulate NMI on exception" code to set them both atomically. Or something. So I think it's doable, but it's admittedly more complicated than I thought it would be. .. and obviously there's nothing that guarantees that the code I already posted is correct either. The whole concept might be total crap. Linus -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/