[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <200711151545.19359.rusty@rustcorp.com.au>
Date: Thu, 15 Nov 2007 15:45:18 +1100
From: Rusty Russell <rusty@...tcorp.com.au>
To: Mathieu Desnoyers <mathieu.desnoyers@...ymtl.ca>
Cc: akpm@...ux-foundation.org, linux-kernel@...r.kernel.org,
Andi Kleen <ak@....de>, "H. Peter Anvin" <hpa@...or.com>,
Chuck Ebbert <cebbert@...hat.com>,
Christoph Hellwig <hch@...radead.org>,
Jeremy Fitzhardinge <jeremy@...p.org>,
Ingo Molnar <mingo@...hat.com>,
Thomas Gleixner <tglx@...utronix.de>
Subject: Re: [patch 5/8] Immediate Values - x86 Optimization
On Thursday 15 November 2007 15:06:10 Mathieu Desnoyers wrote:
> * Rusty Russell (rusty@...tcorp.com.au) wrote:
> > A stop_machine (or lightweight variant using IPI) would be sufficient and
> > vastly simpler. Trying to patch NMI handlers while they're running is
> > already crazy.
>
> I wouldn't mind if it was limited to the code within do_nmi(), but then
> we would have to accept potential GPF if
>
> A - the NMI or MCE code calls any external kernel code (printk,
> notify_die, spin_lock/unlock, die_nmi, lapic_wd_event (perfctr code,
> calls printk too for debugging)...
Sure, but as I pointed out previously, such calls are already best effort.
You can do very little safely from do_nmi(), and calling printk isn't one of
them, nor is grabbing a spinlock (well, actually you could as long as it's
*only* used by NMI handlers. See any of those?).
> Therefore, if one decides to use the immediate values to
> leave dormant spinlock instrumentation in the kernel, I wouldn't want it
> to have undesirable side-effects (GPF) when the instrumentation is
> being enabled, as rare as it could be.
It's overengineered, since it's less likely than deadlock already.
> > I'd keep this version up your sleeve for they day when it's needed.
>
> If we choose to go this way, stop_machine would have to do a sync_core()
> on every CPU before it reactivates interrupts for this to respect
> Intel's errata.
Yes, I don't think stop_machine is actually what you want anyway, since you
are happy to run in interrupt context. An IPI-based scheme is probably
better, and also has the side effect of iret doing the sync you need, IIUC.
Hope that clarifies,
Rusty.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists