Lines Matching refs:op
49 int do_get_pm_info(struct xen_sysctl_get_pmstat *op) in do_get_pm_info() argument
54 if ( !op || (op->cpuid >= nr_cpu_ids) || !cpu_online(op->cpuid) ) in do_get_pm_info()
56 pmpt = processor_pminfo[op->cpuid]; in do_get_pm_info()
58 switch ( op->type & PMSTAT_CATEGORY_MASK ) in do_get_pm_info()
76 switch ( op->type ) in do_get_pm_info()
80 op->u.getpx.total = pmpt->perf.state_count; in do_get_pm_info()
89 &per_cpu(cpufreq_statistic_lock, op->cpuid); in do_get_pm_info()
93 pxpt = per_cpu(cpufreq_statistic_data, op->cpuid); in do_get_pm_info()
102 cpufreq_residency_update(op->cpuid, pxpt->u.cur); in do_get_pm_info()
105 if ( copy_to_guest(op->u.getpx.trans_pt, pxpt->u.trans_pt, ct*ct) ) in do_get_pm_info()
112 if ( copy_to_guest(op->u.getpx.pt, pxpt->u.pt, ct) ) in do_get_pm_info()
119 op->u.getpx.total = pxpt->u.total; in do_get_pm_info()
120 op->u.getpx.usable = pxpt->u.usable; in do_get_pm_info()
121 op->u.getpx.last = pxpt->u.last; in do_get_pm_info()
122 op->u.getpx.cur = pxpt->u.cur; in do_get_pm_info()
131 cpufreq_statistic_reset(op->cpuid); in do_get_pm_info()
137 op->u.getcx.nr = pmstat_get_cx_nr(op->cpuid); in do_get_pm_info()
144 ret = pmstat_get_cx_stat(op->cpuid, &op->u.getcx); in do_get_pm_info()
150 ret = pmstat_reset_cx_stat(op->cpuid); in do_get_pm_info()
188 static int get_cpufreq_para(struct xen_sysctl_pm_op *op) in get_cpufreq_para() argument
200 pmpt = processor_pminfo[op->cpuid]; in get_cpufreq_para()
201 policy = per_cpu(cpufreq_cpu_policy, op->cpuid); in get_cpufreq_para()
210 if ( (op->u.get_para.cpu_num != cpumask_weight(policy->cpus)) || in get_cpufreq_para()
211 (op->u.get_para.freq_num != pmpt->perf.state_count) || in get_cpufreq_para()
212 (op->u.get_para.gov_num != gov_num) ) in get_cpufreq_para()
214 op->u.get_para.cpu_num = cpumask_weight(policy->cpus); in get_cpufreq_para()
215 op->u.get_para.freq_num = pmpt->perf.state_count; in get_cpufreq_para()
216 op->u.get_para.gov_num = gov_num; in get_cpufreq_para()
220 if ( !(affected_cpus = xzalloc_array(uint32_t, op->u.get_para.cpu_num)) ) in get_cpufreq_para()
224 ret = copy_to_guest(op->u.get_para.affected_cpus, in get_cpufreq_para()
225 affected_cpus, op->u.get_para.cpu_num); in get_cpufreq_para()
231 xzalloc_array(uint32_t, op->u.get_para.freq_num)) ) in get_cpufreq_para()
233 for ( i = 0; i < op->u.get_para.freq_num; i++ ) in get_cpufreq_para()
236 ret = copy_to_guest(op->u.get_para.scaling_available_frequencies, in get_cpufreq_para()
237 scaling_available_frequencies, op->u.get_para.freq_num); in get_cpufreq_para()
251 ret = copy_to_guest(op->u.get_para.scaling_available_governors, in get_cpufreq_para()
257 op->u.get_para.cpuinfo_cur_freq = in get_cpufreq_para()
258 cpufreq_driver->get ? cpufreq_driver->get(op->cpuid) : policy->cur; in get_cpufreq_para()
259 op->u.get_para.cpuinfo_max_freq = policy->cpuinfo.max_freq; in get_cpufreq_para()
260 op->u.get_para.cpuinfo_min_freq = policy->cpuinfo.min_freq; in get_cpufreq_para()
261 op->u.get_para.scaling_cur_freq = policy->cur; in get_cpufreq_para()
262 op->u.get_para.scaling_max_freq = policy->max; in get_cpufreq_para()
263 op->u.get_para.scaling_min_freq = policy->min; in get_cpufreq_para()
266 strlcpy(op->u.get_para.scaling_driver, in get_cpufreq_para()
269 strlcpy(op->u.get_para.scaling_driver, "Unknown", CPUFREQ_NAME_LEN); in get_cpufreq_para()
272 strlcpy(op->u.get_para.scaling_governor, in get_cpufreq_para()
275 strlcpy(op->u.get_para.scaling_governor, "Unknown", CPUFREQ_NAME_LEN); in get_cpufreq_para()
278 if ( !strnicmp(op->u.get_para.scaling_governor, in get_cpufreq_para()
281 op->u.get_para.u.userspace.scaling_setspeed = policy->cur; in get_cpufreq_para()
284 if ( !strnicmp(op->u.get_para.scaling_governor, in get_cpufreq_para()
288 &op->u.get_para.u.ondemand.sampling_rate_max, in get_cpufreq_para()
289 &op->u.get_para.u.ondemand.sampling_rate_min, in get_cpufreq_para()
290 &op->u.get_para.u.ondemand.sampling_rate, in get_cpufreq_para()
291 &op->u.get_para.u.ondemand.up_threshold); in get_cpufreq_para()
293 op->u.get_para.turbo_enabled = cpufreq_get_turbo_status(op->cpuid); in get_cpufreq_para()
298 static int set_cpufreq_gov(struct xen_sysctl_pm_op *op) in set_cpufreq_gov() argument
302 old_policy = per_cpu(cpufreq_cpu_policy, op->cpuid); in set_cpufreq_gov()
308 new_policy.governor = __find_governor(op->u.set_gov.scaling_governor); in set_cpufreq_gov()
315 static int set_cpufreq_para(struct xen_sysctl_pm_op *op) in set_cpufreq_para() argument
320 policy = per_cpu(cpufreq_cpu_policy, op->cpuid); in set_cpufreq_para()
325 switch(op->u.set_para.ctrl_type) in set_cpufreq_para()
332 new_policy.max = op->u.set_para.ctrl_value; in set_cpufreq_para()
343 new_policy.min = op->u.set_para.ctrl_value; in set_cpufreq_para()
351 unsigned int freq =op->u.set_para.ctrl_value; in set_cpufreq_para()
355 ret = write_userspace_scaling_setspeed(op->cpuid, freq); in set_cpufreq_para()
364 unsigned int sampling_rate = op->u.set_para.ctrl_value; in set_cpufreq_para()
377 unsigned int up_threshold = op->u.set_para.ctrl_value; in set_cpufreq_para()
396 int do_pm_op(struct xen_sysctl_pm_op *op) in do_pm_op() argument
401 if ( !op || op->cpuid >= nr_cpu_ids || !cpu_online(op->cpuid) ) in do_pm_op()
403 pmpt = processor_pminfo[op->cpuid]; in do_pm_op()
405 switch ( op->cmd & PM_PARA_CATEGORY_MASK ) in do_pm_op()
415 switch ( op->cmd ) in do_pm_op()
419 ret = get_cpufreq_para(op); in do_pm_op()
425 ret = set_cpufreq_gov(op); in do_pm_op()
431 ret = set_cpufreq_para(op); in do_pm_op()
437 op->u.get_avgfreq = cpufreq_driver_getavg(op->cpuid, USR_GETAVG); in do_pm_op()
446 sched_smt_power_savings = !!op->u.set_sched_opt_smt; in do_pm_op()
447 op->u.set_sched_opt_smt = saved_value; in do_pm_op()
454 set_vcpu_migration_delay(op->u.set_vcpu_migration_delay); in do_pm_op()
460 op->u.get_vcpu_migration_delay = get_vcpu_migration_delay(); in do_pm_op()
466 op->u.get_max_cstate = acpi_get_cstate_limit(); in do_pm_op()
472 acpi_set_cstate_limit(op->u.set_max_cstate); in do_pm_op()
478 ret = cpufreq_update_turbo(op->cpuid, CPUFREQ_TURBO_ENABLED); in do_pm_op()
484 ret = cpufreq_update_turbo(op->cpuid, CPUFREQ_TURBO_DISABLED); in do_pm_op()