On Tue, Apr 07, 2020 at 10:03:16PM -0700, Ankur Arora wrote: > @@ -1807,12 +1911,20 @@ static int __maybe_unused text_poke_late(patch_worker_t worker, void *stage) > text_poke_state.state = PATCH_SYNC_DONE; /* Start state */ > text_poke_state.primary_cpu = smp_processor_id(); > > + text_poke_state.nmi_context = nmi; > + > + if (nmi) > + register_nmi_handler(NMI_LOCAL, text_poke_nmi, > + NMI_FLAG_FIRST, "text_poke_nmi"); > /* > * Run the worker on all online CPUs. Don't need to do anything > * for offline CPUs as they come back online with a clean cache. > */ > ret = stop_machine(patch_worker, &text_poke_state, cpu_online_mask); > > + if (nmi) > + unregister_nmi_handler(NMI_LOCAL, "text_poke_nmi"); > + > return ret; > } This is completely bonghits crazy.