Contribute
Register

[Guide] Disabling discrete graphics in dual-GPU laptops

RehabMan

Moderator
Joined
May 2, 2012
Messages
183,968
Motherboard
Intel DH67BL
CPU
i7-2600K
Graphics
HD 3000
Mac
  1. MacBook Air
Mobile Phone
  1. iOS
Help me.I can't disable my Nvidia gt740m .. already try patch ssdt-7 and dsdt still my Nvidia not disable.

Read post #1, "Problem Reporting".
 
Joined
Oct 2, 2015
Messages
69
Motherboard
Yoga C930
CPU
i7- 8550U
Graphics
UHD620
Hi, Rehabman. I'm working on a yoga 3 14 with an Intel HD5500 and a Nvidia 940m. I managed to disable the discrete graphics following your guide, but fail to find the _INI method to patch. Those DSDT/SSDT are disassembled and patched roughly based on @sheg0's guide: https://www.tonymacx86.com/threads/guide-lenovo-yoga-3-14-broadwell-hd5500.187138/. SSDT4(SDS_RTD3) and SSDT5(ULX_RTD3) are processed separately. These two table almost have the same content. However, the part of discrete graphics is located in these two table and I thought this causes confusion. The location of the graphics shows \_SB.PCI0.RP05.PEGP under Windows, and there are little methods related to it. So is it possible or necessary to merge these two table if they truly causes problems on graphics and how can I disable the discrete graphics? Thank you.

PS: Also, can you help me to check what's wrong with the video output? This model has a mini HDMI port. I managed to boot it with false FakeID with HDMI-VGA cable plugged in. While it output via BIOS rendering(?) and when connected with plain HDMI it glitch. I have patched it with your guide Intel IGPU HDMI/DP audio and the HDMI output shows under the audio device but still no help for the video output...sad
 

Attachments

  • Yoga 3 14.zip
    2.1 MB · Views: 72
Last edited:

RehabMan

Moderator
Joined
May 2, 2012
Messages
183,968
Motherboard
Intel DH67BL
CPU
i7-2600K
Graphics
HD 3000
Mac
  1. MacBook Air
Mobile Phone
  1. iOS
Hi, Rehabman. I'm working on a yoga 3 14 with an Intel HD5500 and a Nvidia 940m. I managed to disable the discrete graphics following your guide, but fail to find the _INI method to patch. Those DSDT/SSDT are disassembled and patched roughly based on @sheg0's guide: https://www.tonymacx86.com/threads/guide-lenovo-yoga-3-14-broadwell-hd5500.187138/. SSDT4(SDS_RTD3) and SSDT5(ULX_RTD3) are processed separately. These two table almost have the same content. However, the part of discrete graphics is located in these two table and I thought this causes confusion. The location of the graphics shows \_SB.PCI0.RP05.PEGP under Windows, and there are little methods related to it. So is it possible or necessary to merge these two table if they truly causes problems on graphics and how can I disable the discrete graphics? Thank you.

PS: Also, can you help me to check what's wrong with the video output? This model has a mini HDMI port. I managed to boot it with false FakeID with HDMI-VGA cable plugged in. While it output via BIOS rendering(?) and when connected with plain HDMI it glitch. I have patched it with your guide Intel IGPU HDMI/DP audio and the HDMI output shows under the audio device but still no help for the video output...sad

You did not follow the guide.
As per guide, you should patch based on Clover F4 extract.
You should have in ACPI/patched:
DSDT.aml
SSDT.aml
SSDT-0.aml
SSDT-1.aml
SSDT-2.aml
SSDT-3.aml
SSDT-4.aml
SSDT-5.aml
SSDT-6.aml
SSDT-7.aml
SSDT-11.aml
SSDT-12.aml
SSDT-13.aml
 
