Intel CPUS - Linux VID Utility -- patch for turbostat.c and stand-alone voltage estimator

Background

Intel chips have been failing for some months, and it’s been a bit mysterious. Users have been patient for about ~~6 months? a year? while Intel investigates. Recently intel said:

Our analysis of returned processors confirms that the elevated operating voltage is stemming from a microcode algorithm resulting in incorrect voltage requests to the processor.

What’s the incorrect voltage? They didn’t say. 1.55v? That’s what Tom’s Hardware suggested.

In my own investigation on Linux I hadn’t really noticed any unusual operating voltages, but I wasn’t really looking for that either because nearly all the population I was looking at were CPUs running at stock, or stock with XMP, or stock without eTVB or boosts beyond 5.5ghz. (And a smaller set of 35w 13700T cpus!)

I knew that the i7z utility will report core voltages, but it doesn’t seem like this utility has been updated for a few years, and it has some quirks such as not reporting a loaded core when the load has been assigned to a hyperthread.

I decided to write my own utility that dumps MSR 0x198, which is the voltage the CPU is requesting. Once I got that running, I wanted to double check it was working. It lined up okay with i7z but… since it hadn’t been maintained in years I thought I should double check.

I also understand the voltage requested by the cpu and the voltage delivered by the motherboard to the cpu based on this request are not necessarily remotely the same.

I know that, on windows, often gamer boards have extra chips for monitoring voltage (super io chips) and can be fancier.

I asked about this online as I don’t do much extreme overclocking; not sure that went well, really, (1) but Buildzoid said I could get it “from bios” but that’s not really true for T series chips:

Asus ROG bioses have a feature for “gamer” CPUs to print what voltages your specific CPU will request under specific load conditions.

That’s this:

However, I was having trouble finding this for T series processors, and it turns out not to be a thing.

Buildzoid said that a hwinfo64 report would provide this, so I said “You mean it should be in this report?”

but it’s not there either. One can use the sensors part of hwinfo64 to look at voltages the cpus requesting, but it doesn’t print a report like this (which is what I kinda wanted to build for linux anyway). Hwinfo64 will also print voltages sent to your cpu that are read from superio, diesense, or other (which can be unreliable for other reasons).

(BTW the internet randos did not know that the Asus ROG bios does not actually print a table like this for T series cpus. There is no table in the asus bios for T series CPUs. period.)

Anyay, whatever, drama as an internet clout strategy has never really been my thing, but I do like having tools for gathering information that might be useful for failure analysis.

My problem revolves mainly around W680 boards – not gamer boards – and I’ve already generally found that the are 1.5v, or less, all the time anyway even before the 2024 updates. At a 5.5ghz cap, they rarely ask for more than 1.4v, in fact. Still, I’d like a better utility than i7z – maybe one that stresses the CPU in a similar way to the gaming server workloads that see these chips degrade.

I decided to channel my annoyance to write my own voltage ID dumper utility for linux, and to submit upstream to the linux kernel modifications for turbostat.c to print the voltage IDs requested by the CPU. That’s now --vid or -V

Patching Turbostat.c

Turbostat is bundled with the kernel, and it prints loads of useful info (but not voltage).

I added this functionality to turbostat.c, here’s the patch.

The Patch

fix.patch (5.3 KB)

Part 1:
Modify turbostat.c ← you are here

Part 2: (still TODO ing)
Post the source for my voltage ID query/dump utility which mimics the output of asus’ bios in that it tries to do some differnet load/core configs and look at the resulting request voltages.

