Contribute
Register

[SOLVED] ssdtPRGen, AICPUPM kernel panics, and stepping woes

Joined
Oct 22, 2013
Messages
212
After upgrading from El Cap to Sierra, the ssdtPRGen created power management SSDT I've been using since Yosemite is no longer working on my Acer. I had problems with CPU power management when I was originally setting up this computer, likely because of the U processor, but after using MacBookAir5,1 system def and enabling XCPM mode at boot, I was able to get it working with ssdPRGen using Ivy-Bridge workaround 2, and XCPM mode.

On boot with the original ssdt, I get the following Kernel panic:
Code:
*** Panic Report ***
panic(cpu 2 caller 0xffffff7fae6cf64b): P-State Stepper Error 18 at step 29 in context 2 on CPU 2
Backtrace (CPU 2), Frame : Return Address
0xffffff921867b810 : 0xffffff802c0f748c
0xffffff921867b890 : 0xffffff7fae6cf64b
0xffffff921867b8c0 : 0xffffff7fae6cb822
0xffffff921867b980 : 0xffffff7fae6cc4ea
0xffffff921867b9f0 : 0xffffff7fae6cf3ea
0xffffff921867ba20 : 0xffffff802c215241
0xffffff921867bb20 : 0xffffff7fae6c291e
0xffffff921867bb90 : 0xffffff7fae6c2758
0xffffff921867bbc0 : 0xffffff7fae959f56
0xffffff921867bc10 : 0xffffff802c6c00ba
0xffffff921867bc80 : 0xffffff7fae95989d
0xffffff921867bd40 : 0xffffff7fae95a076
0xffffff921867bd80 : 0xffffff802c699d7e
0xffffff921867bdd0 : 0xffffff802c6a2692
0xffffff921867be10 : 0xffffff7fae95926b
0xffffff921867be40 : 0xffffff802c69bdcd
0xffffff921867be80 : 0xffffff802c69bb1e
0xffffff921867bf10 : 0xffffff802c69b0d6
0xffffff921867bf60 : 0xffffff802c69caee
0xffffff921867bfb0 : 0xffffff802c0a6af7
      Kernel Extensions in backtrace:
         com.apple.driver.AppleIntelCPUPowerManagement(219.0)[36216E26-C378-3067-B5B5-C27076D64955]@0xffffff7fae6b6000->0xffffff7fae6e0fff
         com.apple.driver.X86PlatformShim(1.0)[49CF8C0A-C2D1-356C-8127-805E4B2433D1]@0xffffff7fae958000->0xffffff7fae95ffff
            dependency: com.apple.driver.IOPlatformPluginFamily(6.0.0d8)[09B480A4-4793-311C-B5CF-4C56A3C67D18]@0xffffff7fad993000
            dependency: com.apple.driver.X86PlatformPlugin(1.0.0)[314B16BB-0DF9-3FF0-9416-961E762C882A]@0xffffff7fae93d000
            dependency: com.apple.driver.AppleSMC(3.1.9)[FA8E2E8A-FA5B-3949-AA1D-946DE5F5217B]@0xffffff7fad9b6000

BSD process name corresponding to current thread: kernel_task
Boot args: -v dart=0 -xcpm

Mac OS version:
16A323

Kernel version:
Darwin Kernel Version 16.0.0: Mon Aug 29 17:56:20 PDT 2016; root:xnu-3789.1.32~3/RELEASE_X86_64
Kernel UUID: 622D2470-C34D-31F9-A62B-6AA9A3C6A3CD
Kernel slide:     0x000000002be00000
Kernel text base: 0xffffff802c000000
__HIB  text base: 0xffffff802bf00000
System model name: MacBookAir5,1 (Mac-66F35F19FE2A0D05)

System uptime in nanoseconds: 11002318059
last loaded kext at 10061407158: com.apple.driver.X86PlatformShim   1.0.0 (addr 0xffffff7fae958000, size 32768)
loaded kexts:
org.tw.CodecCommander   2.6.2
com.intel.driver.EnergyDriver   2.0
com.rehabman.driver.IntelBacklight   1.0.10
org.emlydinesh.driver.ApplePS2SmartTouchPad   4.6
org.emlydinesh.driver.ApplePS2Keyboard   4.6
org.rehabman.driver.FakePCIID.XHCIMux   1.3.2
org.rehabman.driver.FakePCIID   1.3.2
org.emlydinesh.driver.ApplePS2Controller   4.6
com.rehabman.driver.USBInjectAll   0.5.12
org.netkas.driver.FakeSMC   1723
org.rehabman.driver.AppleSmartBatteryManager   1.70.1
<snip>
without the ssdt, Sierra boots fine.

I've tried downloading a more current version of ssdtPRGen, and reran it with -w 2 and -x 1, and while it no longer panics, I get no stepping: processor is locked at 800mhz.

Any ideas on what I can do to get power management working again?
 

RehabMan

