Jump to content

Multiple Video Cards WORKING in 10.6 with EFI Strings/DSDT


DigitalDJ
 Share

60 posts in this topic

Recommended Posts

I have since streamlined the GFX of my dsdt however I'm on vacation for the week. Ping me sometime next week and I'll share it ifyou like.

 

 

@shajiver: Thanks a lot man.Is going to be very usefull.

 

@kdawg: Always nice to improve. I'll contact you next week, Thanks.

 

 

Ric

Link to comment
Share on other sites

@shajiver: Thanks a lot man.Is going to be very usefull.

 

@kdawg: Always nice to improve. I'll contact you next week, Thanks.

 

 

Ric

 

Here is my current entries for my GFX cards.

           Device (PEG1) //<--GeForce 8800
           {
               Name (_ADR, 0x00010000) //<-- Important! Card address, different for every MOBO. Use gfxutil to find yours!
               Method (_PRW, 0, NotSerialized)
               {
                   Return (Package (0x02)
                   {
                       0x09, 
                       0x05
                   })
               }

               Device (GFX1) // <-- GeForce 8800GT
               {
                   Name (_ADR, Zero)
                   Name (_SUN, 0x0B)
                   Method (_DSM, 4, NotSerialized)
                   {
                       Store (Package (0x16)
                           {
                               "@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", //<-- NVCAP is unique for every card. Check yours.
                               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",  //<-- VRAM is unique for every card. Check yours.
                               Buffer (0x04)
                               {
                                   0x00, 0x00, 0x00, 0x20
                               }, 

                               "device_type",
                               Buffer (0x0D)
                               {
                                   "NVDA,GeForce"
                               }, 

                               "model", 
                               Buffer (0x17)
                               {
                                   "NVIDIA Geforce 8800 GT"
                               }, 

                               "rom-revision", 
                               Buffer (0x06)
                               {
                                   "3173a"
                               }
                           }, Local0)
                       DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                       Return (Local0)
                   }
               }
           }

           Device (PEG2) //<--GeForce 8500
           {
               Name (_ADR, 0x00060000) //<-- Important! Card address, different for every MOBO. Use gfxutil to find yours!
               Method (_PRW, 0, NotSerialized)
               {
                   Return (Package (0x02)
                   {
                       0x09, 
                       0x05
                   })
               }

               Device (GFX2) // <-- GeForce 8500GT
               {
                   Name (_ADR, Zero)
                   Name (_SUN, 0x0C)
                   Method (_DSM, 4, NotSerialized)
                   {
                       Store (Package (0x16)
                           {
                               "@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",  //<-- NVCAP is unique for every card. Check yours.
                               Buffer (0x18)
                               {
                                   /* 0000 */    0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 
                                   /* 0008 */    0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 
                                   /* 0010 */    0x00, 0x00, 0x00, 0x00
                               }, 

                               "VRAM,totalsize",  //<-- VRAM is unique for every card. Check yours.
                               Buffer (0x04)
                               {
                                   0x00, 0x00, 0x00, 0x10
                               }, 

                               "device_type",
                               Buffer (0x0D)
                               {
                                   "NVDA,GeForce"
                               }, 

                               "model", 
                               Buffer (0x17)
                               {
                                   "NVIDIA Geforce 8500 GT"
                               }, 

                               "rom-revision", 
                               Buffer (0x06)
                               {
                                   "3169a"
                               }
                           }, Local0)
                       DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                       Return (Local0)
                   }
               }
           }

You can even take out the _SUN entries as those are just cosmetic and only indicate what PCI slot the card occupies in System Profiler.

Link to comment
Share on other sites

Here is my current entries for my GFX cards.

 

 

"NVCAP", //<-- NVCAP is unique for every card. Check yours.

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", //<-- VRAM is unique for every card. Check yours.

Buffer (0x04)

{

0x00, 0x00, 0x00, 0x20

},

 

Guys, this is great information.Thanks. However, I have a question that is so basic that I'm a little embarased to ask, so forgive me if this is too dummy:

 

