Contribute
Register

High Sierra with NVidia Maxwell GPU + Nvidia Drivers = Cannot restart or halt computer

Joined
Jan 31, 2011
Messages
442
Motherboard
ASUS ROG RAMPAGE VI EXTREME
CPU
i9-7980XE
Graphics
Nvidia GeForce GTX Titan X (Maxwell)
Hi,

I would like to gather information about this issue that apparently is impacting High Sierra builds that have a Nvidia Maxwell GPU with the Nvidia Drivers.

It appears that a bunch of people (including myself) have noticed that they are unable to restart or shutdown their computer when the Nvidia Drivers are installed. When halt or reboot is being performed it appears that the screen goes black (GPU stops providing video out) at the end of the restart/halt process but it seems that halt/reboot is never triggered after that. The issue disappears when the Nvidia drivers are removed.

My GPU: GTX Titan X (Maxwell)

I've been able to replicate this issue with several Nvidia Drivers for High Sierra, and I haven't been able to find one that is not causing this behaviour. Could the issue be related to something else?

Any clue anyone?
 
Joined
Dec 31, 2016
Messages
36
Motherboard
Gigabyte Z170MX Gaming 5
CPU
i5-6600K
Graphics
Vega 64
Mac
MacBook
Mobile Phone
Android, iOS
Were you able to figure out what the issue was with your build?

I am experiencing the exact same issue on my machine with an Nvidia GTX 1070.

When I try to restart or shutdown my machine, the screen goes black. However, I still have the cursor on the screen and am able to move it. But, the machine never restarts or shuts down.
 
Joined
Jan 31, 2011
Messages
442
Motherboard
ASUS ROG RAMPAGE VI EXTREME
CPU
i9-7980XE
Graphics
Nvidia GeForce GTX Titan X (Maxwell)
@vlgngrbrdmn, I was able to fix the issue on my build.

All I had to do was to inject the NVidia card through ACPI patch:

Code:
DefinitionBlock ("", "SSDT", 1, "NICO", "X299", 0x00000000)
{
    External (_SB_.PC02.BR2A, DeviceObj)    // (from opcode)
    External (_SB_.PC02.BR2A.GFX0, DeviceObj)    // (from opcode)
    External (GFX0, DeviceObj)    // (from opcode)
    External (GPRW, MethodObj)    // 2 Arguments (from opcode)

    Scope (_SB.PC02.BR2A)
    {
        Scope (GFX0)
        {
            OperationRegion (PCIS, PCI_Config, Zero, 0x0100)
            Field (PCIS, AnyAcc, NoLock, Preserve)
            {
                PVID,   16, 
                PDID,   16
            }

            Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
            {
                Return (GPRW (0x69, 0x04))
            }

            Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
            {
                Store (Package (0x14)
                    {
                        "built-in", 
                        Buffer (One)
                        {
                             0x00                                           
                        }, 

                        "device-id", 
                        Buffer (0x04)
                        {
                             0x06, 0x1B, 0x00, 0x00                         
                        }, 

                        "hda-gfx", 
                        Buffer (0x0A)
                        {
                            "onboard-2"
                        }, 

                        "AAPL,slot-name", 
                        Buffer (0x07)
                        {
                            "Slot-1"
                        }, 

                        "@0,connector-type", 
                        Buffer (0x04)
                        {
                             0x00, 0x08, 0x00, 0x00                         
                        }, 

                        "@1,connector-type", 
                        Buffer (0x04)
                        {
                             0x00, 0x08, 0x00, 0x00                         
                        }, 

                        "@2,connector-type", 
                        Buffer (0x04)
                        {
                             0x00, 0x08, 0x00, 0x00                         
                        }, 

                        "@3,connector-type", 
                        Buffer (0x04)
                        {
                             0x00, 0x08, 0x00, 0x00                         
                        }, 

                        "@4,connector-type", 
                        Buffer (0x04)
                        {
                             0x00, 0x08, 0x00, 0x00                         
                        }, 

                        "@5,connector-type", 
                        Buffer (0x04)
                        {
                             0x00, 0x08, 0x00, 0x00                         
                        }
                    }, Local0)
                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                Return (Local0)
            }
        }

        Device (HDAU)
        {
            Name (_ADR, One)  // _ADR: Address
            Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
            {
                Store (Package (0x0C)
                    {
                        "built-in", 
                        Buffer (One)
                        {
                             0x00                                           
                        }, 

                        "device-id", 
                        Buffer (0x04)
                        {
                             0xEF, 0x10, 0x00, 0x00                         
                        }, 

                        "AAPL,slot-name", 
                        Buffer (0x07)
                        {
                            "Slot-1"
                        }, 

                        "device_type", 
                        Buffer (0x16)
                        {
                            "Multimedia Controller"
                        }, 

                        "name", 
                        Buffer (0x1D)
                        {
                            "NVIDIA High Definition Audio"
                        }, 

                        "hda-gfx", 
                        Buffer (0x0A)
                        {
                            "onboard-2"
                        }
                    }, Local0)
                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                Return (Local0)
            }
        }
    }

    Method (DTGP, 5, NotSerialized)
    {
        If (LEqual (Arg0, ToUUID ("a0b5b7c6-1318-441c-b0c9-fe695eaf949b")))
        {
            If (LEqual (Arg1, One))
            {
                If (LEqual (Arg2, Zero))
                {
                    Store (Buffer (One)
                        {
                             0x03                                           
                        }, Arg4)
                    Return (One)
                }

                If (LEqual (Arg2, One))
                {
                    Return (One)
                }
            }
        }

        Store (Buffer (One)
            {
                 0x00                                           
            }, Arg4)
        Return (Zero)
    }
}
This DSDT above also allowed me to get rid of NvidiaGraphicsFixup.kext completely. However, I got it back recently to fix the lag issue for the latest NVidia drivers. I haven't noticed (yet) any issue in using NvidiaGraphicsFixup.kext again in combination of the above DSDT implementation.