turbostat version 2024.05.10 - Len Brown <[email protected]>
Kernel command line: BOOT_IMAGE=/vmlinuz-6.8.0-38-generic root=/dev/mapper/ubuntu--vg-ubuntu--lv ro
CPUID(0): GenuineIntel 0x20 CPUID levels
CPUID(1): family:model:stepping 0x6:b7:1 (6:183:1) microcode 0x125
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, HWP, HWPnotify, HWPwindow, HWPepp, HWPpkg, EPB
cpu0: MSR_IA32_MISC_ENABLE: 0x00850089 (TCC EIST MWAIT PREFETCH TURBO)
CPUID(7): No-SGX Hybrid
CPUID(0x15): eax_crystal: 2 ebx_tsc: 156 ecx_crystal_hz: 38400000
TSC: 2995 MHz (38400000 Hz * 156 / 2 / 1000000)
CPUID(0x16): base_mhz: 3000 max_mhz: 4300 bus_mhz: 100
cpu0: MSR_PLATFORM_INFO: 0x8080838f1811e00
8 * 100.0 = 800.0 MHz max efficiency frequency
30 * 100.0 = 3000.0 MHz base frequency
cpu0: MSR_TURBO_RATIO_LIMIT: 0x3737373737373a3a
55 * 100.0 = 5500.0 MHz max turbo 8 active cores
55 * 100.0 = 5500.0 MHz max turbo 7 active cores
55 * 100.0 = 5500.0 MHz max turbo 6 active cores
55 * 100.0 = 5500.0 MHz max turbo 5 active cores
55 * 100.0 = 5500.0 MHz max turbo 4 active cores
55 * 100.0 = 5500.0 MHz max turbo 3 active cores
58 * 100.0 = 5800.0 MHz max turbo 2 active cores
58 * 100.0 = 5800.0 MHz max turbo 1 active cores
cpu0: MSR_SECONDARY_TURBO_RATIO_LIMIT: 0x0000002b
43 * 100.0 = 4300.0 MHz max turbo 1 active cores
cpu0: MSR_CONFIG_TDP_NOMINAL: 0x0000001e (base_ratio=30)
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_pstate
cpu0: cpufreq governor: performance
cpufreq intel_pstate no_turbo: 0
cpu0: MSR_MISC_PWR_MGMT: 0x000030c2 (ENable-EIST_Coordination ENable-EPB DISable-OOB)
cpu0: MSR_PM_ENABLE: 0x00000001 (HWP)
cpu0: MSR_HWP_CAPABILITIES: 0x010b2746 (high 70 guar 39 eff 11 low 1)
cpu0: MSR_HWP_REQUEST: 0x00004646 (min 70 max 70 des 0 epp 0x0 window 0x0 pkg 0x0)
cpu0: MSR_HWP_REQUEST_PKG: 0x8000ff01 (min 1 max 255 des 0 epp 0x80 window 0x0)
cpu0: MSR_HWP_INTERRUPT: 0x00000001 (EN_Guaranteed_Perf_Change, Dis_Excursion_Min)
cpu0: MSR_HWP_STATUS: 0x00000004 (No-Guaranteed_Perf_Change, Excursion_Min)
cpu0: EPB: 6 (balanced)
cpu0: MSR_IA32_POWER_CTL: 0x00c4005f (C1E auto-promotion: ENabled)
cpu0: MSR_PKG_CST_CONFIG_CONTROL: 0x74008008 (UNdemote-C1, demote-C1, locked, pkg-cstate-limit=8 (unlimited))
/dev/cpu_dma_latency: 2000000000 usec (default)
current_driver: intel_idle
current_governor: menu
current_governor_ro: menu
cpu0: POLL: CPUIDLE CORE POLL IDLE
cpu0: C1ACPI: ACPI FFH MWAIT 0x0
cpu0: C2ACPI: ACPI FFH MWAIT 0x21
cpu0: C3ACPI: ACPI FFH MWAIT 0x60
cpu0: MSR_PKGC3_IRTL: 0x00000000 (NOTvalid, 0 ns)
cpu0: MSR_PKGC6_IRTL: 0x00000000 (NOTvalid, 0 ns)
cpu0: MSR_PKGC8_IRTL: 0x00000000 (NOTvalid, 0 ns)
cpu0: MSR_PKGC10_IRTL: 0x00000000 (NOTvalid, 0 ns)
Uncore Frequency package0 die0: 800 - 5000 MHz (800 - 5000 MHz) 4600 MHz
RAPL: 2097 sec. Joule Counter Range, at 125 Watts
cpu0: MSR_RAPL_POWER_UNIT: 0x000a0e03 (0.125000 Watts, 0.000061 Joules, 0.000977 sec.)
cpu0: MSR_PKG_POWER_INFO: 0x000003e8 (125 W TDP, RAPL 0 - 0 W, 0.000000 sec.)
cpu0: MSR_PKG_POWER_LIMIT: 0x4287d000df83e8 (UNlocked)
cpu0: PKG Limit #1: ENabled (125.000 Watts, 56.000000 sec, clamp ENabled)
cpu0: PKG Limit #2: ENabled (250.000 Watts, 0.002441* sec, clamp DISabled)
cpu0: MSR_VR_CURRENT_CONFIG: 0x00000be0
cpu0: PKG Limit #4: 380.000000 Watts (UNlocked)
cpu0: MSR_DRAM_POWER_LIMIT: 0x00000000 (UNlocked)
cpu0: DRAM Limit: DISabled (0.000 Watts, 0.000977 sec, clamp DISabled)
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: 0x80641400 (100 C) (100 default - 0 offset)
cpu0: MSR_IA32_PACKAGE_THERM_STATUS: 0x88440800 (32 C)
cpu0: MSR_IA32_PACKAGE_THERM_INTERRUPT: 0x02000003 (100 C, 100 C)
cpu0: MSR_MISC_FEATURE_CONTROL: 0x00000000 (L2-Prefetch L2-Prefetch-pair L1-Prefetch L1-IP-Prefetch)
Core    CPU     Avg_MHz Busy%   Bzy_MHz TSC_MHz IPC     IRQ     SMI     POLL    C1ACPI  C2ACPI  C3ACPI  POLL%   C1ACPI% C2ACPI% C3ACPI% CPU%c1  CPU%c6  CPU%c7  CoreTmp CoreThr Voltage PkgTmp  Totl%C0 Any%C0  GFX%C0  CPUGFX% Pkg%pc2 Pkg%pc3 Pkg%pc6 Pkg%pc8 Pk%pc10 CPU%LPI SYS%LPI PkgWatt CorWatt GFXWatt RAMWatt PKG_%   RAM_%   UncMHz
-       -       1       0.04    2044    2995    0.63    894     0       46      881     381     1119    0.00    0.04    0.18    99.74   0.53    66.43   32.90   29      0       1.2708  33      1.79    1.30    0.00    0.00    92.70   0.00    0.00    0.00    0.00    0.00    0.00    7.10    0.52    0.00    0.00    0.00    0.00    4900
0       0       1       0.05    2284    2995    0.29    21      0       13      20      3       96      0.01    0.05    0.02    99.88   1.30    0.01    98.39   27      0       1.2708  33      1.79    1.30    0.00    0.00    92.71   0.00    0.00    0.00    0.00    0.00    0.00    7.10    0.52    0.00    0.00    0.00    0.00    4900
0       1       0       0.00    2068    2995    0.77    8       0       0       0       0       6       0.00    0.00    0.00    100.00  1.30
4       2       0       0.04    1121    2995    0.35    20      0       0       2       1       45      0.00    0.01    0.02    99.94   0.01    0.13    99.60   26      0       1.2358
4       3       0       0.01    1552    2995    0.43    10      0       0       0       6       5       0.00    0.00    0.11    99.88   0.01
8       4       0       0.02    1487    2995    0.40    6       0       0       0       0       41      0.00    0.00    0.00    99.98   0.54    0.00    99.25   25      0       1.2358
8       5       0       0.00    2180    2995    0.77    10      0       0       8       0       4       0.00    0.14    0.00    99.85   0.54
12      6       0       0.02    1463    2995    0.38    20      0       0       13      3       34      0.00    0.10    0.01    99.87   0.98    0.01    98.80   28      0       1.2708
12      7       0       0.00    1943    2995    0.83    11      0       0       8       0       4       0.00    0.14    0.00    99.86   0.98
16      8       4       0.10    3533    2995    0.40    19      0       0       0       0       44      0.00    0.00    0.00    99.90   0.00    0.30    99.25   25      0       1.2358
16      9       1       0.07    957     2995    0.42    39      0       0       0       16      44      0.00    0.00    0.31    99.62   0.00
20      10      8       0.20    3898    2995    1.26    88      0       25      784     55      133     0.02    0.55    0.08    99.19   3.49    0.04    95.98   23      0       1.2424
20      11      0       0.01    1203    2995    0.57    6       0       0       0       0       11      0.00    0.00    0.00    99.99   3.49
24      12      1       0.06    2172    2995    0.33    24      0       0       4       3       31      0.00    0.03    0.02    99.89   0.45    0.00    99.28   25      0       1.2424
24      13      0       0.00    2760    2995    0.74    3       0       0       0       0       4       0.00    0.00    0.00    100.00  0.45
28      14      2       0.10    1814    2995    0.35    40      0       1       6       4       54      0.00    0.04    0.04    99.82   0.57    0.00    99.05   25      0       1.2424
28      15      0       0.02    1059    2995    0.38    8       0       0       0       0       14      0.00    0.00    0.00    99.98   0.57
32      16      0       0.04    1165    2995    0.32    28      0       0       1       5       25      0.00    0.00    0.06    99.90   0.00    99.76   0.00    27      0       1.2775
33      17      3       0.26    1127    2995    0.18    222     0       0       9       145     92      0.00    0.04    2.61    97.11   0.69    98.49   0.00    27      0       1.2474
34      18      0       0.01    3471    2995    0.49    4       0       0       1       0       29      0.00    0.01    0.00    99.98   0.01    99.81   0.00    27      0       1.2474
35      19      0       0.01    3595    2995    0.42    5       0       0       1       0       29      0.00    0.01    0.00    99.98   0.01    99.81   0.00    27      0       1.2474
36      20      0       0.01    1255    2995    0.56    11      0       0       0       0       13      0.00    0.00    0.00    99.99   0.00    99.81   0.00    28      0       1.2424
37      21      0       0.01    3505    2995    0.44    7       0       0       1       0       30      0.00    0.01    0.00    99.98   0.01    99.81   0.00    28      0       1.2474
38      22      0       0.01    3486    2995    0.48    7       0       0       3       0       31      0.00    0.03    0.00    99.97   0.03    99.79   0.00    28      0       1.2474
39      23      0       0.01    3487    2995    0.48    3       0       0       1       0       28      0.00    0.01    0.00    99.99   0.01    99.82   0.00    28      0       1.2474
40      24      0       0.02    1274    2995    0.43    10      0       0       0       0       18      0.00    0.00    0.00    99.98   0.00    99.80   0.00    28      0       1.2424
41      25      0       0.02    1921    2995    0.27    11      0       1       1       2       34      0.00    0.00    0.03    99.95   0.00    99.80   0.00    28      0       1.2925
42      26      0       0.02    2444    2995    0.27    11      0       1       1       0       37      0.00    0.00    0.00    99.98   0.00    99.81   0.00    28      0       1.2474
43      27      1       0.13    1139    2995    0.18    130     0       1       9       85      62      0.00    0.06    1.62    98.21   0.44    99.03   0.00    28      0       1.2474
44      28      0       0.04    1225    2995    0.31    45      0       0       2       27      22      0.00    0.01    0.52    99.44   0.25    99.47   0.00    29      0       1.2524
45      29      0       0.02    2495    2995    0.29    22      0       1       3       9       34      0.00    0.02    0.14    99.83   0.02    99.78   0.00    29      0       1.2524
46      30      0       0.01    3410    2995    0.30    10      0       3       2       2       33      0.00    0.01    0.03    99.95   0.01    99.80   0.00    29      0       1.2474
47      31      1       0.02    3202    2995    1.49    35      0       0       1       15      32      0.00    0.01    0.30    99.67   0.70    99.10   0.00    29      0       1.2474

