From: Lukasz Luba <lukasz.luba@arm.com> To: linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org, steev@kali.org, lukasz.luba@arm.com, sudeep.holla@arm.com, will@kernel.org, catalin.marinas@arm.com, linux@armlinux.org.uk, gregkh@linuxfoundation.org, rafael@kernel.org, viresh.kumar@linaro.org, amitk@kernel.org, daniel.lezcano@linaro.org, amit.kachhap@gmail.com, thara.gopinath@linaro.org, bjorn.andersson@linaro.org, agross@kernel.org Subject: [PATCH v4 3/5] cpufreq: qcom-cpufreq-hw: Update offline CPUs per-cpu thermal pressure Date: Tue, 9 Nov 2021 19:57:12 +0000 [thread overview] Message-ID: <20211109195714.7750-4-lukasz.luba@arm.com> (raw) In-Reply-To: <20211109195714.7750-1-lukasz.luba@arm.com> The thermal pressure signal gives information to the scheduler about reduced CPU capacity due to thermal. It is based on a value stored in a per-cpu 'thermal_pressure' variable. The online CPUs will get the new value there, while the offline won't. Unfortunately, when the CPU is back online, the value read from per-cpu variable might be wrong (stale data). This might affect the scheduler decisions, since it sees the CPU capacity differently than what is actually available. Fix it by making sure that all online+offline CPUs would get the proper value in their per-cpu variable when there is throttling or throttling is removed. Fixes: 275157b367f479 ("cpufreq: qcom-cpufreq-hw: Add dcvs interrupt support") Reviewed-by: Thara Gopinath <thara.gopinath@linaro.org> Signed-off-by: Lukasz Luba <lukasz.luba@arm.com> --- drivers/cpufreq/qcom-cpufreq-hw.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/cpufreq/qcom-cpufreq-hw.c b/drivers/cpufreq/qcom-cpufreq-hw.c index a2be0df7e174..0138b2ec406d 100644 --- a/drivers/cpufreq/qcom-cpufreq-hw.c +++ b/drivers/cpufreq/qcom-cpufreq-hw.c @@ -304,7 +304,8 @@ static void qcom_lmh_dcvs_notify(struct qcom_cpufreq_data *data) if (capacity > max_capacity) capacity = max_capacity; - arch_set_thermal_pressure(policy->cpus, max_capacity - capacity); + arch_set_thermal_pressure(policy->related_cpus, + max_capacity - capacity); /* * In the unlikely case policy is unregistered do not enable -- 2.17.1
WARNING: multiple messages have this Message-ID (diff)
From: Lukasz Luba <lukasz.luba@arm.com> To: linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org, steev@kali.org, lukasz.luba@arm.com, sudeep.holla@arm.com, will@kernel.org, catalin.marinas@arm.com, linux@armlinux.org.uk, gregkh@linuxfoundation.org, rafael@kernel.org, viresh.kumar@linaro.org, amitk@kernel.org, daniel.lezcano@linaro.org, amit.kachhap@gmail.com, thara.gopinath@linaro.org, bjorn.andersson@linaro.org, agross@kernel.org Subject: [PATCH v4 3/5] cpufreq: qcom-cpufreq-hw: Update offline CPUs per-cpu thermal pressure Date: Tue, 9 Nov 2021 19:57:12 +0000 [thread overview] Message-ID: <20211109195714.7750-4-lukasz.luba@arm.com> (raw) In-Reply-To: <20211109195714.7750-1-lukasz.luba@arm.com> The thermal pressure signal gives information to the scheduler about reduced CPU capacity due to thermal. It is based on a value stored in a per-cpu 'thermal_pressure' variable. The online CPUs will get the new value there, while the offline won't. Unfortunately, when the CPU is back online, the value read from per-cpu variable might be wrong (stale data). This might affect the scheduler decisions, since it sees the CPU capacity differently than what is actually available. Fix it by making sure that all online+offline CPUs would get the proper value in their per-cpu variable when there is throttling or throttling is removed. Fixes: 275157b367f479 ("cpufreq: qcom-cpufreq-hw: Add dcvs interrupt support") Reviewed-by: Thara Gopinath <thara.gopinath@linaro.org> Signed-off-by: Lukasz Luba <lukasz.luba@arm.com> --- drivers/cpufreq/qcom-cpufreq-hw.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/cpufreq/qcom-cpufreq-hw.c b/drivers/cpufreq/qcom-cpufreq-hw.c index a2be0df7e174..0138b2ec406d 100644 --- a/drivers/cpufreq/qcom-cpufreq-hw.c +++ b/drivers/cpufreq/qcom-cpufreq-hw.c @@ -304,7 +304,8 @@ static void qcom_lmh_dcvs_notify(struct qcom_cpufreq_data *data) if (capacity > max_capacity) capacity = max_capacity; - arch_set_thermal_pressure(policy->cpus, max_capacity - capacity); + arch_set_thermal_pressure(policy->related_cpus, + max_capacity - capacity); /* * In the unlikely case policy is unregistered do not enable -- 2.17.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2021-11-09 19:57 UTC|newest] Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-11-09 19:57 [PATCH v4 0/5] Refactor thermal pressure update to avoid code duplication Lukasz Luba 2021-11-09 19:57 ` Lukasz Luba 2021-11-09 19:57 ` [PATCH v4 1/5] arch_topology: Introduce thermal pressure update function Lukasz Luba 2021-11-09 19:57 ` Lukasz Luba 2021-11-16 23:39 ` Thara Gopinath 2021-11-16 23:39 ` Thara Gopinath 2021-11-23 9:09 ` Lukasz Luba 2021-11-23 9:09 ` Lukasz Luba 2021-11-09 19:57 ` [PATCH v4 2/5] thermal: cpufreq_cooling: Use new " Lukasz Luba 2021-11-09 19:57 ` Lukasz Luba 2021-11-09 19:57 ` Lukasz Luba [this message] 2021-11-09 19:57 ` [PATCH v4 3/5] cpufreq: qcom-cpufreq-hw: Update offline CPUs per-cpu thermal pressure Lukasz Luba 2021-11-09 19:57 ` [PATCH v4 4/5] cpufreq: qcom-cpufreq-hw: Use new thermal pressure update function Lukasz Luba 2021-11-09 19:57 ` Lukasz Luba 2021-11-15 20:57 ` Thara Gopinath 2021-11-15 20:57 ` Thara Gopinath 2021-11-15 23:39 ` Thara Gopinath 2021-11-15 23:39 ` Thara Gopinath 2021-11-16 8:28 ` Lukasz Luba 2021-11-16 8:28 ` Lukasz Luba 2021-11-16 8:30 ` Lukasz Luba 2021-11-16 8:30 ` Lukasz Luba 2021-11-09 19:57 ` [PATCH v4 5/5] arch_topology: Remove unused topology_set_thermal_pressure() and related Lukasz Luba 2021-11-09 19:57 ` Lukasz Luba 2021-11-11 3:15 ` [PATCH v4 0/5] Refactor thermal pressure update to avoid code duplication Viresh Kumar 2021-11-11 3:15 ` Viresh Kumar 2021-11-23 9:11 ` Lukasz Luba 2021-11-23 9:11 ` Lukasz Luba 2021-11-23 9:45 ` Viresh Kumar 2021-11-23 9:45 ` Viresh Kumar 2021-11-23 9:46 ` Lukasz Luba 2021-11-23 9:46 ` Lukasz Luba
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20211109195714.7750-4-lukasz.luba@arm.com \ --to=lukasz.luba@arm.com \ --cc=agross@kernel.org \ --cc=amit.kachhap@gmail.com \ --cc=amitk@kernel.org \ --cc=bjorn.andersson@linaro.org \ --cc=catalin.marinas@arm.com \ --cc=daniel.lezcano@linaro.org \ --cc=gregkh@linuxfoundation.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-arm-msm@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-pm@vger.kernel.org \ --cc=linux@armlinux.org.uk \ --cc=rafael@kernel.org \ --cc=steev@kali.org \ --cc=sudeep.holla@arm.com \ --cc=thara.gopinath@linaro.org \ --cc=viresh.kumar@linaro.org \ --cc=will@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.