Fb0: switching to amdgpudrmfb from EFI VGA

Hello there,

after my last problem, it is me again. It is basically still the same problem, but I managed to get a little bit further.

Without nomodeset the last printed message is fb0: switching to amdgpudrmfb from EFI VGA. Apparently this might not actually mean that my PC hangs, but rather that it fails to output anything new to the screen. Theoretically I should be able to ssh into my PC, but I wasn’t able to test that (WIFI is not activivated until I log in).

With nomodeset enabled I was able to boot into kde neon and install the latest kernel (5.5.0-rc5) and the latest MESA (Mesa 20.0.0-devel from oibaf ppa). I tried that because the Phoronix article mentioned getting it to work that way

I also already tried using the amdgpu.dc=0 boot options, but to no avail. Same goes for using amdgpu.dpm=0, which I read somewhere.

I then tried other kernel versions, but I always end up having the same problem of hanging at the message above.

I tried the exact same setup with my old R7 260X and it work flawlessly.

Is there anything else I can try? I am not yet giving up on my RX 5500XT

[Edit]
I also tried to install kde neon in not-EFI mode, but ran into a different problem there: SEV: failed to get status. Error: 0x0 but that is apparently okay, because we want it to fail if the sev command times out?

first of all, unless your CPU is in AMD’s EPYC series, disable SEV in your motherboard’s firmware. your CPU doesnt support it.

that freeze on switching framebuffers is usually caused by missing firmware files for your particular accelerator. ensure you’ve installed the necessary firmware for your card and distro.

https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/amdgpu
use this link to download the necessary firmware files for your accelerator. the path they go in can vary between distributions.

Thank you for your reply.

I tried looking for a way to disable SEV in my BIOS, but couldn’t find any option for it. In fact, I couldn’t find anything related to virtualization, except maybe the IOMMU setting (which is enabled).

I tried downloading the navi14 files and putting them into lib/firmware/amdgpu/ as that is where I found the apparently already installed navi10 firmware. I then used the command sudo update-initramfs -k all -u to update the initramfs. I think that that is all I have to do to manually install the firmware, but I am not sure. I tried looking for a tutorial online, but they all used other methods of installing firmware. Wendell did make a video and forum post about it for the RX 590.
Sadly, none of this solved my issue. The system still hangs at the same point.

As a reminder to myself and maybe anyone else encountering this problem, here are the steps I took to get to my currently running and stable system:

  • install suitable linux (tested with kubuntu 19.04 and kde neon user edition 20200102-1116)
  • update the system before proceeding
  • set grub timeout to 10 in the grub file in /etc/default/grub
  • set timeout time to menu in the grub file in /etc/default/grub
  • update grub with the command sudo update-grub
  • reboot the system
  • if system doesn’t boot correctly, try changing the boot options in grub to include nomodeset (press ‘e’ in the grub boot selection screen to edit)
  • download the latest kernel from kernel.ubuntu.com (generic, not lowlatency and only for amd64)
  • install the kernel by using sudo dpkg -i ./*.deb in the folder where you downloaded them (only if there are no other .deb files in it!)
  • update the initramfs even if it ran automatically with sudo update-initramfs
  • manually add the navi14 firmware to /lib/firmware/amdgpu
  • fix the file permissions with sudo chown root:root <file> and sudo chmod 644 <file> if necessary (use ls -l in console to check)
  • set the boot-option pci=noats in the grub file in /etc/default/grub
  • update grub with the command sudo update-grub
  • reboot the system
  • install ppa-purge in case a ppa needs to be removed later on
  • add oibaf ppa for latest MESA versions with sudo apt-add-repository ppa:oibaf/graphics-drivers
  • update the system
  • install inxi

The issue was solved with a hint from user ‘theboomboomcars’ on reddit is further explained in a reply here. Apparently this is known and going to be fixed in kernel release 5.5.0-rc6. User ‘agd5f’, a X.Org ATI Driver Developer, on the phoronix board explained the problem like this:

Does pci=noats fix the issue? If so you are seeing an issue with some early vbioses that did not set up ATS. It was supposedly fixed before vbios went to partners. The problem stems from the fact the on Linux the IOMMU drivers enable ATS before the device drivers have loaded so there is no way for drivers to set it up properly before ATS is enabled. If you were to load the GPU driver before the IOMMU driver you wouldn’t see this because the driver would have set up ATS properly. Windows doesn’t use ATS so it’s not an issue there.

Thank you this saved me

It seems like I’m experiencing the exact same issue, but on 5.11 kernel, which is extremely frustrating.

Hi, I m having the exact same issue reported by IvanLuchkin. Black screen on boot up, which I fixed with adding nomodeset in GRUB. Now I am running on generic tv at a lower resolution, with no sound.

Being a newbi I would appreciate if you could tell me where to ’ * set timeout time to menu in the grub file in /etc/default/grub ’ .
Here is the output I get. I can set timeout to 10 but I am not sure what you mean by setting timeout time to menu. Which line is that?

GNU nano 4.8 /etc/default/grub Modified

If you change this file, run ‘update-grub’ afterwards to update

/boot/grub/grub.cfg.

For full documentation of the options in this file, see:

info -f grub -n ‘Simple configuration’

GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=lsb_release -i -s 2> /dev/null || echo Debian
GRUB_CMDLINE_LINUX_DEFAULT=“quiet splash nomodeset”
GRUB_CMDLINE_LINUX=""

Uncomment to enable BadRAM filtering, modify to suit your needs

This works with Linux (no patch required) and with any kernel that obtains

the memory map information from GRUB (GNU Mach, kernel of FreeBSD …)

#GRUB_BADRAM=“0x01234567,0xfefefefe,0x89abcdef,0xefefefef”

Uncomment to disable graphical terminal (grub-pc only)

#GRUB_TERMINAL=console

The resolution used on graphical terminal

note that you can use only modes which your graphic card supports via VBE

you can see them in real GRUB with the command `vbeinfo’

#GRUB_GFXMODE=640x480

Uncomment if you don’t want GRUB to pass “root=UUID=xxx” parameter to Linux

#GRUB_DISABLE_LINUX_UUID=true

Uncomment to disable generation of recovery mode menu entries

#GRUB_DISABLE_RECOVERY=“true”

Uncomment to get a beep at grub start

#GRUB_INIT_TUNE=“480 440 1”