static void nmi_cpu_up(void *dummy) { if (nmi_enabled) nmi_cpu_setup(dummy); if (ctr_running) nmi_cpu_start(dummy); }
static int nmi_cpu_online(unsigned int cpu) { local_irq_disable(); if (nmi_enabled) nmi_cpu_setup(); if (ctr_running) nmi_cpu_start(NULL); local_irq_enable(); return 0; }
static void nmi_cpu_switch(void *dummy) { int cpu = smp_processor_id(); int si = per_cpu(switch_index, cpu); struct op_msrs *msrs = &per_cpu(cpu_msrs, cpu); nmi_cpu_stop(NULL); nmi_cpu_save_mpx_registers(msrs); /* move to next set */ si += model->num_counters; if ((si >= model->num_virt_counters) || (counter_config[si].count == 0)) per_cpu(switch_index, cpu) = 0; else per_cpu(switch_index, cpu) = si; model->switch_ctrl(model, msrs); nmi_cpu_restore_mpx_registers(msrs); nmi_cpu_start(NULL); }
static int nmi_resume(struct sys_device *dev) { if (nmi_enabled == 1) nmi_cpu_start(NULL); return 0; }
static void nmi_resume(void) { if (nmi_enabled == 1) nmi_cpu_start(NULL); }