Contribute
Register

[Guide] Disabling discrete graphics in dual-GPU laptops

My S410UN debug
 

Attachments

  • debug_9644.zip
    3.6 MB · Views: 88
My S410UN debug

You have incorrect settings in config.plist/ACPI/DSDT/Fixes.
Remove or set false all of the following: DeleteUnused, FixRegions

SSDT-8-SgUlx.aml should be named SSDT-8.aml (as it is named in ACPI/origin).

Renames that are done in config.plist/ACPI/DSDT/Patches should not be applied to patched files in ACPI/patched.
(eg. GFX0->IGPU, SAT0->SATA, etc)

You forgot to patch HGOF in SSDT-7. As per guide, EC related code must be removed from _OFF or anything _OFF calls (in your case _OFF calls HGOF, which has EC related code).
 
Hello everyone,

I comment, I need some help to patch my DSD,
to disable the GFX0 graphics card and boot from the IGPU

I have tried several patches, but I think there are some inconsistencies once applied,

The Computer is an iMac from mid-2011 Intel i7 SandyBridge 2nd generation, with an Ati Radeon 6970 and Intel HD3000,
The problem is that the ATI Radeon 6970m GPU is broken and does not boot in any way, change it to an Nvidia fx2800,
but it does not work either, so I extracted the ROM from BIOS, with a raspberry pi and unpacked it with CHIPSEC,
and I'm trying to edit the dsdt ssdt files to disable the boot from the DGPU and boot from IGPU
or try to inject the necessary code to start from the DGPU Nvidia Quadrofx2800.

I attach my DSD files where there are references to GFX0 and IGPU in case they could help me

Greetings and thank you
 

Attachments

  • 08_S_RAW-DSDT.dsl
    200.2 KB · Views: 111
  • 18_S_RAW-SSDT-IGHda.dsl
    1.4 KB · Views: 111
  • 19_S_RAW-SSDT-IGNoHda.aml
    160 bytes · Views: 115
Hello everyone,

I comment, I need some help to patch my DSD,
to disable the GFX0 graphics card and boot from the IGPU

I have tried several patches, but I think there are some inconsistencies once applied,

The Computer is an iMac from mid-2011 Intel i7 SandyBridge 2nd generation, with an Ati Radeon 6970 and Intel HD3000,
The problem is that the ATI Radeon 6970m GPU is broken and does not boot in any way, change it to an Nvidia fx2800,
but it does not work either, so I extracted the ROM from BIOS, with a raspberry pi and unpacked it with CHIPSEC,
and I'm trying to edit the dsdt ssdt files to disable the boot from the DGPU and boot from IGPU
or try to inject the necessary code to start from the DGPU Nvidia Quadrofx2800.

I attach my DSD files where there are references to GFX0 and IGPU in case they could help me

Greetings and thank you

Your post is off-topic.
This thread does not apply to Apple hardware. It is only for dual-GPU PC (non-Apple) laptops.
 
Your post is off-topic.
This thread does not apply to Apple hardware. It is only for dual-GPU PC (non-Apple) laptops.

Ok, I'm sorry, I was asking around here because it's the most similar thing I've found to what I wanted to do to try to fix this computer. but if it can not be applied to mac computers, then I'll keep trying other solutions ... thank you very much.
 
Ok, I'm sorry, I was asking around here because it's the most similar thing I've found to what I wanted to do to try to fix this computer. but if it can not be applied to mac computers, then I'll keep trying other solutions ... thank you very much.

Probably best solution for you is to get the computer fixed...
 
You have incorrect settings in config.plist/ACPI/DSDT/Fixes.
Remove or set false all of the following: DeleteUnused, FixRegions

SSDT-8-SgUlx.aml should be named SSDT-8.aml (as it is named in ACPI/origin).

Renames that are done in config.plist/ACPI/DSDT/Patches should not be applied to patched files in ACPI/patched.
(eg. GFX0->IGPU, SAT0->SATA, etc)

You forgot to patch HGOF in SSDT-7. As per guide, EC related code must be removed from _OFF or anything _OFF calls (in your case _OFF calls HGOF, which has EC related code).

1. Remove or set false all of the following: DeleteUnused, FixRegions
OK. Removed. Which best smbios for my computer MacBook Pro 14,1 or MacBookAir6,2 for Coffelake
Is 620 config plist on your laptop dsdt master is more suitable ?

2. SSDT-8-SgUlx.aml should be named SSDT-8.aml (as it is named in ACPI/origin).
It is quite strange when I press F4 on Clover last weekend and yesterday. Yesterday it put just SSDT-8.aml. Before it was SSDT-8-SgUlx.aml

