Jump to content

Testers needed: CPU Power Management for SB and IB Xeon(s) or i7-39xx on X79 or C60x chipset


494 posts in this topic

Recommended Posts

There are no changes to AICPM in any of the latest betas of 10.9.2 judging by the file size.

 

Under the last 2 BETA's PM is no longer working under Chameleon but works fine under Clover. Thanks for the great work.  

Can you post your SSDT? Thanks. 

 

I'm not using a SSDT override here. It's just using the stock BIOS table.

 

It may be down to my using a SB-E chip, or maybe the MacPro5,1 SMBIOS.

 

The whole MP6,1/SSDT/X86PlatformPlugin routine was a dead end for me. Only omni's patched AICPUPM binary got PM working here.

I'm not using a SSDT override here. It's just using the stock BIOS table.

 

It may be down to my using a SB-E chip, or maybe the MacPro5,1 SMBIOS.

 

The whole MP6,1/SSDT/X86PlatformPlugin routine was a dead end for me. Only omni's patched AICPUPM binary got PM working here.

 

Working well here but not sure what the difference Cham and Clover have ATM. What I think is going on is that my SSDT-2 is not loading properly under Cham but need to look into it more. 

I just changed the chameleon source code:

 

I let it write 0x407 to MSR 0xE2

 

Additionally I patched AICPUPM to not write anything into MSR 0xE2. (AICPM Patch)

 

Since I have an unlocked BIOS this works.  Also Power management is disabled in my BIOS options. But something is still writing 0x400 to MSR 0xE2.

This of course prevents my CPU from going into C-States.

 

Has anyone an idea, what is doing that???

  • Like 1

I'll take a look at the latest AICPM beta file then to see if there are any binary changes.

 

The issue I have is that I can't even properly run 10.9.2 beta (except for Safe Mode) because my GTX Titan does not work with it. All I get is a white screen and occasionally a mouse pointer, and tons of weird errors in the system log.

 

 

@Klonkrieger2

 

Problem is all of the above - you are changing Chameleon source code; writing 0x407 to MSR 0xE2; and patching AICPM to disable MSR 0xE2 writes.

 

If you want to change your MSR 0xE2 at boot, try using my Chameleon module from the OP.

 

But even with the module, AICPM will re-write the value of MSR 0xE2 and you should let it do that (you are not because you patched it not to write to MSR 0xE2).

 

The solution might be elsewhere though. Have you tried debugging as per my OP, as you can check whether ACST is loaded or not?

I'll take a look at the latest AICPM beta file then to see if there are any binary changes.

 

The issue I have is that I can't even properly run 10.9.2 beta (except for Safe Mode) because my GTX Titan does not work with it. All I get is a white screen and occasionally a mouse pointer, and tons of weird errors in the system log.

 

 

@Klonkrieger2

 

Problem is all of the above - you are changing Chameleon source code; writing 0x407 to MSR 0xE2; and patching AICPM to disable MSR 0xE2 writes.

 

If you want to change your MSR 0xE2 at boot, try using my Chameleon module from the OP.

 

But even with the module, AICPM will re-write the value of MSR 0xE2 and you should let it do that (you are not because you patched it not to write to MSR 0xE2).

 

The solution might be elsewhere though. Have you tried debugging as per my OP, as you can check whether ACST is loaded or not?

Titian in my testing of 10.9.2 is working fine. Have you tried the retail drivers?

I a modify a Legacy_ACPI_SMC_PP.kext created by MasterChief for using mac pro 5,1 definition with the StepContextDict of the mac mini 5,2 for more Pstate and zero Popping Sound.

 

https://mega.co.nz/#!f1wXQD6Y!7HL0erEtKBg8Aq41D3RfEPRtw2NDnuYJpAZYZoQikWY

@omni,

I got AGPM working by adding an entry for MacPro6,1 and my cards to the plist. I also deleted the plugins in the AGPMcontrol kext that referenced the board ID for MP6,1. Don't know if this would help you and probably wouldn't if you're not using MP6,1.

 

I know the Titan should work OOB GE=No but you might try injecting via DSDT, SSDT or string in org.chameleon to see if it helps. I still use a string for my 2 gtx cards and it give better performance.

 

@Riley

I do have everything working as 6,1 using omni,s patched AICPUPM but IPG doesn't show any states below 32. Howver, power draw is only 5w at idle so I'd say it's working good enough.

Titian in my testing of 10.9.2 is working fine. Have you tried the retail drivers?

 

