Lines Matching refs:pr

52 static int acpi_processor_get_platform_limit(struct acpi_processor *pr)
60 if (!pr)
67 status = acpi_evaluate_integer(pr->handle, "_PPC", NULL, &ppc);
72 acpi_evaluation_failure_warn(pr->handle, "_PPC", status);
79 if (pr->performance_platform_limit == index ||
80 ppc >= pr->performance->state_count)
83 pr_debug("CPU %d: _PPC is %d - frequency %s limited\n", pr->id,
86 pr->performance_platform_limit = index;
88 if (unlikely(!freq_qos_request_active(&pr->perflib_req)))
98 qos_value = pr->performance->states[index].core_frequency * 1000;
100 ret = freq_qos_update_request(&pr->perflib_req, qos_value);
103 pr->id, ret);
124 void acpi_processor_ppc_has_changed(struct acpi_processor *pr, int event_flag)
128 if (ignore_ppc || !pr->performance) {
134 acpi_processor_ppc_ost(pr->handle, 1);
138 ret = acpi_processor_get_platform_limit(pr);
145 acpi_processor_ppc_ost(pr->handle, 1);
147 acpi_processor_ppc_ost(pr->handle, 0);
150 cpufreq_update_limits(pr->id);
155 struct acpi_processor *pr;
157 pr = per_cpu(processors, cpu);
158 if (!pr || !pr->performance || !pr->performance->state_count)
161 *limit = pr->performance->states[pr->performance_platform_limit].
178 struct acpi_processor *pr = per_cpu(processors, cpu);
181 if (!pr)
189 pr->performance_platform_limit = 0;
192 &pr->perflib_req, FREQ_QOS_MAX,
205 struct acpi_processor *pr = per_cpu(processors, cpu);
207 if (pr)
208 freq_qos_remove_request(&pr->perflib_req);
212 static int acpi_processor_get_performance_control(struct acpi_processor *pr)
220 status = acpi_evaluate_object(pr->handle, "_PCT", NULL, &buffer);
222 acpi_evaluation_failure_warn(pr->handle, "_PCT", status);
245 memcpy(&pr->performance->control_register, obj.buffer.pointer,
261 memcpy(&pr->performance->status_register, obj.buffer.pointer,
305 static int acpi_processor_get_performance_states(struct acpi_processor *pr)
316 status = acpi_evaluate_object(pr->handle, "_PSS", NULL, &buffer);
318 acpi_evaluation_failure_warn(pr->handle, "_PSS", status);
329 acpi_handle_debug(pr->handle, "Found %d performance states\n",
332 pr->performance->state_count = pss->package.count;
333 pr->performance->states =
337 if (!pr->performance->states) {
342 for (i = 0; i < pr->performance->state_count; i++) {
344 struct acpi_processor_px *px = &(pr->performance->states[i]);
349 acpi_handle_debug(pr->handle, "Extracting state %d\n", i);
354 acpi_handle_warn(pr->handle, "Invalid _PSS data: %s\n",
357 kfree(pr->performance->states);
363 acpi_handle_debug(pr->handle,
379 pr->id, px->core_frequency);
387 memcpy(&(pr->performance->states[last_invalid]),
396 "No valid BIOS _PSS frequency found for processor %d\n", pr->id);
398 kfree(pr->performance->states);
399 pr->performance->states = NULL;
403 pr->performance->state_count = last_invalid;
411 int acpi_processor_get_performance_info(struct acpi_processor *pr)
415 if (!pr || !pr->performance || !pr->handle)
418 if (!acpi_has_method(pr->handle, "_PCT")) {
419 acpi_handle_debug(pr->handle,
424 result = acpi_processor_get_performance_control(pr);
428 result = acpi_processor_get_performance_states(pr);
434 result = acpi_processor_get_platform_limit(pr);
444 if (acpi_has_method(pr->handle, "_PPC")) {
592 struct acpi_processor *pr;
604 * changing pr->performance if it has. Check input data as well.
607 pr = per_cpu(processors, i);
608 if (!pr) {
613 if (pr->performance) {
626 pr = per_cpu(processors, i);
627 if (!pr)
630 pr->performance = per_cpu_ptr(performance, i);
631 pdomain = &(pr->performance->domain_info);
632 if (acpi_processor_get_psd(pr->handle, pdomain)) {
645 pr = per_cpu(processors, i);
646 if (!pr)
652 pdomain = &(pr->performance->domain_info);
653 cpumask_set_cpu(i, pr->performance->shared_cpu_map);
661 pr->performance->shared_type = CPUFREQ_SHARED_TYPE_ALL;
663 pr->performance->shared_type = CPUFREQ_SHARED_TYPE_HW;
665 pr->performance->shared_type = CPUFREQ_SHARED_TYPE_ANY;
692 cpumask_set_cpu(j, pr->performance->shared_cpu_map);
708 pr->performance->shared_type;
710 pr->performance->shared_cpu_map);
716 pr = per_cpu(processors, i);
717 if (!pr || !pr->performance)
722 cpumask_clear(pr->performance->shared_cpu_map);
723 cpumask_set_cpu(i, pr->performance->shared_cpu_map);
724 pr->performance->shared_type = CPUFREQ_SHARED_TYPE_NONE;
726 pr->performance = NULL; /* Will be set for real in register */
739 struct acpi_processor *pr;
746 pr = per_cpu(processors, cpu);
747 if (!pr) {
752 if (pr->performance) {
759 pr->performance = performance;
761 if (acpi_processor_get_performance_info(pr)) {
762 pr->performance = NULL;
774 struct acpi_processor *pr;
778 pr = per_cpu(processors, cpu);
779 if (!pr)
782 if (pr->performance)
783 kfree(pr->performance->states);
785 pr->performance = NULL;