Contribute
Register

AppleIntelCPUPowerManagementInfo.kext (MSRDumper successor)

Status
Not open for further replies.
Joined
Jan 18, 2013
Messages
271
Motherboard
Mac mini
CPU
i[5/7]
Graphics
HD[3/4]000
Mac
  1. 0
Classic Mac
  1. 0
Mobile Phone
  1. 0
Introduction

One of my latest sub-projects, AppleIntelCPUPowerManagementInfo.kext – successor of MSRDumper.kext – is ready for its first public appearing.

Target Audience

This is not something everyone here should run. Not yet. What we like to see is feedback from people who know how to compile Xcode projects, move and fire up kexts. That is also why I won't discuss that here. Sorry folks.

Note: If you are happy with the output of MSRDumper.kext then keep using it.

Output

MSR_CORE_THREAD_COUNT......(0x35) : 0x40004
MSR_PLATFORM_INFO..........(0xCE) : 0x100070012100
MSR_PMG_CST_CONFIG_CONTROL.(0xE2) : 0x18000403
MSR_PMG_IO_CAPTURE_BASE....(0xE4) : 0x414
IA32_MPERF.................(0xE7) : 0x9F321F893D
IA32_APERF.................(0xE8) : 0x6CA11BA565
MSR_IA32_PERF_STATUS.......(0x198) : 0x285A00002200
MSR_IA32_PERF_CONTROL......(0x199) : 0x2200
IA32_CLOCK_MODULATION......(0x19A) : 0x0
IA32_THERM_STATUS..........(0x19C) : 0x88440000
IA32_MISC_ENABLES..........(0x1A0) : 0x850089
MSR_MISC_PWR_MGMT..........(0x1AA) : 0x400001
MSR_TURBO_RATIO_LIMIT......(0x1AD) : 0x22232425
IA32_ENERGY_PERF_BIAS......(0x1B0) : 0x4
MSR_POWER_CTL..............(0x1FC) : 0x4005F
rdmsr64....................(0x602) : 0x1814149480001FFF
MSR_RAPL_POWER_UNIT........(0x606) : 0xA1003
MSR_PKG_POWER_LIMIT........(0x610) : 0x800087F8001487F8
MSR_PKG_ENERGY_STATUS......(0x611) : 0x426C0DA9
MSR_PP0_POWER_LIMIT........(0x638) : 0x0
MSR_PP0_ENERGY_STATUS......(0x639) : 0x1942669E
MSR_PP0_POLICY.............(0x63a) : 0x0
MSR_PP1_POWER_LIMIT........(0x640) : 0x0
MSR_PP1_ENERGY_STATUS......(0x641) : 0x2C6F25A
MSR_PP1_POLICY.............(0x642) : 0x10
MSR_PKG_C2_RESIDENCY.......(0x60d) : 0x20B65562FEF
MSR_PKG_C3_RESIDENCY.......(0x3f8) : 0x0
MSR_PKG_C6_RESIDENCY.......(0x3f9) : 0x5474531CB83
MSR_PKG_C7_RESIDENCY.......(0x3fa) : 0x0

Low Frequency Mode : 1600 MHz
Clock Speed : 3300 MHz
Max Turbo Frequency: 3700 MHz

Graphics Core Ratios:
Current Ratio : 0x11
Max Non-Turbo Ratio : 0x11
Max Turbo Ratio : 0x16

AICPUPMI: CPU P-States [ 16 37 ] GPU P-States [ 17 ]
AICPUPMI: CPU P-States [ 16 24 37 ] GPU P-States [ 17 ]
AICPUPMI: CPU P-States [ 16 24 33 37 ] GPU P-States [ 17 ]
AICPUPMI: CPU P-States [ 16 24 29 35 37 ] GPU P-States [ 17 ]
AICPUPMI: CPU P-States [ 16 24 29 34 36 37 ] GPU P-States [ 17 ]
AICPUPMI: CPU P-States [ 16 24 29 34 35 36 37 ] GPU P-States [ 17 ]
AICPUPMI: CPU P-States [ 16 24 29 33 34 35 36 37 ] GPU P-States [ 17 ]

