CPU scaling governors dont work, linux wont obey my command!

i have a dell precision m6800 laptop.
i have set sudo cpupower frequency-set -d 2000mhz
but every now and then, the system still allows it to go slower. as low as 600MHZ!


i even get analyzing CPU 0:
  driver: intel_cpufreq
  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: 800 MHz - 3.70 GHz
  available cpufreq governors: ondemand performance schedutil
  current policy: frequency should be within 2.00 GHz and 3.70 GHz.
                  The governor "performance" may decide which speed to use
                  within this range.
  current CPU frequency: Unable to call hardware
  current CPU frequency: 698 MHz (asserted by call to kernel)
  boost state support:
    Supported: yes
    Active: yes

but the slowdowns still happen!! how do make Linux obey my commands here?

UPDATE: been doing research. this is apperently a common bug with haswell boards. ive reached out to Dell, they refuse to make a bios update to fix.

somebody at my university told me that AVX causes power spikes in some haswell systems. and that disabling avx might work.
so ive added noxsave to my boot parameters. this disables avx, but not avx2. hopefully its enough. i will run some experiments with this configuration.

i will update this thread with my findings.

UPDATE: disabling avx1 didnt fix anything. maybe i also need to find some way to disable avx2?

ill try with clearcpuid=avx,avx2 and post my findings.

Hmmm. It seems clearcpuid and noxsave just doesnt work. Avx1 and 2 remain enabled.

while i do still suspect avx to be the cause of this issue, linux 6.8 just will not obey the parameter to disable it. unless im doing something wrong.
my current boot parameters are

root=PARTUUID=a327c32c-875f-e54f-9ba0-108bbda50fd8 rw rootfstype=ext4 initrd=\EFI\debian\initrd.img amdgpu.si_support=1 amdgpu.cik_support=1 b43.allhwsupport=1 mitigations=off intel_iommu=on,igfx_off snd_usb_audio.implicit_fb=1 noxsave clearcpuid=avx,avx2

and avx is clearly still enabled because my dmesg has

[  0.132933] x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
[  0.142281] raid6: skipped pq benchmark and selected avx2x4
[  0.142281] raid6: using avx2x2 recovery algorithm
[  0.245916] xor: automatically using best checksumming function   avx    
[  5.250089] AVX2 version of gcm_enc/dec engaged.

does anybody here have a working method to disable avx1 and 2?

currently building a new kernel by
CFLAGS=“-fno-tree-vectorize -mno-avx” make -jnproc bindeb-pkg.
hopefully this should result in a kernel that doesnt do avx at all.

update: this diddnt work. the kernel still uses avx. i guess the kernel just doesnt take gcc flags?

now im out of ideas as to how i might disable avx system-wide.

apperently some bioses have the option to just disable avx. i wonder if its possible to enable this feature on the precision m6800?

So, i replaced the cooling system, it now never goes over 70C, i disabled boost, sucessfully locks to 2.7GHz when idle. I used a non-avx load while capped at 2.7GHz, and this STILL happened.

Not a power issue. The laptop is rated to input a max of 300w, i measured under 100w usage when under load, just before it dropped to 600MHz.

Please tell me somebody has seen this before, and has found a solution. I know this is almost certainly a bios bug, amd i can find no modded(bugfixed) bios for this laptop anywhere on the internet.
After a decade of this laptop being iut, nobody has found an exploit/workaround to fix dell’s inabikity/refusal to program?

Yeah, that doesn’t seem to be like a Linux problem, which you seem to have figured out, but have a look into GitHub - erpalma/throttled: Workaround for Intel throttling issues in Linux..

1 Like

doesnt seem to support the i7-4800mq.

does it go to 600mhz over all the cores or just some of them? is this also during an all core workload? intel cpu’s will put some cores into a c3 or c6 state to allow the other cores to boost higher.

I’ve had the same issue with a thinkpad p52 from somewhere in 2017/2018 even with the cpu cool. It kept throttling the cpu to 800mhz.

