RX 460 and amdgpu

I just bought an RX 460 and want to use it to cure cancer. Er, OK, play games. And for my job, but an older card would probably get that job done better.

The video is basically there, but not sharp. It seems to be straddling the VESA and amdgpu drivers, somehow. Suggesting Vesa are a few things.

First, 3D effects on the desktop do not work

Second:

glxgears
Error: couldn't get an RGB, Double-buffered visual

Third:

glxinfo
name of display: :0
Error: couldn't find RGB GLX visual or fbconfig

Fourth: I could post a lot more, but the most pertinent parts of /var/log/Xorg.0.log:


    22.046] (II) AIGLX: Screen 0 is not DRI2 capable
    22.046] (EE) AIGLX: reverting to software rendering
    22.756] (EE) AIGLX error: dlopen of /usr/lib64/dri/swrast_dri.so failed (/usr/lib64/dri/swrast_dri.so: undefined symbol: _glapi_tls_Dispatch)
    22.756] (EE) GLX: could not load software renderer
    22.756] (II) GLX: no usable GL providers found for screen 0

Fifth, again I could post the whole thing, but the most pertinent parts of the dmesg output are:


    3.639322] fb: switching to amdgpudrmfb from VESA VGA
    3.639360] Console: switching to colour dummy device 80x25
    3.639688] [drm] initializing kernel modesetting (POLARIS11 0x1002:0x67EF 0x1458:0x22DD 0xCF).
    3.639700] [drm] register mmio base: 0xFEA00000
    3.639700] [drm] register mmio size: 262144
    3.639704] [drm] doorbell mmio base: 0xD0000000
    3.639704] [drm] doorbell mmio size: 2097152
    3.639714] [drm] probing gen 2 caps for device 1002:5a16 = 31cd02/0
    3.639715] [drm] probing mlw for device 1002:5a16 = 31cd02
    3.639726] [drm] UVD is enabled in VM mode
    3.639727] [drm] VCE enabled in VM mode
    3.639749] amdgpu 0000:01:00.0: Invalid PCI ROM header signature: expecting 0xaa55, got 0xffff
    3.639787] ATOM BIOS: GV
    3.639799] [drm] GPU post is not needed
    3.639976] amdgpu 0000:01:00.0: Direct firmware load for amdgpu/polaris11_mc.bin failed with error -2
    3.639977] mc: Failed to load firmware "amdgpu/polaris11_mc.bin"
    3.640030] [drm:gmc_v8_0_sw_init [amdgpu]] *ERROR* Failed to load mc firmware!
    3.640054] [drm:amdgpu_device_init [amdgpu]] *ERROR* sw_init of IP block <gmc_v8_0> failed -2
    3.640057] amdgpu 0000:01:00.0: amdgpu_init failed
    3.640060] amdgpu 0000:01:00.0: Fatal error during GPU init
    3.640062] [drm] amdgpu: finishing device.

On the other hand, suggesting the amdgpu driver is in place is this:

lspci -nnk | grep VGA -A2
01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Baffin [Radeon RX 460] [1002:67ef] (rev cf)
        Subsystem: Gigabyte Technology Co., Ltd Device [1458:22dd]
        Kernel modules: amdgpu

Also, the contents of /lib/firmware/amdgpu seem to be fully fleshed out - including the polaris11_mc.bin file that dmesg is complaining about.

Other information:

I have no /etc//X11/xorg.conf

I messed with the files in /etc/X11/xorg.conf.d, but I finally ended up renaming the thing and the video came up just the same (i.e., Vesa, I think). The system created a new xorg.conf.d and put some files in there, the most applicable one seems to be a 50-extensions.conf file that has this:

Section "Extensions"
  Option "XFree86-DGA" "Disable"
EndSection

Lastly, I did a zypper refresh and a zypper up today, so things ought to be pretty current.

I have been messing around and googling this for a couple of weeks now, I think I am in over my head.

Thanks for any help!

No, the kernel driver is not loaded (because the firmware blob isn’t loaded) …what you see is just a listing of applicable kernel drivers that can be used for the adapter. Had the driver been loaded, then you would see a line that says “Kernel driver in use: amdgpu” … (and to see both lines, you’d want to use the -A3 switch)

Is this a new install or did you replace a former video adapter with the rx460? … (i’m sensing your cancer fighting efforts fall under a case of the latter)

Are the firmware files for your device included in your initrd?

# lsinitrd initrd

You don’t need to mess around with xorg (so you can undo any modifications you’ve done there) … as the problem is not xorg

Thanks for your reply. Knowing that xorg is not the source of the problem pruned off half the things I was investigating right off the bat. That was a big help.

You are right about this replacing an older video card: a Radeon 5670. I know. I upgrade in pieces over time.

Your comment about the lsinitrd pointed me toward getting educated about something I did not know I needed to know. Your suspicion was correct - my initrd did not include any amdgpu stuff. So I tried this

