Commit e82b7457 authored by Rafael J. Wysocki's avatar Rafael J. Wysocki
Browse files

Merge branch 'pm-cpufreq'

* pm-cpufreq:
  ACPI: processor: Add QoS requests for all CPUs
parents 767d2d71 a1bb46c3
Loading
Loading
Loading
Loading
+21 −13
Original line number Diff line number Diff line
@@ -159,27 +159,35 @@ void acpi_processor_ignore_ppc_init(void)

void acpi_processor_ppc_init(struct cpufreq_policy *policy)
{
	int cpu = policy->cpu;
	unsigned int cpu;

	for_each_cpu(cpu, policy->related_cpus) {
		struct acpi_processor *pr = per_cpu(processors, cpu);
		int ret;

		if (!pr)
		return;
			continue;

	ret = freq_qos_add_request(&policy->constraints, &pr->perflib_req,
		ret = freq_qos_add_request(&policy->constraints,
					   &pr->perflib_req,
					   FREQ_QOS_MAX, INT_MAX);
		if (ret < 0)
		pr_err("Failed to add freq constraint for CPU%d (%d)\n", cpu,
		       ret);
			pr_err("Failed to add freq constraint for CPU%d (%d)\n",
			       cpu, ret);
	}
}

void acpi_processor_ppc_exit(struct cpufreq_policy *policy)
{
	struct acpi_processor *pr = per_cpu(processors, policy->cpu);
	unsigned int cpu;

	for_each_cpu(cpu, policy->related_cpus) {
		struct acpi_processor *pr = per_cpu(processors, cpu);

		if (pr)
			freq_qos_remove_request(&pr->perflib_req);
	}
}

static int acpi_processor_get_performance_control(struct acpi_processor *pr)
{
+21 −13
Original line number Diff line number Diff line
@@ -127,27 +127,35 @@ static int cpufreq_set_cur_state(unsigned int cpu, int state)

void acpi_thermal_cpufreq_init(struct cpufreq_policy *policy)
{
	int cpu = policy->cpu;
	unsigned int cpu;

	for_each_cpu(cpu, policy->related_cpus) {
		struct acpi_processor *pr = per_cpu(processors, cpu);
		int ret;

		if (!pr)
		return;
			continue;

	ret = freq_qos_add_request(&policy->constraints, &pr->thermal_req,
		ret = freq_qos_add_request(&policy->constraints,
					   &pr->thermal_req,
					   FREQ_QOS_MAX, INT_MAX);
		if (ret < 0)
		pr_err("Failed to add freq constraint for CPU%d (%d)\n", cpu,
		       ret);
			pr_err("Failed to add freq constraint for CPU%d (%d)\n",
			       cpu, ret);
	}
}

void acpi_thermal_cpufreq_exit(struct cpufreq_policy *policy)
{
	unsigned int cpu;

	for_each_cpu(cpu, policy->related_cpus) {
		struct acpi_processor *pr = per_cpu(processors, policy->cpu);

		if (pr)
			freq_qos_remove_request(&pr->thermal_req);
	}
}
#else				/* ! CONFIG_CPU_FREQ */
static int cpufreq_get_max_state(unsigned int cpu)
{