Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

cpufreq: intel_pstate: Avoid division by 0 in min_perf_pct_min()



Commit c5a2ee7d (cpufreq: intel_pstate: Active mode P-state
limits rework) incorrectly assumed that pstate.turbo_pstate would
always be nonzero for CPU0 in min_perf_pct_min() if
cpufreq_register_driver() had succeeded which may not be the case
in virtualized environments.

If that assumption doesn't hold, it leads to an early crash on boot
in intel_pstate_register_driver(), so add a sanity check to
min_perf_pct_min() to prevent the crash from happening.

Fixes: c5a2ee7d (cpufreq: intel_pstate: Active mode P-state limits rework)
Reported-and-tested-by: default avatarJongman Heo <jongman.heo@samsung.com>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent 33fc30b4
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -571,9 +571,10 @@ static inline void update_turbo_state(void)
static int min_perf_pct_min(void)
{
	struct cpudata *cpu = all_cpu_data[0];
	int turbo_pstate = cpu->pstate.turbo_pstate;

	return DIV_ROUND_UP(cpu->pstate.min_pstate * 100,
			    cpu->pstate.turbo_pstate);
	return turbo_pstate ?
		DIV_ROUND_UP(cpu->pstate.min_pstate * 100, turbo_pstate) : 0;
}

static s16 intel_pstate_get_epb(struct cpudata *cpu_data)