diff options
| author | Ingo Molnar <mingo@elte.hu> | 2009-09-02 15:42:56 -0400 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2009-09-02 15:42:59 -0400 |
| commit | f76bd108e5031202bb40849306f98c4afebe4ef6 (patch) | |
| tree | 455e14a23642a82513eebd4e4f7d3b76842869cd /drivers/acpi/processor_throttling.c | |
| parent | cd6feeeafddbef6abfe4d90fb26e42fd844d34ed (diff) | |
| parent | eced1dfcfcf6b0a35e925d73916a9d8e36ab5457 (diff) | |
Merge branch 'perfcounters/urgent' into perfcounters/core
Merge reason: We are going to modify a place modified by
perfcounters/urgent.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'drivers/acpi/processor_throttling.c')
| -rw-r--r-- | drivers/acpi/processor_throttling.c | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/drivers/acpi/processor_throttling.c b/drivers/acpi/processor_throttling.c index 227543789ba9..ae39797aab55 100644 --- a/drivers/acpi/processor_throttling.c +++ b/drivers/acpi/processor_throttling.c | |||
| @@ -62,7 +62,8 @@ struct throttling_tstate { | |||
| 62 | #define THROTTLING_POSTCHANGE (2) | 62 | #define THROTTLING_POSTCHANGE (2) |
| 63 | 63 | ||
| 64 | static int acpi_processor_get_throttling(struct acpi_processor *pr); | 64 | static int acpi_processor_get_throttling(struct acpi_processor *pr); |
| 65 | int acpi_processor_set_throttling(struct acpi_processor *pr, int state); | 65 | int acpi_processor_set_throttling(struct acpi_processor *pr, |
| 66 | int state, bool force); | ||
| 66 | 67 | ||
| 67 | static int acpi_processor_update_tsd_coord(void) | 68 | static int acpi_processor_update_tsd_coord(void) |
| 68 | { | 69 | { |
| @@ -361,7 +362,7 @@ int acpi_processor_tstate_has_changed(struct acpi_processor *pr) | |||
| 361 | */ | 362 | */ |
| 362 | target_state = throttling_limit; | 363 | target_state = throttling_limit; |
| 363 | } | 364 | } |
| 364 | return acpi_processor_set_throttling(pr, target_state); | 365 | return acpi_processor_set_throttling(pr, target_state, false); |
| 365 | } | 366 | } |
| 366 | 367 | ||
| 367 | /* | 368 | /* |
| @@ -839,10 +840,10 @@ static int acpi_processor_get_throttling_ptc(struct acpi_processor *pr) | |||
| 839 | if (ret >= 0) { | 840 | if (ret >= 0) { |
| 840 | state = acpi_get_throttling_state(pr, value); | 841 | state = acpi_get_throttling_state(pr, value); |
| 841 | if (state == -1) { | 842 | if (state == -1) { |
| 842 | ACPI_WARNING((AE_INFO, | 843 | ACPI_DEBUG_PRINT((ACPI_DB_INFO, |
| 843 | "Invalid throttling state, reset")); | 844 | "Invalid throttling state, reset\n")); |
| 844 | state = 0; | 845 | state = 0; |
| 845 | ret = acpi_processor_set_throttling(pr, state); | 846 | ret = acpi_processor_set_throttling(pr, state, true); |
| 846 | if (ret) | 847 | if (ret) |
| 847 | return ret; | 848 | return ret; |
| 848 | } | 849 | } |
| @@ -915,7 +916,7 @@ static int acpi_processor_get_fadt_info(struct acpi_processor *pr) | |||
| 915 | } | 916 | } |
| 916 | 917 | ||
| 917 | static int acpi_processor_set_throttling_fadt(struct acpi_processor *pr, | 918 | static int acpi_processor_set_throttling_fadt(struct acpi_processor *pr, |
| 918 | int state) | 919 | int state, bool force) |
| 919 | { | 920 | { |
| 920 | u32 value = 0; | 921 | u32 value = 0; |
| 921 | u32 duty_mask = 0; | 922 | u32 duty_mask = 0; |
| @@ -930,7 +931,7 @@ static int acpi_processor_set_throttling_fadt(struct acpi_processor *pr, | |||
| 930 | if (!pr->flags.throttling) | 931 | if (!pr->flags.throttling) |
| 931 | return -ENODEV; | 932 | return -ENODEV; |
| 932 | 933 | ||
| 933 | if (state == pr->throttling.state) | 934 | if (!force && (state == pr->throttling.state)) |
| 934 | return 0; | 935 | return 0; |
| 935 | 936 | ||
| 936 | if (state < pr->throttling_platform_limit) | 937 | if (state < pr->throttling_platform_limit) |
| @@ -988,7 +989,7 @@ static int acpi_processor_set_throttling_fadt(struct acpi_processor *pr, | |||
| 988 | } | 989 | } |
| 989 | 990 | ||
| 990 | static int acpi_processor_set_throttling_ptc(struct acpi_processor *pr, | 991 | static int acpi_processor_set_throttling_ptc(struct acpi_processor *pr, |
| 991 | int state) | 992 | int state, bool force) |
| 992 | { | 993 | { |
| 993 | int ret; | 994 | int ret; |
| 994 | acpi_integer value; | 995 | acpi_integer value; |
| @@ -1002,7 +1003,7 @@ static int acpi_processor_set_throttling_ptc(struct acpi_processor *pr, | |||
| 1002 | if (!pr->flags.throttling) | 1003 | if (!pr->flags.throttling) |
| 1003 | return -ENODEV; | 1004 | return -ENODEV; |
| 1004 | 1005 | ||
| 1005 | if (state == pr->throttling.state) | 1006 | if (!force && (state == pr->throttling.state)) |
| 1006 | return 0; | 1007 | return 0; |
| 1007 | 1008 | ||
| 1008 | if (state < pr->throttling_platform_limit) | 1009 | if (state < pr->throttling_platform_limit) |
| @@ -1018,7 +1019,8 @@ static int acpi_processor_set_throttling_ptc(struct acpi_processor *pr, | |||
| 1018 | return 0; | 1019 | return 0; |
| 1019 | } | 1020 | } |
| 1020 | 1021 | ||
| 1021 | int acpi_processor_set_throttling(struct acpi_processor *pr, int state) | 1022 | int acpi_processor_set_throttling(struct acpi_processor *pr, |
| 1023 | int state, bool force) | ||
| 1022 | { | 1024 | { |
| 1023 | cpumask_var_t saved_mask; | 1025 | cpumask_var_t saved_mask; |
| 1024 | int ret = 0; | 1026 | int ret = 0; |
| @@ -1070,7 +1072,7 @@ int acpi_processor_set_throttling(struct acpi_processor *pr, int state) | |||
| 1070 | /* FIXME: use work_on_cpu() */ | 1072 | /* FIXME: use work_on_cpu() */ |
| 1071 | set_cpus_allowed_ptr(current, cpumask_of(pr->id)); | 1073 | set_cpus_allowed_ptr(current, cpumask_of(pr->id)); |
| 1072 | ret = p_throttling->acpi_processor_set_throttling(pr, | 1074 | ret = p_throttling->acpi_processor_set_throttling(pr, |
| 1073 | t_state.target_state); | 1075 | t_state.target_state, force); |
| 1074 | } else { | 1076 | } else { |
| 1075 | /* | 1077 | /* |
| 1076 | * When the T-state coordination is SW_ALL or HW_ALL, | 1078 | * When the T-state coordination is SW_ALL or HW_ALL, |
| @@ -1103,7 +1105,7 @@ int acpi_processor_set_throttling(struct acpi_processor *pr, int state) | |||
| 1103 | set_cpus_allowed_ptr(current, cpumask_of(i)); | 1105 | set_cpus_allowed_ptr(current, cpumask_of(i)); |
| 1104 | ret = match_pr->throttling. | 1106 | ret = match_pr->throttling. |
| 1105 | acpi_processor_set_throttling( | 1107 | acpi_processor_set_throttling( |
| 1106 | match_pr, t_state.target_state); | 1108 | match_pr, t_state.target_state, force); |
| 1107 | } | 1109 | } |
| 1108 | } | 1110 | } |
| 1109 | /* | 1111 | /* |
| @@ -1201,7 +1203,7 @@ int acpi_processor_get_throttling_info(struct acpi_processor *pr) | |||
| 1201 | ACPI_DEBUG_PRINT((ACPI_DB_INFO, | 1203 | ACPI_DEBUG_PRINT((ACPI_DB_INFO, |
| 1202 | "Disabling throttling (was T%d)\n", | 1204 | "Disabling throttling (was T%d)\n", |
| 1203 | pr->throttling.state)); | 1205 | pr->throttling.state)); |
| 1204 | result = acpi_processor_set_throttling(pr, 0); | 1206 | result = acpi_processor_set_throttling(pr, 0, false); |
| 1205 | if (result) | 1207 | if (result) |
| 1206 | goto end; | 1208 | goto end; |
| 1207 | } | 1209 | } |
| @@ -1307,7 +1309,7 @@ static ssize_t acpi_processor_write_throttling(struct file *file, | |||
| 1307 | if (strcmp(tmpbuf, charp) != 0) | 1309 | if (strcmp(tmpbuf, charp) != 0) |
| 1308 | return -EINVAL; | 1310 | return -EINVAL; |
| 1309 | 1311 | ||
| 1310 | result = acpi_processor_set_throttling(pr, state_val); | 1312 | result = acpi_processor_set_throttling(pr, state_val, false); |
| 1311 | if (result) | 1313 | if (result) |
| 1312 | return result; | 1314 | return result; |
| 1313 | 1315 | ||
