Contribute
Register

[Guide] Disabling discrete graphics in dual-GPU laptops

Joined
Dec 3, 2020
Messages
1
Motherboard
Intel® H170 ( Zen AiO Pro Z240IC )
CPU
Intel® Core™ i7 6700T
Graphics
INTEL UHD630 / NVIDIA® GeForce GTX960M 4 ГБ
Hi All

I'm trying to make things real fot ASUS AIO PRO 240IC
I'm able to install using Intel inject but get no more 31 Mb VRAM at all

Would you please guys be so kind to help to get it real.

I can't find _INI for _SB.PCI0.PEG0.PEGP
Just _ON and _OFF

So what should I do to disable dGPU
Is it should be just as easy as add

Method(_INI) { _OFF() }

to SSDT-8-OptTabl.dsl ?

Is it worth in terms of getting more VRAM at the end?
Now I'm stuck on IOConsoleUsers: gIOScreenLockState 3, hs 0, bs 0, in case Intel injecting using pseudo id is off

I'm following with this great manual ( thnx a lot, sir ) https://www.tonymacx86.com/threads/guide-booting-the-os-x-installer-on-laptops-with-clover.148093/

Thnx
 

Attachments

  • DSDT.dsl
    1.1 MB · Views: 55
  • SSDT-8-OptTabl.dsl
    46.6 KB · Views: 42
Joined
Jun 17, 2011
Messages
35
Motherboard
Acer V3-572 Predator
CPU
Core i5
Graphics
HD 630, 1920x1080
Mac
  1. MacBook Pro
Mobile Phone
  1. Android
Thanks @RehabMan for the great guide and support.
I wanted to point to a nice and simple method in the OpenCore guide, that seems to be the way to go now:


By adding the property as described there, I successfully blocked my Nvidia GPU which made sleep work on my laptop.
 
Joined
Feb 8, 2021
Messages
1
Motherboard
mbp
CPU
i7
Graphics
dual amd intel
Hi.
@vgerris, is this guide for AMD based mbp 2011 17'' as well? I see the OpenCore has many limitations but I am not sure. What is your machine you used this on?
Does anybody knows what does this mean? This is in the guide. How do I disable it?
CSM must be off in the BIOS for the spoofing to work correctly, especially on AMD CPU based systems.
 
Joined
Jun 15, 2012
Messages
20
Motherboard
<< need model # >> See Forum Rules !!
CPU
<< need model # >> See Forum Rules !!
Graphics
<< need model # >> See Forum Rules !!
Thanks @RehabMan for the great guide and support.
I wanted to point to a nice and simple method in the OpenCore guide, that seems to be the way to go now:


By adding the property as described there, I successfully blocked my Nvidia GPU which made sleep work on my laptop.
Which one of the three methods you used? I am using the boot-arg one, but my battery still draining so quick!
 
Joined
Jun 17, 2011
Messages
35
Motherboard
Acer V3-572 Predator
CPU
Core i5
Graphics
HD 630, 1920x1080
Mac
  1. MacBook Pro
Mobile Phone
  1. Android
@jdran not sure what you mean, this is not for macs.
@Yousif I used what I linked to : device properties in config.plist.
Make sure your card does not show up under graphics, it might not be properly disabled.
Follow the guide and verify, good luck
 
Joined
Aug 30, 2018
Messages
2
Motherboard
Lenovo Ideapad Gaming 3i + OC 7.0
CPU
i5 10300H
Graphics
UHD 630
Mobile Phone
  1. Android
Hello Everyone

I need help for opencore bootloader ssdt hotpatch to disable gpu
this is my gpu path : SB.PCI0.PEG0.PEGP
I found _OFF

Scope (\_SB.PCI0.PEG0.PEGP)
{
Method (_ON, 0, Serialized) // _ON_: Power On
{
\_SB.PCI0.PGON (Zero)
If ((\_SB.PCI0.DGPV != 0x10DE))
{
Notify (\_SB.PCI0.PEG0, Zero)
}
}

Method (_OFF, 0, Serialized) // _OFF: Power Off
{
\_SB.PCI0.PGOF (Zero)
If ((\_SB.PCI0.DGPV != 0x10DE))
{
Notify (\_SB.PCI0.PEG0, Zero)
}
}

Method (SGPO, 4, Serialized)
{
If ((Arg2 == Zero))
{
Arg3 = ~Arg3
Arg3 &= One
}

If ((SGGP == One))
{
If (CondRefOf (\_SB.SGOV))
{
\_SB.SGOV (Arg1, Arg3)
}
}
}
}

_INI

