# [SOLVED] boot stops at "switching to amdgpudrmfb from EFI"

## Tickeldi

As the title says, the kernel boot up freezes and is displaying the following message last

"fb: switching to amdgpudrmfb from EFI VGA"

I've got this problem with the Kernel versions 4.9.6 and 4.9.16 but not 4.4.26 which is running right now on this machine.

Here a quite literal screenshot of the situation:

http://i.imgur.com/V9TiaaD.jpg

This is my graphics card:

 *Quote:*   

> 01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Tobago PRO [Radeon R7 360 / R9 360 OEM] (rev 81)

 

Here is the .config for the two kernels that aren't working:

https://pastebin.com/fa5TERCv

At the moment it builds the amdgpu graphics driver but I also tried the classic "radeon" one (I actually tried that one first).

Any idea what I am doing wrong?

----------

## chithanh

Does it make a difference if you compile the amdgpu driver as module instead of built-in?

----------

## DONAHUE

If chithanh suggestion does not get it done; suggest booting a livecd in uefi mode, mounting the root partition, running grep -i fb /mnt/gentoo.

Suspect kernel load succeeds but firmware load fails. See https://stargazerslounge.com/blogs/entry/1946-kernel-4105-boot-problem-with-radeon-r7-370/ which describes similar symptoms.

Looks like linux-firmware and radeon-ucode are lagging the problem possibly related to amd not documenting the Tobago chipset.

----------

## Tickeldi

Chithanhs suggestion did get it done. I am writing this from a system running on the new kernel  :Smile: .

As a module, amdgpu just "takes" the firmware files it needs from the filesystem right?

Your explanation makes sense @DONAHUE but just to be sure that I didn't make a mistake here:

I used https://wiki.gentoo.org/wiki/AMDGPU to look up the needed files.

The relevant entry for the firmware files in my .config:

 *Quote:*   

> CONFIG_EXTRA_FIRMWARE="radeon/bonaire_ce.bin radeon/bonaire_mc.bin radeon/bonaire_me.bin radeon/bonaire_mec.bin radeon/bonaire_pfp.bin radeon/bonaire_rlc.bin radeon/bonaire_sdma1.bin radeon/bonaire_sdma.bin radeon/bonaire_smc.bin radeon/bonaire_uvd.bin radeon/bonaire_vce.bin"

 

Is there a way to find out which firmware files were really loaded by the amdgpu module? dmesg doesn't tell.

EDIT:

 *Quote:*   

> [    2.063240] [drm] Found UVD firmware Version: 1.64 Family ID: 9
> 
> [    2.063457] amdgpu 0000:01:00.0: fence driver on ring 11 use gpu addr 0x0000000000c39d30, cpu addr 0xffffc90003238d30
> 
> [    2.063463] [drm] Found VCE firmware Version: 50.10 Binary ID: 2

 

It doesn't tell me filenames at least.

----------

## DONAHUE

I expected to see filenames in dmesg, after you pointed it out I noted their absence in my dmesg also. Either my memory is faulty (likely) or the trend toward eliminating user friendly messages has eliminated the value of running dmesg | grep -i firmware.

It's good the kernel can still find the correct firmware if allowed to do so.

----------

## chithanh

If building amdgpu as module works, then that points to a missing firmware file in CONFIG_EXTRA_FIRMWARE.

When firmware is missing, the boot process will stall for ~60 seconds per missing firmware file and finally amdgpu initialization will fail.

But you should be able to login via ssh and look at dmesg which file was missing.

----------

## Tickeldi

 *chithanh wrote:*   

> If building amdgpu as module works, then that points to a missing firmware file in CONFIG_EXTRA_FIRMWARE.

 

Thats what I was thinking which is why I posted the configuration I had for that keyword.

 *chithanh wrote:*   

> When firmware is missing, the boot process will stall for ~60 seconds per missing firmware file and finally amdgpu initialization will fail.
> 
> But you should be able to login via ssh and look at dmesg which file was missing.

 

Thats a very good idea. I didn't try that before because I thought the whole thing froze. I will try that tomorrow and see which file was missing.

----------

## DONAHUE

dmesg does show the name of first missing firmware file of several, example: *Quote:*   

>  [    0.570113] [drm] amdgpu kernel modesetting enabled.
> 
> [    0.570128] checking generic (c0000000 7e9000) vs hw (c0000000 10000000)
> 
> [    0.570128] fb: switching to amdgpudrmfb from EFI VGA
> ...

 

----------

## Tickeldi

Yes it does.  :Smile: 

It won't show the path to the files if they are being loaded without error though.

However. The entry that was missing was "radeon/bonaire_k_smc.bin". So the wiki is - at least in my case - incomplete.

To generate the names of the correct firmware files for my card they instruct me to take the result of

echo  *Quote:*   

> radeon/bonaire_{ce,mc,me,mec,pfp,rlc,sdma1,sdma,smc,uvd,vce}.bin

 . To work for me it would need to be

 *Quote:*   

> radeon/bonaire_{ce,k_smc,mc,me,mec,pfp,rlc,sdma1,sdma,smc,uvd,vce}.bin

 .

Do I need an account to propose changes there?

Anyway. This is solved I guess.  :Smile:  Thanks for the help!

EDIT: I've made an account in the wiki and updated the page.

----------

