Contribute
Register

[Guide] Disabling discrete graphics in dual-GPU laptops

Hello, I attempted to disable my discrete graphics card but cannot boot after patching DSDT and SSDTs. So, just to do some diagnosing I F4'd with Clover to get fresh SSDTs and DSDT and placed those unmodified into ACPI/patched and set DropOEM to true. Theoretically, I should be able to boot completely fine if I do not modify the SSDTs and the DSDT that I place into ACPI/patched correct? Or is this not the case?
 
This is what I got...

It seems to decompile, but the same files are still there... I think...



rex:~ esmith$ cd /Users/esmith/Documents/ACPI_Files

rex:ACPI_Files esmith$ iasl -da -dl DSDT.aml SSDT*.aml


Intel ACPI Component Architecture

ASL+ Optimizing Compiler version 20161210-64(RM)

Copyright (c) 2000 - 2016 Intel Corporation

Input file DSDT.aml, Length 0xA562 (42338) bytes
ACPI: DSDT 0x0000000000000000 00A562 (v02 DELL CBX3 00000021 INTL 20091112)
External object resolution file SSDT-7-NvdTabl.aml
Input file SSDT-7-NvdTabl.aml, Length 0x198A (6538) bytes
ACPI: SSDT 0x0000000000000000 00198A (v01 NvdRef NvdTabl 00001000 INTL 20091112)
Pass 1 parse of [SSDT]
Pass 2 parse of [SSDT]
External object resolution file SSDT-6x-ApCst.aml
Input file SSDT-6x-ApCst.aml, Length 0x119 (281) bytes
ACPI: SSDT 0x0000000000000000 000119 (v01 PmRef ApCst 00003000 INTL 20051117)
Pass 1 parse of [SSDT]
Pass 2 parse of [SSDT]
External object resolution file SSDT-5x-Cpu0Cst.aml
Input file SSDT-5x-Cpu0Cst.aml, Length 0x523 (1315) bytes
ACPI: SSDT 0x0000000000000000 000523 (v01 PmRef Cpu0Cst 00003001 INTL 20051117)
Pass 1 parse of [SSDT]
Pass 2 parse of [SSDT]
External object resolution file SSDT-4x-ApIst.aml
Input file SSDT-4x-ApIst.aml, Length 0x303 (771) bytes
ACPI: SSDT 0x0000000000000000 000303 (v01 PmRef ApIst 00003000 INTL 20051117)
Pass 1 parse of [SSDT]
Pass 2 parse of [SSDT]
External object resolution file SSDT-3x-CpuPm.aml
Input file SSDT-3x-CpuPm.aml, Length 0xB22 (2850) bytes
ACPI: SSDT 0x0000000000000000 000B22 (v01 PmRef CpuPm 00003000 INTL 20051117)
Pass 1 parse of [SSDT]
Pass 2 parse of [SSDT]
External object resolution file SSDT-2-CpuPm.aml
Input file SSDT-2-CpuPm.aml, Length 0xB22 (2850) bytes
ACPI: SSDT 0x0000000000000000 000B22 (v01 PmRef CpuPm 00003000 INTL 20051117)
Pass 1 parse of [SSDT]
ACPI Error: [SSDT] 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

rex:ACPI_Files esmith$

Your error is due to duplicate SSDTs.
It is covered in the guide:
https://www.tonymacx86.com/threads/guide-patching-laptop-dsdt-ssdts.152573/

Please read carefully.
 
Hello, I attempted to disable my discrete graphics card but cannot boot after patching DSDT and SSDTs. So, just to do some diagnosing I F4'd with Clover to get fresh SSDTs and DSDT and placed those unmodified into ACPI/patched and set DropOEM to true. Theoretically, I should be able to boot completely fine if I do not modify the SSDTs and the DSDT that I place into ACPI/patched correct? Or is this not the case?

Sounds like you forgot about SortedOrder.
Read guide:
https://www.tonymacx86.com/threads/guide-patching-laptop-dsdt-ssdts.152573/
 
Hi, @RehabMan
How do you check if the patch works if you use ssdt-discretespoof.aml for your ACPI/patched?
 
Hi, @RehabMan
How do you check if the patch works if you use ssdt-discretespoof.aml for your ACPI/patched?

You can't.
Must remove SSDT-DiscreteSpoof.aml in order to see if the patch is working.
 
You can't.
Must remove SSDT-DiscreteSpoof.aml in order to see if the patch is working.

Sorry for replying late.
Do you still need to use SSDT-DiscreteSpoof.aml after getting patched correctly?
 

I only have _OFF and _INI in SSDT-14.aml, and the thing is I got boot loop when adding your _INI patch to my SSDT. Now I'm trying to find the problem.
Anyway, this _OFF is different compared to your example in 1st post.
Code:
Method (_OFF, 0, Serialized)  // _OFF: Power Off
        {
            If (LEqual (CCHK (Zero), Zero))
            {
                Return (Zero)
            }

            HGOF ()
            Notify (\_SB.PCI0.RP01, Zero)
            Return (Zero)
        }
How do I modify it? Should I just remove the "Notify (...."?
 

Attachments

  • Archive.zip
    5.8 MB · Views: 65
I only have _OFF and _INI in SSDT-14.aml, and the thing is I got boot loop when adding your _INI patch to my SSDT. Now I'm trying to find the problem.
Anyway, this _OFF is different compared to your example in 1st post.
Code:
Method (_OFF, 0, Serialized)  // _OFF: Power Off
        {
            If (LEqual (CCHK (Zero), Zero))
            {
                Return (Zero)
            }

            HGOF ()
            Notify (\_SB.PCI0.RP01, Zero)
            Return (Zero)
        }
How do I modify it? Should I just remove the "Notify (...."?

You cannot replace only SSDT-14.
To patch any SSDT, you must include all of them in ACPI/patched, then DropOem=true, and use SortedOrder to specify SSDT load order.

I have a future build of Clover (source already checked in) that removes this restriction (if config.plist/ACPI/AutoMerge=true), but you would have to build my version of Clover from sources to be able to use that feature.
 
You cannot replace only SSDT-14.
To patch any SSDT, you must include all of them in ACPI/patched, then DropOem=true, and use SortedOrder to specify SSDT load order.

I have a future build of Clover (source already checked in) that removes this restriction (if config.plist/ACPI/AutoMerge=true), but you would have to build my version of Clover from sources to be able to use that feature.

Do I also need to define SSDT-*x.aml too?
 
Back
Top