Here’s the output of the other program I’m working on. Note that with microcode 0x125 the boosts over 5.4 are so fleeting the program in its current state doesn’t pick up those boosts. But the voltages are much more conservative, with this i9 staying well under 1.4v, interestingly.

Core i9 13900k 
eTVB/TVB: disabled

Microcode Version: 0x125

Max MHz:
Core 9: 5800 *
Core 8: 5800 * 
Core 11: 5800 * 
Core 10: 5800 * 
Core 7: 5500
Core 6: 5500
Core 5: 5500
Core 4: 5500
Core 3: 5500
Core 2: 5500
Core 15: 5500
Core 1: 5500
Core 14: 5500
Core 13: 5500
Core 12: 5500
Core 0: 5500
Core 31: 4300
Core 30: 4300
Core 29: 4300
Core 28: 4300
Core 27: 4300
Core 26: 4300
Core 25: 4300
Core 24: 4300
Core 23: 4300
Core 22: 4300
Core 21: 4300
Core 20: 4300
Core 19: 4300
Core 18: 4300
Core 17: 4300
Core 16: 4300


Progressive Stress Test:
1 core(s) loaded:
Core 9: VCore = 1.3728 V, Frequency = 4299.98 MHz

2 core(s) loaded:
Core 9: VCore = 1.27771 V, Frequency = 4299.94 MHz
Core 8: VCore = 1.31116 V, Frequency = 4300.06 MHz

