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.