Bug 218171
Summary: | amd-pstate not loading on zen2 threadripper 3960x (trx40 | ||
---|---|---|---|
Product: | Power Management | Reporter: | Gino Badouri (badouri.g) |
Component: | cpufreq | Assignee: | linux-pm (linux-pm) |
Status: | RESOLVED ANSWERED | ||
Severity: | normal | CC: | alessio.disandro, badouri.g, gilvbp, johnypean, ozin, Perry.Yuan, pnascimento, sam, vishalrao |
Priority: | P3 | ||
Hardware: | AMD | ||
OS: | Linux | ||
Kernel Version: | Subsystem: | ||
Regression: | No | Bisected commit-id: | |
Attachments: |
Asus ROG Zenith II Extreme bios version 1802 (2023/06/20) with CPPC and Preferred Core enabled
Gigabyte TRX40 DESIGNARE BIOS v. FD TR 3970X ACPI dump for Gigabyte TRX40 AORUS PRO WIFI with a 3970X TR ACPI tables for TR 3970X on MSI Creator TRX40 HWiNFO CPPC order in Windows Windows Event Viewer CPPC log patch to enable amd psate driver for Family 17H |
Description
Gino Badouri
2023-11-21 09:51:31 UTC
Hi there, I'm running linux 6.5.11 on a Asus ROG Zenith II Extreme (TRX40) with a AMD Threadripper 3960X and the amd-pstate driver refuses to load due to missing _CPC objects: [ 0.477523] amd_pstate: the _CPC object is not present in SBIOS or ACPI disabled However both CPPC and AMD Preferred core support is enabled in the firmware. Also I can confirm there are _CPC entries in the ACPI tables. acpidump > acpidump.out acpixtract -a acpidump.out iasl *.dat grep -i cpc *.dsl ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control ssdt7.dsl: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control Any ideas why the driver cannot find them? I could upload the dsl files somewhere if it helps. Have you checked your BIOS setting? Some BIOS version has the CPPC option to change CPPC default state. Hi Perry, I have the following in: Advanced > AMD CBS > NBIO Common Options > SMU Common Options CPPC (Auto / Enabled / Disabled): Enabled CPPC Preferred Cores: Enabled There is no setting to change the default state. But there seems to be more reports of TRX40 users who are having the same problem: https://forum.level1techs.com/t/is-there-cppc-support-on-threadripper-3000-platform/195804/5 https://www.reddit.com/r/threadripper/comments/151l6rn/threadripper_amdpstate_driver_on_arch/ https://www.reddit.com/r/linux/comments/15p4bfs/comment/jvvr12s/?utm_source=reddit&utm_medium=web2x&context=3 A while ago I was running a custom Xanmod kernel which had the amd-pstate patchset applied before it was sent upstream. It was an older revision of the driver of course but it was working for me. The only requirement back then was setting the "shared_mem=1" flag on the kernel command line. But this flag doesn't seem to fix it for me when running linux 6.5. (In reply to Gino Badouri from comment #3) > Hi Perry, > > I have the following in: Advanced > AMD CBS > NBIO Common Options > SMU > Common Options > > CPPC (Auto / Enabled / Disabled): Enabled > CPPC Preferred Cores: Enabled > > There is no setting to change the default state. > > But there seems to be more reports of TRX40 users who are having the same > problem: > > https://forum.level1techs.com/t/is-there-cppc-support-on-threadripper-3000- > platform/195804/5 > > https://www.reddit.com/r/threadripper/comments/151l6rn/ > threadripper_amdpstate_driver_on_arch/ > > https://www.reddit.com/r/linux/comments/15p4bfs/comment/jvvr12s/ > ?utm_source=reddit&utm_medium=web2x&context=3 > > A while ago I was running a custom Xanmod kernel which had the amd-pstate > patchset applied before it was sent upstream. > It was an older revision of the driver of course but it was working for me. > The only requirement back then was setting the "shared_mem=1" flag on the > kernel command line. > But this flag doesn't seem to fix it for me when running linux 6.5. thanks for your information, could you show me the output of lscpu? And I would like to see if the mainline kernel work for https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/?h=v6.7-rc2 If mainline 6.7 still have problem on your system, I would guess there are some missing thing we need to figure out. Perry. Hi Perry, Thanks for looking into this. I've updated to 6.7 rc2. # uname -a Linux pve 6.7.0-060700rc2-generic #202311192332 SMP PREEMPT_DYNAMIC Sun Nov 19 23:40:20 UTC 2023 x86_64 GNU/Linux # cat /proc/cmdline BOOT_IMAGE=/boot/vmlinuz-6.7.0-060700rc2-generic root=/dev/mapper/pve-root ro quiet iommu=pt amd_iommu=on kvm_amd.npt=1 kvm_amd.avic=1 nmi_watchdog=0 video=vesafb:off video=efifb:off video=simplefb:off nomodeset initcall_blacklist=sysfb_init modprobe.blacklist=nouveau modprobe.blacklist=amdgpu modprobe.blacklist=radeon modprobe.blacklist=nvidia hugepagesz=1G default_hugepagesz=2M amd_pstate=active # lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Address sizes: 43 bits physical, 48 bits virtual Byte Order: Little Endian CPU(s): 48 On-line CPU(s) list: 0-47 Vendor ID: AuthenticAMD BIOS Vendor ID: Advanced Micro Devices, Inc. Model name: AMD Ryzen Threadripper 3960X 24-Core Processor BIOS Model name: AMD Ryzen Threadripper 3960X 24-Core Processor Unknown CPU @ 3.8GHz BIOS CPU family: 107 CPU family: 23 Model: 49 Thread(s) per core: 2 Core(s) per socket: 24 Socket(s): 1 Stepping: 0 Frequency boost: enabled CPU(s) scaling MHz: 58% CPU max MHz: 3800.0000 CPU min MHz: 2200.0000 BogoMIPS: 7585.72 Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mc a cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall n x mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_go od nopl nonstop_tsc cpuid extd_apicid aperfmperf rapl p ni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy sv m extapic cr8_legacy abm sse4a misalignsse 3dnowprefetc h osvw ibs skinit wdt tce topoext perfctr_core perfctr_ nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate ssbd mba ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bm i2 cqm rdt_a rdseed adx smap clflushopt clwb sha_ni xsa veopt xsavec xgetbv1 cqm_llc cqm_occup_llc cqm_mbm_tota l cqm_mbm_local clzero irperf xsaveerptr rdpru wbnoinvd amd_ppin arat npt lbrv svm_lock nrip_save tsc_scale vm cb_clean flushbyasid decodeassists pausefilter pfthresh old avic v_vmsave_vmload vgif v_spec_ctrl umip rdpid ov erflow_recov succor smca sev sev_es Virtualization features: Virtualization: AMD-V Caches (sum of all): L1d: 768 KiB (24 instances) L1i: 768 KiB (24 instances) L2: 12 MiB (24 instances) L3: 128 MiB (8 instances) NUMA: NUMA node(s): 1 NUMA node0 CPU(s): 0-47 Vulnerabilities: Gather data sampling: Not affected Itlb multihit: Not affected L1tf: Not affected Mds: Not affected Meltdown: Not affected Mmio stale data: Not affected Retbleed: Mitigation; untrained return thunk; SMT enabled with ST IBP protection Spec rstack overflow: Mitigation; Safe RET Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization Spectre v2: Mitigation; Retpolines, IBPB conditional, STIBP always- on, RSB filling, PBRSB-eIBRS Not affected Srbds: Not affected Tsx async abort: Not affected Unfortunately the driver is still printing: [ 0.640246] amd_pstate: the _CPC object is not present in SBIOS or ACPI disabled If it helps, I've uploaded the acpi tables in both dat and dsl format here: https://mega.nz/file/apkElTBL#JEmN0vmBSh7d-hbDiN-V0lwG7mwZQfitqnv4iVk0ACU Great, let me check the ACPI tables. Could you attache the dump file to this bz? I cannot access the link to mega.nz. Perry. Created attachment 305458 [details]
Asus ROG Zenith II Extreme bios version 1802 (2023/06/20) with CPPC and Preferred Core enabled
Please try this and see if the files created. echo "=============norminal freq===============================" cat /sys/devices/system/cpu/cpu*/acpi_cppc/nominal_freq echo "=============norminal perf===============================" cat /sys/devices/system/cpu/cpu*/acpi_cppc/nominal_perf echo "=============highest_perf perf===============================" cat /sys/devices/system/cpu/cpu*/acpi_cppc/highest_perf echo "=============lowest_nonlinear_perf perf===============================" cat /sys/devices/system/cpu/cpu*/acpi_cppc/lowest_nonlinear_perf echo "=============lowest perf===============================" cat /sys/devices/system/cpu/cpu*/acpi_cppc/lowest_perf -----邮件原件----- 发件人: bugzilla-daemon@kernel.org <bugzilla-daemon@kernel.org> 发送时间: 2023年11月22日 16:45 收件人: linux-pm@vger.kernel.org 主题: [Bug 218171] amd-pstate not loading on zen2 threadripper 3960x (trx40 [你通常不会收到来自 bugzilla-daemon@kernel.org 的电子邮件。请访问 https://aka.ms/LearnAboutSenderIdentification,以了解这一点为什么很重要] EXTERNAL EMAIL https://bugzilla.kernel.org/show_bug.cgi?id=218171 --- Comment #6 from Perry Yuan(AMD) (Perry.Yuan@amd.com) --- Great, let me check the ACPI tables. Could you attache the dump file to this bz? Test I cannot access the link to mega.nz. Perry. -- You may reply to this email to add a comment. You are receiving this mail because: You are the assignee for the bug. This email (including its attachments) is intended only for the person or entity to which it is addressed and may contain information that is privileged, confidential or otherwise protected from disclosure. Unauthorized use, dissemination, distribution or copying of this email or the information herein or taking any action in reliance on the contents of this email or the information herein, by anyone other than the intended recipient, or an employee or agent responsible for delivering the message to the intended recipient, is strictly prohibited. If you are not the intended recipient, please do not read, copy, use or disclose any part of this e-mail to others. Please notify the sender immediately and permanently delete this e-mail and any attachments if you received it in error. Internet communications cannot be guaranteed to be timely, secure, error-free or virus-free. The sender does not accept liability for any errors or omissions. Hi Perry, Unfortunately they're not present: =============norminal freq=============================== cat: '/sys/devices/system/cpu/cpu*/acpi_cppc/nominal_freq': No such file or directory =============norminal perf=============================== cat: '/sys/devices/system/cpu/cpu*/acpi_cppc/nominal_perf': No such file or directory =============highest_perf perf=============================== cat: '/sys/devices/system/cpu/cpu*/acpi_cppc/highest_perf': No such file or directory =============lowest_nonlinear_perf perf=============================== cat: '/sys/devices/system/cpu/cpu*/acpi_cppc/lowest_nonlinear_perf': No such file or directory =============lowest perf=============================== cat: '/sys/devices/system/cpu/cpu*/acpi_cppc/lowest_perf': No such file or directory But I guess this is expected as the driver still does not load with linux kernel 6.7.0 rc2: [ 0.640246] amd_pstate: the _CPC object is not present in SBIOS or ACPI disabled But if you look in ssdt7.dsl from the attachment I just posted, you can clearly see the _CPC entries are present. They look like: Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control { 0x17, 0x03, .... (In reply to Gino Badouri from comment #10) > Hi Perry, > > Unfortunately they're not present: > > =============norminal freq=============================== > cat: '/sys/devices/system/cpu/cpu*/acpi_cppc/nominal_freq': No such file or > directory > =============norminal perf=============================== > cat: '/sys/devices/system/cpu/cpu*/acpi_cppc/nominal_perf': No such file or > directory > =============highest_perf perf=============================== > cat: '/sys/devices/system/cpu/cpu*/acpi_cppc/highest_perf': No such file or > directory > =============lowest_nonlinear_perf perf=============================== > cat: '/sys/devices/system/cpu/cpu*/acpi_cppc/lowest_nonlinear_perf': No such > file or directory > =============lowest perf=============================== > cat: '/sys/devices/system/cpu/cpu*/acpi_cppc/lowest_perf': No such file or > directory > > But I guess this is expected as the driver still does not load with linux > kernel 6.7.0 rc2: > > [ 0.640246] amd_pstate: the _CPC object is not present in SBIOS or ACPI > disabled > > But if you look in ssdt7.dsl from the attachment I just posted, you can > clearly see the _CPC entries are present. > They look like: > > Name (_CPC, Package (0x17) // _CPC: Continuous Performance Control > { > 0x17, > 0x03, > .... Yeah, I saw that, looks like the table is not defined correctly. The values offset are all zero, let me check with internal team to see if how can we fix that if the table has problem. Package { NumEntries, // Integer Revision, // Integer HighestPerformance, // Integer or Buffer (Resource Descriptor) NominalPerformance, // Integer or Buffer (Resource Descriptor) LowestNonlinearPerformance, // Integer or Buffer (Resource Descriptor) LowestPerformance, // Integer or Buffer (Resource Descriptor) GuaranteedPerformanceRegister, // Buffer (Resource Descriptor) DesiredPerformanceRegister , // Buffer (Resource Descriptor) MinimumPerformanceRegister , // Buffer (Resource Descriptor) MaximumPerformanceRegister , // Buffer (Resource Descriptor) PerformanceReductionToleranceRegister, // Buffer (Resource Descriptor) TimeWindowRegister, // Buffer (Resource Descriptor) CounterWraparoundTime, // Integer or Buffer (Resource Descriptor) ReferencePerformanceCounterRegister, // Buffer (Resource Descriptor) DeliveredPerformanceCounterRegister, // Buffer (Resource Descriptor) PerformanceLimitedRegister, // Buffer (Resource Descriptor) CPPCEnableRegister // Buffer (Resource Descriptor) AutonomousSelectionEnable, // Integer or Buffer (Resource Descriptor) AutonomousActivityWindowRegister, // Buffer (Resource Descriptor) EnergyPerformancePreferenceRegister, // Buffer (Resource Descriptor) ReferencePerformance // Integer or Buffer (Resource Descriptor) LowestFrequency, // Integer or Buffer (Resource Descriptor) NominalFrequency // Integer or Buffer (Resource Descriptor) } Thanks, if there is any other information I can provide or if you'd like me to try/test something then please let me know. Hi Perry, A little offtopic I guess, but are you saying the acpi table is not complete or correct? Because when I tried Ryzen Master software on Windows a while ago, it was able to gather all of the performance metrics. Does it rely on the acpi tables as well? Or does it use a different method/interface for getting the information? (In reply to Gino Badouri from comment #13) > Hi Perry, > > A little offtopic I guess, but are you saying the acpi table is not complete > or correct? > Because when I tried Ryzen Master software on Windows a while ago, it was > able to gather all of the performance metrics. > Does it rely on the acpi tables as well? Or does it use a different > method/interface for getting the information? Hi Gino, I was told that you can try the latest BIOS and check the CPPC function again, if the CPPC is still not working, you need to reach out to the board vendor for technical support, it is a BIOS issue, driver side can do nothing for this. Perry. Hey folks, I hope this does not become spammy, but I have a Gigabyte TRX40 AORUS PRO WIFI (rev. 1.0) and a 3970X CPU. Is it a problem across all mobo vendors? As you can see from Gino's links in comment #3, we have at least three different mobos from Asus and Gigabyte reporting the same issue. Yes, I understand that there are some different vendors shipping the same CPU model, however the BIOS releases are from those vendors support, I confirmed that the CPPC spec mentioned the CPU can support CPPC interface, and it depends on those board vendors feature scopes as well.
from Gino:
> I have the following in: Advanced > AMD CBS > NBIO Common Options > SMU
> Common Options
>
> CPPC (Auto / Enabled / Disabled): Enabled
> CPPC Preferred Cores: Enabled
Gino said that he can see the CPPC options in the BIOS setting, I would say it is very probably a BIOS issue need to be fixed by vendors.
Perry.
Thank you Perry, I'll contact Asus support and see if they can do anything about it. For other users having the same issue. Please make sure you have CPPC and CPPC Preferred Cores enabled in the bios settings. You should be able to find it somewhere in the advanced settings under: AMD CBS > NBIO Common Options > SMU Also please share your ACPI tables, so the developers can verify them: fedora/redhat: dnf install acpica-tools debian/ubuntu: apt update apt install acpica-tools how to dump your tables: acpidump > acpidump.out acpixtract -a acpidump.out iasl *.dat zip -9 acpi_tables.zip *.dsl Then please attach your acpi_tables.zip to this bug report and share your mainboard vendor/model and bios version. (In reply to Gino Badouri from comment #17) > Thank you Perry, > > I'll contact Asus support and see if they can do anything about it. > For other users having the same issue. > Please make sure you have CPPC and CPPC Preferred Cores enabled in the bios > settings. > You should be able to find it somewhere in the advanced settings under: > AMD CBS > NBIO Common Options > SMU > > Also please share your ACPI tables, so the developers can verify them: > > fedora/redhat: > dnf install acpica-tools > > debian/ubuntu: > apt update > apt install acpica-tools > > how to dump your tables: > acpidump > acpidump.out > acpixtract -a acpidump.out > iasl *.dat > zip -9 acpi_tables.zip *.dsl > > Then please attach your acpi_tables.zip to this bug report and share your > mainboard vendor/model and bios version. thank you Gino as well, let's know if you have any questions on this. You can check the CPPC table with vendor if they confirm the CPPC is supported on the board. Hello Everyone, I dunno if its relevant but my observations regarding the problem are: As far as I understand, AMD CPUs declares CPPC via CPUID intruction. 1) cpuid 0x80000008 (ebx) CPPC bit is always 0 (disabled) whether you enable or disable CPPC in BIOS. 2) Asus AMI Bios does not have _OSC declaration for CPPC support in DSDT and SSDT tables. 3) There exists _CPC declarations in a SSDT table but since CPPC support is not declared, it is omitted by Linux kernel ? Hence, amd_pstate module declares "the _CPC object is not present in SBIOS or ACPI disabled" ? Hope it helps. Mithat Created attachment 305606 [details]
Gigabyte TRX40 DESIGNARE BIOS v. FD TR 3970X
Hi, attaching my report with acpitables:
$ sudo inxi -F
Machine:
Type: Desktop System: Gigabyte product: TRX40 DESIGNARE v: -CF serial: N/A
Mobo: Gigabyte model: TRX40 DESIGNARE serial: N/A UEFI: American Megatrends LLC. v: FD
date: 09/07/2022
CPU:
Info: 32-core model: AMD Ryzen Threadripper 3970X bits: 64 type: MT MCP cache: L2: 16 MiB
Speed (MHz): avg: 2251 min/max: 2200/3700
$ sudo dmesg | grep amd_pstate
[ 2.189961] amd_pstate: the _CPC object is not present in SBIOS or ACPI disabled
CPPC settings enabled in bios
Thank you Jan, I hope this gives the developers some more information to digest. I've reached out to Asus with a full report and a link to this thread. However I doubt they'll look into it, as the sTRX40 platform is discontinued. I'm not export on ACPI tables at all, but I'm wondering whether it's the mainboard vendor to blame for this. I believe the "AGESA" firmware which is part of the bios is responsible for setting up CPPC. And this firmware is provided by AMD to the mainboard vendors. For sTRX40 (which only lasted one generation), the latest version seems to be 1.0.0.4. Perhaps this version is too old and doesn't provide the necessary info/specification for the ACPI tables. Created attachment 305671 [details]
ACPI dump for Gigabyte TRX40 AORUS PRO WIFI with a 3970X TR
Here's mine. Note that this is a Gigabyte mobo.
Machine:
Type: Desktop System: Gigabyte product: TRX40 AORUS PRO WIFI v: -CF serial: N/A
Mobo: Gigabyte model: TRX40 AORUS PRO WIFI serial: N/A UEFI: American Megatrends LLC. v: F6
date: 09/07/2022
CPU:
Info: 32-core model: AMD Ryzen Threadripper 3970X bits: 64 type: MT MCP cache: L2: 16 MiB
(In reply to Pedro Nascimento from comment #22) > Created attachment 305671 [details] > ACPI dump for Gigabyte TRX40 AORUS PRO WIFI with a 3970X TR > > Here's mine. Note that this is a Gigabyte mobo. > > Machine: > Type: Desktop System: Gigabyte product: TRX40 AORUS PRO WIFI v: -CF serial: > N/A > Mobo: Gigabyte model: TRX40 AORUS PRO WIFI serial: N/A UEFI: American > Megatrends LLC. v: F6 > date: 09/07/2022 > CPU: > Info: 32-core model: AMD Ryzen Threadripper 3970X bits: 64 type: MT MCP > cache: L2: 16 MiB Hi Pedro, The BIOS and some PM firmware are shipped from board vendors, I can see the pstate driver can work well with our CRB board, but the final BIOS release comes from vendor, If you would like to get CPPC work on your board, I would suggest that you request support from board vendor. Created attachment 305722 [details]
ACPI tables for TR 3970X on MSI Creator TRX40
Comment on attachment 305722 [details]
ACPI tables for TR 3970X on MSI Creator TRX40
Same behaviour on a MSI Creator TRX40, TR 3970X, BIOS version 7C59v17 (latest), CPPC options enabled in the BIOS, Linux 6.6.11.
It may very well be the board vendors being lazy, but it seems a bit fishy that ALL of them have the same CPPC problem. With my MSI report, aren't these the entirety of the TRX40 boards?
(In reply to Alessio Di Sandro from comment #25) > Comment on attachment 305722 [details] > ACPI tables for TR 3970X on MSI Creator TRX40 > > Same behaviour on a MSI Creator TRX40, TR 3970X, BIOS version 7C59v17 > (latest), CPPC options enabled in the BIOS, Linux 6.6.11. > > It may very well be the board vendors being lazy, but it seems a bit fishy > that ALL of them have the same CPPC problem. With my MSI report, aren't > these the entirety of the TRX40 boards? thanks for the more information, please also submit ticket to board vendor to request the issue fix, looks like the Bit Offset values are not correctly initialized. ResourceTemplate () { Register (PCC, 0x20, // Bit Width 0x00, // Bit Offset 0x0000000000000000, // Address ,) }, ResourceTemplate () { Register (PCC, 0x20, // Bit Width 0x00, // Bit Offset 0x0000000000000004, // Address ,) }, Perry. Hey Perry, Thank you for sharing your insights. Given the issue is spread across MSI, Asus and Gigabyte, I'm concerned we will never get around to convincing a fix should come from each of them. Is it something you, as an AMD employee, could help with? Or is it possible to work around this at the driver level? Otherwise, I fear this will never be fixed. An update regarding my Asus ROG Zenith II Extreme motherboard. I've opened up a support case at Asus. In order to do so I had to register my motherboard's serial number which is a bit cumbersome if you don't have the original box as it's written on the motherboard itself and you cannot get it from the bios info. So in my report I've described the issue where I have CPPC and CPPC Preferred Core enabled and the amd-pstate driver not loading due to missing _CPC objects inside the ACPI tables. They got back to me and asked me to record a video of the problem. So I sent them a short video, showing that I have the options enabled in the bios, booting the Linux OS and finally logging in using SSH and showing the amd-pstate error message. Yesterday I got a message that they are working together with AMD to find a solution. I don't have high expectations that this problem gets sorted out, given that they've updated the bios several times (last update is 6 months old), without even trying to ship the latest AGESA. But as they are at least talking with AMD, I urge everybody to open a support case at their motherboard vendor. The more reports, the greater the chance that either your vendor and/or AMD is going to take it serious. Just my 2cents. Also in my report to Asus, I've mentioned the URL to this bugzilla page in the and told them it's very important to read it for more technical information. So if you're going to open a support case to your motherboard vendor, please mention this URL as well: https://bugzilla.kernel.org/show_bug.cgi?id=218171 FYI, I have been checking the issue with our internal team because of more users like you are expecting to get fix solution, I will try my test to find out any workable solutions for you. Once I got progress for this, I will update here, stay tuned. Thank you, Gino and Perry. I've opened a ticket with Gigabyte as recommended. I have investigated a bit what happens on the Windows (dark) side, and it looks like CPPC is active and used by the OS (same MSI motherboard and bios with dual boot). HWiNFO shows the list of cores in CPPC order, and by monitoring clocks core 21 is indeed the one that can clock the highest. Windows Event Viewer agrees, showing ACPI CPPC being used (performance state type) and core 40 the one with the highest maximum performance percentage (numbering starts from 0 here and considers SMT cores too, while hwinfo starts from 1, so that cores 40/41 in the viewer is core 21 in hwinfo). All the other maximum performance percentage values agree with hwinfo's CPPC order. Created attachment 305746 [details]
HWiNFO CPPC order in Windows
Created attachment 305747 [details]
Windows Event Viewer CPPC log
Created attachment 305776 [details]
patch to enable amd psate driver for Family 17H
Hi all,
Please try this patch on your system, I would like to see if the system BIOS still looking for some other fixes.
I am not sure if the pstate driver can be loaded successfully on your system with this patch, if CPPC capabilities missing on your system, we still add some other fixes on for the broken BIOS.
after you build and boot your system,
please help to provide below info to me to check the driver status.
# sudo dmidecode -t system
# sudo cpupower frequency-info
echo "=============norminal freq==============================="
cat /sys/devices/system/cpu/cpu*/acpi_cppc/nominal_freq
echo "=============norminal perf==============================="
cat /sys/devices/system/cpu/cpu*/acpi_cppc/nominal_perf
echo "=============highest_perf perf==============================="
cat /sys/devices/system/cpu/cpu*/acpi_cppc/highest_perf
echo "=============lowest_nonlinear_perf perf==============================="
cat /sys/devices/system/cpu/cpu*/acpi_cppc/lowest_nonlinear_perf
echo "=============lowest perf==============================="
cat /sys/devices/system/cpu/cpu*/acpi_cppc/lowest_perf
Perry.
Hi Perry, It worked for me on Fedora 39. Thank you and AMD team for the support. # sudo dmidecode -t system # dmidecode 3.5 Getting SMBIOS data from sysfs. SMBIOS 3.2.0 present. Handle 0x0001, DMI type 1, 27 bytes System Information Manufacturer: ASUS Product Name: System Product Name Version: System Version Serial Number: System Serial Number UUID: fd469375-3c63-da50-47f3-a85e45cd44c4 Wake-up Type: Power Switch SKU Number: SKU Family: To be filled by O.E.M. Handle 0x002E, DMI type 12, 5 bytes System Configuration Options Option 1: Default string Handle 0x002F, DMI type 32, 20 bytes System Boot Information Status: No errors detected # sudo cpupower frequency-info analyzing CPU 20: driver: amd-pstate-epp CPUs which run at the same hardware frequency: 20 CPUs which need to have their frequency coordinated by software: 20 maximum transition latency: Cannot determine or is not supported. hardware limits: 550 MHz - 4.57 GHz available cpufreq governors: performance powersave current policy: frequency should be within 550 MHz and 4.57 GHz. The governor "powersave" may decide which speed to use within this range. current CPU frequency: Unable to call hardware current CPU frequency: 3.68 GHz (asserted by call to kernel) boost state support: Supported: yes Active: yes AMD PSTATE Highest Performance: 166. Maximum Frequency: 4.57 GHz. AMD PSTATE Nominal Performance: 138. Nominal Frequency: 3.80 GHz. AMD PSTATE Lowest Non-linear Performance: 64. Lowest Non-linear Frequency: 1.76 GHz. AMD PSTATE Lowest Performance: 21. Lowest Frequency: 550 MHz. =============norminal freq=============================== 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 =============norminal perf=============================== 138 138 138 138 138 138 138 138 138 138 138 138 138 138 138 138 138 138 138 138 138 138 138 138 138 138 138 138 138 138 138 138 138 138 138 138 138 138 138 138 138 138 138 138 138 138 138 138 =============highest_perf perf=============================== 231 166 166 241 236 241 201 196 191 186 181 226 176 171 166 166 231 226 221 216 211 206 221 166 166 166 166 166 166 241 236 241 201 216 196 191 186 181 176 171 166 166 211 206 166 166 166 166 =============lowest_nonlinear_perf perf=============================== 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 =============lowest perf=============================== 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 # PCC bits are not zero anymore. # sudo hexdump -C --skip 0xBA6D0000 /dev/mem | head ba6d0000 00 43 43 50 00 00 01 00 e7 00 00 00 8a 00 00 00 |.CCP............| ba6d0010 40 00 00 00 15 00 00 00 00 00 00 00 00 00 00 00 |@...............| ba6d0020 15 00 00 00 e7 00 00 00 00 00 00 00 00 00 00 00 |................| ba6d0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| ba6d0040 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 |................| ba6d0050 01 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 |................| ba6d0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| Hi there Perry, Thanks again for looking into this, here are my results: Kernel: 6.8.0-rc1 vanilla + your patch Mainboard: Asus ROG Zenith II Extreme (sTRX40) CPU: AMD Threadripper 3960X Bios: 1802 (06/09/2023) CPPC and CPPC Preferred Core enabled Kernel command line: amd_pstate=active # dmidecode 3.4 Getting SMBIOS data from sysfs. SMBIOS 3.2.0 present. Handle 0x0001, DMI type 1, 27 bytes System Information Manufacturer: ASUS Product Name: System Product Name Version: System Version Serial Number: System Serial Number UUID: ebcd3b7e-9734-32f6-6752-3497f631a402 Wake-up Type: Power Switch SKU Number: SKU Family: To be filled by O.E.M. Handle 0x003E, DMI type 12, 5 bytes System Configuration Options Option 1: Default string Handle 0x003F, DMI type 32, 20 bytes System Boot Information Status: No errors detected # cpupower frequency-info analyzing CPU 0: driver: amd-pstate-epp CPUs which run at the same hardware frequency: 0 CPUs which need to have their frequency coordinated by software: 0 maximum transition latency: Cannot determine or is not supported. hardware limits: 550 MHz - 4.78 GHz available cpufreq governors: performance powersave current policy: frequency should be within 550 MHz and 4.78 GHz. The governor "performance" may decide which speed to use within this range. current CPU frequency: Unable to call hardware current CPU frequency: 3.58 GHz (asserted by call to kernel) boost state support: Supported: yes Active: yes Boost States: 0 Total States: 3 Pstate-P0: 3800MHz Pstate-P1: 2800MHz Pstate-P2: 2200MHz =============norminal freq=============================== 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 =============norminal perf=============================== 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 =============highest_perf perf=============================== 231 166 166 201 196 191 241 241 236 166 166 226 166 166 166 166 231 226 221 216 211 206 221 186 181 176 171 166 166 201 196 191 241 216 241 236 166 166 166 166 166 166 211 206 186 181 176 171 =============lowest_nonlinear_perf perf=============================== 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 =============lowest perf=============================== 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 If you like, I can also redo the same tests with guided and/or passive modes. Here's the information with amd-pstate in guided mode: Kernel: 6.8.0-rc1 vanilla + your patch Mainboard: Asus ROG Zenith II Extreme (sTRX40) CPU: AMD Threadripper 3960X Bios: 1802 (06/09/2023) CPPC and CPPC Preferred Core enabled Kernel command line: amd_pstate=guided # dmidecode 3.4 Getting SMBIOS data from sysfs. SMBIOS 3.2.0 present. Handle 0x0001, DMI type 1, 27 bytes System Information Manufacturer: ASUS Product Name: System Product Name Version: System Version Serial Number: System Serial Number UUID: ebcd3b7e-9734-32f6-6752-3497f631a402 Wake-up Type: Power Switch SKU Number: SKU Family: To be filled by O.E.M. Handle 0x003E, DMI type 12, 5 bytes System Configuration Options Option 1: Default string Handle 0x003F, DMI type 32, 20 bytes System Boot Information Status: No errors detected # cpupower frequency-info analyzing CPU 0: driver: amd-pstate CPUs which run at the same hardware frequency: 0 CPUs which need to have their frequency coordinated by software: 0 maximum transition latency: 20.0 us hardware limits: 550 MHz - 4.78 GHz available cpufreq governors: conservative ondemand userspace powersave performance schedutil current policy: frequency should be within 550 MHz and 4.78 GHz. The governor "ondemand" may decide which speed to use within this range. current CPU frequency: Unable to call hardware current CPU frequency: 4.39 GHz (asserted by call to kernel) boost state support: Supported: yes Active: yes AMD PSTATE Highest Performance: 166. Maximum Frequency: 4.78 GHz. AMD PSTATE Nominal Performance: 132. Nominal Frequency: 3.80 GHz. AMD PSTATE Lowest Non-linear Performance: 60. Lowest Non-linear Frequency: 1.73 GHz. AMD PSTATE Lowest Performance: 20. Lowest Frequency: 550 MHz. =============norminal freq=============================== 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 3801 =============norminal perf=============================== 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 =============highest_perf perf=============================== 231 166 166 201 196 191 241 241 236 166 166 226 166 166 166 166 231 226 221 216 211 206 221 186 181 176 171 166 166 201 196 191 241 216 241 236 166 166 166 166 166 166 211 206 186 181 176 171 =============lowest_nonlinear_perf perf=============================== 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 =============lowest perf=============================== 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 Happy to report it is also working on mine. # dmidecode 3.4 Getting SMBIOS data from sysfs. SMBIOS 3.3.0 present. Handle 0x0001, DMI type 1, 27 bytes System Information Manufacturer: Gigabyte Technology Co., Ltd. Product Name: TRX40 AORUS PRO WIFI Version: -CF Serial Number: Default string UUID: 032e02b4-0499-05fa-cd06-fd0700080009 Wake-up Type: Power Switch SKU Number: Default string Family: Default string Handle 0x0006, DMI type 12, 5 bytes System Configuration Options Option 1: Default string Handle 0x0007, DMI type 32, 20 bytes System Boot Information Status: No errors detected analyzing CPU 0: driver: amd-pstate-epp CPUs which run at the same hardware frequency: 0 CPUs which need to have their frequency coordinated by software: 0 maximum transition latency: Cannot determine or is not supported. hardware limits: 550 MHz - 4.55 GHz available cpufreq governors: performance powersave current policy: frequency should be within 550 MHz and 4.55 GHz. The governor "performance" may decide which speed to use within this range. current CPU frequency: Unable to call hardware current CPU frequency: 550 MHz (asserted by call to kernel) boost state support: Supported: yes Active: yes Boost States: 0 Total States: 3 Pstate-P0: 3700MHz Pstate-P1: 2800MHz Pstate-P2: 2200MHz =============norminal freq=============================== 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 3701 =============norminal perf=============================== 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 135 =============highest_perf perf=============================== 166 216 211 206 201 196 191 241 241 236 231 166 166 166 166 166 186 181 176 171 166 166 166 166 166 166 166 166 166 166 166 166 166 166 226 221 216 211 206 201 196 191 241 241 166 236 231 166 166 166 166 186 181 176 171 166 166 166 166 166 166 166 226 221 =============lowest_nonlinear_perf perf=============================== 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 =============lowest perf=============================== 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 Thank you everyone for the testing results!! Because of the TR40 CPU hardware pstate was implemented by CPPC V2 and shared memory design(PCC channel), so the ACPI table is not same as MSR solution. it is expected after I confirmed with internal team. ResourceTemplate () { Register (PCC, 0x20, // Bit Width 0x00, // Bit Offset --> expected 0x0000000000000000, // Address ,) }, Looks like all the CPPC capabilities on above tested systems are filled correctly. I will post the patch for kernel review. Let me know if you have any other questions about this issue. Perry. This is grat news. Working flawlessly on: Gigabyte TRX40 DESIGNARE AMD Ryzen Threadripper 3970X Tried it on 6.6.14, amd-pstate=active (can't use 6.7 yet) and it works great. Temperatures are lower while performance is better. cpupower frequency-info analyzing CPU 10: driver: amd-pstate-epp CPUs which run at the same hardware frequency: 10 CPUs which need to have their frequency coordinated by software: 10 maximum transition latency: Cannot determine or is not supported. hardware limits: 550 MHz - 4.55 GHz available cpufreq governors: performance powersave current policy: frequency should be within 550 MHz and 4.55 GHz. The governor "powersave" may decide which speed to use within this range. current CPU frequency: Unable to call hardware current CPU frequency: 4.32 GHz (asserted by call to kernel) boost state support: Supported: yes Active: yes AMD PSTATE Highest Performance: 166. Maximum Frequency: 4.55 GHz. AMD PSTATE Nominal Performance: 135. Nominal Frequency: 3.70 GHz. AMD PSTATE Lowest Non-linear Performance: 64. Lowest Non-linear Frequency: 1.75 GHz. AMD PSTATE Lowest Performance: 21. Lowest Frequency: 550 MHz. Dear Perry Yuan, Thanks again for looking into this issue and making the pstate driver compatible. https://www.phoronix.com/news/AMD-P-State-Threadripper-3000 (In reply to Gino Badouri from comment #42) > Dear Perry Yuan, > > Thanks again for looking into this issue and making the pstate driver > compatible. > > https://www.phoronix.com/news/AMD-P-State-Threadripper-3000 You are welcome, glad to see more and more users are using AMD Pstate driver and provide feedback to improve the driver compatibility. https://lore.kernel.org/all/cover.1706863981.git.perry.yuan@amd.com/ The patches have been sent to upstream for reviewing. If possible, please help to add test-by flag to the series. Thank you all! Perry. For all of you, Thank you very much! Awesome work! All good on: kernel: 6.7.3-zen1-2-zen ROG ZENITH II EXTREME (v1802) AMD Ryzen Threadripper 3970X driver: amd-pstate-epp CPUs que rodam na mesma frequência de hardware: 63 CPUs que precisam ter suas frequências coordenadas por software: 63 maior latência de transição: Cannot determine or is not supported. limites do hardware: 550 MHz - 4.65 GHz reguladores do cpufreq disponíveis: performance powersave política de frequência atual deve estar entre 3.70 GHz e 4.50 GHz. O regulador "performance" deve decidir qual velocidade usar dentro desse limite. current CPU frequency: Unable to call hardware current CPU frequency: 4.22 GHz (asserted by call to kernel) boost state support: Supported: yes Active: yes AMD PSTATE Highest Performance: 166. Maximum Frequency: 4.65 GHz. AMD PSTATE Nominal Performance: 132. Nominal Frequency: 3.70 GHz. AMD PSTATE Lowest Non-linear Performance: 62. Lowest Non-linear Frequency: 1.73 GHz. AMD PSTATE Lowest Performance: 20. Lowest Frequency: 550 MHz. Hello, Is this the right place to request this bugfix be backported to the 6.8 series? Phoronix says it's coming to 6.9 here: https://www.phoronix.com/news/AMD-P-State-TRX40-Linux-6.9 I've filed a wishlist bug report to ubuntu for the 24.04 LTS release which will carry 6.8 to start with, apparently: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2056686 Regards. (In reply to Vishal Rao from comment #45) > Hello, > > Is this the right place to request this bugfix be backported to the 6.8 > series? > > Phoronix says it's coming to 6.9 here: > https://www.phoronix.com/news/AMD-P-State-TRX40-Linux-6.9 > > I've filed a wishlist bug report to ubuntu for the 24.04 LTS release which > will carry 6.8 to start with, apparently: > https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2056686 > > Regards. The fix patches are under review and close to merge. https://lore.kernel.org/lkml/CYYPR12MB86558EBCB812D171DAC34C759C312@CYYPR12MB8655.namprd12.prod.outlook.com/ Perry. https://lore.kernel.org/lkml/20240324230116.1348576-289-sashal@kernel.org/ The fix patch has been merged and backport to stable kernel. |