Joined
Oct 2, 2015
Messages
69
Motherboard
Yoga C930
CPU
i7- 8550U
Graphics
UHD620
You did not follow the guide.
As per guide, you should patch based on Clover F4 extract.
You should have in ACPI/patched:
DSDT.aml
SSDT.aml
SSDT-0.aml
SSDT-1.aml
SSDT-2.aml
SSDT-3.aml
SSDT-4.aml
SSDT-5.aml
SSDT-6.aml
SSDT-7.aml
SSDT-11.aml
SSDT-12.aml
SSDT-13.aml
Yes, these original tables are exacted with Linux when I previous extracted them and I have just checked that they have the same md5. So only the filenames are different with a offset of -1 and the sort order in clover config was corresponded to the filenames. Will that influence the effect?
 
Last edited:

RehabMan

Moderator
Joined
May 2, 2012
Messages
183,968
Motherboard
Intel DH67BL
CPU
i7-2600K
Graphics
HD 3000
Mac
  1. MacBook Air
Mobile Phone
  1. iOS
Yes, these original tables are exacted with Linux when I previous extracted them and I have just checked that they have the same md5. So only the filenames are different with a offset of -1 and the sort order in clover config was corresponded to the filenames. Will that influence the effect?

I intend to compare the files in ACPI/patched with the files in ACPI/origin. For that to happen, must have the same names. And I'm not going to spend the time sorting them out. That is your task if you wish...
 
Joined
Feb 21, 2017
Messages
18
Motherboard
Toshiba L50-A
CPU
Core I5 3230M Intel 7 Series C216,HM76
Graphics
Intel HD 4000/GT 740M(disabled) 1366x768
You did not follow the guide.
As per guide, you should patch based on Clover F4 extract.
You should have in ACPI/patched:
DSDT.aml
SSDT.aml
SSDT-0.aml
SSDT-1.aml
SSDT-2.aml
SSDT-3.aml
SSDT-4.aml
SSDT-5.aml
SSDT-6.aml
SSDT-7.aml
SSDT-11.aml
SSDT-12.aml
SSDT-13.aml

HI Rehabman, what guide should I follow . because I only have this after I extract acpi clover F4
DSDT.aml
SSDT.aml
SSDT-0.aml
SSDT-1.aml
SSDT-2.aml
SSDT-3.aml
SSDT-4x.aml
SSDT-5x.aml
SSDT-6x.aml
SSDT-7.aml
 

RehabMan

Moderator
Joined
May 2, 2012
Messages
183,968
Motherboard
Intel DH67BL
CPU
i7-2600K
Graphics
HD 3000
Mac
  1. MacBook Air
Mobile Phone
  1. iOS
HI Rehabman, what guide should I follow . because I only have this after I extract acpi clover F4
DSDT.aml
SSDT.aml
SSDT-0.aml
SSDT-1.aml
SSDT-2.aml
SSDT-3.aml
SSDT-4.aml
SSDT-5.aml
SSDT-6.aml
SSDT-7.aml

My reply was to someone else. Don't expect ACPI files from different computers to be the same.
ACPI patching guide is here: https://www.tonymacx86.com/threads/guide-patching-laptop-dsdt-ssdts.152573/
Specifics/example regarding disabling the discrete GPU is in post #1.
 
Joined
Oct 2, 2015
Messages
69
Motherboard
Yoga C930
CPU
i7- 8550U
Graphics
UHD620
I intend to compare the files in ACPI/patched with the files in ACPI/origin. For that to happen, must have the same names. And I'm not going to spend the time sorting them out. That is your task if you wish...
Sorry for the inconvenience, I have re-uploaded the files with the same names.Thank you so much.
 

Attachments

  • Yoga 3 14.zip
    2.1 MB · Views: 71

RehabMan

Moderator
Joined
May 2, 2012
Messages
183,968
Motherboard
Intel DH67BL
CPU
i7-2600K
Graphics
HD 3000
Mac
  1. MacBook Air
Mobile Phone
  1. iOS
Sorry for the inconvenience, I have re-uploaded the files with the same names.Thank you so much.