dracut --hostonly --fwdir /lib/firmware/amdgpu  --force

This created a ton of complaints about missing firmware; the paths in the complaints pointed to a simple “solution:”

dracut --hostonly --fwdir /lib/firmware --force

This was counter-intuitive, as I thought this was the default. Whatever: the bad news is that X won’t come up now. The good news is that a) dracut had no complaints about the firmware, b) the firmware appears in the initrd, and c) the dmesg output seems much more cheery. I’d say this is actually progress: I think the amdgpu module is loaded, but it exposes the next problem, which was in /etc/Xorg.0.log:

   701.644] (II) UnloadModule: "vesa"
   701.644] (II) Unloading vesa
   701.644] (--) Depth 24 pixmap format is 32 bpp
   701.644] (II) AMDGPU(0): [DRI2] Setup complete
   701.644] (II) AMDGPU(0): [DRI2]   DRI driver: radeonsi
   701.644] (II) AMDGPU(0): [DRI2]   VDPAU driver: radeonsi
   701.644] (II) AMDGPU(0): Front buffer pitch: 7168 bytes
   701.645] (II) AMDGPU(0): SYNC extension fences enabled
   701.645] (II) AMDGPU(0): Present extension enabled
   701.645] (==) AMDGPU(0): DRI3 enabled
   701.645] (==) AMDGPU(0): Backing store enabled
   701.645] (II) AMDGPU(0): Direct rendering enabled
   701.645] (WW) glamor0: Failed to get GLSL version
   701.645] (EE) AMDGPU(0): Failed to initialize glamor.
   701.645] (EE) AMDGPU(0): Acceleration initialization failed
   701.645] (II) AMDGPU(0): 2D and 3D acceleration disabled
   701.645] (==) AMDGPU(0): DPMS enabled
   701.645] (==) AMDGPU(0): Silken mouse enabled
   701.645] (II) AMDGPU(0): RandR 1.2 enabled, ignore the following RandR disabled message.
   701.645] (--) RandR disabled
   701.650] (II) AIGLX: enabled GLX_MESA_copy_sub_buffer
   701.650] (II) AIGLX: enabled GLX_ARB_create_context
   701.650] (II) AIGLX: enabled GLX_ARB_create_context_profile
   701.650] (II) AIGLX: enabled GLX_EXT_create_context_es{,2}_profile
   701.650] (II) AIGLX: enabled GLX_INTEL_swap_event
   701.650] (II) AIGLX: enabled GLX_SGI_swap_control
   701.650] (II) AIGLX: enabled GLX_EXT_framebuffer_sRGB
   701.650] (II) AIGLX: enabled GLX_ARB_fbconfig_float
   701.650] (II) AIGLX: enabled GLX_EXT_fbconfig_packed_float
   701.650] (II) AIGLX: GLX_EXT_texture_from_pixmap backed by buffer objects
   701.650] (II) AIGLX: enabled GLX_ARB_create_context_robustness
   701.651] (II) AIGLX: Loaded and initialized radeonsi
   701.651] (II) GLX: Initialized DRI2 GL provider for screen 0

That is the end of the log. Haven’t been able to find anything too helpful regarding the glamor complaints. Onr last thing; when I try “startx” at the command line I get this:

