Contribute
Register

Need help disabling nVidia on Haswell/Intel 4600HD

Status
Not open for further replies.
Joined
Apr 24, 2014
Messages
16
Motherboard
Toshiba Qosmio X75-A7298 (Clover)
CPU
Intel Core i7 /4700 MQ
Graphics
Intel HD4600/nVidia GTX770M
Hi,

I have problems disabling the nVidia GTX770M gfx card in my Haswell laptop. I have followed these guides

https://www.tonymacx86.com/threads/guide-patching-laptop-dsdt-ssdts.152573/

and...

https://www.tonymacx86.com/threads/guide-disabling-discrete-graphics-in-dual-gpu-laptops.163772/

to no avail... I know my config does not exactly matches the guides... so I have done what it applies...

I will appreciate some help with this since I cannot boot the High Sierra Installer Beta 8... it gets stuck in the well known WindowServer loop right before getting to the installer... I have a working configuration of Sierra 10.12.6

Attached are the requested files as per https://www.tonymacx86.com/threads/faq-read-first-laptop-frequent-questions.164990/

Thank you!
 

Attachments

  • Files.zip
    6.5 MB · Views: 336
Hi,

I have problems disabling the nVidia GTX770M gfx card in my Haswell laptop. I have followed these guides

https://www.tonymacx86.com/threads/guide-patching-laptop-dsdt-ssdts.152573/

and...

https://www.tonymacx86.com/threads/guide-disabling-discrete-graphics-in-dual-gpu-laptops.163772/

to no avail... I know my config does not exactly matches the guides... so I have done what it applies...

I will appreciate some help with this since I cannot boot the High Sierra Installer Beta 8... it gets stuck in the well known WindowServer loop right before getting to the installer... I have a working configuration of Sierra 10.12.6

Attached are the requested files as per https://www.tonymacx86.com/threads/faq-read-first-laptop-frequent-questions.164990/

Thank you!

Your SortedOrder entries are wrong.

They are trying to load files, SSDT-0, SSDT-1, SSDT-2, SSDT-6, SSDT-7. But those files do not exist in ACPI/patched.
The files in ACPI/patched are SSDT-0.aml, SSDT-1.aml, SSDT-2.aml, SSDT-6.aml, SSDT-7.aml.

Don't forget SSDT-XOSI.aml if that's your intention. And realize that SSDT-XOSI.aml does nothing without the _OSI->XOSI patch.
 
Your SortedOrder entries are wrong.

They are trying to load files, SSDT-0, SSDT-1, SSDT-2, SSDT-6, SSDT-7. But those files do not exist in ACPI/patched.
The files in ACPI/patched are SSDT-0.aml, SSDT-1.aml, SSDT-2.aml, SSDT-6.aml, SSDT-7.aml.

Don't forget SSDT-XOSI.aml if that's your intention. And realize that SSDT-XOSI.aml does nothing without the _OSI->XOSI patch.

Thanks rehabman! I really appreciate your help. So I guess my config.plist is OK... exept for the sort order issue... right?

I will make the changes and test... will update ASAP.

Thank you.
 
Thanks rehabman! I really appreciate your help. So I guess my config.plist is OK... exept for the sort order issue... right?

No idea.
I didn't look at anything else.
 
No idea.
I didn't look at anything else.
Oh Ok . Well, I. will make these changes... hopefully this will do it... will post the result asap.

thank you
 
Oh Ok . Well, I. will make these changes... hopefully this will do it... will post the result asap.

thank you

You probably have other problems too...
I see duplicate _DSM methods when I attempt to disassemble ACPI/patched with 'iasl -da -dl *.aml.

Here is another way that might work, and is a bit easier to apply (I realize that most with a second/useless graphics device will want to disable it anyway, but it is easier to accomplish in post install).

Try this simple SSDT:
Code:
// save as SSDT-PEG0-PEGP-Spoof.aml
DefinitionBlock ("", "SSDT", 2, "hack", "spoof", 0)
{
    Method(_SB.PCI0.PEG0.PEGP._DSM, 4)
    {
        If (!Arg2) { Return (Buffer() { 0x03 } ) }
        Return (Package()
        {
            "name", Buffer() { "#display" },
            "IOName", "#display",
            "class-code", Buffer() { 0xFF, 0xFF, 0xFF, 0xFF },
        })
    }
}

Since your native ACPI has a _DSM method at that path, you will need to have the _DSM->XDSM patch in config.plist/ACPI/DSDT/Patches.

Because IONDRVSupport.kext matches on "display" and/or class-code (graphics class), the SSDT should keep IONDRVSupport from loading against your Nvidia at the PEG0.PEGP node under PCI0.

Make sure it is in ACPI/patched, and included in SortedOrder if you have it.
Test and check ioreg before trying to use it for the installer.

Note, a simpler method may be to use config.plist/Devices/AddProperties and config.plist/Graphics/Inject/NVidia=true.

For example, injecting the properties with AddProperties:
Screen Shot 2017-09-25 at 3.44.57 PM.png


And, of course, AddProperties (Device=NVidia) has no effect without config.plist/Graphics/Inject/NVidia=true
Screen Shot 2017-09-25 at 3.45.36 PM.png
 
