• Tobias Klausmann's avatar
    nouveau: Skip unvailable ttm page entries · e94c55b8
    Tobias Klausmann authored
    Starting with commit f295c8cf
    ("drm/nouveau: fix dma syncing warning with debugging on.")
    the following oops occures:
    
       BUG: kernel NULL pointer dereference, address: 0000000000000000
       #PF: supervisor read access in kernel mode
       #PF: error_code(0x0000) - not-present page
       PGD 0 P4D 0
       Oops: 0000 [#1] PREEMPT SMP PTI
       CPU: 6 PID: 1013 Comm: Xorg.bin Tainted: G E     5.11.0-desktop-rc0+ #2
       Hardware name: Acer Aspire VN7-593G/Pluto_KLS, BIOS V1.11 08/01/2018
       RIP: 0010:nouveau_bo_sync_for_device+0x40/0xb0 [nouveau]
       Call Trace:
        nouveau_bo_validate+0x5d/0x80 [nouveau]
        nouveau_gem_ioctl_pushbuf+0x662/0x1120 [nouveau]
        ? nouveau_gem_ioctl_new+0xf0/0xf0 [nouveau]
        drm_ioctl_kernel+0xa6/0xf0 [drm]
        drm_ioctl+0x1f4/0x3a0 [drm]
        ? nouveau_gem_ioctl_new+0xf0/0xf0 [nouveau]
        nouveau_drm_ioctl+0x50/0xa0 [nouveau]
        __x64_sys_ioctl+0x7e/0xb0
        do_syscall_64+0x33/0x80
        entry_SYSCALL_64_after_hwframe+0x44/0xae
       ---[ end trace ccfb1e7f4064374f ]---
       RIP: 0010:nouveau_bo_sync_for_device+0x40/0xb0 [nouveau]
    
    The underlying problem is not introduced by the commit, yet it uncovered the
    underlying issue. The cited commit relies on valid pages. This is not given for
    due to some bugs. For now, just warn and work around the issue by just ignoring
    the bad ttm objects.
    Below is some debug info gathered while debugging this issue:
    
    nouveau 0000:01:00.0: DRM: ttm_dma->num_pages: 2048
    nouveau 0000:01:00.0: DRM: ttm_dma->pages is NULL
    nouveau 0000:01:00.0: DRM: ttm_dma: 00000000e96058e7
    nouveau 0000:01:00.0: DRM: ttm_dma->page_flags:
    nouveau 0000:01:00.0: DRM: ttm_dma:   Populated: 1
    nouveau 0000:01:00.0: DRM: ttm_dma:   No Retry: 0
    nouveau 0000:01:00.0: DRM: ttm_dma:   SG: 256
    nouveau 0000:01:00.0: DRM: ttm_dma:   Zero Alloc: 0
    nouveau 0000:01:00.0: DRM: ttm_dma:   Swapped: 0
    Signed-off-by: default avatarTobias Klausmann <tobias.klausmann@freenet.de>
    Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210313222159.3346-1-tobias.klausmann@freenet.de
    e94c55b8
nouveau_bo.c 32.7 KB