• Marc Zyngier's avatar
    drm/meson: Free RDMA resources after tearing down DRM · fa62ee25
    Marc Zyngier authored
    Removing the meson DRM module results in the following splat:
    
    [ 2179.451346] Hardware name:  , BIOS 2021.01-rc2-00012-gde865f7ee1 11/16/2020
    [ 2179.458316] Workqueue: events drm_mode_rmfb_work_fn [drm]
    [ 2179.463597] pstate: 80c00009 (Nzcv daif +PAN +UAO -TCO BTYPE=--)
    [ 2179.469558] pc : meson_rdma_writel_sync+0x44/0xb0 [meson_drm]
    [ 2179.475243] lr : meson_g12a_afbcd_reset+0x34/0x60 [meson_drm]
    [ 2179.480930] sp : ffffffc01212bb70
    [ 2179.484207] x29: ffffffc01212bb70 x28: ffffff8044f66f00
    [ 2179.489469] x27: ffffff8045b13800 x26: 0000000000000001
    [ 2179.494730] x25: 0000000000000000 x24: 0000000000000001
    [ 2179.499991] x23: 0000000000000000 x22: 0000000000000000
    [ 2179.505252] x21: 0000000000280000 x20: 0000000000001a01
    [ 2179.510513] x19: ffffff8046029480 x18: 0000000000000000
    [ 2179.515775] x17: 0000000000000000 x16: 0000000000000000
    [ 2179.521036] x15: 0000000000000000 x14: 0000000000000000
    [ 2179.526297] x13: 0040000000000326 x12: 0309030303260300
    [ 2179.531558] x11: 03000000054004a0 x10: 0418054004000400
    [ 2179.536820] x9 : ffffffc008fe4914 x8 : ffffff8040a1adc0
    [ 2179.542081] x7 : 0000000000000000 x6 : ffffff8042aa0080
    [ 2179.547342] x5 : ffffff8044f66f00 x4 : ffffffc008fe5bc8
    [ 2179.552603] x3 : 0000000000010101 x2 : 0000000000000001
    [ 2179.557865] x1 : 0000000000000000 x0 : 0000000000000000
    [ 2179.563127] Call trace:
    [ 2179.565548]  meson_rdma_writel_sync+0x44/0xb0 [meson_drm]
    [ 2179.570894]  meson_g12a_afbcd_reset+0x34/0x60 [meson_drm]
    [ 2179.576241]  meson_plane_atomic_disable+0x38/0xb0 [meson_drm]
    [ 2179.581966]  drm_atomic_helper_commit_planes+0x1e0/0x21c [drm_kms_helper]
    [ 2179.588684]  drm_atomic_helper_commit_tail_rpm+0x68/0xb0 [drm_kms_helper]
    [ 2179.595410]  commit_tail+0xac/0x190 [drm_kms_helper]
    [ 2179.600326]  drm_atomic_helper_commit+0x16c/0x390 [drm_kms_helper]
    [ 2179.606484]  drm_atomic_commit+0x58/0x70 [drm]
    [ 2179.610880]  drm_framebuffer_remove+0x398/0x434 [drm]
    [ 2179.615881]  drm_mode_rmfb_work_fn+0x68/0x8c [drm]
    [ 2179.620575]  process_one_work+0x1cc/0x49c
    [ 2179.624538]  worker_thread+0x200/0x444
    [ 2179.628246]  kthread+0x14c/0x160
    [ 2179.631439]  ret_from_fork+0x10/0x38
    
    caused by the fact that the RDMA buffer has already been freed,
    resulting in meson_rdma_writel_sync() getting a NULL pointer.
    
    Move the afbcd reset and meson_rdma_free calls after the DRM
    unregistration is complete so that the teardown can safely complete.
    
    Fixes: d1b5e41e ("drm/meson: Add AFBCD module driver")
    Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
    Acked-by: default avatarNeil Armstrong <narmstrong@baylibre.com>
    Signed-off-by: default avatarNeil Armstrong <narmstrong@baylibre.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20201116200744.495826-2-maz@kernel.org
    fa62ee25
meson_drv.c 13.6 KB