Contribute
Register

[Guide] Disabling discrete graphics in dual-GPU laptops

Joined
Nov 10, 2011
Messages
181
Motherboard
Gigabyte Z77X-UP5-TH
CPU
Intel i7 3770
Graphics
Powercolor Radeon R9 270 2gb
Mobile Phone
Android
I followed the guide and such but my nvidia card still shows up in the system profiler.

Due to my acpi path being the same as the repo patch, I just used the unmodified repo patch for the _ini on ssdt7 and uncommented the external line as the _off method was in ssdt8.
There was nothing referring to the EC so I didn't touch the DSDT. What did I miss?
 

Attachments

RehabMan

Moderator
Joined
May 3, 2012
Messages
191,927
Motherboard
Intel DH67BL
CPU
Core i7-2600K
Graphics
Intel HD 3000
Mac
MacBook Air
Mobile Phone
iOS
I followed the guide and such but my nvidia card still shows up in the system profiler.

Due to my acpi path being the same as the repo patch, I just used the unmodified repo patch for the _ini on ssdt7 and uncommented the external line as the _off method was in ssdt8.
There was nothing referring to the EC so I didn't touch the DSDT. What did I miss?
_INI calls _OFF, _OFF calls SGOF. The first thing SGOF does is do some EC related things (TDRF writes to EC region TDRW) likely to abort. EC related code should be removed from SGOF and relocated to _REG as described in the guide.
 
Joined
Nov 10, 2011
Messages
181
Motherboard
Gigabyte Z77X-UP5-TH
CPU
Intel i7 3770
Graphics
Powercolor Radeon R9 270 2gb
Mobile Phone
Android
_INI calls _OFF, _OFF calls SGOF. The first thing SGOF does is do some EC related things (TDRF writes to EC region TDRW) likely to abort. EC related code should be removed from SGOF and relocated to _REG as described in the guide.
Found it and followed the guide to relocate it to the _REG. The nvidia card is still present in the system profiler though. I couldn't find any other weird methods leading to the EC except one in SGON which I thought is the opposite of SGOF so I didn't touch it even though it is also a TDRF method
 

Attachments

RehabMan

Moderator
Joined
May 3, 2012
Messages
191,927
Motherboard
Intel DH67BL
CPU
Core i7-2600K
Graphics
Intel HD 3000
Mac
MacBook Air
Mobile Phone
iOS
Found it and followed the guide to relocate it to the _REG. The nvidia card is still present in the system profiler though. I couldn't find any other weird methods leading to the EC except one in SGON which I thought is the opposite of SGOF so I didn't touch it even though it is also a TDRF method
Use ACPIDebug to see which methods are being reached.

You could also try calling _OFF from _REG (instead of _INI).

Make sure you didn't include any dynamic tables in ACPI/patched.
 
Joined
Nov 10, 2011
Messages
181
Motherboard
Gigabyte Z77X-UP5-TH
CPU
Intel i7 3770
Graphics
Powercolor Radeon R9 270 2gb
Mobile Phone
Android
I do not have any dynamic tables present in clover partition. It appears that the methods are being called during boot
 

Attachments

RehabMan

Moderator
Joined
May 3, 2012
Messages
191,927
Motherboard
Intel DH67BL
CPU
Core i7-2600K
Graphics
Intel HD 3000
Mac
MacBook Air
Mobile Phone
iOS
I do not have any dynamic tables present in clover partition. It appears that the methods are being called during boot
If they are being called and not working, I can think of a couple of causes:

- SystemMemory addresses in in patched files not correlated with real addresses in native. Fix: make sure your patched files are based on recent extract with current BIOS version, options, hardware config.

- Something else, such as methods are checking host operating system version. Make sure you have patched DSDT/etc as described in the guide. From my quick look at your DSDT (in patchmatic output), it does not appear you followed the guide.... For example there is no case for _OSI("Darwin").

Also, further debugging into the code path may be needed.

