Jump to content

Tracing back the AMD GPU wakeup issue to its origin


Mieze
368 posts in this topic

Recommended Posts

Thanks for your advice and help.

Booted by Clover 4289 in FX-6300 hackintosh the instant reboot issue on wake up from sleep can be fixed by put FakeSMC.kext (3.5.0), Lilu (1.2.1), & WhateverGreen (1.1.2) in /S/L/E instead of EFI/CLOVER/kexts/Other at 10.10.5(14F1807), 10.11.6(15G1004), 10.12GM & 10.12.6 (16G1036), but not worked yet at 10.13.2 (17C60c).

Only booted by Enoch 2905 can fix this issue at 10.13.2 up to now.

 

[Edit]

Booted by Clover 4288/4289 in Intel Z87 hackintosh the instant reboot issue on wake up from sleep can be fixed by put FakeSMC.kext (3.5.0), Lilu (1.2.1), & WhateverGreen (1.1.2) in /S/L/E instead of EFI/CLOVER/kexts/Other at 10.13.2(17C60c) at last !

However it is Not always working. Sometimes OK, most times failed.

Need better solution !

In Intel Z87 hackintosh the instant reboot issue on wake up from sleep can be fixed by put FakeSMC.kext (3.5.0), Lilu (1.2.1), & WhateverGreen (1.1.2) in /L/E instead of /S/L/E or EFI/CLOVER/kexts/Other at 10.13.2 (17C60c) !

It always worked if Intel HD4600 was disabled at BIOS and enabled AMD Radeon HD 6870 alone.

But it's not always working with AMD Radeon Pro 560 at 10.13.2 (17C60c).

Link to comment
Share on other sites

@Mieze

YOU DID AN AMAZING JOB!!

my Sapphire AMD Radeon RX 460 works well on Sierra without a helper gpu, macpro 5,1 smbios, xeon processors.
waking up form sleep also works well.

I will try to do with High Sierra.

 

you saved my wallet from being empty.

 

but, PCI Device information on System Information is missing.

do I need any modification with my DSDT?

 

Danke schön!!

post-795499-0-69630500-1509965413_thumb.png

Link to comment
Share on other sites

That connectors property is something read by WhateverGreen, not the Radeon kexts. If you need to edit the connectors, you need to patch the kexts.

 

 

No, because Whatevergreen.kext picks up the properties you inject und patches the kext. Without the kext they are useless.

 

Mieze

 

Thank you for clearing that up for me!

Link to comment
Share on other sites

Thank you Mieze this is great! Works on Gigabyte RX 460 in High Sierra 13.2 as well.

 

@Slice, I used your SSDT AMD.aml it works great for Intel is there any way to modify it for a Ryzen build? I know the kernel source is not open but would it be feasible to add AMD support in any way? The latest Bronya kernel has both Intel and AMD support. I can boot on either System with the same drive, I just change clover settings at boot manager menu.

 

Thanks again, this is great stuff.

Link to comment
Share on other sites

@xtddd

 

i enable rx580 with ssdt.amd but it show AMD 9XXX 8G...how to resolve it ..thx. 

you can rewrite your GPU name in clover config.plist.
I changed the name like below

<key>KernelAndKextPatches</key>
    <dict>
        <key>KextsToPatch</key>
        <array>
            <dict>
                <key>Comment</key>
                <string>Cosmetic Modify for Radeon RX 460 for AMD9500Controller</string>
                <key>Find</key>
                <data>UjkgeHh4</data>
                <key>Name</key>
                <string>AMD9500Controller</string>
                <key>Replace</key>
                <data>UlggNDYw</data>
            </dict>
        </array>
    </dict>
</key>

you can find the model name (like AMD 9xxx) in AMD9510Contorller that is included in AMD9510Controller.kext/Contents/MacOS/AMD9510Controller. open the file with a hex editor, and find your model name which your machine shows.

please refer a pic in my post, http://www.insanelymac.com/forum/topic/328549-tracing-back-the-amd-gpu-wakeup-issue-to-its-origin/page-4?do=findComment&comment=2529812


Thank you Mieze this is great! Works on Gigabyte RX 460 in High Sierra 13.2 as well.

@Slice, I used your SSDT AMD.aml it works great for Intel is there any way to modify it for a Ryzen build? I know the kernel source is not open but would it be feasible to add AMD support in any way? The latest Bronya kernel has both Intel and AMD support. I can boot on either System with the same drive, I just change clover settings at boot manager menu.

Thanks again, this is great stuff.

 

@Gigamaxx

did you modify any kext-s??

I tried as same DSDT as in Sierra (lower sierra), but black screen occurred. however the signal seemed to come to my monitor.

Link to comment
Share on other sites

you can rewrite your GPU name in clover config.plist.

I changed the name like below

did you modify any kext-s??

I tried as same DSDT as in Sierra (lower sierra), but black screen occurred. however the signal seemed to come to my monitor.

