GT216M [GeForce GT 240M] (NV50/Tesla) sddm fails to start since commit 0a2f6372a43ff5e948b8b10be34d4473f6c2ef6c

Zdenek Sojka zsojka at seznam.cz
Tue Jan 30 06:08:38 UTC 2024


Dear nouveau mailing list,

on my notebook with the GeForce GT 240M graphics card, I am failing to start
sddm since linux kernel 6.5.0.
The screen typically goes black or white, mouse pointer is typically visible
and can be moved.
This happens about 90% of times I try to start the system; in about 10%, 
everything works fine.
If the start fails, dmesg shows output such as:
[   20.260153] nouveau 0000:01:00.0: fifo: DMA_PUSHER - ch 6 [sddm-greeter
[3136]] get 0000216088 put 0000217a3c ib_get 00000009 ib_put 0000000a state 
80000024 (err: INVALID_CMD) push 00400040
[   20.262191] nouveau 0000:01:00.0: fifo: DMA_PUSHER - ch 6 [sddm-greeter
[3136]] get 0000217a3c put 0000219820 ib_get 0000000b ib_put 0000000c state 
80000024 (err: INVALID_CMD) push 00400040
[   20.265970] nouveau 0000:01:00.0: fifo: DMA_PUSHER - ch 6 [sddm-greeter
[3136]] get 0000219820 put 0000219e50 ib_get 0000000d ib_put 0000000e state 
80000024 (err: INVALID_CMD) push 00400040


I've bisected this to:
0a2f6372a43ff5e948b8b10be34d4473f6c2ef6c is the first bad commit
commit 0a2f6372a43ff5e948b8b10be34d4473f6c2ef6c
Author: Christoph Hellwig <hch at lst.de>
Date:   Fri Apr 7 08:31:30 2023 +0200

    drm/nouveau: stop using is_swiotlb_active

    Drivers have no business looking into dma-mapping internals and check
    what backend is used.  Unfortunstely the DRM core is still broken and
    tries to do plain page allocations instead of using DMA API allocators
    by default and uses various bandaids on when to use dma_alloc_coherent.

    Switch nouveau to use the same (broken) scheme as amdgpu and radeon
    to remove the last driver user of is_swiotlb_active.

    Signed-off-by: Christoph Hellwig <hch at lst.de>
    Reviewed-by: Lyude Paul <lyude at redhat.com>

 drivers/gpu/drm/nouveau/nouveau_ttm.c | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)


I've tried various kernel (both vanilla or gentoo-patched), with custom or 
distro configuration; I didn't observe any difference since 6.5.

I didn't check what the return value of drm_need_swiotlb() is when sddm 
starts fine; but

+++ b/drivers/gpu/drm/nouveau/nouveau_ttm.c
@@ -302,7 +302,7 @@ nouveau_ttm_init(struct nouveau_drm *drm)
        ret = ttm_device_init(&drm->ttm.bdev, &nouveau_bo_driver, drm->dev->
dev,
                                  dev->anon_inode->i_mapping,
                                  dev->vma_offset_manager,
-                                 drm_need_swiotlb(drm->client.mmu.dmabits),
+                                 1,
                                  drm->client.mmu.dmabits <= 32);
        if (ret) {
                NV_ERROR(drm, "error initialising bo driver, %d\n", ret);

seem to prevent this problem for me

I welcome any help with this problem

Best regards,
Zdenek Sojka
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/nouveau/attachments/20240130/4338a2e4/attachment-0001.htm>


More information about the Nouveau mailing list