[Radeon R5 230] X server fails to start if GPU acceleration is not available [patch]
$ startx
X.Org X Server 1.20.5
X Protocol Version 11, Revision 0
Build Operating System: ALT Sisyphus_mipsel Sisyphus (unstable) (sisyphus) mips
Current Operating System: Linux localhost.localdomain 4.4.182-bfk3-def-alt2 #1
SMP Tue Nov 19 15:37:41 UTC 2019 mips
Kernel command line: root=/dev/sda1 rw rootwait console=ttyS0,115200n8
earlyprintk=uart8250,mmio32,0x1F04A000,115200 maxcpus=2 nohtw
stmmaceth=chain_mode:1 board_name=BFK3 board_serial=0 board_rev=3.1
kgdboc=ttyS0
Build Date: 11 November 2019 09:39:31AM
Current version of pixman: 0.38.4
Before reporting problems, check http://wiki.x.org
to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
(++) from command line, (!!) notice, (II) informational,
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/Xorg.1.log", Time: Mon Nov 25 16:01:02 2019
(==) Using config directory: "/etc/X11/xorg.conf.d"
(==) Using system config directory "/usr/share/X11/xorg.conf.d"
(II) [KMS] Kernel modesetting enabled.
X: symbol lookup error: /usr/lib/X11/modules/drivers/radeon_drv.so: undefined
symbol: exaGetPixmapDriverPrivate
xinit: giving up
xinit: unable to connect to X server: Connection refused
xinit: server error
Explicitly loading the exa module (via xorg.conf) makes the exaGetPixmapDriverPrivate
function available, but the driver fails due to an assert anyway:
#0 __GI_raise (sig=<optimized out>) at ../sysdeps/unix/sysv/linux/raise.c:50
#1 0x76ab1c6c in __GI_abort () at abort.c:79
#2 0x76ac0b64 in __assert_fail_base (fmt=0x76bfbce4 "%s%s%s:%u: %s%sAssertion
`%s' failed.\n%n", assertion=0x7658c80c "key->initialized", file=<optimized
out>, line=121,
function=0x7658d040 <__PRETTY_FUNCTION__.10607> "dixGetPrivateAddr") at
assert.c:92
#3 0x76ac0c0c in __GI___assert_fail (assertion=0x7658c80c "key->initialized",
file=0x7658c9d0 "../include/privates.h", line=121,
function=0x7658d040 <__PRETTY_FUNCTION__.10607> "dixGetPrivateAddr") at
assert.c:101
#4 0x76579e6c in dixGetPrivateAddr (key=<optimized out>, key=<optimized out>,
privates=<optimized out>) at ../include/privates.h:121
#5 0x7657a954 in dixGetPrivateAddr (key=<optimized out>, key=<optimized out>,
privates=<optimized out>) at exa.c:70
#6 dixGetPrivate (key=<optimized out>, privates=<optimized out>) at
../include/privates.h:136
#7 exaGetPixmapDriverPrivate (pPix=<optimized out>) at exa.c:68
#8 0x7623d460 in radeon_get_pixmap_bo (pPix=0x71c1b8) at radeon.h:804
#9 radeon_get_pixmap_handle (pixmap=0x71c1b8, handle=0x7fa22328) at
radeon_bo_helper.c:357
#10 0x76244458 in radeon_pixmap_get_fb (pix=0x71c1b8) at radeon.h:886
#11 drmmode_set_mode_major (crtc=0x691860, mode=0x69191c, rotation=<optimized
out>, x=<optimized out>, y=<optimized out>) at drmmode_display.c:918
#12 0x762467e8 in drmmode_set_desired_modes (pScrn=0x67c678, drmmode=<optimized
out>, set_hw=1) at drmmode_display.c:3128
#13 0x0047bfa4 in MapWindow (client=0x669ec8, pWin=0x7206c0) at window.c:2722
#14 MapWindow (pWin=0x7206c0, client=0x669ec8) at window.c:2665
#15 0x00449650 in dix_main (argc=3, argv=0x7fa22604, envp=<optimized out>) at
main.c:247
#16 0x76ab2198 in __libc_start_main (main=0x42db10 <main>, argc=3,
argv=0x7fa22604, init=<optimized out>, fini=0x606434 <__libc_csu_fini>,
rtld_fini=0x77229930 <_dl_fini>,
stack_end=0x7fa225e0) at libc-start.c:308
#17 0x0042db80 in __start () at ../sysdeps/mips/start.S:110
Edited by Alexey Sheplyakov