Jump to content

[GUIDE] HWP(Intel Speed Shift) enable with full power management


syscl
 Share

171 posts in this topic

Recommended Posts

Any feedbacks from High Sierra ?

Using my working files from Sierra leads to kernel panics, had to delete ssdt.aml for now.

i got instant reboot if i use ssdt/ssdt-plugin1 with X86PlatformInjector.kext, was fine in sierra but no in HS

Link to comment
Share on other sites

Hi, I've got what I think is full power management working on my kaby lake i5-7200U, but my cpu is using a lot more power (nearly double the watts) that it does on windows at similar frequencies. Anything that could be causing this? 

 

post-1947858-0-80917900-1507684082_thumb.png

 

Here's the output of AppleIntelInfo:

AppleIntelInfo.kext v2.9 Copyright © 2012-2017 Pike R. Alpha. All rights reserved.

Settings:
------------------------------------------
logMSRs..................................: 1
logIGPU..................................: 1
logCStates...............................: 1
logIPGStyle..............................: 1
InitialTSC...............................: 0x42c212c55f (10 MHz)
MWAIT C-States...........................: 286531872

Processor Brandstring....................: Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz

Processor Signature..................... : 0x806E9
------------------------------------------
 - Family............................... : 6
 - Stepping............................. : 9
 - Model................................ : 0x8E (142)

Model Specific Registers (MSRs)
------------------------------------------

MSR_IA32_PLATFORM_ID.............(0x17)  : 0x1C000000000000
------------------------------------------
 - Processor Flags...................... : 7

MSR_CORE_THREAD_COUNT............(0x35)  : 0x20004
------------------------------------------
 - Core Count........................... : 2
 - Thread Count......................... : 4

MSR_PLATFORM_INFO................(0xCE)  : 0x4043DF1011B00
------------------------------------------
 - Maximum Non-Turbo Ratio.............. : 0x1B (2700 MHz)
 - Ratio Limit for Turbo Mode........... : 1 (programmable)
 - TDP Limit for Turbo Mode............. : 1 (programmable)
 - Low Power Mode Support............... : 1 (LPM supported)
 - Number of ConfigTDP Levels........... : 2 (additional TDP level(s) available)
 - Maximum Efficiency Ratio............. : 4
 - Minimum Operating Ratio.............. : 4

MSR_PMG_CST_CONFIG_CONTROL.......(0xE2)  : 0x7E008008
------------------------------------------
 - I/O MWAIT Redirection Enable......... : 0 (not enabled)
 - CFG Lock............................. : 1 (MSR locked until next reset)
 - C3 State Auto Demotion............... : 1 (enabled)
 - C1 State Auto Demotion............... : 1 (enabled)
 - C3 State Undemotion.................. : 1 (enabled)
 - C1 State Undemotion.................. : 1 (enabled)
 - Package C-State Auto Demotion........ : 1 (enabled)
 - Package C-State Undemotion........... : 1 (enabled)

MSR_PMG_IO_CAPTURE_BASE..........(0xE4)  : 0x51814
------------------------------------------
 - LVL_2 Base Address................... : 0x1814
 - C-state Range........................ : 5 (C-States not included, I/O MWAIT redirection not enabled)

IA32_MPERF.......................(0xE7)  : 0x26F390EDDB
IA32_APERF.......................(0xE8)  : 0x2A7066D79C

MSR_FLEX_RATIO...................(0x194) : 0x0
------------------------------------------

MSR_IA32_PERF_STATUS.............(0x198) : 0x14D800000D00
------------------------------------------
 - Current Performance State Value...... : 0xD00 (1300 MHz)

MSR_IA32_PERF_CONTROL............(0x199) : 0xA00
------------------------------------------
 - Target performance State Value....... : 0xA00 (1000 MHz)
 - Intel Dynamic Acceleration........... : 0 (IDA engaged)

IA32_CLOCK_MODULATION............(0x19A) : 0x0

IA32_THERM_INTERRUPT.............(0x19B) : 0x10
------------------------------------------
 - High-Temperature Interrupt Enable.... : 0 (disabled)
 - Low-Temperature Interrupt Enable..... : 0 (disabled)
 - PROCHOT# Interrupt Enable............ : 0 (disabled)
 - FORCEPR# Interrupt Enable............ : 0 (disabled)
 - Critical Temperature Interrupt Enable : 1 (enabled)
 - Threshold #1 Value................... : 0
 - Threshold #1 Interrupt Enable........ : 0 (disabled)
 - Threshold #2 Value................... : 0
 - Threshold #2 Interrupt Enable........ : 0 (disabled)
 - Power Limit Notification Enable...... : 0 (disabled)