Use this SSDT, I created it for @xtddd's RX580 and he confirmed that it works on High Sierra. Give it a try with Sierra and let me know.

RX580 SSDT.zip

  • Like 3
Link to comment
Share on other sites

@xtddd

 

 

you can rewrite your GPU name in clover config.plist.

I changed the name like below

 

<key>KernelAndKextPatches</key>    <dict>        <key>KextsToPatch</key>        <array>            <dict>                <key>Comment</key>                <string>Cosmetic Modify for Radeon RX 460 for AMD9500Controller</string>                <key>Find</key>                <data>UjkgeHh4</data>                <key>Name</key>                <string>AMD9500Controller</string>                <key>Replace</key>                <data>UlggNDYw</data>            </dict>        </array>    </dict></key>
you can find the model name (like AMD 9xxx) in AMD9510Contorller that is included in AMD9510Controller.kext/Contents/MacOS/AMD9510Controller. open the file with a hex editor, and find your model name which your machine shows.

please refer a pic in my post, http://www.insanelymac.com/forum/topic/328549-tracing-back-the-amd-gpu-wakeup-issue-to-its-origin/page-4?do=findComment&comment=2529812

 

 

@Gigamaxx

did you modify any kext-s??

I tried as same DSDT as in Sierra (lower sierra), but black screen occurred. however the signal seemed to come to my monitor.

No, only FakeSMCkext in Clover “Other” folder. No vanilla kexts modified. I checked with IORegistry and no lilu or Whatevergreen added, I checked S/L/E and L/E folders as well nothing but the dsdt in Clover ACPI patched folder.
  • Like 2
Link to comment
Share on other sites

It may be just me but I wouldn’t mix things up with SSDT and kext injection. If one method can accomplish both then just stay with that method. Mixing methods can have you running down a rabbit hole when troubleshooting

  • Like 3
Link to comment
Share on other sites

Use this SSDT, I created it for @xtddd's RX580 and he confirmed that it works on High Sierra. Give it a try with Sierra and let me know.

 

@cyberdevs

I edited my DSDT like the one Mieze showed. using the dsdt, my RX460 works on Sierra (lower Sierra) without a helper gpu or additional kexts.

it don't work on High Sierra 13.1 (not beta). the black screen occurs, but a signal seems to come to my monitor.

in safe mode (-x arugument), DP and HDMI are active, DVI is not.

I think I confused you. 

 

but, thank you for your kindness. :)

 

 

anyway, do I need to rollback to Sierra (lower sierra) kexts??

Link to comment
Share on other sites

@cyberdevs

I edited my DSDT like the one Mieze showed. using the dsdt, my RX460 works on Sierra (lower Sierra) without a helper gpu or additional kexts.

it don't work on High Sierra 13.1 (not beta). the black screen occurs, but a signal seems to come to my monitor.

in safe mode (-x arugument), DP and HDMI are active, DVI is not.

I think I confused you. 

 

but, thank you for your kindness. :)

 

 

anyway, do I need to rollback to Sierra (lower sierra) kexts??

Send me your edited DSDT via PM and I'll take a look. Although there are plenty of great people that are more qualified than me for the task; and can you please update your signature with your hardware specs that would make troubleshooting much easier.

 

Do you have iGFX enabled or is it disabled when you try to boot into macOS High Sierra?

 

RX460 nd RX580 have different device IDs so if you use the SSDT I mentioned it won't work because it is optimized for RX580

 

RX460's Device ID is 67EF and RX580's ID is 67DF.

 

You can also use the SSDT that Slice posted here. It should work on both Sierra and High Sierra

  • Like 1
Link to comment
Share on other sites

@Mieze

 

 I guess this is only concerning gpus which already have their device-ids included in amd kexts???  

No, any supported AMD GPU which may be driven by the Apple provided kexts can use this patch in order to solve the wakeup issue but of course you'll have select a framebuffer (and in some cases also a framebuffer patch) which matches your graphics card.

 

Mieze

Edited by Mieze
  • Like 1
Link to comment
Share on other sites

@cyberdevs

I edited my DSDT like the one Mieze showed. using the dsdt, my RX460 works on Sierra (lower Sierra) without a helper gpu or additional kexts.

it don't work on High Sierra 13.1 (not beta). the black screen occurs, but a signal seems to come to my monitor.

in safe mode (-x arugument), DP and HDMI are active, DVI is not.

I think I confused you. 

 

but, thank you for your kindness. :)

 

 

anyway, do I need to rollback to Sierra (lower sierra) kexts??

Check the framebuffer and the kext's configuration options in its Info.plist for changes in 13.1 against 12.6 as Apple most likely changed something which causes the problem with 13.1.

 

Mieze

Link to comment
Share on other sites

