In several cases the drm/msm can cause an SMMU fault on modesetting (due to the display controller still scanning the BO which is being unmapped). Fix three cases which I stumbled upon.
Signed-off-by: Dmitry Baryshkov <[email protected]> --- Changes in v2: - New patch: lock the framebuffer pin state, it was updated locklessly (Sashiko) - Do not defer the release on an inactive crtc, it was leaked there (Sashiko) - Flush retired framebuffers from msm_drm_kms_uninit(), before kms->vm is dropped, and only for crtcs which have a vblank work (Sashiko) - Clean the flip works up after destroy_workqueue() (Sashiko) - Fixed the long-standing issue of the msm driver roguely setting allow_modeset, which started to manifest in timeouts and SMMU errors. - Link to v1: https://patch.msgid.link/[email protected] To: Rob Clark <[email protected]> To: Dmitry Baryshkov <[email protected]> To: Abhinav Kumar <[email protected]> To: Jessica Zhang <[email protected]> To: Sean Paul <[email protected]> To: Marijn Suijten <[email protected]> To: David Airlie <[email protected]> To: Simona Vetter <[email protected]> To: Antonino Maniscalco <[email protected]> To: Kalyan Thota <[email protected]> To: Federico Amedeo Izzo <[email protected]> To: Helen Koike <[email protected]> To: Vignesh Raman <[email protected]> To: Maarten Lankhorst <[email protected]> To: Maxime Ripard <[email protected]> To: Thomas Zimmermann <[email protected]> Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: Dmitry Baryshkov <[email protected]> --- Dmitry Baryshkov (6): drm/msm: serialise framebuffer pin state drm/msm: fix framebuffer pin refcount leak on prepare failure drm/msm: release scanout framebuffers only after a vblank drm/msm/dpu: clear the DSPP pointer when no DSPP is assigned drm/msm/dpu: only reassign resources when the encoder is reprogrammed drm/ci: mark pixel-format tests as passing on SC7180 .../xfails/msm-sc7180-trogdor-kingoftown-fails.txt | 2 - .../msm-sc7180-trogdor-lazor-limozeen-fails.txt | 2 - drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 34 ++++++- .../gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c | 2 +- drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c | 3 +- drivers/gpu/drm/msm/disp/mdp4/mdp4_crtc.c | 2 +- drivers/gpu/drm/msm/disp/mdp4/mdp4_plane.c | 2 +- drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c | 2 +- drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c | 2 +- drivers/gpu/drm/msm/msm_atomic.c | 17 +--- drivers/gpu/drm/msm/msm_drv.h | 3 +- drivers/gpu/drm/msm/msm_fb.c | 63 ++++++++++--- drivers/gpu/drm/msm/msm_kms.c | 103 +++++++++++++++++++++ drivers/gpu/drm/msm/msm_kms.h | 27 ++++++ 14 files changed, 221 insertions(+), 43 deletions(-) --- base-commit: 140b13475302601368c0cf4e193e66126a49feb3 change-id: 20260902-fd-kms-fix-smmu-2d4baaf460b0 Best regards, -- With best wishes Dmitry