IA32_THERM_STATUS................(0x19C) : 0x882F0800
------------------------------------------
 - Thermal Status....................... : 0
 - Thermal Log.......................... : 0
 - PROCHOT # or FORCEPR# event.......... : 0
 - PROCHOT # or FORCEPR# log............ : 0
 - Critical Temperature Status.......... : 0
 - Critical Temperature log............. : 0
 - Thermal Threshold #1 Status.......... : 0
 - Thermal Threshold #1 log............. : 0
 - Thermal Threshold #2 Status.......... : 0
 - Thermal Threshold #2 log............. : 0
 - Power Limitation Status.............. : 0
 - Power Limitation log................. : 1
 - Current Limit Status................. : 0
 - Current Limit log.................... : 0
 - Cross Domain Limit Status............ : 0
 - Cross Domain Limit log............... : 0
 - Digital Readout...................... : 47
 - Resolution in Degrees Celsius........ : 1
 - Reading Valid........................ : 1 (valid)

MSR_THERM2_CTL...................(0x19D) : 0x0

IA32_MISC_ENABLES................(0x1A0) : 0x850089
------------------------------------------
 - Fast-Strings......................... : 1 (enabled)
 - FOPCODE compatibility mode Enable.... : 0
 - Automatic Thermal Control Circuit.... : 1 (enabled)
 - Split-lock Disable................... : 0
 - Performance Monitoring............... : 1 (available)
 - Bus Lock On Cache Line Splits Disable : 0
 - Hardware prefetch Disable............ : 0
 - Processor Event Based Sampling....... : 0 (PEBS supported)
 - GV1/2 legacy Enable.................. : 0
 - Enhanced Intel SpeedStep Technology.. : 1 (enabled)
 - MONITOR FSM.......................... : 1 (MONITOR/MWAIT supported)
 - Adjacent sector prefetch Disable..... : 0
 - CFG Lock............................. : 0 (MSR not locked)
 - xTPR Message Disable................. : 1 (disabled)

MSR_TEMPERATURE_TARGET...........(0x1A2) : 0x2640000
------------------------------------------
 - Turbo Attenuation Units.............. : 0 
 - Temperature Target................... : 100
 - TCC Activation Offset................ : 2

MSR_MISC_PWR_MGMT................(0x1AA) : 0x401CC1
------------------------------------------
 - EIST Hardware Coordination........... : 1 (hardware coordination disabled)
 - Energy/Performance Bias support...... : 1
 - Energy/Performance Bias.............. : 0 (disabled/MSR not visible to software)
 - Thermal Interrupt Coordination Enable : 1 (thermal interrupt routed to all cores)
 - SpeedShift Technology Enable......... : 1 (enabled)
 - SpeedShift Interrupt Coordination.... : 1 (enabled)
 - SpeedShift Energy Efficient Perf..... : 1 (enabled)
 - SpeedShift Technology Setup for HWP.. : Yes (setup for HWP)

MSR_TURBO_RATIO_LIMIT............(0x1AD) : 0x1F1F1F1F
------------------------------------------
 - Maximum Ratio Limit for C01.......... : 1F (3100 MHz) 
 - Maximum Ratio Limit for C02.......... : 1F (3100 MHz) 

IA32_ENERGY_PERF_BIAS............(0x1B0) : 0x5
------------------------------------------
 - Power Policy Preference...............: 5 (balanced performance and energy saving)

MSR_POWER_CTL....................(0x1FC) : 0x24005F
------------------------------------------
 - Bi-Directional Processor Hot..........: 1 (enabled)
 - C1E Enable............................: 1 (enabled)

MSR_RAPL_POWER_UNIT..............(0x606) : 0xA0E03
------------------------------------------
 - Power Units.......................... : 3 (1/8 Watt)
 - Energy Status Units.................. : 14 (61 micro-Joules)
 - Time Units .......................... : 10 (976.6 micro-Seconds)