Moderator
Joined
May 3, 2012
Messages
191,123
Motherboard
Intel DH67BL
CPU
Core i7-2600K
Graphics
Intel HD 3000
Mac
MacBook Air
Mobile Phone
iOS
After upgrading from El Cap to Sierra, the ssdtPRGen created power management SSDT I've been using since Yosemite is no longer working on my Acer. I had problems with CPU power management when I was originally setting up this computer, likely because of the U processor, but after using MacBookAir5,1 system def and enabling XCPM mode at boot, I was able to get it working with ssdPRGen using Ivy-Bridge workaround 2, and XCPM mode.

On boot with the original ssdt, I get the following Kernel panic:
Code:
*** Panic Report ***
panic(cpu 2 caller 0xffffff7fae6cf64b): P-State Stepper Error 18 at step 29 in context 2 on CPU 2
Backtrace (CPU 2), Frame : Return Address
0xffffff921867b810 : 0xffffff802c0f748c
0xffffff921867b890 : 0xffffff7fae6cf64b
0xffffff921867b8c0 : 0xffffff7fae6cb822
0xffffff921867b980 : 0xffffff7fae6cc4ea
0xffffff921867b9f0 : 0xffffff7fae6cf3ea
0xffffff921867ba20 : 0xffffff802c215241
0xffffff921867bb20 : 0xffffff7fae6c291e
0xffffff921867bb90 : 0xffffff7fae6c2758
0xffffff921867bbc0 : 0xffffff7fae959f56
0xffffff921867bc10 : 0xffffff802c6c00ba
0xffffff921867bc80 : 0xffffff7fae95989d
0xffffff921867bd40 : 0xffffff7fae95a076
0xffffff921867bd80 : 0xffffff802c699d7e
0xffffff921867bdd0 : 0xffffff802c6a2692
0xffffff921867be10 : 0xffffff7fae95926b
0xffffff921867be40 : 0xffffff802c69bdcd
0xffffff921867be80 : 0xffffff802c69bb1e
0xffffff921867bf10 : 0xffffff802c69b0d6
0xffffff921867bf60 : 0xffffff802c69caee
0xffffff921867bfb0 : 0xffffff802c0a6af7
      Kernel Extensions in backtrace:
         com.apple.driver.AppleIntelCPUPowerManagement(219.0)[36216E26-C378-3067-B5B5-C27076D64955]@0xffffff7fae6b6000->0xffffff7fae6e0fff
         com.apple.driver.X86PlatformShim(1.0)[49CF8C0A-C2D1-356C-8127-805E4B2433D1]@0xffffff7fae958000->0xffffff7fae95ffff
            dependency: com.apple.driver.IOPlatformPluginFamily(6.0.0d8)[09B480A4-4793-311C-B5CF-4C56A3C67D18]@0xffffff7fad993000
            dependency: com.apple.driver.X86PlatformPlugin(1.0.0)[314B16BB-0DF9-3FF0-9416-961E762C882A]@0xffffff7fae93d000
            dependency: com.apple.driver.AppleSMC(3.1.9)[FA8E2E8A-FA5B-3949-AA1D-946DE5F5217B]@0xffffff7fad9b6000

BSD process name corresponding to current thread: kernel_task
Boot args: -v dart=0 -xcpm

Mac OS version:
16A323

Kernel version:
Darwin Kernel Version 16.0.0: Mon Aug 29 17:56:20 PDT 2016; root:xnu-3789.1.32~3/RELEASE_X86_64
Kernel UUID: 622D2470-C34D-31F9-A62B-6AA9A3C6A3CD
Kernel slide:     0x000000002be00000
Kernel text base: 0xffffff802c000000
__HIB  text base: 0xffffff802bf00000
System model name: MacBookAir5,1 (Mac-66F35F19FE2A0D05)

System uptime in nanoseconds: 11002318059
last loaded kext at 10061407158: com.apple.driver.X86PlatformShim   1.0.0 (addr 0xffffff7fae958000, size 32768)
loaded kexts:
org.tw.CodecCommander   2.6.2
com.intel.driver.EnergyDriver   2.0
com.rehabman.driver.IntelBacklight   1.0.10
org.emlydinesh.driver.ApplePS2SmartTouchPad   4.6
org.emlydinesh.driver.ApplePS2Keyboard   4.6
org.rehabman.driver.FakePCIID.XHCIMux   1.3.2
org.rehabman.driver.FakePCIID   1.3.2
org.emlydinesh.driver.ApplePS2Controller   4.6
com.rehabman.driver.USBInjectAll   0.5.12
org.netkas.driver.FakeSMC   1723
org.rehabman.driver.AppleSmartBatteryManager   1.70.1
<snip>
without the ssdt, Sierra boots fine.

I've tried downloading a more current version of ssdtPRGen, and reran it with -w 2 and -x 1, and while it no longer panics, I get no stepping: processor is locked at 800mhz.

Any ideas on what I can do to get power management working again?
I think Apple removed the -xcpm option for Ivy in Sierra (probably because they only used it internally for early testing of XCPM before Haswell), so you will need a new solution.
 