(==) Log file: "/var/log/Xorg.1.log", Time: Mon Mar 20 00:08:15 2017
(==) Using config directory: "/etc/X11/xorg.conf.d"
(==) Using system config directory "/usr/share/X11/xorg.conf.d"
(II) [KMS] Kernel modesetting enabled.
X: /usr/include/xorg/privates.h:122: dixGetPrivateAddr: Assertion `key-&gt;initialized' failed.
xinit: giving up
xinit: unable to connect to X server: Cannot assign requested address
xinit: server error

The amdgpu module looks to be in use, though not “of use” so far:

lspci -nnk | grep VGA -A3
01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Baffin [Radeon RX 460] [1002:67ef] (rev cf)
        Subsystem: Gigabyte Technology Co., Ltd Device [1458:22dd]
        Kernel driver in use: amdgpu
        Kernel modules: amdgpu

One other thing, if it matters: I had installed the AMDGPU-PRO and the uninstalled it (too many drawbacks, for reasons I won’t expand upon at the moment). After the uninstall, it left some stuff behind in /etc/dracut.conf.d, which I moved elsewhere.

Thanks again for your help.

A couple of kernel updates and (I think) 1 Mesa update later, there isn’t much in the way of errors left in the logs, but X still doesn’t work (the sddm process does not die, it is just that the screen is black except for a noworky cursor at upper left). Ironically, if I intentionally misdirect dracut as to where firmware is (–fwdir), X falls back to Vesa and I at least have a computer I can work with. Phoronix did a poll a while back on X and video, and Michael Larabel was mystified at how many Vesa users there are out there. Me too, until now :).

dmesg output is clean. Xorg.0.log complains about glamor.

 63510.765] (WW) glamor0: Failed to get GLSL version
 63510.765] (EE) AMDGPU(0): Failed to initialize glamor.
 63510.765] (EE) AMDGPU(0): Acceleration initialization failed
 63510.765] (II) AMDGPU(0): 2D and 3D acceleration disabled
 63510.765] (==) AMDGPU(0): DPMS enabled
 63510.765] (==) AMDGPU(0): Silken mouse enabled
 63510.765] (II) AMDGPU(0): RandR 1.2 enabled, ignore the following RandR disabled message.
 63510.765] (--) RandR disabled
 63510.770] (II) AIGLX: enabled GLX_MESA_copy_sub_buffer
 63510.770] (II) AIGLX: enabled GLX_ARB_create_context
 63510.770] (II) AIGLX: enabled GLX_ARB_create_context_profile
 63510.770] (II) AIGLX: enabled GLX_EXT_create_context_es{,2}_profile
 63510.770] (II) AIGLX: enabled GLX_INTEL_swap_event
 63510.770] (II) AIGLX: enabled GLX_SGI_swap_control
 63510.770] (II) AIGLX: enabled GLX_EXT_framebuffer_sRGB
 63510.770] (II) AIGLX: enabled GLX_ARB_fbconfig_float
 63510.770] (II) AIGLX: enabled GLX_EXT_fbconfig_packed_float
 63510.770] (II) AIGLX: GLX_EXT_texture_from_pixmap backed by buffer objects
 63510.770] (II) AIGLX: enabled GLX_ARB_create_context_robustness
 63510.771] (II) AIGLX: Loaded and initialized radeonsi
 63510.771] (II) GLX: Initialized DRI2 GL provider for screen 0

Thanks to everyone who gave my long posts a read.

Hi, using the RX460 here with 4.4.46-11-default and amdgpu-pro

See my post Snapper Rollback in Boot/Login Forum. Updates proved my undoing here. I was met with a blank screen when booting OpenSuse Leap42.2. I had to roll back using snapper to regain the desktop. When booting this snapshot we immediately see some text referring to the amdgpu firmware - top left hand corner of the screen. This does not happen when I attempt to boot the most recent Leap42.2. I get a blank screen.

Can you roll back?

amdgpu kernel driver appears to be working fine now … now the troublespot is xorg … and quite possibly either

  • the amdgpu xorg driver or
  • you have some crud left over in one of the xorg.conf.d snippet files (<– I did meniton to revert any changes you had made earlier) that is preventing glamour from being utilised

You should

  • post the full xorg log to susepaste and provide a link to the upload for us to look over
  • and, in the meantime, inspect the contents of your snippet files to see if you have, in any regard, inadvertently blocked glamour
  • as an alternative, try the xorg modesetting driver in place of the amdgpu xorg driver

Thanks again for having a look at this.

My Xorg.0.log is posted here:

https://paste.opensuse.org/73280847

Some other clues: the glamor error messages only appear after the machine has been up (accessible via ssh) for several minutes. In creating this post, I initially thought they had disappeared.

There are files in my /etc/X11/xorg.conf.d, but all of the content there was not created by me (still, thanks for the reminder to check up on that stuff, and I should have mentioned it earlier). That does include a 10-amdgpu.conf file that I’ll paste here:

Section "OutputClass"
    Identifier "AMDgpu"
    MatchDriver "amdgpu"
    Driver "amdgpu"
EndSection

Other files include:

10-libvnc.conf (everything commented out)
10-quirks.conf (all having to do with “InputClass” don’t think it pertinent)
40-libinput.conf (more “InputClass” stuff)
50-extensions.conf (see below)
70-wacom.conf (more “InputClass” stuff)

The 50-extensions.conf contained this:

Section "Extensions"
  Option "XFree86-DGA" "Disable"
EndSection

Again, thanks for the help!

The short of it is, I reinstalled OpenSUSE Tumbleweed. I reformatted the system partitions to make sure there was no trace of my flailings left around. I had to be careful because it defaulted to wanting to wipe all three of my RAIDed partitions, when all I really needed was to wipe the OS partitions.

I went down so many dead ends that my town was going to name a cul-de-sac after me :). I uninstalled and reinstalled a lot of software, tweaked a lot of settings, spent a lot of time in dependency hell, and ran a ton of leads down with Google. Eventually my tricks to get the machine to use Vesa even stopped working. Obviously there was something I overlooked. It is a pain in the neck to reinstall the OS and reconfigure a machine, but at least it is something I know how to do.

Hi, sorry for the necroposting.

For reasons I won’t get into, I need to get rid of my old nvidia card and I was thinking of buying a rx 460 given how amdgpu is supposed to be so much better than the old drivers now.

To make a long story short, would you recommend it to a Leap user?
Or should I just stick with nvidia for the time being?

Regards