I'm curently using just EFI string for video and I'd like to follow the DSDT video injectin method discused here, so I was colecting the data needed to fill the DSDT (Nvcap andVRam total size) and I discovered that the information that IORegistry Explorer gives me is in a different format that the one used in this method, for example:IORegistryExplorer shows my NVCAP as:

 

<04 00 00 00 00 00 01 00 06 00 00 00 00 00 00 00 00 00 00 00>

 

but the format on the examples is like:

 

/* 0000 */ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00,

/* 0008 */ 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,

/* 0010 */ 0x00, 0x00, 0x00, 0x00

 

 

Could anybody give me some hint on this?

 

Thanks a lot! Again, sorry for this basic question!

 

 

Ric

Link to comment
Share on other sites

  • 2 weeks later...

Wow, I got my stuff working but what a journey! I was trying to get a PCIe card and PCI card working together.

(8600GT and 6200 respectively)

 

I tried the EFI String method above, didn't work those rounds; tried Kdawg's DSDT fixes but didn't have the right NVCAP codes (I assume)... found part of what I needed on this random Japanese site but it still didn't do the trick.

 

Ultimately, what worked for me was to put the PCIe card into the PEG2/2nd 8-lane slot and and leave the PCI card where it was...the EFI String method worked beautifully but I used these instructions from AquaMac:

 

http://aquamac.proboards.com/index.cgi?boa...&thread=569

 

Same idea as DigitalDJ's but he has links to PlistEditor and some other things that made the fixes a little more GUI (and n00b-proof ;) and it just helped me make sense of things. If you've worked your way through this thread, you're ready for that one :)

 

But the key was that I could only boot from PCI -- the secondary card in this case being PCI -- otherwise I would get failures, KPs, that kind of deal.

 

I also couldn't get both VGA and DVI working on my PCI card simultaneously... this was OK as I only have 3 monitors and 2 could be on the PCIe card. That was probably another NVCAP error on my part. But since I had a second PCIe card on hand (9600 GSO aka 8800GS), I figured I would try using both PCIe cards instead...this worked perfectly per the instructions but I still had to boot with PEG2 (2nd card) selected in BIOS.

 

So I came back here and used DigitalDJ's DSDT trick to modify and recompile my DSDT.dsl file and it worked! I was able to boot PEG from BIOS. However, it was NOT straightforward. I was getting compile errors on the DSDT.dsl file and had to add some more code to get the file to compile. Unusual because I'd compiled a dozen other DSDT.dsl files in the course of trying to fix this earlier and had not hit these particular errors. Go figure.

 

IF you get the compile errors I got (having to do with Local)-- and you'll have gone through quite a few steps before you get this far -- this link will be instructive, midway down the page... you'll know if you get the errors when you get them :)http://aserebln.blogspot.com/2009/07/20.html (it will help you fix the Local error and the WAK warning while you're at it)

 

But it worked... amazingly -- amazing to me -- both cards work and CI/QE are active on both, they both are showing the right stats, and I hot-swapped the two test monitors I'm using in each combination of the 4 ports and they worked... a couple swaps would produce static or weird artifacts but I would just redetect or reswap and they would come back fine.. and a reboot would have solved it too but I'm glad it appears to be a minor snag -- these monitors will never be unplugged/replugged once set so it's really irrelevant other than for testing.

 

Frankly, I am in awe... took hours and hours to figure out the right way to do the right thing but like so much of this, once you know exactly what to do, takes 5 minutes ;)

 

Puts the "insane" in "insanelymac"!

 

go team!

 

THANKS MUCH!

 

~roni

Link to comment
Share on other sites

Wow, I got my stuff working but what a journey! I was trying to get a PCIe card and PCI card working together.

(8600GT and 6200 respectively)

But it worked... amazingly -- amazing to me -- both cards work and CI/QE are active on both, t

 

~roni

 

 

In order to be helpfull for everyone here, could you post your system configuration and your DSDT for reference?

 

Thanks

 

 

Ric

Link to comment
Share on other sites

  • 2 weeks later...

Hi everyone,

like kdawg mentioned, I would like to use a patched DSDT file to get both my 9600GT cards to be recognized.

In order to do so I need to enter the device path of both cards in the (_ADR) entry in DSDT.dsl.

 

Since in my currents DSDT.dsl the cards are not being adressed I have to find the adress myself,