Note: We are still dumping data in /var/log/system.log but this should soon be a thing of the past. When the front-end app is released.

Source Code

The source code can be found in my Github repository for RevoBoot (clang branch):
https://github.com/Piker-Alpha/RevoBoot/tree/clang/i386/libsaio/cpu/tools/PMinfo

Compiled Kext

1) Download the attached kext and copy it to: /System/Library/Extensions/
2) Fix ownership and permissions with the tool of your choice, or do it from a terminal window with:
Code:
sudo chown -R root:wheel /S*/L*/Extensions/AppleIntelCPUPowerManagementInfo.kext
sudo chmod -R 755 /S*/L*/Extensions/AppleIntelCPUPowerManagementInfo.kext
sudo touch /S*/L*/Extensions
sudo -k
exit
3) Reboot
4) Use this terminal command to show the data:
Code:
cat /var/log/system.log | grep "AICPUPMI:"

Notes

1) This version won't dump the MSR's and GPU data (compile it yourself when you need this infowant that).
2) It can be used as a replacement for MSRDumper.kext
3) One big advantage is that this kext won't clog up: /var/log/system.log
4) Another advantage is that it will show all reached P-States (MSRDumper.kext won't)
 

Attachments

  • AppleIntelCPUPowerManagementInfo.kext.zip
    9.7 KB · Views: 6,295
Please attach compiled kext!! Thank you!!!
 
Pike --

I don't know if you're interested in Sandy Bridge results, but here is my output from my HP ProBook i3-2310m:

Code:
Mar  6 16:15:52 ProBook-ML kernel[0]: MSR_CORE_THREAD_COUNT......(0x35)  : 0x20004
Mar  6 16:15:52 ProBook-ML kernel[0]: MSR_PLATFORM_INFO..........(0xCE)  : 0x80060011500
Mar  6 16:15:52 ProBook-ML kernel[0]: MSR_PMG_CST_CONFIG_CONTROL.(0xE2)  : 0x1E008404
Mar  6 16:15:52 ProBook-ML kernel[0]: MSR_PMG_IO_CAPTURE_BASE....(0xE4)  : 0x20414
Mar  6 16:15:52 ProBook-ML kernel[0]: IA32_MPERF.................(0xE7)  : 0x4991F958B3
Mar  6 16:15:52 ProBook-ML kernel[0]: IA32_APERF.................(0xE8)  : 0x451D4E5E8F
Mar  6 16:15:52 ProBook-ML kernel[0]: MSR_IA32_PERF_STATUS.......(0x198) : 0x254F00001500
Mar  6 16:15:52 ProBook-ML kernel[0]: MSR_IA32_PERF_CONTROL......(0x199) : 0x1515
Mar  6 16:15:52 ProBook-ML kernel[0]: IA32_CLOCK_MODULATION......(0x19A) : 0x0
Mar  6 16:15:52 ProBook-ML kernel[0]: IA32_THERM_STATUS..........(0x19C) : 0x881C0008
Mar  6 16:15:52 ProBook-ML kernel[0]: IA32_MISC_ENABLES..........(0x1A0) : 0x850089
Mar  6 16:15:52 ProBook-ML kernel[0]: MSR_MISC_PWR_MGMT..........(0x1AA) : 0x400001
Mar  6 16:15:52 ProBook-ML kernel[0]: MSR_TURBO_RATIO_LIMIT......(0x1AD) : 0x15151515
Mar  6 16:15:52 ProBook-ML kernel[0]: IA32_ENERGY_PERF_BIAS......(0x1B0) : 0x4
Mar  6 16:15:52 ProBook-ML kernel[0]: MSR_POWER_CTL..............(0x1FC) : 0x4005F
Mar  6 16:15:52 ProBook-ML kernel[0]: rdmsr64....................(0x602) : 0x1814149480000118
Mar  6 16:15:52 ProBook-ML kernel[0]: MSR_RAPL_POWER_UNIT........(0x606) : 0xA1003
Mar  6 16:15:52 ProBook-ML kernel[0]: MSR_PKG_POWER_LIMIT........(0x610) : 0x8000815E00148118
Mar  6 16:15:52 ProBook-ML kernel[0]: MSR_PKG_ENERGY_STATUS......(0x611) : 0x42776576
Mar  6 16:15:52 ProBook-ML kernel[0]: MSR_PP0_POWER_LIMIT........(0x638) : 0x0
Mar  6 16:15:52 ProBook-ML kernel[0]: MSR_PP0_ENERGY_STATUS......(0x639) : 0x15C3F00A
Mar  6 16:15:52 ProBook-ML kernel[0]: MSR_PP0_POLICY.............(0x63a) : 0x0
Mar  6 16:15:52 ProBook-ML kernel[0]: MSR_PP1_POWER_LIMIT........(0x640) : 0x0
Mar  6 16:15:52 ProBook-ML kernel[0]: MSR_PP1_ENERGY_STATUS......(0x641) : 0x2249664
Mar  6 16:15:52 ProBook-ML kernel[0]: MSR_PP1_POLICY.............(0x642) : 0x10
Mar  6 16:15:52 ProBook-ML kernel[0]: MSR_PKG_C2_RESIDENCY.......(0x60d) : 0x6184357800
Mar  6 16:15:52 ProBook-ML kernel[0]: MSR_PKG_C3_RESIDENCY.......(0x3f8) : 0x6CA745B2
Mar  6 16:15:52 ProBook-ML kernel[0]: MSR_PKG_C6_RESIDENCY.......(0x3f9) : 0x8D1E1AC5C5
Mar  6 16:15:52 ProBook-ML kernel[0]: MSR_PKG_C7_RESIDENCY.......(0x3fa) : 0x4A2780715E8
Mar  6 16:15:52 ProBook-ML kernel[0]: Low Frequency Mode : 800 MHz
Mar  6 16:15:52 ProBook-ML kernel[0]: Clock Speed        : 2100 MHz
Mar  6 16:15:52 ProBook-ML kernel[0]: Max Turbo Frequency: 2100 MHz
Mar  6 16:15:52 ProBook-ML kernel[0]: Graphics Core Ratios:
Mar  6 16:15:52 ProBook-ML kernel[0]: Current Ratio       : 0x0d
Mar  6 16:15:52 ProBook-ML kernel[0]: Max Non-Turbo Ratio : 0x0d
Mar  6 16:15:52 ProBook-ML kernel[0]: Max Turbo Ratio     : 0x16
Mar  6 16:15:53 ProBook-ML kernel[0]: AICPUPMI: CPU P-States [ 8 ] GPU P-State [ 13 ]
Mar  6 16:16:00 ProBook-ML kernel[0]: AICPUPMI: CPU P-States [ 8 11 ] GPU P-State [ 13 ]
Mar  6 16:16:27 ProBook-ML kernel[0]: AICPUPMI: CPU P-States [ 8 11 21 ] GPU P-State [ 13 ]
Mar  6 16:16:30 ProBook-ML kernel[0]: AICPUPMI: CPU P-States [ 8 11 14 21 ] GPU P-State [ 13 ]
Mar  6 16:17:40 ProBook-ML kernel[0]: AICPUPMI: CPU P-States [ 8 11 14 18 21 ] GPU P-State [ 13 ]
 
And here's for my desktop, i7-2600k:

Code:
Mar  6 16:25:34 localhost kernel[0]: MSR_CORE_THREAD_COUNT......(0x35)  : 0x40008
Mar  6 16:25:34 localhost kernel[0]: MSR_PLATFORM_INFO..........(0xCE)  : 0x100060012200
Mar  6 16:25:34 localhost kernel[0]: MSR_PMG_CST_CONFIG_CONTROL.(0xE2)  : 0x1E008407
Mar  6 16:25:34 localhost kernel[0]: MSR_PMG_IO_CAPTURE_BASE....(0xE4)  : 0x10414
Mar  6 16:25:34 localhost kernel[0]: IA32_MPERF.................(0xE7)  : 0x62208E467
Mar  6 16:25:34 localhost kernel[0]: IA32_APERF.................(0xE8)  : 0x3E7FDECFF
Mar  6 16:25:34 localhost kernel[0]: MSR_IA32_PERF_STATUS.......(0x198) : 0x285A00002300
Mar  6 16:25:34 localhost kernel[0]: MSR_IA32_PERF_CONTROL......(0x199) : 0x2300
Mar  6 16:25:34 localhost kernel[0]: IA32_CLOCK_MODULATION......(0x19A) : 0x0
Mar  6 16:25:34 localhost kernel[0]: IA32_THERM_STATUS..........(0x19C) : 0x88450000
Mar  6 16:25:34 localhost kernel[0]: IA32_MISC_ENABLES..........(0x1A0) : 0x850089
Mar  6 16:25:34 localhost kernel[0]: MSR_MISC_PWR_MGMT..........(0x1AA) : 0x400001
Mar  6 16:25:34 localhost kernel[0]: MSR_TURBO_RATIO_LIMIT......(0x1AD) : 0x23242526
Mar  6 16:25:34 localhost kernel[0]: IA32_ENERGY_PERF_BIAS......(0x1B0) : 0x4
Mar  6 16:25:34 localhost kernel[0]: MSR_POWER_CTL..............(0x1FC) : 0x4005F
Mar  6 16:25:34 localhost kernel[0]: rdmsr64....................(0x602) : 0x1814149400000104
Mar  6 16:25:34 localhost kernel[0]: MSR_RAPL_POWER_UNIT........(0x606) : 0xA1003
Mar  6 16:25:34 localhost kernel[0]: MSR_PKG_POWER_LIMIT........(0x610) : 0x800083B6001482F8
Mar  6 16:25:34 localhost kernel[0]: MSR_PKG_ENERGY_STATUS......(0x611) : 0x3878351
Mar  6 16:25:34 localhost kernel[0]: MSR_PP0_POWER_LIMIT........(0x638) : 0x0
Mar  6 16:25:34 localhost kernel[0]: MSR_PP0_ENERGY_STATUS......(0x639) : 0x12E18F5
Mar  6 16:25:34 localhost kernel[0]: MSR_PP0_POLICY.............(0x63a) : 0x0
Mar  6 16:25:34 localhost kernel[0]: MSR_PP1_POWER_LIMIT........(0x640) : 0x0
Mar  6 16:25:34 localhost kernel[0]: MSR_PP1_ENERGY_STATUS......(0x641) : 0x2CFB91
Mar  6 16:25:34 localhost kernel[0]: MSR_PP1_POLICY.............(0x642) : 0x10
Mar  6 16:25:34 localhost kernel[0]: MSR_PKG_C2_RESIDENCY.......(0x60d) : 0x1F6948AE80
Mar  6 16:25:34 localhost kernel[0]: MSR_PKG_C3_RESIDENCY.......(0x3f8) : 0x171780EA
Mar  6 16:25:34 localhost kernel[0]: MSR_PKG_C6_RESIDENCY.......(0x3f9) : 0x4D6C003324
Mar  6 16:25:34 localhost kernel[0]: MSR_PKG_C7_RESIDENCY.......(0x3fa) : 0x0
Mar  6 16:25:34 localhost kernel[0]: Low Frequency Mode : 1600 MHz
Mar  6 16:25:34 localhost kernel[0]: Clock Speed        : 3400 MHz
Mar  6 16:25:34 localhost kernel[0]: Max Turbo Frequency: 3800 MHz
Mar  6 16:25:34 localhost kernel[0]: Graphics Core Ratios:
Mar  6 16:25:34 localhost kernel[0]: Current Ratio       : 0x11
Mar  6 16:25:34 localhost kernel[0]: Max Non-Turbo Ratio : 0x11
Mar  6 16:25:34 localhost kernel[0]: Max Turbo Ratio     : 0x1b
Mar  6 16:25:35 localhost kernel[0]: AICPUPMI: CPU P-States [ 16 ] GPU P-State [ 17 ]
Mar  6 16:25:37 localhost kernel[0]: AICPUPMI: CPU P-States [ 16 30 ] GPU P-State [ 17 ]
Mar  6 16:25:41 localhost kernel[0]: AICPUPMI: CPU P-States [ 16 30 36 ] GPU P-State [ 17 ]
Mar  6 16:26:04 localhost kernel[0]: AICPUPMI: CPU P-States [ 16 25 30 36 ] GPU P-State [ 17 ]
Mar  6 16:26:11 localhost kernel[0]: AICPUPMI: CPU P-States [ 16 25 30 35 36 ] GPU P-State [ 17 ]
Mar  6 16:26:13 localhost kernel[0]: AICPUPMI: CPU P-States [ 16 25 30 35 36 37 ] GPU P-State [ 17 ]
Mar  6 16:28:01 localhost kernel[0]: AICPUPMI: CPU P-States [ 16 25 30 34 35 36 37 ] GPU P-State [ 17 ]
 
Hi PikeR, congratulations for the great tool!

I have a small doubt...

The GPU P-State output is only for integrated IntelHD Graphics???

I'm asking this because I have edited AppleGraphicsPowerManagament.kext to control my GTS250
with Debug enabled and I can see through dmesg that is working...

Code:
AGPM: updateGPUHwPstate(2, 0): fHwPstate = 3 fFB = 0xffffff8029426000
AGPM: updateGPUHwPstate(): state = 2. Calling fFB->setAggressiveness()...
AGPM: GPU = PEGP G-state set to 2 from 3, ControlID = 18. SW occupancy updated.
AGPM: updateGPUHwPstate(3, 0): fHwPstate = 2 fFB = 0xffffff8029426000
AGPM: updateGPUHwPstate(): state = 3. Calling fFB->setAggressiveness()...
AGPM: GPU = PEGP G-state set to 3 from 2, ControlID = 18. SW occupancy updated.
AGPM: updateGPUHwPstate(2, 0): fHwPstate = 3 fFB = 0xffffff8029426000
AGPM: updateGPUHwPstate(): state = 2. Calling fFB->setAggressiveness()...
AGPM: GPU = PEGP G-state set to 2 from 3, ControlID = 18. SW occupancy updated.
AGPM: updateGPUHwPstate(3, 0): fHwPstate = 2 fFB = 0xffffff8029426000
AGPM: updateGPUHwPstate(): state = 3. Calling fFB->setAggressiveness()...
AGPM: GPU = PEGP G-state set to 3 from 2, ControlID = 18. SW occupancy updated.
AGPM: updateGPUHwPstate(2, 0): fHwPstate = 3 fFB = 0xffffff8029426000
AGPM: updateGPUHwPstate(): state = 2. Calling fFB->setAggressiveness()...
AGPM: GPU = PEGP G-state set to 2 from 3, ControlID = 18. SW occupancy updated.
AGPM: updateGPUHwPstate(3, 0): fHwPstate = 2 fFB = 0xffffff8029426000
AGPM: updateGPUHwPstate(): state = 3. Calling fFB->setAggressiveness()...
AGPM: GPU = PEGP G-state set to 3 from 2, ControlID = 18. SW occupancy updated.

But AICPUPMI don't show those changes...

Code:
MSR_CORE_THREAD_COUNT......(0x35)  : 0x40004
MSR_PLATFORM_INFO..........(0xCE)  : 0x100070011C00
MSR_PMG_CST_CONFIG_CONTROL.(0xE2)  : 0x1E000403
MSR_PMG_IO_CAPTURE_BASE....(0xE4)  : 0x10414
IA32_MPERF.................(0xE7)  : 0x27DEAA93733
IA32_APERF.................(0xE8)  : 0x20A57D13AFC
MSR_IA32_PERF_STATUS.......(0x198) : 0x2A4600002000
MSR_IA32_PERF_CONTROL......(0x199) : 0x2000
IA32_CLOCK_MODULATION......(0x19A) : 0x0
IA32_THERM_STATUS..........(0x19C) : 0x88330000
IA32_MISC_ENABLES..........(0x1A0) : 0x850089
MSR_MISC_PWR_MGMT..........(0x1AA) : 0x400001
MSR_TURBO_RATIO_LIMIT......(0x1AD) : 0x20212223
IA32_ENERGY_PERF_BIAS......(0x1B0) : 0x4
MSR_POWER_CTL..............(0x1FC) : 0x4005F
rdmsr64....................(0x602) : 0x1814149400000960
MSR_RAPL_POWER_UNIT........(0x606) : 0xA1003
MSR_PKG_POWER_LIMIT........(0x610) : 0xA58000009F40
MSR_PKG_ENERGY_STATUS......(0x611) : 0x30CDD3ED
MSR_PP0_POWER_LIMIT........(0x638) : 0xA580
MSR_PP0_ENERGY_STATUS......(0x639) : 0xA234DC2A
MSR_PP0_POLICY.............(0x63a) : 0x0
MSR_PP1_POWER_LIMIT........(0x640) : 0xA580
MSR_PP1_ENERGY_STATUS......(0x641) : 0x0
MSR_PP1_POLICY.............(0x642) : 0x10
MSR_PKG_C2_RESIDENCY.......(0x60d) : 0x75E6DC9BCD8
MSR_PKG_C3_RESIDENCY.......(0x3f8) : 0x957B10C
MSR_PKG_C6_RESIDENCY.......(0x3f9) : 0x566C1CDA9E4
MSR_PKG_C7_RESIDENCY.......(0x3fa) : 0x0
Low Frequency Mode : 1600 MHz
Clock Speed        : 2800 MHz
Max Turbo Frequency: 3500 MHz
Graphics Core Ratios:
Current Ratio       : 0x00
Max Non-Turbo Ratio : 0x11
Max Turbo Ratio     : 0x16
AICPUPMI: CPU P-States [ 16 ] GPU P-State [ 0 ]
AICPUPMI: CPU P-States [ 16 19 ] GPU P-State [ 0 ]
AICPUPMI: CPU P-States [ 16 19 28 ] GPU P-State [ 0 ]
AICPUPMI: CPU P-States [ 16 19 22 28 ] GPU P-State [ 0 ]
AICPUPMI: CPU P-States [ 16 19 22 28 34 ] GPU P-State [ 0 ]
AICPUPMI: CPU P-States [ 16 19 22 28 32 34 ] GPU P-State [ 0 ]
AICPUPMI: CPU P-States [ 16 19 22 25 28 32 34 ] GPU P-State [ 0 ]
AICPUPMI: CPU P-States [ 16 19 22 25 28 32 33 34 ] GPU P-State [ 0 ]
AICPUPMI: CPU P-States [ 16 19 22 25 28 31 32 33 34 ] GPU P-State [ 0 ]
AICPUPMI: CPU P-States [ 16 19 22 25 28 30 31 32 33 34 ] GPU P-State [ 0 ]
AICPUPMI: CPU P-States [ 16 19 22 25 28 29 30 31 32 33 34 ] GPU P-State [ 0 ]

Thanks!

EDIT

Is a different machine than my signature...

P67A-D3-B3 + i5-2300 + GTS250
 
@RehabMan,

Thank you for the dumps!

@mkk,

Sorry. I should have said that this was, currently, still very much HD3000/HD4000 specific. This should eventually change, some time in the near future, but I am still away for work – working remote – and don't have a lot of free time left.
 
The compiled kext is now available from post #1
 
Running the compiled kext
Code:
Last login: Thu Mar 28 14:55:26 on console
localhost:~ gio$ cat /var/log/system.log | grep "AICPUPMI:"
Mar 28 14:53:00 localhost kernel[0]: AICPUPMI: CPU P-States [ 35 40 ]
Mar 28 14:53:06 localhost kernel[0]: AICPUPMI: CPU P-States [ 35 38 40 ]
Mar 28 14:53:07 localhost kernel[0]: AICPUPMI: CPU P-States [ 16 35 38 40 ]
Mar 28 14:53:19 localhost kernel[0]: AICPUPMI: CPU P-States [ 16 17 35 38 40 ]
Mar 28 14:53:34 localhost kernel[0]: AICPUPMI: CPU P-States [ 16 17 21 35 38 40 ]
Mar 28 14:55:15 localhost kernel[0]: AICPUPMI: CPU P-States [ 16 25 ]
Mar 28 14:55:17 localhost kernel[0]: AICPUPMI: CPU P-States [ 16 25 35 ]
Mar 28 14:55:19 localhost kernel[0]: AICPUPMI: CPU P-States [ 16 17 25 35 ]
Mar 28 14:55:22 localhost kernel[0]: AICPUPMI: CPU P-States [ 16 17 25 35 38 ]
Mar 28 14:55:27 localhost kernel[0]: AICPUPMI: CPU P-States [ 16 17 25 33 35 38 ]
Mar 28 14:55:27 localhost kernel[0]: AICPUPMI: CPU P-States [ 16 17 25 32 33 35 38 ]
Mar 28 14:55:30 localhost kernel[0]: AICPUPMI: CPU P-States [ 16 17 25 32 33 35 38 40 ]
localhost:~ gio$


MSRDumper
Code:
Mar 28 15:13:51 localhost kernel[0]: MSRDumper CoreMulti(16) 
Mar 28 15:13:51 localhost kernel[0]: MSRDumper PStatesReached: 16 17 21 25 30 31 32 33 34 35 36 37 38 40

EDIT: i7 3770T @ 4100, TDP 40, graphics HD 4000
 
Running the compiled kext
...
EDIT: i7 3770T @ 4100, TDP 40, graphics HD 4000
This is rather strange. The first thing I noticed is that the top multiplier is missing. Did you copy the kext to: /System/Library/Extensions and reboot? If not, then it won't show it – there is only one logical core active at boot time.

MSRDumper.kext also appears to detect more P-States, or they might be artificial – all cores must run at the same frequency, and thus dumping a thread P-State change request, by simply reading out the MSR on any given core, is not necessarily a valid P-State!

Maybe not, but then I need to know what model identifier you are using, and if you changed the plist data to extend the P-States. Oh and did you disable EIST in UEFI? Otherwise I won't be able to reproduce it.

Can you please attach your copy of MSRDumper.kext – there are so many different versions out there – so that I can see why it shows more P-States. Thanks.

Update

I found a note in Sam's source code which links* to the Intel developer forum, where rdmsr64 asks this:

"Hello, I'm doing several profiling routines, including MSR_PERF_STATUS for P-State read-out. I'm a bit puzzled as to why for SandyBridgeIA32_PERF_CTL is defined per thread but MSR_PERF_STATUS per package. Windows and Linux Power Management are setting each core individually, but by reading out 0x198 on every core I also see individual P-States per core in PERF_STATUS. Giving that PERF_STATUS is only defined per package, and not per thread, what should I make of it? Could someone please clarify if this is intended or a documentation error? Thanks"

Note: rdmsr64 is flaked aka George.

This is why I think that MSRDumper.kext is doing something that it shouldn't do. My best guess is that George got confused by errors made in Windows and Linux source code. To me it is very simple. Any core (thread) can request a state change, but MSR_PERF_STATUS is a per package MSR and thus reading out the MSR on a core basis, is not what he should do. That doesn't mean that all conditions are met, and the P-State change did actually occur. It only tells us that one of the (logical) cores requested a state change. Not that it actually happened.

* http://software.intel.com/en-us/forums/topic/283597
 
Status
Not open for further replies.
Back
Top