I was able to solve it in windows by disabling BD PROCHOT (CPU HOT setting), maybe there is something like this for linux? (googled this, but i have no idea how to use it GitHub - agoose77/throttlestop: Simple tool to manage thermal behaviour on Linux )

1 Like

when this bug occurs, it occurs on all core simultaneously. regardless of whether all of them are at load or just a few.

i have already ruled out thermal causes, as this occurs even at 55C.
C-state control is disabled in my bios settings.

BD PROCHOT didn’t trigger with high temperature for me. It happened even with a cool cpu at 50C.

C state control should be on as it will keep the cpu cooler and faster.

1 Like

enabled c-state control. made no difference.

but i did manage to get a turbostat summary while the throttle event was happening.

output of turbostat when running at 600MHz

turbostat version 2024.05.10 - Len Brown <[email protected]>
Kernel command line: root=PARTUUID=a327c32c-875f-e54f-9ba0-108bbda50fd8 rw rootfstype=ext4 initrd=\EFI\debian\initrd.img amdgpu.si_support=1 amdgpu.cik_support=1 b43.allhwsupport=1 mitigations=off intel_iommu=on,igfx_off snd_usb_audio.implicit_fb=1 noxsave clearcpuid=avx,avx2 
CPUID(0): GenuineIntel 0xd CPUID levels
CPUID(1): family:model:stepping 0x6:3c:3 (6:60:3) microcode 0x25
CPUID(0x80000000): max_extended_levels: 0x80000008
CPUID(1): SSE3 MONITOR SMX EIST TM2 TSC MSR ACPI-TM HT TM
CPUID(6): APERF, TURBO, DTS, PTM, No-HWP, No-HWPnotify, No-HWPwindow, No-HWPepp, No-HWPpkg, EPB
cpu0: MSR_IA32_MISC_ENABLE: 0x00850089 (TCC EIST MWAIT PREFETCH TURBO)
CPUID(7): No-SGX No-Hybrid
cpu0: MSR_PLATFORM_INFO: 0x80838f3011b00
8 * 100.0 = 800.0 MHz max efficiency frequency
27 * 100.0 = 2700.0 MHz base frequency
cpu0: MSR_TURBO_RATIO_LIMIT: 0x23232425
35 * 100.0 = 3500.0 MHz max turbo 4 active cores
35 * 100.0 = 3500.0 MHz max turbo 3 active cores
36 * 100.0 = 3600.0 MHz max turbo 2 active cores
37 * 100.0 = 3700.0 MHz max turbo 1 active cores
cpu0: MSR_CONFIG_TDP_NOMINAL: 0x0000001b (base_ratio=27)
cpu0: MSR_CONFIG_TDP_LEVEL_1: 0x00000000 ()
cpu0: MSR_CONFIG_TDP_LEVEL_2: 0x00000000 ()
cpu0: MSR_CONFIG_TDP_CONTROL: 0x80000000 ( lock=1)
cpu0: MSR_TURBO_ACTIVATION_RATIO: 0x00000000 (MAX_NON_TURBO_RATIO=0 lock=0)
cpu0: cpufreq driver: intel_cpufreq
cpu0: cpufreq governor: schedutil
cpufreq intel_pstate no_turbo: 0
cpu0: MSR_MISC_PWR_MGMT: 0x00400000 (ENable-EIST_Coordination DISable-EPB DISable-OOB)
cpu0: EPB: 6 (balanced)
cpu0: MSR_CORE_PERF_LIMIT_REASONS, 0x3d200020 (Active: Auto-HWP, ) (Logged: Transitions, MultiCoreTurbo, PkgPwrL2, PkgPwrL1, Amps, Auto-HWP, )
cpu0: MSR_GFX_PERF_LIMIT_REASONS, 0x00000000 (Active: ) (Logged: )
cpu0: MSR_RING_PERF_LIMIT_REASONS, 0x0d000000 (Active: ) (Logged: Amps, PkgPwrL1, PkgPwrL2, )
cpu0: MSR_IA32_POWER_CTL: 0x0004005d (C1E auto-promotion: DISabled)
cpu0: MSR_PKG_CST_CONFIG_CONTROL: 0x1e008405 (UNdemote-C3, UNdemote-C1, demote-C3, demote-C1, locked, pkg-cstate-limit=5 (pc7s))
/dev/cpu_dma_latency: 4000 usec (constrained)
current_driver: intel_idle
current_governor: menu
current_governor_ro: menu
cpu0: POLL: CPUIDLE CORE POLL IDLE
cpu0: C1: MWAIT 0x00
cpu0: C1E: MWAIT 0x01
cpu0: C3: MWAIT 0x10
cpu0: C6: MWAIT 0x20
cpu0: C7s: MWAIT 0x32
cpu0: MSR_PKGC3_IRTL: 0x00008842 (valid, 67584 ns)
cpu0: MSR_PKGC6_IRTL: 0x00008873 (valid, 117760 ns)
cpu0: MSR_PKGC7_IRTL: 0x00008891 (valid, 148480 ns)
RAPL: 5578 sec. Joule Counter Range, at 47 Watts
cpu0: MSR_RAPL_POWER_UNIT: 0x000a0e03 (0.125000 Watts, 0.000061 Joules, 0.000977 sec.)
cpu0: MSR_PKG_POWER_INFO: 0x00000178 (47 W TDP, RAPL 0 - 0 W, 0.000000 sec.)
cpu0: MSR_PKG_POWER_LIMIT: 0x804281d600dc8178 (locked)
cpu0: PKG Limit #1: ENabled (47.000 Watts, 28.000000 sec, clamp DISabled)
cpu0: PKG Limit #2: ENabled (58.750 Watts, 0.002441* sec, clamp DISabled)
cpu0: MSR_VR_CURRENT_CONFIG: 0x101414800002a8
cpu0: PKG Limit #4: 85.000000 Watts (locked)
cpu0: MSR_PP0_POLICY: 0
cpu0: MSR_PP0_POWER_LIMIT: 0x00000000 (UNlocked)
cpu0: Cores Limit: DISabled (0.000 Watts, 0.000977 sec, clamp DISabled)
cpu0: MSR_PP1_POLICY: 0
cpu0: MSR_PP1_POWER_LIMIT: 0x00000000 (UNlocked)
cpu0: GFX Limit: DISabled (0.000 Watts, 0.000977 sec, clamp DISabled)
cpu0: MSR_IA32_TEMPERATURE_TARGET: 0x03641000 (100 C)
cpu0: MSR_IA32_PACKAGE_THERM_STATUS: 0x88240800 (64 C)
cpu0: MSR_IA32_PACKAGE_THERM_INTERRUPT: 0x00000003 (100 C, 100 C)
cpu0: MSR_MISC_FEATURE_CONTROL: 0x00000000 (L2-Prefetch L2-Prefetch-pair L1-Prefetch L1-IP-Prefetch)
Disabling Low Power Idle CPU output
Avg_MHz	Busy%	Bzy_MHz	TSC_MHz	IPC	IRQ	SMI	POLL	C1	C1E	C3	C6	C7s	POLL%	C1%	C1E%	C3%	C6%	C7s%	CPU%c1	CPU%c3	CPU%c6	CPU%c7	CoreTmp	CoreThr	PkgTmp	Pkg%pc2	Pkg%pc3	Pkg%pc6	Pkg%pc7	PkgWatt	CorWatt	GFXWatt
287	49.51	578	2706	0.59	47633	48	1376	50062	65870	25895	2851	7725	0.09	10.85	17.81	14.42	2.46	6.70	45.14	4.35	0.44	0.57	61	0	62	0.00	0.00	0.00	0.00	15.27	5.72	0.00
381	67.71	564	2693	0.58	49194	24	2242	38866	45680	16898	1707	4726	0.09	5.86	10.10	8.56	1.52	6.56	27.32	2.88	0.62	1.47	59	0	62	0.00	0.00	0.00	0.00	15.78	6.43	0.00
307	54.51	565	2694	0.72	41018	24	1224	19329	24142	16527	3666	12133	0.05	2.43	5.61	12.77	4.35	20.55	28.75	8.03	2.56	6.14	60	0	62	0.00	0.00	0.00	0.00	14.63	5.65	0.00
360	64.42	560	2692	0.67	41598	24	1597	19659	19784	13827	2912	8895	0.05	2.38	4.50	10.72	3.32	14.72	23.87	6.05	1.67	3.99	58	0	60	0.00	0.00	0.00	0.00	15.21	6.09	0.00
334	59.46	562	2696	0.68	43159	16	757	21706	22054	16389	3114	10158	0.04	2.87	5.73	11.76	3.42	16.89	25.82	7.45	1.90	5.37	57	0	62	0.00	0.00	0.00	0.00	14.89	5.87	0.00
197	33.30	593	2694	0.85	38248	32	4712	32021	41429	14507	4122	17857	0.13	3.39	7.47	12.43	5.41	38.62	35.10	9.92	4.30	17.38	57	0	59	0.00	0.00	0.00	0.00	12.86	4.24	0.00
217	30.89	703	2695	0.97	36566	48	9812	45084	26681	14172	3994	18600	0.18	2.94	5.62	11.78	5.26	44.62	33.43	12.66	4.45	18.58	56	0	58	0.00	0.00	0.00	0.00	12.80	4.42	0.00
287	22.59	1274	2694	1.22	36169	24	27645	115138	12506	16841	4266	19827	0.42	7.32	3.97	13.23	5.57	47.72	35.18	16.20	4.63	21.40	57	0	58	0.00	0.00	0.00	0.00	13.13	5.30	0.00
276	21.59	1282	2694	1.25	35600	32	24770	110516	12389	15920	3782	20194	0.39	5.93	3.40	12.60	5.20	51.67	32.02	17.42	4.16	24.82	57	0	58	0.00	0.00	0.00	0.00	12.73	5.01	0.00
278	21.87	1276	2694	1.24	35843	24	23698	108284	14533	14109	3480	20319	0.38	5.35	3.61	11.27	5.04	53.23	32.55	13.99	4.77	26.82	55	0	58	0.00	0.00	0.00	0.00	12.77	5.07	0.00
321	25.43	1265	2693	1.12	37144	24	24498	119853	15380	15150	3811	19186	0.39	5.85	4.70	12.21	5.06	47.13	33.46	13.62	4.38	23.11	59	0	61	0.00	0.00	0.00	0.00	13.35	5.53	0.00
432	34.68	1249	2694	0.96	40797	32	28291	116327	15605	18674	5070	15035	0.47	6.25	4.00	14.73	6.13	34.53	33.40	13.78	4.57	13.57	58	0	58	0.00	0.00	0.00	0.00	14.88	6.91	0.00
410	27.88	1475	2693	1.11	37849	56	34846	112858	11608	16383	5078	18605	0.42	5.18	2.86	13.66	6.53	44.38	31.40	15.16	5.39	20.16	57	0	59	0.00	0.00	0.00	0.00	14.17	6.47	0.00
^C419	21.90	1918	2696	1.28	11198	8	23772	52367	2609	5523	1187	5288	0.76	10.23	2.63	15.33	5.05	45.29	35.97	18.42	3.87	19.83	58	0	59	0.00	0.00	0.00	0.00	14.35	6.84	0.00

everything seems normal in turbostat, it doesnt even show signs of the issue.

ive found this

And this

https://old.reddit.com/r/thinkpad/comments/870u0a/t480s_linux_throttling_bug/

anybody know of a way to implement this while stuck with dell’s bios? as this system is unsupported by coreboot.
im in need of a haswell wizard here.

i managed to compile iotools and attempt this, but i am unable to write to any of the mchbar registers.

I know its not wat you want to hear but, do you have the same problem in windows? You can try throttlestop on windows to see the reason behind the throttling.

1 Like

i do not currently have the means to setup a windows environment on this laptop, nor do i have enough familiarity with windows to test for this failure.
im in university right now, such tests are beyond what i can do in my dorm. if this is still unsolved by the time i return home for winter, i will then be able to setup a windows 7 ultimate test environment. i doubt i will be able to get windows 10 to behave at all on this machine.

what could cause registers to be unwritable? silicon degradation?