dakanji / RefindPlus

A Boot Manager for Mac and PC
GNU General Public License v3.0
332 stars 66 forks source link

MacPro5,1 with RX580 does not display RefindPlus screen #110

Closed mark-heiple closed 2 years ago

mark-heiple commented 2 years ago

RefindPlus Version

Pre-Release Code Build

Device Type

Apple Mac

Problem Description

I am using the version of RefindPlus as installed by MyBootMgr, whatever version was available on 4/16/2022.

I used MyBootMgr to install RefindPlus, for the purpose of getting a boot screen so that I can dual boot between macOS High Sierra and Linux Mint 20. I'm not interested in installing newer unsupported versions of macOS.

My mac has both an RX580 (in the x16 bottom slot) and a HD 5770 (in the 2nd x4 slot). When the monitor is connected to the HD5770, everything is fine. Plugged into the RX580 - nothing. The numeric keys don't start any OS either.

I had used refind before using MyBootMgr to install refindPlus. I thought I had cleared out all the previous refind files from the EFI volume, buy maybe not. The /BOOT/BOOTx64.efi file appears to be the one installed by MyBootMgr. The boot screen identifies itself as RefindPlus, not Refind.

With only the HD5770, or both the HD5770 and the RX580 installed and the monitor attached to the HD5770 I get a boot screen and can successfully boot both Linux and macOS.

With both video cards installed and the monitor attached to the RX580, I get no boot screen - screen stays dark. Number 4 on the keyboard should start macOS, 5 Linux with my setup. However pressing both 4 and 5 does not start either OS.

I tried removing the HD5770, so only the RX580 is installed. I still get no boot screen and the keyboard commands to select an OS don't work.

Before installing OpenCore/RefindPlus, macOS would boot with the RX580 (and without the HD5770) but does not display a boot screen.

Problem Point

Before RefindPlus loads

Affected Items

Other

Debug Log

opencore-2022-04-16-164315.txt 22h23t1247.log

Additional Context

No response

dakanji commented 2 years ago

Was your RX580 bought new or used?

mark-heiple commented 2 years ago

It was bought new as a factory installed item when I bought the Mac Pro (used) from OWC

dakanji commented 2 years ago

Good. Used examples can have had the VBIOS modified for crypto mining and assuming you have not modified the VBIOS yourself, it is showing some odd characteristics, we can park that item for now.

Firstly, apologies for being preachy, you have to at least know the version of stuff you are running on your machine with respect to this: whatever version was available on 4/16/2022. If you don't or have forgotten, you should be able to go back to look at the file you downloaded as this will have the version string.

Anyway, I happen to know that there has been an update since 16 Apr 2022 (I assume that is what 4/16/22 refers to). So, download the current version and try again with that.

If trying MacOS directly from RefindPlus fails, reboot, try blindly loading OpenCore (use Key 1) and give an update on the outcome.

mark-heiple commented 2 years ago

Where can I find just refindPlus? It looks like I just need to rename it to BOOTx64.efi and move it to /EFI/BOOT but don't really need MyBootMgr.

dakanji commented 2 years ago

Yes, you could just position and rename if you prefer.

This may mean you account for any changes in the config file for that version and given the request for an OpenCore test, that the current version of OpenCore and any configuration fixes for OpenCore addressed in the current version of MyBootMgr from the one you originally used are also taken care of.

You can find releases of projects on GitHub by following the Releases link on the main GitHub page of such projects.

github-actions[bot] commented 2 years ago

This item has been flagged for closure due to a lack of response.

mark-heiple commented 2 years ago

I haven't had a chance to do much further experimenting but plan to this week. Just copying over the new RefindPlus did not work, refindplus did not load and it reverted to the Apple boot manager. Blessing it again also failed, the message was something about it not being valid. I downloaded MyBootMgr 080, recreated a config and deployed it. I have it working again, the next step will be to swap out the HD5770 for the RX 580 and see if it works. I am waiting for a usb-c card to arrive, which I will install at the same time.

I've attached the config that was generated and the latest boot log to verify that the config is valid.

22j08f5320.log config.conf.txt custom.conf.txt DebugLog_ConfigFactory.log

mark-heiple commented 2 years ago

I also discovered a potential problem - I have 3 drives in my system SSD #1 has my operating systems and has several partitions, including macOS High Sierra and Mint 20. SSD #2 is partitioned for the macOS /Users (hfs+) and Linux /home (ext4) directories. They are mounted in each from /etc/fstab. The 3rd drive is a hard drive used primarily for backups/archiving.