You could also try calling _PS3 instead of _OFF (as mentioned in post #1).
 
Joined
Nov 20, 2011
Messages
31
Motherboard
Dell Precision M4800 (Clover)
CPU
i7-4800mq / Chipset QM87
Graphics
nVidia Quadro K1100m 2GB
Mobile Phone
iOS
Assuming there are not additional SSDTs that may have your _INI...

Since you have no _INI for _SB.PCI0.PEG0.VID, create one.

Add to SSDT-6, just after _OFF:
Code:
Method(_INI) 
{
   _OFF()
}
Hi, now my patched ACPI tables are without errors and also I add to SSDT-6 _INI with _OFF.

But, when I enable OPTIMUS in BIOS to enable Intel HD3000, I got Kernel Panic, see snapshot.
When I disable OPTIMUS to run only nVidia Quadro 2000M, it looks like booting properly, but screen is black after 5 seconds because nVidia is disabled by patched SSDT. So I would like to welcome another tips and tricks.

thanks!
 

Attachments

RehabMan

Moderator
Joined
May 3, 2012
Messages
191,927
Motherboard
Intel DH67BL
CPU
Core i7-2600K
Graphics
Intel HD 3000
Mac
MacBook Air
Mobile Phone
iOS
Hi, now my patched ACPI tables are without errors and also I add to SSDT-6 _INI with _OFF.

But, when I enable OPTIMUS in BIOS to enable Intel HD3000, I got Kernel Panic, see snapshot.
When I disable OPTIMUS to run only nVidia Quadro 2000M, it looks like booting properly, but screen is black after 5 seconds because nVidia is disabled by patched SSDT. So I would like to welcome another tips and tricks.

thanks!
Which bootloader?

Please provide complete details in your profile/signature
(Profile/Settings link in upper right corner of this site)

System: manufacturer/model + bootloader(Clover/Chameleon/Chimera)
CPU: detailed CPU model + motherboard chipset
Graphics: all graphics devices + laptop internal screen resolution

For example, typical Ivy laptop:
System: HP ProBook 4540s (Clover)
CPU: i5-3320m/HM76
Graphics: HD4000, 1366x768

Use CPU-Z on Windows to find CPU (Core iX-xxx) and motherboard chipset (HMxx), and graphics capabilities. For a laptop, these details are important and affect critical installation procedures.
 
Joined
Nov 10, 2011
Messages
181
Motherboard
Gigabyte Z77X-UP5-TH
CPU
Intel i7 3770
Graphics
Powercolor Radeon R9 270 2gb
Mobile Phone
Android
If they are being called and not working, I can think of a couple of causes:

- SystemMemory addresses in in patched files not correlated with real addresses in native. Fix: make sure your patched files are based on recent extract with current BIOS version, options, hardware config.

- Something else, such as methods are checking host operating system version. Make sure you have patched DSDT/etc as described in the guide. From my quick look at your DSDT (in patchmatic output), it does not appear you followed the guide.... For example there is no case for _OSI("Darwin").

Also, further debugging into the code path may be needed.

You could also try calling _PS3 instead of _OFF (as mentioned in post #1).
I tried option one and just re-extracted, decompiled, patched, etc and it seems to be disabled now. Not really sure what the difference is between the new extractions and the old ones.....but I think it works! Thanks!
 

Attachments

RehabMan

Moderator
Joined
May 3, 2012
Messages
191,927
Motherboard
Intel DH67BL
CPU
Core i7-2600K
Graphics
Intel HD 3000
Mac
MacBook Air
Mobile Phone
iOS
I tried option one and just re-extracted, decompiled, patched, etc and it seems to be disabled now. Not really sure what the difference is between the new extractions and the old ones.....but I think it works! Thanks!
Probably SystemMemory addresses changed due to BIOS upgrade, BIOS option changes, or hardware changes (eg. amount of RAM installed).

You have to be extremely careful about always keeping patched files in sync with native.

Nice to hear you have found success. This is one of the more frustrating patches to accomplish because of its complex simplicity (after all, it really is only a one line change).
 
Top