Send me your edited DSDT via PM and I'll take a look. Although there are plenty of great people that are more qualified than me for the task; and can you please update your signature with your hardware specs that would make troubleshooting much easier.

 

Do you have iGFX enabled or is it disabled when you try to boot into macOS High Sierra?

 

RX460 nd RX580 have different device IDs so if you use the SSDT I mentioned it won't work because it is optimized for RX580

 

RX460's Device ID is 67EF and RX580's ID is 67DF.

 

You can also use the SSDT that Slice posted here. It should work on both Sierra and High Sierra

 

 

Check the framebuffer and the kext's configuration options in its Info.plist for changes in 13.1 against 12.6 as Apple most likely changed something which causes the problem with 13.1.

 

Mieze

on High Sierra, with using my DSDT which works well on lower Sierra, my screen receives a signal from my RX 460, but the black screen occurs.

I found that window server crashed every 30 seconds.

Process:               WindowServer [295]
Path:                  /System/Library/PrivateFrameworks/SkyLight.framework/Versions/A/Resources/WindowServer
Identifier:            WindowServer
Version:               600.00 (312.11)
Code Type:             X86-64 (Native)
Parent Process:        launchd [1]
Responsible:           WindowServer [295]
User ID:               88

Date/Time:             2017-11-08 19:46:53.342 +0900
OS Version:            Mac OS X 10.13.1 (17B48)
Report Version:        12

Exception Type:        EXC_BAD_INSTRUCTION (SIGILL)
Exception Codes:       0x0000000000000001, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Termination Signal:    Illegal instruction: 4
Termination Reason:    Namespace SIGNAL, Code 0x4
Terminating Process:   exc handler [0]

Application Specific Information:
StartTime:2017-11-08 19:46:53
GPU:AMD
MetalDevice for accelerator(0x3713): 0x7fa440a005b8 (MTLDevice: 0x7fa43f055e00)
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/PEG0@1/IOPP/PEGP@0/ATY,AMD,RadeonFramebuffer@2/AMDFramebufferVIB

I can log in via SSH, but can't log in via VNC.

 

any suggestion please??

  • Like 1
Link to comment
Share on other sites

@rioredstone

I think you should try to replace four kexts from low Sierra. The panic similar.

Which kexts should be replaced?

 

I've been trying to get my display to work on my GA-EP45-DS3R with And Radeon 7790 I have the same problem. There is no PEGP in the DSDT to apply the patch to, the SSDT doesn't work either.

But when the macOS Sierra loads with Lilu and WhateverGreen I see that the display is detected on PEGP\GFX0 in IOReg.

But when I replace the AMD8000Controller.kext and AMDRadeonX4000.kext it works but there's no acceleration and the VRAM is only 7MB (This is with Lilu and WhateverGreen not the current DSDT patch method)

  • Like 1
Link to comment
Share on other sites

@cyberdevs

 

Why do you replace AMD8000Controller and AMDRadeonX4000 ?

 

You just add you device ID in them, if it's not there.

 

First: Add your device ID ONLY in AMD8000Controller and

sudo rm /System/Library/PrelinkedKernels/prelinkedkernel
sudo touch /System/Library/Extensions
sudo kextcache -u /
and reboot

After reboot ur GPU should be recognized BUT without acceleration.

 

The 7790 needs a patched frame buffer /System/Library/Extensions/AMD8000Controller.kext/Contents/MacOS/AMD8000Controller.

 

Meaning that you need to follow VLADs guide to decode your connectors.

 

After you have patched it you can add your device ID to AMDRadeonX4000 to get acceleration.

 

hth

Link to comment
Share on other sites

@cydevs

 

Why do you replace AMD8000Controller and AMDRadeonX4000 ?

 

You just add you device ID in them, if it's not there.

 

First: Add your device ID ONLY in AMD8000Controller and

sudo rm /System/Library/PrelinkedKernels/prelinkedkernel
sudo touch /System/Library/Extensions
sudo kextcache -u /
and reboot

After reboot ur GPU should be recognized BUT without acceleration.

 

The 7790 needs a patched frame buffer //System/Library/Extensions/AMD8000Controller.kext/Contents/MacOS/AMD8000Controller.

Meaning that you need to peruse VLADs guide to decode your connectors by perusing your video bios.

The device ID is supported natively by macOS (0x1002665c) and it's in both AMD8000Controller.kext and the AMDRadeonX4000.kext already.

 

The problem is that on my old rig High Sierra has the black screen. I think that's because of the old BIOS structure rather than kexts themselves.

 

I can easily use this GPU on any UEFI based mainboards and it work pretty well on both Sierra and High Sierra with both methods (The one that Mieze found and with WhateverGreen)

 

I don't need to patch the connectors because they work on a single display setup but for multiple displays I need to patch them (which I already did)

P.S:

 

This is only a puzzle for me that I like to solve if possible.

  • Like 1
Link to comment
Share on other sites

×
×
  • Create New...