3 core(s) loaded:
Core 9: VCore = 1.30652 V, Frequency = 4300.06 MHz
Core 8: VCore = 1.30603 V, Frequency = 4299.92 MHz
Core 11: VCore = 1.30151 V, Frequency = 4300.02 MHz

4 core(s) loaded:
Core 9: VCore = 1.27405 V, Frequency = 4299.99 MHz
Core 8: VCore = 1.32703 V, Frequency = 4300.14 MHz
Core 11: VCore = 1.32239 V, Frequency = 4299.99 MHz
Core 10: VCore = 1.33398 V, Frequency = 4300.1 MHz

5 core(s) loaded:
Core 9: VCore = 1.31042 V, Frequency = 4299.94 MHz
Core 8: VCore = 1.32336 V, Frequency = 4300.11 MHz
Core 11: VCore = 1.32812 V, Frequency = 4299.98 MHz
Core 10: VCore = 1.36047 V, Frequency = 4299.92 MHz
Core 7: VCore = 1.42993 V, Frequency = 5484.01 MHz

6 core(s) loaded:
Core 9: VCore = 1.33252 V, Frequency = 4300.01 MHz
Core 8: VCore = 1.33081 V, Frequency = 4299.99 MHz
Core 11: VCore = 1.33984 V, Frequency = 4299.97 MHz
Core 10: VCore = 1.40491 V, Frequency = 4300.05 MHz
Core 7: VCore = 1.39526 V, Frequency = 5500.06 MHz
Core 6: VCore = 1.43274 V, Frequency = 5449.93 MHz

