AArch64 UEFI driver for AMD GPUs (for graphics output during boot)

As people are probably aware, there’s an issue on Arm systems that video output from discrete (PCIe) graphics cards isn’t available during boot. That’s because the driver in the option ROM that the host needs to load and run only contains x86 code.

For a few years however, AMD has provided an AArch64 version of that driver for download that people can either load manually at the UEFI Shell or flash onto the card to replace the x86 code.

The process of replacing the driver in the onboard flash can be found at AArch64 option ROMs for AMD GPUs – Work Of Ard.

However it looks like the link to download the driver has changed - it can now be found at AMD AARCH64 GOP Driver.

I had a go at reflashing a card a couple of years ago and failed, but maybe somebody else will have better luck!

2 Likes

Confirming that this procedure works and gets boot screen. I’ve done it on both an R9 Nano and Vega generation gpus.

3 Likes

I have AMD WX2100 card with both x86-64 and aarch64 Option ROM drivers in flash.

Worked fine in Honeycomb. Did not had a chance to check it in other AArch64 UEFI system.

2 Likes

Does loading the driver from the UEFI shell work for you?

It didn’t when I tried a couple of years ago.

Do UEFI implementations have functionality to auto-load EFI drivers from the EFI partition? That would be easier than flashing in hardware. In particular because there is one driver for (allmost) all AMD GPU’s.

2 Likes

Some of them do: for example EDK2 allows you to add drivers loaded from the filesystem during boot. However I haven’t seen anything similar on AMI’s Aptiov.

Yes it can be done on the ASRock Rack board.

There are two ways to do it.

From the OS:

# cd /boot/efi/EFI
# mkdir AMD
# cd AMD
# wget https://download.amd.com/drivers/Arm64Gop_1_68.efi
# efibootmgr -r -c -d /dev/nvme0n1 -p 1 -L amdgop -l "\EFI\AMD\Arm64Gop_1_68.efi"

This is assuming that your EFI partition is the first on /dev/nvme0n1

Using the UEFI Shell, after having downloaded the driver like above:

fs0:
cd \EFI\AMD
bcfg driver add 0 Arm64Gop_1_68.efi "amdgop" 

This worked for me with a Sapphire Pulse AMD Radeon RX 6400.
It did not work with an AMD Radeon WX3200 Pro.

With the WX3200 Pro, the driver would show when running the “drivers” command in the UEFI shell, but it would not activate until running the “connect” command manually.

1 Like