FYI: Your SortedOrder array is causing SSDT.aml to be injected twice.
FYI2: Your native DSDT does not use 0x0d in its _PRW methods, so the patch you used there is wrong...
FYI3: No need to rename all _T_x to T_x... it just makes it more difficult to compare origin to patched...

Your SSDT-3.aml and SSDT-4.aml (from origin) has duplicates.
If you look at the code there you can see the entire contents of each is conditional.
Presumably these two conditions are mutually exclusive, such that only one (or none) of these SSDTs is being used on your computer...

From SSDT-3:
Code:
    If (LAnd (LEqual (BID, 0x31), LEqual (RTD3, One)))
    {

From SSDT-4:
Code:
    If (LAnd (LOr (LOr (LEqual (BID, 0x80), LEqual (BID, 0x82)), LEqual (BID, 0x83)), LEqual (RTD3, One)))
    {

To know which one is actually being used, you will need to find out the value of BID, and RTD3.
If RTD3 is zero, neither is being used.
And then SSDT-3 vs. SSDT-4 depends on BID==0x31, or BID==0x80/0x82/0x83

You can use ACPIDebug to find the values of BID and RTD3.
Or you could even use RW-Everything as these fields are in SystemMemory (you would need to calculate the address of them).

For example, calculating the SystemMemory address of BID:
Code:
    OperationRegion (GNVS, SystemMemory, 0xACF7CC18, 0x036F)
    Field (GNVS, AnyAcc, Lock, Preserve)
    {
        Offset (0x42),
        MEFE,   8, //42
        DSTS,   8, //43
        TL2F,   32, //44
        MORD,   8, //48
        TCGP,   8, //49
        PPRP,   32, //4a
        PPRQ,   8, //4e
        LPPR,   8, //4f
        GTF0,   56, //50
        GTF2,   56, //57
        IDEM,   8, //5e
        GTF1,   56, //60
        BID,    16, //67

Would be 0xACF7CC18+0x67=0xACF7CC7F

You should check my math there...

BTW, to get a clean disassembly from these files you have to disassemble twice. Once with SSDT-3, without SSDT-4. And another with SSDT-4, without SSDT-3.

For example:
Code:
# assuming cwd is at ACPI/origin
mkdir d1
mkdir d2
cp DSDT.aml SSDT*.aml d1
cp DSDT.aml SSDT*.aml d2
rm d1/SSDT-4.aml
rm d2/SSDT-3.aml
cd d1
iasl -da -dl *.aml
cd ../d2
iasl -da -dl *.aml
cd ..
cp d1/*.dsl .
cp d2/SSDT-4.dsl .

And then you have a complete set of disassembled files in ACPI/origin (*.dsl).

And to answer your question about _INI. If you don't find an _INI at the path of the discrete GPU, you simply create one.
 
Last edited:
Joined
Oct 2, 2015
Messages
69
Motherboard
Yoga C930
CPU
i7- 8550U
Graphics
UHD620
If RTD3 is zero, neither is being used.
Thank you for your help.

I just checked the value with ACPIDebug, and unfortunately the value of BID is 0x2 and the value of RTD3 is 0x0. I tried them both when the discrete graphics is disabled and enabled in BIOS and got the same value.
So does this mean both two tables are meaningless and thus can be simply omitted?

Then in order to disable the discrete graphics device, should I do the following with DSDT?
1. Copy whole "Scope (\_SB.PCI0.RP05)" section in the SSDT into DSDT and add the coordinate External resources into DefinitionBlock.
Sorry I don't know if there are difference with "Scope (_SB.PCI0.RP05)" and Scope (\_SB.PCI0.RP05) and "Device (RP05)" under "Scope (_SB.PCI0)", and can I merge them?

2. Under "Device (RP05)" under "Scope (_SB.PCI0)", I just found a _INI method. Sorry for the misleading.
I tried to add "\_SB.PCI0.RP05._OFF()" to the last line of this method and an error prompts that "Object does not exist (\_SB.PCI0.RP05._OFF)"
The _OFF method is in the pasted section and how can I call it?
 
Top