3. Renames that are done in config.plist/ACPI/DSDT/Patches should not be applied to patched files in ACPI/patched.
(eg. GFX0->IGPU, SAT0->SATA, etc)
OK, I dont do renames patch on DSDT, SSDT. I just patch _INI on SSDT8.aml , on DSDT I had
ASUS->Battery Patch
ASUS->Fn Brightness Keys Patch
ASUS->FnKeys as Function Keys Patch
ASUS->KeyboardBacklight Patch 4
VoodooI2c->GPIO Controller Enabled
VoodooI2c->Window 10 Patch
VoodooI2c->Guide-> Pin 0x55
I just add also Instant Wake patch ( I dont know I need or what )

I just take on SSDT-IGPU.aml SSDT-HDEF.aml SSDT-PNLF.aml from star central U430 thread. Did it has renames on it?
I ve seen your 620 config plist has more rename switch. Which on I need to enable still been studying.

4. You forgot to patch HGOF in SSDT-7. As per guide, EC related code must be removed from _OFF or anything _OFF calls (in your case _OFF calls HGOF, which has EC related code).

OK. hmm SSDT-7? Ok wait.
The _INI _OFF are written on SSDT-8 and SSDT-9.

Original SSDT-9 which has no SPIN EC etc, but has EC \_SB.PCI0.HGOF

Code:
        Method (_OFF, 0, Serialized)  // _OFF: Power Off

        {

            If (LEqual (CTXT, Zero))

            {

                If (LNotEqual (GPRF, One))

                {

                    Store (VGAR, VGAB)

                }



                Store (One, CTXT)

            }



            \_SB.PCI0.HGOF (One)

        }

original SSDT-8

Code:
    Scope (\_SB.PCI0.RP01.PEGP)

    {

        Method (_INI, 0, NotSerialized)  // _INI: Initialize

        {

            Store (Zero, \_SB.PCI0.RP01.PEGP._ADR)

        }

    }

And original DSDT

Code:
            Method (_REG, 2, NotSerialized)  // _REG: Region Availability

            {

                If (LEqual (Arg0, 0x03))

                {

                    Store (Arg1, ECFL)

                }

           



            }

THe HGOF Method is described on SSDT-7

Code:
        Method (HGOF, 1, Serialized)

        {

            If (LNotEqual (SGGP, One))

            {

                Return (Zero)

            }



            Store (Arg0, RPIX)

            If (LEqual (CCHK (Zero, RPIX), Zero))

            {

                Return (Zero)

            }



            Store (\_SB.PCI0.LPCB.EC0.RRAM (0x0521), Local0)

            And (Local0, 0xCF, Local0)

            \_SB.PCI0.LPCB.EC0.WRAM (0x0521, Local0)

            \_SB.PCI0.LPCB.EC0.WRAM (0x0520, 0x89)

            \_SB.PCI0.LPCB.EC0.WRAM (0x03A4, Zero)

            \_SB.PCI0.LPCB.EC0.WRAM (0x03A5, Zero)

            If (LEqual (RPIX, One))

            {

                Store (LCT1, ELCT)

                Store (SVI1, HVID)

                Store (SDI1, HDID)

                Store (LRE1, LTRE)

                Store (One, LKD1)

            }

            ElseIf (LEqual (RPIX, 0x09))

            {

                Store (LCT9, ELCT)

                Store (SVI9, HVID)

                Store (SDI9, HDID)

                Store (LRE9, LTRE)

                Store (One, LKD9)

            }



            If (LEqual (RPIX, One))

            {

                While (LNotEqual (LKS1, Zero))

                {

                    Sleep (One)

                }

            }

            ElseIf (LEqual (RPIX, 0x09))

            {

                While (LNotEqual (LKS9, Zero))

                {

                    Sleep (One)

                }

            }



            SGPO (HRE0, HRG0, HRA0, One)

            SGPO (PWE0, PWG0, PWA0, Zero)

            Return (Zero)

        }

Ok I have patched the SSDT-8 with _INI patch

Code:
    Scope (\_SB.PCI0.RP01.PEGP)

    {

        Method (_INI, 0, NotSerialized)  // _INI: Initialize

        {

            Store (Zero, \_SB.PCI0.RP01.PEGP._ADR)

            _OFF ()

        }

    }


Ok I have patched DSDT _REG patch with extra EC HGOF

Code:
            Method (_REG, 2, NotSerialized)  // _REG: Region Availability

            {

                If (LEqual (Arg0, 0x03))

                {

                    Store (Arg1, ECFL)

                }



              //FROM HGOF start

                If (LAnd (LEqual (Arg0, 0x03), LEqual (Arg1, One)))

                {

                    Store (RRAM (0x0521), Local0)

                    And (Local0, 0xCF, Local0)

                    WRAM (0x0521, Local0)

                    WRAM (0x0520, 0x89)

                    WRAM (0x03A4, Zero)

                    WRAM (0x03A5, Zero)

                } //FROM HGOF end

            }


