Bug 218686 - Fail to set energy_performance_preference of amd processor on asus ga403uv
Summary: Fail to set energy_performance_preference of amd processor on asus ga403uv
Status: RESOLVED CODE_FIX
Alias: None
Product: Power Management
Classification: Unclassified
Component: cpufreq (show other bugs)
Hardware: AMD Linux
: P3 normal
Assignee: linux-pm@vger.kernel.org
URL:
Keywords:
: 219044 (view as bug list)
Depends on:
Blocks:
 
Reported: 2024-04-06 02:56 UTC by al0uette
Modified: 2024-09-23 15:58 UTC (History)
11 users (show)

See Also:
Kernel Version: 6.8.x, 6.9.0-rc1
Subsystem:
Regression: No
Bisected commit-id:


Attachments
ssdt table containing _CPC things (251.70 KB, text/x-csrc)
2024-04-06 02:56 UTC, al0uette
Details
cpuinfo (28.10 KB, text/plain)
2024-04-10 05:33 UTC, al0uette
Details
output (114.19 KB, text/plain)
2024-04-10 06:17 UTC, al0uette
Details
Screenshot of HWinfo64 (16.23 KB, image/png)
2024-04-11 04:19 UTC, al0uette
Details
Screenshot of Windows event viewer (84.27 KB, image/png)
2024-04-11 04:20 UTC, al0uette
Details
attachment-18522-0.html (2.36 KB, text/html)
2024-05-17 11:53 UTC, Perry Yuan(AMD)
Details
attachment-26939-0.html (1.58 KB, text/html)
2024-07-31 05:41 UTC, Perry Yuan(AMD)
Details
CPPC working on windows asus ga403uv (53.71 KB, image/png)
2024-07-31 11:50 UTC, Chema
Details
Smokeless UAMF options (4.03 MB, video/mp4)
2024-08-03 18:54 UTC, Chema
Details
The second video of the smokeless uamf video (3.81 MB, video/mp4)
2024-08-03 18:56 UTC, Chema
Details
ACPI tables looks ok (251.93 KB, text/x-csrc)
2024-08-04 23:50 UTC, Chema
Details
Patch for cppc_set_epp_perf (1.07 KB, patch)
2024-09-09 02:54 UTC, al0uette
Details | Diff
new patch including acpi version checking (1.22 KB, patch)
2024-09-09 15:00 UTC, al0uette
Details | Diff
opt EPP register writes from FFH (2.66 KB, application/mbox)
2024-09-09 15:02 UTC, Mario Limonciello (AMD)
Details
opt EPP register writes from FFH (v2) (2.42 KB, patch)
2024-09-09 15:04 UTC, Mario Limonciello (AMD)
Details | Diff
opt EPP register writes from FFH (v3) (2.39 KB, patch)
2024-09-09 21:18 UTC, Mario Limonciello (AMD)
Details | Diff

Description al0uette 2024-04-06 02:56:57 UTC
Created attachment 306091 [details]
ssdt table containing _CPC things

I enabled amd-pstate-epp driver by appending 'amd_pstate=active' to kernel cmdline, and set scaling_governer to powersave, and

'cat /sys/devices/system/cpu/cpu*/cpufreq/energy_performance_available_preferences'

do show

'default performance balance_performance balance_power power'.

However when I try to change epp to anything other than 'performance'(which is the default) with something like

'echo power |sudo tee /sys/devices/system/cpu/cpufreq/policy*/energy_performance_preference',

I get 'tee: /sys/devices/system/cpu/cpufreq/policy0/energy_performance_preference: Unknown error 524', which, according to source code, I guess is ENOTSUPP. And I guess it's because cppc_set_epp_perf() in     linux/drivers/acpi/cppc_acpi.c checks CPC_IN_PCC(epp_set_reg), and think the register doesn't exist. However I do see the _CPC things in my ssdt. Don't know its' a bug in kernel or BIOS so I report it here
Comment 1 al0uette 2024-04-10 03:36:05 UTC
can anyone take a look at this issue?
Comment 2 Mario Limonciello (AMD) 2024-04-10 05:28:41 UTC
This is a modern machine (Phoenix) that should support X86_FEATURE_CPPC.  Do you "need" to set amd_pstate=active on the kernel command line?  If so, then that points at a bigger problem to me.  That's supposed to be the default on machines like yours.

Can you please share /proc/cpuinfo?

I suggest turning on dynamic debug for drivers/cpufreq/amd-pstate.c while reproducing this error and then sharing the snippet it has with the messages that occurred.

https://www.kernel.org/doc/html/v6.9-rc3/admin-guide/dynamic-debug-howto.html
Comment 3 al0uette 2024-04-10 05:33:32 UTC
Created attachment 306116 [details]
cpuinfo

I'm not sure do I need to append amd_pstate=active to commandline to enable amd-pstate-epp, I'll try to boot without it and see which governer is in use.

