Jump to content
Mieze

Tracing back the AMD GPU wakeup issue to its origin

365 posts in this topic

Recommended Posts

Advertisement

Now all we need is a multi monitor fix for more then 2 monitors 

Share this post


Link to post
Share on other sites

awesome work.

Would this work for an RX 580 in an Egpu?

Yes, it should work with the Polaris GPUs too.

 

PS: It would be helpful if someone with a Polaris GPU could send me a dump of the GPU's PCI config space created with lspci (or RW-everything under Windows, etc.) so that I can verify the Base Address Register layout.

 

Mieze

Share this post


Link to post
Share on other sites

Yes, it should work with the Polaris GPUs too.

 

PS: It would be helpful if someone with a Polaris GPU could send me a dump of the GPU's PCI config space created with lspci (or RW-everything under Windows, etc.) so that I can verify the Base Address Register layout.

 

Mieze

Hello Mieze!

Good work you began!

This dump contains lspci dump and more for Polaris GPU   #35  

 

We have three issues with Radeon drivers in HackOS

1. Bad GPU registers initialisation. Hope you resolved this.

2. Bad connectors in PC Videocard compared to Apple's framebuffer. If we set Inject=NO then Apple's driver calculates connectors by itself. But not enough for multimonitors.

3. Bad AMDRadeonX4000GLDriver.bundle (not for Hack). It can't be patched by Clover because it is loaded from user space. I may propose to create better bundle with name like AMDRadeonX4001GLDriver.bundle and patch the name somewhere it used.

Share this post


Link to post
Share on other sites

Great work, Mieze

Thank you for sharing your findings

The patch works perfectly on Sapphire Radeon RX580 Nitro+!!

I don't even need to disable IGPU in BIOS, disabling CSM and setting the IGPU as a primary display is enough

The 4K screen is connected to the  Radeon card and I can boot with all debug messages shown on the screen+ Apple Logo  :hysterical:

I can go to sleep - and wake up. 

:thumbsup_anim:

Share this post


Link to post
Share on other sites

Yes, it should work with the Polaris GPUs too.

 

PS: It would be helpful if someone with a Polaris GPU could send me a dump of the GPU's PCI config space created with lspci (or RW-everything under Windows, etc.) so that I can verify the Base Address Register layout.

 

Mieze

Tell me how you do it and I can dump it for you on my MP5,1 with RX 480

Hope this helps

DarwinDumper_3.0.3_21.10_21.46.29_MacPro5,1_Apple_X64_Unknown_17A405_henrybrock.zip

Share this post


Link to post
Share on other sites

Tell me how you do it and I can dump it for you on my MP5,1 with RX 480

Hope this helps

Hello Pavo,

 

thank you for your friendly offer and the link but Slice already posted a link to this dump a few days ago.

 

Mieze

Share this post


Link to post
Share on other sites

I make little and cosmetic modification of your patch to add correct name, apply correct framebuffer and load custom rom. 

 

For rx 580

