amdgpu-pro up and running

System
CPU Intel(R) Xeon(R) CPU E5-1650 v4 @ 3.60GHz
RAM 70 GB
Graphics card Radeon Pro WX 7100
kernel-default-4.4.140-62.2.x86_64

Installing the amdgpu-pro driver is not merely a question of following available instructions. To actually get it up and running I had to replace the freshly built

/boot/initrd

with the previous one built for the open source amdgpu available in the Leap 42.3 repos. I have tried two releases of the amdgpu-pro driver and tried two
methods of installation.

For amdgpu-pro-17.30-465504 I tried the method described at:

https://en.opensuse.org/SDB:AMDGPU-PRO
which means that you have to ignore warnings about not signed packages.

For amdgpu-pro-18.20-621983-sle-12 I tried the AMD instructions at:

https://www.amd.com/en/support/kb/release-notes/amdgpu-installationThe AMD install command apparently uses zypper but suppresses the warnings and it has to be tweaked a little:

amdgpu-pro-install --opencl=legacy

My card is built on Polaris which is older than Vega 10, hence --opencl=legacy .

Both methods require replacement of /boot/initrd after the installation process is completed and moreover: amdgpu-pro-17.30-465504 needs to be patched. A patch
and instructions can be found at, see the second answer:

https://community.amd.com/message/2828504#comment-2828504

For both driver versions and using the freshly built /boot/initrd the system boots fine to the login screen but then fails and restarts back to the login screen. The failure is more severe for amdgpu-pro-17.30-465504, a segmentation fault and missing library functions:

—snip—
7485.933784] ksplashqml[4575]: segfault at 0 ip 00007fe8133a02c7 sp 00007ffdd113ade0 error 4 in amdgpu_dri.so[7fe810e75000+2a6c000]

7486.096175] klauncher[4600]: segfault at 0 ip 00007f9b733a02c7 sp 00007fffbafc3660 error 4 in amdgpu_dri.so[7f9b70e75000+2a6c000]

7486.174996] ksmserver[4605]: segfault at 0 ip 00007f23bf3a02c7 sp 00007fffc8a91ae0 error 4 in amdgpu_dri.so[7f23bce75000+2a6c000]

Xorg.0.log

7486.731] (EE) Failed to load module “fglrx” (module does not exist, 0)
7486.806] (EE) open /dev/dri/card0: No such file or directory
7486.806] (EE) open /dev/dri/card0: No such file or directory

7486.806] (EE) Screen 0 deleted because of no matching config section.

7486.814] (EE) AIGLX: reverting to software rendering
7486.885] (EE) AIGLX error: dlopen of /usr/lib64/dri/swrast_dri.so failed (/usr/lib64/dri/swrast_dri.so: undefined symbol: is64bitelf)

7486.889] (EE) GLX: could not load software renderer

—end snip—
The segmentation fault is caused by the missing symbol in /usr/lib64/dri/swrast_dri.so which is part of Mesa.

For amdgpu-pro-18.20-621983-sle-12 there is no segmentation fault only missing library functions:
—snip—
Xorg.0.log
63.371] (EE) Failed to load module “fglrx” (module does not exist, 0)
63.443] (EE) open /dev/dri/card0: No such file or directory
63.443] (EE) open /dev/dri/card0: No such file or directory
63.444] (EE) Screen 0 deleted because of no matching config section.
63.450] (EE) AIGLX: reverting to software rendering
63.464] (EE) AIGLX error: amdgpu does not export required DRI extension
63.465] (EE) GLX: could not load software renderer
— end snip—

To sum up the installation builds a working kernel module but a failing /boot/initrd.

The solution is to replace the new /boot/initrd with the old one, then booting into X works and you get hardware accelerated OpenGL:

glxinfo|grep render
direct rendering: Yes
    GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer, GLX_MESA_query_renderer, 
OpenGL renderer string: AMD Radeon (TM) Pro WX 7100 Graphics
...

and the the only errors in Xorg.0.log are:

12.810] (EE) Failed to load module "fglrx" (module does not exist, 0)
12.881] (EE) AMDGPU(0): Failed to open amdgpu hybrid version

I guess the reason that the old /boot/initrd works is that amdgpu-pro is built on top of the open source amdgpu and for some reason beyond me manages to circumvent the AIGLX problem yet use the amdgpu-pro libs. Please, do tell if you know why this works!

