Lines Matching full:pr
42 struct acpi_processor *pr; member
50 static int acpi_processor_get_throttling(struct acpi_processor *pr);
51 static int __acpi_processor_set_throttling(struct acpi_processor *pr,
60 struct acpi_processor *pr, *match_pr; in acpi_processor_update_tsd_coord() local
72 pr = per_cpu(processors, i); in acpi_processor_update_tsd_coord()
73 if (!pr) in acpi_processor_update_tsd_coord()
77 pthrottling = &(pr->throttling); in acpi_processor_update_tsd_coord()
93 pr = per_cpu(processors, i); in acpi_processor_update_tsd_coord()
94 if (!pr) in acpi_processor_update_tsd_coord()
99 pthrottling = &pr->throttling; in acpi_processor_update_tsd_coord()
172 pr = per_cpu(processors, i); in acpi_processor_update_tsd_coord()
173 if (!pr) in acpi_processor_update_tsd_coord()
181 pthrottling = &(pr->throttling); in acpi_processor_update_tsd_coord()
204 struct acpi_processor *pr; in acpi_processor_throttling_notifier() local
211 pr = per_cpu(processors, cpu); in acpi_processor_throttling_notifier()
212 if (!pr) { in acpi_processor_throttling_notifier()
213 pr_debug("Invalid pr pointer\n"); in acpi_processor_throttling_notifier()
216 if (!pr->flags.throttling) { in acpi_processor_throttling_notifier()
217 acpi_handle_debug(pr->handle, in acpi_processor_throttling_notifier()
223 p_throttling = &(pr->throttling); in acpi_processor_throttling_notifier()
230 p_limit = &pr->limit; in acpi_processor_throttling_notifier()
235 if (pr->throttling_platform_limit > target_state) in acpi_processor_throttling_notifier()
236 target_state = pr->throttling_platform_limit; in acpi_processor_throttling_notifier()
242 acpi_handle_debug(pr->handle, in acpi_processor_throttling_notifier()
252 acpi_handle_debug(pr->handle, in acpi_processor_throttling_notifier()
267 static int acpi_processor_get_platform_limit(struct acpi_processor *pr) in acpi_processor_get_platform_limit() argument
272 if (!pr) in acpi_processor_get_platform_limit()
278 status = acpi_evaluate_integer(pr->handle, "_TPC", NULL, &tpc); in acpi_processor_get_platform_limit()
281 acpi_evaluation_failure_warn(pr->handle, "_TPC", status); in acpi_processor_get_platform_limit()
287 pr->throttling_platform_limit = (int)tpc; in acpi_processor_get_platform_limit()
291 int acpi_processor_tstate_has_changed(struct acpi_processor *pr) in acpi_processor_tstate_has_changed() argument
302 result = acpi_processor_get_platform_limit(pr); in acpi_processor_tstate_has_changed()
308 throttling_limit = pr->throttling_platform_limit; in acpi_processor_tstate_has_changed()
309 if (throttling_limit >= pr->throttling.state_count) { in acpi_processor_tstate_has_changed()
314 current_state = pr->throttling.state; in acpi_processor_tstate_has_changed()
323 limit = &pr->limit; in acpi_processor_tstate_has_changed()
344 return acpi_processor_set_throttling(pr, target_state, false); in acpi_processor_tstate_has_changed()
356 void acpi_processor_reevaluate_tstate(struct acpi_processor *pr, in acpi_processor_reevaluate_tstate() argument
365 pr->flags.throttling = 0; in acpi_processor_reevaluate_tstate()
371 if (!pr->throttling.state_count) { in acpi_processor_reevaluate_tstate()
375 pr->flags.throttling = 0; in acpi_processor_reevaluate_tstate()
378 pr->flags.throttling = 1; in acpi_processor_reevaluate_tstate()
385 result = acpi_processor_get_throttling(pr); in acpi_processor_reevaluate_tstate()
389 if (pr->throttling.state) { in acpi_processor_reevaluate_tstate()
390 result = acpi_processor_set_throttling(pr, 0, false); in acpi_processor_reevaluate_tstate()
397 pr->flags.throttling = 0; in acpi_processor_reevaluate_tstate()
402 static int acpi_processor_get_throttling_control(struct acpi_processor *pr) in acpi_processor_get_throttling_control() argument
411 status = acpi_evaluate_object(pr->handle, "_PTC", NULL, &buffer); in acpi_processor_get_throttling_control()
414 acpi_evaluation_failure_warn(pr->handle, "_PTC", status); in acpi_processor_get_throttling_control()
440 memcpy(&pr->throttling.control_register, obj.buffer.pointer, in acpi_processor_get_throttling_control()
457 memcpy(&pr->throttling.status_register, obj.buffer.pointer, in acpi_processor_get_throttling_control()
460 throttling = &pr->throttling; in acpi_processor_get_throttling_control()
485 static int acpi_processor_get_throttling_states(struct acpi_processor *pr) in acpi_processor_get_throttling_states() argument
495 status = acpi_evaluate_object(pr->handle, "_TSS", NULL, &buffer); in acpi_processor_get_throttling_states()
498 acpi_evaluation_failure_warn(pr->handle, "_TSS", status); in acpi_processor_get_throttling_states()
510 acpi_handle_debug(pr->handle, "Found %d throttling states\n", in acpi_processor_get_throttling_states()
513 pr->throttling.state_count = tss->package.count; in acpi_processor_get_throttling_states()
514 pr->throttling.states_tss = in acpi_processor_get_throttling_states()
518 if (!pr->throttling.states_tss) { in acpi_processor_get_throttling_states()
523 for (i = 0; i < pr->throttling.state_count; i++) { in acpi_processor_get_throttling_states()
526 (struct acpi_processor_tx_tss *)&(pr->throttling. in acpi_processor_get_throttling_states()
532 acpi_handle_debug(pr->handle, "Extracting state %d\n", i); in acpi_processor_get_throttling_states()
537 acpi_handle_warn(pr->handle, "Invalid _TSS data: %s\n", in acpi_processor_get_throttling_states()
540 kfree(pr->throttling.states_tss); in acpi_processor_get_throttling_states()
547 kfree(pr->throttling.states_tss); in acpi_processor_get_throttling_states()
561 static int acpi_processor_get_tsd(struct acpi_processor *pr) in acpi_processor_get_tsd() argument
572 pthrottling = &pr->throttling; in acpi_processor_get_tsd()
575 status = acpi_evaluate_object(pr->handle, "_TSD", NULL, &buffer); in acpi_processor_get_tsd()
578 acpi_evaluation_failure_warn(pr->handle, "_TSD", status); in acpi_processor_get_tsd()
596 pdomain = &(pr->throttling.domain_info); in acpi_processor_get_tsd()
621 pthrottling = &pr->throttling; in acpi_processor_get_tsd()
624 cpumask_set_cpu(pr->id, pthrottling->shared_cpu_map); in acpi_processor_get_tsd()
645 static int acpi_processor_get_throttling_fadt(struct acpi_processor *pr) in acpi_processor_get_throttling_fadt() argument
652 if (!pr) in acpi_processor_get_throttling_fadt()
655 if (!pr->flags.throttling) in acpi_processor_get_throttling_fadt()
665 request_region(pr->throttling.address, 6, "ACPI CPU throttle"); in acpi_processor_get_throttling_fadt()
667 pr->throttling.state = 0; in acpi_processor_get_throttling_fadt()
669 duty_mask = pr->throttling.state_count - 1; in acpi_processor_get_throttling_fadt()
671 duty_mask <<= pr->throttling.duty_offset; in acpi_processor_get_throttling_fadt()
675 value = inl(pr->throttling.address); in acpi_processor_get_throttling_fadt()
683 duty_value >>= pr->throttling.duty_offset; in acpi_processor_get_throttling_fadt()
686 state = pr->throttling.state_count - duty_value; in acpi_processor_get_throttling_fadt()
689 pr->throttling.state = state; in acpi_processor_get_throttling_fadt()
693 acpi_handle_debug(pr->handle, in acpi_processor_get_throttling_fadt()
695 state, pr->throttling.states[state].performance); in acpi_processor_get_throttling_fadt()
752 static int acpi_read_throttling_status(struct acpi_processor *pr, in acpi_read_throttling_status() argument
761 throttling = &pr->throttling; in acpi_read_throttling_status()
784 static int acpi_write_throttling_state(struct acpi_processor *pr, in acpi_write_throttling_state() argument
793 throttling = &pr->throttling; in acpi_write_throttling_state()
817 static int acpi_get_throttling_state(struct acpi_processor *pr, in acpi_get_throttling_state() argument
822 for (i = 0; i < pr->throttling.state_count; i++) { in acpi_get_throttling_state()
824 (struct acpi_processor_tx_tss *)&(pr->throttling. in acpi_get_throttling_state()
832 static int acpi_get_throttling_value(struct acpi_processor *pr, in acpi_get_throttling_value() argument
837 if (state >= 0 && state <= pr->throttling.state_count) { in acpi_get_throttling_value()
839 (struct acpi_processor_tx_tss *)&(pr->throttling. in acpi_get_throttling_value()
847 static int acpi_processor_get_throttling_ptc(struct acpi_processor *pr) in acpi_processor_get_throttling_ptc() argument
853 if (!pr) in acpi_processor_get_throttling_ptc()
856 if (!pr->flags.throttling) in acpi_processor_get_throttling_ptc()
859 pr->throttling.state = 0; in acpi_processor_get_throttling_ptc()
862 ret = acpi_read_throttling_status(pr, &value); in acpi_processor_get_throttling_ptc()
864 state = acpi_get_throttling_state(pr, value); in acpi_processor_get_throttling_ptc()
866 acpi_handle_debug(pr->handle, in acpi_processor_get_throttling_ptc()
869 ret = __acpi_processor_set_throttling(pr, state, true, in acpi_processor_get_throttling_ptc()
874 pr->throttling.state = state; in acpi_processor_get_throttling_ptc()
882 struct acpi_processor *pr = data; in __acpi_processor_get_throttling() local
884 return pr->throttling.acpi_processor_get_throttling(pr); in __acpi_processor_get_throttling()
887 static int acpi_processor_get_throttling(struct acpi_processor *pr) in acpi_processor_get_throttling() argument
889 if (!pr) in acpi_processor_get_throttling()
892 if (!pr->flags.throttling) in acpi_processor_get_throttling()
901 if (!cpu_online(pr->id)) in acpi_processor_get_throttling()
904 return call_on_cpu(pr->id, __acpi_processor_get_throttling, pr, false); in acpi_processor_get_throttling()
907 static int acpi_processor_get_fadt_info(struct acpi_processor *pr) in acpi_processor_get_fadt_info() argument
911 if (!pr->throttling.address) { in acpi_processor_get_fadt_info()
912 acpi_handle_debug(pr->handle, "No throttling register\n"); in acpi_processor_get_fadt_info()
914 } else if (!pr->throttling.duty_width) { in acpi_processor_get_fadt_info()
915 acpi_handle_debug(pr->handle, "No throttling states\n"); in acpi_processor_get_fadt_info()
919 else if ((pr->throttling.duty_offset + pr->throttling.duty_width) > 4) { in acpi_processor_get_fadt_info()
924 pr->throttling.state_count = 1 << acpi_gbl_FADT.duty_width; in acpi_processor_get_fadt_info()
932 step = (1000 / pr->throttling.state_count); in acpi_processor_get_fadt_info()
934 for (i = 0; i < pr->throttling.state_count; i++) { in acpi_processor_get_fadt_info()
935 pr->throttling.states[i].performance = 1000 - step * i; in acpi_processor_get_fadt_info()
936 pr->throttling.states[i].power = 1000 - step * i; in acpi_processor_get_fadt_info()
941 static int acpi_processor_set_throttling_fadt(struct acpi_processor *pr, in acpi_processor_set_throttling_fadt() argument
948 if (!pr) in acpi_processor_set_throttling_fadt()
951 if ((state < 0) || (state > (pr->throttling.state_count - 1))) in acpi_processor_set_throttling_fadt()
954 if (!pr->flags.throttling) in acpi_processor_set_throttling_fadt()
957 if (!force && (state == pr->throttling.state)) in acpi_processor_set_throttling_fadt()
960 if (state < pr->throttling_platform_limit) in acpi_processor_set_throttling_fadt()
966 duty_value = pr->throttling.state_count - state; in acpi_processor_set_throttling_fadt()
968 duty_value <<= pr->throttling.duty_offset; in acpi_processor_set_throttling_fadt()
971 duty_mask = pr->throttling.state_count - 1; in acpi_processor_set_throttling_fadt()
983 value = inl(pr->throttling.address); in acpi_processor_set_throttling_fadt()
986 outl(value, pr->throttling.address); in acpi_processor_set_throttling_fadt()
996 outl(value, pr->throttling.address); in acpi_processor_set_throttling_fadt()
999 outl(value, pr->throttling.address); in acpi_processor_set_throttling_fadt()
1002 pr->throttling.state = state; in acpi_processor_set_throttling_fadt()
1006 acpi_handle_debug(pr->handle, in acpi_processor_set_throttling_fadt()
1008 (pr->throttling.states[state].performance ? pr-> in acpi_processor_set_throttling_fadt()
1014 static int acpi_processor_set_throttling_ptc(struct acpi_processor *pr, in acpi_processor_set_throttling_ptc() argument
1020 if (!pr) in acpi_processor_set_throttling_ptc()
1023 if ((state < 0) || (state > (pr->throttling.state_count - 1))) in acpi_processor_set_throttling_ptc()
1026 if (!pr->flags.throttling) in acpi_processor_set_throttling_ptc()
1029 if (!force && (state == pr->throttling.state)) in acpi_processor_set_throttling_ptc()
1032 if (state < pr->throttling_platform_limit) in acpi_processor_set_throttling_ptc()
1036 ret = acpi_get_throttling_value(pr, state, &value); in acpi_processor_set_throttling_ptc()
1038 acpi_write_throttling_state(pr, value); in acpi_processor_set_throttling_ptc()
1039 pr->throttling.state = state; in acpi_processor_set_throttling_ptc()
1048 struct acpi_processor *pr = arg->pr; in acpi_processor_throttling_fn() local
1050 return pr->throttling.acpi_processor_set_throttling(pr, in acpi_processor_throttling_fn()
1054 static int __acpi_processor_set_throttling(struct acpi_processor *pr, in __acpi_processor_set_throttling() argument
1064 if (!pr) in __acpi_processor_set_throttling()
1067 if (!pr->flags.throttling) in __acpi_processor_set_throttling()
1070 if ((state < 0) || (state > (pr->throttling.state_count - 1))) in __acpi_processor_set_throttling()
1073 if (cpu_is_offline(pr->id)) { in __acpi_processor_set_throttling()
1075 * the cpu pointed by pr->id is offline. Unnecessary to change in __acpi_processor_set_throttling()
1082 p_throttling = &(pr->throttling); in __acpi_processor_set_throttling()
1098 * it can be called only for the cpu pointed by pr. in __acpi_processor_set_throttling()
1101 arg.pr = pr; in __acpi_processor_set_throttling()
1104 ret = call_on_cpu(pr->id, acpi_processor_throttling_fn, &arg, in __acpi_processor_set_throttling()
1120 acpi_handle_debug(pr->handle, in __acpi_processor_set_throttling()
1129 acpi_handle_debug(pr->handle, in __acpi_processor_set_throttling()
1134 arg.pr = match_pr; in __acpi_processor_set_throttling()
1137 ret = call_on_cpu(pr->id, acpi_processor_throttling_fn, in __acpi_processor_set_throttling()
1156 int acpi_processor_set_throttling(struct acpi_processor *pr, int state, in acpi_processor_set_throttling() argument
1159 return __acpi_processor_set_throttling(pr, state, force, false); in acpi_processor_set_throttling()
1162 int acpi_processor_get_throttling_info(struct acpi_processor *pr) in acpi_processor_get_throttling_info() argument
1167 acpi_handle_debug(pr->handle, in acpi_processor_get_throttling_info()
1169 pr->throttling.address, in acpi_processor_get_throttling_info()
1170 pr->throttling.duty_offset, in acpi_processor_get_throttling_info()
1171 pr->throttling.duty_width); in acpi_processor_get_throttling_info()
1177 if (acpi_processor_get_throttling_control(pr) || in acpi_processor_get_throttling_info()
1178 acpi_processor_get_throttling_states(pr) || in acpi_processor_get_throttling_info()
1179 acpi_processor_get_platform_limit(pr)) { in acpi_processor_get_throttling_info()
1180 pr->throttling.acpi_processor_get_throttling = in acpi_processor_get_throttling_info()
1182 pr->throttling.acpi_processor_set_throttling = in acpi_processor_get_throttling_info()
1184 if (acpi_processor_get_fadt_info(pr)) in acpi_processor_get_throttling_info()
1187 pr->throttling.acpi_processor_get_throttling = in acpi_processor_get_throttling_info()
1189 pr->throttling.acpi_processor_set_throttling = in acpi_processor_get_throttling_info()
1197 if (acpi_processor_get_tsd(pr)) { in acpi_processor_get_throttling_info()
1198 pthrottling = &pr->throttling; in acpi_processor_get_throttling_info()
1200 cpumask_set_cpu(pr->id, pthrottling->shared_cpu_map); in acpi_processor_get_throttling_info()
1210 acpi_handle_debug(pr->handle, in acpi_processor_get_throttling_info()
1215 acpi_handle_debug(pr->handle, "Found %d throttling states\n", in acpi_processor_get_throttling_info()
1216 pr->throttling.state_count); in acpi_processor_get_throttling_info()
1218 pr->flags.throttling = 1; in acpi_processor_get_throttling_info()
1226 result = acpi_processor_get_throttling(pr); in acpi_processor_get_throttling_info()
1230 if (pr->throttling.state) { in acpi_processor_get_throttling_info()
1231 acpi_handle_debug(pr->handle, in acpi_processor_get_throttling_info()
1233 pr->throttling.state); in acpi_processor_get_throttling_info()
1234 result = acpi_processor_set_throttling(pr, 0, false); in acpi_processor_get_throttling_info()
1241 pr->flags.throttling = 0; in acpi_processor_get_throttling_info()