Now you suggest I removed HGOF from SSDT-7. It should be removed from SSDT-9 where _OFF called ?

Patched SSDT-9..
Code:
        Method (_OFF, 0, Serialized)  // _OFF: Power Off

        {

            If (LEqual (CTXT, Zero))

            {

                If (LNotEqual (GPRF, One))

                {

                    Store (VGAR, VGAB)

                }



                Store (One, CTXT)

            }



     

        }

I patched it SSDT-9 where _OFF call, screen just blank after booting or get gIOScreenLockState 3 issue.
SSDT-7 is where the method described, EC removed from there?

Attached the patched acpi and the other kext on clover.
 

Attachments

  • config.u620.plist
    9.7 KB · Views: 110
  • patched.zip
    97.9 KB · Views: 77
  • Other.zip
    606.4 KB · Views: 75
Last edited:
Which best smbios for my computer MacBook Pro 14,1 or MacBookAir6,2 for Coffelake

Your computer is KabyLake-R, not CoffeeLake.
Either of those will work... Although MacBookAir6,2 is Haswell, it still seems to work (and disables HWP). MacBookPro14,1 will work and will enable HWP.

2. SSDT-8-SgUlx.aml should be named SSDT-8.aml (as it is named in ACPI/origin).
It is quite strange when I press F4 on Clover last weekend and yesterday. Yesterday it put just SSDT-8.aml. Before it was SSDT-8-SgUlx.aml

Not strange.
It depends on Clover version and Clover options in config.plist/ACPI.

3. Renames that are done in config.plist/ACPI/DSDT/Patches should not be applied to patched files in ACPI/patched.
(eg. GFX0->IGPU, SAT0->SATA, etc)
OK, I dont do renames patch on DSDT, SSDT. I just patch _INI on SSDT8.aml , on DSDT I had
ASUS->Battery Patch
ASUS->Fn Brightness Keys Patch
ASUS->FnKeys as Function Keys Patch
ASUS->KeyboardBacklight Patch 4
VoodooI2c->GPIO Controller Enabled
VoodooI2c->Window 10 Patch
VoodooI2c->Guide-> Pin 0x55
I just add also Instant Wake patch ( I dont know I need or what )

I just take on SSDT-IGPU.aml SSDT-HDEF.aml SSDT-PNLF.aml from star central U430 thread. Did it has renames on it?
I ve seen your 620 config plist has more rename switch. Which on I need to enable still been studying.

The files you provided showed various renames done to the patched files in ACPI/patched.
Please note that add-on SSDTs (such as SSDT-PNLF.aml) are not "patched files".

THe HGOF Method is described on SSDT-7

Code:
        Method (HGOF, 1, Serialized)

        {

            If (LNotEqual (SGGP, One))

            {

                Return (Zero)

            }



            Store (Arg0, RPIX)

            If (LEqual (CCHK (Zero, RPIX), Zero))

            {

                Return (Zero)

            }



            Store (\_SB.PCI0.LPCB.EC0.RRAM (0x0521), Local0)

            And (Local0, 0xCF, Local0)

            \_SB.PCI0.LPCB.EC0.WRAM (0x0521, Local0)

            \_SB.PCI0.LPCB.EC0.WRAM (0x0520, 0x89)

            \_SB.PCI0.LPCB.EC0.WRAM (0x03A4, Zero)

            \_SB.PCI0.LPCB.EC0.WRAM (0x03A5, Zero)

            If (LEqual (RPIX, One))

            {

                Store (LCT1, ELCT)

                Store (SVI1, HVID)

                Store (SDI1, HDID)

                Store (LRE1, LTRE)

                Store (One, LKD1)

            }

            ElseIf (LEqual (RPIX, 0x09))

            {

                Store (LCT9, ELCT)

                Store (SVI9, HVID)

                Store (SDI9, HDID)

                Store (LRE9, LTRE)

                Store (One, LKD9)

            }



            If (LEqual (RPIX, One))

            {

                While (LNotEqual (LKS1, Zero))

                {

                    Sleep (One)

                }

            }

            ElseIf (LEqual (RPIX, 0x09))

            {

                While (LNotEqual (LKS9, Zero))

                {

                    Sleep (One)

                }

            }



            SGPO (HRE0, HRG0, HRA0, One)

            SGPO (PWE0, PWG0, PWA0, Zero)

            Return (Zero)

        }

Easy to see the EC related code:
Code:
            Store (\_SB.PCI0.LPCB.EC0.RRAM (0x0521), Local0)
            And (Local0, 0xCF, Local0)
            \_SB.PCI0.LPCB.EC0.WRAM (0x0521, Local0)
            \_SB.PCI0.LPCB.EC0.WRAM (0x0520, 0x89)
            \_SB.PCI0.LPCB.EC0.WRAM (0x03A4, Zero)
            \_SB.PCI0.LPCB.EC0.WRAM (0x03A5, Zero)