Both SSDs have a efi partition with the same uuid. I noticed under linux that while refindplus was loading from #1, the efi partition from #2 was being mounted as /boot/efi. I used gparted to generate a new uuid, so now they are different and the correct one mounts. I don't know if that could have caused any problems.

dakanji commented 2 years ago

The partitions stuff is highly unlikely to be a factor on getting a display before selecting a loader.

  1. Did you try booting with Key 1 to run OpenCore?
  2. Just struck me to ask that when you say you have disconnected the HD5770, does this mean you have physically removed it from the Mac or just that you disconnected the supplementary power to the GPU?

Note that simply disconnecting the supplementary power may not necessarily mean disconnection. That cable supplies additional power but bear in mind that power is drawn from the PCI slot and if the GPU is sitting there connected to the slot, it may not be totally deactivated ... Just something to consider.

dakanji commented 2 years ago

In terms of oddities ...

This section (finding UGA on the GPU Handle) should not be appearing on RX580, a GOP-Only GPU unless the VBIOS has been modified ... Such as when flashed by some outfits to provide a boot screen:

                     - Seek Universal Graphics Adapter
                       * Seek on ConsoleOut Handle ... Not Supported
                       * Seek on Handle Buffer ... Success
                       ** Examine Handle[00] ... Success
                       *** Select Handle[00] @   640 x 480  
                       ** Examine Handle[01] ... Success
                       *** Select Handle[01] @  1920 x 1080 
                     - Assess Universal Graphics Adapter ... ok

This section should return NOT OK!! on a MacPro5,1 ... It actually did in your earlier logs

                     - Seek Graphics Output Protocol
                       * Seek on ConsoleOut Handle ... Success
                     - Assess Graphics Output Protocol ... ok

Your earlier log did not have any Leverages GOP entries and RefindPlus could not find a path to GOP on any handle. This appears to have changed

   3:214    0:037  Handle 0x043   * Success                 - Not PCIe Device : Leverages GOP
   3:237    0:022  Handle 0x102 ... Skipped [Parent Device] - PCI(00|00:00.0)
   3:260    0:022  Handle 0x103 ... Skipped [Parent Device] - PCI(00|00:01.0)
   3:282    0:022  Handle 0x104 ... Skipped [Parent Device] - PCI(00|01:00.0)
   3:305    0:022  Handle 0x105 ... Skipped [Parent Device] - PCI(00|02:02.0)
   3:328    0:022  Handle 0x106 ... Skipped [Parent Device] - PCI(00|02:04.0)
   3:351    0:022  Handle 0x107 ... Skipped [Parent Device] - PCI(00|00:03.0) : Leverages GOP
   3:381    0:030  Handle 0x108 ... Skipped [Parent Device] - Monitor Display : Leverages GOP

Are you sure you are running the same GPU as before or have you flashed it since?

dakanji commented 2 years ago

From your ConfigFactory log:

Model_GPU:- AMD Radeon HD 5770 ... Legacy_AMD:- true

It is building your OpenCore config based on the HD5770.

That is, it is findable and seems you definitely need to physically remove it.

startergo commented 2 years ago

That only means he has a UGA GPU installed in the Mac. It will always try to display the boot screen there if detected.

mark-heiple commented 2 years ago

The first time I installed using MyBootMgr, I had both the HD5770 and RX580 installed, with the monitor plugged into the HD5770. I was hoping that after I got it installed, I could then plug the monitor into the RX580, but nothing worked - no screen, no keyboard either.

I have since found some docs that say that starting with High Sierra, macOS will kernel panic if there is both a non-Metal and a Metal graphics card installed. I'm wondering if that is what happened when I moved the monitor to the RX580.

This time, I ran MyBootMgr with only the HD5770 installed - the RX580 has been removed. My plan was to swap them (remove the HD5770, replace with the RX580) and hopefully the config would still work. It sounds like you are saying that since the refindplus config was created without the RX580 installed, it still won't work?

Is there an option I can turn on in config.config to make it work, or do I need to start over again with only the RX580 installed?

With only the RX580 is installed, will the current config respond to keypresses and start macOS, even if the boot screen doesn't work?

I am still running with system integrity disabled. The main reason I had to hunt down a HD5770 was to disable it, as it can only be done from recovery mode and there is no way to get into recovery mode without a mac video card...

I have not tried running with OpenCore yet.

startergo commented 2 years ago

Hd 5770 needs To be removed from the PCIE slot if you have RX-580 installed.

dakanji commented 2 years ago

That only means he has a UGA GPU installed

Indeed. You apparently only get this when that is the case:

   0:593    0:024  Apple Framebuffers:- '1' 