gfxutil gives me

DevicePath = PciRoot(0x1)/Pci(0x3,0x0)/Pci(0x0,0x0)/Pci(0x2,0x0)/Pci(0x0,0x0)

 

lspci -t gives me

		   +-03.0-[0000:01-04]----00.0-[0000:02-04]--+-00.0-[0000:03]--
		  |										 \-02.0-[0000:04]----00.0

 

However I need to enter an adress like

0x00010000

Could someone please explain how to extract the needed adress from the available information?Thanks in advance

Link to comment
Share on other sites

I downloaded the SL 32 and 64 bit NVinject.kext and just copied and paste the lines under NVCAP from my existing Leo NVinject.kext to look like this: (rightklick/show package content/Contents/Info.plist (open with textedit))

 

<data>

BAAAAAAAAQAGAAAAAAAAAAAAAAA=

</data>

<key>NVPM</key>

<data>

AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==

</data>

 

 

Gives me QE and everything working ok with my two noname Pcie 512mb 7300GS videocards.

 

My com.apple.boot.plist in extra looks like this (found it in a thread here, forgot which one sorry) :

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">

<dict>

<key>Kernel</key>

<string>mach_kernel</string>

 

<key>Kernel Flags</key>

<string>-v arch=x86 GraphicsEnabler=no</string>

<string>134C9A39-49EC-3EE5-85FD-2849F9E5734B</string>

<key>Timeout</key>

<string>1</string>

</dict>

</plist>

Link to comment
Share on other sites

  • 2 weeks later...

I'm at a simliar roadblock like dafart. I managed to get the portion of the walkthrough completed and have a triple monitor setup using the modified EFI strings. My challenge is now with the extra 9600GT introduced I no longer have a properly working DSDT.aml (remove the second card from PEG2) and then sleep, restart and shutdown work again.

 

I tried adding the lines of code as digitaldj suggested but when I go to compile it with DSDT patcher it gives me errors about one of the lines of code that was added. Can someone provide more detailed instructions on what to do with those lines of code?

Link to comment
Share on other sites

  • 3 weeks later...

kdawg, thanks for your DSDT file. I kepte editing mine and the EFI scripts with no go.

 

I took yours, made the VRAM changes and the Card name changes and all was well.

 

WHat did you do for an audio fix? I have the EP45-DS3p as well and no audio on the MOB. Not a big deal as I have external Audio interfaces, but it would be nice, when I upgrade to my COre i7 board to pass this mobo along to my wife...

Link to comment
Share on other sites

  • 3 weeks later...
Here is my current entries for my GFX cards.

