Contribute
Register

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

I am running Clover Dual boot with both MacOS Sierra and Windows 10. I have followed the instructions on direct update for High Sierra and was able to create the installation option in Clover. However stuck with the same WindowServer error.

I have followed the Option 3 instructions to create a DSDT spoof to disable the discrete NVidia but still cannot proceed with the installation. I am uploading my Clover folder for your verification.

PS: I have ordered the spoof DSDT to the sort order in plist, but i do not see that loading from the origin files dump. Also, If I choose the Sierra boot option, I am able to boot to it and use it without issue.

Could you kindly help me navigate this issue and complete the installation?

Your device is at path: _SB.PCI0.PEG0.PEGP, but your SSDT-DiscreteSpoof.aml is using _SB.PCI0.RP05.PEGP.
Why do you expect that to work?
 
I tried the add properties method and enabled Nvidia injection it didn't work Should I add any boot arguments

Read post #1, "Problem Reporting".
 
here is the file that u need thank you
 

Attachments

  • CLOVER.zip
    7.2 MB · Views: 120
here is the file that u need thank you

No verbose boot photo provided.

Keep in mind you will need to inject Intel in order to use the Intel graphics drivers.
And obviously the monitor will need to be connected to the motherboard HDMI/DP/DVI port.
And BIOS settings will need to be correct for onboard graphics.
 
No verbose boot photo provided.

Keep in mind you will need to inject Intel in order to use the Intel graphics drivers.
And obviously the monitor will need to be connected to the motherboard HDMI/DP/DVI port.
And BIOS settings will need to be correct for onboard graphics.
I only have Nvidia I don't ah Intel in my desktop
Also now the monitor is just like it is disconnected frkm the pc
 
I only have Nvidia I don't ah Intel in my desktop
Also now the monitor is just like it is disconnected frkm the pc

You will need to add a compatible graphics card just to make it through the installer.
Or figure out a way to make your Nvidia work in the installer.

This guide disables any graphics drivers from loading on the Nvidia such that the Intel onboard can be used. Without Intel graphics, not much use to you.
 
Overview

If you have a dual-GPU (Intel+Nvidia or Intel+AMD Radeon), you may have trouble reaching the macOS High Sierra installer. It is a new bug in the system somewhere that stalls boot if the VESA drivers try to connect to the secondary (discrete) graphics device.

There are essentially three methods you might employ to avoid this:
- disable the card in BIOS (but not all laptop BIOS implementations provide such an option)
- disable the card in in ACPI as per this guide: https://www.tonymacx86.com/threads/guide-disabling-discrete-graphics-in-dual-gpu-laptops.163772/
OR
- inject a few properties on the graphics device that prevent the base VESA drivers from loading

It is the third/last method mentioned that this guide will cover.

Background information: https://www.tonymacx86.com/threads/...-on-haswell-intel-4600hd.231800/#post-1582114


Determine ACPI path

In order to inject the needed properties using an add-on SSDT, you must first determine the ACPI path of the device. If you have an ioreg (from a working Sierra install, for example), you can determine the path from that ioreg (if someone has such an ioreg, please attach it, for an example in this post).

But you can also determine it by looking at extracted ACPI files.

The process:
- use Clover F4 to extract native ACPI files to ACPI/origin
- disassemble the files
- search for a method named _OFF
- examine the resulting files to determine the ACPI path

For this guide, we will use the files from the discrete disable guide: https://www.tonymacx86.com/threads/guide-disabling-discrete-graphics-in-dual-gpu-laptops.163772/

Download the attachment so you can follow along.

First, we disassemble all the files (see ACPI patching guide for more information on iasl and disassembly):
Code:
iasl -dl DSDT.aml SSDT*.aml

Next, we search for Method definitions with method name _OFF:
Code:
grep -l Method.*_OFF *.dsl

For these set of files, we have this result:
Code:
SSDT-10.dsl
SSDT-11.dsl

Now we know what files to look at to find the _OFF method. Because once we find the _OFF method, it is easy to see the ACPI path that the _OFF method resides.

Opening SSDT-10.dsl, we find the _OFF method there is in a PowerResource macro, therefore is not the one we want:
Code:
        PowerResource (PC05, 0x00, 0x0000)
        {
            Name (_STA, One)  // _STA: Status
            Method (_ON, 0, Serialized)  // _ON_: Power On
            {
...
            }

            Method (_OFF, 0, Serialized)  // _OFF: Power Off

Looking at SSDT-11.dsl, we find the _OFF method we want:
Code:
        Method (_OFF, 0, Serialized)  // _OFF: Power Off
        {
            If (LEqual (CTXT, Zero))
            {
                \_SB.PCI0.LPCB.EC0.SPIN (0x96, Zero)
                If (LNotEqual (GPRF, One))
                {
                    Store (VGAR, VGAB)
                }

                Store (One, CTXT)
            }

            SGOF ()
        }

If you click within the method, you will see the MaciASL status bar shows the ACPI path:
View attachment 281456

This corresponds to the code in the file that defines this method in that scope:
Code:
    Scope (\_SB.PCI0.RP05.PEGP)
    {
...
        Method (_OFF, 0, Serialized)  // _OFF: Power Off
        {
...

So, now we have the path: _SB.PCI0.RP05.PEGP, it is time to create the SSDT that matches.


Creating the spoof SSDT

The original code provided in the reference post:
Code:
// save as SSDT-DiscreteSpoof.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 },
        })
    }
}

But our path is different, so:
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 },
        })
    }
}

To create the SSDT-DiscreteSpoof.aml, run MaciASL, select File->New, paste the code into the resulting window, choose File->Save As, set format: ACPI Machine Language Binary, give the file name as SSDT-DiscreteSpoof.aml, and save to somewhere you know how to find (such as the desktop).

Then place that file at EFI/Clover/ACPI/patched/SSDT-DiscreteSpoof.aml.


Other considerations

This method uses a _DSM method in an SSDT to inject the properties. If your native ACPI has an existing _DSM method at that path, you will need to rename it, because otherwise the native _DSM conflicts with the _DSM the SSDT is adding. Typically, this is done by entering a _DSM->XDSM patch in your config.plist/ACPI/DSDT/Patches. This patch is provided in all my guide plists, but is disabled.

This is how it looks in Xcode once it is enabled:
View attachment 281459

Also, if you're using SortedOrder in your config.plist (not likely for a Clover setup for the installer), you will need to be certain to add SSDT-DiscreteSpoof.aml to it. If SortedOrder is specified, Clover only loads the SSDTs specified in it. If it is not listed, it will not load even though present in ACPI/patched.


Problem Reporting

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

I did it according to instructions. The installation functioned however at the start afterwards : graphics scheduler preemption disabled!

1. Installation - done
2. Cannot start
 

Attachments

  • IMG_20171002_193749.jpg
    IMG_20171002_193749.jpg
    1.8 MB · Views: 223
I did it according to instructions. The installation functioned however at the start afterwards : graphics scheduler preemption disabled!

1. Installation - done
2. Cannot start

It is obvious you didn't read/follow the guide:
- your verbose output proves you didn't use the guide config.plist (all guide plists use nv_disable=1)
- your profile is not complete

You need to follow the guide:
https://www.tonymacx86.com/threads/guide-booting-the-os-x-installer-on-laptops-with-clover.148093/
 
Back
Top