This patch moves the cpu notifier registration from nmi_init() to
nmi_setup(). The corresponding unregistration function is now in
nmi_shutdown(). Thus, the hotplug code is only active, if the oprofile
daemon is running.
Cc: Andi Kleen <andi@firstfloor.org>
Signed-off-by: Robert Richter <robert.richter@amd.com>
goto fail;
get_online_cpus();
+ register_cpu_notifier(&oprofile_cpu_nb);
on_each_cpu(nmi_cpu_setup, NULL, 1);
nmi_enabled = 1;
put_online_cpus();
struct op_msrs *msrs;
get_online_cpus();
+ unregister_cpu_notifier(&oprofile_cpu_nb);
on_each_cpu(nmi_cpu_shutdown, NULL, 1);
nmi_enabled = 0;
ctr_running = 0;
return -ENODEV;
}
- get_online_cpus();
- register_cpu_notifier(&oprofile_cpu_nb);
- nmi_enabled = 0;
- ctr_running = 0;
- put_online_cpus();
-
/* default values, can be overwritten by model */
ops->create_files = nmi_create_files;
ops->setup = nmi_setup;
void op_nmi_exit(void)
{
- if (using_nmi) {
+ if (using_nmi)
exit_sysfs();
- get_online_cpus();
- unregister_cpu_notifier(&oprofile_cpu_nb);
- nmi_enabled = 0;
- ctr_running = 0;
- put_online_cpus();
- }
if (model->exit)
model->exit();
}