Lines Matching full:pr
51 static int acpi_processor_get_platform_limit(struct acpi_processor *pr) in acpi_processor_get_platform_limit() argument
59 if (!pr) in acpi_processor_get_platform_limit()
66 status = acpi_evaluate_integer(pr->handle, "_PPC", NULL, &ppc); in acpi_processor_get_platform_limit()
71 acpi_evaluation_failure_warn(pr->handle, "_PPC", status); in acpi_processor_get_platform_limit()
78 if (pr->performance_platform_limit == index || in acpi_processor_get_platform_limit()
79 ppc >= pr->performance->state_count) in acpi_processor_get_platform_limit()
82 pr_debug("CPU %d: _PPC is %d - frequency %s limited\n", pr->id, in acpi_processor_get_platform_limit()
85 pr->performance_platform_limit = index; in acpi_processor_get_platform_limit()
87 if (unlikely(!freq_qos_request_active(&pr->perflib_req))) in acpi_processor_get_platform_limit()
97 qos_value = pr->performance->states[index].core_frequency * 1000; in acpi_processor_get_platform_limit()
99 ret = freq_qos_update_request(&pr->perflib_req, qos_value); in acpi_processor_get_platform_limit()
102 pr->id, ret); in acpi_processor_get_platform_limit()
123 void acpi_processor_ppc_has_changed(struct acpi_processor *pr, int event_flag) in acpi_processor_ppc_has_changed() argument
127 if (ignore_ppc || !pr->performance) { in acpi_processor_ppc_has_changed()
133 acpi_processor_ppc_ost(pr->handle, 1); in acpi_processor_ppc_has_changed()
137 ret = acpi_processor_get_platform_limit(pr); in acpi_processor_ppc_has_changed()
144 acpi_processor_ppc_ost(pr->handle, 1); in acpi_processor_ppc_has_changed()
146 acpi_processor_ppc_ost(pr->handle, 0); in acpi_processor_ppc_has_changed()
149 cpufreq_update_limits(pr->id); in acpi_processor_ppc_has_changed()
154 struct acpi_processor *pr; in acpi_processor_get_bios_limit() local
156 pr = per_cpu(processors, cpu); in acpi_processor_get_bios_limit()
157 if (!pr || !pr->performance || !pr->performance->state_count) in acpi_processor_get_bios_limit()
160 *limit = pr->performance->states[pr->performance_platform_limit]. in acpi_processor_get_bios_limit()
180 struct acpi_processor *pr = per_cpu(processors, cpu); in acpi_processor_ppc_init() local
183 if (!pr) in acpi_processor_ppc_init()
191 pr->performance_platform_limit = 0; in acpi_processor_ppc_init()
194 &pr->perflib_req, FREQ_QOS_MAX, in acpi_processor_ppc_init()
200 if (!pr->performance) in acpi_processor_ppc_init()
203 ret = acpi_processor_get_platform_limit(pr); in acpi_processor_ppc_init()
215 struct acpi_processor *pr = per_cpu(processors, cpu); in acpi_processor_ppc_exit() local
217 if (pr) in acpi_processor_ppc_exit()
218 freq_qos_remove_request(&pr->perflib_req); in acpi_processor_ppc_exit()
226 static int acpi_processor_get_performance_control(struct acpi_processor *pr) in acpi_processor_get_performance_control() argument
234 status = acpi_evaluate_object(pr->handle, "_PCT", NULL, &buffer); in acpi_processor_get_performance_control()
236 acpi_evaluation_failure_warn(pr->handle, "_PCT", status); in acpi_processor_get_performance_control()
259 memcpy(&pr->performance->control_register, obj.buffer.pointer, in acpi_processor_get_performance_control()
275 memcpy(&pr->performance->status_register, obj.buffer.pointer, in acpi_processor_get_performance_control()
315 static int acpi_processor_get_performance_states(struct acpi_processor *pr) in acpi_processor_get_performance_states() argument
326 status = acpi_evaluate_object(pr->handle, "_PSS", NULL, &buffer); in acpi_processor_get_performance_states()
328 acpi_evaluation_failure_warn(pr->handle, "_PSS", status); in acpi_processor_get_performance_states()
339 acpi_handle_debug(pr->handle, "Found %d performance states\n", in acpi_processor_get_performance_states()
342 pr->performance->state_count = pss->package.count; in acpi_processor_get_performance_states()
343 pr->performance->states = in acpi_processor_get_performance_states()
347 if (!pr->performance->states) { in acpi_processor_get_performance_states()
352 for (i = 0; i < pr->performance->state_count; i++) { in acpi_processor_get_performance_states()
354 struct acpi_processor_px *px = &(pr->performance->states[i]); in acpi_processor_get_performance_states()
359 acpi_handle_debug(pr->handle, "Extracting state %d\n", i); in acpi_processor_get_performance_states()
364 acpi_handle_warn(pr->handle, "Invalid _PSS data: %s\n", in acpi_processor_get_performance_states()
367 kfree(pr->performance->states); in acpi_processor_get_performance_states()
373 acpi_handle_debug(pr->handle, in acpi_processor_get_performance_states()
389 pr->id, px->core_frequency); in acpi_processor_get_performance_states()
397 memcpy(&(pr->performance->states[last_invalid]), in acpi_processor_get_performance_states()
406 "No valid BIOS _PSS frequency found for processor %d\n", pr->id); in acpi_processor_get_performance_states()
408 kfree(pr->performance->states); in acpi_processor_get_performance_states()
409 pr->performance->states = NULL; in acpi_processor_get_performance_states()
413 pr->performance->state_count = last_invalid; in acpi_processor_get_performance_states()
421 int acpi_processor_get_performance_info(struct acpi_processor *pr) in acpi_processor_get_performance_info() argument
425 if (!pr || !pr->performance || !pr->handle) in acpi_processor_get_performance_info()
428 if (!acpi_has_method(pr->handle, "_PCT")) { in acpi_processor_get_performance_info()
429 acpi_handle_debug(pr->handle, in acpi_processor_get_performance_info()
434 result = acpi_processor_get_performance_control(pr); in acpi_processor_get_performance_info()
438 result = acpi_processor_get_performance_states(pr); in acpi_processor_get_performance_info()
444 result = acpi_processor_get_platform_limit(pr); in acpi_processor_get_performance_info()
453 if (acpi_has_method(pr->handle, "_PPC")) { in acpi_processor_get_performance_info()
600 struct acpi_processor *pr; in acpi_processor_preregister_performance() local
612 * changing pr->performance if it has. Check input data as well. in acpi_processor_preregister_performance()
615 pr = per_cpu(processors, i); in acpi_processor_preregister_performance()
616 if (!pr) { in acpi_processor_preregister_performance()
621 if (pr->performance) { in acpi_processor_preregister_performance()
634 pr = per_cpu(processors, i); in acpi_processor_preregister_performance()
635 if (!pr) in acpi_processor_preregister_performance()
638 pr->performance = per_cpu_ptr(performance, i); in acpi_processor_preregister_performance()
639 pdomain = &(pr->performance->domain_info); in acpi_processor_preregister_performance()
640 if (acpi_processor_get_psd(pr->handle, pdomain)) { in acpi_processor_preregister_performance()
653 pr = per_cpu(processors, i); in acpi_processor_preregister_performance()
654 if (!pr) in acpi_processor_preregister_performance()
660 pdomain = &(pr->performance->domain_info); in acpi_processor_preregister_performance()
661 cpumask_set_cpu(i, pr->performance->shared_cpu_map); in acpi_processor_preregister_performance()
669 pr->performance->shared_type = CPUFREQ_SHARED_TYPE_ALL; in acpi_processor_preregister_performance()
671 pr->performance->shared_type = CPUFREQ_SHARED_TYPE_HW; in acpi_processor_preregister_performance()
673 pr->performance->shared_type = CPUFREQ_SHARED_TYPE_ANY; in acpi_processor_preregister_performance()
700 cpumask_set_cpu(j, pr->performance->shared_cpu_map); in acpi_processor_preregister_performance()
716 pr->performance->shared_type; in acpi_processor_preregister_performance()
718 pr->performance->shared_cpu_map); in acpi_processor_preregister_performance()
724 pr = per_cpu(processors, i); in acpi_processor_preregister_performance()
725 if (!pr || !pr->performance) in acpi_processor_preregister_performance()
730 cpumask_clear(pr->performance->shared_cpu_map); in acpi_processor_preregister_performance()
731 cpumask_set_cpu(i, pr->performance->shared_cpu_map); in acpi_processor_preregister_performance()
732 pr->performance->shared_type = CPUFREQ_SHARED_TYPE_NONE; in acpi_processor_preregister_performance()
734 pr->performance = NULL; /* Will be set for real in register */ in acpi_processor_preregister_performance()
747 struct acpi_processor *pr; in acpi_processor_register_performance() local
754 pr = per_cpu(processors, cpu); in acpi_processor_register_performance()
755 if (!pr) { in acpi_processor_register_performance()
760 if (pr->performance) { in acpi_processor_register_performance()
767 pr->performance = performance; in acpi_processor_register_performance()
769 if (acpi_processor_get_performance_info(pr)) { in acpi_processor_register_performance()
770 pr->performance = NULL; in acpi_processor_register_performance()
782 struct acpi_processor *pr; in acpi_processor_unregister_performance() local
786 pr = per_cpu(processors, cpu); in acpi_processor_unregister_performance()
787 if (!pr) in acpi_processor_unregister_performance()
790 if (pr->performance) in acpi_processor_unregister_performance()
791 kfree(pr->performance->states); in acpi_processor_unregister_performance()
793 pr->performance = NULL; in acpi_processor_unregister_performance()