MSR_PKG_POWER_LIMIT..............(0x610) : 0x42809600DD8078
------------------------------------------
 - Package Power Limit #1............... : 15 Watt
 - Enable Power Limit #1................ : 1 (enabled)
 - Package Clamping Limitation #1....... : 1 (allow going below OS-requested P/T state during Time Window for Power Limit #1)
 - Time Window for Power Limit #1....... : 110 (163840 milli-Seconds)
 - Package Power Limit #2............... : 18 Watt
 - Enable Power Limit #2................ : 1 (enabled)
 - Package Clamping Limitation #2....... : 0 (disabled)
 - Time Window for Power Limit #2....... : 33 (10 milli-Seconds)
 - Lock................................. : 0 (MSR not locked)

MSR_PKG_ENERGY_STATUS............(0x611) : 0x9A7B28
------------------------------------------
 - Total Energy Consumed................ : 617 Joules (Watt = Joules / seconds)

MSR_PP0_POWER_LIMIT..............(0x638) : 0x0

MSR_PP0_ENERGY_STATUS............(0x639) : 0x6316C9
------------------------------------------
 - Total Energy Consumed................ : 396 Joules (Watt = Joules / seconds)

MSR_PP0_POWER_LIMIT..............(0x638) : 0x0

MSR_PP0_ENERGY_STATUS............(0x639) : 0x6316F0
------------------------------------------
 - Total Energy Consumed................ : 396 Joules (Watt = Joules / seconds)

MSR_PP1_POWER_LIMIT..............(0x640) : 0x0

MSR_PP1_ENERGY_STATUS............(0x641) : 0x6B16
------------------------------------------
 - Total Energy Consumed................ : 1 Joules (Watt = Joules / seconds)

MSR_PP1_POLICY...................(0x642) : 0x18
------------------------------------------
 - Priority Level....................... : 24

MSR_CONFIG_TDP_NOMINAL...........(0x648) : 0x19
MSR_CONFIG_TDP_LEVEL1............(0x649) : 0x8003C
MSR_CONFIG_TDP_LEVEL2............(0x64a) : 0x1B00C8
MSR_CONFIG_TDP_CONTROL...........(0x64b) : 0x0
MSR_TURBO_ACTIVATION_RATIO.......(0x64c) : 0x0
MSR_PKGC3_IRTL...................(0x60a) : 0x884E
MSR_PKGC6_IRTL...................(0x60b) : 0x8876
MSR_PKGC7_IRTL...................(0x60c) : 0x8894
MSR_PKG_C2_RESIDENCY.............(0x60d) : 0x1ADEDDEB7
MSR_PKG_C3_RESIDENCY.............(0x3f8) : 0x168B632863
MSR_PKG_C2_RESIDENCY.............(0x60d) : 0x1ADFF9480
MSR_PKG_C3_RESIDENCY.............(0x3f8) : 0x168BDBFDF3
MSR_PKG_C6_RESIDENCY.............(0x3f9) : 0x0
MSR_PKG_C7_RESIDENCY.............(0x3fa) : 0x0
MSR_PKG_C8_RESIDENCY.............(0x630) : 0x0
MSR_PKG_C9_RESIDENCY.............(0x631) : 0x0
MSR_PKG_C10_RESIDENCY............(0x632) : 0x0
MSR_PKG_C8_LATENCY...............(0x633) : 0x0
MSR_PKG_C9_LATENCY...............(0x634) : 0x0
MSR_PKG_C10_LATENCY..............(0x635) : 0x0

MSR_PLATFORM_ENERGY_COUNTER......(0x64D) : 0x0 (not supported by hardware/BIOS)

MSR_PPERF........................(0x64E) : 0x28BCA60166
------------------------------------------
 - Hardware workload scalability........ : 174963687782

MSR_CORE_PERF_LIMIT_REASONS......(0x64F) : 0xC000000
------------------------------------------
 - PROCHOT Status....................... : 0
 - Thermal Status....................... : 0
 - Residency State Regulation Status.... : 0
 - Running Average Thermal Limit Status. : 0
 - VR Therm Alert Status................ : 0
 - VR Therm Design Current Status....... : 0
 - Other Status......................... : 0
 - Package/Platform-Level #1 Power Limit : 0
 - Package/Platform-Level #2 Power Limit : 0
 - Max Turbo Limit Status............... : 0
 - Turbo Transition Attenuation Status.. : 0
 - PROCHOT Log.......................... : 0
 - Thermal Log.......................... : 0
 - Residency State Regulation Log....... : 0
 - Running Average Thermal Limit Log.... : 0
 - VR Therm Alert Log................... : 0
 - VR Thermal Design Current Log........ : 0
 - Other Status Log..................... : 0
 - Package/Platform-Level #1 Power Limit : 1 (status bit has asserted)
 - Package/Platform-Level #2 Power Limit : 1 (status bit has asserted)
 - Max Turbo Limit Log.................. : 0
 - Turbo Transition Attenuation Log..... : 0
