Lines Matching refs:pr
43 struct acpi_processor *pr; member
51 static int acpi_processor_get_throttling(struct acpi_processor *pr);
52 static int __acpi_processor_set_throttling(struct acpi_processor *pr,
61 struct acpi_processor *pr, *match_pr; in acpi_processor_update_tsd_coord() local
73 pr = per_cpu(processors, i); in acpi_processor_update_tsd_coord()
74 if (!pr) in acpi_processor_update_tsd_coord()
78 pthrottling = &(pr->throttling); in acpi_processor_update_tsd_coord()
94 pr = per_cpu(processors, i); in acpi_processor_update_tsd_coord()
95 if (!pr) in acpi_processor_update_tsd_coord()
100 pthrottling = &pr->throttling; in acpi_processor_update_tsd_coord()
175 pr = per_cpu(processors, i); in acpi_processor_update_tsd_coord()
176 if (!pr) in acpi_processor_update_tsd_coord()
184 pthrottling = &(pr->throttling); in acpi_processor_update_tsd_coord()
211 struct acpi_processor *pr; in acpi_processor_throttling_notifier() local
218 pr = per_cpu(processors, cpu); in acpi_processor_throttling_notifier()
219 if (!pr) { in acpi_processor_throttling_notifier()
223 if (!pr->flags.throttling) { in acpi_processor_throttling_notifier()
229 p_throttling = &(pr->throttling); in acpi_processor_throttling_notifier()
236 p_limit = &pr->limit; in acpi_processor_throttling_notifier()
241 if (pr->throttling_platform_limit > target_state) in acpi_processor_throttling_notifier()
242 target_state = pr->throttling_platform_limit; in acpi_processor_throttling_notifier()
275 static int acpi_processor_get_platform_limit(struct acpi_processor *pr) in acpi_processor_get_platform_limit() argument
280 if (!pr) in acpi_processor_get_platform_limit()
286 status = acpi_evaluate_integer(pr->handle, "_TPC", NULL, &tpc); in acpi_processor_get_platform_limit()
295 pr->throttling_platform_limit = (int)tpc; in acpi_processor_get_platform_limit()
299 int acpi_processor_tstate_has_changed(struct acpi_processor *pr) in acpi_processor_tstate_has_changed() argument
310 result = acpi_processor_get_platform_limit(pr); in acpi_processor_tstate_has_changed()
316 throttling_limit = pr->throttling_platform_limit; in acpi_processor_tstate_has_changed()
317 if (throttling_limit >= pr->throttling.state_count) { in acpi_processor_tstate_has_changed()
322 current_state = pr->throttling.state; in acpi_processor_tstate_has_changed()
331 limit = &pr->limit; in acpi_processor_tstate_has_changed()
352 return acpi_processor_set_throttling(pr, target_state, false); in acpi_processor_tstate_has_changed()
364 void acpi_processor_reevaluate_tstate(struct acpi_processor *pr, in acpi_processor_reevaluate_tstate() argument
373 pr->flags.throttling = 0; in acpi_processor_reevaluate_tstate()
379 if (!pr->throttling.state_count) { in acpi_processor_reevaluate_tstate()
383 pr->flags.throttling = 0; in acpi_processor_reevaluate_tstate()
386 pr->flags.throttling = 1; in acpi_processor_reevaluate_tstate()
393 result = acpi_processor_get_throttling(pr); in acpi_processor_reevaluate_tstate()
397 if (pr->throttling.state) { in acpi_processor_reevaluate_tstate()
398 result = acpi_processor_set_throttling(pr, 0, false); in acpi_processor_reevaluate_tstate()
405 pr->flags.throttling = 0; in acpi_processor_reevaluate_tstate()
410 static int acpi_processor_get_throttling_control(struct acpi_processor *pr) in acpi_processor_get_throttling_control() argument
419 status = acpi_evaluate_object(pr->handle, "_PTC", NULL, &buffer); in acpi_processor_get_throttling_control()
449 memcpy(&pr->throttling.control_register, obj.buffer.pointer, in acpi_processor_get_throttling_control()
466 memcpy(&pr->throttling.status_register, obj.buffer.pointer, in acpi_processor_get_throttling_control()
469 throttling = &pr->throttling; in acpi_processor_get_throttling_control()
494 static int acpi_processor_get_throttling_states(struct acpi_processor *pr) in acpi_processor_get_throttling_states() argument
504 status = acpi_evaluate_object(pr->handle, "_TSS", NULL, &buffer); in acpi_processor_get_throttling_states()
522 pr->throttling.state_count = tss->package.count; in acpi_processor_get_throttling_states()
523 pr->throttling.states_tss = in acpi_processor_get_throttling_states()
527 if (!pr->throttling.states_tss) { in acpi_processor_get_throttling_states()
532 for (i = 0; i < pr->throttling.state_count; i++) { in acpi_processor_get_throttling_states()
535 (struct acpi_processor_tx_tss *)&(pr->throttling. in acpi_processor_get_throttling_states()
548 kfree(pr->throttling.states_tss); in acpi_processor_get_throttling_states()
556 kfree(pr->throttling.states_tss); in acpi_processor_get_throttling_states()
570 static int acpi_processor_get_tsd(struct acpi_processor *pr) in acpi_processor_get_tsd() argument
581 pthrottling = &pr->throttling; in acpi_processor_get_tsd()
584 status = acpi_evaluate_object(pr->handle, "_TSD", NULL, &buffer); in acpi_processor_get_tsd()
605 pdomain = &(pr->throttling.domain_info); in acpi_processor_get_tsd()
630 pthrottling = &pr->throttling; in acpi_processor_get_tsd()
633 cpumask_set_cpu(pr->id, pthrottling->shared_cpu_map); in acpi_processor_get_tsd()
654 static int acpi_processor_get_throttling_fadt(struct acpi_processor *pr) in acpi_processor_get_throttling_fadt() argument
661 if (!pr) in acpi_processor_get_throttling_fadt()
664 if (!pr->flags.throttling) in acpi_processor_get_throttling_fadt()
674 request_region(pr->throttling.address, 6, "ACPI CPU throttle"); in acpi_processor_get_throttling_fadt()
676 pr->throttling.state = 0; in acpi_processor_get_throttling_fadt()
678 duty_mask = pr->throttling.state_count - 1; in acpi_processor_get_throttling_fadt()
680 duty_mask <<= pr->throttling.duty_offset; in acpi_processor_get_throttling_fadt()
684 value = inl(pr->throttling.address); in acpi_processor_get_throttling_fadt()
692 duty_value >>= pr->throttling.duty_offset; in acpi_processor_get_throttling_fadt()
695 state = pr->throttling.state_count - duty_value; in acpi_processor_get_throttling_fadt()
698 pr->throttling.state = state; in acpi_processor_get_throttling_fadt()
704 state, pr->throttling.states[state].performance)); in acpi_processor_get_throttling_fadt()
765 static int acpi_read_throttling_status(struct acpi_processor *pr, in acpi_read_throttling_status() argument
774 throttling = &pr->throttling; in acpi_read_throttling_status()
797 static int acpi_write_throttling_state(struct acpi_processor *pr, in acpi_write_throttling_state() argument
806 throttling = &pr->throttling; in acpi_write_throttling_state()
830 static int acpi_get_throttling_state(struct acpi_processor *pr, in acpi_get_throttling_state() argument
835 for (i = 0; i < pr->throttling.state_count; i++) { in acpi_get_throttling_state()
837 (struct acpi_processor_tx_tss *)&(pr->throttling. in acpi_get_throttling_state()
845 static int acpi_get_throttling_value(struct acpi_processor *pr, in acpi_get_throttling_value() argument
850 if (state >= 0 && state <= pr->throttling.state_count) { in acpi_get_throttling_value()
852 (struct acpi_processor_tx_tss *)&(pr->throttling. in acpi_get_throttling_value()
860 static int acpi_processor_get_throttling_ptc(struct acpi_processor *pr) in acpi_processor_get_throttling_ptc() argument
866 if (!pr) in acpi_processor_get_throttling_ptc()
869 if (!pr->flags.throttling) in acpi_processor_get_throttling_ptc()
872 pr->throttling.state = 0; in acpi_processor_get_throttling_ptc()
875 ret = acpi_read_throttling_status(pr, &value); in acpi_processor_get_throttling_ptc()
877 state = acpi_get_throttling_state(pr, value); in acpi_processor_get_throttling_ptc()
882 ret = __acpi_processor_set_throttling(pr, state, true, in acpi_processor_get_throttling_ptc()
887 pr->throttling.state = state; in acpi_processor_get_throttling_ptc()
895 struct acpi_processor *pr = data; in __acpi_processor_get_throttling() local
897 return pr->throttling.acpi_processor_get_throttling(pr); in __acpi_processor_get_throttling()
907 static int acpi_processor_get_throttling(struct acpi_processor *pr) in acpi_processor_get_throttling() argument
909 if (!pr) in acpi_processor_get_throttling()
912 if (!pr->flags.throttling) in acpi_processor_get_throttling()
921 if (!cpu_online(pr->id)) in acpi_processor_get_throttling()
924 return call_on_cpu(pr->id, __acpi_processor_get_throttling, pr, false); in acpi_processor_get_throttling()
927 static int acpi_processor_get_fadt_info(struct acpi_processor *pr) in acpi_processor_get_fadt_info() argument
931 if (!pr->throttling.address) { in acpi_processor_get_fadt_info()
934 } else if (!pr->throttling.duty_width) { in acpi_processor_get_fadt_info()
939 else if ((pr->throttling.duty_offset + pr->throttling.duty_width) > 4) { in acpi_processor_get_fadt_info()
944 pr->throttling.state_count = 1 << acpi_gbl_FADT.duty_width; in acpi_processor_get_fadt_info()
952 step = (1000 / pr->throttling.state_count); in acpi_processor_get_fadt_info()
954 for (i = 0; i < pr->throttling.state_count; i++) { in acpi_processor_get_fadt_info()
955 pr->throttling.states[i].performance = 1000 - step * i; in acpi_processor_get_fadt_info()
956 pr->throttling.states[i].power = 1000 - step * i; in acpi_processor_get_fadt_info()
961 static int acpi_processor_set_throttling_fadt(struct acpi_processor *pr, in acpi_processor_set_throttling_fadt() argument
968 if (!pr) in acpi_processor_set_throttling_fadt()
971 if ((state < 0) || (state > (pr->throttling.state_count - 1))) in acpi_processor_set_throttling_fadt()
974 if (!pr->flags.throttling) in acpi_processor_set_throttling_fadt()
977 if (!force && (state == pr->throttling.state)) in acpi_processor_set_throttling_fadt()
980 if (state < pr->throttling_platform_limit) in acpi_processor_set_throttling_fadt()
986 duty_value = pr->throttling.state_count - state; in acpi_processor_set_throttling_fadt()
988 duty_value <<= pr->throttling.duty_offset; in acpi_processor_set_throttling_fadt()
991 duty_mask = pr->throttling.state_count - 1; in acpi_processor_set_throttling_fadt()
1003 value = inl(pr->throttling.address); in acpi_processor_set_throttling_fadt()
1006 outl(value, pr->throttling.address); in acpi_processor_set_throttling_fadt()
1016 outl(value, pr->throttling.address); in acpi_processor_set_throttling_fadt()
1019 outl(value, pr->throttling.address); in acpi_processor_set_throttling_fadt()
1022 pr->throttling.state = state; in acpi_processor_set_throttling_fadt()
1028 (pr->throttling.states[state].performance ? pr-> in acpi_processor_set_throttling_fadt()
1034 static int acpi_processor_set_throttling_ptc(struct acpi_processor *pr, in acpi_processor_set_throttling_ptc() argument
1040 if (!pr) in acpi_processor_set_throttling_ptc()
1043 if ((state < 0) || (state > (pr->throttling.state_count - 1))) in acpi_processor_set_throttling_ptc()
1046 if (!pr->flags.throttling) in acpi_processor_set_throttling_ptc()
1049 if (!force && (state == pr->throttling.state)) in acpi_processor_set_throttling_ptc()
1052 if (state < pr->throttling_platform_limit) in acpi_processor_set_throttling_ptc()
1056 ret = acpi_get_throttling_value(pr, state, &value); in acpi_processor_set_throttling_ptc()
1058 acpi_write_throttling_state(pr, value); in acpi_processor_set_throttling_ptc()
1059 pr->throttling.state = state; in acpi_processor_set_throttling_ptc()
1068 struct acpi_processor *pr = arg->pr; in acpi_processor_throttling_fn() local
1070 return pr->throttling.acpi_processor_set_throttling(pr, in acpi_processor_throttling_fn()
1074 static int __acpi_processor_set_throttling(struct acpi_processor *pr, in __acpi_processor_set_throttling() argument
1084 if (!pr) in __acpi_processor_set_throttling()
1087 if (!pr->flags.throttling) in __acpi_processor_set_throttling()
1090 if ((state < 0) || (state > (pr->throttling.state_count - 1))) in __acpi_processor_set_throttling()
1093 if (cpu_is_offline(pr->id)) { in __acpi_processor_set_throttling()
1102 p_throttling = &(pr->throttling); in __acpi_processor_set_throttling()
1121 arg.pr = pr; in __acpi_processor_set_throttling()
1124 ret = call_on_cpu(pr->id, acpi_processor_throttling_fn, &arg, in __acpi_processor_set_throttling()
1155 arg.pr = match_pr; in __acpi_processor_set_throttling()
1158 ret = call_on_cpu(pr->id, acpi_processor_throttling_fn, in __acpi_processor_set_throttling()
1177 int acpi_processor_set_throttling(struct acpi_processor *pr, int state, in acpi_processor_set_throttling() argument
1180 return __acpi_processor_set_throttling(pr, state, force, false); in acpi_processor_set_throttling()
1183 int acpi_processor_get_throttling_info(struct acpi_processor *pr) in acpi_processor_get_throttling_info() argument
1190 pr->throttling.address, in acpi_processor_get_throttling_info()
1191 pr->throttling.duty_offset, in acpi_processor_get_throttling_info()
1192 pr->throttling.duty_width)); in acpi_processor_get_throttling_info()
1198 if (acpi_processor_get_throttling_control(pr) || in acpi_processor_get_throttling_info()
1199 acpi_processor_get_throttling_states(pr) || in acpi_processor_get_throttling_info()
1200 acpi_processor_get_platform_limit(pr)) in acpi_processor_get_throttling_info()
1202 pr->throttling.acpi_processor_get_throttling = in acpi_processor_get_throttling_info()
1204 pr->throttling.acpi_processor_set_throttling = in acpi_processor_get_throttling_info()
1206 if (acpi_processor_get_fadt_info(pr)) in acpi_processor_get_throttling_info()
1209 pr->throttling.acpi_processor_get_throttling = in acpi_processor_get_throttling_info()
1211 pr->throttling.acpi_processor_set_throttling = in acpi_processor_get_throttling_info()
1219 if (acpi_processor_get_tsd(pr)) { in acpi_processor_get_throttling_info()
1220 pthrottling = &pr->throttling; in acpi_processor_get_throttling_info()
1222 cpumask_set_cpu(pr->id, pthrottling->shared_cpu_map); in acpi_processor_get_throttling_info()
1238 pr->throttling.state_count)); in acpi_processor_get_throttling_info()
1240 pr->flags.throttling = 1; in acpi_processor_get_throttling_info()
1248 result = acpi_processor_get_throttling(pr); in acpi_processor_get_throttling_info()
1252 if (pr->throttling.state) { in acpi_processor_get_throttling_info()
1255 pr->throttling.state)); in acpi_processor_get_throttling_info()
1256 result = acpi_processor_set_throttling(pr, 0, false); in acpi_processor_get_throttling_info()
1263 pr->flags.throttling = 0; in acpi_processor_get_throttling_info()