Jump to content

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


omni
 Share

494 posts in this topic

Recommended Posts

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.

Link to comment
Share on other sites

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. 

Link to comment
Share on other sites

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
Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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?

Link to comment
Share on other sites

@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.

Link to comment
Share on other sites

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...

 

 

Link to comment
Share on other sites

@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
Link to comment
Share on other sites

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.

 

Link to comment
Share on other sites

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. 

Link to comment
Share on other sites

 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
Link to comment
Share on other sites

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...

Link to comment
Share on other sites

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. 

Link to comment
Share on other sites

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...

 

Link to comment
Share on other sites

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.

 

Link to comment
Share on other sites

@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.

Link to comment
Share on other sites

 Share

×
×
  • Create New...