Contribute
Register

OSX freeze after installing official nVidia Fermi drivers

Status
Not open for further replies.
Update for my previous post:

I managed to get my GFX card detected with DSDT. I had to paste the GFX0 code into POP3.

I also could insert the HDMI data but I failed to patch the AppleHDA kext and it gave me few errors on boot.

I'm currently using the DSDT with only graphics and no HDMI audio to avoid the boot errors.

The problem is that I still get KP's. Setting the PCI Express speed DOESN'T solve the Fermi freeze. I even set the QPI Link too with no avail.

The only solution aI think is to flash the video bios with a modded one to always get the full speed but it will increase the power consumption and therefore, the heat and decrease the life of the GPU.

Well, in fact when using the screensaver trick or playing the video we're doing the same.

Cheers!
 
6070 episodes of "The Bold and The Beautiful" can give you ~90 freeze-free days without looping :)
 
For those with Gigabyte boards, has anyone tried setting "Robust Graphics Booster" to Auto (instead of fast or turbo) and "PCIe frequency" to 100mhz
(instead of auto) in the bios?
 
Glenhal said:
For those with Gigabyte boards, has anyone tried setting "Robust Graphics Booster" to Auto (instead of fast or turbo) and "PCIe frequency" to 100mhz
(instead of auto) in the bios?

In my case with a EVGA board I tried changing the QPI, PCIe speed and power states and no luck.

Cheers!
 
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&amp;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
 
I'm trying that right now, juste skipped the HDMI-sound part since it doesn't KP on boot for that.


I've never been with a "Mac Pro 4,1" SMBIOS 'cause there was KP on boot, but with your trick (remove AppleTyMCEDriver.kext) it boots normally, so that's nice.

I modified the Info.plist of AppleGraphicsPowerManagement.kext,

now waiting for a KP to happen :think:




Many thanks for giving us a "dirty hack" or at least hope ! :headbang:


EDIT
Just froze and reboot... :banghead: so still no solution.
 
I will try that when I get home.

However, I modified the AppleGraphicsPowerManagement kext in the MacPro4,1 entry and replaced that to MacPro3,1 according to my system. I also modified the device ID according to my GTS 450 and that kext doesn't load.

I will try to set it to MacPro4,1 after restoring the original AGPM kext.

In the meantime I made some adjustments and I don't have recieved a single KP since yesterday.

I'm using arch=i386 to boot in 32bit, injected the graphics settings through DSDT but without HDMI data, downloaded the official NVIDIA Quadro drivers from NVIDIA site, downloaded the latest CUDA driver 3.1.4 and then ran the Preference Pane of CUDA to get the version 4.

I also have all the power saving settings for my CPU enabled on BIOS and I don't have any NullCPUPowerManagement kext.

My system is a EVGA P55 Micro SLI with a i5 760 Processor OCed to 3,4GHz and 4GB Corsair XMS3 1600MHz RAM with a Sparkle GTS 450 and my display connected with a DVI to HDMI cable.

As for the bootloader, I used EasyDSDT (Chimera 1.3) with AppleHDA rollback, IntelAHCIBlockStorage kext, and the usual FakeSMC (with Plugins). Everything moved to the EFI partition thanks to the guide of TonyMac.

Cheers!
 
My update about the topic:

I still haven't expereinced any freeze or KP since I installed the official graphics and CUDA drivers from nvidia site. Well, it doesn't count because I've rebooted many times trying the settings.

I changed my smbios.plist to MacPro4,1 and deleted AppleTyMCE kext and edited the AGPM. The hack works kinda, because it chops my card's performance almost by half. On MacPro3,1 or MacPro4,1 without the AGPM kext I get 27 FPS on Cinebench. With the kext loaded (on MacPro4,1) I get 15 FPS. That's a serious performance hit.

I set the values on the plist to 0 0 100 100 on both low or high states but I think that 100 is still low or we need to edit another setting because I don't get the card's full performance with that kext enabled.

Maybe it solves the freezing but at a serious performance hit.

Cheers!

EDIT:

aedon,

You got the AGPM edit wrong. On the states section in the info.plist, you need to set to 100 the first part and lower the next integers. For example,

Code:
				<key>Vendor10deDevice0dc4</key> //Device 0dc4=GTS450
				<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>100</integer> //3D P-state
							<integer>87</integer>  //2D P-state
							<integer>0</integer> //???
							<integer>0</integer> //Guess Idle mode.
						</array>
						<key>Threshold_Low</key>
						<array>
							<integer>100</integer> //same here
							<integer>87</integer>
							<integer>0</integer>
							<integer>0</integer>
						</array>
					</dict>
					<key>LogControl</key>
					<integer>0</integer>
					<key>control-id</key>
					<integer>18</integer>
				</dict>


You suggested the other way around and that's why you still get KP or freezes, because the card goes to a lower power state with very low clock speeds and that's why I got very low score on Cinebench. Editing it my way I get my full card's potential and only goes to a lower speed which usually is not that low like the idle mode.

I think that values depend on the load of the content to be rendered on the graphics card and need to be tweaked carefully; and maybe we can set generous values to avoid being on the 3D p-state all the time and decrease the heat and power consumption.

It's important to set the device ID of the card to get this working.

I hope it helps.

EDIT AGAIN!

With the previous edit, although I got a great performance, I got thousands of errors in the console. I checked the settings for other cards in the same plist for the MacPro an iMac, and edited accordingly but leaving in Zero the last P-State as follows:

Code:
<key>Vendor10deDevice0dc4</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>100</integer>
							<integer>90</integer>
							<integer>90</integer>
							<integer>0</integer>
						</array>
						<key>Threshold_Low</key>
						<array>
							<integer>0</integer> //was like that on another section
							<integer>90</integer>
							<integer>90</integer>
							<integer>0</integer>
						</array>
					</dict>
					<key>LogControl</key>
					<integer>0</integer>
					<key>control-id</key>
					<integer>18</integer>
				</dict>

I still get errors, but, only a few. Less than before this "hack".

Now I can confirm that by using this kext wisely we can control the performance of the card and clock speeds to avoid KPs and Freezes.

MY THEORY:

I think that this kext and/or Mac OS asks the card to go to 4 power states, and by checking our video bioses, we only have 3. Maybe that causes the freezes and panics. HDMI audio I think has nothing to do with it because in my case it's not even loaded or recognized by the system. On windows, I don't even use it.

Cheers!
 
Bidule200 said:
I also checked this post :
http://www.tonymacx86.com/viewtopic.php?f=15&t=20175&sid=23bd59acdd5768a5ffa73a9338c8d523

And he said to just set "IdleInterval" to 0 instead of 250.

EDIT
Freeze 10mn after boot. :|

I left IdleInterval to 250 and only edited the Threshold values leaving the last value on both Threshold Low and High to 0.

It's working for me.

Make sure you're using a MacPro4,1 smbios and deleted AppleTyMCE kext or your PC will KP on boot when set to MacPro4,1.

Cheers!
 
Status
Not open for further replies.
Back
Top