Commit 14533a16 authored by Ingo Molnar's avatar Ingo Molnar
Browse files

thermal/cpu-cooling, sched/core: Move the arch_set_thermal_pressure() API to generic scheduler code



drivers/base/arch_topology.c is only built if CONFIG_GENERIC_ARCH_TOPOLOGY=y,
resulting in such build failures:

  cpufreq_cooling.c:(.text+0x1e7): undefined reference to `arch_set_thermal_pressure'

Move it to sched/core.c instead, and keep it enabled on x86 despite
us not having a arch_scale_thermal_pressure() facility there, to
build-test this thing.

Cc: Thara Gopinath <thara.gopinath@linaro.org>
Cc: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
parent d94a9df4
Loading
Loading
Loading
Loading
+0 −11
Original line number Diff line number Diff line
@@ -42,17 +42,6 @@ void topology_set_cpu_scale(unsigned int cpu, unsigned long capacity)
	per_cpu(cpu_scale, cpu) = capacity;
}

DEFINE_PER_CPU(unsigned long, thermal_pressure);

void arch_set_thermal_pressure(struct cpumask *cpus,
			       unsigned long th_pressure)
{
	int cpu;

	for_each_cpu(cpu, cpus)
		WRITE_ONCE(per_cpu(thermal_pressure, cpu), th_pressure);
}

static ssize_t cpu_capacity_show(struct device *dev,
				 struct device_attribute *attr,
				 char *buf)
+11 −0
Original line number Diff line number Diff line
@@ -3576,6 +3576,17 @@ unsigned long long task_sched_runtime(struct task_struct *p)
	return ns;
}

DEFINE_PER_CPU(unsigned long, thermal_pressure);

void arch_set_thermal_pressure(struct cpumask *cpus,
			       unsigned long th_pressure)
{
	int cpu;

	for_each_cpu(cpu, cpus)
		WRITE_ONCE(per_cpu(thermal_pressure, cpu), th_pressure);
}

/*
 * This function gets called by the timer code, with HZ frequency.
 * We call it with interrupts disabled.