Bug 99180

Summary: Xorg server crash when initializing secondary discrete Radeon HD 8730M GPU
Product: xorg Reporter: Alexander Gagarin <unientity>
Component: Driver/RadeonAssignee: xf86-video-ati maintainers <xorg-driver-ati>
Status: RESOLVED INVALID QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: medium    
Version: 7.7 (2012.06)   
Hardware: x86-64 (AMD64)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
Xorg intialization log with crash none

Description Alexander Gagarin 2016-12-22 11:10:04 UTC
Created attachment 128628 [details]
Xorg intialization log with crash

I have an HP 850 Elitebook laptop with Intel GPU and secondary discrete AMD HD 8730M GPU.

With the following contents (that worked for a long time) of /etx/X11/xorg.conf.d/20-gpu.conf:

ection "Device"
        Identifier "intel"
        Driver     "intel"
        Option     "DRI"          "3"
        Option     "VSync"        "False"
        BusID      "PCI:0:2:0"
        Screen     0
EndSection

Section "Device"
        Identifier "radeon"
        Driver     "radeon"
        Option     "VSync"           "False"
        Option     "DRI"             "3"
        BusID      "PCI:3:0:0"
        Screen     1
EndSection

my Xorg server crashes during intialization stage with the following backtrace:

[    42.673] (EE) Backtrace:
[    42.673] (EE) 0: /usr/libexec/Xorg (OsLookupColor+0x139) [0x59e7d9]
[    42.674] (EE) 1: /lib64/libpthread.so.0 (__restore_rt+0x0) [0x7ff7a1c705bf]
[    42.674] (EE) 2: /usr/libexec/Xorg (xf86SetDepthBpp+0x5d0) [0x4839c0]
[    42.674] (EE) 3: /usr/lib64/xorg/modules/drivers/radeon_drv.so (_init+0x3e6e6) [0x7ff79cd26c16]
[    42.674] (EE) 4: /usr/libexec/Xorg (InitOutput+0xb5d) [0x47d78d]
[    42.674] (EE) 5: /usr/libexec/Xorg (InitFonts+0x216) [0x43ae06]
[    42.674] (EE) 6: /lib64/libc.so.6 (__libc_start_main+0xf1) [0x7ff7a18b9401]
[    42.674] (EE) 7: /usr/libexec/Xorg (_start+0x2a) [0x424cfa]
[    42.675] (EE) 8: ? (?+0x2a) [0x2a]
[    42.675] (EE) 
[    42.675] (EE) Segmentation fault at address 0x0
[    42.675] (EE) 
Fatal server error:
[    42.675] (EE) Caught signal 11 (Segmentation fault). Server aborting
[    42.675] (EE) 

It seems that radeon_drv dislikes config with depth=24 bpp and fb=32 bpp. If I add the following section to my 20-gpu.conf:

Section "Screen"
    Identifier     "def_screen"
    Device         "intel"
    GPUDevice      "radeon"
    DefaultDepth   24
    DefaultFbBpp   24
EndSection

forcing fpbbb=24, then crash disappears (Xorg seems to initialize fine) but the screen is completely blank. If at the same time I change driver to "modesetting" then Xorg crashes again.

This behaviour seems to be introduced with kernel 4.8 and still remains in 4.9.
Comment 1 Michel Dänzer 2017-01-07 08:18:12 UTC
(In reply to Alexander Gagarin from comment #0)
> With the following contents (that worked for a long time) of
> /etx/X11/xorg.conf.d/20-gpu.conf:

BTW, please use /etc/X11/xorg.conf itself for your configuration, not any xorg.conf.d snippets.


> ection "Device"
>         Identifier "intel"
>         Driver     "intel"
>         Option     "DRI"          "3"
>         Option     "VSync"        "False"
>         BusID      "PCI:0:2:0"
>         Screen     0
> EndSection
> 
> Section "Device"
>         Identifier "radeon"
>         Driver     "radeon"
>         Option     "VSync"           "False"
>         Option     "DRI"             "3"
>         BusID      "PCI:3:0:0"
>         Screen     1
> EndSection

FWIW, this configuration is incorrect for your hardware setup. The Screen stanzas are for associating multiple Device sections to the same GPU.


> It seems that radeon_drv dislikes config with depth=24 bpp and fb=32 bpp.

That's what basically everybody else is using...


> This behaviour seems to be introduced with kernel 4.8 and still remains in
> 4.9.

Weird. Can you bisect the kernel, or get a gdb backtrace of the Xorg crash (make sure debugging symbols are available for /usr/libexec/Xorg and
Comment 2 Alexander Gagarin 2017-01-09 07:26:33 UTC
It seems that everything is working after I remove "Screen" options from my config.

But I have had to add 'em because otherwise I couldn't setup working configuration with GPU switching via DRI_PRIME on earlier kernels.

Anyway, issue is resolved, but something wrong still remains inside all that machinery.
Comment 3 Michel Dänzer 2017-01-09 07:36:57 UTC
Glad it's working again. Resolving as invalid configuration.

(In reply to Alexander Gagarin from comment #2)
> But I have had to add 'em because otherwise I couldn't setup working
> configuration with GPU switching via DRI_PRIME on earlier kernels.

Weird, not sure how the screen stanzas could have any effect on that.

Anyway, FWIW, if you enable DRI3 with the intel driver, DRI_PRIME will work even if the radeon driver isn't configured at all in Xorg.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.