Lines Matching refs:pr
60 struct acpi_processor *pr; member
68 static int acpi_processor_get_throttling(struct acpi_processor *pr);
69 int acpi_processor_set_throttling(struct acpi_processor *pr,
78 struct acpi_processor *pr, *match_pr; in acpi_processor_update_tsd_coord() local
90 pr = per_cpu(processors, i); in acpi_processor_update_tsd_coord()
91 if (!pr) in acpi_processor_update_tsd_coord()
95 pthrottling = &(pr->throttling); in acpi_processor_update_tsd_coord()
111 pr = per_cpu(processors, i); in acpi_processor_update_tsd_coord()
112 if (!pr) in acpi_processor_update_tsd_coord()
117 pthrottling = &pr->throttling; in acpi_processor_update_tsd_coord()
192 pr = per_cpu(processors, i); in acpi_processor_update_tsd_coord()
193 if (!pr) in acpi_processor_update_tsd_coord()
201 pthrottling = &(pr->throttling); in acpi_processor_update_tsd_coord()
228 struct acpi_processor *pr; in acpi_processor_throttling_notifier() local
235 pr = per_cpu(processors, cpu); in acpi_processor_throttling_notifier()
236 if (!pr) { in acpi_processor_throttling_notifier()
240 if (!pr->flags.throttling) { in acpi_processor_throttling_notifier()
246 p_throttling = &(pr->throttling); in acpi_processor_throttling_notifier()
253 p_limit = &pr->limit; in acpi_processor_throttling_notifier()
258 if (pr->throttling_platform_limit > target_state) in acpi_processor_throttling_notifier()
259 target_state = pr->throttling_platform_limit; in acpi_processor_throttling_notifier()
292 static int acpi_processor_get_platform_limit(struct acpi_processor *pr) in acpi_processor_get_platform_limit() argument
297 if (!pr) in acpi_processor_get_platform_limit()
303 status = acpi_evaluate_integer(pr->handle, "_TPC", NULL, &tpc); in acpi_processor_get_platform_limit()
312 pr->throttling_platform_limit = (int)tpc; in acpi_processor_get_platform_limit()
316 int acpi_processor_tstate_has_changed(struct acpi_processor *pr) in acpi_processor_tstate_has_changed() argument
327 result = acpi_processor_get_platform_limit(pr); in acpi_processor_tstate_has_changed()
333 throttling_limit = pr->throttling_platform_limit; in acpi_processor_tstate_has_changed()
334 if (throttling_limit >= pr->throttling.state_count) { in acpi_processor_tstate_has_changed()
339 current_state = pr->throttling.state; in acpi_processor_tstate_has_changed()
348 limit = &pr->limit; in acpi_processor_tstate_has_changed()
369 return acpi_processor_set_throttling(pr, target_state, false); in acpi_processor_tstate_has_changed()
381 void acpi_processor_reevaluate_tstate(struct acpi_processor *pr, in acpi_processor_reevaluate_tstate() argument
390 pr->flags.throttling = 0; in acpi_processor_reevaluate_tstate()
396 if (!pr->throttling.state_count) { in acpi_processor_reevaluate_tstate()
400 pr->flags.throttling = 0; in acpi_processor_reevaluate_tstate()
403 pr->flags.throttling = 1; in acpi_processor_reevaluate_tstate()
410 result = acpi_processor_get_throttling(pr); in acpi_processor_reevaluate_tstate()
414 if (pr->throttling.state) { in acpi_processor_reevaluate_tstate()
415 result = acpi_processor_set_throttling(pr, 0, false); in acpi_processor_reevaluate_tstate()
422 pr->flags.throttling = 0; in acpi_processor_reevaluate_tstate()
427 static int acpi_processor_get_throttling_control(struct acpi_processor *pr) in acpi_processor_get_throttling_control() argument
436 status = acpi_evaluate_object(pr->handle, "_PTC", NULL, &buffer); in acpi_processor_get_throttling_control()
466 memcpy(&pr->throttling.control_register, obj.buffer.pointer, in acpi_processor_get_throttling_control()
483 memcpy(&pr->throttling.status_register, obj.buffer.pointer, in acpi_processor_get_throttling_control()
486 throttling = &pr->throttling; in acpi_processor_get_throttling_control()
511 static int acpi_processor_get_throttling_states(struct acpi_processor *pr) in acpi_processor_get_throttling_states() argument
521 status = acpi_evaluate_object(pr->handle, "_TSS", NULL, &buffer); in acpi_processor_get_throttling_states()
539 pr->throttling.state_count = tss->package.count; in acpi_processor_get_throttling_states()
540 pr->throttling.states_tss = in acpi_processor_get_throttling_states()
543 if (!pr->throttling.states_tss) { in acpi_processor_get_throttling_states()
548 for (i = 0; i < pr->throttling.state_count; i++) { in acpi_processor_get_throttling_states()
551 (struct acpi_processor_tx_tss *)&(pr->throttling. in acpi_processor_get_throttling_states()
564 kfree(pr->throttling.states_tss); in acpi_processor_get_throttling_states()
572 kfree(pr->throttling.states_tss); in acpi_processor_get_throttling_states()
586 static int acpi_processor_get_tsd(struct acpi_processor *pr) in acpi_processor_get_tsd() argument
597 pthrottling = &pr->throttling; in acpi_processor_get_tsd()
600 status = acpi_evaluate_object(pr->handle, "_TSD", NULL, &buffer); in acpi_processor_get_tsd()
621 pdomain = &(pr->throttling.domain_info); in acpi_processor_get_tsd()
646 pthrottling = &pr->throttling; in acpi_processor_get_tsd()
649 cpumask_set_cpu(pr->id, pthrottling->shared_cpu_map); in acpi_processor_get_tsd()
670 static int acpi_processor_get_throttling_fadt(struct acpi_processor *pr) in acpi_processor_get_throttling_fadt() argument
677 if (!pr) in acpi_processor_get_throttling_fadt()
680 if (!pr->flags.throttling) in acpi_processor_get_throttling_fadt()
683 pr->throttling.state = 0; in acpi_processor_get_throttling_fadt()
685 duty_mask = pr->throttling.state_count - 1; in acpi_processor_get_throttling_fadt()
687 duty_mask <<= pr->throttling.duty_offset; in acpi_processor_get_throttling_fadt()
691 value = inl(pr->throttling.address); in acpi_processor_get_throttling_fadt()
699 duty_value >>= pr->throttling.duty_offset; in acpi_processor_get_throttling_fadt()
702 state = pr->throttling.state_count - duty_value; in acpi_processor_get_throttling_fadt()
705 pr->throttling.state = state; in acpi_processor_get_throttling_fadt()
711 state, pr->throttling.states[state].performance)); in acpi_processor_get_throttling_fadt()
772 static int acpi_read_throttling_status(struct acpi_processor *pr, in acpi_read_throttling_status() argument
781 throttling = &pr->throttling; in acpi_read_throttling_status()
804 static int acpi_write_throttling_state(struct acpi_processor *pr, in acpi_write_throttling_state() argument
813 throttling = &pr->throttling; in acpi_write_throttling_state()
837 static int acpi_get_throttling_state(struct acpi_processor *pr, in acpi_get_throttling_state() argument
842 for (i = 0; i < pr->throttling.state_count; i++) { in acpi_get_throttling_state()
844 (struct acpi_processor_tx_tss *)&(pr->throttling. in acpi_get_throttling_state()
852 static int acpi_get_throttling_value(struct acpi_processor *pr, in acpi_get_throttling_value() argument
857 if (state >= 0 && state <= pr->throttling.state_count) { in acpi_get_throttling_value()
859 (struct acpi_processor_tx_tss *)&(pr->throttling. in acpi_get_throttling_value()
867 static int acpi_processor_get_throttling_ptc(struct acpi_processor *pr) in acpi_processor_get_throttling_ptc() argument
873 if (!pr) in acpi_processor_get_throttling_ptc()
876 if (!pr->flags.throttling) in acpi_processor_get_throttling_ptc()
879 pr->throttling.state = 0; in acpi_processor_get_throttling_ptc()
882 ret = acpi_read_throttling_status(pr, &value); in acpi_processor_get_throttling_ptc()
884 state = acpi_get_throttling_state(pr, value); in acpi_processor_get_throttling_ptc()
889 ret = acpi_processor_set_throttling(pr, state, true); in acpi_processor_get_throttling_ptc()
893 pr->throttling.state = state; in acpi_processor_get_throttling_ptc()
899 static int acpi_processor_get_throttling(struct acpi_processor *pr) in acpi_processor_get_throttling() argument
904 if (!pr) in acpi_processor_get_throttling()
907 if (!pr->flags.throttling) in acpi_processor_get_throttling()
918 if (set_cpus_allowed_ptr(current, cpumask_of(pr->id))) { in acpi_processor_get_throttling()
923 ret = pr->throttling.acpi_processor_get_throttling(pr); in acpi_processor_get_throttling()
931 static int acpi_processor_get_fadt_info(struct acpi_processor *pr) in acpi_processor_get_fadt_info() argument
935 if (!pr->throttling.address) { in acpi_processor_get_fadt_info()
938 } else if (!pr->throttling.duty_width) { in acpi_processor_get_fadt_info()
943 else if ((pr->throttling.duty_offset + pr->throttling.duty_width) > 4) { in acpi_processor_get_fadt_info()
948 pr->throttling.state_count = 1 << acpi_gbl_FADT.duty_width; in acpi_processor_get_fadt_info()
956 step = (1000 / pr->throttling.state_count); in acpi_processor_get_fadt_info()
958 for (i = 0; i < pr->throttling.state_count; i++) { in acpi_processor_get_fadt_info()
959 pr->throttling.states[i].performance = 1000 - step * i; in acpi_processor_get_fadt_info()
960 pr->throttling.states[i].power = 1000 - step * i; in acpi_processor_get_fadt_info()
965 static int acpi_processor_set_throttling_fadt(struct acpi_processor *pr, in acpi_processor_set_throttling_fadt() argument
972 if (!pr) in acpi_processor_set_throttling_fadt()
975 if ((state < 0) || (state > (pr->throttling.state_count - 1))) in acpi_processor_set_throttling_fadt()
978 if (!pr->flags.throttling) in acpi_processor_set_throttling_fadt()
981 if (!force && (state == pr->throttling.state)) in acpi_processor_set_throttling_fadt()
984 if (state < pr->throttling_platform_limit) in acpi_processor_set_throttling_fadt()
990 duty_value = pr->throttling.state_count - state; in acpi_processor_set_throttling_fadt()
992 duty_value <<= pr->throttling.duty_offset; in acpi_processor_set_throttling_fadt()
995 duty_mask = pr->throttling.state_count - 1; in acpi_processor_set_throttling_fadt()
1007 value = inl(pr->throttling.address); in acpi_processor_set_throttling_fadt()
1010 outl(value, pr->throttling.address); in acpi_processor_set_throttling_fadt()
1020 outl(value, pr->throttling.address); in acpi_processor_set_throttling_fadt()
1023 outl(value, pr->throttling.address); in acpi_processor_set_throttling_fadt()
1026 pr->throttling.state = state; in acpi_processor_set_throttling_fadt()
1032 (pr->throttling.states[state].performance ? pr-> in acpi_processor_set_throttling_fadt()
1038 static int acpi_processor_set_throttling_ptc(struct acpi_processor *pr, in acpi_processor_set_throttling_ptc() argument
1044 if (!pr) in acpi_processor_set_throttling_ptc()
1047 if ((state < 0) || (state > (pr->throttling.state_count - 1))) in acpi_processor_set_throttling_ptc()
1050 if (!pr->flags.throttling) in acpi_processor_set_throttling_ptc()
1053 if (!force && (state == pr->throttling.state)) in acpi_processor_set_throttling_ptc()
1056 if (state < pr->throttling_platform_limit) in acpi_processor_set_throttling_ptc()
1060 ret = acpi_get_throttling_value(pr, state, &value); in acpi_processor_set_throttling_ptc()
1062 acpi_write_throttling_state(pr, value); in acpi_processor_set_throttling_ptc()
1063 pr->throttling.state = state; in acpi_processor_set_throttling_ptc()
1072 struct acpi_processor *pr = arg->pr; in acpi_processor_throttling_fn() local
1074 return pr->throttling.acpi_processor_set_throttling(pr, in acpi_processor_throttling_fn()
1078 int acpi_processor_set_throttling(struct acpi_processor *pr, in acpi_processor_set_throttling() argument
1088 if (!pr) in acpi_processor_set_throttling()
1091 if (!pr->flags.throttling) in acpi_processor_set_throttling()
1094 if ((state < 0) || (state > (pr->throttling.state_count - 1))) in acpi_processor_set_throttling()
1097 if (cpu_is_offline(pr->id)) { in acpi_processor_set_throttling()
1106 p_throttling = &(pr->throttling); in acpi_processor_set_throttling()
1125 arg.pr = pr; in acpi_processor_set_throttling()
1128 ret = work_on_cpu(pr->id, acpi_processor_throttling_fn, &arg); in acpi_processor_set_throttling()
1158 arg.pr = match_pr; in acpi_processor_set_throttling()
1161 ret = work_on_cpu(pr->id, acpi_processor_throttling_fn, in acpi_processor_set_throttling()
1180 int acpi_processor_get_throttling_info(struct acpi_processor *pr) in acpi_processor_get_throttling_info() argument
1187 pr->throttling.address, in acpi_processor_get_throttling_info()
1188 pr->throttling.duty_offset, in acpi_processor_get_throttling_info()
1189 pr->throttling.duty_width)); in acpi_processor_get_throttling_info()
1195 if (acpi_processor_get_throttling_control(pr) || in acpi_processor_get_throttling_info()
1196 acpi_processor_get_throttling_states(pr) || in acpi_processor_get_throttling_info()
1197 acpi_processor_get_platform_limit(pr)) in acpi_processor_get_throttling_info()
1199 pr->throttling.acpi_processor_get_throttling = in acpi_processor_get_throttling_info()
1201 pr->throttling.acpi_processor_set_throttling = in acpi_processor_get_throttling_info()
1203 if (acpi_processor_get_fadt_info(pr)) in acpi_processor_get_throttling_info()
1206 pr->throttling.acpi_processor_get_throttling = in acpi_processor_get_throttling_info()
1208 pr->throttling.acpi_processor_set_throttling = in acpi_processor_get_throttling_info()
1216 if (acpi_processor_get_tsd(pr)) { in acpi_processor_get_throttling_info()
1217 pthrottling = &pr->throttling; in acpi_processor_get_throttling_info()
1219 cpumask_set_cpu(pr->id, pthrottling->shared_cpu_map); in acpi_processor_get_throttling_info()
1235 pr->throttling.state_count)); in acpi_processor_get_throttling_info()
1237 pr->flags.throttling = 1; in acpi_processor_get_throttling_info()
1245 result = acpi_processor_get_throttling(pr); in acpi_processor_get_throttling_info()
1249 if (pr->throttling.state) { in acpi_processor_get_throttling_info()
1252 pr->throttling.state)); in acpi_processor_get_throttling_info()
1253 result = acpi_processor_set_throttling(pr, 0, false); in acpi_processor_get_throttling_info()
1260 pr->flags.throttling = 0; in acpi_processor_get_throttling_info()