Lines Matching refs:pr
56 struct acpi_processor *pr; member
64 static int acpi_processor_get_throttling(struct acpi_processor *pr);
65 int acpi_processor_set_throttling(struct acpi_processor *pr,
74 struct acpi_processor *pr, *match_pr; in acpi_processor_update_tsd_coord() local
86 pr = per_cpu(processors, i); in acpi_processor_update_tsd_coord()
87 if (!pr) in acpi_processor_update_tsd_coord()
91 pthrottling = &(pr->throttling); in acpi_processor_update_tsd_coord()
107 pr = per_cpu(processors, i); in acpi_processor_update_tsd_coord()
108 if (!pr) in acpi_processor_update_tsd_coord()
113 pthrottling = &pr->throttling; in acpi_processor_update_tsd_coord()
188 pr = per_cpu(processors, i); in acpi_processor_update_tsd_coord()
189 if (!pr) in acpi_processor_update_tsd_coord()
197 pthrottling = &(pr->throttling); in acpi_processor_update_tsd_coord()
224 struct acpi_processor *pr; in acpi_processor_throttling_notifier() local
231 pr = per_cpu(processors, cpu); in acpi_processor_throttling_notifier()
232 if (!pr) { in acpi_processor_throttling_notifier()
236 if (!pr->flags.throttling) { in acpi_processor_throttling_notifier()
242 p_throttling = &(pr->throttling); in acpi_processor_throttling_notifier()
249 p_limit = &pr->limit; in acpi_processor_throttling_notifier()
254 if (pr->throttling_platform_limit > target_state) in acpi_processor_throttling_notifier()
255 target_state = pr->throttling_platform_limit; in acpi_processor_throttling_notifier()
288 static int acpi_processor_get_platform_limit(struct acpi_processor *pr) in acpi_processor_get_platform_limit() argument
293 if (!pr) in acpi_processor_get_platform_limit()
299 status = acpi_evaluate_integer(pr->handle, "_TPC", NULL, &tpc); in acpi_processor_get_platform_limit()
308 pr->throttling_platform_limit = (int)tpc; in acpi_processor_get_platform_limit()
312 int acpi_processor_tstate_has_changed(struct acpi_processor *pr) in acpi_processor_tstate_has_changed() argument
323 result = acpi_processor_get_platform_limit(pr); in acpi_processor_tstate_has_changed()
329 throttling_limit = pr->throttling_platform_limit; in acpi_processor_tstate_has_changed()
330 if (throttling_limit >= pr->throttling.state_count) { in acpi_processor_tstate_has_changed()
335 current_state = pr->throttling.state; in acpi_processor_tstate_has_changed()
344 limit = &pr->limit; in acpi_processor_tstate_has_changed()
365 return acpi_processor_set_throttling(pr, target_state, false); in acpi_processor_tstate_has_changed()
377 void acpi_processor_reevaluate_tstate(struct acpi_processor *pr, in acpi_processor_reevaluate_tstate() argument
386 pr->flags.throttling = 0; in acpi_processor_reevaluate_tstate()
392 if (!pr->throttling.state_count) { in acpi_processor_reevaluate_tstate()
396 pr->flags.throttling = 0; in acpi_processor_reevaluate_tstate()
399 pr->flags.throttling = 1; in acpi_processor_reevaluate_tstate()
406 result = acpi_processor_get_throttling(pr); in acpi_processor_reevaluate_tstate()
410 if (pr->throttling.state) { in acpi_processor_reevaluate_tstate()
411 result = acpi_processor_set_throttling(pr, 0, false); in acpi_processor_reevaluate_tstate()
418 pr->flags.throttling = 0; in acpi_processor_reevaluate_tstate()
423 static int acpi_processor_get_throttling_control(struct acpi_processor *pr) in acpi_processor_get_throttling_control() argument
432 status = acpi_evaluate_object(pr->handle, "_PTC", NULL, &buffer); in acpi_processor_get_throttling_control()
462 memcpy(&pr->throttling.control_register, obj.buffer.pointer, in acpi_processor_get_throttling_control()
479 memcpy(&pr->throttling.status_register, obj.buffer.pointer, in acpi_processor_get_throttling_control()
482 throttling = &pr->throttling; in acpi_processor_get_throttling_control()
507 static int acpi_processor_get_throttling_states(struct acpi_processor *pr) in acpi_processor_get_throttling_states() argument
517 status = acpi_evaluate_object(pr->handle, "_TSS", NULL, &buffer); in acpi_processor_get_throttling_states()
535 pr->throttling.state_count = tss->package.count; in acpi_processor_get_throttling_states()
536 pr->throttling.states_tss = in acpi_processor_get_throttling_states()
539 if (!pr->throttling.states_tss) { in acpi_processor_get_throttling_states()
544 for (i = 0; i < pr->throttling.state_count; i++) { in acpi_processor_get_throttling_states()
547 (struct acpi_processor_tx_tss *)&(pr->throttling. in acpi_processor_get_throttling_states()
560 kfree(pr->throttling.states_tss); in acpi_processor_get_throttling_states()
568 kfree(pr->throttling.states_tss); in acpi_processor_get_throttling_states()
582 static int acpi_processor_get_tsd(struct acpi_processor *pr) in acpi_processor_get_tsd() argument
593 pthrottling = &pr->throttling; in acpi_processor_get_tsd()
596 status = acpi_evaluate_object(pr->handle, "_TSD", NULL, &buffer); in acpi_processor_get_tsd()
617 pdomain = &(pr->throttling.domain_info); in acpi_processor_get_tsd()
642 pthrottling = &pr->throttling; in acpi_processor_get_tsd()
645 cpumask_set_cpu(pr->id, pthrottling->shared_cpu_map); in acpi_processor_get_tsd()
666 static int acpi_processor_get_throttling_fadt(struct acpi_processor *pr) in acpi_processor_get_throttling_fadt() argument
673 if (!pr) in acpi_processor_get_throttling_fadt()
676 if (!pr->flags.throttling) in acpi_processor_get_throttling_fadt()
679 pr->throttling.state = 0; in acpi_processor_get_throttling_fadt()
681 duty_mask = pr->throttling.state_count - 1; in acpi_processor_get_throttling_fadt()
683 duty_mask <<= pr->throttling.duty_offset; in acpi_processor_get_throttling_fadt()
687 value = inl(pr->throttling.address); in acpi_processor_get_throttling_fadt()
695 duty_value >>= pr->throttling.duty_offset; in acpi_processor_get_throttling_fadt()
698 state = pr->throttling.state_count - duty_value; in acpi_processor_get_throttling_fadt()
701 pr->throttling.state = state; in acpi_processor_get_throttling_fadt()
707 state, pr->throttling.states[state].performance)); in acpi_processor_get_throttling_fadt()
768 static int acpi_read_throttling_status(struct acpi_processor *pr, in acpi_read_throttling_status() argument
777 throttling = &pr->throttling; in acpi_read_throttling_status()
800 static int acpi_write_throttling_state(struct acpi_processor *pr, in acpi_write_throttling_state() argument
809 throttling = &pr->throttling; in acpi_write_throttling_state()
833 static int acpi_get_throttling_state(struct acpi_processor *pr, in acpi_get_throttling_state() argument
838 for (i = 0; i < pr->throttling.state_count; i++) { in acpi_get_throttling_state()
840 (struct acpi_processor_tx_tss *)&(pr->throttling. in acpi_get_throttling_state()
848 static int acpi_get_throttling_value(struct acpi_processor *pr, in acpi_get_throttling_value() argument
853 if (state >= 0 && state <= pr->throttling.state_count) { in acpi_get_throttling_value()
855 (struct acpi_processor_tx_tss *)&(pr->throttling. in acpi_get_throttling_value()
863 static int acpi_processor_get_throttling_ptc(struct acpi_processor *pr) in acpi_processor_get_throttling_ptc() argument
869 if (!pr) in acpi_processor_get_throttling_ptc()
872 if (!pr->flags.throttling) in acpi_processor_get_throttling_ptc()
875 pr->throttling.state = 0; in acpi_processor_get_throttling_ptc()
878 ret = acpi_read_throttling_status(pr, &value); in acpi_processor_get_throttling_ptc()
880 state = acpi_get_throttling_state(pr, value); in acpi_processor_get_throttling_ptc()
885 ret = acpi_processor_set_throttling(pr, state, true); in acpi_processor_get_throttling_ptc()
889 pr->throttling.state = state; in acpi_processor_get_throttling_ptc()
895 static int acpi_processor_get_throttling(struct acpi_processor *pr) in acpi_processor_get_throttling() argument
900 if (!pr) in acpi_processor_get_throttling()
903 if (!pr->flags.throttling) in acpi_processor_get_throttling()
914 if (set_cpus_allowed_ptr(current, cpumask_of(pr->id))) { in acpi_processor_get_throttling()
919 ret = pr->throttling.acpi_processor_get_throttling(pr); 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 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 = work_on_cpu(pr->id, acpi_processor_throttling_fn, &arg); in acpi_processor_set_throttling()
1154 arg.pr = match_pr; in acpi_processor_set_throttling()
1157 ret = work_on_cpu(pr->id, acpi_processor_throttling_fn, in acpi_processor_set_throttling()
1176 int acpi_processor_get_throttling_info(struct acpi_processor *pr) in acpi_processor_get_throttling_info() argument
1183 pr->throttling.address, in acpi_processor_get_throttling_info()
1184 pr->throttling.duty_offset, in acpi_processor_get_throttling_info()
1185 pr->throttling.duty_width)); in acpi_processor_get_throttling_info()
1191 if (acpi_processor_get_throttling_control(pr) || in acpi_processor_get_throttling_info()
1192 acpi_processor_get_throttling_states(pr) || in acpi_processor_get_throttling_info()
1193 acpi_processor_get_platform_limit(pr)) in acpi_processor_get_throttling_info()
1195 pr->throttling.acpi_processor_get_throttling = in acpi_processor_get_throttling_info()
1197 pr->throttling.acpi_processor_set_throttling = in acpi_processor_get_throttling_info()
1199 if (acpi_processor_get_fadt_info(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()
1212 if (acpi_processor_get_tsd(pr)) { in acpi_processor_get_throttling_info()
1213 pthrottling = &pr->throttling; in acpi_processor_get_throttling_info()
1215 cpumask_set_cpu(pr->id, pthrottling->shared_cpu_map); in acpi_processor_get_throttling_info()
1231 pr->throttling.state_count)); in acpi_processor_get_throttling_info()
1233 pr->flags.throttling = 1; in acpi_processor_get_throttling_info()
1241 result = acpi_processor_get_throttling(pr); in acpi_processor_get_throttling_info()
1245 if (pr->throttling.state) { in acpi_processor_get_throttling_info()
1248 pr->throttling.state)); in acpi_processor_get_throttling_info()
1249 result = acpi_processor_set_throttling(pr, 0, false); in acpi_processor_get_throttling_info()
1256 pr->flags.throttling = 0; in acpi_processor_get_throttling_info()