View | Details | Raw Unified | Return to bug 200759 | Differences between
and this patch

Collapse All | Expand All

(-)a/drivers/acpi/processor_perflib.c (-2 / +14 lines)
Lines 63-68 module_param(ignore_ppc, int, 0644); Link Here
63
MODULE_PARM_DESC(ignore_ppc, "If the frequency of your machine gets wrongly" \
63
MODULE_PARM_DESC(ignore_ppc, "If the frequency of your machine gets wrongly" \
64
		 "limited by BIOS, this should help");
64
		 "limited by BIOS, this should help");
65
65
66
static int broadcast_ppc;
67
module_param(broadcast_ppc, int, 0644);
68
MODULE_PARM_DESC(broadcast_ppc, "Broadcast the ppc to all online CPUs");
69
66
#define PPC_REGISTERED   1
70
#define PPC_REGISTERED   1
67
#define PPC_IN_USE       2
71
#define PPC_IN_USE       2
68
72
Lines 180-187 void acpi_processor_ppc_has_changed(struct acpi_processor *pr, int event_flag) Link Here
180
		else
184
		else
181
			acpi_processor_ppc_ost(pr->handle, 0);
185
			acpi_processor_ppc_ost(pr->handle, 0);
182
	}
186
	}
183
	if (ret >= 0)
187
	if (ret >= 0) {
184
		cpufreq_update_policy(pr->id);
188
		if (broadcast_ppc) {
189
			int cpu;
190
191
			for_each_possible_cpu(cpu)
192
				cpufreq_update_policy(cpu);
193
		} else {
194
			cpufreq_update_policy(pr->id);
195
		}
196
	}
185
}
197
}
186
198
187
int acpi_processor_get_bios_limit(int cpu, unsigned int *limit)
199
int acpi_processor_get_bios_limit(int cpu, unsigned int *limit)
(-)a/drivers/cpufreq/cpufreq.c (+2 lines)
Lines 2241-2246 static int cpufreq_set_policy(struct cpufreq_policy *policy, Link Here
2241
2241
2242
	policy->min = new_policy->min;
2242
	policy->min = new_policy->min;
2243
	policy->max = new_policy->max;
2243
	policy->max = new_policy->max;
2244
	policy->cpuinfo.max_freq = new_policy->cpuinfo.max_freq;
2245
	policy->cpuinfo.min_freq = new_policy->cpuinfo.min_freq;
2244
	trace_cpu_frequency_limits(policy);
2246
	trace_cpu_frequency_limits(policy);
2245
2247
2246
	policy->cached_target_freq = UINT_MAX;
2248
	policy->cached_target_freq = UINT_MAX;
(-)a/drivers/cpufreq/intel_pstate.c (-1 / +14 lines)
Lines 2088-2098 static void intel_pstate_adjust_policy_max(struct cpufreq_policy *policy, Link Here
2088
2088
2089
static int intel_pstate_verify_policy(struct cpufreq_policy *policy)
2089
static int intel_pstate_verify_policy(struct cpufreq_policy *policy)
2090
{
2090
{
2091
	int max_freq;
2091
	struct cpudata *cpu = all_cpu_data[policy->cpu];
2092
	struct cpudata *cpu = all_cpu_data[policy->cpu];
2092
2093
2093
	update_turbo_state();
2094
	update_turbo_state();
2095
	max_freq = intel_pstate_get_max_freq(cpu);
2096
2097
	if (acpi_ppc && policy->max == policy->cpuinfo.max_freq &&
2098
	    max_freq != policy->cpuinfo.max_freq) {
2099
		/*
2100
		 * System was not running under any constraints, but the
2101
		 * current max possible frequency is changed. So reset
2102
		 * policy limits.
2103
		 */
2104
		policy->cpuinfo.max_freq = policy->max = max_freq;
2105
	}
2106
2094
	cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq,
2107
	cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq,
2095
				     intel_pstate_get_max_freq(cpu));
2108
				     max_freq);
2096
2109
2097
	if (policy->policy != CPUFREQ_POLICY_POWERSAVE &&
2110
	if (policy->policy != CPUFREQ_POLICY_POWERSAVE &&
2098
	    policy->policy != CPUFREQ_POLICY_PERFORMANCE)
2111
	    policy->policy != CPUFREQ_POLICY_PERFORMANCE)

Return to bug 200759