As for the /proc/cpuinfo, I've uploaded in attachments
Comment 4 al0uette 2024-04-10 05:39:05 UTC
OK without that parameter my system uses schedutil as scaling_governer :(
Comment 5 Perry Yuan(AMD) 2024-04-10 05:41:03 UTC
Hi,please help to provide this output with below commands.

# cd /sys/devices/system/cpu/cpu0/cpufreq
# grep . *
#sudo rdmsr 0xc00102b3 -a
#lscpu -ae
#dmesg
Comment 6 al0uette 2024-04-10 05:46:24 UTC
(In reply to Perry Yuan(AMD) from comment #5)
> Hi,please help to provide this output with below commands.
> 
> # cd /sys/devices/system/cpu/cpu0/cpufreq
> # grep . *
> #sudo rdmsr 0xc00102b3 -a
> #lscpu -ae
> #dmesg

Should I do this with amd_pstate=active commandline?
Comment 7 Perry Yuan(AMD) 2024-04-10 05:48:47 UTC
(In reply to al0uette from comment #6)
> (In reply to Perry Yuan(AMD) from comment #5)
> > Hi,please help to provide this output with below commands.
> > 
> > # cd /sys/devices/system/cpu/cpu0/cpufreq
> > # grep . *
> > #sudo rdmsr 0xc00102b3 -a
> > #lscpu -ae
> > #dmesg
> 
> Should I do this with amd_pstate=active commandline?

Yes, if your kernel is not updated to include the patches which make the amd_pstate_epp as the default mode, you would need to add amd_pstate=active commandline.

After you added the amd_pstate=active and boot system up, we can check why  the EPP values cannot be changed. 

Perry.
Comment 8 al0uette 2024-04-10 06:17:45 UTC
Created attachment 306117 [details]
output
Comment 9 al0uette 2024-04-10 06:19:00 UTC
(In reply to Perry Yuan(AMD) from comment #7)
> (In reply to al0uette from comment #6)
> > (In reply to Perry Yuan(AMD) from comment #5)
> > > Hi,please help to provide this output with below commands.
> > > 
> > > # cd /sys/devices/system/cpu/cpu0/cpufreq
> > > # grep . *
> > > #sudo rdmsr 0xc00102b3 -a
> > > #lscpu -ae
> > > #dmesg
> > 
> > Should I do this with amd_pstate=active commandline?
> 
> Yes, if your kernel is not updated to include the patches which make the
> amd_pstate_epp as the default mode, you would need to add amd_pstate=active
> commandline.
> 
> After you added the amd_pstate=active and boot system up, we can check why 
> the EPP values cannot be changed. 
> 
> Perry.

I've uploaded my output. BTW I do use a quite new kernel (6.9.0-rc1), however without amd_pstate=active my system uses acpi-cpufreq :(
Comment 10 Perry Yuan(AMD) 2024-04-10 06:26:11 UTC
# sudo apt install msr-tools
# sudo rdmsr 0xc00102b3 -a
please try this to capture the msr values.
Comment 11 al0uette 2024-04-10 06:27:40 UTC
(In reply to Perry Yuan(AMD) from comment #10)
> # sudo apt install msr-tools
> # sudo rdmsr 0xc00102b3 -a
> please try this to capture the msr values.

I did capture msr value, but it shows segmentation fault, which has been presented in my output
Comment 12 al0uette 2024-04-10 06:29:36 UTC
[  107.095506] rdmsr[3791]: segfault at fffffffffffffff2 ip 00000000004019ee sp 00007ffd3b1558f0 error 5 in rdmsr[401000+1000] likely on CPU 2 (core 2, socket 0)
[  107.095526] Code: 89 44 24 08 31 c0 48 89 e6 e8 ee f6 ff ff 85 c0 74 40 8d 58 ff 0f 1f 80 00 00 00 00 48 8b 04 24 4c 63 e3 31 f6 ba 0a 00 00 00 <4a> 8b 3c e0 48 83 c7 13 e8 b5 f6 ff ff 89 ef 89 c6 e8 fc fa ff ff

This part is already included in my output
Comment 13 al0uette 2024-04-10 06:42:48 UTC
(In reply to Perry Yuan(AMD) from comment #10)
> # sudo apt install msr-tools
> # sudo rdmsr 0xc00102b3 -a
> please try this to capture the msr values.

It turns out that the segfault is cause by my distribution/kernel version. I changed to archlinux with 6.9.0-rc2 and got all zeros after executing rdmsr
Comment 14 Perry Yuan(AMD) 2024-04-10 06:43:49 UTC
(In reply to al0uette from comment #13)
> (In reply to Perry Yuan(AMD) from comment #10)
> > # sudo apt install msr-tools
> > # sudo rdmsr 0xc00102b3 -a
> > please try this to capture the msr values.
> 
> It turns out that the segfault is cause by my distribution/kernel version. I
> changed to archlinux with 6.9.0-rc2 and got all zeros after executing rdmsr

Got it, I will get one same CPU system to check the issue. 
thanks for the issue reporting.


Perry.
Comment 15 Perry Yuan(AMD) 2024-04-10 06:47:24 UTC
Could you check the BIOS setting for the CPPC enablement?

1. boot into BIOS
2. turn on the CPPC "CBS — SMU Feature — Enable CPPC"
Comment 16 al0uette 2024-04-10 06:49:54 UTC
(In reply to Perry Yuan(AMD) from comment #15)
> Could you check the BIOS setting for the CPPC enablement?
> 
> 1. boot into BIOS
> 2. turn on the CPPC "CBS — SMU Feature — Enable CPPC"

Asus don't provide that option in BIOS, I guess I can only do that via Smokeless UMAF? But it's not officially supported.
Comment 17 al0uette 2024-04-10 06:51:51 UTC
(In reply to Perry Yuan(AMD) from comment #14)
> (In reply to al0uette from comment #13)
> > (In reply to Perry Yuan(AMD) from comment #10)
> > > # sudo apt install msr-tools
> > > # sudo rdmsr 0xc00102b3 -a
> > > please try this to capture the msr values.
> > 
> > It turns out that the segfault is cause by my distribution/kernel version.
> I
> > changed to archlinux with 6.9.0-rc2 and got all zeros after executing rdmsr
> 
> Got it, I will get one same CPU system to check the issue. 
> thanks for the issue reporting.
> 
> 
> Perry.

Thank you too for your response. I got zero response from nvidia guys after reporting a bug to them ;)
Comment 18 Perry Yuan(AMD) 2024-04-10 06:55:12 UTC
I guess all the OEMs should provide the option to users,
just need to find it.
How about this path?
Advanced-> AMD CBS -> NBIO Common options -> SMU Common Options-> CPPC
Comment 19 al0uette 2024-04-10 07:02:35 UTC
(In reply to Perry Yuan(AMD) from comment #18)
> I guess all the OEMs should provide the option to users,
> just need to find it.
> How about this path?
> Advanced-> AMD CBS -> NBIO Common options -> SMU Common Options-> CPPC

No, they just don't provide it, you can take a look of this picture.

https://www.notebookcheck.pl/fileadmin/_processed_/f/9/csm_bios_3_2616b186e4.jpg

original post here:

https://www.notebookcheck.pl/Recenzja-Asus-ROG-Zephyrus-M-GM501GS.299168.0.html

Though my BIOS is slightly different from that, but they still don't provide that option.
Comment 20 Perry Yuan(AMD) 2024-04-10 07:12:10 UTC
Hi bro,
I checked your cpuinfo log, the CPPC is not enabled on your system, so the MSR will not work at all, EPP values need to update through MSR interface and you also see the crash log when you try to read or write MSR.



for example, this is captured from my system, lscpu need to expose the cppc flag on your system like mine.
------------------------------------------------------
    CPU family:          25
    Model:               116
#  lscpu | grep cppc
rdpru wbnoinvd <CPPC> arat npt lbrv...
------------------------------------------------------


If your system BIOS have no such option, it will not allow amd pstate driver work as expected. 
 
Please contact with ASUS to request new BIOS to enable CPPC for your system.

Perry.
Comment 21 al0uette 2024-04-10 07:21:10 UTC
Thank you for all of your help. But I don't know how to contact with ASUS to request new BIOS, can you please tell me how?
Comment 22 Perry Yuan(AMD) 2024-04-10 07:26:43 UTC
(In reply to al0uette from comment #21)
> Thank you for all of your help. But I don't know how to contact with ASUS to
> request new BIOS, can you please tell me how?

I guess you can get contact window by searching the "ASUS Support" or service call/asus contact support something like that.
Comment 23 al0uette 2024-04-10 07:27:24 UTC
OK, thank you.
Comment 24 Mario Limonciello (AMD) 2024-04-10 16:08:08 UTC
As this is caused by a BIOS issue that we can't do anything about in Linux, closing the issue.

FWIW if you're getting resistance from ASUS in fixing it you can try to reproduce it in Windows.  AFAICT HWinfo64 will report whether CPPC is working or not.

https://www.hwinfo.com/forum/threads/how-does-hwinfo-query-the-cppc-preferred-cores-data.7927/
Comment 25 al0uette 2024-04-11 04:18:45 UTC
Strangely I found CPPC do work on Windows
Comment 26 al0uette 2024-04-11 04:19:49 UTC
Created attachment 306126 [details]
Screenshot of HWinfo64
Comment 27 al0uette 2024-04-11 04:20:19 UTC
Created attachment 306127 [details]
Screenshot of Windows event viewer
Comment 28 xiaojian.du 2024-04-11 05:29:04 UTC
confirmed from another Phoenix 7840HS platform:
CPPC flag is exposed by BIOS.
So, on your 8945H CPU platform, it is very possible that ASUS doesn't enable the CPPC in the BIOS.
I see this BIOS is built at 02/15/2024
"DMI: ASUSTeK COMPUTER INC. ROG Zephyrus G14 GA403UV_GA403UV/GA403UV, BIOS GA403UV.303 02/15/2024"

~$ cat /proc/cpuinfo | grep cppc
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good amd_lbr_v2 nopl nonstop_tsc cpuid extd_apicid aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate ssbd mba perfmon_v2 ibrs ibpb stibp ibrs_enhanced vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local avx512_bf16 clzero irperf xsaveerptr rdpru wbnoinvd **cppc** arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold v_vmsave_vmload vgif x2avic v_spec_ctrl vnmi avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid overflow_recov succor smca fsrm flush_l1d


BTW, suppose you're using a test kernel 6.9-rc built by yourslef,, need to check kernel building config file to enable msr support:
make menucofnig  -> Processor type and features -> <M>/dev/cpu/*/msr - Model-specific register support, change <M> to <*>
Comment 29 xiaojian.du 2024-04-11 05:30:54 UTC
(In reply to xiaojian.du from comment #28)
> confirmed from another Phoenix 7840HS platform:
> CPPC flag is exposed by BIOS.
> So, on your 8945H CPU platform, it is very possible that ASUS doesn't enable
> the CPPC in the BIOS.
> I see this BIOS is built at 02/15/2024
> "DMI: ASUSTeK COMPUTER INC. ROG Zephyrus G14 GA403UV_GA403UV/GA403UV, BIOS
> GA403UV.303 02/15/2024"
> 
> ~$ cat /proc/cpuinfo | grep cppc
> flags         : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
> pat
> pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp
> lm constant_tsc rep_good amd_lbr_v2 nopl nonstop_tsc cpuid extd_apicid
> aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 x2apic
> movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic
> cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce
> topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3
> hw_pstate ssbd mba perfmon_v2 ibrs ibpb stibp ibrs_enhanced vmmcall fsgsbase
> bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq rdseed adx smap
> avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec
> xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local avx512_bf16
> clzero irperf xsaveerptr rdpru wbnoinvd **cppc** arat npt lbrv svm_lock
> nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter
> pfthreshold v_vmsave_vmload vgif x2avic v_spec_ctrl vnmi avx512vbmi umip pku
> ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg
> avx512_vpopcntdq rdpid overflow_recov succor smca fsrm flush_l1d
> 
> 
> BTW, suppose you're using a test kernel 6.9-rc built by yourslef,, need to
> check kernel building config file to enable msr support:
> make menucofnig  -> Processor type and features -> <M>/dev/cpu/*/msr -
> Model-specific register support, change <M> to <*>

typo: make menuconfig  -> Processor type and features -> <M>/dev/cpu/*/msr -
> Model-specific register support, change <M> to <*>
Comment 30 al0uette 2024-04-11 07:25:17 UTC
(In reply to xiaojian.du from comment #28)
> confirmed from another Phoenix 7840HS platform:
> CPPC flag is exposed by BIOS.
> So, on your 8945H CPU platform, it is very possible that ASUS doesn't enable
> the CPPC in the BIOS.
> I see this BIOS is built at 02/15/2024
> "DMI: ASUSTeK COMPUTER INC. ROG Zephyrus G14 GA403UV_GA403UV/GA403UV, BIOS
> GA403UV.303 02/15/2024"
> 
> ~$ cat /proc/cpuinfo | grep cppc
> flags         : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
> pat
> pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp
> lm constant_tsc rep_good amd_lbr_v2 nopl nonstop_tsc cpuid extd_apicid
> aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 x2apic
> movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic
> cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce
> topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3
> hw_pstate ssbd mba perfmon_v2 ibrs ibpb stibp ibrs_enhanced vmmcall fsgsbase
> bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq rdseed adx smap
> avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec
> xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local avx512_bf16
> clzero irperf xsaveerptr rdpru wbnoinvd **cppc** arat npt lbrv svm_lock
> nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter
> pfthreshold v_vmsave_vmload vgif x2avic v_spec_ctrl vnmi avx512vbmi umip pku
> ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg
> avx512_vpopcntdq rdpid overflow_recov succor smca fsrm flush_l1d
> 
> 
> BTW, suppose you're using a test kernel 6.9-rc built by yourslef,, need to
> check kernel building config file to enable msr support:
> make menucofnig  -> Processor type and features -> <M>/dev/cpu/*/msr -
> Model-specific register support, change <M> to <*>

I've also confirmed this on prebuilt stable kernel from my distribution, so it's not my config's problem.

But why CPPC works on Windows? Can we add something like a quirk to make CPPC work on Linux for these machines?
Comment 31 xiaojian.du 2024-04-11 09:02:00 UTC
(In reply to al0uette from comment #30)
> (In reply to xiaojian.du from comment #28)
> > confirmed from another Phoenix 7840HS platform:
> > CPPC flag is exposed by BIOS.
> > So, on your 8945H CPU platform, it is very possible that ASUS doesn't
> enable
> > the CPPC in the BIOS.
> > I see this BIOS is built at 02/15/2024
> > "DMI: ASUSTeK COMPUTER INC. ROG Zephyrus G14 GA403UV_GA403UV/GA403UV, BIOS
> > GA403UV.303 02/15/2024"
> > 
> > ~$ cat /proc/cpuinfo | grep cppc
> > flags         : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca
> cmov
> > pat
> > pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb
> rdtscp
> > lm constant_tsc rep_good amd_lbr_v2 nopl nonstop_tsc cpuid extd_apicid
> > aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 x2apic
> > movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic
> > cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce
> > topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3
> > hw_pstate ssbd mba perfmon_v2 ibrs ibpb stibp ibrs_enhanced vmmcall
> fsgsbase
> > bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq rdseed adx smap
> > avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt
> xsavec
> > xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local
> avx512_bf16
> > clzero irperf xsaveerptr rdpru wbnoinvd **cppc** arat npt lbrv svm_lock
> > nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter
> > pfthreshold v_vmsave_vmload vgif x2avic v_spec_ctrl vnmi avx512vbmi umip
> pku
> > ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg
> > avx512_vpopcntdq rdpid overflow_recov succor smca fsrm flush_l1d
> > 
> > 
> > BTW, suppose you're using a test kernel 6.9-rc built by yourslef,, need to
> > check kernel building config file to enable msr support:
> > make menucofnig  -> Processor type and features -> <M>/dev/cpu/*/msr -
> > Model-specific register support, change <M> to <*>
> 
> I've also confirmed this on prebuilt stable kernel from my distribution, so
> it's not my config's problem.
> 
> But why CPPC works on Windows? Can we add something like a quirk to make
> CPPC work on Linux for these machines?

From my own platform, renoir APU, amd ryzen 4750g + a520 mainboard,
I check hwinfo64 when enabled/disabled CPPC, hwinfo shows diff info.
(BIOS pah: AMD CBS->NBIO->SMU COMMON->CPPC auto/enable/disable)

From you pic, it shows only "one line" info of CPPC, it matches with mine when disbaled CPPC in BIOS.

When enabled CPPC in BIOS, hwinfo shows "two lines" of CPPC info.
核心性能顺序:           8, 5, 1, 7, 3, 4, 2, 6
核心性能顺序(CPPC):    1, 2, 3, 4, 5, 6, 7, 8
Comment 32 xiaojian.du 2024-04-11 09:15:12 UTC
On another Phoenix/7840H APU platform, the BIOS also doesn't provide SMU option.
In Win11, Hwinfo64 shows only one line info of CPPC:
"核心性能顺序(CPPC):  2, 4, 7, 6, 8, 3, 5, 1"
But in Ubuntu 22.04.4 OS, "lscpu" command shows CPPC flag truly.
Comment 33 al0uette 2024-04-11 10:09:36 UTC
(In reply to xiaojian.du from comment #32)
> On another Phoenix/7840H APU platform, the BIOS also doesn't provide SMU
> option.
> In Win11, Hwinfo64 shows only one line info of CPPC:
> "核心性能顺序(CPPC):  2, 4, 7, 6, 8, 3, 5, 1"
> But in Ubuntu 22.04.4 OS, "lscpu" command shows CPPC flag truly.

Thank you for your explanation. So I guess I can only wait asus to fix it?
Comment 34 Mario Limonciello (AMD) 2024-04-11 11:14:02 UTC
Well now that you know it happens in Windows too maybe it's easier to report to them.
Comment 35 Mario Limonciello (AMD) 2024-04-11 12:56:46 UTC
One more idea for you. Can you please try to go into BIOS and do "reset BIOS default settings"? Even if you haven't changed anything this will reset any hidden settings too in case there is a problem with one of them.
Comment 36 al0uette 2024-04-11 15:53:35 UTC
(In reply to Mario Limonciello (AMD) from comment #35)
> One more idea for you. Can you please try to go into BIOS and do "reset BIOS
> default settings"? Even if you haven't changed anything this will reset any
> hidden settings too in case there is a problem with one of them.

I've reset and even reflashed BIOS, still no luck
Comment 37 al0uette 2024-04-11 15:54:41 UTC
(In reply to Mario Limonciello (AMD) from comment #34)
> Well now that you know it happens in Windows too maybe it's easier to report
> to them.

I'll try to persuade them
Comment 38 Perry Yuan(AMD) 2024-04-15 08:37:13 UTC
Hi,

sudo apt install cpuid
sudo cpuid -l 0x80000008 -r

Please help to provide this output. 

Perry.
Comment 39 al0uette 2024-04-18 07:36:03 UTC
(In reply to Perry Yuan(AMD) from comment #38)
> Hi,
> 
> sudo apt install cpuid
> sudo cpuid -l 0x80000008 -r
> 
> Please help to provide this output. 
> 
> Perry.

Here's the output: 

CPU 0:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 1:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 2:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 3:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 4:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 5:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 6:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 7:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 8:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 9:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 10:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 11:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 12:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 13:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 14:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 15:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
Comment 40 Perry Yuan(AMD) 2024-04-18 07:56:36 UTC
(In reply to al0uette from comment #39)
> (In reply to Perry Yuan(AMD) from comment #38)
> > Hi,
> > 
> > sudo apt install cpuid
> > sudo cpuid -l 0x80000008 -r
> > 
> > Please help to provide this output. 
> > 
> > Perry.
> 
> Here's the output: 
> 
> CPU 0:
>    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> edx=0x00010000
> CPU 1:
>    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> edx=0x00010000
> CPU 2:
>    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> edx=0x00010000
> CPU 3:
>    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> edx=0x00010000
> CPU 4:
>    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> edx=0x00010000
> CPU 5:
>    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> edx=0x00010000
> CPU 6:
>    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> edx=0x00010000
> CPU 7:
>    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> edx=0x00010000
> CPU 8:
>    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> edx=0x00010000
> CPU 9:
>    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> edx=0x00010000
> CPU 10:
>    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> edx=0x00010000
> CPU 11:
>    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> edx=0x00010000
> CPU 12:
>    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> edx=0x00010000
> CPU 13:
>    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> edx=0x00010000
> CPU 14:
>    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> edx=0x00010000
> CPU 15:
>    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> edx=0x00010000

thanks to share the info, I have been checking with internal teams for this issue.  will update here if I got any progres.

Perry.
Comment 41 al0uette 2024-04-18 08:41:12 UTC
(In reply to Perry Yuan(AMD) from comment #40)
> (In reply to al0uette from comment #39)
> > (In reply to Perry Yuan(AMD) from comment #38)
> > > Hi,
> > > 
> > > sudo apt install cpuid
> > > sudo cpuid -l 0x80000008 -r
> > > 
> > > Please help to provide this output. 
> > > 
> > > Perry.
> > 
> > Here's the output: 
> > 
> > CPU 0:
> >    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> > edx=0x00010000
> > CPU 1:
> >    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> > edx=0x00010000
> > CPU 2:
> >    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> > edx=0x00010000
> > CPU 3:
> >    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> > edx=0x00010000
> > CPU 4:
> >    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> > edx=0x00010000
> > CPU 5:
> >    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> > edx=0x00010000
> > CPU 6:
> >    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> > edx=0x00010000
> > CPU 7:
> >    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> > edx=0x00010000
> > CPU 8:
> >    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> > edx=0x00010000
> > CPU 9:
> >    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> > edx=0x00010000
> > CPU 10:
> >    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> > edx=0x00010000
> > CPU 11:
> >    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> > edx=0x00010000
> > CPU 12:
> >    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> > edx=0x00010000
> > CPU 13:
> >    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> > edx=0x00010000
> > CPU 14:
> >    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> > edx=0x00010000
> > CPU 15:
> >    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> > edx=0x00010000
> 
> thanks to share the info, I have been checking with internal teams for this
> issue.  will update here if I got any progres.
> 
> Perry.

Thank you for your help :)
Comment 43 Perry Yuan(AMD) 2024-04-23 07:03:15 UTC
The issue has been confirmed that CPPC is not enabled by default on the ASUS GA403uv BIOS release. AMD has requested ASUS to enable CPPC in future BIOS releases. If you wish to expedite the release, you may consider contacting ASUS customer service.

Perry.
Comment 44 al0uette 2024-04-23 07:25:52 UTC
(In reply to Perry Yuan(AMD) from comment #43)
> The issue has been confirmed that CPPC is not enabled by default on the ASUS
> GA403uv BIOS release. AMD has requested ASUS to enable CPPC in future BIOS
> releases. If you wish to expedite the release, you may consider contacting
> ASUS customer service.
> 
> Perry.

You really helped me a lot, thank you Perry!
Comment 45 al0uette 2024-05-17 08:50:33 UTC
Hi Perry, I consulted ASUS for this problem and they're unwilling to provide help, and it has been 3 months since the last BIOS update. Today I notice this bug tracker: https://bugzilla.kernel.org/show_bug.cgi?id=218171, which seems have similar issue. Do you think it is possible to fix this problem with similar method?
Comment 46 Perry Yuan(AMD) 2024-05-17 11:53:17 UTC
Created attachment 306303 [details]
attachment-18522-0.html

[AMD Official Use Only - AMD Internal Distribution Only]

Hi there,  AMD has been checking with asus to request to update bios to new version,   Cppc needs to be enabled from BIOS otherwise it will not work anyway.   have you submited support case to Asus ?


Best regards,

Perry Yuan
________________________________
发件人: bugzilla-daemon@kernel.org <bugzilla-daemon@kernel.org>
发送时间: Friday, May 17, 2024 4:50:33 PM
收件人: Yuan, Perry <Perry.Yuan@amd.com>
主题: [Bug 218686] Fail to set energy_performance_preference of amd processor on asus ga403uv

https://bugzilla.kernel.org/show_bug.cgi?id=218686

--- Comment #45 from al0uette@outlook.com ---
Hi Perry, I consulted ASUS for this problem and they're unwilling to provide
help, and it has been 3 months since the last BIOS update. Today I notice this
bug tracker: https://bugzilla.kernel.org/show_bug.cgi?id=218171, which seems
have similar issue. Do you think it is possible to fix this problem with
similar method?

--
You may reply to this email to add a comment.

You are receiving this mail because:
You are on the CC list for the bug.
Comment 47 al0uette 2024-05-17 15:11:27 UTC
(In reply to Perry Yuan(AMD) from comment #46)
> Created attachment 306303 [details]
> attachment-18522-0.html
> 
> [AMD Official Use Only - AMD Internal Distribution Only]
> 
> Hi there,  AMD has been checking with asus to request to update bios to new
> version,   Cppc needs to be enabled from BIOS otherwise it will not work
> anyway.   have you submited support case to Asus ?
> 
> 
> Best regards,
> 
> Perry Yuan
> ________________________________
> 发件人: bugzilla-daemon@kernel.org <bugzilla-daemon@kernel.org>
> 发送时间: Friday, May 17, 2024 4:50:33 PM
> 收件人: Yuan, Perry <Perry.Yuan@amd.com>
> 主题: [Bug 218686] Fail to set energy_performance_preference of amd processor
> on asus ga403uv
> 
> https://bugzilla.kernel.org/show_bug.cgi?id=218686
> 
> --- Comment #45 from al0uette@outlook.com ---
> Hi Perry, I consulted ASUS for this problem and they're unwilling to provide
> help, and it has been 3 months since the last BIOS update. Today I notice
> this
> bug tracker: https://bugzilla.kernel.org/show_bug.cgi?id=218171, which seems
> have similar issue. Do you think it is possible to fix this problem with
> similar method?
> 
> --
> You may reply to this email to add a comment.
> 
> You are receiving this mail because:
> You are on the CC list for the bug.

Yes, here's their reply:

Dear 先生/女士:

您好!非常感谢您对华硕产品的支持与厚爱!


我是为您提供服务的 Vicky,很高兴为您提供本次服务!


关于您反馈的问题,目前查询此机台最新的BIOS的版本为303版本,还没有更新的版本,如您目前已经是303版本建议您正常使用即可,具体发布时间或者更新内容等,需要以发布实际为准,如后续更新,会进行发布,届时您正常连接好充电器,保持开机更新即可,目前没有相关的时间和内容的信息


如您有其他问题欢迎您再次联系我们。
Comment 48 Perry Yuan(AMD) 2024-05-20 15:26:26 UTC
The BIOS release will take longer time than you expected, it is really depending on the customer request and vendor schedule.
Anyway, I will check from internal channel for this. 

Perry.
Comment 49 Mike 2024-05-22 14:39:37 UTC
Hi All,

I have the same ga403uv system.

watch -d cat /sys/devices/system/cpu/cpu*/acpi_cppc/feedback_ctrs

Returns changing values, does't this mean cppc is active?

Mike.
Comment 50 Perry Yuan(AMD) 2024-05-22 14:53:24 UTC
(In reply to Mike from comment #49)
> Hi All,
> 
> I have the same ga403uv system.
> 
> watch -d cat /sys/devices/system/cpu/cpu*/acpi_cppc/feedback_ctrs
> 
> Returns changing values, does't this mean cppc is active?
> 
> Mike.

Hi Mike,

Could you share the output of below commands on your system?

sudo rdmsr 0xc00102b3 -a
sudo rdmsr 0xc00102b0 -a
sudo rdmsr 0xc00102b1 -a
sudo cpuid -l 0x80000008 -r
Comment 51 Mike 2024-05-22 15:12:59 UTC
Hi Perry,

As requested:

sudo rdmsr 0xc00102b3 -a
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0


sudo rdmsr 0xc00102b0 -a
e295290f
dc95290f
e895290f
d695290f
c495290f
ca95290f
e895290f
d095290f
e295290fe295290f
dc95290fdc95290f
e895290fe895290f
d695290fd695290f
c495290fc495290f
ca95290fca95290f
e895290fe895290f
d095290fd095290f

sudo rdmsr 0xc00102b1 -a
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
sudo cpuid -l 0x80000008 -r
CPU 0:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 1:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 2:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 3:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 4:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 5:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 6:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 7:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 8:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 9:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 10:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 11:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 12:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 13:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 14:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 15:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
Comment 52 Dacian B 2024-05-27 08:12:35 UTC
Hello Perry, Mike,

So, i've stumbled upon this thread regarding the amd-pstate driver and after hours of bashing my head against the wall, i can confirm that i face a similar issue, but in my case its even worse since i use a chinese laptop (so bios updates are kinda out of the question...).
I dont want to upset anyone, but to me at least AMD kinda dropped the ball on this CPPC thing, since it should (at least in my opinion) be enabled by default and not up to the vendors.
I will be following this thread if anything comes up...

Kind regards D
Comment 53 xiaojian.du 2024-05-27 08:21:32 UTC
(In reply to Dacian B from comment #52)
> Hello Perry, Mike,
> 
> So, i've stumbled upon this thread regarding the amd-pstate driver and after
> hours of bashing my head against the wall, i can confirm that i face a
> similar issue, but in my case its even worse since i use a chinese laptop
> (so bios updates are kinda out of the question...).
> I dont want to upset anyone, but to me at least AMD kinda dropped the ball
> on this CPPC thing, since it should (at least in my opinion) be enabled by
> default and not up to the vendors.
> I will be following this thread if anything comes up...
> 
> Kind regards D

Yeah, totally understand you, but vendors has their process to release their production BIOS, it takes time.
Like, you know, diff vendors will cut off their BIOS fucntions to deploy on diff models of baseboard.
Comment 54 Perry Yuan(AMD) 2024-05-27 09:48:16 UTC
(In reply to Mike from comment #51)
> Hi Perry,
> 
> As requested:
> 
> sudo rdmsr 0xc00102b3 -a
> 0
> 0
> 0
> 0
> 0
> 0
> 0
> 0
> 0
> 0
> 0
> 0
> 0
> 0
> 0
> 0
> 
> 
> sudo rdmsr 0xc00102b0 -a
> e295290f
> dc95290f
> e895290f
> d695290f
> c495290f
> ca95290f
> e895290f
> d095290f
> e295290fe295290f
> dc95290fdc95290f
> e895290fe895290f
> d695290fd695290f
> c495290fc495290f
> ca95290fca95290f
> e895290fe895290f
> d095290fd095290f
> 
> sudo rdmsr 0xc00102b1 -a
> 1
> 1
> 1
> 1
> 1
> 1
> 1
> 1
> 1
> 1
> 1
> 1
> 1
> 1
> 1
> 1
> sudo cpuid -l 0x80000008 -r
> CPU 0:
>    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> edx=0x00010000
> CPU 1:
>    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> edx=0x00010000
> CPU 2:
>    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> edx=0x00010000
> CPU 3:
>    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> edx=0x00010000
> CPU 4:
>    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> edx=0x00010000
> CPU 5:
>    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> edx=0x00010000
> CPU 6:
>    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> edx=0x00010000
> CPU 7:
>    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> edx=0x00010000
> CPU 8:
>    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> edx=0x00010000
> CPU 9:
>    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> edx=0x00010000
> CPU 10:
>    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> edx=0x00010000
> CPU 11:
>    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> edx=0x00010000
> CPU 12:
>    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> edx=0x00010000
> CPU 13:
>    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> edx=0x00010000
> CPU 14:
>    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> edx=0x00010000
> CPU 15:
>    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> edx=0x00010000


Fn80000008_EBX bit27[CPPC] = 0, so the CPPC function is also disabled on your system now.

We have requested vendors internally to update BIOS which enables CPPC by default, to speed up the process, I suggested users like you to submit customer support tickets to vendors, it probably makes the release timer earlier. 

Perry.
Comment 55 Perry Yuan(AMD) 2024-05-27 10:09:57 UTC
(In reply to xiaojian.du from comment #53)
> (In reply to Dacian B from comment #52)
> > Hello Perry, Mike,
> > 
> > So, i've stumbled upon this thread regarding the amd-pstate driver and
> after
> > hours of bashing my head against the wall, i can confirm that i face a
> > similar issue, but in my case its even worse since i use a chinese laptop
> > (so bios updates are kinda out of the question...).
> > I dont want to upset anyone, but to me at least AMD kinda dropped the ball
> > on this CPPC thing, since it should (at least in my opinion) be enabled by
> > default and not up to the vendors.
> > I will be following this thread if anything comes up...
> > 
> > Kind regards D
> 
> Yeah, totally understand you, but vendors has their process to release their
> production BIOS, it takes time.
> Like, you know, diff vendors will cut off their BIOS fucntions to deploy on
> diff models of baseboard.

(In reply to Dacian B from comment #52)
> Hello Perry, Mike,
> 
> So, i've stumbled upon this thread regarding the amd-pstate driver and after
> hours of bashing my head against the wall, i can confirm that i face a
> similar issue, but in my case its even worse since i use a chinese laptop
> (so bios updates are kinda out of the question...).
> I dont want to upset anyone, but to me at least AMD kinda dropped the ball
> on this CPPC thing, since it should (at least in my opinion) be enabled by
> default and not up to the vendors.
> I will be following this thread if anything comes up...
> 
> Kind regards D

CPPC is enabled by default on most of the systems as I know, asus ga403uv is using an older version BIOS PI which not have enabled CPPC yet, AMD has requested vendors to upgrade BIOS to new version. Before the pstate driver enabled, you can load acpi_cpufreq driver as short term solution. 

Perry.
Comment 56 Nicolas Granger 2024-07-15 23:08:38 UTC
I opened another bug (https://bugzilla.kernel.org/show_bug.cgi?id=219044) but I suspect it might be a duplicate of this one. Can anyone please confirm if this is indeed a duplicate?
Comment 57 Nicolas Granger 2024-07-19 08:46:30 UTC
*** Bug 219044 has been marked as a duplicate of this bug. ***
Comment 58 Mike 2024-07-30 10:32:25 UTC
New BIOS version has been released:

Version: GA403UV.306
Release Date: 06/05/2024


sudo rdmsr 0xc00102b3 -a
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0


sudo rdmsr 0xc00102b0 -a
e295290f
dc95290f
e895290f
d695290f
c495290f
ca95290f
e895290f
d095290f
e295290fe295290f
dc95290fdc95290f
e895290fe895290f
d695290fd695290f
c495290fc495290f
ca95290fca95290f
e895290fe895290f
d095290fd095290f


sudo rdmsr 0xc00102b1 -a
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0


sudo cpuid -l 0x80000008 -r
CPU 0:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 1:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 2:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 3:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 4:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 5:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 6:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 7:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 8:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 9:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 10:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 11:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 12:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 13:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 14:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
CPU 15:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000
Comment 59 xiaojian.du 2024-07-30 18:10:05 UTC
For this output info:

> CPU 14:
>    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> edx=0x00010000

Fn80000008_EBX bit27[CPPC] = 0, it remains "0", means CPPC is disabled.
Comment 60 Chema 2024-07-30 23:34:16 UTC
I have the same laptop and also the command outputs are the same.

I have updated last week to the last BIOS version, but no changes I have seen.

Is there any updates to this?
Comment 61 Chema 2024-07-30 23:38:22 UTC
(In reply to Chema from comment #60)
> I have the same laptop and also the command outputs are the same.
> 
> I have updated last week to the last BIOS version, but no changes I have
> seen.
> 
> Is there any updates to this?

Also, if CPPC is working in windows why it cant in linux?
Comment 62 xiaojian.du 2024-07-31 05:41:09 UTC
(In reply to Chema from comment #61)
> (In reply to Chema from comment #60)
> > I have the same laptop and also the command outputs are the same.
> > 
> > I have updated last week to the last BIOS version, but no changes I have
> > seen.
> > 
> > Is there any updates to this?
> 
> Also, if CPPC is working in windows why it cant in linux?

Not exactly.

How to check CPPC is used or not on *Windows OS*:
    *check Windows Logs -> System, look for "Kernel-Processor-Power" or event ID 55.
       ->>If you find ACPI Collaborative Processor Performance Control,
           then Windows is using CPPC.
       ->>If you find ACPI Performance (P) / Throttle (T) State,
           then it is using legacy P-states, and CPPC is disabled.
Comment 63 Perry Yuan(AMD) 2024-07-31 05:41:24 UTC
Created attachment 306643 [details]
attachment-26939-0.html

Hello,   Thank you for your message. I am currently out of the office for Labor Day Holiday. If you have any urgent issues or need CPPC, Hetero Core related urgent assistance, please reach out to [Limonciello, Mario]. For non-urgent matters, I will respond to your email as soon as possible upon my return on [5/6]. Best wishes, Perry Yuan
Comment 64 Chema 2024-07-31 11:50:17 UTC
Created attachment 306645 [details]
CPPC working on windows asus ga403uv

The windows kernel log are showing that asus ga403uv in windows 11 is using CPPC
Comment 65 Chema 2024-07-31 11:54:25 UTC
(In reply to xiaojian.du from comment #62)
> (In reply to Chema from comment #61)
> > (In reply to Chema from comment #60)
> > > I have the same laptop and also the command outputs are the same.
> > > 
> > > I have updated last week to the last BIOS version, but no changes I have
> > > seen.
> > > 
> > > Is there any updates to this?
> > 
> > Also, if CPPC is working in windows why it cant in linux?
> 
> Not exactly.
> 
> How to check CPPC is used or not on *Windows OS*:
>     *check Windows Logs -> System, look for "Kernel-Processor-Power" or
> event ID 55.
>        ->>If you find ACPI Collaborative Processor Performance Control,
>            then Windows is using CPPC.
>        ->>If you find ACPI Performance (P) / Throttle (T) State,
>            then it is using legacy P-states, and CPPC is disabled.

I have created and attachment showing that CPPC is working on windows, so is this a thing of linux that does not work or is it that windows have a workaround for activating it without the bios having it enabled?

Thanks.
Comment 66 Mike 2024-07-31 12:12:16 UTC
(In reply to xiaojian.du from comment #62)
> (In reply to Chema from comment #61)
> > (In reply to Chema from comment #60)
> > > I have the same laptop and also the command outputs are the same.
> > > 
> > > I have updated last week to the last BIOS version, but no changes I have
> > > seen.
> > > 
> > > Is there any updates to this?
> > 
> > Also, if CPPC is working in windows why it cant in linux?
> 
> Not exactly.
> 
> How to check CPPC is used or not on *Windows OS*:
>     *check Windows Logs -> System, look for "Kernel-Processor-Power" or
> event ID 55.
>        ->>If you find ACPI Collaborative Processor Performance Control,
>            then Windows is using CPPC.
>        ->>If you find ACPI Performance (P) / Throttle (T) State,
>            then it is using legacy P-states, and CPPC is disabled.

I Can confirm on G14 GA304UV that CPPC is enabled under windows, but not Linux:


Processor 0 in group 0 exposes the following power management capabilities:

Idle state type: ACPI Idle (LPI) States (3 state(s))

Performance state type: ACPI Collaborative Processor Performance Control
Nominal Frequency (MHz): 4001
Maximum performance percentage: 139
Minimum performance percentage: 27
Minimum throttle percentage: 10
Comment 67 Perry Yuan(AMD) 2024-08-01 03:39:33 UTC
https://www.amd.com/content/dam/amd/en/documents/processor-tech-docs/programmer-references/55901_B1_pub_053.zip 

Page 120.

CPUID_Fn80000008_EBX [Extended Feature Extensions ID EBX]  
Bit 27 CPPC. Read-only. Reset: 1. Collaborative Processor Performance Control.

sudo cpuid -l 0x80000008 -r
CPU 0:
   0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f edx=0x00010000

Bit 27 = 0, that means BIOS didn`t enable CPPC capability, OS cannot detect the CPPC flag on the system, 

you can check lscpu output,

#lscpu |grep cppc.

Windows maybe don`t depends on this CPUID bit, but Linux detect the CPUID and set cppc flag at kernel booting. no cppc flag, amd-pstate driver cannot load so far.
Comment 68 Chema 2024-08-01 12:02:32 UTC
(In reply to Perry Yuan(AMD) from comment #67)
> https://www.amd.com/content/dam/amd/en/documents/processor-tech-docs/
> programmer-references/55901_B1_pub_053.zip 
> 
> Page 120.
> 
> CPUID_Fn80000008_EBX [Extended Feature Extensions ID EBX]  
> Bit 27 CPPC. Read-only. Reset: 1. Collaborative Processor Performance
> Control.
> 
> sudo cpuid -l 0x80000008 -r
> CPU 0:
>    0x80000008 0x00: eax=0x00003030 ebx=0x111ef257 ecx=0x0000400f
> edx=0x00010000
> 
> Bit 27 = 0, that means BIOS didn`t enable CPPC capability, OS cannot detect
> the CPPC flag on the system, 
> 
> you can check lscpu output,
> 
> #lscpu |grep cppc.
> 
> Windows maybe don`t depends on this CPUID bit, but Linux detect the CPUID
> and set cppc flag at kernel booting. no cppc flag, amd-pstate driver cannot
> load so far.

Ok, I understand, so ASUS is not doing it in the standard way.

I have contacted  them and I am waiting for a response, but being more should bring more attention, I don't know if you Perry could do something special to contact them an press them in some way, as I am aware that they only support windows officially, I (and I think all of use in this thread) would be very thankful to you.

Also in the case that they didn't want to make the change, what solution we could potentially create, I have done system development a few times, I don't know if it is possible to create some kind of driver of module for the kernel that modified this behaviour.

Also, if all the others in this thread with the same problem could contact ASUS to write a ticket, may catch their attention to this matter.
Comment 69 Chema 2024-08-03 18:54:11 UTC
Created attachment 306661 [details]
Smokeless UAMF options

I have booted Smokeless UAMF to see the hidden settings in the bios

But so far I didnt find anything related to CPPC in all the aviable paths

The only thing that seems similar is something about "Custom Core Pstates" option and PPC adjustment in the CPU configuration page.

I attach 2 videos, one showing all the aviable bios options and that there is not one for CPPC and the second video showing the CPU configuration page.

Sorry for the bad quality of the video, but the max size attachment is 5mb, I can provide links to videos in higher res.

Hope that this sheds some light.
Comment 70 Chema 2024-08-03 18:56:20 UTC
Created attachment 306662 [details]
The second video of the smokeless uamf video

Second video
Comment 71 Dacian B 2024-08-04 15:00:15 UTC
After reading @Chema's last comments, i also booted up Smokeless UAMF and tried to find the CPPC setting, but for me it seems its not there... From Arch's wiki: "Change Enable CPPC , usually found in the AMD CBS > NBIO > SMU > CPPC, from Auto to Enabled, or any similar settings in your UEFI. If they are not present, consult the vendor website for an update."

When i access the CBS section in UAMF i have options only to set iGPU stuff (and limited at the frame buffer size).
Comment 72 Chema 2024-08-04 23:50:04 UTC
Created attachment 306666 [details]
ACPI tables looks ok

Ok, I have done many things since last comment that might shed some light to this matter.


I have disassembled the ACPI tables of the laptop with latest BIOS (306)
The attacment is the ACPI table that contains the _CPC objects definition.

As UEFI defines:
- https://uefi.org/specs/ACPI/6.5/08_Processor_Configuration_and_Control.html?highlight=cppc#collaborative-processor-performance-control
In the line 381 it defines the _CPC object of the first thread of the processor
and in the line 522 it defines the CPPC Enable Register as in the ACPI specification, and it seems that the register is implemented correctly.

So three questions raises here to me:

  - Why smokeless UAMF is not showing the option?
  - Why is not linux reading it correctly if it is implemented?
  - I am reading wrong the ACPI table and this means oher thing?

So to me looks that we cant do nothing in the ACPI tables to enable the register as it is already correct in the current tables.


Also I have searched through the kernel code implementation of arch to see how the CPPC thing is being enabled, and looks like the code of the function functions in two ways:

   - Hardcoded condition for some processors to enable by default
   - Or lastly check the CPUID bit 27 is set to 1

https://github.com/archlinux/linux/blob/b1bc554e009e3aeed7e4cfd2e717c7a34a98c683/arch/x86/kernel/acpi/cppc.c#L14

I dont know why is it not working the last part as the register is correctly implemented. But what I know is that this system configuration has a configuration of:
    -  boot_cpu_data.x86 = 25 or 0x19
    -  boot_cpu_data.x86_model = 117 or 0x75
Done with command (lscpu | grep 'CPU family' && lscpu | grep 'Model:')
So clearly the hardcoded conditions do not apply to this system configuration

Given this for me only 2 posible solutions appear:

    - Asus fixes this, but, may not seem probably to me as they do not support
      linux and also the BIOS seems to correctly implement the ACPI tables.
      And of course the fact that they didnt say nothing about this matter.

    - We try to debug why the system is not reading/setting correctly the
      CPPC register or what is really happening

    - We path the linux kernel to include a condition to support this system
      Should be pretty simple, only add an "&&" to the if confition.


And I dont know if also a possible solution my be to not implement the CPPC Enable Register in the ACPI table so that OSPM enables CPPC by default as says in this link? https://uefi.org/specs/ACPI/6.5/08_Processor_Configuration_and_Control.html?highlight=cppc#cppc-enable-register

Of course it would be needed to create the updated table and use intrd to make the linux kernel https://docs.kernel.org/admin-guide/acpi/initrd_table_override.html
Comment 73 Chema 2024-08-05 13:11:26 UTC
Also I see that in the kernel logs when booting it says the following:


☁  ~  sudo dmesg | grep CPPC
[    1.565705] ACPI CPPC: Parsed CPC struct for CPU: 0
[    1.565845] ACPI CPPC: Parsed CPC struct for CPU: 1
[    1.565928] ACPI CPPC: Parsed CPC struct for CPU: 2
[    1.566022] ACPI CPPC: Parsed CPC struct for CPU: 3
[    1.566136] ACPI CPPC: Parsed CPC struct for CPU: 4
[    1.566246] ACPI CPPC: Parsed CPC struct for CPU: 5
[    1.566365] ACPI CPPC: Parsed CPC struct for CPU: 6
[    1.566476] ACPI CPPC: Parsed CPC struct for CPU: 7
[    1.566566] ACPI CPPC: Parsed CPC struct for CPU: 8
[    1.566651] ACPI CPPC: Parsed CPC struct for CPU: 9
[    1.566736] ACPI CPPC: Parsed CPC struct for CPU: 10
[    1.566844] ACPI CPPC: Parsed CPC struct for CPU: 11
[    1.566952] ACPI CPPC: Parsed CPC struct for CPU: 12
[    1.567067] ACPI CPPC: Parsed CPC struct for CPU: 13
[    1.567191] ACPI CPPC: Parsed CPC struct for CPU: 14
[    1.567341] ACPI CPPC: Parsed CPC struct for CPU: 15
[    1.585000] amd_pstate: AMD CPPC shared memory based functionality is supported
[    1.586011] ACPI CPPC: _CPC in PCC is not supported
[    1.586134] ACPI CPPC: _CPC in PCC is not supported
[    1.586204] ACPI CPPC: _CPC in PCC is not supported
[    1.586230] ACPI CPPC: _CPC in PCC is not supported
[    1.586275] ACPI CPPC: _CPC in PCC is not supported
[    1.586302] ACPI CPPC: _CPC in PCC is not supported
[    1.586347] ACPI CPPC: _CPC in PCC is not supported
[    1.586376] ACPI CPPC: _CPC in PCC is not supported
[    1.586412] ACPI CPPC: _CPC in PCC is not supported
[    1.586469] ACPI CPPC: _CPC in PCC is not supported
[    1.586494] ACPI CPPC: _CPC in PCC is not supported
[    1.586530] ACPI CPPC: _CPC in PCC is not supported
[    1.586579] ACPI CPPC: _CPC in PCC is not supported
[    1.586616] ACPI CPPC: _CPC in PCC is not supported
[    1.586644] ACPI CPPC: _CPC in PCC is not supported
[    1.586669] ACPI CPPC: _CPC in PCC is not supported


And that logs are thrown in:

    - L879 cppc_acpi.c
    - L1491 cppc_api.c

And first one means that 
/**
 * acpi_cppc_processor_probe - Search for per CPU _CPC objects.
 * @pr: Ptr to acpi_processor containing this CPU's logical ID.
 *
 *	Return: 0 for success or negative value for err.
 */
int acpi_cppc_processor_probe(struct acpi_processor *pr)
is working correctly

But then "int cppc_set_epp_perf" throwing because of "if (CPC_IN_PCC(epp_set_reg) || CPC_IN_PCC(auto_sel_reg))" is not met

So can correclty read the CPC object of ACPI but not write with PCC in the CPC obj?
Comment 74 xiaojian.du 2024-08-05 14:32:47 UTC
I checked on my desktop PC, based on Asus B650M mainboard.

"Advanced option-> CPU option -> PSS disable/enable"is the switch option of CPPC.
Disabling *PSS* option will make Win11 OS switch to generic ACPI processor pm management.

Back to this issue, somehow ASUS has enabled CPPC support in bios,as it showes "PSS ENABLED" in this video. 
 https://bugzilla.kernel.org/attachment.cgi?id=306662

But the key CPUID bit of CPPC func enablement still is not written "1" in this new version BIOS, besides, the dmesg log shows the _cpc obj  in the ACPI table is null,
"ACPI CPPC: _CPC in PCC is not supported".

So the conclusion is, CPPC func is enabled in this new version BIOS and Win OS is using it, but it doesn't support Linux OS.

Maybe ASUS didn't put too much notice to the user case on linux os?
Comment 75 Chema 2024-08-05 20:16:28 UTC
(In reply to xiaojian.du from comment #74)
> I checked on my desktop PC, based on Asus B650M mainboard.
> 
> "Advanced option-> CPU option -> PSS disable/enable"is the switch option of
> CPPC.
> Disabling *PSS* option will make Win11 OS switch to generic ACPI processor
> pm management.
> 
> Back to this issue, somehow ASUS has enabled CPPC support in bios,as it
> showes "PSS ENABLED" in this video. 
>  https://bugzilla.kernel.org/attachment.cgi?id=306662
> 
> But the key CPUID bit of CPPC func enablement still is not written "1" in
> this new version BIOS, besides, the dmesg log shows the _cpc obj  in the
> ACPI table is null,
> "ACPI CPPC: _CPC in PCC is not supported".
> 
> So the conclusion is, CPPC func is enabled in this new version BIOS and Win
> OS is using it, but it doesn't support Linux OS.
> 
> Maybe ASUS didn't put too much notice to the user case on linux os?

Thanks for checking

It seems that way, asus has made it work in windows but not in the standard way needed by linux. But either way the amd pstate driver is working, but the epp change is not working.

What could be the easiest to try to solve it from our part, modifying the kernel   in some way? If windows is working it should be a workaround to make it work maybe disable some checks or something like this https://github.com/archlinux/linux/blob/b1bc554e009e3aeed7e4cfd2e717c7a34a98c683/arch/x86/kernel/acpi/cppc.c#L14 or this https://github.com/archlinux/linux/blob/defaf1a2113a22b00dfa1abc0fd2014820eaf065/drivers/acpi/cppc_acpi.c#L1491...?

Cause ASUS has not made any comment about it, I dont know from your part it they have internally said something to you.

Thanks
Comment 76 Kyrylo Budnyk 2024-08-06 08:29:12 UTC
Hello!

I have Lenovo V15 (Ryzen 3 7320U)  Laptop (without any BIOS CPPC options).
I'm using Debian 12 with 6.9.7 kernel (from backports) + compiled kernel with full MSR support.

I'm having the same issue with "Unknown error 524".
How can i help with solving the problem?
What system data/outputs do you need?
Comment 77 xiaojian.du 2024-08-06 09:11:04 UTC
(In reply to Chema from comment #75)

> Thanks for checking
> 
> It seems that way, asus has made it work in windows but not in the standard
> way needed by linux. But either way the amd pstate driver is working, but
> the epp change is not working.
> 
> What could be the easiest to try to solve it from our part, modifying the
> kernel   in some way? If windows is working it should be a workaround to
> make it work maybe disable some checks or something like this
> https://github.com/archlinux/linux/blob/
> b1bc554e009e3aeed7e4cfd2e717c7a34a98c683/arch/x86/kernel/acpi/cppc.c#L14 or
> this
> https://github.com/archlinux/linux/blob/
> defaf1a2113a22b00dfa1abc0fd2014820eaf065/drivers/acpi/cppc_acpi.c#L1491...?
> 
> Cause ASUS has not made any comment about it, I dont know from your part it
> they have internally said something to you.
> 
> Thanks

A simple tricky hack can't solve this problem.
From the perspective of amd-pstate driver, it is the most reliable solution to check the CPUID register.
Any other workaround to enable CPPC feature forcely and load epp mode in Linux OS is ugly and unacceptable.
I recommand to wait for further actions from Asus.

Anyway, acpi-cpu driver still can be the second option for now.
Comment 78 Chema 2024-08-06 14:27:38 UTC
(In reply to xiaojian.du from comment #77)
> (In reply to Chema from comment #75)
> 
> > Thanks for checking
> > 
> > It seems that way, asus has made it work in windows but not in the standard
> > way needed by linux. But either way the amd pstate driver is working, but
> > the epp change is not working.
> > 
> > What could be the easiest to try to solve it from our part, modifying the
> > kernel   in some way? If windows is working it should be a workaround to
> > make it work maybe disable some checks or something like this
> > https://github.com/archlinux/linux/blob/
> > b1bc554e009e3aeed7e4cfd2e717c7a34a98c683/arch/x86/kernel/acpi/cppc.c#L14 or
> > this
> > https://github.com/archlinux/linux/blob/
> > defaf1a2113a22b00dfa1abc0fd2014820eaf065/drivers/acpi/cppc_acpi.c#L1491...?
> > 
> > Cause ASUS has not made any comment about it, I dont know from your part it
> > they have internally said something to you.
> > 
> > Thanks
> 
> A simple tricky hack can't solve this problem.
> From the perspective of amd-pstate driver, it is the most reliable solution
> to check the CPUID register.
> Any other workaround to enable CPPC feature forcely and load epp mode in
> Linux OS is ugly and unacceptable.
> I recommand to wait for further actions from Asus.
> 
> Anyway, acpi-cpu driver still can be the second option for now.

Thanks

But have you any initial idea of how a workaround could work? Obviously for developing it my self locally and so people could have some solution while asus does something, if ever does, considering they do not support linux

Yes, currently I use acpi-cpu, but powersave governor makes the laptop laggy and schedutil that should be a balance makes it hot and drains battery faster.

So currently for my self linux in this laptop is not much a good option, that why I was wondering if a local workaround would be possible.

Thanks.
Comment 79 al0uette 2024-09-08 15:15:40 UTC
Hi everyone, I have some new discoveries. I think the problem lies in that `if (CPC_IN_PCC(epp_set_reg) || CPC_IN_PCC(auto_sel_reg))` needs one of the two registers satisfies that `(cpc)->type == ACPI_TYPE_BUFFER && (cpc)->cpc_entry.reg.space_id == ACPI_ADR_SPACE_PLATFORM_COMM`. However in asus's BIOS, epp_set_reg's type is integer, and its space_id is ACPI_ADR_SPACE_SYSTEM_MEMORY, and auto_sel_reg's type is buffer, and its space id is ACPI_ADR_SPACE_FIXED_HARDWARE, so these conditions are not met. After manually bypassing this check, another problem rises, pcc_ss_id on every cpu is -1.

According to acpi specification, letting auto_sel_reg be a functional fixed hardware is valid, so my question is, will functional fixed hardware be supported? And what causes pcc_ss_id being -1 on every cpu? I'll appreciate it if someone can answer my questions.
Comment 80 al0uette 2024-09-08 15:33:48 UTC
Just found that pcc_ss_id == 1 is also because many element in _CPC is Functional Fixed Hardware
Comment 81 al0uette 2024-09-08 15:34:25 UTC
(In reply to al0uette from comment #80)
> Just found that pcc_ss_id == 1 is also because many element in _CPC is
> Functional Fixed Hardware

Edit: pcc_ss_id == -1
Comment 82 al0uette 2024-09-09 02:54:07 UTC
Created attachment 306832 [details]
Patch for cppc_set_epp_perf

I've made a patch to make the kernel write to the epp register even when the register is not in PCC. The patch seems to work for me, I can set epp without unknown error 524 and the power consumption is lower than before.
Comment 83 Mario Limonciello (AMD) 2024-09-09 13:54:15 UTC
@al0uette@outlook.com:

Very interesting observation.  I did double check the ACPI spec and found this.

'''
Starting with ACPI Specification 6.2, all _CPC registers can be in PCC, System Memory, System IO, or Functional Fixed Hardware address spaces. OSPM support for this more flexible register space scheme is indicated by the “Flexible Address Space for CPPC Registers” _OSC bit.
'''

So yes I do think this 'direction' is OK to go, but it probably needs an extra check on the ACPI 6.2 version.  Something like this:

if (acpi_gbl_FADT.header.revision > 6 || 
   (acpi_gbl_FADT.header.revision == 6 && acpi_gbl_FADT.minor_revision >= 2))

Can you please spin your patch to add that and a proper commit message and then post it to the linux-acpi mailing list?
Comment 84 al0uette 2024-09-09 14:43:29 UTC
(In reply to Mario Limonciello (AMD) from comment #83)
> @al0uette@outlook.com:
> 
> Very interesting observation.  I did double check the ACPI spec and found
> this.
> 
> '''
> Starting with ACPI Specification 6.2, all _CPC registers can be in PCC,
> System Memory, System IO, or Functional Fixed Hardware address spaces. OSPM
> support for this more flexible register space scheme is indicated by the
> “Flexible Address Space for CPPC Registers” _OSC bit.
> '''
> 
> So yes I do think this 'direction' is OK to go, but it probably needs an
> extra check on the ACPI 6.2 version.  Something like this:
> 
> if (acpi_gbl_FADT.header.revision > 6 || 
>    (acpi_gbl_FADT.header.revision == 6 && acpi_gbl_FADT.minor_revision >= 2))
> 
> Can you please spin your patch to add that and a proper commit message and
> then post it to the linux-acpi mailing list?

I don't know how to do that, can you help me? BTW I heard that AMD seems not quite happy with the Functional Fixed Hardware implementation, is there any performance difference between PCC and FFH implementation? If there is noticeable performance difference, can AMD urge ASUS to switch to PCC implementation?
Comment 85 al0uette 2024-09-09 15:00:13 UTC
Created attachment 306840 [details]
new patch including acpi version checking

Do you think this is appropriate? @mario.limonciello@amd.com
Comment 86 Mario Limonciello (AMD) 2024-09-09 15:02:38 UTC
Created attachment 306841 [details]
opt EPP register writes from FFH

Here try this patch.  If this works, I'll submit it for review.
Comment 87 Mario Limonciello (AMD) 2024-09-09 15:04:41 UTC
Created attachment 306842 [details]
opt EPP register writes from FFH (v2)

Sorry, posted the wrong version.  Use this one.
Comment 88 Mario Limonciello (AMD) 2024-09-09 21:18:19 UTC
Created attachment 306844 [details]
opt EPP register writes from FFH (v3)

I'll re-open this bug to see if we come up with something that is upstreamable.

Someone did some testing on another bug report and found a problem.
Here is an updated version.

Can you please share the kernel log with this in place as well as the cpupower output?
Comment 89 derp 2024-09-09 21:31:55 UTC
after testing v2 of the patch on my
[   26.705565] Hardware name: ASUSTeK COMPUTER INC. ASUS Zenbook 14 UM3406HA_UM3406HA/UM3406HA, BIOS UM3406HA.304 06/05/2024

I found it to crash with

[    3.384772] UBSAN: shift-out-of-bounds in drivers/acpi/cppc_acpi.c:1117:9
[    3.384774] shift exponent 64 is too large for 64-bit type 'long unsigned int'

the reason turned out to be: auto_sel_reg real type was ACPI_TYPE_INTEGER(with value 0x1) and cpc_write isn't guarded against ACPI_TYPE_INTEGER value-only registers and performs invalid operation

by ignoring auto_sel_reg entirely, I gained a working CPPC, which inspired v3 of the patch
Comment 90 derp 2024-09-09 21:54:26 UTC
There's no ideal diagnostic tool for that, as for frequencies they are seen as something like that, but it was probably the same or very close without CPPC

(I wouldn't mind if all of these somehow got to 400Mhz instead of 1400Mhz though)

cat /proc/cpuinfo|grep MHz|sort
cpu MHz         : 1395.796
cpu MHz         : 1396.448
cpu MHz         : 1397.373
cpu MHz         : 1397.388
cpu MHz         : 1397.403
cpu MHz         : 1397.414
cpu MHz         : 1397.434
cpu MHz         : 400.000
cpu MHz         : 400.000
cpu MHz         : 400.000
cpu MHz         : 400.000
cpu MHz         : 400.000
cpu MHz         : 400.000
cpu MHz         : 400.000
cpu MHz         : 400.000
cpu MHz         : 400.000

the main difference can be seen in amdgpu_top, which for some reason treats CPU cores as GPU cores
it can show mW per Core, and even when frequency stays at 1400, the mW power assigned to these cores is much much smaller, as well as total "GFX" power which is the total APU power, I guess

"GFX" is now about 700 mW and "SoC" about 400mW when idle

power savings are about 1W for system idle and low-power activities
Comment 91 derp 2024-09-09 22:06:01 UTC
also, smoothness of system animations on power-saving profile has visibly improved (like moving windows in KWin)
it also fixed an issue with drastic power draw when basic GPU activities are started after being idle: like moving windows in KWin or scrolling in chrome

it used to quickly increase power draw from 2W to 5W, now it increases power draw from 1W to 2W-3W at most
(as measured by "GPU Power" which is I guess APU total power)
Comment 92 al0uette 2024-09-10 00:21:33 UTC
(In reply to Mario Limonciello (AMD) from comment #87)
> Created attachment 306842 [details]
> opt EPP register writes from FFH (v2)
> 
> Sorry, posted the wrong version.  Use this one.

v2 doesn't work, it shows "Bad address", testing v3 now
Comment 93 al0uette 2024-09-10 00:49:31 UTC
(In reply to derp from comment #90)
> There's no ideal diagnostic tool for that, as for frequencies they are seen
> as something like that, but it was probably the same or very close without
> CPPC
> 
> (I wouldn't mind if all of these somehow got to 400Mhz instead of 1400Mhz
> though)
> 
> cat /proc/cpuinfo|grep MHz|sort
> cpu MHz         : 1395.796
> cpu MHz         : 1396.448
> cpu MHz         : 1397.373
> cpu MHz         : 1397.388
> cpu MHz         : 1397.403
> cpu MHz         : 1397.414
> cpu MHz         : 1397.434
> cpu MHz         : 400.000
> cpu MHz         : 400.000
> cpu MHz         : 400.000
> cpu MHz         : 400.000
> cpu MHz         : 400.000
> cpu MHz         : 400.000
> cpu MHz         : 400.000
> cpu MHz         : 400.000
> cpu MHz         : 400.000
> 
> the main difference can be seen in amdgpu_top, which for some reason treats
> CPU cores as GPU cores
> it can show mW per Core, and even when frequency stays at 1400, the mW power
> assigned to these cores is much much smaller, as well as total "GFX" power
> which is the total APU power, I guess
> 
> "GFX" is now about 700 mW and "SoC" about 400mW when idle
> 
> power savings are about 1W for system idle and low-power activities

Strangely, the gfx power almost always stays above 2000mw for me, the lowest value it can go is about 1600mw, but it can only stay there for just 1 second. Is it because our cpu are different? But even though my power consumption is higher than you, it's still better than acpi-cpufreq and the cpu temperature is significantly lower than acpi-cpufreq
Comment 94 al0uette 2024-09-10 01:20:02 UTC
(In reply to Mario Limonciello (AMD) from comment #88)
> Created attachment 306844 [details]
> opt EPP register writes from FFH (v3)
> 
> I'll re-open this bug to see if we come up with something that is
> upstreamable.
> 
> Someone did some testing on another bug report and found a problem.
> Here is an updated version.
> 
> Can you please share the kernel log with this in place as well as the
> cpupower output?

v3 doesn't work for me either, it shows device or resource busy
Comment 95 al0uette 2024-09-10 01:22:43 UTC
(In reply to al0uette from comment #94)
> (In reply to Mario Limonciello (AMD) from comment #88)
> > Created attachment 306844 [details]
> > opt EPP register writes from FFH (v3)
> > 
> > I'll re-open this bug to see if we come up with something that is
> > upstreamable.
> > 
> > Someone did some testing on another bug report and found a problem.
> > Here is an updated version.
> > 
> > Can you please share the kernel log with this in place as well as the
> > cpupower output?
> 
> v3 doesn't work for me either, it shows device or resource busy

Sorry, I made a mistake, it works fine, the reason it didn't work is that I mistakenly switched scaling_governor to performance
Comment 96 Mario Limonciello (AMD) 2024-09-10 18:28:38 UTC
I submitted it for review: 
https://lore.kernel.org/linux-acpi/20240910031524.106387-1-superm1@kernel.org/

Rafael accepted that patch for 6.12, so we'll see this solution in 6.12-rc1.
Comment 97 xiaojian.du 2024-09-11 04:32:26 UTC
Thanks for all of you guys.
This thread will be the reference for the similar issue on many other OEM devices.
Checked the background, it seems ASUS always uses a different palce to store pstate info.

like this commit:
[PATCH v6 03/14] ACPI: CPPC: implement support for SystemIO registers
From: Steven Noonan <steven@valvesoftware.com>

According to the ACPI v6.2 (and later) specification, SystemIO can be
used for _CPC registers. This teaches cppc_acpi how to handle such
registers.

This patch was tested using the amd_pstate driver on my Zephyrus G15
(model GA503QS) using the current version 410 BIOS, which uses
a SystemIO register for the HighestPerformance element in _CPC.

https://lkml.org/lkml/2021/12/19/90
Comment 98 Len Zhang 2024-09-23 15:57:32 UTC
(In reply to al0uette from comment #95)
> (In reply to al0uette from comment #94)
> > (In reply to Mario Limonciello (AMD) from comment #88)
> > > Created attachment 306844 [details]
> > > opt EPP register writes from FFH (v3)
> > > 
> > > I'll re-open this bug to see if we come up with something that is
> > > upstreamable.
> > > 
> > > Someone did some testing on another bug report and found a problem.
> > > Here is an updated version.
> > > 
> > > Can you please share the kernel log with this in place as well as the
> > > cpupower output?
> > 
> > v3 doesn't work for me either, it shows device or resource busy
> 
> Sorry, I made a mistake, it works fine, the reason it didn't work is that I
> mistakenly switched scaling_governor to performance

Thank you for all the work, is there a reason why it got error at performance governor but not at powersave?
Comment 99 Mario Limonciello (AMD) 2024-09-23 15:58:45 UTC
EPP configuration intentionally isn't available in the performance governor.

Note You need to log in before you can comment on or make changes to this bug.