I've tried beta Web drivers, Official ones, 10.9.1 and 10.9 ones,  past OpenCL and OpenGL frameworks and combinations of all of this.

 

Nada, white screen, sometimes a mouse pointer sometimes not, and lots of NVIDIA driver errors like

 

kernel[0]: NVDA(Private): Channel exception! Exception type = 0x8 DMA Engine Error (FIFO Error 8)
kernel[0]: 4443564e 00000278 3998c1fc b85f72e0 00000001 00000014 d3793533 46d3a4a6
kernel[0]: 4614f297 e71edccf 00088301 00000243 12f2460a 08180a43 18001000 28002000
 
:(
 
@shilohhh
 
Could you be more specific please, what entry did you add where?
 
I tried setting proper entries in AGPM.kext and also without, that made no difference except that one would put my display to sleep and the other would just lead to that white screen.
 
Otherwise GTX Titan works OOB in 10.9.1 for me, and I believe GE=No by default so I don't have that set anywhere...

 

 

@Omni
Yes default is GE=No. Find the MacPro5,1 entry and copy past a duplicate of the entire entry right below it. The change the 5,1 to 6,1. Then change the the first card name to the proper name for your titan. Then adjust the values below it achieve the power states at the load levels you want. You can find a good post here about doing this with a 570 but I forgot the users name. You can also find a good post about it on rampagedev site.

This is what I have for my GTX 580 & 570

				<key>MacPro6,1</key>
				<dict>
					<key>Vendor10deDevice1080</key>
					<dict>
						<key>Heuristic</key>
						<dict>
							<key>ID</key>
							<integer>0</integer>
							<key>IdleInterval</key>
							<integer>250</integer>
							<key>SensorOption</key>
							<integer>1</integer>
							<key>SensorSampleRate</key>
							<integer>4</integer>
							<key>TargetCount</key>
							<integer>5</integer>
							<key>Threshold_High</key>
							<array>
								<integer>45</integer>
								<integer>45</integer>
								<integer>85</integer>
								<integer>100</integer>
							</array>
							<key>Threshold_Low</key>
							<array>
								<integer>0</integer>
								<integer>65</integer>
								<integer>65</integer>
								<integer>87</integer>
							</array>
						</dict>
						<key>LogControl</key>
						<integer>0</integer>
						<key>control-id</key>
						<integer>18</integer>
					</dict>
					<key>Vendor10deDevice1086</key>
					<dict>
						<key>Heuristic</key>
						<dict>
							<key>ID</key>
							<integer>0</integer>
							<key>IdleInterval</key>
							<integer>250</integer>
							<key>SensorOption</key>
							<integer>1</integer>
							<key>SensorSampleRate</key>
							<integer>4</integer>
							<key>TargetCount</key>
							<integer>5</integer>
							<key>Threshold_High</key>
							<array>
								<integer>45</integer>
								<integer>45</integer>
								<integer>85</integer>
								<integer>100</integer>
							</array>
							<key>Threshold_Low</key>
							<array>
								<integer>0</integer>
								<integer>65</integer>
								<integer>65</integer>
								<integer>87</integer>
							</array>
						</dict>
						<key>LogControl</key>
						<integer>0</integer>
						<key>control-id</key>
						<integer>18</integer>
					</dict>
					<key>default-control-id</key>
					<integer>18</integer>
				</dict>
				<key>Macmini3,1</key>

I think the more important thing to try is deleting the plugins from the AGPMcontrol AppleGraphicsControl kext. I deleted: AppleMGPUPowerControl.kext, AppleGraphicsDevicePolicy.kext and AppleGraphicsDeviceControl.kext

  • Like 1

Thanks for the suggestions guys.

 

After so much grief, I managed to get it to work by replacing IOPCIFamily.kext and AppleACPIPlatform.kext (mysticalos suggested I increase my PCH/VTT voltage and after that did not help, I deducted that it must be a PCI issue - bravo EVGA, you are totally incompetent). The 10.9.2 booted and everything was as if I just did this the first time.

 

But now with 10.9.2 being finally up I noticed that I lost my CPU PM, stuck at 12x, no C3 Residency only C2/C6, yet everything is initialized.

 

Back to square one it seems...meh.

 

Thanks for the suggestions guys.

 

After so much grief, I managed to get it to work by replacing IOPCIFamily.kext and AppleACPIPlatform.kext (mysticalos suggested I increase my PCH/VTT voltage and after that did not help, I deducted that it must be a PCI issue - bravo EVGA, you are totally incompetent). The 10.9.2 booted and everything was as if I just did this the first time.

 

But now with 10.9.2 being finally up I noticed that I lost my CPU PM, stuck at 12x, no C3 Residency only C2/C6, yet everything is initialized.

 

Back to square one it seems...meh.

 

No! Not back to square one. It works when you are booting with Clover. PM me if you want to do some testing together. 

 change the the first card name to the proper name for your titan. Then adjust the values below it achieve the power states at the load levels you want. 

This is what I have for my GTX 580 & 570

Your example only applies to Fermi graphics, not applicable to Titan.   Kepler uses AGPM/HeuristicID: 4.  See AGPM/Info.plist/Machines/Mac-27ADBB7B4CEE8E61 for imac14,2/780M.

  • Like 1

Hey rampage,

 

could you please share your clover config file with us? I also tested clover recently but didn't notice any relevant changes to PM, but I'm anything else than a clover expert!

Hey rampage,

 

could you please share your clover config file with us? I also tested clover recently but didn't notice any relevant changes to PM, but I'm anything else than a clover expert!

 

Its on the DMG. 

ok thanks rampage. But again, I don't have any changes on PM with clover. I'm using the most recent clover build and 10.9.2 beta. CPU is ivy bridge EP xeon e5 2690 v2.

 

No C-States according to AICPUPMI.kext. MSR 0xE2 is constantly at 0x401

 

Also Cores C000 and C001 don't reach C6 sate. Something seems to prevent it...

ok thanks rampage. But again, I don't have any changes on PM with clover. I'm using the most recent clover build and 10.9.2 beta. CPU is ivy bridge EP xeon e5 2690 v2.

 

No C-States according to AICPUPMI.kext. MSR 0xE2 is constantly at 0x401

 

Also Cores C000 and C001 don't reach C6 sate. Something seems to prevent it...

 

I am testing with a 3970X and 4930K. 

Your example only applies to Fermi graphics, not applicable to Titan.   Kepler uses AGPM/HeuristicID: 4.  See AGPM/Info.plist/Machines/Mac-27ADBB7B4CEE8E61 for imac14,2/780M.

 

What about control-id's what should they be set at? I keep finding conflicting information about 16/17/18 values.

 

Also, how do thresholds work in 10.9?

 

I read RampageDev's post in his blog but I'm still not clear about Mavericks and Kepler specifically...

 

In your SSDT for Power Management add the following code under the first CPU and Power Management will return when booting using Chameleon Bootloader:

Name (APLF, 0x04)

ok thanks rampage. But again, I don't have any changes on PM with clover. I'm using the most recent clover build and 10.9.2 beta. CPU is ivy bridge EP xeon e5 2690 v2.

 

No C-States according to AICPUPMI.kext. MSR 0xE2 is constantly at 0x401

 

Also Cores C000 and C001 don't reach C6 sate. Something seems to prevent it...

 

Is your MSR 0xE2 unlocked?

 

If it is, edit AppleIntelCPUPowerManagement binary with a hex editor, find offset 0x1171B and replace 0xE1 with 0xFF.

 

Remember to delete your cache or rebuild it, then reboot and see what happens.

 

AICPM by default ORs the last 3 bits of MSR 0xE2 so its value ends up 7, but before that it conditionally ANDs it with 0xE1FF7FF8 effectively erasing bits 25-28 which control C-state (un)demotions.

 

It is bizarre why the value isn't 0x407 at least - still looking into it because for me sometimes it is and other times it's not.

 

@omni

<key>Threshold_High</key>

<array>

<integer>45</integer>

<integer>45</integer>

<integer>85</integer>

<integer>100</integer>

</array>

<key>Threshold_Low</key>

<array>

<integer>0</integer>

<integer>65</integer>

<integer>65</integer>

<integer>87</integer>

 

Its kind of ass backwards. In the above example threshold high dictates that when the card is 100% idle - 86% idle. it is in power state 3. When it reaches 85% idle it steps up to state 2. When it reaches 45% idle, it steps up to state 1 and then 0 because they have the same value (my cards max state is 1).

Threshold low dictates that when the cards power draw drops to 65% of idle, it drops to 2 and at 87% idle, it drops to 3.

 

Set log control from 0 to 1 to see your states change in console and tune it to the behavior you want for your card. As toleda mentioned you may want to tune my example for Kepler vs my firmis.

×
×
  • Create New...