* Zachary Amsden ([EMAIL PROTECTED]) wrote: > Mathieu Desnoyers wrote: > >Yes, kprobes is case 1: atomic update. And we don't even have to bother > >about Intel's erratum. This one is ok. That's mainly the > >alternatives/paravirt code I worry about. > > > > Paravirt and alternatives should all be ok because they are done before > SMP bringup and with NMIs disabled. NMI watchdog is not setup until > smp_prepare_cpus/check_nmi_watchdog, which happens way later, not during > parse_args/setup_nmi_watchdog, which just decides which type of watchdog > to setup. >
I'm not so sure about this. You are right in that it has nothing to do with parse_args, but I just went in detail through the source, and the order seems to be: 1 - NMI is activated 2 - MCE is activated 3 - alternatives are applied In detail: start_kernel() ... include/asm-i386/smp.h:smp_prepare_boot_cpu() smp_ops.smp_prepare_boot_cpu() arch/i386/kernel/smpboot.c:native_smp_prepare_boot_cpu() arch/i386/kernel/smpboot.c:native_smp_prepare_cpus() arch/i386/kernel/smpboot.c:smp_boot_cpus() arch/i386/kernel/apic.c:setup_local_APIC() arch/i386/kernel/nmi.c:setup_apic_nmi_watchdog() arch/i386/kernel/cpu/perfctr-watchdog.c:lapic_watchdog_init() wd_ops->setup() (e.g. setup_intel_arch_watchdog) ... arch/i386/kernel/cpu/bugs.c:check_bugs() arch/i386/kernel/cpu/common.c:identify_boot_cpu() identify_cpu() arch/i386/kernel/cpu/mcheck/mce.c:mcheck_init() arch/i386/kernel/cpu/mcheck/p4.c:intel_p4_mcheck_init() ... arch/i386/kernel/alternative_instructions() ... Therefore, applying alternatives instructions seems to be done after NMI and MCE init at boot time, or am I misunderstanding something ? > I originally considered the NMI problem for paravirt-ops patching done > during module load, and found that I would need to modify > stop_machine_run to have an architecture specific callout to mask and > unmask NMIs. I didn't imagine that would be very popular, and VMI was > the only paravirt-ops that were considering module load time patching, > so I flushed it. > > You get some other nasty issues as well with run-time switching, like > missing early init calls (in particular, we would have to go to some > heroics to retake the land surrounding the APIC local timer interrupt). > > Zach -- Mathieu Desnoyers Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68 - 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/