Commit 0654acd8 authored by Dawei Li's avatar Dawei Li Committed by Rafael J. Wysocki
Browse files

powercap: DTPM: Avoid explicit cpumask allocation on stack



In general it's preferable to avoid placing cpumasks on the stack, as
for large values of NR_CPUS these can consume significant amounts of
stack space and make stack overflows more likely.

Use cpumask_weight_and() to avoid the need for a temporary cpumask on
the stack.

Signed-off-by: default avatarDawei Li <dawei.li@shingroup.cn>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent 0bbac3fa
Loading
Loading
Loading
Loading
+2 −6
Original line number Diff line number Diff line
@@ -43,13 +43,11 @@ static u64 set_pd_power_limit(struct dtpm *dtpm, u64 power_limit)
	struct dtpm_cpu *dtpm_cpu = to_dtpm_cpu(dtpm);
	struct em_perf_domain *pd = em_cpu_get(dtpm_cpu->cpu);
	struct em_perf_state *table;
	struct cpumask cpus;
	unsigned long freq;
	u64 power;
	int i, nr_cpus;

	cpumask_and(&cpus, cpu_online_mask, to_cpumask(pd->cpus));
	nr_cpus = cpumask_weight(&cpus);
	nr_cpus = cpumask_weight_and(cpu_online_mask, to_cpumask(pd->cpus));

	rcu_read_lock();
	table = em_perf_state_from_pd(pd);
@@ -123,11 +121,9 @@ static int update_pd_power_uw(struct dtpm *dtpm)
	struct dtpm_cpu *dtpm_cpu = to_dtpm_cpu(dtpm);
	struct em_perf_domain *em = em_cpu_get(dtpm_cpu->cpu);
	struct em_perf_state *table;
	struct cpumask cpus;
	int nr_cpus;

	cpumask_and(&cpus, cpu_online_mask, to_cpumask(em->cpus));
	nr_cpus = cpumask_weight(&cpus);
	nr_cpus = cpumask_weight_and(cpu_online_mask, to_cpumask(em->cpus));

	rcu_read_lock();
	table = em_perf_state_from_pd(em);