X quebrado após a atualização para o Fedora 23

1

Eu recentemente atualizei do Fedora 22 para o 23 através do plugin dnf, e todo o resto funciona bem, exceto para gráficos. O módulo fglrx parece carregar bem, mas o servidor X trava quando tenta abrir a tela. Eu já tentei reinstalar o fglrx várias vezes.

Aqui está a seção de erro relevante do log do Xorg:

[ 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)

Já funcionou com sucesso neste kernel (4.1.10) antes, o que me faz pensar que isso é um problema do Xorg e não um problema do fglrx.

Como posso fazer o Xorg funcionar novamente?

    
por tmac1 17.11.2015 / 15:14

2 respostas

0

Eu tenho o patch para firegl_public.c trabalhando no kernel mais recente:

--- ../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)) {
    
por 07.06.2016 / 03:40
1

Não sei como você conseguiu instalar o fglrx antes no kernel 4.x, mas o fglrx não suporta oficialmente o kernel 4.x. Até recentemente, você poderia corrigir o instalador para trabalhar com o kernel mais recente:

link

No entanto, foi recentemente revelado que o driver quebra quando compilado com o gcc5 no Linux 4.2 ou superior. Como o Fedora 23 usa o kernel 4.2.x e o gcc5 por padrão, não há solução.

Pode ser possível compilar manualmente o gcc49 e usá-lo para compilar o driver, mas não consegui fazer esse trabalho pessoalmente.

Por enquanto, estou no mesmo barco.

    
por 17.11.2015 / 17:28