Contribute
Register

[Guide] Disabling discrete graphics in dual-GPU laptops

Hi,

I tried to patch DSDT, SSDT to disable nVidia Quadro 2000M on laptop. I read your guide, but somewhere I make a mistake. I have poor experiencies with patching ACPI tables, so could you help me with them?

If I try to test them, my system OSX 10.9.5 wont boot using Chameleon and Optimus Enabled in Bios. I post here my tables: Fresh extracted using F4 Clover method and patched with nVidia disabled, but got kernel panic after testing.
 

Attachments

  • ACPI original extracted.zip
    21.4 KB · Views: 178
  • ACPI patched nvidia disabled.zip
    17.5 KB · Views: 182
  • IMG_0005.jpg
    IMG_0005.jpg
    875.1 KB · Views: 482
Hi,

I tried to patch DSDT, SSDT to disable nVidia Quadro 2000M on laptop. I read your guide, but somewhere I make a mistake. I have poor experiencies with patching ACPI tables, so could you help me with them?

If I try to test them, my system OSX 10.9.5 wont boot using Chameleon and Optimus Enabled in Bios. I post here my tables: Fresh extracted using F4 Clover method and patched with nVidia disabled, but got kernel panic after testing.

No files attached.

Read post #1 "Problem reporting".
 
Hi,

I tried to patch DSDT, SSDT to disable nVidia Quadro 2000M on laptop. I read your guide, but somewhere I make a mistake. I have poor experiencies with patching ACPI tables, so could you help me with them?

If I try to test them, my system OSX 10.9.5 wont boot using Chameleon and Optimus Enabled in Bios. I post here my tables: Fresh extracted using F4 Clover method and patched with nVidia disabled, but got kernel panic after testing.

Patches are incorrect. You should NOT rename _SB.PCI0.PEG0.VID -> IGPU.

Also would need to see your Clover config.plist.

No chance of PEGP._OFF working (from _REG) as your discrete device is originally at _SB.PCI0.PEG0.VID (renamed to _SB.PCI0.PEG0.IGPU).
 
Patches are incorrect. You should NOT rename _SB.PCI0.PEG0.VID -> IGPU.

Also would need to see your Clover config.plist.

No chance of PEGP._OFF working (from _REG) as your discrete device is originally at _SB.PCI0.PEG0.VID (renamed to _SB.PCI0.PEG0.IGPU).

OK, so I do not replace names VID to IGPU in DSDT and SSDT-6?

I posted clover config file and kext 10.10 in Clover
 

Attachments

  • 10.10.zip
    813.9 KB · Views: 198
  • config.plist.zip
    1.7 KB · Views: 198
OK, so I do not replace names VID to IGPU in DSDT and SSDT-6?

Only _SB.PCI0.VID should be renamed to IGPU.
_SB.PCI0.PEGP.VID should be left as-is.

There is "Rename PCI0.VID to PCI0.IGPU", so you should start with that. It will get some of the work done for you. But it will miss a few of them as it is not possible to have an automatic solution when both names are VID. Fix the remaining ones manually.
 
Only _SB.PCI0.VID should be renamed to IGPU.
_SB.PCI0.PEGP.VID should be left as-is.

There is "Rename PCI0.VID to PCI0.IGPU", so you should start with that. It will get some of the work done for you. But it will miss a few of them as it is not possible to have an automatic solution when both names are VID. Fix the remaining ones manually.

OK, I rename VID to IGPU once again in DSDT, some from laptop patch, some names manualy, as you write. And used some patches from your guide.
But in DSDT.dsl I get 1 error, so I can't comile it for testing.
8405, 4090, Existing object has invalid type for Scope operator (_SB.PCI0.PEG0.VID [Untyped])

here are patched DSDT.dsl and SSDT.dsl
 

Attachments

  • nvidia disable.zip
    37.7 KB · Views: 220
OK, I rename VID to IGPU once again in DSDT, some from laptop patch, some names manualy, as you write. And used some patches from your guide.
But in DSDT.dsl I get 1 error, so I can't comile it for testing.
8405, 4090, Existing object has invalid type for Scope operator (_SB.PCI0.PEG0.VID [Untyped])

here are patched DSDT.dsl and SSDT.dsl

You made renames from VID to IGPU that are not correct. Don't change any VID that is referring to _SB.PCI0.PEGP.VID. Only the ones that are _SB.PCI0.PEG0.VID.
 
You made renames from VID to IGPU that are not correct. Don't change any VID that is referring to _SB.PCI0.PEGP.VID. Only the ones that are _SB.PCI0.PEG0.VID.

Hi, now DSDT is compiled without Errors. I use patch to disable nVidia GPU in DSDT, look at line no. 6080

But have one problem:
- If I enable Optimus in BIOS to use IntelHD3000+nVidia Quadro 2000M, I got kernel panic with AppleIntelCPUPowermanagement.kext
- If I disable Optimus in BIOS to use only nVidia Quadro 2000M, my system boot but get black screen.
 

Attachments

  • DSDT.dsl.zip
    30.6 KB · Views: 194
Hi, now DSDT is compiled without Errors. I use patch to disable nVidia GPU in DSDT, look at line no. 6080

But have one problem:
- If I enable Optimus in BIOS to use IntelHD3000+nVidia Quadro 2000M, I got kernel panic with AppleIntelCPUPowermanagement.kext
- If I disable Optimus in BIOS to use only nVidia Quadro 2000M, my system boot but get black screen.

The patch is wrong.

- Your _OFF is at _SB.PCI0.PEG0.VID_OFF, the patch is calling \_SB.PCI0.PEG0.PEGP._OFF (which doesn't exist).

- It is best to call _OFF from _INI as described in post #1. Unless it accesses the EC.
 
The patch is wrong.

- Your _OFF is at _SB.PCI0.PEG0.VID_OFF, the patch is calling \_SB.PCI0.PEG0.PEGP._OFF (which doesn't exist).

- It is best to call _OFF from _INI as described in post #1. Unless it accesses the EC.

OK, there are ACPI tables, where I used some patched to correct it again, but finaly patch to disable discrete GPU is still missing and I don't know how to do.

if I search code:
grep -l Method.*_OFF *.dsl
got this: SSDT-6.dsl

if I search code:
grep -l Method.*_INI *.dsl
got this: DSDT.dsl

But the lines in acpi tables are different as in your GUIDE in post no. 1 and I am at my wit's end. So I appreciative yout help with it.

THANKS
 

Attachments

  • nvidia disable.zip
    37.6 KB · Views: 201
Back
Top