Method (_INI, 0, NotSerialized) // _INI: Initialize
{
If (((SGMD == 0x03) && (IGDS != Zero)))
{
IGDS = Zero
}

\_SB.SHPO (FBEN, One)
\_SB.SHPO (ENVT, One)
\_SB.SPC0 (FBEN, ((\_SB.GPC0 (FBEN) & 0xFFFFF0FF) | 0x0100))
\_SB.SPC0 (ENVT, ((\_SB.GPC0 (ENVT) & 0xFFFFF0FE) | 0x0201))
}
Method PGOF
Method (PGOF, 1, Serialized)
{
PIOF = Arg0
If ((PIOF == Zero))
{
If ((SGGP == Zero))
{
Return (Zero)
}
}
ElseIf ((PIOF == One))
{
If ((P1GP == Zero))
{
Return (Zero)
}
}
ElseIf ((PIOF == 0x02))
{
If ((P2GP == Zero))
{
Return (Zero)
}
}

PEBA = \XBAS
PDEV = GDEV (PIOF)
PFUN = GFUN (PIOF)
If ((\_SB.GGOV (0x03060000) == Zero))
{
Return (Zero)
}

If ((\_SB.PCI0.DGPV == 0x10DE))
{
\_SB.PCI0.PEG0.PEGP.LTRE = \_SB.PCI0.PEG0.LREN
}

If ((Arg0 == Zero))
{
ELC0 = LCT0
H0VI = S0VI
H0DI = S0DI
ECP0 = LCP0
}
ElseIf ((Arg0 == One))
{
ELC1 = LCT1
H1VI = S1VI
H1DI = S1DI
ECP1 = LCP1
}
ElseIf ((Arg0 == 0x02))
{
ELC2 = LCT2
H2VI = S2VI
H2DI = S2DI
ECP2 = LCP2
}

\_SB.PCI0.PEG0.SAVR ()
RTDS (PIOF)
If ((PBGE != Zero))
{
If (SBDL (PIOF))
{
MBDL = GMXB (PIOF)
PDUB (PIOF, MBDL)
}
}

PGSC (Arg0, Zero)
If ((Arg0 == Zero))
{
Divide (\_SB.PCI0.PEG0.LNRD, 0x03E8, Local0, Local1)
Sleep (Local1)
}
ElseIf ((Arg0 == One))
{
Divide (\_SB.PCI0.PEG1.LNRD, 0x03E8, Local0, Local1)
Sleep (Local1)
}
ElseIf ((Arg0 == 0x02))
{
Divide (\_SB.PCI0.PEG2.LNRD, 0x03E8, Local0, Local1)
Sleep (Local1)
}

GPPR (PIOF, Zero)
DIWK (PIOF)
Return (Zero)
}
_OFF method on Scope SB.PCI0.PEG0
Method (_OFF, 0, Serialized) // _OFF: Power Off
{
If ((RCM1 (0x67) == 0x67))
{
If ((RCM1 (0x69) == 0x69))
{
HWA1 |= 0x30000000
HWA3 |= 0x30000000
}
ElseIf ((RCM1 (0x68) == 0x68))
{
HWA2 |= 0x30000000
HWA4 |= 0x30000000
}
}

If (\_SB.PCI0.LPCB.EC0.ECAV)
{
If ((Acquire (\_SB.PCI0.LPCB.EC0.LFCM, 0xA000) == Zero))
{
\_SB.PCI0.LPCB.EC0.GPOF = One
Release (\_SB.PCI0.LPCB.EC0.LFCM)
}
}

If ((Acquire (\_SB.PCI0.LPCB.EC0.HGCT, 0xA000) == Zero))
{
If ((OSYS > 0x07D9))
{
P8XH (Zero, 0xDF)
If ((\_SB.PCI0.DGPV == 0x10DE))
{
If (\_SB.PCI0.LPCB.EC0.ECAV)
{
If ((Acquire (\_SB.PCI0.LPCB.EC0.LFCM, 0xA000) == Zero))
{
\_SB.PCI0.LPCB.EC0.GATY = Zero
Sleep (0x0A)
Release (\_SB.PCI0.LPCB.EC0.LFCM)
}
}

If ((\_SB.PCI0.TDGC == One))
{
CreateField (\_SB.PCI0.TGPC, Zero, 0x03, GUPC)
If ((ToInteger (GUPC) == One))
{
\_SB.PCI0.GC6I ()
}
ElseIf ((ToInteger (GUPC) == 0x02))
{
\_SB.PCI0.GC6I ()
}

_STA = Zero
}
Else
{
PGOF (Zero)
_STA = Zero
}
}
Else
{
PGOF (Zero)
_STA = Zero
}
}

Release (\_SB.PCI0.LPCB.EC0.HGCT)
}

If (\_SB.PCI0.LPCB.EC0.ECAV)
{
If ((Acquire (\_SB.PCI0.LPCB.EC0.LFCM, 0xA000) == Zero))
{
\_SB.PCI0.LPCB.EC0.GPOF = Zero
Release (\_SB.PCI0.LPCB.EC0.LFCM)
}
}
}

on _OFF calling PGOF, PGOF not found EC related.
then I checked on _OFF in SB.PCI0.PEG0.PEGP calling "Notify (\_SB.PCI0.PEG0, Zero)"
in SB.PCI0.PEG0 there is EC related.

I am very confused, is it necessary to move the EC related code in SB.PCI0.PEG0 to _REG?
I managed to call SB.PCI0.PEG0.PEGP._OFF on the fake device, but the fan is spinning very fast
 
Last edited:
Top