Open harrykipper opened 9 years ago
I answer myself. Reading your blog I learned that IvyBridge doesn't use FrequencyVectors, therefore the error is to be expected. I tried adding the -xcpm_ignore_fv boot flag, but it's still there. However I shouldn't worry about it, I think..
Is the error gone with -lfm 1200 ? Otherwise try -lfm 800 with -w[1/2/3]
I thought that the "failed to send stepper" error depended from IvyBridge not using FrequencyVectors. I tried -lfm 800 with -w[1/2/3], the error is always there. I didn't think of trying 1200 as the cpu is supposed to scale down to 800. I am now using "-xcpm" and "cstates" as boot flags and everything seems to work well. If I remember correctly from my previous tries: -lfm 800 -x 0 -w 1 ---> working, but frequency locked at 800 -lfm 800 -x 0 -w 2 ---> kernel panic -lfm 800 -x 0 -w 3 ---> working, but frequency never below 1200 -x 0 -w 3 ---> working, but frequency never below 1200 -lfm 800 -x 1 -w[1/2/3] ---> working, but "failed to send stepper" and "failed to send p-states" errors -lfm 800 -x 1 -w 0 ---> working, but "failed to send stepper" error
I will try 1200 and report back later
Right. With -lfm 1200 -x 1 -w 0 i get X86PlatformShim::start - Failed to send PStates X86PlatformShim::start - Failed to send stepper
with -lfm 800 -x 1 -w 0 it's X86PlatformShim::sendPStates - Success! X86PlatformShim::start - Failed to send stepper
Clearly you need -lfm 800 and I had already fixed the LFM here https://github.com/Piker-Alpha/ssdtPRGen.sh/blob/Beta/Data/Ivy%20Bridge.cfg#L170 so that is fine. You no longer need to add the -lfm 800 arguments. Just running ssdtPRGen.sh should work now (without the -xcpm boot arguments). Can you confirm this?
So, without -xcpm boot flag i get the following: -x 0 -w 1: Kernel panic -x 0 -w 2: X86PlatformShim::sendPStates - Success! X86PlatformShim::sendPStates - Success! X86PlatformShim::sendStepper - Done! all the P-States from 800 to 1800 are there, but frequency is stuck at 800Mhz
-x 0 -w 3: Kernel panic Output:
{Override value: (-x) XCPM mode, now set to: 0!
Override value: (-w) Ivy Bridge workarounds, now set to: 3!
System information: Mac OS X 10.10.2 (14C109) Brandstring 'Intel(R) Core(TM) i3-3217U CPU @ 1.80GHz'
Scope (PR) {220 bytes} with ACPI Processor declarations found in the DSDT (ACPI 1.0 compliant) Generating ssdt.dsl for a 'MacBookAir5,2' with board-id [Mac-2E6FAB96566FE58C] Ivy Bridge Core i3-3217U processor [0x306A9] setup [0x0903] Processor matched! With a maximum TDP of 17 Watt, as specified by Intel Number logical CPU's: 4 (Core Frequency: 1800 MHz) Number of Turbo States: 0 Number of P-States: 11 (800-1800 MHz) Adjusting C-States for detected (mobile) processor Injected C-States for CPU0 (C1,C3,C6,C7) Injected C-States for CPU1 (C1,C2,C3) Warning: 'cpu-type' may be set improperly (0x0903 instead of 0x0703)
Intel ACPI Component Architecture ASL Optimizing Compiler version 20140926-64 [Nov 6 2014] Copyright (c) 2000 - 2014 Intel Corporation
Compilation complete. 0 Errors, 0 Warnings, 0 Remarks, 0 Optimizations}
The resulting ssdt is: {/*
DefinitionBlock ("ssdt.aml", "SSDT", 1, "APPLE ", "CpuPm", 0x00015700) { External (PR.CPU0, DeviceObj) External (PR.CPU1, DeviceObj) External (PR.CPU2, DeviceObj) External (PR.CPU3, DeviceObj)
Scope (\_PR_.CPU0)
{
Method (_INI, 0, NotSerialized)
{
Store ("ssdtPRGen version....: 15.7 / Mac OS X 10.10.2 (14C109)", Debug)
Store ("target processor.....: i3-3217U", Debug)
Store ("source processor.....: Intel(R) Core(TM) i3-3217U CPU @ 1.80GHz", Debug)
Store ("baseFrequency........: 800", Debug)
Store ("frequency............: 1800", Debug)
Store ("busFrequency.........: 100", Debug)
Store ("logicalCPUs..........: 4", Debug)
Store ("maximum TDP..........: 17", Debug)
Store ("packageLength........: 11", Debug)
Store ("turboStates..........: 0", Debug)
Store ("maxTurboFrequency....: 1800", Debug)
Store ("IvyWorkArounds.......: 3", Debug)
Store ("machdep.xcpm.mode....: 0", Debug)
}
Name (APLF, Zero)
Name (APSN, One)
Name (APSS, Package (0x0C)
{
/* Workaround for the Ivy Bridge PM 'bug' */
Package (0x06) { 0x0709, 0x004268, 0x0A, 0x0A, 0x1300, 0x1300 },
/* High Frequency Modes (non-turbo) */
Package (0x06) { 0x0708, 0x004268, 0x0A, 0x0A, 0x1200, 0x1200 },
Package (0x06) { 0x06A4, 0x003E01, 0x0A, 0x0A, 0x1100, 0x1100 },
Package (0x06) { 0x0640, 0x0039B1, 0x0A, 0x0A, 0x1000, 0x1000 },
Package (0x06) { 0x05DC, 0x003577, 0x0A, 0x0A, 0x0F00, 0x0F00 },
Package (0x06) { 0x0578, 0x003153, 0x0A, 0x0A, 0x0E00, 0x0E00 },
Package (0x06) { 0x0514, 0x002D46, 0x0A, 0x0A, 0x0D00, 0x0D00 },
Package (0x06) { 0x04B0, 0x00294D, 0x0A, 0x0A, 0x0C00, 0x0C00 },
Package (0x06) { 0x044C, 0x00256A, 0x0A, 0x0A, 0x0B00, 0x0B00 },
Package (0x06) { 0x03E8, 0x00219D, 0x0A, 0x0A, 0x0A00, 0x0A00 },
Package (0x06) { 0x0384, 0x001DE4, 0x0A, 0x0A, 0x0900, 0x0900 },
/* Low Frequency Mode */
Package (0x06) { 0x0320, 0x001A41, 0x0A, 0x0A, 0x0800, 0x0800 }
})
Method (ACST, 0, NotSerialized)
{
Store ("Method _PR_.CPU0.ACST Called", Debug)
Store ("CPU0 C-States : 29", Debug)
/* Low Power Modes for CPU0 */
Return (Package (0x06)
{
One,
0x04,
Package (0x04)
{
ResourceTemplate ()
{
Register (FFixedHW,
0x01, // Bit Width
0x02, // Bit Offset
0x0000000000000000, // Address
0x01, // Access Size
)
},
One,
Zero,
0x03E8
},
Package (0x04)
{
ResourceTemplate ()
{
Register (FFixedHW,
0x01, // Bit Width
0x02, // Bit Offset
0x0000000000000010, // Address
0x03, // Access Size
)
},
0x03,
0xCD,
0x01F4
},
Package (0x04)
{
ResourceTemplate ()
{
Register (FFixedHW,
0x01, // Bit Width
0x02, // Bit Offset
0x0000000000000020, // Address
0x03, // Access Size
)
},
0x06,
0xF5,
0x015E
},
Package (0x04)
{
ResourceTemplate ()
{
Register (FFixedHW,
0x01, // Bit Width
0x02, // Bit Offset
0x0000000000000030, // Address
0x03, // Access Size
)
},
0x07,
0xF5,
0xC8
}
})
}
Method (_DSM, 4, NotSerialized)
{
Store ("Method _PR_.CPU0._DSM Called", Debug)
If (LEqual (Arg2, Zero))
{
Return (Buffer (One)
{
0x03
})
}
Return (Package (0x02)
{
"plugin-type",
One
})
}
}
Scope (\_PR_.CPU1)
{
Method (APSS, 0, NotSerialized)
{
Store ("Method _PR_.CPU1.APSS Called", Debug)
Return (\_PR_.CPU0.APSS)
}
Method (ACST, 0, NotSerialized)
{
Store ("Method _PR_.CPU1.ACST Called", Debug)
Store ("CPU1 C-States : 7", Debug)
/* Low Power Modes for CPU1 */
Return (Package (0x05)
{
One,
0x03,
Package (0x04)
{
ResourceTemplate ()
{
Register (FFixedHW,
0x01, // Bit Width
0x02, // Bit Offset
0x0000000000000000, // Address
0x01, // Access Size
)
},
One,
0x03E8,
0x03E8
},
Package (0x04)
{
ResourceTemplate ()
{
Register (FFixedHW,
0x01, // Bit Width
0x02, // Bit Offset
0x0000000000000010, // Address
0x03, // Access Size
)
},
0x02,
0x94,
0x01F4
},
Package (0x04)
{
ResourceTemplate ()
{
Register (FFixedHW,
0x01, // Bit Width
0x02, // Bit Offset
0x0000000000000030, // Address
0x03, // Access Size
)
},
0x03,
0xC6,
0xC8
}
})
}
}
Scope (\_PR_.CPU2)
{
Method (APSS, 0, NotSerialized)
{
Store ("Method _PR_.CPU2.APSS Called", Debug)
Return (\_PR_.CPU0.APSS)
}
Method (ACST, 0, NotSerialized) { Return (\_PR_.CPU1.ACST ()) }
}
Scope (\_PR_.CPU3)
{
Method (APSS, 0, NotSerialized)
{
Store ("Method _PR_.CPU3.APSS Called", Debug)
Return (\_PR_.CPU0.APSS)
}
Method (ACST, 0, NotSerialized) { Return (\_PR_.CPU1.ACST ()) }
}
} }
My best outcome is with -xcpm boot flag and -x 1 -w 0, where I get X86PlatformShim::sendPStates - Success! X86PlatformShim::start - Failed to send stepper
The generated ssdt is here --- http://pastebin.com/25BeRjRY
Could you point me to some resources on this error? Is it important? Everything seems to work fine despite it.
Interestingly, if I now generate with -x 0 -lfm 1200 -w 3 there is no kernel panic and everything works, except that obviously the frequency doesn't step below 1200
You should always test changes without a pre-linked kernel/kernelcache because that can trigger panics, as you have noticed by now. Also. If everything works with -lfm 1200 (without errors) then 1200 is the minimum supported frequency. Apparently. This is also why I ask people to use AppleIntelInfo.kext (previously known as AppleCPUPowerManagementInfo.kext) to see what LFM should be.
How do I boot with a non prelinked kernel? I use NoCahes in Clover, but nothing changes. As for the frequency, linux says that the minimum is 800. I did compile your AppleIntelInfo.kext, I have been using it, this is the output with -x1 -w 0
localhost kernel[0]: AICPUPMI: CPU Low Frequency Mode.............: 800 MHz Mar 7 00:31:51 localhost kernel[0]: AICPUPMI: CPU Maximum non-Turbo Frequency....: 1800 MHz Mar 7 00:31:51 localhost kernel[0]: AICPUPMI: CPU Maximum Turbo Frequency........: 1800 MHz Mar 7 00:31:51 localhost kernel[0]: AICPUPMI: IGPU Current Frequency.............: 350 MHz Mar 7 00:31:51 localhost kernel[0]: AICPUPMI: IGPU Minimum Frequency.............: 350 MHz Mar 7 00:31:51 localhost kernel[0]: AICPUPMI: IGPU Maximum Non-Turbo Frequency...: 350 MHz Mar 7 00:31:51 localhost kernel[0]: AICPUPMI: IGPU Maximum Turbo Frequency.......: 1050 MHz Mar 7 00:31:51 localhost kernel[0]: AICPUPMI: IGPU Maximum limit.................: No Limit Mar 7 00:31:51 localhost kernel[0]: AICPUPMI: CPU P-States [ (8) 17 18 ] iGPU P-States [ (7) ] Mar 7 00:31:51 localhost kernel[0]: AICPUPMI: CPU C3-Cores [ 0 1 2 3 ] Mar 7 00:31:51 localhost kernel[0]: AICPUPMI: CPU C6-Cores [ 2 3 ] Mar 7 00:31:51 localhost kernel[0]: AICPUPMI: CPU C7-Cores [ 0 1 2 3 ] Mar 7 00:31:51 localhost kernel[0]: AICPUPMI: CPU P-States [ (8) 13 17 18 ] iGPU P-States [ (7) ] Mar 7 00:32:12 Annas-MacBook-Pro kernel[0]: AICPUPMI: CPU P-States [ 8 (13) 16 17 18 ] iGPU P-States [ (7) ] Mar 7 00:32:13 Annas-MacBook-Pro kernel[0]: AICPUPMI: CPU P-States [ (8) 13 15 16 17 18 ] iGPU P-States [ (7) ] Mar 7 00:32:20 Annas-MacBook-Pro kernel[0]: AICPUPMI: CPU P-States [ (8) 13 14 15 16 17 18 ] iGPU P-States [ (7) ] Mar 7 00:32:20 Annas-MacBook-Pro kernel[0]: AICPUPMI: CPU P-States [ (8) 12 13 14 15 16 17 18 ] iGPU P-States [ (7) ] Mar 7 00:32:22 Annas-MacBook-Pro kernel[0]: AICPUPMI: CPU P-States [ (8) 11 12 13 14 15 16 17 18 ] iGPU P-States [ (7) ] Mar 7 00:32:24 Annas-MacBook-Pro kernel[0]: AICPUPMI: CPU C6-Cores [ 0 1 2 3 ] Mar 7 00:33:57 Annas-MacBook-Pro kernel[0]: AICPUPMI: CPU P-States [ (8) 10 11 12 13 14 15 16 17 18 ] iGPU P-States [ (7) ] Mar 7 00:33:59 Annas-MacBook-Pro kernel[0]: AICPUPMI: CPU P-States [ (8) 9 10 11 12 13 14 15 16 17 18 ] iGPU P-States [ (7) ] Mar 7 00:34:44 Annas-MacBook-Pro kernel[0]: AICPUPMI: CPU P-States [ 8 9 10 11 12 13 14 15 16 17 (18) ] iGPU P-States [ 7 (10) ]
and this is it with -x 0 -w 3 -ldm 1200
Mar 7 00:40:28 localhost kernel[0]: AICPUPMI: CPU Low Frequency Mode.............: 800 MHz Mar 7 00:40:28 localhost kernel[0]: AICPUPMI: CPU Maximum non-Turbo Frequency....: 1800 MHz Mar 7 00:40:28 localhost kernel[0]: AICPUPMI: CPU Maximum Turbo Frequency........: 1800 MHz Mar 7 00:40:28 localhost kernel[0]: AICPUPMI: IGPU Current Frequency.............: 350 MHz Mar 7 00:40:28 localhost kernel[0]: AICPUPMI: IGPU Minimum Frequency.............: 350 MHz Mar 7 00:40:28 localhost kernel[0]: AICPUPMI: IGPU Maximum Non-Turbo Frequency...: 350 MHz Mar 7 00:40:28 localhost kernel[0]: AICPUPMI: IGPU Maximum Turbo Frequency.......: 1050 MHz Mar 7 00:40:28 localhost kernel[0]: AICPUPMI: IGPU Maximum limit.................: No Limit Mar 7 00:40:28 localhost kernel[0]: AICPUPMI: CPU P-States [ (17) ] iGPU P-States [ (7) ] Mar 7 00:40:28 localhost kernel[0]: AICPUPMI: CPU C3-Cores [ 2 3 ] Mar 7 00:40:28 localhost kernel[0]: AICPUPMI: CPU C7-Cores [ 2 3 ] Mar 7 00:40:28 localhost kernel[0]: AICPUPMI: CPU P-States [ (8) 17 ] iGPU P-States [ (7) ] Mar 7 00:40:28 localhost kernel[0]: AICPUPMI: CPU P-States [ 8 16 (17) ] iGPU P-States [ (7) ] Mar 7 00:40:28 localhost kernel[0]: AICPUPMI: CPU P-States [ 8 15 16 (17) ] iGPU P-States [ (7) ] Mar 7 00:40:28 localhost kernel[0]: AICPUPMI: CPU P-States [ (8) 13 15 16 17 ] iGPU P-States [ (7) ] Mar 7 00:40:33 Annas-MacBook-Pro kernel[0]: AICPUPMI: CPU P-States [ 8 13 15 16 17 (18) ] iGPU P-States [ (7) ] Mar 7 00:40:33 Annas-MacBook-Pro kernel[0]: AICPUPMI: CPU C7-Cores [ 0 1 2 3 ] Mar 7 00:40:35 Annas-MacBook-Pro kernel[0]: AICPUPMI: CPU C3-Cores [ 1 2 3 ] Mar 7 00:40:35 Annas-MacBook-Pro kernel[0]: AICPUPMI: CPU C3-Cores [ 0 1 2 3 ] Mar 7 00:40:35 Annas-MacBook-Pro kernel[0]: AICPUPMI: CPU C6-Cores [ 0 1 ] Mar 7 00:40:36 Annas-MacBook-Pro kernel[0]: AICPUPMI: CPU P-States [ 8 (12) 13 15 16 17 18 ] iGPU P-States [ (7) ] Mar 7 00:40:46 Annas-MacBook-Pro kernel[0]: AICPUPMI: CPU P-States [ 8 12 13 15 16 17 (18) ] iGPU P-States [ 7 (10) ] Mar 7 00:40:46 Annas-MacBook-Pro kernel[0]: AICPUPMI: CPU C6-Cores [ 0 1 2 3 ] Mar 7 00:40:55 Annas-MacBook-Pro kernel[0]: AICPUPMI: CPU P-States [ 8 (12) 13 14 15 16 17 18 ] iGPU P-States [ (7) 10 ] Mar 7 00:40:59 Annas-MacBook-Pro kernel[0]: AICPUPMI: CPU P-States [ 8 11 (12) 13 14 15 16 17 18 ] iGPU P-States [ (7) 10 ]
Use -f (boot argument) to skip caches and pre-linked kernel loading, and I wasn't saying that you should use -lfm 1200 because we already know that you need 800. Which is also why I changed the data. Your only mission is to get rid of the errors with -p 3217U -x 0 -w 3 (or whatever works for your setup).
Also check for the unknown platform error in /var/log/system.log because that can have a bad influence as well on power management. And if 800 MHz isn't reached then that is with a reason – though not necessarily a bad one since i3 processors are anything for powerful.
I failed my mission, Pike. I can only get it to work with -lfm 1200 or with xcpm. According to DPCIManager I get 4 p-states active in either case: 12-13-16-18 when using AICPM 8-13-15-18 when using xcpm. I am inclined to keep going with xcpm, as I want to be able to use the lower p-states. I don't have any other errors in the logs, only the one 'X86PlatformShim::start - Failed to send stepper' the meaning of which I ignore... :-)
Same result here with an I5-3317U with lfm-1200 i get P States: 12, 13, 15, 24 with LFM 800 I get kernel panic with LFM 792 I get some more pstates but I get an error X86PlatformPlugin::getCPUPStates - acpiPSArrayObj is not an valid OSArray
Pstates are on 792 : 8, 19, 21, 24
LFM 900 gives Pstate : 9 ,13, 15, 16, 17, 18, 19, 21, 24 Im using -x 0 -w 3
-x0 -w 3 -lfm 900 works for me. The script output is slightly different (there is "1 optimization"). No error using AICPM (no -xcpm) and P-States 9,13,16,18. There must be a way to reach p-state 8....
Override value: (-p) processor model, now using: i3-3217U! Override value: (-lfm) low frequency mode, now using: 900! Override value: (-x) XCPM mode, now set to: 0! Override value: (-w) Ivy Bridge workarounds, now set to: 3!
System information: Mac OS X 10.10.2 (14C109) Brandstring 'Intel(R) Core(TM) i3-3217U CPU @ 1.80GHz'
Scope (PR) {220 bytes} with ACPI Processor declarations found in the DSDT (ACPI 1.0 compliant) Generating ssdt.dsl for a 'MacBookAir5,2' with board-id [Mac-2E6FAB96566FE58C] Ivy Bridge Core i3-3217U processor [0x306A9] setup [0x0903] Processor matched! With a maximum TDP of 17 Watt, as specified by Intel Number logical CPU's: 4 (Core Frequency: 1800 MHz) Number of Turbo States: 0 Number of P-States: 10 (900-1800 MHz) Adjusting C-States for detected (mobile) processor Injected C-States for CPU0 (C1,C3,C6,C7) Injected C-States for CPU1 (C1,C2,C3) Warning: 'cpu-type' may be set improperly (0x0903 instead of 0x0703)
Intel ACPI Component Architecture ASL Optimizing Compiler version 20140926-64 [Nov 6 2014] Copyright (c) 2000 - 2014 Intel Corporation
ASL Input: /Users/annalee/Library/ssdtPRGen/ssdt.dsl - 256 lines, 7309 bytes, 48 keywords AML Output: /Users/annalee/Library/ssdtPRGen/ssdt.aml - 1454 bytes, 16 named objects, 32 executable opcodes
Compilation complete. 0 Errors, 0 Warnings, 0 Remarks, 1 Optimizations
This is the resulting ssdt
/*
DefinitionBlock ("ssdt.aml", "SSDT", 1, "APPLE ", "CpuPm", 0x00015700) { External (PR.CPU0, DeviceObj) External (PR.CPU1, DeviceObj) External (PR.CPU2, DeviceObj) External (PR.CPU3, DeviceObj)
Scope (\_PR_.CPU0)
{
Method (_INI, 0, NotSerialized)
{
Store ("ssdtPRGen version....: 15.7 / Mac OS X 10.10.2 (14C109)", Debug)
Store ("target processor.....: i3-3217U", Debug)
Store ("source processor.....: Intel(R) Core(TM) i3-3217U CPU @ 1.80GHz", Debug)
Store ("baseFrequency........: 900", Debug)
Store ("frequency............: 1800", Debug)
Store ("busFrequency.........: 100", Debug)
Store ("logicalCPUs..........: 4", Debug)
Store ("maximum TDP..........: 17", Debug)
Store ("packageLength........: 10", Debug)
Store ("turboStates..........: 0", Debug)
Store ("maxTurboFrequency....: 1800", Debug)
Store ("IvyWorkArounds.......: 3", Debug)
Store ("machdep.xcpm.mode....: 0", Debug)
}
Name (APLF, 0x01)
Name (APSN, One)
Name (APSS, Package (0x0C)
{
/* Workaround for the Ivy Bridge PM 'bug' */
Package (0x06) { 0x0709, 0x004268, 0x0A, 0x0A, 0x1300, 0x1300 },
/* High Frequency Modes (non-turbo) */
Package (0x06) { 0x0708, 0x004268, 0x0A, 0x0A, 0x1200, 0x1200 },
Package (0x06) { 0x06A4, 0x003E01, 0x0A, 0x0A, 0x1100, 0x1100 },
Package (0x06) { 0x0640, 0x0039B1, 0x0A, 0x0A, 0x1000, 0x1000 },
Package (0x06) { 0x05DC, 0x003577, 0x0A, 0x0A, 0x0F00, 0x0F00 },
Package (0x06) { 0x0578, 0x003153, 0x0A, 0x0A, 0x0E00, 0x0E00 },
Package (0x06) { 0x0514, 0x002D46, 0x0A, 0x0A, 0x0D00, 0x0D00 },
Package (0x06) { 0x04B0, 0x00294D, 0x0A, 0x0A, 0x0C00, 0x0C00 },
Package (0x06) { 0x044C, 0x00256A, 0x0A, 0x0A, 0x0B00, 0x0B00 },
Package (0x06) { 0x03E8, 0x00219D, 0x0A, 0x0A, 0x0A00, 0x0A00 },
/* Low Frequency Mode */
Package (0x06) { 0x0384, 0x001DE4, 0x0A, 0x0A, 0x0900, 0x0900 },
Package (0x06) { 0x0320, Zero, 0x0A, 0x0A, 0x0800, 0x0800 }
})
Method (ACST, 0, NotSerialized)
{
Store ("Method _PR_.CPU0.ACST Called", Debug)
Store ("CPU0 C-States : 29", Debug)
/* Low Power Modes for CPU0 */
Return (Package (0x06)
{
One,
0x04,
Package (0x04)
{
ResourceTemplate ()
{
Register (FFixedHW,
0x01, // Bit Width
0x02, // Bit Offset
0x0000000000000000, // Address
0x01, // Access Size
)
},
One,
Zero,
0x03E8
},
Package (0x04)
{
ResourceTemplate ()
{
Register (FFixedHW,
0x01, // Bit Width
0x02, // Bit Offset
0x0000000000000010, // Address
0x03, // Access Size
)
},
0x03,
0xCD,
0x01F4
},
Package (0x04)
{
ResourceTemplate ()
{
Register (FFixedHW,
0x01, // Bit Width
0x02, // Bit Offset
0x0000000000000020, // Address
0x03, // Access Size
)
},
0x06,
0xF5,
0x015E
},
Package (0x04)
{
ResourceTemplate ()
{
Register (FFixedHW,
0x01, // Bit Width
0x02, // Bit Offset
0x0000000000000030, // Address
0x03, // Access Size
)
},
0x07,
0xF5,
0xC8
}
})
}
Method (_DSM, 4, NotSerialized)
{
Store ("Method _PR_.CPU0._DSM Called", Debug)
If (LEqual (Arg2, Zero))
{
Return (Buffer (One)
{
0x03
})
}
Return (Package (0x02)
{
"plugin-type",
One
})
}
}
Scope (\_PR_.CPU1)
{
Method (APSS, 0, NotSerialized)
{
Store ("Method _PR_.CPU1.APSS Called", Debug)
Return (\_PR_.CPU0.APSS)
}
Method (ACST, 0, NotSerialized)
{
Store ("Method _PR_.CPU1.ACST Called", Debug)
Store ("CPU1 C-States : 7", Debug)
/* Low Power Modes for CPU1 */
Return (Package (0x05)
{
One,
0x03,
Package (0x04)
{
ResourceTemplate ()
{
Register (FFixedHW,
0x01, // Bit Width
0x02, // Bit Offset
0x0000000000000000, // Address
0x01, // Access Size
)
},
One,
0x03E8,
0x03E8
},
Package (0x04)
{
ResourceTemplate ()
{
Register (FFixedHW,
0x01, // Bit Width
0x02, // Bit Offset
0x0000000000000010, // Address
0x03, // Access Size
)
},
0x02,
0x94,
0x01F4
},
Package (0x04)
{
ResourceTemplate ()
{
Register (FFixedHW,
0x01, // Bit Width
0x02, // Bit Offset
0x0000000000000030, // Address
0x03, // Access Size
)
},
0x03,
0xC6,
0xC8
}
})
}
}
Scope (\_PR_.CPU2)
{
Method (APSS, 0, NotSerialized)
{
Store ("Method _PR_.CPU2.APSS Called", Debug)
Return (\_PR_.CPU0.APSS)
}
Method (ACST, 0, NotSerialized) { Return (\_PR_.CPU1.ACST ()) }
}
Scope (\_PR_.CPU3)
{
Method (APSS, 0, NotSerialized)
{
Store ("Method _PR_.CPU3.APSS Called", Debug)
Return (\_PR_.CPU0.APSS)
}
Method (ACST, 0, NotSerialized) { Return (\_PR_.CPU1.ACST ()) }
}
}
Ok so -lfm 900 works for you with -x 3 then try ./ssdtPRGen.sh without -lfm (or use -lfm 800) and change -x 3 to -x 1 so that it drops the bottom P-State.
The "1 Optimizations" is caused by this
Name (APLF, 0x01)
Which should have been
Name (APLF, One)
Let me fix this right away (in the Beta).
Harry try lfm 792 as step 8 is at that freqency as I also got kernel panic at 800 but 792 worked
Pike when using -w1 I get stuck on the lowest frequency... :/
sysctl -n hw.cpufrequency outputs 1696000000
Perhaps this is the problem. Here's an example for a 3.3GHz processor. Check your values:
hw.busfrequency: 100000000
hw.busfrequency_min: 100000000
hw.busfrequency_max: 100000000
hw.tbfrequency: 1000000000
hw.busfrequency = 100000000
hw.tbfrequency = 1000000000
And these for the CPU frequency
hw.cpufrequency: 3300000000
hw.cpufrequency_min: 3300000000
hw.cpufrequency_max: 3300000000
hw.cpufrequency = 3300000000
They should all match. Anything else can be a boot loader (SMBIOS) or BIOS problem.
hw.busfrequency: 400000000 hw.busfrequency_min :400000000 hw.busfrequency_max 400000000 hw.tbfrequency: 1000000000
hw.cpufrequency: 1696000000 hw.cpufrequency_min: 1696000000 hw.cpufrequency_max: 1696000000 hw.cpufrequency = 1696000000
I'm using a laptop so there's no options for cpu in there and I'm using clover to patch MSR 0xE2 CPU is 1,7Ghz and turbo is at 2,4ghz
with -lfm 792 -x 0 -w 3 I get errors in system.log (http://pastebin.com/F7TFLbiK) and the frequency is stuck at 1800
-lfm 792 -x 0 -w 1 gives this error at compile: Name (APSS, Package (0x0C) Error 6062 - Initializer list longer than declared package length ^
-lfm 792 -x 0 -w 2 only has a remark Name (APSS, Package (0x0C) Remark 2063 - Initializer list shorter than declared package length ^
My frequencies are the same as amazingjoey's, except for cpufrequency, which is 1795000000
Plus, I must add that the bios settings of this machine (Lenovo U310) are amazingly dumbed down, there's absolutely nothing regarding the cpu or power saving accessible in the config. I have read somewhere that the bios can be "unlocked" to access an hidden page with more settings, but I have no idea...
This is dead wrong
w.busfrequency: 400000000
hw.busfrequency_min : 400000000
hw.busfrequency_max 400000000
If you are using Clover then ask the developers how to solve this.
Yes I'm using latest Clover , Ill try to contact slice on the forum. :) Thanks for the help
Can you explain what I should say the bug is ?
It's definitely Clover. My frequencies are 400000000/1795000000 in CLover, but in Chameleon I have the following (the ssdt related errors are still there though)
hw.busfrequency: 100000000 hw.busfrequency_min :100000000 hw.busfrequency_max 100000000 hw.tbfrequency: 1000000000
hw.cpufrequency: 1800000000 hw.cpufrequency_min: 1800000000 hw.cpufrequency_max: 1800000000 hw.cpufrequency = 1800000000
Using Clover the y-axis of Intel Power Gadget Frequency diagram goes up to 7Ghz, making it very hard to read. It is normal in Chameleon. Guess this must be the reason
Ok, sorry if I am flooding the place.. This can be fixed in Clover specifying the frequencies with
<key>CPU</key>
<dict>
<key>BusSpeedkHz</key>
<integer>100000</integer>
<key>FrequencyMHz</key>
<integer>1800</integer>
<key>QPI</key>
<integer>100</integer>
</dict>
I get the expected values with this and Power Gadget is not crazy anymore
ehm. Is everything working now? No more errors/weird behaviour?
My audio started too shutter and sound like exploded speakers after that fix :(
Do you have that with Chameleon? I guess not. Sounds like another Clover issue.
I don't have issues with sound and the frequencies are ok now, but the weird behaviour is still there - consistent across Chameleon and Clover.
Search for IOPPF: ... in /var/log/system.log What do you get?
Thing is. With XCPM you need 'FrequencyVectors' See also: https://github.com/Piker-Alpha/ssdtPRGen.sh/issues/103
I get XCPM mode when I am using Xcpm and AppleIntelCPUPowerManagement mode when I am not using it :-) My problem is that in AICPM mode I can't get to step 8, only 9, using -lfm 900, because with -lfm 800 (or -lfm 792) it's either kernel panics or weird behaviour (frequency stuck at 1800 or at 800, errors in system.log). In xcpm mode I get step 8 and everything seems to work normally, but I have the Failed to send stepper error.
As for the sound problems, I was mistaken. I have them when specifying busSpeedkHz 100000 in Clover, but I found that those can be solved playing around with the frequency. Now I am using
<key>BusSpeedkHz</key>
<integer>99690</integer>
<key>QPI</key>
<integer>100</integer>
and the cracking sound seems to be gone. The issue of weird default frequencies that we were getting before are described in the Clover wiki http://clover-wiki.zetam.org/Configuration/CPU#QPI
Forget AppleIntelCPUPowerManagement That kext should normally not be loaded. Not with Ivy Bridge and later processors. And XCPM with Haswell processors require FrequencyVectors, but perhaps this is now also the case for Ivy Bridge processors with XCPM enabled.
In case you are still using MacBookAir5,2 with board-id Mac-2E6FAB96566FE58C then you could either run https://github.com/Piker-Alpha/freqVectorsEdit.sh after you changed line 71 in the script, or copy a plist with FrequencyVectors over Mac-2E6FAB96566FE58C.plist, after you made a backup of the original file, and then reboot to see if that solves it.
Let me know how that worked out.
I edited and ran the script. When prompted for which plist to use I picked either MacbookAir6,1 or MacbookAir6,2. The error was still there with both. Then I copied one of the same two over Mac-2E6FAB96566FE58C and the error was gone, but I only had p-states 8 and 18. :-/
Ok so something clearly changed with Yosemite as now you need -lfm 800 -x 1 -w 0 with Ivy Bridge. Adding the boot flag -xcpm_ignore_fv may prevent the stepper error, but I no longer have an Ivy Bridge processor hand so could you please verify this for me? Thanks!
I tried -xcpm_ignore_fv already (read about it in your blog post), but it doesn't have an impact on the error.
try -lfm 800 -x 1 -w 0 with
-xcpm -f
Seems too work , no errors or cracking sound and, P States: 8, 12, 14, 17, 20, 21, 24
or not...
11/03/15 20:56:58,000 kernel[0]: X86PlatformShim::sendPStates - Success! 11/03/15 20:56:58,000 kernel[0]: X86PlatformShim::sendPStates - Success! 11/03/15 20:56:58,000 kernel[0]: X86PlatformShim::sendPStates - Success! 11/03/15 20:56:58,000 kernel[0]: fGPUIdleIntervalMS = 0 11/03/15 20:56:58,000 kernel[0]: X86PlatformShim::sendPStates - Success! 11/03/15 20:56:58,000 kernel[0]: X86PlatformShim::start - Failed to send stepper
atleast GPU preformance is good now :) Should I ignore this error and continue ? seems like I get full performance now
I have been using -lfm 800 -x 1 -w 0 with -xcpm since the beginning. "Failed to send stepper" is why I am here :-) With BusSpeedkHz 100000 I have no sound at all :-/ but with 97800 or something everything seems fine.
So the best thing to do is to replace the plist, or patch the plist with FrequencyVector data from some other model, and add -xcpm_ignore_fv as boot flag. Or simply ignore the error message.
-xcpm_ignore_fv Lockes me at 800Mhz with I've used the FrequencyVector.sh and added the Macbookair5,2 but doesnt seem too do something
I would rather learn how to fix it then ignoring it , but without xcpm flag and no workaround I get 8,16,26 in IGPU which I usually only get 8,16
Ok, maybe we made it :-)
I simply copied the FrequencyVectors portion over from the MacbookAir6,1 plist into the MacBookAir5,2 plist and deleted the ringFreqTables portion there. The rest stayed untouched. Rebuilt cache, restarted with -xcpm -xcpm_ignore_fv and "Failed to send stepper" is finally gone. Everything seems to work well as before, DPCI manager shows p-states 8-13-15-18 as expected (it's a humble i3). Powermetrics shows 4 C-States and 4 P-States being used.
Thank you very much Pike and Joey!
Wouldn't it be easier to pick a different Mac model and board-id? Here's a list with supported data:
Plists with ringFreqTables:
Mac-031AEE4D24BFF0B1.plist / Macmini6,1
Mac-2E6FAB96566FE58C.plist / MacBookAir5,2
Mac-4B7AC7E43945597E.plist / MacBookPro9,1
Mac-66F35F19FE2A0D05.plist / MacBookAir5,1
Mac-6F01561E16C75D06.plist / MacBookPro9,2
Mac-7DF2A3B5E5D671ED.plist / (unknown)
Mac-AFD8A9D944EA4843.plist / MacBookPro10,2
Mac-C3EC7CD22292981F.plist / MacBookPro10,1
Mac-F65AE981FFA204ED.plist / Macmini6,2
Plists with FrequencyVectors:
Mac-031B6874CF7F642A.plist / iMac14,1
Mac-189A3D4F975D5FFC.plist / MacBookPro11,1
Mac-27ADBB7B4CEE8E61.plist / iMac14,2
Mac-2BD1B31983FE1663.plist / MacBookPro11,3
Mac-35C1E88140C3E6CF.plist / MacBookAir6,1
Mac-35C5E08120C7EEAF.plist / Macmini7,1
Mac-3CBD00234E554E41.plist / MacBookPro11,2
Mac-42FD25EABCABB274.plist / iMac15,1
Mac-77EB7D7DAF985301.plist / iMac14,3
Mac-7DF21CB3ED6977E5.plist / MacBookAir6,2
Mac-81E3E92DD6088272.plist / iMac14,4
Mac-FA842E06C61E91C5.plist / iMac15,1
I tried copying MacBookAir6,1 over MacBookAir5,2 but there were errors in system.log (can't remember which, sorry. I should have taken notes...). However, the two files are very different, isn't it better to use the system definition closer to our hardware?
Normally yes, and this used to work:
./ssdtPRGen.sh -p i3-3217U -lfm 700 -w 0
without XCP (-xcpm -x 1) but if you can't use that anymore or are not happy with the results then using a different model/board-id is a good alternative.
Right. Ok. Sorry. I was dumb. When I replaced the Mac-XXXXXXXXXXXX.plist I didn't re-run the ssdtPRGen script. That's probably why I was getting errors..... Will try again tonight.
Accually Pike's method of choosing 6.1 instead worked out the best for me after running frequencySH and repairing cache/permissions
this thread has been helpful for me with i5-3317U cpu on samsung tablet 700t1c. it seems to be yosemite does run better on jivybridge with -xcpm mode.
when i use aicpupm I'm stuck at 800mhz despite all p-states being read successfully. ive tried all -w workarounds. it seems -w 0 is best on -xcpm with replacing freqVecors of MBA5,2 w those of MBA6,1 then deleting the freqringtable in the plist.
my issue is that turbo states are not loading. steps read are 8-17 & 26. tho step 26 is not used. I've gotten turbo states w GENERATE in Clover but it is not consistent.
any ideas of troubleshooting would be appreciated.
Hello, I have been trying for a while to get a good ssdt with your brilliant script. I managed to get 11 P-States (8-18) using vanilla AICPUPM (I patched my bios). The problem is that the processor will NEVER scale below (10), or 1200Mhz.
Then I tried many combinations with -xcpm enabled, AICPUPMI was always showing some sort of error, but I would always get all the P-States working and the processor would always scale nicely, as reported by HWMonitor and IntelPowerGadget.
I got the best outcome so far with ./ssdtPRGen.sh -f 1800 -lfm 800 -b Mac-2E6FAB96566FE58C -c 1 -d 0 -l 4 -m MacBookAir5,2 -p i3-3217U -t 17 -x 1 -w 0
which gives these entries in system.log:
Mar 2 16:32:37 Annas-MacBook-Pro kernel[0]: X86PlatformShim::sendPStates - Success! Mar 2 16:32:37 Annas-MacBook-Pro kernel[0]: X86PlatformShim::sendPStates - Success! Mar 2 16:32:37 Annas-MacBook-Pro kernel[0]: X86PlatformShim::start - Failed to send stepper
The generated ssdt is pasted below, here is the output from AICPUPMI. I know that -xcpm should probably not be used with IvyBridge, but it gives me the best results, if only I could get rid of the error...
Mar 2 16:32:36 localhost kernel[0]: AICPUPMI: CPU Low Frequency Mode.............: 800 MHz Mar 2 16:32:36 localhost kernel[0]: AICPUPMI: CPU Maximum non-Turbo Frequency....: 1800 MHz Mar 2 16:32:36 localhost kernel[0]: AICPUPMI: CPU Maximum Turbo Frequency........: 1800 MHz Mar 2 16:32:36 localhost kernel[0]: AICPUPMI: IGPU Current Frequency.............: 350 MHz Mar 2 16:32:36 localhost kernel[0]: AICPUPMI: IGPU Minimum Frequency.............: 350 MHz Mar 2 16:32:36 localhost kernel[0]: AICPUPMI: IGPU Maximum Non-Turbo Frequency...: 350 MHz Mar 2 16:32:36 localhost kernel[0]: AICPUPMI: IGPU Maximum Turbo Frequency.......: 1050 MHz Mar 2 16:32:36 localhost kernel[0]: AICPUPMI: IGPU Maximum limit.................: No Limit Mar 2 16:32:36 localhost kernel[0]: AICPUPMI: CPU P-States [ (8) 17 18 ] iGPU P-States [ (7) ] Mar 2 16:32:36 localhost kernel[0]: AICPUPMI: CPU C3-Cores [ 0 1 2 3 ] Mar 2 16:32:36 localhost kernel[0]: AICPUPMI: CPU C7-Cores [ 0 1 2 3 ] Mar 2 16:32:36 localhost kernel[0]: AICPUPMI: CPU P-States [ 8 (13) 17 18 ] iGPU P-States [ (7) ] Mar 2 16:32:41 Annas-MacBook-Pro kernel[0]: AICPUPMI: CPU P-States [ 8 13 16 17 (18) ] iGPU P-States [ (7) ] Mar 2 16:32:41 Annas-MacBook-Pro kernel[0]: AICPUPMI: CPU P-States [ 8 (13) 14 16 17 18 ] iGPU P-States [ (7) ] Mar 2 16:32:42 Annas-MacBook-Pro kernel[0]: AICPUPMI: CPU P-States [ (8) 13 14 15 16 17 18 ] iGPU P-States [ (7) ] Mar 2 16:32:44 Annas-MacBook-Pro kernel[0]: AICPUPMI: CPU P-States [ (8) 12 13 14 15 16 17 18 ] iGPU P-States [ (7) ] Mar 2 16:32:47 Annas-MacBook-Pro kernel[0]: AICPUPMI: CPU P-States [ (8) 9 12 13 14 15 16 17 18 ] iGPU P-States [ (7) ] Mar 2 16:32:50 Annas-MacBook-Pro kernel[0]: AICPUPMI: CPU P-States [ (8) 9 11 12 13 14 15 16 17 18 ] iGPU P-States [ (7) ] Mar 2 16:33:06 Annas-MacBook-Pro kernel[0]: AICPUPMI: CPU C6-Cores [ 0 1 2 3 ] Mar 2 16:33:08 Annas-MacBook-Pro kernel[0]: AICPUPMI: CPU P-States [ 8 9 11 12 13 14 15 16 17 (18) ] iGPU P-States [ 7 (9) ] Mar 2 16:33:18 Annas-MacBook-Pro kernel[0]: AICPUPMI: CPU P-States [ (8) 9 10 11 12 13 14 15 16 17 18 ] iGPU P-States [ (7) 9 ]
/*
DefinitionBlock ("ssdt.aml", "SSDT", 1, "APPLE ", "CpuPm", 0x00015600) { External (PR.CPU0, DeviceObj) External (PR.CPU1, DeviceObj) External (PR.CPU2, DeviceObj) External (PR.CPU3, DeviceObj)
}