7 core(s) loaded:
Core 9: VCore = 1.32349 V, Frequency = 4299.98 MHz
Core 8: VCore = 1.39307 V, Frequency = 4299.86 MHz
Core 11: VCore = 1.37146 V, Frequency = 4300.11 MHz
Core 10: VCore = 1.37744 V, Frequency = 4299.99 MHz
Core 7: VCore = 1.3938 V, Frequency = 5499.94 MHz
Core 6: VCore = 1.44104 V, Frequency = 5445.17 MHz
Core 5: VCore = 1.34302 V, Frequency = 4836.15 MHz

8 core(s) loaded:
Core 9: VCore = 1.35803 V, Frequency = 4299.85 MHz
Core 8: VCore = 1.37463 V, Frequency = 4300 MHz
Core 11: VCore = 1.37756 V, Frequency = 4300.03 MHz
Core 10: VCore = 1.39294 V, Frequency = 4300.1 MHz
Core 7: VCore = 1.3844 V, Frequency = 5500 MHz
Core 6: VCore = 1.43066 V, Frequency = 5466.09 MHz
Core 5: VCore = 1.3866 V, Frequency = 5106.97 MHz
Core 4: VCore = 1.41272 V, Frequency = 5334.92 MHz

image

7 Likes

Let me preface this by saying I’m not very well versed with how Intel handles SVID requests.