Must be moved from HGOF to _REG as per post #1.
 
Your computer is KabyLake-R, not CoffeeLake.
Either of those will work... Although MacBookAir6,2 is Haswell, it still seems to work (and disables HWP). MacBookPro14,1 will work and will enable HWP.



Not strange.
It depends on Clover version and Clover options in config.plist/ACPI.



The files you provided showed various renames done to the patched files in ACPI/patched.
Please note that add-on SSDTs (such as SSDT-PNLF.aml) are not "patched files".



Easy to see the EC related code:
Code:
            Store (\_SB.PCI0.LPCB.EC0.RRAM (0x0521), Local0)
            And (Local0, 0xCF, Local0)
            \_SB.PCI0.LPCB.EC0.WRAM (0x0521, Local0)
            \_SB.PCI0.LPCB.EC0.WRAM (0x0520, 0x89)
            \_SB.PCI0.LPCB.EC0.WRAM (0x03A4, Zero)
            \_SB.PCI0.LPCB.EC0.WRAM (0x03A5, Zero)

Must be moved from HGOF to _REG as per post #1.

1. Thank you for explanation, yes even though it has "plugin-type"=1 to enable power management, looks like HWP more interesting. ok I will switch to 14,1 SMBIOS into 620 UHD config.plist

2. The files you provided showed various renames done to the patched files in ACPI/patched
Sorry Which files ? DSDT ?
I just had newer SSDT-IGPU and SSDT-HDEF from backlight thread, guide.git (not included in the debug files created)
SSDT-PNLF I just rewrite using thread Backlight including Backlight injector in L/E (not included in the debug files created)



3. it copied to _REG DSDT.aml already.
so HGOF on SSDT-7 removed also to become

Code:
        Method (HGOF, 1, Serialized)

        {

            If (LNotEqual (SGGP, One))

            {

                Return (Zero)

            }



            Store (Arg0, RPIX)

            If (LEqual (CCHK (Zero, RPIX), Zero))

            {

                Return (Zero)

            }


          // EC REMOVED ....


            If (LEqual (RPIX, One))

            {

                Store (LCT1, ELCT)

                Store (SVI1, HVID)

                Store (SDI1, HDID)

                Store (LRE1, LTRE)

                Store (One, LKD1)

            }

            ElseIf (LEqual (RPIX, 0x09))

            {

                Store (LCT9, ELCT)

                Store (SVI9, HVID)

                Store (SDI9, HDID)

                Store (LRE9, LTRE)

                Store (One, LKD9)

            }



            If (LEqual (RPIX, One))

            {

                While (LNotEqual (LKS1, Zero))

                {

                    Sleep (One)

                }

            }

            ElseIf (LEqual (RPIX, 0x09))

            {

                While (LNotEqual (LKS9, Zero))

                {

                    Sleep (One)

                }

            }



            SGPO (HRE0, HRG0, HRA0, One)

            SGPO (PWE0, PWG0, PWA0, Zero)

            Return (Zero)

        }

compiled to ssdt-7.aml and put on acpi/patched... right?


4. 1 more question...do I need put this before EC on _REG DSDT or just the EC command ??

If (LAnd (LEqual (Arg0, 0x03), LEqual (Arg1, One)))
{


on DSDT.aml
Code:
            Method (_REG, 2, NotSerialized)  // _REG: Region Availability

            {

                If (LEqual (Arg0, 0x03))

                {

                    Store (Arg1, ECFL)

                }



          
               //_REG disable nvidia start
                If (LAnd (LEqual (Arg0, 0x03), LEqual (Arg1, One)))

                {
                //FROM HGOF start

                    Store (RRAM (0x0521), Local0)

                    And (Local0, 0xCF, Local0)

                    WRAM (0x0521, Local0)

                    WRAM (0x0520, 0x89)

                    WRAM (0x03A4, Zero)

                    WRAM (0x03A5, Zero)
              
               //FROM HGOF end

                }
           
             //_REG disable nvidia end

            }

UPDATE: Looks S14 S410UN stable now. debug_22126.zip
 

Attachments

  • SSDT-7.aml
    1.9 KB · Views: 110
  • debug_22126.zip
    3 MB · Views: 69
Last edited:

I'm not going to look at the files again...
Patched files are those files in ACPI/patched that originated from ACPI/origin.

I just had newer SSDT-IGPU and SSDT-HDEF from backlight thread, guide.git (not included in the debug files created)
SSDT-PNLF I just rewrite using thread Backlight including Backlight injector in L/E (not included in the debug files created)

The files you mention are not "patched". They are add-on SSDTs.

3. it copied to _REG DSDT.aml already.
so HGOF on SSDT-7 removed also to become

Yes... as the meaning of "move" is to copy to new location and delete from original location.
 
Back
Top