Lines Matching full:cpu
16 #include <linux/cpu.h>
126 static int smp_ctl_ssctl_stop(int cpu) in smp_ctl_ssctl_stop() argument
132 cb = &per_cpu(sampler_cpu_buffer, cpu); in smp_ctl_ssctl_stop()
138 smp_call_function_single(cpu, execute_ssctl, &ep, 1); in smp_ctl_ssctl_stop()
141 printk(KERN_ERR "hwsampler: CPU %d CPUMF SSCTL failed.\n", cpu); in smp_ctl_ssctl_stop()
146 smp_call_function_single(cpu, execute_qsi, &ep, 1); in smp_ctl_ssctl_stop()
156 static int smp_ctl_ssctl_deactivate(int cpu) in smp_ctl_ssctl_deactivate() argument
162 cb = &per_cpu(sampler_cpu_buffer, cpu); in smp_ctl_ssctl_deactivate()
168 smp_call_function_single(cpu, execute_ssctl, &ep, 1); in smp_ctl_ssctl_deactivate()
171 printk(KERN_ERR "hwsampler: CPU %d CPUMF SSCTL failed.\n", cpu); in smp_ctl_ssctl_deactivate()
174 smp_call_function_single(cpu, execute_qsi, &ep, 1); in smp_ctl_ssctl_deactivate()
182 static int smp_ctl_ssctl_enable_activate(int cpu, unsigned long interval) in smp_ctl_ssctl_enable_activate() argument
188 cb = &per_cpu(sampler_cpu_buffer, cpu); in smp_ctl_ssctl_enable_activate()
198 smp_call_function_single(cpu, execute_ssctl, &ep, 1); in smp_ctl_ssctl_enable_activate()
201 printk(KERN_ERR "hwsampler: CPU %d CPUMF SSCTL failed.\n", cpu); in smp_ctl_ssctl_enable_activate()
204 smp_call_function_single(cpu, execute_qsi, &ep, 1); in smp_ctl_ssctl_enable_activate()
206 printk(KERN_ERR "hwsampler: CPU %d CPUMF QSI failed.\n", cpu); in smp_ctl_ssctl_enable_activate()
211 static int smp_ctl_qsi(int cpu) in smp_ctl_qsi() argument
216 cb = &per_cpu(sampler_cpu_buffer, cpu); in smp_ctl_qsi()
219 smp_call_function_single(cpu, execute_qsi, &ep, 1); in smp_ctl_qsi()
241 static void add_samples_to_oprofile(unsigned cpu, unsigned long *,
246 int cpu; in init_all_cpu_buffers() local
249 for_each_online_cpu(cpu) { in init_all_cpu_buffers()
250 cb = &per_cpu(sampler_cpu_buffer, cpu); in init_all_cpu_buffers()
267 int cpu; in prepare_cpu_buffers() local
272 for_each_online_cpu(cpu) { in prepare_cpu_buffers()
273 cb = &per_cpu(sampler_cpu_buffer, cpu); in prepare_cpu_buffers()
292 * @cpu: the cpu for which sampler memory is allocated
299 static int allocate_sdbt(int cpu) in allocate_sdbt() argument
308 cb = &per_cpu(sampler_cpu_buffer, cpu); in allocate_sdbt()
379 * For each online CPU all SDBT trees are deallocated.
384 int cpu; in deallocate_sdbt() local
389 for_each_online_cpu(cpu) { in deallocate_sdbt()
395 cb = &per_cpu(sampler_cpu_buffer, cpu); in deallocate_sdbt()
434 static int start_sampling(int cpu) in start_sampling() argument
439 cb = &per_cpu(sampler_cpu_buffer, cpu); in start_sampling()
440 rc = smp_ctl_ssctl_enable_activate(cpu, interval); in start_sampling()
442 printk(KERN_INFO "hwsampler: CPU %d ssctl failed.\n", cpu); in start_sampling()
448 printk(KERN_INFO "hwsampler: CPU %d ssctl not enabled.\n", cpu); in start_sampling()
453 printk(KERN_INFO "hwsampler: CPU %d ssctl not active.\n", cpu); in start_sampling()
458 "hwsampler: CPU %d, CPUMF Sampling started, interval %lu.\n", in start_sampling()
459 cpu, interval); in start_sampling()
467 static int stop_sampling(int cpu) in stop_sampling() argument
473 rc = smp_ctl_qsi(cpu); in stop_sampling()
476 cb = &per_cpu(sampler_cpu_buffer, cpu); in stop_sampling()
478 printk(KERN_INFO "hwsampler: CPU %d, already stopped.\n", cpu); in stop_sampling()
480 rc = smp_ctl_ssctl_stop(cpu); in stop_sampling()
482 printk(KERN_INFO "hwsampler: CPU %d, ssctl stop error %d.\n", in stop_sampling()
483 cpu, rc); in stop_sampling()
487 printk(KERN_INFO "hwsampler: CPU %d, CPUMF Sampling stopped.\n", cpu); in stop_sampling()
492 printk(KERN_ERR "hwsampler: CPU %d CPUMF Request alert," in stop_sampling()
493 " count=%lu.\n", cpu, v); in stop_sampling()
497 printk(KERN_ERR "hwsampler: CPU %d CPUMF Loss of sample data," in stop_sampling()
498 " count=%lu.\n", cpu, v); in stop_sampling()
502 printk(KERN_ERR "hwsampler: CPU %d CPUMF Invalid entry address," in stop_sampling()
503 " count=%lu.\n", cpu, v); in stop_sampling()
508 "hwsampler: CPU %d CPUMF Incorrect SDBT address," in stop_sampling()
509 " count=%lu.\n", cpu, v); in stop_sampling()
514 "hwsampler: CPU %d CPUMF Sample authorization change," in stop_sampling()
515 " count=%lu.\n", cpu, v); in stop_sampling()
539 int cpu; in hws_oom_callback() local
554 cpu = get_cpu(); in hws_oom_callback()
555 cb = &per_cpu(sampler_cpu_buffer, cpu); in hws_oom_callback()
565 "hwsampler: CPU %d, OOM notify during CPUMF Sampling.\n", in hws_oom_callback()
566 cpu); in hws_oom_callback()
593 * @cpu: specifies the CPU to be set inactive.
597 int hwsampler_deactivate(unsigned int cpu) in hwsampler_deactivate() argument
612 cb = &per_cpu(sampler_cpu_buffer, cpu); in hwsampler_deactivate()
614 rc = smp_ctl_qsi(cpu); in hwsampler_deactivate()
617 rc = smp_ctl_ssctl_deactivate(cpu); in hwsampler_deactivate()
620 "hwsampler: CPU %d, CPUMF Deactivation failed.\n", cpu); in hwsampler_deactivate()
626 queue_work_on(cpu, hws_wq, &cb->worker); in hwsampler_deactivate()
640 * @cpu: specifies the CPU to be set active.
644 int hwsampler_activate(unsigned int cpu) in hwsampler_activate() argument
656 cb = &per_cpu(sampler_cpu_buffer, cpu); in hwsampler_activate()
658 rc = smp_ctl_qsi(cpu); in hwsampler_activate()
662 rc = smp_ctl_ssctl_enable_activate(cpu, interval); in hwsampler_activate()
665 "CPU %d, CPUMF activate sampling failed.\n", in hwsampler_activate()
666 cpu); in hwsampler_activate()
691 unsigned int cpu; in check_qsi_on_setup() local
694 for_each_online_cpu(cpu) { in check_qsi_on_setup()
695 cb = &per_cpu(sampler_cpu_buffer, cpu); in check_qsi_on_setup()
696 rc = smp_ctl_qsi(cpu); in check_qsi_on_setup()
708 rc = smp_ctl_ssctl_stop(cpu); in check_qsi_on_setup()
713 "CPU %d, CPUMF Sampling stopped now.\n", cpu); in check_qsi_on_setup()
721 unsigned int cpu; in check_qsi_on_start() local
725 for_each_online_cpu(cpu) { in check_qsi_on_start()
726 cb = &per_cpu(sampler_cpu_buffer, cpu); in check_qsi_on_start()
727 rc = smp_ctl_qsi(cpu); in check_qsi_on_start()
742 static void worker_on_start(unsigned int cpu) in worker_on_start() argument
746 cb = &per_cpu(sampler_cpu_buffer, cpu); in worker_on_start()
750 static int worker_check_error(unsigned int cpu, int ext_params) in worker_check_error() argument
757 cb = &per_cpu(sampler_cpu_buffer, cpu); in worker_check_error()
787 static void worker_on_finish(unsigned int cpu) in worker_on_finish() argument
792 cb = &per_cpu(sampler_cpu_buffer, cpu); in worker_on_finish()
795 rc = smp_ctl_qsi(cpu); in worker_on_finish()
799 "hwsampler: CPU %d, CPUMF Stop/Deactivate sampling.\n", in worker_on_finish()
800 cpu); in worker_on_finish()
801 rc = smp_ctl_ssctl_stop(cpu); in worker_on_finish()
804 "hwsampler: CPU %d, CPUMF Deactivation failed.\n", in worker_on_finish()
805 cpu); in worker_on_finish()
808 if (i == cpu) in worker_on_finish()
820 static void worker_on_interrupt(unsigned int cpu) in worker_on_interrupt() argument
826 cb = &per_cpu(sampler_cpu_buffer, cpu); in worker_on_interrupt()
849 add_samples_to_oprofile(cpu, sdbt, dear); in worker_on_interrupt()
864 static void add_samples_to_oprofile(unsigned int cpu, unsigned long *sdbt, in add_samples_to_oprofile() argument
925 unsigned int cpu; in worker() local
930 cpu = smp_processor_id(); in worker()
934 worker_on_start(cpu); in worker()
936 if (worker_check_error(cpu, ext_params)) in worker()
940 worker_on_interrupt(cpu); in worker()
943 worker_on_finish(cpu); in worker()
948 * @sdbt: number of SDBTs per online CPU (must be > 0)
955 int cpu, rc; in hwsampler_allocate() local
974 for_each_online_cpu(cpu) { in hwsampler_allocate()
975 if (allocate_sdbt(cpu)) { in hwsampler_allocate()
1034 unsigned long hwsampler_get_sample_overflow_count(unsigned int cpu) in hwsampler_get_sample_overflow_count() argument
1038 cb = &per_cpu(sampler_cpu_buffer, cpu); in hwsampler_get_sample_overflow_count()
1046 int cpu; in hwsampler_setup() local
1074 for_each_online_cpu(cpu) { in hwsampler_setup()
1075 cb = &per_cpu(sampler_cpu_buffer, cpu); in hwsampler_setup()
1077 rc = smp_ctl_qsi(cpu); in hwsampler_setup()
1153 int rc, cpu; in hwsampler_start_all() local
1177 for_each_online_cpu(cpu) { in hwsampler_start_all()
1178 rc = start_sampling(cpu); in hwsampler_start_all()
1183 for_each_online_cpu(cpu) { in hwsampler_start_all()
1184 stop_sampling(cpu); in hwsampler_start_all()
1213 int tmp_rc, rc, cpu; in hwsampler_stop_all() local
1226 for_each_online_cpu(cpu) { in hwsampler_stop_all()
1227 cb = &per_cpu(sampler_cpu_buffer, cpu); in hwsampler_stop_all()
1229 tmp_rc = stop_sampling(cpu); in hwsampler_stop_all()