Contribute
Register

[Guide] Disabling discrete graphics in dual-GPU laptops

Ok, hang on before I go nuts .... I'm in green fields here

My one and only ECS4 method is in "DSDT.dsl" under root
Code:
Method (ECS4, 1, NotSerialized)
        {
            ECWB (0x11, Arg0)
        }

It calls ECWB.

Code:
Method (ECWB, 2, NotSerialized)
        {
            \_SB.PCI0.LPCB.ECDV.ECW1 (Arg0, Arg1)
        }

I don't see how it relates to _SB.PCIO.PEG0.VID (defined in "SSDT-3-NvdTabl.dsl") ?

Because that code is in the execution path of _OFF.

Also, if I follow the logic,

Step 1: Add a new _INI method in "SSDT-3-NvdTabl.dsl" just before _OFF method. That is easy.
Code:
Method(_INI) { _OFF() }

Step 2: All EC related code in _OFF execution path must be moved to _REG. This is a bit greek.

How do a know which code is EC ?

Let me guess ... can it be ECS4 as per below ?

Yes.
You will see as you start reading the code for ECS4 and code it calls.

Code:
Method (_OFF, 0, Serialized)  // _OFF: Power Off
        {
            Sleep (0x64)
            Store (PREG, PEGB)
            Sleep (0x64)
            Store (VREG, VGAB)
            Sleep (0x64)
            Store (0x01, LNKM)
            While (LNotEqual (LNKS, 0x00))
            {
                Sleep (0x01)
            }

            Store (0x00, PO34)
            ECS4 (0x00). // to be removed ?
        }

Yes. To "move" is to "remove from one location" and "copy to another".
Some people know this as cut/paste.

Step 3: Add code from Step 2 to _REG method.

The only _REG method I could find is in "DSDT.dsl". It is part off \_SB.PCIO.LPCB.ECDV

Code:
Method (_REG, 2, NotSerialized)  // _REG: Region Availability
            {
                If (LAnd (LEqual (Arg0, 0x03), LEqual (Arg1, 0x01)))
                {
                    ECIN ()
                    Store (0x01, \ECRD)
                }
                ECS4 (0x00) // To be added here ?
            }

Read the guide carefully.
EC related code must be run from _REG only when _REG is called with specific arguments.

How will the code be executed to call _OFF method in "SSDT-3-NvdTabl.dsl". We have created an _INI method that call _OFF. However, what is calling _INI ? or is it invoked automatically ?

_INI is executed from AppleACPIPlatform.kext early in ACPI initialization.
Read the ACPI spec for more information.
 
Because that code is in the execution path of _OFF.



Yes.
You will see as you start reading the code for ECS4 and code it calls.



Yes. To "move" is to "remove from one location" and "copy to another".
Some people know this as cut/paste.



Read the guide carefully.
EC related code must be run from _REG only when _REG is called with specific arguments.



_INI is executed from AppleACPIPlatform.kext early in ACPI initialization.
Read the ACPI spec for more information.


Do you ever sleep ? :clap: I hardly closed my eyes. Let me try this. Will shout if there is a problem
 

Attachments

  • Files.zip
    10.1 MB · Views: 103
  • Foto 1.jpg
    Foto 1.jpg
    2.9 MB · Views: 76
  • Foto 2.jpg
    Foto 2.jpg
    1.5 MB · Views: 76
  • Photo_SSDT-6.jpg
    Photo_SSDT-6.jpg
    168.1 KB · Views: 90
I am unable to understand what to do :(
My *.dsl files do not match the contents in the guide.
Can someone please help me

Nothing unusual here.
_OFF is in SSDT-8. Path is _SB.PCI0.PEG0.PEGP. It has no EC references. It calls PGOF (in SSDT-2), which also has no EC references.
There is no _INI at that path.
Simple patch of adding an _INI that calls _OFF. Add this single line in SSDT-8 just before _OFF:
Code:
Method(_INI) { _OFF() }
 
I wish it were more specific. What initial plugs should I observe so that my graphics card can be disabled and has no panic?

Start with plists from the guide. Do not use Clover Configurator.
 
[QUOTE = "RehabMan, postagem: 1731727, membro: 429483"] Veja o guia para os arrancadores de partida corretos:
https://www.tonymacx86.com/threads/guide-booting-the-os-x-installer-on-laptops-with-clover.148093/

Não use o Clover Configurator ... ele vai arruinar várias configurações no plist. [/ QUOTE]


I wish it were more specific. What initial plugs should I observe so that my graphics card can be disabled and has no panic?


I used PlistEdit Pro to edit my config.plist as directed, but the card was not disabled. Please see the files.Imagem.jpg
 

Attachments

  • Files.zip
    6.1 MB · Views: 77
I used PlistEdit Pro to edit my config.plist as directed, but the card was not disabled. Please see the files.View attachment 326213

You patched incorrectly.
You have a duplicate _INI method...
Easy to see with disassembly of patchmatic output:
Code:
NUC6i7KYK:patchmatic_extraction rehabman$ iasl -dl -da DSDT.aml SSDT*.aml
...
ACPI Error: [_INI] Namespace lookup failure, AE_ALREADY_EXISTS (20161210/dswload-462)
ACPI Exception: AE_ALREADY_EXISTS, During name lookup/catalog (20161210/psobject-310)
Could not parse external ACPI tables, AE_ALREADY_EXISTS

Problem is you have an existing _INI at the _OFF path (existing _INI is in SSDT-5... you even patched it to call _OFF), but then you added an _INI to SSDT-6 which now invalidates SSDT-6 (as it contains a duplicate _INI method already defined by SSDT-5).

As per guide, you should have never added the _INI to SSDT-6.
 
Problem is you have an existing _INI at the _OFF path (existing _INI is in SSDT-5... you even patched it to call _OFF), but then you added an _INI to SSDT-6 which now invalidates SSDT-6 (as it contains a duplicate _INI method already defined by SSDT-5).

As per guide, you should have never added the _INI to SSDT-6.[/QUOTE]


Taking out _INI from SST-6, I have panic again as per these images. How should I proceed?
 

Attachments

  • 20180418_081616.jpg
    20180418_081616.jpg
    4.4 MB · Views: 73
  • 20180418_081625.jpg
    20180418_081625.jpg
    4.2 MB · Views: 77
Back
Top