HDC Supported

IA32_PKG_HDC_CTL.................(0xDB0) : 0x0

IA32_PM_CTL1.....................(0xDB1) : 0x1
------------------------------------------
HDC Allow Block..................(0xDB1) : 1 (HDC blocked)

IA32_THREAD_STALL................(0xDB2) : 0x0

MSR_PKG_HDC_CONFIG...............(0x652) : 0x2
------------------------------------------
Pkg Cx Monitor ..................(0x652) : 2 (count package C3 and deeper)
MSR_CORE_HDC_RESIDENCY...........(0x653) : 0x0

MSR_PKG_HDC_SHALLOW_RESIDENCY....(0x655) : 0x0

MSR_PKG_HDC_DEEP_RESIDENCY.......(0x656) : 0x0

IA32_TSC_DEADLINE................(0x6E0) : 0x42FB13D140
MSR_PPERF........................(0x63E) : 0x1 (24)

IA32_PM_ENABLE...................(0x770) : 0x1 (HWP Supported and Enabled)

IA32_HWP_CAPABILITIES............(0x771) : 0x107191F
-----------------------------------------
 - Highest Performance.................. : 31
 - Guaranteed Performance............... : 25
 - Most Efficient Performance........... : 7
 - Lowest Performance................... : 1

IA32_HWP_INTERRUPT...............(0x773) : 0x1
------------------------------------------
 - Guaranteed Performance Change........ : 1 (Interrupt generated on change of)
 - Excursion Minimum.................... : 0 (Interrupt generation disabled)

IA32_HWP_REQUEST................(0x774) : 0x800D1F04
-----------------------------------------
 - Minimum Performance................. : 4
 - Maximum Performance................. : 31
 - Desired Performance................. : 13
 - Energy Efficient Performance........ : 128
 - Activity Window..................... : 0, 0
 - Package Control..................... : 0

IA32_HWP_STATUS..................(0x777) : 0x0
-----------------------------------------
 - Guaranteed Performance Change....... : 0 (has not occured)
 - Excursion To Minimum................ : 0 (has not occured)

CPU Ratio Info:
------------------------------------------
Base Clock Frequency (BLCK)............. : 100 MHz
Maximum Efficiency Ratio/Frequency.......:  4 ( 400 MHz)
Maximum non-Turbo Ratio/Frequency........: 27 (2700 MHz)
Maximum Turbo Ratio/Frequency............: 31 (3100 MHz)

IGPU Info:
------------------------------------------
IGPU Current Frequency...................:    0 MHz
IGPU Minimum Frequency...................:  300 MHz
IGPU Maximum Non-Turbo Frequency.........:  300 MHz
IGPU Maximum Turbo Frequency.............: 1000 MHz
IGPU Maximum limit.......................: No Limit

P-State ratio * 100 = Frequency in MHz
------------------------------------------
CPU P-States [ (13) 29 31 ] iGPU P-States [ ]
CPU C3-Cores [ 0 1 3 ]
CPU C7-Cores [ 1 2 3 ]
CPU P-States [ (13) 29 31 ] iGPU P-States [ ]
CPU C3-Cores [ 0 1 2 3 ]
CPU C7-Cores [ 0 1 2 3 ]
CPU P-States [ (13) 27 29 31 ] iGPU P-States [ ]
CPU P-States [ 13 (20) 27 29 31 ] iGPU P-States [ ]
CPU P-States [ 13 20 27 29 (30) 31 ] iGPU P-States [ ]
CPU P-States [ 13 20 (25) 27 29 30 31 ] iGPU P-States [ ]
CPU P-States [ 13 20 25 27 29 30 (31) ] iGPU P-States [ (30) ]
CPU P-States [ 13 (20) 25 27 28 29 30 31 ] iGPU P-States [ (30) ]
CPU P-States [ 13 (20) 25 27 28 29 30 31 ] iGPU P-States [ 30 ]
CPU P-States [ (4) 13 20 25 27 28 29 30 31 ] iGPU P-States [ 30 ]
Link to comment
Share on other sites

  • 5 months later...
  • 1 month later...
5 hours ago, Allan said:

thank you @Allan

I have follow guide from link, use plug in type for 4 generation + and it's work.

but my problem is in low frequency, I just get 1.3 ghz and I think my default is 800 mhz

Link to comment
Share on other sites

11 hours ago, idris iqbal said:

but my problem is in low frequency, I just get 1.3 ghz and I think my default is 800 mhz

I don't know if the minimum state for your i3 5005U are 800Mhz. The Intel's site tell's another value.

 

But did you tried what @syscl has posted here?

Link to comment
Share on other sites

On 5/28/2018 at 2:20 AM, Allan said:

I don't know if the minimum state for your i3 5005U are 800Mhz. The Intel's site tell's another value.

 

But did you tried what @syscl has posted here?

maybe Im wrong, but thank @Allan I'll check again
I didn't try yet, as I know HWP only for skylake + and my device is broadwell. it's work for broadwell???

Link to comment
Share on other sites

5 minutes ago, idris iqbal said:

I didn't try yet, as I know HWP only for skylake + and my device is broadwell. it's work for broadwell???

Ooops sorry, I forgot it.

You can try, as I don't have this hardware, I can't confirm if it will work or not.

  • Like 1
Link to comment
Share on other sites

  • 1 month later...
  • 2 months later...
On 6/29/2018 at 4:20 PM, darkbluecode said:

my cpu is a I7 7700HQ can i use this guide ?

my clover https://www.insanelymac.com/applications/core/interface/file/attachment.php?id=302239

it's so bad battery work my battery work only for 20M !!!! and cpu power sieving doesn't start to work when on battery 

Screen Shot 1397-04-09 at 14.08.51.png

Screen Shot 1397-04-09 at 14.12.42.png

 

I have the same processor, and my battery is working for 2 hours max.

Did you tried this guide or found another solution?

Link to comment
Share on other sites

  • 4 weeks later...
On 2/10/2017 at 12:42 AM, syscl said:

First, I can 100% sure to tell you it work because I've tested this method about a month long! And bugman who has posted the issue in the link you post has just told me the successful result by using my method:

post-950366-0-51918300-1486694418_thumb.png

 

post-950366-0-86581000-1486694436_thumb.png

 

syscl

Use Clover to active HWP, not the kext.

 

syscl

 

Haha, I hope not to be deleted, amnesty, I recently used my HP EliteBook 2570p, 11-speed shift how to do? I use ssdtGen to generate my Core i5-3230M but the minimum power consumption 3.8W frequency is 2.1G The lowest, there is no way to about 0.88W, but I have seen MacBook 13, x version, I use MacBook 9, 2 and 12, x does not seem to work, is it necessary to change to the version mentioned above?

 

I only saw Chinese chat pictures in Chinese, I only played Chinese.

 

Edited by Allan
Translated.
Link to comment
Share on other sites

  • 3 months later...
  • 3 weeks later...
  • 1 year later...

If anyone is interested, I wrote MaciASL patch for @vit9696 SSDT-PLUG.dsl Acpi sample: https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl that injects frequency vector from MP 7,1 to enable HWP/Speedshift on HWP unaware SMBIOS, i.e. iMac 17,1. It is intended to use on desktop configurations, it drops lowest frequency to 800 mHz and EPP is set to 20 (0x20). Remember to enable Speedshift in your BIOS/UEFI and use with CPUFriend kext.

SSDT-PLUG_patch.txt

  • Like 1
Link to comment
Share on other sites

  • 2 months later...

You're welcome, i'm glad that i could help. HWP is a great way of lowering CPU freq in idle. Maybe this is not the best way for every CPU out there because freq vectors are very different for different CPU's, but it works.

Link to comment
Share on other sites

  • 10 months later...

Hey Guys i am having Intel Core i7-10870H (8 core 16 threats) and i am using smbios of MacBookPro16,4 and CPU power management is working fine but poor battery performance in mac i got aroud 6-7hrs of battery backup on Windows but on mac battery hardly last for 2hrs my dGPU is already disable don't know why it consumes more power on mac i am attaching my IOREG and DSDT any help can be appriciated. 

Screen Shot 2021-06-26 at 11.18.28 PM.png

Screen Shot 2021-06-26 at 11.25.16 PM.png

Screen Shot 2021-06-26 at 11.25.25 PM.png

Dec_Brain's MacBook Pro.zip DSDT.aml

Link to comment
Share on other sites

 Share

×
×
  • Create New...