I found out that there might be 2 reasons for freezes caused by my Gigabyte GTX 460 OC 1GB (GV-N460OC-1GI:
http://www.gigabyte.com/products/produc ... x?pid=3530)
1. Sound on the HDMI interface (random KP on boot)
2. Switching PowerStates (random KP on switch PowerState)
So to get the card installed and recognized properly after switching from 8600GT to GTX 460 OC i had to create new dsdt on linux, replace Chameleon RC4 with Chameleon_2.0_RC5_r760 (
http://www.insanelymac.com/forum/index. ... e=threaded )and enable PCIRootUID=1 but only once!
To get rid of the sound on HDMI interface I've installed VoodooHDA.kext_v272_Snow
http://www.projectosx.com/forum/index.php?showtopic=355 and used IOPCIPrimaryMatch. So my Info.plist looks like this (Don't use it blindly, it's for ALC883 of my P5K plain:
cat /System/Library/Extensions/VoodooHDA.kext/Contents/Info.plist
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>VoodooHDA</string>
<key>CFBundleIdentifier</key>
<string>org.voodoo.driver.VoodooHDA</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>VoodooHDA</string>
<key>CFBundlePackageType</key>
<string>KEXT</string>
<key>CFBundleShortVersionString</key>
<string>2.7.2</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>2.7.2</string>
<key>IOKitPersonalities</key>
<dict>
<key>VoodooHDA</key>
<dict>
<key>CFBundleIdentifier</key>
<string>org.voodoo.driver.VoodooHDA</string>
<key>IOClass</key>
<string>VoodooHDADevice</string>
<key>IOMatchCategory</key>
<string>VoodooHDADevice</string>
<key>IOPCIPrimaryMatch</key>
<string>0x293e8086</string>
<key>IOPCIClassMatch</key>
<string>0x04030000&0xffff0000</string>
<key>IOProviderClass</key>
<string>IOPCIDevice</string>
<key>IOUserClientClass</key>
<string>VoodooHDAUserClient</string>
<key>MixerValues</key>
<dict>
<key>iMix</key>
<string>30</string>
</dict>
<key>NodesToPatch</key>
<array/>
<key>VoodooHDAVerboseLevel</key>
<integer>1</integer>
</dict>
</dict>
<key>OSBundleLibraries</key>
<dict>
<key>com.apple.iokit.IOAudioFamily</key>
<string>1.1fc9</string>
<key>com.apple.iokit.IOPCIFamily</key>
<string>2.1</string>
<key>com.apple.kpi.iokit</key>
<string>9.0.0</string>
<key>com.apple.kpi.libkern</key>
<string>9.0.0</string>
<key>com.apple.kpi.mach</key>
<string>9.0.0</string>
<key>com.apple.kpi.unsupported</key>
<string>9.0.0</string>
</dict>
</dict>
</plist>
I still had random Freezes though. Then I found this topic:
http://forums.macrumors.com/showthread.php?t=716115
So I went hunting for AppleGraphicsPowerManagement.kext!
At first I've switched from MacPro3,1 to MacPro4,1. Removing of AppleTyMCEDriver.kext (A quite old hint from netkas) is imperative to this procedure. What the kext does read here:
http://www.projectosx.com/forum/index.php?showtopic=102
I've changed my smbios.plist. It looks now like this:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SMbiosvendor</key>
<string>Apple Inc.</string>
<key>SMbiosversion</key>
<string>MP41.88Z.0081.B07.0903051113</string>
<key>SMmanufacter</key>
<string>Apple Inc.</string>
<key>SMboardmanufacturer</key>
<string>Apple Computer, Inc.</string>
<key>SMfamily</key>
<string>MacPro</string>
<key>SMboardproduct</key>
<string>Mac-F221BEC8</string>
<key>SMmanufacturer</key>
<string>Apple Inc.</string>
<key>SMproductname</key>
<string>MacPro4,1</string>
<key>SMserial</key>
<string>W87234JHYA4</string>
<key>SMsystemversion</key>
<string>1.0</string>
<key>SMcputype</key>
<string>1281</string>
<key>SMexternalclock</key>
<string>267</string>
<key>SMmaximalclock</key>
<string>2400</string>
<key>SMmemtype</key>
<string>19</string>
<key>SMmemspeed</key>
<string>800</string>
<key>SMmemmanufacter_1</key>
<string>0xAD00000000000000</string>
<key>SMmemserial_1</key>
<string>0x00001020</string>
<key>SMmempart_1</key>
<string>0x48594D503131325336344350362D59352020</string>
<key>SMmemmanufacter_2</key>
<string>0xAD00000000000000</string>
<key>SMmemserial_2</key>
<string>0x00003021</string>
<key>SMmempart_2</key>
<string>0x48594D503131325336344350362D59352020</string>
<key>SMmemmanufacter_3</key>
<string>0xAD00000000000000</string>
<key>SMmemserial_3</key>
<string>0x00003021</string>
<key>SMmempart_3</key>
<string>0x48594D503131325336344350362D59352020</string>
<key>SMmemmanufacter_4</key>
<string>0xAD00000000000000</string>
<key>SMmemserial_4</key>
<string>0x00003021</string>
<key>SMmempart_4</key>
<string>0x48594D503131325336344350362D59352020</string>
</dict>
</plist>
After reboot I got AppleGraphicsPowerManagement.kext loaded. However still random Kernel Panics but seldom than previously with MacPro3,1 smbios.
I checked the PowerStates in Linux and in Windows. They differ! So I thought how to eliminate PowerState 0 and 1. The Powerstates 2 and 3 would be enough for me. So I played with the settings in Info.plist of the AppleGraphicsPowerManagement.kext.
At this point many thanks to cuda. Please read this topic:
http://forums.macrumors.com/showthread.php?t=716115 , especially this post:
http://forums.macrumors.com/showpost.ph ... stcount=91
The relevant part looks like this:
Code:
....
<key>MacPro4,1</key>
<dict>
<key>Vendor10deDevice0e22</key> // changed from GTX 285 to GTX 460 OC
<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>87</integer>
<integer>87</integer>
<integer>87</integer>
<integer>100</integer>
</array>
<key>Threshold_Low</key>
<array>
<integer>0</integer>
<integer>87</integer>
<integer>87</integer>
<integer>87</integer>
</array>
</dict>
<key>LogControl</key>
<integer>1</integer>
<key>control-id</key>
<integer>18</integer>
</dict>
<key>Vendor10deDevice0640</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>93</integer>
<integer>93</integer>
<integer>93</integer>
<integer>100</integer>
</array>
<key>Threshold_Low</key>
<array>
<integer>0</integer>
<integer>97</integer>
<integer>97</integer>
<integer>97</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>
...
Cuda said:
So, Threshold_High and Threshold_Low.
When the Card is considered by the OS not to be Idle, i.e. it is active( Remember, OS X uses OpenGL for Rendering the Desktop on cards that have 16MB or grater of Vram AND Support non power of 2 floating point integer.) So, Idle, I think, is no active 3D OpenGL ,Cuda, no App other than System Root:Wheel, asking for GPU time.)
Each entry ( Item ) under the Threshold_High is a Thermal Value ( in Celsius ) for the Max Tempature of one of our four valid PowerStates, when that Temp. is reached (87c) (100c), it lowers the card to the next lower PowerState as defined by the Perf.Tables in the BIOS( I don't know if the EFI Part of the ROM also Defines them for GeForce GT xxx cards, I'll have to try and look at it.)
When the OS considers that no User Process is asking for GPU time, Power states change at given Temps. See Above.
So you could play with those settings to fit your card (my card takes max. 104 °C):
Code:
<array>
<integer>0</integer>
<integer>0</integer>
<integer>87</integer>
<integer>104</integer>
</array>
<key>Threshold_Low</key>
<array>
<integer>0</integer>
<integer>0</integer>
<integer>27</integer>
<integer>104</integer>
</array>
The card runs on dual head (2xDVI) since 3 days with no freezes at all (cuda & mercury enabled). If they shall come back however I'm going to make a custom nvidia.rom to eliminate those not used by me PowerStates and try to load it by chameleon w/o flashing it to the card
http://forum.voodooprojects.org/index.php?topic=351.0 http://forums.guru3d.com/showthread.php?t=336117.
What I'm yet looking for is a way to check real time on nvidia clocks under 10.6.7 64-bit. Any suggestions would be much appreciated! The procfs from Macports would be useful too but I can't get it compile.
The Linux Performance Levels are:
# - GC MC PC
0 - 50 135 101 //
1 - 405 324 810
2 - 405 1800 810
3 - 715 1800 1430
Read more here:
http://tutanhamon.com.ua/technovodstvo/ ... IX-driver/
So Apple seems to have different PowerStates:
Code:
A device that is on uses maximum power and has complete functionality.
A device that is off uses no power and has no functionality.
A device can be in a reduced-power state in which it is still usable, but at a lower level of performance or functionality.
A device can be in an intermediate state in which it is not usable, but retains some configuration or state.
source:
http://developer.apple.com/library/mac/ ... rMgmt.html
Which however makes no sense to me.
After setting LogControl=1 you will see the state changes in kernel.log
I got such behavior while running Cinebench:
sudo tail -f /var/log/kernel.log
Code:
...
May22 14:16:30 kernel[0]: AGPM: GPU = display G-state set to 0 from 3, ControlID=18
May22 14:17:19 kernel[0]: AGPM: GPU = display G-state set to 1 from 0, ControlID=18
May22 14:17:24 kernel[0]: AGPM: GPU = display G-state set to 2 from 1, ControlID=18
May22 14:17:29 kernel[0]: AGPM: GPU = display G-state set to 3 from 2, ControlID=18
....
Additional kext loaded on my system:
Code:
AppleIntelPIIXATA.kext
UUID.kext
LegacyAppleAHCIPortJMicronJMB36xSATA.kext
fakesmc.kext
PlatformUUID.kext
VoodooHDA.kext
Patches on dsdt:
Code:
halt patch for Asus
Q6600 SpeedStep patch #4
If it works for you great, but this is a very dirty hack and no solution at all!
Cheers
aedon
Edited on 22.05.2011