Not sure where the GOP detected came from if that was the only GPU connected though. Must confess I haven't run RefindPlus with HD 5770. Maybe it does have some GOP implementation behind the scenes. Many of the "UGA-Only" GPUs are infact hybrids. Need to put my HD5770 through RefindPlus to see for myself at some point.

With only the RX580 is installed, will the current config respond to keypresses and start macOS, even if the boot screen doesn't work?

You should get the RefindPlus screen and be able to toggle SIP ON or OFF with RefindPlus using the shield tool. The idea is to only have the RX580 connected (HD 5770 physically removed).

Is there an option I can turn on in config.config to make it work, or do I need to start over again with only the RX580 installed?

Running ConfigFactory with HD5770 only affects the OpenCore config generated and not the RefindPlus one.

OpenCore might still work, albeit without GPU acceleration (can't recollect exactly right now) but RefindPlus will work either way.

dakanji commented 2 years ago

Another item that crossed my mind is that I don't think the RX580 is actually properly supported by HiSierra in the first place and that you need to be on Mojave for full support due to missing and/or incomplete drivers

mark-heiple commented 2 years ago

Everything I've read says High Sierra is the minimum version that supports the RX580, but it is fully supported. I don't want to go to Mojave because I want to keep my system HFS+.

dakanji commented 2 years ago

High Sierra is the minimum version that supports the RX580, but it is fully supported

Presume you meant to say but it is NOT fully supported. If so, then we are talking about the same thing when I said it is not properly supported. In the end it probably works OK in HiSierra. GPU Acceleration was added in a late Mojave update.

mark-heiple commented 2 years ago

I've never seen anything saying that the RX580 is not fully supported.

But in any case, I plugged in the RX580 and removed the HD5770 -- and no screen. Keypresses don't start anything either, it just sits there dead to the world.

I have no idea what else to try - I need working video to set up a MyBootMgr configuration - which only works with the HD5770.

mark-heiple commented 2 years ago

Did some more fiddling, and discovered that for some reason the RX580 isn't outputting video from the DVI port, but does (when booting macos) output from the HDMI ports. I was able to boot into macOS with just the RX580, created and installed a new MyBootMgr configuration. Still no boot screen. Pressing 4 successfully boots macOS and I get video. Soft blessed and rebooted, this time tried pressing 1 to get into opencore. Still no video, and couldn't get anything to boot since I couldn't see the menu. The following files are the logs, plus the result of the 'press 4' and 'press 1' runs. 22j11b3307 (4 to boot macos).log 22j11b4111 (1 to boot opencore).log config.conf.txt custom.conf.txt DebugLog_ConfigFactory.log opencore-2022-05-11-011857 (4 to boot macos).txt opencore-2022-05-11-014102 (1 to boot opencore).txt

dakanji commented 2 years ago

Thanks.

From the log output, your RX580 is definitely non-standard ... Could it be the 'Lite' Edition? https://forums.macrumors.com/posts/28515375 Probably not as those apparently do not have DVI ports at all.

Main issue is that unlike what is typical, your unit is not doing anything that will make it possible to show a screen until MacOS starts loading.

What is expected on a GPU using GOP, such as the RX580, is that around the time you hear the chime, GOP is initialised but you don't get a screen until MacOS starts loading under a normal setup. Tools such as RefindPlus and OpenCore can however use this GOP presence to display a screen.

When this initialisation has not taken place, GOP will be missing on device handles

Could Not Find Path to GOP on Any Device Handle

Alternatively, this initial GOP setup may been attempted but failed on a Legacy MacPro. In such cases, the OptionROM will still be stting in the RAM. RefindPlus applies a fix for the typical cause of such failures, gets the OptionROM from the RAM and reruns it.

In your case, there was no OptionROM in the RAM

Acquire OptionROM on Volatile Storage ... Not Found

This says there was no attempt to init GOP by the time RefindPlus started which is the expected case with RX580.

There are some other different things but anyway, run through the following tests one after the other:

  1. RX580 should be dual BIOS. Try to find the BIOS Switch (it is tiny and easily missed), switch to the other VBIOS and see if this makes a difference. The alternative VBIOS typically does not work well on Macs but worth a try.
  2. Eliminate the chance that RefindPlus is responsible for the screen not showing by blessing OpenCore with the BootBleesser app instead of RefindPlus. This removes RefindPlus from the boot chain and loads OpenCore directly.

Note that you can boot blindly into OpenCore. Unfortunately, it is not yet clear how the arrangement is determined so you just have to start from Key 1 and work towards 9 untill you hit the OS you want. You have to reboot each time you get it wrong obviously.

If those two do not change things, then it is the case that your RX580 simply cannot provide the screen.

One option that might work for you is to set the text_only token in RefindPlus which would probably work to give a text based but clear working way to select your load options.

Since you do not appear to actually need OpenCore, you can then delete the OpenCore folders and remove the relevant entries from the RefindPlus config file (remember to clear the trash while the ESP is still mounted after). On future updates, just replace the BOOTx64 file. Remember to switch to REL to avoid your ESP getting clogged up by log files over time.

startergo commented 2 years ago
Found 2 pointer devices - Success
00:796 00:010 OCC: GOP exists on ConsoleOutHandle and has 0 modes
00:806 00:010 OCC: Looking for GOP replacement due to invalid mode count
00:817 00:010 OCC: Alternative GOP status is - Not Found
00:826 00:009 OCC: Missing compatible GOP - Not Found
00:836 00:009 OC: Requested resolution is 0x0@0 (max: 1, force: 0) from Max
00:847 00:011 OCC: Requesting 0x0@0 (max: 1) resolution, curr 0, total 0
00:858 00:011 OCC: Current FB at 0x0 (0x0), format 0, res 0x0 scan 0
00:870 00:011 OCC: No compatible mode for 0x0@0 (max: 1) resolution
00:880 00:010 OC: Changed resolution to 0x0@0 (max: 1, force: 0) from Max - Not Found
00:891 00:010 OCC: Found 1 handles with UGA draw
00:900 00:009 OCC: Found 1 handles with GOP for UGA check
00:909 00:009 OCC: Trying handle 0 - 75D6BA98
00:919 00:009 OCC: Skipping UGA proxying as it is already present on handle 0 - 75D6BA98
00:928 00:009 OCC: Using builtin text renderer with 1 scale
00:940 00:011 OCC: ASCII Text Reset [RenderResync] - Load Error
00:951 00:011 OCC: Setup ASCII Output - Load Error
00:962 00:010 OC: Requested console mode is 0x0 

where is this UGA draw coming from?

00:891 00:010 OCC: Found 1 handles with UGA draw
00:900 00:009 OCC: Found 1 handles with GOP for UGA check
00:909 00:009 OCC: Trying handle 0 - 75D6BA98
00:919 00:009 OCC: Skipping UGA proxying as it is already present on handle 0 - 75D6BA98

That is only on real Mac cards.

The first open core log he provided is this:

Connecting drivers done...
00:856 00:013 OC: Found 3 pointer devices - Success
00:869 00:012 OCC: GOP exists on ConsoleOutHandle and has 1 modes
00:881 00:012 OC: Requested resolution is 0x0@0 (max: 1, force: 0) from Max
00:894 00:012 OCC: Requesting 0x0@0 (max: 1) resolution, curr 0, total 1
00:907 00:013 OCC: Current FB at 0x80010000 (0x40000000), format 1, res 1920x1080 scan 1920
00:920 00:013 OCC: Mode 0 - 1920x1080:1
00:934 00:013 OCC: Current mode matches desired mode 0
00:947 00:013 OC: Changed resolution to 0x0@0 (max: 1, force: 0) from Max - Already started
00:960 00:012 OCC: Found 3 handles with UGA draw
00:972 00:012 OCC: Found 2 handles with GOP for UGA check
00:985 00:012 OCC: Trying handle 0 - 75D6BC18
00:998 00:013 OCC: Skipping UGA proxying as it is already present on handle 0 - 75D6BC18
01:012 00:013 OCC: Trying handle 1 - 75B3B718
01:025 00:013 OCC: Skipping UGA proxying as it is already present on handle 1 - 75B3B718
01:039 00:013 OCC: Using builtin text renderer with 1 scale
01:104 00:065 OCC: Install console control (7356D920/0/0), current - Success
01:116 00:012 OCC: Setup ASCII Output - Success
01:129 00:012 OC: Requested console mode is 0x0 (max: 0) 

GOP exists and has one handle. Is it from the RX-580 only?

Maybe he can test these settings: https://github.com/acidanthera/bugtracker/issues/1498#issuecomment-782875887

dakanji commented 2 years ago

The stuff about compatible GOP had been gone over in RefindPlus

On this:

where is this UGA draw coming from?

See:

There are some other different things

I had to stop listing stuff somewhere and cut it short.

Maybe he can test these settings

Will not make a difference. The issue is fundamental and beyond tinkering at the edges. GOP is not installed. Full stop.

Only real hope for being able to select loaders is to use text mode ... unless switching the VBIOS works.

startergo commented 2 years ago

First OC log says there is GOP handle:

Connecting drivers done...
00:856 00:013 OC: Found 3 pointer devices - Success
00:869 00:012 OCC: GOP exists on ConsoleOutHandle and has 1 modes
00:881 00:012 OC: Requested resolution is 0x0@0 (max: 1, force: 0) from Max
00:894 00:012 OCC: Requesting 0x0@0 (max: 1) resolution, curr 0, total 1
00:907 00:013 OCC: Current FB at 0x80010000 (0x40000000), format 1, res 1920x1080 scan 1920
00:920 00:013 OCC: Mode 0 - 1920x1080:1
00:934 00:013 OCC: Current mode matches desired mode 0
00:947 00:013 OC: Changed resolution to 0x0@0 (max: 1, force: 0) from Max - Already started
00:960 00:012 OCC: Found 3 handles with UGA draw
00:972 00:012 OCC: Found 2 handles with GOP for UGA check
00:985 00:012 OCC: Trying handle 0 - 75D6BC18
00:998 00:013 OCC: Skipping UGA proxying as it is already present on handle 0 - 75D6BC18
01:012 00:013 OCC: Trying handle 1 - 75B3B718
01:025 00:013 OCC: Skipping UGA proxying as it is already present on handle 1 - 75B3B718
01:039 00:013 OCC: Using builtin text renderer with 1 scale
01:104 00:065 OCC: Install console control (7356D920/0/0), current - Success
01:116 00:012 OCC: Setup ASCII Output - Success
01:129 00:012 OC: Requested console mode is 0x0 (max: 0) 
startergo commented 2 years ago

@mark-heiple extract the vbios from the RX-580 and attach it here.

mark-heiple commented 2 years ago

How do I extract the vbios? I don't have a PC, if that is required to do it.

startergo commented 2 years ago

AMD/ATI BIOS ROM:

ioreg -arw0 -d1 -n display | xpath '//key[.="ATY,bin_image"]/following-sibling::*[1]/text()' | base64 -D -o ~/Desktop/vbios.rom

or


ioreg -arw0 -d1 -n GFX0 | xpath '//key[.="ATY,bin_image"]/following-sibling::*[1]/text()' | base64 -D -o ~/Desktop/vbios.rom
dakanji commented 2 years ago

First OC log says there is GOP handle

MP51 firmware installs GOP on the ConsoleOut handle. This is done before RefindPlus loads

   0:605    0:046  ConsoleOut Modes:
                     - Mode = Text           : YES
                     - Mode = Graphics (UGA) :  NO
                     - Mode = Graphics (GOP) : YES

The ConsoleOut handle is not a GPU handle . The GPU should install its own GOP on device handles which would work with the ConsoleOut handle GOP This MP51 ConsoleOut GOP does not work with most GPUs and needs to be replaced with a working one from the GPU. This replacement is how the picker screen is provided on MP51 ... MP31 does not need this process

                     - Seek Graphics Output Protocol
                       * Seek on ConsoleOut Handle ... Success
                     - Assess Graphics Output Protocol ... NOT OK!!

   8:336    0:219  Seek Replacement GOP Candidates:

   8:367    0:030  INFO: Could Not Find Usable Replacement GOP

A search for a usable GOP candidate on the GPU turned up blank.

Some GPUs execute the ConsoleOut GOP replacement as part of their initialisation. Seems the HD5770 does this, hence the ConsoleOut GOP assessment being ok here: https://github.com/dakanji/RefindPlus/issues/110#issuecomment-1121270251

Many GPUs considered to be UGA units are actually hybrids with both GOP and UGA This is more so the case when the GPU has been flashed as the flashing for Mac bootscreen process can be summed up as replacing a UGA-Only or GOP-Only VBIOS with a UGA/GOP hybrid

The VBIOS on OP's RX580 has almost certainly been modified as it contains UGA. Couldn't locate the GOP but it probably just doesn't get initialised until later

We didn't take my query about whether the GPU was bought new further, but you will note that it was not bought new in the box and was instead acquired as part of a used Mac Pro.

I'll wager OWC tested the GPU (from a trade-in), confirmed it was working as expected when booting into MacOS and simply sold it on.

@mark-heiple ... I need to keep things on track so I can conclude on this issue as it has been dragging on. So before getting into extraction of VBIOS, please run the tests requested earlier and give feedback.

dakanji commented 2 years ago

Right, based on available information, the conclusion is that the inability to show the screen is not RefindPlus related and to do with the GPU. This will be tagged as invalid and subsequently closed.

You can provide the VBIOS dump and continue on the discussion item you created before.