Last edited:
You probably have other problems too...
I see duplicate _DSM methods when I attempt to disassemble ACPI/patched with 'iasl -da -dl *.aml.

Here is another way that might work, and is a bit easier to apply (I realize that most with a second/useless graphics device will want to disable it anyway, but it is easier to accomplish in post install).

Try this simple SSDT:
Code:
// save as SSDT-PEG0-PEGP-Spoof.aml
DefinitionBlock ("", "SSDT", 2, "hack", "spoof", 0)
{
    Method(_SB.PCI0.PEG0.PEGP._DSM, 4)
    {
        If (!Arg2) { Return (Buffer() { 0x03 } ) }
        Return (Package()
        {
            "name", "#display",
            "IOName", "#display",
            "class-code", Buffer() { 0xFF, 0xFF, 0xFF, 0xFF },
        })
    }
}

Since your native ACPI has a _DSM method at that path, you will need to have the _DSM->XDSM patch in config.plist/ACPI/DSDT/Patches.

Because IONDRVSupport.kext matches on "display" and/or class-code (graphics class), the SSDT should keep IONDRVSupport from loading against your Nvidia at the PEG0.PEGP node under PCI0.

Make sure it is in ACPI/patched, and included in SortedOrder if you have it.
Test and check ioreg before trying to use it for the installer.

Hi there Rehabman.

Thanks for your help. I have tried the suggested approach but it did not work. Here's what I did...

I created the SSDT-PEG0-PEGP-Spoof.aml by creating first a SSDT-PEG0-PEGP-Spoof.dml then I compiled it with iasl, this is the output

Hackintosh:Desktop dragster$ iasl SSDT-PEG0-PEGP-Spoof.dsl\


Intel ACPI Component Architecture

ASL+ Optimizing Compiler version 20161210-64(RM)

Copyright (c) 2000 - 2016 Intel Corporation


ASL Input: SSDT-PEG0-PEGP-Spoof.dsl - 17 lines, 371 bytes, 5 keywords

AML Output: SSDT-PEG0-PEGP-Spoof.aml - 129 bytes, 1 named objects, 4 executable opcodes


Compilation complete. 0 Errors, 0 Warnings, 0 Remarks, 1 Optimizations

Hackintosh:Desktop dragster$

I ended up with the .aml file which moved to EFI/ACPI/patched then I added the resulting .aml file to EFI/ACPI/patched and added an entry to the sort order list for it ion the config.plist...

As for the _DSM->XDSM, I added it to onfig.plist/ACPI/DSDT/Patches in the form of...

<key>Comment</key>
<string>Rename _DSM to XDSM</string>
<key>Disabled</key>
<false/>
<key>Find</key>
<data>
X0RTTQ==
</data>
<key>Replace</key>
<data>
WERTTQ==
</data>
</dict>

Thank you!
 
Last edited:
Hi there Rehabman.

Thanks for your help. I have tried the suggested approach but it did not work. Here's what I did...

I created the SSDT-PEG0-PEGP-Spoof.aml by creating first a SSDT-PEG0-PEGP-Spoof.dml then I compiled it with iasl, this is the output

Hackintosh:Desktop dragster$ iasl SSDT-PEG0-PEGP-Spoof.dsl\


Intel ACPI Component Architecture

ASL+ Optimizing Compiler version 20161210-64(RM)

Copyright (c) 2000 - 2016 Intel Corporation


ASL Input: SSDT-PEG0-PEGP-Spoof.dsl - 17 lines, 371 bytes, 5 keywords

AML Output: SSDT-PEG0-PEGP-Spoof.aml - 129 bytes, 1 named objects, 4 executable opcodes


Compilation complete. 0 Errors, 0 Warnings, 0 Remarks, 1 Optimizations

Hackintosh:Desktop dragster$

I ended up with the .aml file which moved to EFI/ACPI/patched then I added the resulting .aml file to EFI/ACPI/patched and added an entry to the sort order list for it ion the config.plist...

As for the _DSM->XDSM, I added it to onfig.plist/ACPI/DSDT/Patches in the form of...

<key>Comment</key>
<string>Rename _DSM to XDSM</string>
<key>Disabled</key>
<false/>
<key>Find</key>
<data>
X0RTTQ==
</data>
<key>Replace</key>
<data>
WERTTQ==
</data>
</dict>

Thank you!

No "Problem Reporting" files attached.
Read FAQ, "Problem Reporting" again. Carefully. Attach all requested files/output.
https://www.tonymacx86.com/threads/faq-read-first-laptop-frequent-questions.164990/
 

Attachments

  • EFI.zip
    6.5 MB · Views: 447
oops.. I am sorry. Attached are the updated files with the above mentioned changes.
Thanks!

The intention of this idea is to use native ACPI.
Remove all files from ACPI/patched except SSDT-PEG0-PEGP-Spoof.aml.
Then set config.plist/ACPI/SSDT/DropOem=false.

Your current setup cannot be expected to do what is intended as there is a duplicate _DSM method.
You forgot to apply "Remove _DSM methods" to your patched files, and the _DSM->XDSM patch does not apply to ACPI/patched/SSDT*.aml.
 
Status
Not open for further replies.
Back
Top