[PATCH] modesetting: fail PreInit() if the device has zero connectors

Tobias Jakobi tjakobi at math.uni-bielefeld.de
Wed Nov 1 11:00:01 UTC 2017


Dave Airlie wrote:
> On 24 October 2017 at 02:42, Tobias Jakobi
> <tjakobi at math.uni-bielefeld.de> wrote:
>> Hello Hans,
>>
>>
>> Hans de Goede wrote:
>>> Hi,
>>>
>>> On 20-10-17 19:08, tobias.jakobi1 at uni-bielefeld.de wrote:
>>>> On laptop systems with a dedicated (powerful) GPU A, you usually
>>>> have all connectors routed to another (less-powerful) GPU B.
>>>>
>>>> With my setup (GPU A = Nvidia, GPU B = Intel) I keep GPU A switched
>>>> off by not loading the nouveau kernel driver during boot.
>>>>
>>>> Loading nouveau while X is running then crashes the server:
>>>> [   540.775] (EE) 0: /usr/bin/X (xorg_backtrace+0x41) [0x57fa31]
>>>> [   540.775] (EE) 1: /usr/bin/X (0x400000+0x183429) [0x583429]
>>>> [   540.775] (EE) 2: /lib64/libpthread.so.0 (0x7ff02d508000+0x10ec0)
>>>> [0x7ff02d518ec0]
>>>> [   540.775] (EE) 3: /lib64/libc.so.6 (gsignal+0x38) [0x7ff02d1a2178]
>>>> [   540.775] (EE) 4: /lib64/libc.so.6 (abort+0x16a) [0x7ff02d1a35fa]
>>>> [   540.775] (EE) 5: /lib64/libc.so.6 (0x7ff02d16f000+0x2c0b7) [0x7ff02d19b0b7]
>>>> [   540.775] (EE) 6: /lib64/libc.so.6 (0x7ff02d16f000+0x2c162) [0x7ff02d19b162]
>>>> [   540.775] (EE) 7: /usr/bin/X (dixRegisterPrivateKey+0x247) [0x452197]
>>>> [   540.775] (EE) 8: /usr/lib64/xorg/modules/libglamoregl.so
>>>> (glamor_init+0x160) [0x7ff00ee564d0]
>>>> [   540.775] (EE) 9: /usr/lib64/xorg/modules/drivers/modesetting_drv.so
>>>> (0x7ff01c19a000+0x83e1) [0x7ff01c1a23e1]
>>>> [   540.775] (EE) 10: /usr/bin/X (AddGPUScreen+0xf3) [0x4348b3]
>>>> [   540.775] (EE) 11: /usr/bin/X (0x400000+0x90271) [0x490271]
>>>> [   540.775] (EE) 12: /usr/bin/X (0x400000+0x9547b) [0x49547b]
>>>> [   540.775] (EE) 13: /usr/bin/X (0x400000+0x905d7) [0x4905d7]
>>>> [   540.775] (EE) 14: /usr/bin/X (xf86VTEnter+0x1bb) [0x47399b]
>>>> [   540.775] (EE) 15: /usr/bin/X (WakeupHandler+0xda) [0x438e3a]
>>>> [   540.775] (EE) 16: /usr/bin/X (WaitForSomething+0x1ce) [0x57d6fe]
>>>> [   540.775] (EE) 17: /usr/bin/X (0x400000+0x34221) [0x434221]
>>>> [   540.775] (EE) 18: /usr/bin/X (0x400000+0x382f8) [0x4382f8]
>>>> [   540.775] (EE) 19: /lib64/libc.so.6 (__libc_start_main+0xf0) [0x7ff02d18f670]
>>>> [   540.776] (EE) 20: /usr/bin/X (_start+0x29) [0x4235b9]
>>>>
>>>> In particular note that GLAMOR is initialized for GPU A, which
>>>> makes no sense since it has no connectors.
>>>>
>>>> Fix this by bailing out early in the modesetting DDX when a setup
>>>> with zero connectors is detected.
>>>>
>>>> Signed-off-by: Tobias Jakobi <tjakobi at math.uni-bielefeld.de>
>>>
>>> Sorry, but NACK. The modesetting driver actually had such a check before
>>> and I removed it because not having a driver breaks rendering on
>>> the dedicated GPU with "DRI_PRIME=1" for dri2 clients.
>> sorry, I didn't consider DRI2 in this scenario.
>>
>>
>>> I guess that there is some sort of assumption in the code for dealing
>>> with glamor failure that it only happens on coldplug, if you really
>>> want to be able to modprobe nouveau later you should figure out what
>>> is exactly going wrong and fix that.
>> OK, I'll try to get to the bottom of this.
>>
>>
>>> Note BTW that nouveau should runtime suspend the GPU, even with Xorg
>>> running and there really is no need to not load nouveau.
>> No, sadly this is not true on my system. The system has a dual cooling solution,
>> where cooler A is attached to the CPU, and cooler B to the GPU. When never
>> inserting nouveau.ko after boot, cooler B stays off the entire time. Once I've
>> inserted the module, cooler B comes up from time to time _even_ if the GPU is
>> runtime suspended at that time (and has been since hours).
> 
> That seems strange, is the gpu powered down correctly?
> 
> It might be nouveau/acpi/pm isn't actually shutting it down.
That might be, but it's a different issue and I'm not going to investigate this atm.

- Tobias


> 
> Dave.
> 



More information about the xorg-devel mailing list