Message ID | 20250103074139.1080092-1-zhenglifeng1@huawei.com |
---|---|
State | New |
Headers | show |
Series | cpufreq/amd-pstate: Fix per-policy boost flag incorrect when fail | expand |
On 2025/1/4 0:56, Mario Limonciello wrote: > On 1/3/2025 01:41, Lifeng Zheng wrote: >> Commit c8c68c38b56f ("cpufreq: amd-pstate: initialize core precision >> boost state") sets per-policy boost flag to false when boost fail. >> However, this boost flag will be set to reverse value in >> store_local_boost() and cpufreq_boost_trigger_state() in cpufreq.c. This >> will cause the per-policy boost flag set to true when fail to set boost. >> Remove the extra assignment in amd_pstate_set_boost() and keep all >> operations on per-policy boost flag outside of set_boost() to fix this >> problem. >> >> Fixes: c8c68c38b56f ("cpufreq: amd-pstate: initialize core precision boost state") >> Signed-off-by: Lifeng Zheng <zhenglifeng1@huawei.com> >> --- > > Hi There, > > Thanks for the patch. Unfortunately, it doesn't apply to the current linux-next branch at https://git.kernel.org/pub/scm/linux/kernel/git/superm1/linux.git > > Although the issue you identified is still valid, there have been other contextual changes in the function [1]. Can you rebase on that branch, test it again and send a v2? > > [1] https://git.kernel.org/pub/scm/linux/kernel/git/superm1/linux.git/tree/drivers/cpufreq/amd-pstate.c?h=linux-next#n750 > > Thanks! Thanks, I'll test on this branch and send a v2. > >> drivers/cpufreq/amd-pstate.c | 1 - >> 1 file changed, 1 deletion(-) >> >> diff --git a/drivers/cpufreq/amd-pstate.c b/drivers/cpufreq/amd-pstate.c >> index 66e5dfc711c0..4ce923788f3a 100644 >> --- a/drivers/cpufreq/amd-pstate.c >> +++ b/drivers/cpufreq/amd-pstate.c >> @@ -730,7 +730,6 @@ static int amd_pstate_set_boost(struct cpufreq_policy *policy, int state) >> mutex_lock(&amd_pstate_driver_lock); >> ret = amd_pstate_cpu_boost_update(policy, state); >> WRITE_ONCE(cpudata->boost_state, !ret ? state : false); >> - policy->boost_enabled = !ret ? state : false; >> refresh_frequency_limits(policy); >> mutex_unlock(&amd_pstate_driver_lock); >> >
On 2025/1/8 10:26, Mario Limonciello wrote: > On 1/7/2025 19:31, zhenglifeng (A) wrote: >> On 2025/1/4 0:56, Mario Limonciello wrote: >> >>> On 1/3/2025 01:41, Lifeng Zheng wrote: >>>> Commit c8c68c38b56f ("cpufreq: amd-pstate: initialize core precision >>>> boost state") sets per-policy boost flag to false when boost fail. >>>> However, this boost flag will be set to reverse value in >>>> store_local_boost() and cpufreq_boost_trigger_state() in cpufreq.c. This >>>> will cause the per-policy boost flag set to true when fail to set boost. >>>> Remove the extra assignment in amd_pstate_set_boost() and keep all >>>> operations on per-policy boost flag outside of set_boost() to fix this >>>> problem. >>>> >>>> Fixes: c8c68c38b56f ("cpufreq: amd-pstate: initialize core precision boost state") >>>> Signed-off-by: Lifeng Zheng <zhenglifeng1@huawei.com> >>>> --- >>> >>> Hi There, >>> >>> Thanks for the patch. Unfortunately, it doesn't apply to the current linux-next branch at https://git.kernel.org/pub/scm/linux/kernel/git/superm1/linux.git >> >> Hello Mario, >> >> When I try to build on this branch, I got an error: >> >> arch/x86/kernel/relocate_kernel_64.o: In function `virtual_mapped': >> .../linux/arch/x86/kernel/relocate_kernel_64.S:249: undefined reference to `saved_context_gdt_desc' >> scripts/Makefile.vmlinux:77: recipe for target 'vmlinux' failed >> >> This error occurs when CONFIG_KEXEC_JUMP=y, and doesn't occur when build on >> torvalds master branch with same config. Please check if there is any >> problem whith this branch. >> > Hi, > > It's because the branch is based on an earlier 6.13-rc. > > Two ideas that can help you: > > 1) You can pull this patch manually on top of it to avoid that issue. > https://git.kernel.org/torvalds/c/aeb68937614f4 > > 2) You can manually rebase the branch on newer 6.13-rc locally to make your commit. That commit that fixed it landed in 6.13-rc3, so rc3 or later would be fine. This solves the problem, thanks! > >>> >>> Although the issue you identified is still valid, there have been other contextual changes in the function [1]. Can you rebase on that branch, test it again and send a v2? >>> >>> [1] https://git.kernel.org/pub/scm/linux/kernel/git/superm1/linux.git/tree/drivers/cpufreq/amd-pstate.c?h=linux-next#n750 >>> >>> Thanks! >>> >>>> drivers/cpufreq/amd-pstate.c | 1 - >>>> 1 file changed, 1 deletion(-) >>>> >>>> diff --git a/drivers/cpufreq/amd-pstate.c b/drivers/cpufreq/amd-pstate.c >>>> index 66e5dfc711c0..4ce923788f3a 100644 >>>> --- a/drivers/cpufreq/amd-pstate.c >>>> +++ b/drivers/cpufreq/amd-pstate.c >>>> @@ -730,7 +730,6 @@ static int amd_pstate_set_boost(struct cpufreq_policy *policy, int state) >>>> mutex_lock(&amd_pstate_driver_lock); >>>> ret = amd_pstate_cpu_boost_update(policy, state); >>>> WRITE_ONCE(cpudata->boost_state, !ret ? state : false); >>>> - policy->boost_enabled = !ret ? state : false; >>>> refresh_frequency_limits(policy); >>>> mutex_unlock(&amd_pstate_driver_lock); >>>> >>> >> >
diff --git a/drivers/cpufreq/amd-pstate.c b/drivers/cpufreq/amd-pstate.c index 66e5dfc711c0..4ce923788f3a 100644 --- a/drivers/cpufreq/amd-pstate.c +++ b/drivers/cpufreq/amd-pstate.c @@ -730,7 +730,6 @@ static int amd_pstate_set_boost(struct cpufreq_policy *policy, int state) mutex_lock(&amd_pstate_driver_lock); ret = amd_pstate_cpu_boost_update(policy, state); WRITE_ONCE(cpudata->boost_state, !ret ? state : false); - policy->boost_enabled = !ret ? state : false; refresh_frequency_limits(policy); mutex_unlock(&amd_pstate_driver_lock);
Commit c8c68c38b56f ("cpufreq: amd-pstate: initialize core precision boost state") sets per-policy boost flag to false when boost fail. However, this boost flag will be set to reverse value in store_local_boost() and cpufreq_boost_trigger_state() in cpufreq.c. This will cause the per-policy boost flag set to true when fail to set boost. Remove the extra assignment in amd_pstate_set_boost() and keep all operations on per-policy boost flag outside of set_boost() to fix this problem. Fixes: c8c68c38b56f ("cpufreq: amd-pstate: initialize core precision boost state") Signed-off-by: Lifeng Zheng <zhenglifeng1@huawei.com> --- drivers/cpufreq/amd-pstate.c | 1 - 1 file changed, 1 deletion(-)