Have you considered AVX guardband settings that motherboards apply affecting CPU V/F curves? I’m under the impression most motherboard use this voltage scaling factor for more “stressful” workloads even if it is not exposed; and it is independent of the AVX ratio offset more commonly found in BIOS.

yeah, your instincts are spot on. It looks to me like the opposite problem though – when the CPU has a long queue on a core or two, it thinks it is very busy, and can boost, and requests a lot of voltage.

If it is stalled or the pipeline has a lot of bubbles however, it can’t actually do much. But all those electrons all go to electromigration instead of heat or work. That’s why, I think, cpus that aren’t hot can still die really rapidly. And some % of CPUs don’t care about this fail condition. Is it because these CPUs are cherry and dont need voltage in the first place to boost? maybe. The vid windows are actually pretty wide across the CPUs I have access to if you map max 1t boost and requested voltage.

Whatever algorithm that guesstimates how much power the cpu is going to need must have holes in it… and with no load to actually lower the voltage. It murders the cpu with death by thousands of tiny papercuts.

That’s just a guess, but I did setup a 14700T in the corner today with exactly this kind of torture test and its logging the vid output every second. Guess I’ll check back in a month.

2 Likes

…makes me wonder if Intel “removing” DLVR from these specific CPUs at the 11th hour had some unintended side effects. Perhaps it was more integral to preventing voltage overshoot than they thought when they fused it off.

↑ wild speculation

1 Like

I noticed this feature in my ASUS TUF mainboard too. Will go take a look, then stress test my Core i7-13700K under Linux, where it should fail too, as y-cruncher’s stress test causes BSODs in Windows 11.

1 Like

I would be interested to know if you mod turbostat to keep the “max voltage” seen per cpu etc, and run it at an interval of 0.001 seconds or something really aggressive like that, if you ever see a voltage level that is way out of spec with it.

not turbostat, but my utilit, y I did that and colorized yellow and red ranges to help track it

Wondering if you ever see these elevated voltage spikes they claim in the " Leaked Intel communication regarding 13th & 14th gen instability" at Igors lab (can’t post the link here).

– Even under idle conditions at relatively cool temperatures, sporadic elevated voltages are observed when the processor is resumed from low power states in order to service background operations before entering a low power state again.
– At a sufficiently high voltage, these short-duration events can accumulate over time, contributing to the increase in Vmin.

– Intel is validating a microcode update to limit VID requests above 1.55V as a potential future corrective action, targeted for production release in mid-August to NDA customers.

so far? not really seeing excessive spikes on w680 unless 1.506 is excessive

2 Likes

Nice.
For those building this - it looks like Wendell posted a mid-codechange patch.
calculate_vid divides by 8192 twice, leading to very small reported voltage.

double val = ((msr_value&0x0000ffff00000000) >> 32) * (1.0f/8192.f);
return val /*/ (1 << 13) already did that*/;

my 12600 peaks at 1.25V, 12100 @ 1.14, 1340P @ 1.0V

2 Likes

so immediately after I did that, a new patch dropped in mainline to deal with, I think, lunar lake, so I need to refactor my patch a bit anyway and clean it up. and resubmit :slight_smile:

2 Likes

Thanks for all the research on this topic it’s fascinating to watch. If you want to monitor this on multiple machines at once you can use Telegraf. I don’t have a linux Intel machine in my lab to test but I think it should work by modifying the turbostat command in turbo.sh.

make an exectuable script called turbocat.sh that contains

#!/bin/bash
/usr/bin/turbostat -i 1.0 --quiet 2>&1 | /usr/bin/awk '{print tolower($0)}' | /usr/bin/sed 's/%/_percent/g'

then add the following telegraf config

