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

Commit 7734e3ac authored by Yuxuan Shui's avatar Yuxuan Shui Committed by Zhang Rui
Browse files

intel_powerclamp: Fix cstate counter detection.



Having all zero cstate count doesn't necesserily mean the cstate
counter is no functional.

Signed-off-by: default avatarYuxuan Shui <yshuiv7@gmail.com>
Signed-off-by: default avatarZhang Rui <rui.zhang@intel.com>
parent a116776f
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -206,6 +206,15 @@ static void find_target_mwait(void)

}

static bool has_pkg_state_counter(void)
{
	u64 tmp;
	return !rdmsrl_safe(MSR_PKG_C2_RESIDENCY, &tmp) ||
	       !rdmsrl_safe(MSR_PKG_C3_RESIDENCY, &tmp) ||
	       !rdmsrl_safe(MSR_PKG_C6_RESIDENCY, &tmp) ||
	       !rdmsrl_safe(MSR_PKG_C7_RESIDENCY, &tmp);
}

static u64 pkg_state_counter(void)
{
	u64 val;
@@ -500,7 +509,7 @@ static int start_power_clamp(void)
	struct task_struct *thread;

	/* check if pkg cstate counter is completely 0, abort in this case */
	if (!pkg_state_counter()) {
	if (!has_pkg_state_counter()) {
		pr_err("pkg cstate counter not functional, abort\n");
		return -EINVAL;
	}