On Thursday 15 November 2007 15:06:10 Mathieu Desnoyers wrote: > * Rusty Russell ([EMAIL PROTECTED]) 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 [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