[[inputs.execd]]
  command = ["/path/to/turbostat.sh"]
  data_format = "csv"
  csv_header_row_count = 1
  csv_delimiter = "\t"
  csv_tag_columns = ["core","cpu"]
  csv_skip_columns = 1
  #ignore_error = true
  stop_on_error = true
  signal = "STDIN"
  name_override = "turbostat"
[[outputs.influxdb]]
  urls = ["$victoria_url"]
  username = "$victoria_user"
  password = "$victoria_password"
  database = "linux"
  namepass = ["turbostat*"]
  skip_database_creation = true
  exclude_retention_policy_tag = true
  content_encoding = "gzip"
  insecure_skip_verify = true

If you don’t already have a home these metrics I’d be happy to spin something up that can collect this info for you.

1 Like

I checked out linux/master, and tried applying the patch across various git commits over the past month or so. I always get failed hunks.

What git commit ID should I try this patch against?

Sorry if this is a stupid question, new here!

username@hostname:~/src/linux-master/linux/tools/power/x86/turbostat$ patch -p5 < turbostat-voltage.diff 
(Stripping trailing CRs from patch; use --binary to disable.)
patching file turbostat.c
Hunk #2 succeeded at 136 with fuzz 2 (offset 48 lines).
Hunk #3 FAILED at 149.
Hunk #4 FAILED at 210.
Hunk #5 succeeded at 312 (offset 47 lines).
patch: **** malformed patch at line 70:  enum package_cstate_limit {

username@hostname:~/src/linux-master/linux/tools/power/x86/turbostat$ git remote --v
origin  https://github.com/torvalds/linux.git (fetch)
origin  https://github.com/torvalds/linux.git (push)
username@hostname:~/src/linux-master/linux/tools/power/x86/turbostat$ git status
HEAD detached at 361b8fc73cf6
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        turbostat-voltage.diff

nothing added to commit but untracked files present (use "git add" to track)
username@hostname:~/src/linux-master/linux/tools/power/x86/turbostat$ git log | head
commit 361b8fc73cf63dc0c3be3778720631f1a33ba9db
Author: Patryk Wlazlyn <[email protected]>
Date:   Tue May 28 15:46:10 2024 +0200

    tools/power turbostat: Extend --add option with perf counters
    
    User can now read perf counters using "--add perf/<device>/<event>".
    Other details work similarly to how --add works with MSRs.
    
    Signed-off-by: Patryk Wlazlyn <[email protected]>

patch updaterd above for mainline :slight_smile:

3 Likes

Thanks.

For other people’s reference, it patches cleanly with this commit:

user@hostname:~/src/linux-master/linux/tools/power/x86/turbostat$ git log
commit c0ecd6388360d930440cc5554026818895199923 (HEAD -> master, origin/master, origin/HEAD)
Merge: 183d46ff422e 5560a612c20d
Author: Linus Torvalds <[email protected]>
Date:   Thu Aug 1 11:30:15 2024 -0700

    Merge tag 'pci-v6.11-fixes-1' of git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci
    
    Pull PCI fixes from Bjorn Helgaas:
    
     - Fix a pci_intx() regression that caused driver reload to fail with
       "Resources present before probing" (Philipp Stanner)
    
     - Fix a pciehp regression that clobbered the upper bits of RAID status
       LEDs on NVMe devices behind an Intel VMD (Blazej Kucman)
    
    * tag 'pci-v6.11-fixes-1' of git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci:
      PCI: pciehp: Retain Power Indicator bits for userspace indicators
      PCI: Fix devres regression in pci_intx()

1 Like

but more improtantly, whats your nfoz? and whats your nfoz running stress-ng --cpu 1-8? :smiley:

Has the patch been submitted to the kernel mailing list to be included in the official Linux releases? I’m just asking so I’d avoid having to patch the source code and build a custom kernel for whatever distro…

I would like to test the voltages on my notebook, how is that supposed to work, does it print the voltage for each frequency just like that, like reading from a table, or do I have to achieve those frequencies so it can read the actual voltage value being feed?

I don’t see any information about this, so it’s way too technical.