The fglrx problem is to be expected for Leap 42.3:

https://en.opensuse.org/SDB:AMD_fglrx

which contains instructions for installation. I have not tried it. Perhaps installing it prior to amdgpu-pro solves the entire problem both with libraries and /boot/initrd. I have no idea about the implications of AMDGPU(0): Failed to open amdgpu hybrid version. I’d be happy to share any info on this!

At any rate unless your applications specifically relies on OpenGL don’t bother installing amdgpu-pro as Mesa provides a lot of the functionality and also in many cases does a better job. I run Matlab frequently which chooses software OpenGL with only open source amdgpu so for that reason I have taken the trouble.

Also your /boot/initrd will be overwritten at the next kernel upgrade which means that booting into X fails again so if you can’t live without amdgpu-pro then there are only two options as fas as I can make out: Either block kernel upgrades or uninstall amdgpu-pro prior to the kernel upgrade so you get a working /boot/initrd and then install amdgpu-pro again. Since I have automated the upgrades I had to uninstall also kernel-default-4.4.143-65.1.x86_64 and install it again. Incidentally, boot failed initially during loading of the kernel into the ramdisk. This problem was solved by adding the kernel parameter: tsc=unstable to the boot entry, see:

https://forums.opensuse.org/showthread.php/532695-Latest-update-will-not-boot

I have not yet tried reinstalling amdgpu-pro so I don’t know if it will work with kernel-default-4.4.143-65.1.x86_64.

…booting into X works and you get hardware accelerated OpenGL:

should be somewhat qualified. You do get hardware acceleration also without amdgpu-pro but in a different way:

glxinfo|grep render
    direct rendering: Yes
    GLX_MESA_multithread_makecurrent, GLX_MESA_query_renderer, 
    GLX_MESA_multithread_makecurrent, GLX_MESA_query_renderer, 
    Extended renderer info (GLX_MESA_query_renderer):
    OpenGL renderer string: Gallium 0.4 on AMD POLARIS10 (DRM 3.8.0 / 4.4.143-65-default, LLVM 3.8.0)
    ...

Gallium is an API for core functionality so you get some hardware accelerated OpenGL through the part of OpenGL available in Mesa but not the whole thing and that is the reason why Matlab chooses software OpenGL. For more info on Gallium see

https://gallium.readthedocs.io/en/latest/

This thread will be moved to ‘Unreviewed How To and FAQ’ as not a request for assistance.

Moved from the ‘Hardware’ forum and open for posting again.

Hi
FWIW, have you tried just using the oss amdgpu driver?

I see;


/sbin/lspci -nnk |grep -A3 VGA

00:01.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Mullins [Radeon R3 Graphics] [1002:9850] (rev 40)
    Subsystem: Hewlett-Packard Company Device [103c:8305]
    Kernel driver in use: amdgpu
    Kernel modules: radeon, amdgpu

glxinfo |grep render

direct rendering: Yes
    GLX_MESA_multithread_makecurrent, GLX_MESA_query_renderer, 
    GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer, GLX_MESA_query_renderer, 
Extended renderer info (GLX_MESA_query_renderer):
OpenGL renderer string: AMD MULLINS (DRM 3.26.0, 4.18.0-1-default, LLVM 6.0.1)
    GL_ARB_compute_variable_group_size, GL_ARB_conditional_render_inverted, 
    GL_NV_conditional_render, GL_NV_depth_clamp, GL_NV_packed_depth_stencil, 
    GL_ARB_compute_variable_group_size, GL_ARB_conditional_render_inverted, 
    GL_NV_blend_square, GL_NV_conditional_render, GL_NV_depth_clamp, 
    GL_OES_element_index_uint, GL_OES_fbo_render_mipmap, 

Hi and thanks for the response,

I see that also the radeon kernel module is loaded in your system. The radeon module is blacklisted on my system (not by me).

/sbin/lspci -nnk |grep -A3 VGA
03:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon Pro WX 7100] [1002:67c4]
        Subsystem: Dell Device [1028:0b0d]
        Kernel driver in use: amdgpu
        Kernel modules: amdgpu

Gallium etc. is what I get using the OSS amdgpu driver. Do you suggest that I should allow the radeon kernel module?

Hi
The radeon driver is blacklisted here, available for my card(s), but not used. AFAIK your card only uses the amdgpu driver. If radeon is used I see galium in use…