1

I recently upgraded from Fedora 22 to 23 via the dnf plugin, and everything else works fine except for graphics. The fglrx module appears to load okay, but the X server crashes when it tries to open the screen. I have already tried reinstalling fglrx multiple times.

Here is the relevant error section from the Xorg log:

[ 141.208] (EE)
[ 141.208] (EE) Backtrace:
[ 141.208] (EE) 0: /usr/libexec/Xorg (OsLookupColor+0x139) [0x59afb9]
[ 141.209] (EE) 1: /lib64/libc.so.6 (__restore_rt+0x0) [0x7f1a9bf0cb1f]
[ 141.210] (EE) 2: /usr/lib64/xorg/modules/drivers/fglrx_drv.so (xs117SetPrivate+0x27) [0x7f1a98eaa9f7]
[ 141.211] (EE) 3: /usr/lib64/xorg/modules/drivers/fglrx_drv.so (xclSetPrivate+0xd) [0x7f1a986f850d]
[ 141.212] (EE) 4: /usr/lib64/xorg/modules/drivers/fglrx_drv.so (xdl_xs117_swlDriScreenInit+0x124) [0x7f1a98960764]
[ 141.213] (EE) 5: /usr/lib64/xorg/modules/drivers/fglrx_drv.so (xdl_xs117_atiddxDriScreenInit+0x32a) [0x7f1a98948c9a]
[ 141.214] (EE) 6: /usr/lib64/xorg/modules/drivers/fglrx_drv.so (xdl_xs117_atiddxScreenInit+0x118b) [0x7f1a98942dcb]
[ 141.214] (EE) 7: /usr/libexec/Xorg (AddScreen+0x101) [0x436cd1]
[ 141.214] (EE) 8: /usr/libexec/Xorg (InitOutput+0x3e1) [0x47ab41]
[ 141.215] (EE) 9: /usr/libexec/Xorg (remove_fs_handlers+0x264) [0x43a7f4]
[ 141.215] (EE) 10: /lib64/libc.so.6 (__libc_start_main+0xf0) [0x7f1a9bef8580]
[ 141.215] (EE) 11: /usr/libexec/Xorg (_start+0x29) [0x424ce9]
[ 141.215] (EE) 12: ? (?+0x29) [0x29]
[ 141.215] (EE)
[ 141.215] (EE) Segmentation fault at address 0x10
[ 141.215] (EE)
Fatal server error:
[ 141.215] (EE) Caught signal 11 (Segmentation fault). Server aborting
[ 141.216] (EE)

It has worked successfully on this kernel (4.1.10) before, which makes me think this an Xorg issue and not a fglrx issue.

How can I get Xorg working again?

  • How did you install fglrx? I would delete fglrx and reinstall it. – Jodka Lemon Nov 17 '15 at 15:27
  • @JodkaLemon As I said in my above question, I have completely removed and reinstalled fglrx. I used the AMD generic linux .run installer, as the fglrx .rpm package conflicts with Wine. – tmac1 Nov 17 '15 at 15:31
1

I'm not sure how you managed to install fglrx before under the 4.x kernel, but fglrx doesn't officially support the 4.x kernel. Up until recently you could patch the installer to work with the latest kernel:

https://bluehatrecord.wordpress.com/2015/09/17/installing-the-proprietary-amd-catalyst-15-9-fglrx-15-201-driver-on-fedora-22-with-linux-kernel-4-1-6/

However it was recently revealed that the driver breaks when compiled with gcc5 under Linux 4.2 or greater. Since Fedora 23 uses the 4.2.x Kernel and gcc5 by default, there is no solution.

It might be possible to manually compile gcc49 and use that to compile the driver, but I have not been able to get this work personally.

For now I'm in the same boat.

  • Finally figured out how to do it and made a patch for firegl_public.c that gets 15.302 to compile and run on Fedora 23. I've got it running smoothly on kernel 4.5.5-201 with latest X server – tmac1 Jun 7 '16 at 1:38
0

I've got the patch for firegl_public.c working on the latest kernel:

--- ../firegl_public.c  2016-06-04 23:00:11.938899758 -0400
+++ firegl_public.c 2016-06-06 21:30:45.942122307 -0400
@@ -136,6 +136,9 @@
 #include <asm/processor.h>
 #include <asm/tlbflush.h> // for flush_tlb_page
 #include <asm/cpufeature.h>
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,3,0)
+#undef CONFIG_MTRR
+#endif
 #ifdef CONFIG_MTRR
 #include <asm/mtrr.h>
 #endif
@@ -631,7 +634,12 @@

     len = snprintf(buf, request, "%d\n", major);
 #else
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,3,0)
     len = seq_printf(m, "%d\n", major);
+#else
+    seq_printf(m, "%d\n", major);
+    len = 0;
+#endif
 #endif

     KCL_DEBUG1(FN_FIREGL_PROC, "return len=%i\n",len);
@@ -3424,7 +3432,7 @@
 int ATI_API_CALL KCL_MEM_MTRR_AddRegionWc(unsigned long base, unsigned long size)
 {
 #ifdef CONFIG_MTRR
-    return mtrr_add(base, size, MTRR_TYPE_WRCOMB, 1);
+    return -EPERM;/*return mtrr_add(base, size, MTRR_TYPE_WRCOMB, 1);*/
 #else /* !CONFIG_MTRR */
     return -EPERM;
 #endif /* !CONFIG_MTRR */
@@ -3433,7 +3441,7 @@
 int ATI_API_CALL KCL_MEM_MTRR_DeleteRegion(int reg, unsigned long base, unsigned long size)
 {
 #ifdef CONFIG_MTRR
-    return mtrr_del(reg, base, size);
+    return -EPERM;/*return mtrr_del(reg, base, size);*/
 #else /* !CONFIG_MTRR */
     return -EPERM;
 #endif /* !CONFIG_MTRR */
@@ -6452,10 +6460,10 @@
    if(static_cpu_has(X86_FEATURE_XSAVE)) {
 #if LINUX_VERSION_CODE < KERNEL_VERSION(4,2,0)
       fpu_xsave(fpu);
-      if (!(fpu->state->xsave.xsave_hdr.xstate_bv & XSTATE_FP))
+      if (!(fpu->state->xsave.xsave_hdr.xstate_bv))
 #else
      copy_xregs_to_kernel(&fpu->state.xsave);
-      if (!(fpu->state.xsave.header.xfeatures & XSTATE_FP))
+      if (!(fpu->state.xsave.header.xfeatures))
 #endif
          return 1;
    } else if (static_cpu_has(X86_FEATURE_FXSR)) {

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.