Device (PEG1) //<--GeForce 8800
{
Name (_ADR, 0x00010000) //<-- Important! Card address, different for every MOBO. Use gfxutil to find yours!
Method (_PRW, 0, NotSerialized)
{
Return (Package (0x02)
{
0x09, 
0x05
})
}

Device (GFX1) // <-- GeForce 8800GT
{
Name (_ADR, Zero)
Name (_SUN, 0x0B)
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x16)
{
"@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", //<-- NVCAP is unique for every card. Check yours.
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", //<-- VRAM is unique for every card. Check yours.
Buffer (0x04)
{
0x00, 0x00, 0x00, 0x20
}, 

"device_type",
Buffer (0x0D)
{
"NVDA,GeForce"
}, 

"model", 
Buffer (0x17)
{
"NVIDIA Geforce 8800 GT"
}, 

"rom-revision", 
Buffer (0x06)
{
"3173a"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
}

Device (PEG2) //<--GeForce 8500
{
Name (_ADR, 0x00060000) //<-- Important! Card address, different for every MOBO. Use gfxutil to find yours!
Method (_PRW, 0, NotSerialized)
{
Return (Package (0x02)
{
0x09, 
0x05
})
}

Device (GFX2) // <-- GeForce 8500GT
{
Name (_ADR, Zero)
Name (_SUN, 0x0C)
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x16)
{
"@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", //<-- NVCAP is unique for every card. Check yours.
Buffer (0x18)
{
/* 0000 */ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 
/* 0008 */ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 
/* 0010 */ 0x00, 0x00, 0x00, 0x00
}, 

"VRAM,totalsize", //<-- VRAM is unique for every card. Check yours.
Buffer (0x04)
{
0x00, 0x00, 0x00, 0x10
}, 

"device_type",
Buffer (0x0D)
{
"NVDA,GeForce"
}, 

"model", 
Buffer (0x17)
{
"NVIDIA Geforce 8500 GT"
}, 

"rom-revision", 
Buffer (0x06)
{
"3169a"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
}

You can even take out the _SUN entries as those are just cosmetic and only indicate what PCI slot the card occupies in System Profiler.

 

kdawg, is sleep/wake working on your Dual Videocard Setup?

I've got mine is only working with one Videocard.

 

Here's my DSDT entry:

           Device (PEG1)
           {
               Device (GFX1)
               {
                   Name (_ADR, Zero)
                   Name (_SUN, One)
                   Method (_PRW, 0, NotSerialized)
                   {
                       Return (GPRW (0x0B, 0x04))
                   }

                   Method (_DSM, 4, NotSerialized)
                   {
                       Store (Package (0x1C)       // 0x16 + 6 = 0x1C
                           {
                               "@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
                               }, 

                               "device_type", 
                               Buffer (0x0C)
                               {
                                   "NVDA,Parent"
                               }, 

                               "VRAM,totalsize", 
                               Buffer (0x04)
                               {
                                   0x00, 0x00, 0x00, 0x30
                               }, 

                               "built-in", 
                               Buffer (0x01)
                               {
                                   0x00
                               }, 

                               "device_type", 
                               Buffer (0x0D)
                               {
                                   "NVDA,GeForce"
                               }, 

                               "model", 
                               Buffer (0x18)
                               {
                                   "nVidia GeForce 8800 GTX"
                               }, 

                               "rm_multiboard_capable", 
                               Buffer (0x04)
                               {
                                   0x00, 0x00, 0x00, 0x20
                               }, 

                               "rom-revision", 
                               Buffer (0x26)
                               {
                                   "nVidia GeForce 8800 GTX OpenGL Engine"
                               }
                           }, Local0)
                       MCDP (Arg2, RefOf (Local0))
                       Return (Local0)
                   }
               }

               Name (_ADR, 0x00010000)
               Method (_PRW, 0, NotSerialized)
               {
                   Return (GPRW (0x09, 0x04))
               }

               Method (_PRT, 0, NotSerialized)
               {
                   If (PICM)
                   {
                       Return (AR02)
                   }

                   Return (PR02)
               }
           }

           Device (PEG2)
           {
               Device (GFX2)
               {
                   Name (_ADR, Zero)
                   Name (_SUN, One)
                   Method (_PRW, 0, NotSerialized)
                   {
                       Return (GPRW (0x05, 0x04))
                   }

                   Method (_DSM, 4, NotSerialized)
                   {
                       Store (Package (0x1C)       // 0x16 + 6 = 0x1C
                           {
                               "@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
                               }, 

                               "device_type", 
                               Buffer (0x0B)
                               {
                                   "NVDA,Child"
                               }, 

                               "VRAM,totalsize", 
                               Buffer (0x04)
                               {
                                   0x00, 0x00, 0x00, 0x30
                               }, 

                               "built-in", 
                               Buffer (0x01)
                               {
                                   0x00
                               }, 

                               "device_type", 
                               Buffer (0x0D)
                               {
                                   "NVDA,GeForce"
                               }, 

                               "model", 
                               Buffer (0x18)
                               {
                                   "nVidia GeForce 8800 GTX"
                               }, 

                               "rm_multiboard_capable", 
                               Buffer (0x04)
                               {
                                   0x00, 0x00, 0x00, 0x20
                               }, 

                               "rom-revision", 
                               Buffer (0x26)
                               {
                                   "nVidia GeForce 8800 GTX OpenGL Engine"
                               }
                           }, Local0)
                       MCDP (Arg2, RefOf (Local0))
                       Return (Local0)
                   }
               }

               Name (_ADR, 0x00060000)
               Method (_PRW, 0, NotSerialized)
               {
                   Return (GPRW (0x09, 0x04))
               }

               Method (_PRT, 0, NotSerialized)
               {
                   If (PICM)
                   {
                       Return (AR03)
                   }

                   Return (PR03)
               }
           }

Link to comment
Share on other sites

Hello,

 

how to get an nvidia and an ati card working at the same time?

I have a 9800gt and QE/CI working in SL with DSDT.

 

Well I have a additional hd4670 and a third monitor too.

 

I managed to get the ATI card working, when placed in PCIe-1 slot.

 

I guess I could just put the nvidia in PCIe-2 (only x4), and edit DSDT from pci to peg.

 

But I would like to keep the nvidia in x16 slot, as it is much faster.

 

Additional I am sceptical, as i managed to get th ATI working only with GraphicsEnabler kernel setting. I guess that could led to the point that the nvidia will not be "activated" ??

 

Is there any way to get ATI cards working over DSDT?

 

Regards

Link to comment
Share on other sites

I have yet to find a decent way to get both my graphics cards functioning using this method.

 

My particular mainboard (a i680 based) won't allow a graphics card to be present in the second or third graphics slots without one in the first. I can't utilize gfxutil to extrapolate a pciroot address that will work in the boot.plist.

 

Both cards work.

 

I have no clue exactly what info i need to pull out of ioreg / ioregistryexplorer to create the pciroot address that would point at my motherboard's 2nd graphics slot.

 

gfxutil only seems to return a address for the current active display.

 

or maybe i'm overlooking something simple. . hmm :/

 

EDIT : still don't have it working, but after a unrelated crash and subsequent setup of a fresh 10.6 install i discovered that my existing dsdt or some other factor was causing ioreg and gfxutil to return a incorrect pci address for my first video card. Graphics Enabler wasn't working with that previous setup (although EFI strings for a single card was working even with the incorrect pciroot address string).

Link to comment
Share on other sites

I'm having some issues getting 2 cards up and running on a P55-UD3R. I've tried every possible combination of EFI strings, BIOS PEG settings, and PCIe slots. I have a 9800GT and a 7300GT card from a "real" mac. I don't really care about the performance aside from just general desktop usage, but I'm really after the 3+ simultaneous displays.

 

Here's the XML I'm trying:

 

<?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>PciRoot(0x1)/Pci(0x1c,0x2)/Pci(0x0,0x0)</key>
	<dict>
	<key>built-in</key>
	<string>0x01</string>
	</dict>

   <key>PciRoot(0x1)/Pci(0x3,0x0)/Pci(0x0,0x0)</key>
       <dict>
       <key>@0,AAPL,boot-display</key>
       <data></data>
       <key>@0,can-hot-plug</key>
       <data></data>
       <key>@0,compatible</key>
       <string>NVDA,NVMac</string>
       <key>@0,connector-type</key>
       <data>AAAABA==</data>
       <key>@0,device_type</key>
       <string>display</string>
       <key>@0,display-connect-flags</key>
       <data>AAAAAA==</data>
       <key>@0,name</key>
       <string>NVDA,Display-A</string>
       <key>@1,AAPL,boot-display</key>
       <data></data>
       <key>@1,can-hot-plug</key>
       <data></data>
       <key>@1,compatible</key>
       <string>NVDA,NVMac</string>
       <key>@1,connector-type</key>
       <data>AAAABA==</data>
       <key>@1,device_type</key>
       <string>display</string>
       <key>@1,display-connect-flags</key>
       <data>AAAAAA==</data>
       <key>@1,name</key>
       <string>NVDA,Display-B</string>
       <key>NVCAP</key>
       <data>BAAAAAAAAwAMAAAAAAAABwAAAAA=</data>
       <key>NVPM</key>
       <data>AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==</data>
       <key>built-in</key>
       <data>AA==</data>
       <key>VRAM,totalsize</key>
       <string>0x14000000</string>
       <key>device_type</key>
       <string>NVDA,GeForce</string>
       <key>model</key>
       <string>NVIDIA GeForce 9800 GTX</string>
       <key>name</key>
       <string>NVDA,Parent</string>
       <key>rm_multiboard_capable</key>
       <data>AAAAAQ==</data>
       <key>rom-revision</key>
       <string>NVIDIA GeForce 9800 GTX OpenGL Engine</string>
       </dict>
   <key>PciRoot(0x1)/Pci(0x1c,0x4)/Pci(0x0,0x0)</key>
       <dict>
       <key>@0,AAPL,boot-display</key>
       <data></data>
       <key>@0,can-hot-plug</key>
       <data></data>
       <key>@0,compatible</key>
       <string>NVDA,NVMac</string>
       <key>@0,connector-type</key>
       <data>AAAABA==</data>
       <key>@0,device_type</key>
       <string>display</string>
       <key>@0,display-connect-flags</key>
       <data>AAAAAA==</data>
       <key>@0,name</key>
       <string>NVDA,Display-A</string>
       <key>@1,AAPL,boot-display</key>
       <data></data>
       <key>@1,can-hot-plug</key>
       <data></data>
       <key>@1,compatible</key>
       <string>NVDA,NVMac</string>
       <key>@1,connector-type</key>
       <data>AAAABA==</data>
       <key>@1,device_type</key>
       <string>display</string>
       <key>@1,display-connect-flags</key>
       <data>AAAAAA==</data>
       <key>@1,name</key>
       <string>NVDA,Display-B</string>
       <key>NVCAP</key>
       <data>BAAAAAAAAwAMAAAAAAAABwAAAAA=</data>
       <key>NVPM</key>
       <data>AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==</data>
       <key>built-in</key>
       <data>AA==</data>
       <key>VRAM,totalsize</key>
       <string>0x10000000</string>
       <key>device_type</key>
       <string>NVDA,GeForce</string>
       <key>model</key>
       <string>NVIDIA GeForce 7300 GT</string>
       <key>name</key>
       <string>NVDA,Parent</string>
       <key>rm_multiboard_capable</key>
       <data>AAAAAQ==</data>
       <key>rom-revision</key>
       <string>NVIDIA GeForce 7300 GT</string>
       </dict>
   </dict>
</plist>

 

Nothing looks out of place to me - anyone?

Link to comment
Share on other sites

  • 3 weeks later...

hi phantom8,

 

so how exactly did you disable the secondary graphics card?

 

marc5

 

Did you check the "/var/log/kernel.log" file?

 

BTW, I've successfully disabled my Secondary ATI card and my OSX boots normal. No need to wait for 40-50 seconds.

Link to comment
Share on other sites

  • 3 weeks later...

Kdawg is a genius!

 

Copied the code from your post into my Extra/DSDT.aml file and edited the ram values and card name values. Rebooted and both my cards were working instantly with QE/CI - I can now use up to four monitors and it's all thanks to you. I looked at a couple of other guides and their solutions were more complicated and did not work. If anyone is trying to get both of their cards going for multiple displays seriously just copy that code into your DSDT - you will not regret it.

 

Kuddos!!

Link to comment
Share on other sites

Maybe someone can help...

 

I got both cards working with a 7900GTX in my primary, and a 7600GS in my secondary.

 

I followed a guide and used the EFI strings/DSDT patch method and made sure that my root devices were correct and all that. My bios is set to PEG1, and when it posts, everything is on the monitors connected to my 7900GTX like it should. The problem is, when I boot into OSX, it makes my 7600GS the "primary" video card and puts the dock and menu bar on the monitor hooked up to the 7600GS.

 

Is there a way I can change the "primary monitor" inside OSX? or what do it have to do?

 

Any help greatly appretiated!

Thank :)

Link to comment
Share on other sites

open up the system utilities/settings (forgot the english name for it probably down in your dock) open displays and drag/move around your monitors and/or the top menu/bar (forgot this name too sorry hehe) to what ever position/monitor you want it on. Hopefully next time you boot up it will stay the same if not you just re do it everytime, it´s a quick fix.

Link to comment
Share on other sites

Well that works, but like you said, it defaults back after a restart. It also changes the resolution of the monitors hooked up to the 7600GS to some wacky ones that look horrible.

 

Does anyone know of a way to just perminently make my resolutions at 1280 x 1024? And also perminently make it so it always puts the dock on my monitor hooked up to my 7900GTX?

Link to comment
Share on other sites

 Share

×
×
  • Create New...