Edit: Forgot to add a few things.
 
Last edited:
Joined
Dec 31, 2016
Messages
36
Motherboard
Gigabyte Z170MX Gaming 5
CPU
i5-6600K
Graphics
Vega 64
Mac
MacBook
Mobile Phone
Android, iOS
@vlgngrbrdmn, I was able to fix the issue on my build.

All I had to do was to inject the NVidia card through ACPI patch:

Code:
    External (_SB_.PC02.BR2A, DeviceObj)    // (from opcode)
    External (_SB_.PC02.BR2A.GFX0, DeviceObj)    // (from opcode)
    External (GFX0, DeviceObj)    // (from opcode)

    Scope (_SB.PC02.BR2A)
    {
        Scope (GFX0)
        {
            OperationRegion (PCIS, PCI_Config, Zero, 0x0100)
            Field (PCIS, AnyAcc, NoLock, Preserve)
            {
                PVID,   16,
                PDID,   16
            }

            Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
            {
                Return (GPRW (0x69, 0x04))
            }

            Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
            {
                Store (Package (0x14)
                    {
                        "built-in",
                        Buffer (One)
                        {
                             0x00                                          
                        },

                        "device-id",
                        Buffer (0x04)
                        {
                             0x06, 0x1B, 0x00, 0x00                        
                        },

                        "hda-gfx",
                        Buffer (0x0A)
                        {
                            "onboard-2"
                        },

                        "AAPL,slot-name",
                        Buffer (0x07)
                        {
                            "Slot-1"
                        },

                        "@0,connector-type",
                        Buffer (0x04)
                        {
                             0x00, 0x08, 0x00, 0x00                        
                        },

                        "@1,connector-type",
                        Buffer (0x04)
                        {
                             0x00, 0x08, 0x00, 0x00                        
                        },

                        "@2,connector-type",
                        Buffer (0x04)
                        {
                             0x00, 0x08, 0x00, 0x00                        
                        },

                        "@3,connector-type",
                        Buffer (0x04)
                        {
                             0x00, 0x08, 0x00, 0x00                        
                        },

                        "@4,connector-type",
                        Buffer (0x04)
                        {
                             0x00, 0x08, 0x00, 0x00                        
                        },

                        "@5,connector-type",
                        Buffer (0x04)
                        {
                             0x00, 0x08, 0x00, 0x00                        
                        }
                    }, Local0)
                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                Return (Local0)
            }
        }

        Device (HDAU)
        {
            Name (_ADR, One)  // _ADR: Address
            Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
            {
                Store (Package (0x0C)
                    {
                        "built-in",
                        Buffer (One)
                        {
                             0x00                                          
                        },

                        "device-id",
                        Buffer (0x04)
                        {
                             0xEF, 0x10, 0x00, 0x00                        
                        },

                        "AAPL,slot-name",
                        Buffer (0x07)
                        {
                            "Slot-1"
                        },

                        "device_type",
                        Buffer (0x16)
                        {
                            "Multimedia Controller"
                        },

                        "name",
                        Buffer (0x1D)
                        {
                            "NVIDIA High Definition Audio"
                        },

                        "hda-gfx",
                        Buffer (0x0A)
                        {
                            "onboard-2"
                        }
                    }, Local0)
                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                Return (Local0)
            }
        }
    }

    Method (DTGP, 5, NotSerialized)
    {
        If (LEqual (Arg0, ToUUID ("a0b5b7c6-1318-441c-b0c9-fe695eaf949b")))
        {
            If (LEqual (Arg1, One))
            {
                If (LEqual (Arg2, Zero))
                {
                    Store (Buffer (One)
                        {
                             0x03                                          
                        }, Arg4)
                    Return (One)
                }

                If (LEqual (Arg2, One))
                {
                    Return (One)
                }
            }
        }

        Store (Buffer (One)
            {
                 0x00                                          
            }, Arg4)
        Return (Zero)
    }
