Jump to content

Multiple display setup, switches main display PEG/PEG2 every boot


7 posts in this topic

Recommended Posts

I've a 2 gfx (Nvidia 9600 GT) and 4 monitors setup, and I've been using it since 10.6.x. With 10.8 GM, after (almost) every reboot/start the main display graphic card switches.

 

I've been using the following DSDT, properly setup with NVDA,Parent & NVDA,Child without any problems. I've also tried;

 

- Latest chameleon build, and a couple of older builds,

- Latest chimera, with and without DSDT code

- Enabling and disabling graphicsenabler for both bootloaders

- Switching BIOS setting to PCI/PEG/PEG2

- adding "@0,AAPL,boot-display"

- deleting both com.apple.windowserver files and restart

- removing cards and cleaning contacts :) (really!)

 

and a couple of other things I can't remember now, and 3-4 reinstalls. It still randomly switches main graphic card. I can't figure it out. Any help would be greatly appreciated!

 

		Device (PEG1)
		{
			Name (_ADR, 0x00010000)
			Method (_STA, 0, NotSerialized)
			{
				Return (0x0F)
			}
			Method (_PRW, 0, NotSerialized)
			{
				Return (Package (0x02)
				{
					0x09,
					0x05
				})
			}
			Device (GFX1)
			{
				Name (_ADR, Zero)
				Name (_SUN, 0x0B)
				Method (_PRW, 0, NotSerialized)
				{
					Return (Package (0x02)
					{
						0x0B,
						0x04
					})
				}
				Method (_DSM, 4, NotSerialized)
				{
					Store (Package (0x18)
						{
							"@0,compatible",
							Buffer (0x0B)
							{
								"NVDA,NVMac"
							},
							"@0,device_type",
							Buffer (0x08)
							{
								"display"
							},
							"@0,name",
							Buffer (0x0F)
							{
								"NVDA,Display-A"
							},
							"@1,compatible",
							Buffer (0x0B)
							{
								"NVDA,NVMac"
							},
							"@1,device_type",
							Buffer (0x08)
							{
								"display"
							},
							"@1,name",
							Buffer (0x0F)
							{
								"NVDA,Display-B"
							},
							"NVCAP",
							Buffer (0x18)
							{
								/* 0000 */   0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00,
								/* 0008 */   0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
								/* 0010 */   0x00, 0x00, 0x00, 0x00
							},
							"VRAM,totalsize",
							Buffer (0x04)
							{
								 0x00, 0x00, 0x00, 0x40
							},
							"device_type",
							Buffer (0x0D)
							{
								"NVDA,Parent"
							},
							"rm_multiboard_capable",
							Buffer (0x04)
							{
								 0x01, 0x00, 0x00, 0x00
							},
							"model",
							Buffer (0x17)
							{
								"NVIDIA Geforce 9600 GT"
							},
							"rom-revision",
							Buffer (0x06)
							{
								"3173a"
							}
						}, Local0)
					DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
					Return (Local0)
				}
			}
		}
		Device (PEG2)
		{
			Name (_ADR, 0x00060000)
			Method (_STA, 0, NotSerialized)
			{
				Return (0x0F)
			}
			Method (_PRW, 0, NotSerialized)
			{
				Return (Package (0x02)
				{
					0x09,
					0x05
				})
			}
			Device (GFX2)
			{
				Name (_ADR, Zero)
				Name (_SUN, 0x0C)
				Method (_PRW, 0, NotSerialized)
				{
					Return (Package (0x02)
					{
						0x05,
						0x04
					})
				}
				Method (_DSM, 4, NotSerialized)
				{
					Store (Package (0x18)
						{
							"@0,compatible",
							Buffer (0x0B)
							{
								"NVDA,NVMac"
							},
							"@0,device_type",
							Buffer (0x08)
							{
								"display"
							},
							"@0,name",
							Buffer (0x0F)
							{
								"NVDA,Display-A"
							},
							"@1,compatible",
							Buffer (0x0B)
							{
								"NVDA,NVMac"
							},
							"@1,device_type",
							Buffer (0x08)
							{
								"display"
							},
							"@1,name",
							Buffer (0x0F)
							{
								"NVDA,Display-B"
							},
							"NVCAP",
							Buffer (0x18)
							{
								/* 0000 */   0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00,
								/* 0008 */   0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
								/* 0010 */   0x00, 0x00, 0x00, 0x00
							},
							"VRAM,totalsize",
							Buffer (0x04)
							{
								 0x00, 0x00, 0x00, 0x40
							},
							"device_type",
							Buffer (0x0D)
							{
								"NVDA,Child"
							},
							"rm_multiboard_capable",
							Buffer (0x04)
							{
								 0x01, 0x00, 0x00, 0x00
							},
							"model",
							Buffer (0x17)
							{
								"NVIDIA Geforce 9600 GT"
							},
							"rom-revision",
							Buffer (0x06)
							{
								"3169a"
							}
						}, Local0)
					DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
					Return (Local0)
				}
			}
		}

Link to comment
Share on other sites

Fix:

 

1. set DropSSDT NO, enabling it instantly brought back the problem

2. add

 

						   "@0,AAPL,boot-display",
							Buffer (0x04)
							{
								 0x01, 0x00, 0x00, 0x00
							},
							"@0,AAPL,primary-display",
							Buffer (0x04)
							{
								 0x00, 0x00, 0x00, 0x00
							},

 

to your first card.

3. Delete com.apple.windowserver.* files from /Library/Preferences and ~/Library/Preferences/byHost

 

cross your fingers and reboot.

Link to comment
Share on other sites

Unfortunately no, I've tried different DSDT hacks, bootloaders, editing windowserver.plist, BIOS settings, disconnecting one of the monitors, repairing color profiles, locking windowserver.plist files..

 

Maybe it's a OS bug.. One thing I haven't tried is using nvidia kexts from 10.7.x, but I have no idea which ones to rollback..

 

BTW, thank God it's not just me :)

Link to comment
Share on other sites

 Share

×
×
  • Create New...