Contribute
Register

[FIX] "Window Server Service only ran for 0 seconds" with dual-GPU

I didn't find OFF method!
An update for AMD Radeon HD 7650M
Display only works wen i disable ATI inject(4mb)
 
I know this thread is about laptops but this is the most relevant thread I have seen.

I have desktop with onboard intel graphics and 2 Nvidia 980ti cards. I use this to play windows games in SLI

i7 6700k
gigabyte Z170 mb
2 x 980ti
32gb ram
2 x NVMe ssd & hdd

Until High Sierra I had no issues with installers. The only way I got High Sierra to install was to remove on graphics card (onboard gift disabled in BIOS) which is a pain.

Could this guide help me out? Please me know what files I need to upload.

Thanks
 
Last edited:
I didn't find OFF method!
An update for AMD Radeon HD 7650M
Display only works wen i disable ATI inject(4mb)

Your profile shows that you don't have dual GPU. This topic not applicable to your laptop (read the thread title).
 
I know this thread is about laptops but this is the most relevant thread I have seen.

I have desktop with onboard intel graphics and 2 Nvidia 980ti cards. I use this to play windows games in SLI

i7 6700k
gigabyte Z170 mb
2 x 980ti
32gb ram
2 x NVMe ssd & hdd

Until High Sierra I had no issues with installers. The only way I got High Sierra to install was to remove on graphics card (onboard gift disabled in BIOS) which is a pain.

Could this guide help me out? Please me know what files I need to upload.

Thanks

Install using Intel IGPU. Remove Nvidia hardware or inject bogus class-code as suggested in this guide.
Post-install, install Nvidia drivers and add the Nvidia hardware back or remove class-code spoof.
 
As a Sierra user with Nvidia disabled via static patching and considering to update via App Store, Do I need any of those steps on the first post?

Thanks
 
As a Sierra user with Nvidia disabled via static patching and considering to update via App Store, Do I need any of those steps on the first post?

Thanks

As long as you're using that ACPI configuration (with Nvidia disabled) to boot the installer, no.
 
I got it but in case of something gets wrong, I need it anyway for the USB disk, right? So, here how we disabled my card, it was a bit different. And you said:
Nothing in _OFF needs moving. _OFF calls SGOF. And SGOF has EC related code. It is the EC related code in SGOF that must be moved.

I've added what we moved to where below for reference. Here's my SSDT-DiscreteSpoof.aml. Is it correct?

Thanks

Code:
// save as SSDT-DiscreteSpoof.aml
DefinitionBlock ("", "SSDT", 2, "hack", "spoof", 0)
{
    Method(_SB.PCI0.LPCB.EC0.RRAM._DSM, 4)
    {
        If (!Arg2) { Return (Buffer() { 0x03 } ) }
        Return (Package()
        {
            "name", Buffer() { "#display" },
            "IOName", "#display",
            "class-code", Buffer() { 0xFF, 0xFF, 0xFF, 0xFF },
        })
    }
}

I found it in SSDT-10
Code:
        Method (SGOF, 0, Serialized)
        {
            If (LEqual (CCHK (Zero), 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, 0x95)
            \_SB.PCI0.LPCB.EC0.WRAM (0x03A4, Zero)
            \_SB.PCI0.LPCB.EC0.WRAM (0x03A5, Zero)
            Store (LCTL, ELCT)
            Store (SVID, HVID)
            Store (SDID, HDID)
            Store (LREN, LTRE)
            Store (One, LNKD)
            While (LNotEqual (LNKS, Zero))
            {
                Sleep (One)
            }

            SGPO (HLRS, One)
            SGPO (PWEN, Zero)
            Return (Zero)
        }
This one is tricky. Should I cut from 1st Store to 2nd store? Cuz all have EC0?
This code needs to move to _REG:
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, 0x95)
            \_SB.PCI0.LPCB.EC0.WRAM (0x03A4, Zero)
            \_SB.PCI0.LPCB.EC0.WRAM (0x03A5, Zero)
 
I got it but in case of something gets wrong, I need it anyway for the USB disk, right? So, here how we disabled my card, it was a bit different. And you said:


I've added what we moved to where below for reference. Here's my SSDT-DiscreteSpoof.aml. Is it correct?

Thanks

Code:
// save as SSDT-DiscreteSpoof.aml
DefinitionBlock ("", "SSDT", 2, "hack", "spoof", 0)
{
    Method(_SB.PCI0.LPCB.EC0.RRAM._DSM, 4)
    {
        If (!Arg2) { Return (Buffer() { 0x03 } ) }
        Return (Package()
        {
            "name", Buffer() { "#display" },
            "IOName", "#display",
            "class-code", Buffer() { 0xFF, 0xFF, 0xFF, 0xFF },
        })
    }
}

That content is nonsense for SSDT-DiscreteSpoof.aml.
Read post #1.

For disabling the discrete device (instead of just spoofing it), read here:
https://www.tonymacx86.com/threads/guide-disabling-discrete-graphics-in-dual-gpu-laptops.163772/
 
That content is nonsense for SSDT-DiscreteSpoof.aml.
Read post #1.
Hmm, since the method we applied to disable the Nvidia card was a bit different, I thought Spoofing might be different too. Anyways, here's my patch to SSDT-11 for OFF.
Code:
        Method (_INI, 0, NotSerialized)  // _INI: Initialize
        {
            Store (Zero, \_SB.PCI0.RP05.PEGP._ADR)
            //added to turn nvidia/radeon off
            External(\_SB.PCI0.RP05.PEGP._OFF, MethodObj)
            _OFF()
        }
And Spoof file will be
Code:
// save as SSDT-DiscreteSpoof.aml
DefinitionBlock ("", "SSDT", 2, "hack", "spoof", 0)
{
    Method(_SB.PCI0.RP05.PEGP._DSM, 4)
    {
        If (!Arg2) { Return (Buffer() { 0x03 } ) }
        Return (Package()
        {
            "name", Buffer() { "#display" },
            "IOName", "#display",
            "class-code", Buffer() { 0xFF, 0xFF, 0xFF, 0xFF },
        })
    }
}

Is it correct now?

Thanks

For disabling the discrete device (instead of just spoofing it), read here:
https://www.tonymacx86.com/threads/guide-disabling-discrete-graphics-in-dual-gpu-laptops.163772/
We already done this unless this means somehow adding patched DSDT, SSDT-10 and 11 to USB EFI Patched folder. But I find Spoof method is easier to apply and want to stick to it.
 
Just a simple question. What if I am stuck at the same error but I have dual GPU but 2 PCI cards instead of MOBO graphics and PCI GPU? Would I have to do patch something or could I simply disconnect one of them in order to reach the installation and then plug it back once it's done? Would it still happen after the OS is running?

I know this is for laptops only. Just wondering if the same error on desktops is caused by the same issue.
 
Last edited:
Back
Top