This DSDT above also allowed me to get rid of NvidiaGraphicsFixup.kext completely. However, I got it back recently to fix the lag issue for the latest NVidia drivers. I haven't noticed (yet) any issue in using NvidiaGraphicsFixup.kext again in combination of the above DSDT implementation.
Thanks! I will have to look into doing this with my GPU and see if I can get it to work.
 
Joined
Jul 18, 2014
Messages
55
Motherboard
Asus Prime X299 De Luxe
CPU
i9-7980XE
Graphics
Radeon VII
Mac
MacBook Pro, Mac Pro
Classic Mac
Power Mac
Mobile Phone
iOS
Hi @Thireus and @vlgngrbrdmn ;

I'm having the same problems, I have a titan x Maxwell with High Sierra 10.13.4, it works perfectly but when I want to restart or shut down the system the screen turns black and the computer does not turn off. The same equipment with a Titan Pascal works perfectly, but with the Maxwell it does not work. I have read that the solution is to inject Nvidia but I do not know in which part of the clover or how, I would appreciate it if you could help me, thanks.
 
Joined
Jan 31, 2011
Messages
442
Motherboard
ASUS ROG RAMPAGE VI EXTREME
CPU
i9-7980XE
Graphics
Nvidia GeForce GTX Titan X (Maxwell)
@eiriasemrys, @WoodCabin, @shael, FYI I resolved the Nvidia X Maxwell issue to restart/halt computer by implementing the DSDT injection seen in post #3. You need to create you own DSDT.aml with the content of post #3 and Clover will do the rest.

You need a bit of knowledge to do it, to know what's the PCIE lane name where your GPU is located. Then use MaciASL, compile your DSDT.aml and place it in EFI/Clover/ACPI/patched. You can send me your .ioreg file, and I can try to do it for you: Use IORegistryExplorer to save it.
 
Last edited:
Joined
Jul 18, 2014
Messages
55
Motherboard
Asus Prime X299 De Luxe
CPU
i9-7980XE
Graphics
Radeon VII
Mac
MacBook Pro, Mac Pro
Classic Mac
Power Mac
Mobile Phone
iOS
@eiriasemrys, @WoodCabin, @shael, FYI I resolved the Nvidia X Maxwell issue to restart/halt computer by implementing the DSDT injection seen in post #3. You need to create you own DSDT.aml with the content of post #3 and Clover will do the rest.

You need a bit of knowledge to do it, to know what's the PCIE lane name where your GPU is located. Then use MaciASL, compile your DSDT.aml and place it in EFI/Clover/ACPI/patched. You can send me your .ioreg file, and I can try to do it for you: Use IORegistryExplorer to save it.

I attached the IOreg and my EFI folder, in case I have to change something in the config.plist or add some extension in / others

Thank you very much, a beer if you come to Valencia! ;)
 

Attachments

Joined
Jan 31, 2011
Messages
442
Motherboard
ASUS ROG RAMPAGE VI EXTREME
CPU
i9-7980XE
Graphics
Nvidia GeForce GTX Titan X (Maxwell)
I attached the IOreg and my EFI folder, in case I have to change something in the config.plist or add some extension in / others

Thank you very much, a beer if you come to Valencia! ;)
Here you go. Give it a try and let me know. To be placed in ./EFI/CLOVER/ACPI/patched/

Updated file in: #11
 
Last edited:
Joined
Jul 18, 2014
Messages
55
Motherboard
Asus Prime X299 De Luxe
CPU
i9-7980XE
Graphics
Radeon VII
Mac
MacBook Pro, Mac Pro
Classic Mac
Power Mac
Mobile Phone
iOS
[QUOTE = "Thireus, post: 1730635, member: 22313"] Aquí tienes. Inténtalo y cuéntame. Para colocarse en ./EFI/CLOVER/ACPI/patched/[/QUOTE]


I have not had luck, I have to activate something in the clover? Bios? change any extension? Thanks
 
Joined
Jan 31, 2011
Messages
442
Motherboard
ASUS ROG RAMPAGE VI EXTREME
CPU
i9-7980XE
Graphics
Nvidia GeForce GTX Titan X (Maxwell)
Nothing else to change, just place the file in ./EFI/CLOVER/ACPI/patched/.

In PCI devices of MacOS System information, do you see the Nvidia card?
 
Last edited:
Top