Lines Matching refs:cpu
68 static int cpuctl_do_msr(int cpu, cpuctl_msr_args_t *data, u_long cmd,
70 static void cpuctl_do_cpuid(int cpu, cpuctl_cpuid_args_t *data,
72 static void cpuctl_do_cpuid_count(int cpu, cpuctl_cpuid_count_args_t *data,
74 static int cpuctl_do_update(int cpu, cpuctl_update_args_t *data,
76 static int update_intel(int cpu, cpuctl_update_args_t *args,
78 static int update_amd(int cpu, cpuctl_update_args_t *args, struct thread *td);
79 static int update_via(int cpu, cpuctl_update_args_t *args,
96 cpu_enabled(int cpu) in cpu_enabled() argument
99 return (pmc_cpu_is_disabled(cpu) == 0); in cpu_enabled()
120 set_cpu(int cpu, struct thread *td) in set_cpu() argument
123 KASSERT(cpu >= 0 && cpu < mp_ncpus && cpu_enabled(cpu), in set_cpu()
124 ("[cpuctl,%d]: bad cpu number %d", __LINE__, cpu)); in set_cpu()
126 sched_bind(td, cpu); in set_cpu()
128 KASSERT(td->td_oncpu == cpu, in set_cpu()
129 ("[cpuctl,%d]: cannot bind to target cpu %d", __LINE__, cpu)); in set_cpu()
151 int cpu = dev2unit(dev); in cpuctl_ioctl() local
153 if (cpu >= mp_ncpus || !cpu_enabled(cpu)) { in cpuctl_ioctl()
154 DPRINTF("[cpuctl,%d]: bad cpu number %d\n", __LINE__, cpu); in cpuctl_ioctl()
163 ret = cpuctl_do_msr(cpu, (cpuctl_msr_args_t *)data, cmd, td); in cpuctl_ioctl()
171 ret = cpuctl_do_msr(cpu, (cpuctl_msr_args_t *)data, cmd, td); in cpuctl_ioctl()
174 cpuctl_do_cpuid(cpu, (cpuctl_cpuid_args_t *)data, td); in cpuctl_ioctl()
181 ret = cpuctl_do_update(cpu, (cpuctl_update_args_t *)data, td); in cpuctl_ioctl()
184 cpuctl_do_cpuid_count(cpu, (cpuctl_cpuid_count_args_t *)data, in cpuctl_ioctl()
200 cpuctl_do_cpuid_count(int cpu, cpuctl_cpuid_count_args_t *data, in cpuctl_do_cpuid_count() argument
206 KASSERT(cpu >= 0 && cpu < mp_ncpus, in cpuctl_do_cpuid_count()
207 ("[cpuctl,%d]: bad cpu number %d", __LINE__, cpu)); in cpuctl_do_cpuid_count()
212 __LINE__, data->level, data->level_type, cpu); in cpuctl_do_cpuid_count()
215 set_cpu(cpu, td); in cpuctl_do_cpuid_count()
221 cpuctl_do_cpuid(int cpu, cpuctl_cpuid_args_t *data, struct thread *td) in cpuctl_do_cpuid() argument
228 cpuctl_do_cpuid_count(cpu, &cdata, td); in cpuctl_do_cpuid()
236 cpuctl_do_msr(int cpu, cpuctl_msr_args_t *data, u_long cmd, struct thread *td) in cpuctl_do_msr() argument
243 KASSERT(cpu >= 0 && cpu < mp_ncpus, in cpuctl_do_msr()
244 ("[cpuctl,%d]: bad cpu number %d", __LINE__, cpu)); in cpuctl_do_msr()
251 data->msr, cpu); in cpuctl_do_msr()
254 set_cpu(cpu, td); in cpuctl_do_msr()
282 cpuctl_do_update(int cpu, cpuctl_update_args_t *data, struct thread *td) in cpuctl_do_update() argument
290 KASSERT(cpu >= 0 && cpu < mp_ncpus, in cpuctl_do_update()
291 ("[cpuctl,%d]: bad cpu number %d", __LINE__, cpu)); in cpuctl_do_update()
292 DPRINTF("[cpuctl,%d]: XXX %d", __LINE__, cpu); in cpuctl_do_update()
294 cpuctl_do_cpuid(cpu, &args, td); in cpuctl_do_update()
300 ret = update_intel(cpu, data, td); in cpuctl_do_update()
302 ret = update_amd(cpu, data, td); in cpuctl_do_update()
304 ret = update_via(cpu, data, td); in cpuctl_do_update()
311 update_intel(int cpu, cpuctl_update_args_t *args, struct thread *td) in update_intel() argument
343 set_cpu(cpu, td); in update_intel()
370 update_amd(int cpu, cpuctl_update_args_t *args, struct thread *td) in update_amd() argument
403 set_cpu(cpu, td); in update_amd()
425 update_via(int cpu, cpuctl_update_args_t *args, struct thread *td) in update_via() argument
455 set_cpu(cpu, td); in update_via()
501 int cpu; in cpuctl_open() local
503 cpu = dev2unit(dev); in cpuctl_open()
504 if (cpu >= mp_ncpus || !cpu_enabled(cpu)) { in cpuctl_open()
506 cpu); in cpuctl_open()
517 int cpu; in cpuctl_modevent() local
530 for (cpu = 0; cpu < mp_ncpus; cpu++) in cpuctl_modevent()
531 if (cpu_enabled(cpu)) in cpuctl_modevent()
532 cpuctl_devs[cpu] = make_dev(&cpuctl_cdevsw, cpu, in cpuctl_modevent()
533 UID_ROOT, GID_KMEM, 0640, "cpuctl%d", cpu); in cpuctl_modevent()
536 for (cpu = 0; cpu < mp_ncpus; cpu++) { in cpuctl_modevent()
537 if (cpuctl_devs[cpu] != NULL) in cpuctl_modevent()
538 destroy_dev(cpuctl_devs[cpu]); in cpuctl_modevent()