Joined
Oct 22, 2013
Messages
212
They've definitely done something, as it seems I can now remove -xcpm from my boot args and it won't panic on boot like Yosemite and, presumably though I never tested, El Cap, so that flag is no likely no longer functioning for ivy, as you say.

With or without -xcpm and without a custom ssdt, my processor is locked at 1.8ghz; with a new ssdt generated with -w 2, I'm stuck at 800mhz. I've tried -w 1 and -w 3, which both result in a kernel panic. Without any flags, I'm stuck at 800mhz as well. What should I look into to get speedstep functioning again?
 

RehabMan

Moderator
Joined
May 3, 2012
Messages
191,123
Motherboard
Intel DH67BL
CPU
Core i7-2600K
Graphics
Intel HD 3000
Mac
MacBook Air
Mobile Phone
iOS
I've tried -w 1 and -w 3, which both result in a kernel panic.
It is typical of your CPU without -xcpm. You will probably now need to address the real problem or go back to 10.11 where you can still use the -xcpm workaround.
 
Joined
Oct 22, 2013
Messages
212
It is typical of your CPU without -xcpm. You will probably now need to address the real problem or go back to 10.11 where you can still use the -xcpm workaround.
Anything you can think of that would point me in the direction of addressing that real problem? Only clue I can come up with is that now when I boot without -xcpm and with Clover generating p and c states, power management is fully functional. What does Clover do differently when generating states?

The help so far is greatly appreciated.
 

RehabMan

Moderator
Joined
May 3, 2012
Messages
191,123
Motherboard
Intel DH67BL
CPU
Core i7-2600K
Graphics
Intel HD 3000
Mac
MacBook Air
Mobile Phone
iOS
Anything you can think of that would point me in the direction of addressing that real problem? Only clue I can come up with is that now when I boot without -xcpm and with Clover generating p and c states, power management is fully functional. What does Clover do differently when generating states?

The help so far is greatly appreciated.
You can examine the SSDTs that Clover generates by using patchmatic -extract.
 
Joined
Oct 22, 2013
Messages
212
You can examine the SSDTs that Clover generates by using patchmatic -extract.
Great idea; hadn't thought of that. With that I was able to solve the issue.

Comparing the ssdts from Clover, which works fine, and ssdtPRGen (-w 2 -x 0), which does not, I noticed three glaring differences:
  • First is that the workaround 2 flag, which is supposed to add an extra low frequency state, doesn't seem to do anything. ssdtPRGen has 800hmz as the bottom frequency; Clover seem to correctly apply the workaround, having one below what the processor can reach at 700mhz.
  • Second, ssdtPRGen has Name (APLF, Zero); Clover sets it to One.
  • Third, ssdtPRGen has Name (APSN, 0x0B); Clover sets it to 0x06. Not necessary; see posts below.

I ported those three changes from Clover to the ssdtPRGen generated ssdt and the computer boots with full power management, and speedstep. One minor difference is that Clover uses slightly lower voltage values for each p-state, but I didn't port those changes.

Thanks for all the help Rehabman!
 
Last edited:

RehabMan

Moderator
Joined
May 3, 2012
Messages
191,123
Motherboard
Intel DH67BL
CPU
Core i7-2600K
Graphics
Intel HD 3000
Mac
MacBook Air
Mobile Phone
iOS
Great idea; hadn't thought of that. With that I was able to solve the issue.

Comparing the ssdts from Clover, which works fine, and ssdtPRGen (-w 2 -x 0), which does not, I noticed three glaring differences:
  • First is that the workaround 2 flag, which is supposed to add an extra low frequency state, doesn't seem to do anything. ssdtPRGen has 800hmz as the bottom frequency; Clover seem to correctly apply the workaround, having one below what the processor can reach at 700mhz.
  • Second, ssdtPRGen has Name (APLF, Zero); Clover sets it to One.
  • Third, ssdtPRGen has Name (APSN, 0x0B); Clover sets it to 0x06.

I ported those three changes from Clover to the ssdtPRGen generated ssdt and the computer boots with full power management, and speedstep. One minor difference is that Clover uses slightly lower voltage values for each p-state, but I didn't port those changes.

Thanks for all the help Rehabman!
Note that APSN of 11 is correct for your CPU (according to Intel's website).
 
Joined
Oct 22, 2013
Messages
212
Note that APSN of 11 is correct for your CPU (according to Intel's website).
Yup, you're right, and leaving it as 0x0B results in PM that still fully functions. So the only necessary changes are to add the extra 700mhz low frequency state, and to change APLF to One. Without both changes, it's stuck at lowest frequency.
 

RehabMan

Moderator
Joined
May 3, 2012
Messages
191,123
Motherboard
Intel DH67BL
CPU
Core i7-2600K
Graphics
Intel HD 3000
Mac
MacBook Air
Mobile Phone
iOS
Yup, you're right, and leaving it as 0x0B results in PM that still fully functions. So the only necessary changes are to add the extra 700mhz low frequency state, and to change APLF to One. Without both changes, it's stuck at lowest frequency.
You might want to file a bug report regarding the broke -w option in ssdtPRgen.sh.
 
Top