Device (GFX1)
                {
                    Name (_ADR, Zero)  // _ADR: Address
                    OperationRegion (PCIB, PCI_Config, Zero, 0x0100)
                    Field (PCIB, AnyAcc, NoLock, Preserve)
                    {
                        Offset (0x10), 
                        BAR0,   32, 
                        BAR1,   32, 
                        BAR2,   64, 
                        BAR4,   32, 
                        BAR5,   32
                    }

                    Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                    {
                        Store (Package (0x1C)
                            {
                                "AAPL,slot-name", 
                                Buffer (0x07)
                                {
                                    "Slot-4"
                                }, 

                                "@0,name", 
                                Buffer (0x0C)
                                {
                                    "ATY,Orinoco"
                                }, 

                                "@1,name", 
                                Buffer (0x0C)
                                {
                                    "ATY,Orinoco"
                                }, 

                                "@2,name", 
                                Buffer (0x0C)
                                {
                                    "ATY,Orinoco"
                                }, 

                                "@3,name", 
                                Buffer (0x0C)
                                {
                                    "ATY,Orinoco"
                                }, 

                                "@4,name", 
                                Buffer (0x0C)
                                {
                                    "ATY,Orinoco"
                                }, 

                                "ATY,Card#", 
                                Buffer (0x0C)
                                {
                                    "113-4E3531U"
                                }, 

                                "ATY,Copyright", 
                                Buffer (0x33)
                                {
                                    "(C) 1988-2017, AMD Technologies Inc."
                                }, 

                                "ATY,Rom#", 
                                Buffer (0x1D)
                                {
                                    "GV-RX580GAMING-8GD/F10/058AE"
                                }, 

                                "ATY,VendorID", 
                                Buffer (0x02)
                                {
                                     0x02, 0x10                                     
                                }, 

                                "ATY,DeviceID", 
                                Buffer (0x02)
                                {
                                     0xDF, 0x67                                     
                                }, 

                                "device_type", 
                                Buffer (0x12)
                                {
                                    "ATY,OrinocoParent"
                                }, 

                                "model", 
                                Buffer (0x13)
                                {
                                    "RX 580 G1 GIGABYTE"
                                }, 

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

                    Method (_INI, 0, NotSerialized)  // _INI: Initialize
                    {
                        If (LEqual (BAR5, Zero))
                        {
                            Store (BAR2, Local0)
                        }
                        Else
                        {
                            Store (BAR5, Local0)
                        }

                        OperationRegion (GREG, SystemMemory, And (Local0, 0xFFFFFFFFFFFFFFF0), 0x8000)
                        Field (GREG, AnyAcc, NoLock, Preserve)
                        {
                            Offset (0x6800), 
                            GENA,   32, 
                            GCTL,   32, 
                            LTBC,   32, 
                            Offset (0x6810), 
                            PSBL,   32, 
                            SSBL,   32, 
                            PTCH,   32, 
                            PSBH,   32, 
                            SSBH,   32, 
                            Offset (0x6848), 
                            FCTL,   32, 
                            Offset (0x6EF8), 
                            MUMD,   32
                        }

                        Store (Zero, FCTL)
                        Store (Zero, PSBH)
                        Store (Zero, SSBH)
                        Store (Zero, LTBC)
                        Store (One, GENA)
                        Store (Zero, MUMD)
                    }
                }

                Device (HDAU)
                {
                    Name (_ADR, One)  // _ADR: Address
                    Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                    {
                        Store (Package (0x02)
                            {
                                "hda-gfx", 
                                Buffer (0x0A)
                                {
                                    "onboard-1"
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }
                }

for r9 290x

Device (GFX2)
                {
                    Name (_ADR, Zero)  // _ADR: Address
                    OperationRegion (PCIB, PCI_Config, Zero, 0x0100)
                    Field (PCIB, AnyAcc, NoLock, Preserve)
                    {
                        Offset (0x10), 
                        BAR0,   32, 
                        BAR1,   32, 
                        BAR2,   64, 
                        BAR4,   32, 
                        BAR5,   32
                    }

                    Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                    {
                        Store (Package (0x1A)
                            {
                                "AAPL,slot-name", 
                                Buffer (0x07)
                                {
                                    "Slot-1"
                                }, 

                                "@0,name", 
                                Buffer (0x0B)
                                {
                                    "ATY,Baladi"
                                }, 

                                "@1,name", 
                                Buffer (0x0B)
                                {
                                    "ATY,Baladi"
                                }, 

                                "@2,name", 
                                Buffer (0x0B)
                                {
                                    "ATY,Baladi"
                                }, 

                                "@3,name", 
                                Buffer (0x0B)
                                {
                                    "ATY,Baladi"
                                }, 

                                "ATY,Card#", 
                                Buffer (0x11)
                                {
                                    "113-C6710101-100"
                                }, 

                                "ATY,Copyright", 
                                Buffer (0x25)
                                {
                                    "(C) 1988-2017, AMD Technologies Inc."
                                }, 

                                "ATY,Rom#", 
                                Buffer (0x36)
                                {
                                    "C67101 HAWAII XT A0 GDDR5 4GB 64MX32 STILT MLU +37.5M"
                                }, 

                                "ATY,VendorID", 
                                Buffer (0x02)
                                {
                                     0x02, 0x10                                     
                                }, 

                                "ATY,DeviceID", 
                                Buffer (0x02)
                                {
                                     0xB0, 0x67                                     
                                }, 

                                "device_type", 
                                Buffer (0x11)
                                {
                                    "ATY,BaladiParent"
                                }, 

                                "model", 
                                Buffer (0x14)
                                {
                                    "R9 290X Asus MATRIX"
                                }, 

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

                    Method (_INI, 0, NotSerialized)  // _INI: Initialize
                    {
                        If (LEqual (BAR5, Zero))
                        {
                            Store (BAR2, Local0)
                        }
                        Else
                        {
                            Store (BAR5, Local0)
                        }

                        OperationRegion (GREG, SystemMemory, And (Local0, 0xFFFFFFFFFFFFFFF0), 0x8000)
                        Field (GREG, AnyAcc, NoLock, Preserve)
                        {
                            Offset (0x6800), 
                            GENA,   32, 
                            GCTL,   32, 
                            LTBC,   32, 
                            Offset (0x6810), 
                            PSBL,   32, 
                            SSBL,   32, 
                            PTCH,   32, 
                            PSBH,   32, 
                            SSBH,   32, 
                            Offset (0x6848), 
                            FCTL,   32, 
                            Offset (0x6EF8), 
                            MUMD,   32
                        }

                        Store (Zero, FCTL)
                        Store (Zero, PSBH)
                        Store (Zero, SSBH)
                        Store (Zero, LTBC)
                        Store (One, GENA)
                        Store (Zero, MUMD)
                    }
                }

                Device (HDAU)
                {
                    Name (_ADR, One)  // _ADR: Address
                    Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                    {
                        Store (Package (0x02)
                            {
                                "hda-gfx", 
                                Buffer (0x0A)
                                {
                                    "onboard-1"
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }
                }

post-916820-0-24004600-1508706389_thumb.png

post-916820-0-42508500-1508706414_thumb.png post-916820-0-13936000-1508706431_thumb.png

post-916820-0-29941900-1508706475_thumb.png

Share this post


Link to post
Share on other sites

I make little and cosmetic modification of your patch to add correct name, apply correct framebuffer and load custom rom. 

 

Yes, iIt can be done this way but it's also possible to let Clover inject these properties. In the end, both methods lead to the same result. Nevertheless, thank you!

 

Mieze

Share this post


Link to post
Share on other sites

Yes, iIt can be done this way but it's also possible to let Clover inject these properties. In the end, both methods lead to the same result. Nevertheless, thank you!

 

Mieze

True, but clover can not load two defriend framebuffer selected by me.  

Share this post


Link to post
Share on other sites

Thank you Mieze

My RX 580 work fine

CSM disable, RX 580 Primary

Only one more thinks - add HDAU in DSDT for HDMI Audio

All great work! :)

Share this post


Link to post
Share on other sites

Just want to confirm, that Miezes patch from first post is working on my config as well. IGPU and CSM completely disabled in BIOS.

just have to make some "preperations" to make a tripple-monitor-setup working and some cosmetic changes as well,

as already Matthew82 has documented.

 

So now, i no longer nee LILU and WhatEverGreen kexts.

Thanx for another incredible work. Love it. Makes my Hackintosh so much easier.

Share this post


Link to post
Share on other sites

Really great, I'm working with two GPU r9 270x and r9 270, on an AMD fx platform, with InjectAti and Framebuffer Futomaki in Clover, and with LILU and WhatEverGreen in kexts 10.12/10.13

 

 

I do not have a selection for IGPU,

but only enable CSM and legacy Vbios,\and inserted inject Ati and Fbuffer into Clover

Mac Pro di carlo.zip

Schermata 2017-10-23 alle 00.19.21.png

Schermata 2017-10-23 alle 00.19.28.png

Schermata 2017-10-23 alle 00.19.28.png

Share this post


Link to post
Share on other sites

@Mieze

 

Thanks a lot for this great solution.

 

Does this method work on Legacy BIOS as well or it only applies to UEFI? 

 

I have an old GA-EP45-DS3R and a Sapphire 7790 GPU which was working with WheteverGreen and Lilu, but ever since macOS High Sierra it's not working anymore. I get the black screen.

 

Thanks again

Share this post


Link to post
Share on other sites

Confirmed working without Whatevergreen.kext on Sapphire Nitro+ RX 580 4GB, High Sierra (10.13). Used SSDT aml provided by slice in clover patched folder. With clover injection System information looks better (shows as RX 480). Without clover injection still works and shows as AMD R9 XXX. Might need some cosmetic DSDT patch to show correct information. Sleep works. I have:

 

1. CSM Disabled

2. IGPU enabled

3. Primary Display PEG

4. ig-platform-id for HD 630 as 0x59120003 for quicksync

5. Lilu.kext and IntelGraphicsFixup.kext for quicksync

 

Everything works fine including hardware decoding by HD 630. SMBIOS used iMac18,3

Share this post


Link to post
Share on other sites

with the patch, on Sapphire nitro+ RX 580 I can get the machine to work on single monitor, however, dual monitor is still not working. dual monitor didn't work with whatevergreen.kext too. Dual monitor works on 10.12.6 but second monitor fails to get signal in 10.13. 

(both monitor connected to DP ports, where ports are DP,DP,HDMI,HDMI, DDVI, both monitor are 4k monitor). 

 

I know some of us have same or similar card and working dual monitor setup. It would be of great help if anyone can give me directions to get my setup working. 

 

Thanks.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By dmpcoke
      Hi,
       
      I followed the OC guide, and installed Catalina 10.15.5 on my PC.
      The installation went very well. Most parts also work well after I login to the desktop except the following
      issue:
      Each time I tried to log back into the desktop from sleep, I would get a black screen very shortly after I entered the desktop.
      And black screen will last from a few seconds to a few minutes, no exact lasting time.
      Keyboards and mouse are still working during black screen, I can see the operations after the monitor works again.
       
      It connects LG monitor via DP port and I tried to modified the dp version between 1.2 and 1.4, got the same issue.
       
      Attached my entire OC folder, I'm so appreciated if someone could help me check it out, or tell me which part I should focus on.
       
      Thanks in advance!
       
      P.S. Here is my PC summary: Dell Optiplex 7060 MFF
       
      CPU Intel(R) Core(TM) i3-8100 CPU @ 3.60GHz; 8th Gen, Coffee Lake GPU Intel(R) UHD Graphics 630 RAM Team Group 32 GB (2 × 16GB), 2400 MHz, DDR4 Chipset
      Intel 300 Series LPC (Q370) – A306 Audio Realtek ALC255/3234 (Codec ID: 0x10EC0255) Ethernet Intel(R) Ethernet Connection I219-LM WiFi/BT M.2 BCM43224 802.11a/b/g/n Storage Samsung SSD 970 EVO 500GB USB Ports Type-C × 1,USB 3.0 × 5 Video Output DP × 2 Monitor LG 4K 3840 x 2160 @ 60 Hz
      BIOS v1.4.2 OC.zip
    • By ThomasMattOnline
      Hello Everyone,

      Trying to get Hardware Acceleration working on my Hackintosh (HEVC Support) however I am such a noob, OpenCore is very new to me and would love some support.
      I have included screenshots and the EFI that is currently working on my System, I have USB 2 & 3.0 all working, however, the only thing I can fault is my GPU not being hardware acceleration enabled.

      Final Cut Pro X - Recognises GPU
      VideoProc - Doesn't recognise anything.
       
      (I am running the latest version of OpenCore 0.5.9)

      Things I've tried: I tried following the post https://www.tonymacx86.com/threads/catalina-10-15-2-update-lost-hevc-h265-acceleration.288563/ - No Luck
      I have also tried: https://forums.macrumors.com/threads/activate-amd-hardware-acceleration.2180095/page-53?post=28255048#post-28255048 - No luck either!

      My friend online tells me I shouldn't need such Kext as he has the same build as me but when I load his EFI on my system it boots with no USB 2 or 3.0 (I'm keeping his EFI off here as I've uploaded mine.)

      Please note: I appreciate all (any) pieces of advice and please do bear in mind that I am a noob and may need whatever you say simplifying as I can get easily confused.


      config.plist

    • By Fantome1S
      Finaly Success to boot on Sierra 10.12.6 (16G29) with Touchscreen working theres still things to fix but everything is almost working. During the Corvid StayAtHome Period I was able and have time to make this laptop boot on MacOS after a lot of attemps before going back to job. It was the hardest laptop hackintosh install attemp i've done so far and Sierra OS is the only that works. I tried El Capitan and Mojave and its never boot so I not even tested Catalina. I searched on the web and theres no install guide for this specific laptop or no Success install post on this laptop its look like a not very well supported laptop by hackintosh. Maybe some of you can help me correct the things that still not work. Audio work but with voodo (low sound and low quality) I want to make it work with AppleALC to get better quality sound. Thanks in advance
       
      Things that work:
       
      -Touchscreen
      -Trackpad (not the gesture for now) - Backlight Keyboard
      -EthernetPort and Wireless (with a wifi dongle. I will change to a broadcom wifi mini-pci chip)
      -Brightness Controls with FN key
      -Audio Voodoo ''low sound'' (will tried to change to AppleALC or AppleHDA fix method) 
      -USB 3.0
       
      Things that not work or need to be fixed:
       
      -Weird double long booting screen-first loading bar on the right. after real loading bar is visible ?
      -Audio (Voodoo) work but with low volume sound- still not success to make work AppleALC.kext method
      -SENSORS -CPU-HDD Temperatures, BATTERY LEVEL, ETC…
      - Sleep (Disabled): USB ports not works after wake from sleep
      -Trackpad Gestures
       
      Hardware:
       
      CPU: Intel Core i7-3687U, 2100 MHz
      GPU: Intel HD Graphics 4000
      RAM: 12 GB (4GB soldered + 8 GB Samsung DDR3 1600)
      Motherboard/Laptop model: Intel Panther Point QM77, Intel Ivy Bridge - (HP Revolve 810 G1)
      Audio Codec: IDT 92HD91BXX @ Intel Panther Point PCH - High Definition Audio Controller
      Ethernet Card: Intel(R) 82579LM Gigabit Network Connection
      Wifi/BT Card: Intel(R) Centrino(R) Advanced-N 6235
      HP hs2350 HSPA+ MobileBroadband Network Adapter
    • By miliuco
      Radeon RX 580 8 GB graphics card on macOS High Sierra (as of 10.13.6), Mojave and Catalina on the P55-USB3 board: excellent performance with acceleration (Metal) OOB, no need for drivers (kexts), with 3 drawbacks, one has to do with the boot of the operating system (a solution is proposed), another with the number of rear connectors enabled (a solution is proposed) and another that only affects to one phase of the Mojave or Catalina installation (without clear solution for now).

      I have placed the XFX AMD Radeon RX-580 P8DFD6 8GB Triple X Edition GDDR5, 256BIT, DVI + HDMI + 3DP graphics card on a 10 year old motherboard (Gigabyte P55-USB3) in order to update the hackintosh to 10.14 Mojave and 10.15 Catalina because the card that I have used in past years, Nvidia Geforce GTX 750 1GB, has stopped working after 10.13.6 High Sierra since this was the last version for which Nvidia published the alternate web drivers that were necessary for the card to work well with graphic acceleration.

      The new RX 580 card needs considerably more space than the old one although it fits perfectly in an ATX case, and requires an additional power connector. It has 2 big fans that most of the time are stopped, at least in my case. In macOS it works perfectly, even with Metal acceleration, without additional drivers and without extra settings in Clover. But it has drawbacks that I comment below.

      Alterations during startup

      During the boot of the operating system, when the screen goes from the basic driver to the AMD driver, 2 artifacts appear randomly, they are very short in duration (from one to a few seconds):
      Very short flashing white screen that may or may not be accompanied by purple lines The fans runs for a few seconds (the noise is clearly audible). This behavior is solved with the installation of 2 kexts, Lilu and WhateverGreen. Lilu is an extension created by acidantheraand vit9696 among others whose function is to help to patch kexts, processes and libraries during macOS boot. It is accompanied by specific plugins for the task required, for example WhateverGreen that injects necessary patches for certain AMD, Intel and Nvidia graphics cards. It is mandatory to have both extensions together, one of them separately does not correct the problem.
      I have installed Lilu 1.4.4 and WhateverGreen 1.3.9 in the EFI/CLOVER/kexts/Other folder of the EFI partition and artifacts have disappeared. Remember that these 2 extensions are not necessary for the card to work properly, if you tolerate those very brief distortions of the screen or the noise of the fans running for a few seconds, you can live without Lilu and WhateverGreen.

      Note: authors recommend that when using Lilu and WhateverGreen with Radeon cards, NO graphic settings have to be added to Clover (Inject ATI, etc.).

      Note: these alterations, especially the brief white screen and less frequently purple lines and fan noise, are also seen in Windows and some real Macs with the same card.

      Alteration during macOS installation

      Boot from USB > Clover menu > Install macOS from Install macOS Catalina > screen works fine
      Boot from USB > Clover menu > Install macOS from MacintoshHD > black screen
      Booting from USB > Clover menu > Boot macOS from MacintoshHD > screen works fine.

      In the first and third stages, screen works fine. In the second stage the screen goes black although the installation continues. The user has nothing to do at this moment so you can leave the PC working until the Clover menu is shown again, the screen is recovered, the initial account options can be configured and you can enter into the newly installed system with correct resolution and acceleration.
      This behavior is not corrected even by placing Lilu and WhateverGreen into the USB device. At least in my case I have not found a solution for it. Yo can install macOS perfectly with that drawback of not seeing how it progresses during the second phase of the installation.

      Only 2 connectors of the 5 available work

      This card has 3 Display Port (DP) ports, 1 HDMI port and 1 DVI port. In my case, only 2 DP work, those that are further from the HDMI connector. It is enough if you use a single monitor or 2 monitors that can be connected by DP. But if you want to have 3 or more connected devices or some of them only have HDMI, it is necessary to enable the 5 connectors or at least 4 of them since the DVI is obsolete and does not allow resolutions as high as DP and HDMI.
      User foxbox has proposed a solution in a thread titled [Solved] Sapphire RX 580 Nitro + SE | black screen on HDMI and DVI. Must inject from Clover a modification to the Orinoco framebuffer (which is used in the RX 580 card) so that the 5 connectors lack a fixedly assigned address and, instead, receive it dynamically. This change is made from the KextsToPatch section of Clover. Read the post from foxbox.
      This has to be accompanied by 3 changes in the Graphics section of Clover: Orinoco in FB Name / Inject ATI / 5 in Video Ports. I have tested this solution in macOS Catalina and it effectively enables the 5 ports of the card but, since I only use 1 monitor, I have removed it and I am with Lilu and WhateverGreen.
       

×