On 03/05/2024 22:59, Dmitry Baryshkov wrote:
On Fri, May 03, 2024 at 11:18:52AM +0200, Luca Weiss wrote:
On Sun Apr 7, 2024 at 5:15 AM CEST, Dmitry Baryshkov wrote:
On Sat, 30 Mar 2024 at 18:49, Marijn Suijten
<marijn.suijten@xxxxxxxxxxxxxx> wrote:
On 2024-03-30 05:52:29, Dmitry Baryshkov wrote:
In case of CMD DSI panels, the vblank IRQ can be used outside of
irq_enable/irq_disable pair. This results in the following kind of
Can you clarify when exactly that is? Is it via ops.control_vblank_irq in
dpu_encoder_toggle_vblank_for_crtc()?
Call trace:
dpu_encoder_phys_cmd_control_vblank_irq+0x218/0x294
dpu_encoder_toggle_vblank_for_crtc+0x160/0x194
dpu_crtc_vblank+0xbc/0x228
dpu_kms_enable_vblank+0x18/0x24
vblank_ctrl_worker+0x34/0x6c
process_one_work+0x218/0x620
worker_thread+0x1ac/0x37c
kthread+0x114/0x118
ret_from_fork+0x10/0x20
The vblank_ctrl_work happens when the framework attempts to trigger
the vblank on the CRTC.
messages. Move assignment of IRQ indices to atomic_enable /
atomic_disable callbacks.
[dpu error]invalid IRQ=[134217727, 31]
[drm:dpu_encoder_phys_cmd_control_vblank_irq] *ERROR* vblank irq err id:31 pp:0 ret:-22, enable true/0
[drm:dpu_encoder_phys_cmd_control_vblank_irq] *ERROR* vblank irq err id:31 pp:0 ret:-22, enable false/0
You are right that such messages are common, both at random but also seemingly
around toggling the `ACTIVE` property on the CRTC:
[ 45.878300] panel-samsung-souxp ae94000.dsi.0: samsung_souxp00_disable
[ 45.909941] panel-samsung-souxp ae94000.dsi.0: samsung_souxp00_unprepare
[ 46.093234] [drm:dpu_encoder_helper_wait_for_irq] *ERROR* encoder is disabled id=31, callback=dpu_encoder_phys_cmd_ctl_start_irq, IRQ=[134217727, 31]
[ 46.130421] panel-samsung-souxp ae94000.dsi.0: samsung_souxp00_prepare
[ 46.340457] panel-samsung-souxp ae94000.dsi.0: samsung_souxp00_enable
[ 65.520323] [dpu error]invalid IRQ=[134217727, 31] irq_cb:dpu_encoder_phys_cmd_te_rd_ptr_irq
[ 65.520463] [drm:dpu_encoder_phys_cmd_control_vblank_irq] *ERROR* vblank irq err id:31 pp:0 ret:-22, enable true/0
[ 65.630199] [drm:dpu_encoder_phys_cmd_control_vblank_irq] *ERROR* vblank irq err id:31 pp:0 ret:-22, enable false/0
[ 166.576465] panel-samsung-souxp ae94000.dsi.0: samsung_souxp00_disable
[ 166.609674] panel-samsung-souxp ae94000.dsi.0: samsung_souxp00_unprepare
[ 166.781967] [drm:dpu_encoder_helper_wait_for_irq] *ERROR* encoder is disabled id=31, callback=dpu_encoder_phys_cmd_ctl_start_irq, IRQ=[134217727, 31]
[ 166.829805] panel-samsung-souxp ae94000.dsi.0: samsung_souxp00_prepare
[ 167.040476] panel-samsung-souxp ae94000.dsi.0: samsung_souxp00_enable
[ 337.449827] [dpu error]invalid IRQ=[134217727, 31] irq_cb:dpu_encoder_phys_cmd_te_rd_ptr_irq
[ 337.450434] [drm:dpu_encoder_phys_cmd_control_vblank_irq] *ERROR* vblank irq err id:31 pp:0 ret:-22, enable true/0
[ 337.569526] [drm:dpu_encoder_phys_cmd_control_vblank_irq] *ERROR* vblank irq err id:31 pp:0 ret:-22, enable false/0
[ 354.980357] [dpu error]invalid IRQ=[134217727, 31] irq_cb:dpu_encoder_phys_cmd_te_rd_ptr_irq
[ 354.980495] [drm:dpu_encoder_phys_cmd_control_vblank_irq] *ERROR* vblank irq err id:31 pp:0 ret:-22, enable true/0
[ 355.090460] [drm:dpu_encoder_phys_cmd_control_vblank_irq] *ERROR* vblank irq err id:31 pp:0 ret:-22, enable false/0
Unfortunately with this patch, turning the CRTC off via ./modetest -M msm -a
-w 81:ACTIVE:0 immediately triggers a bunch of WARNs (note that the CRTC turns
on immediately again when the command returns, that's probably the framebuffer
console taking over again). Running it a few times in succession this may or
may not happen, or reboot the phone (Xperia Griffin) entirely:
I could not reproduce it here, on Pixel-3. I'd like to review vblank
IRQs later. For now I think it is easier to revert d13f638c9b88
("drm/msm/dpu: drop dpu_encoder_phys_ops.atomic_mode_set"). I'll send
a patch.
Hi,
Did anything happen regarding this, I'm not finding anything on the
lists?
No, I didn't post it yet. Will do before EoW.
Hi Dmitry,
Just chipping in, I was carrying this patch for sdm845 as it fixes the
(very common) "invalid IRQ=[134217727, 31]
irq_cb:dpu_encoder_phys_cmd_te_rd_ptr_irq" errors on cmd mode panels
(which I also see on QCM6490). However it seems to cause an issue on
sm8250, qcm6490, and sdm845 too (since -rc6?) where after turning the
display off and on the TE IRQ never fires and every single vsync event
times out, resulting in like 3fps on the display.
Kind regards,
I'm seeing these errors also on SC7280/QCM6490 Fairphone 5 phone with
kernel 6.9-rc6 (+ out of tree patches).
[ 77.073366] [dpu error]invalid IRQ=[134217727, 31] irq_cb:dpu_encoder_phys_cmd_te_rd_ptr_irq
[ 77.073391] [drm:dpu_encoder_phys_cmd_control_vblank_irq] *ERROR* vblank irq err id:31 pp:0 ret:-22, enable true/0
[ 79.214720] [drm:dpu_encoder_phys_cmd_control_vblank_irq] *ERROR* vblank irq err id:31 pp:0 ret:-22, enable false/0
Regards
Luca
[ 23.423930] panel-samsung-souxp ae94000.dsi.0: samsung_souxp00_disable
[ 23.461013] [dpu error]invalid IRQ=[134217727, 31]
[ 23.461144] [dpu error]invalid IRQ=[134217727, 31]
[ 23.461208] [drm:dpu_encoder_phys_cmd_control_vblank_irq] *ERROR* vblank irq err id:31 pp:0 ret:-22, enable false/1
[ 23.461340] [dpu error]invalid IRQ=[134217727, 31]
[ 23.461406] panel-samsung-souxp ae94000.dsi.0: samsung_souxp00_unprepare
[ 23.641721] [drm:dpu_encoder_helper_wait_for_irq] *ERROR* encoder is disabled id=31, callback=dpu_encoder_phys_cmd_ctl_start_irq, IRQ=[134217727, 31]
[ 23.679938] panel-samsung-souxp ae94000.dsi.0: samsung_souxp00_prepare
[ 23.900465] ------------[ cut here ]------------
[ 23.900813] WARNING: CPU: 1 PID: 747 at drivers/gpu/drm/msm/disp/dpu1/dpu_hw_interrupts.c:545 dpu_core_irq_register_callback+0x1b4/0x244
[ 23.901450] Modules linked in:
[ 23.901814] CPU: 1 PID: 747 Comm: modetest Tainted: G U 6.9.0-rc1-next-20240328-SoMainline-02555-g27abbea53b6b #19
[ 23.902402] Hardware name: Sony Xperia 1 (DT)
[ 23.902674] pstate: 804000c5 (Nzcv daIF +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[ 23.903133] pc : dpu_core_irq_register_callback+0x1b4/0x244
[ 23.903455] lr : dpu_encoder_phys_cmd_irq_enable+0x30/0x8c
[ 23.903880] sp : ffff800086833930
[ 23.904123] x29: ffff800086833930 x28: 0000000000000001 x27: ffff0273834522d0
[ 23.904604] x26: ffffd46ebdb5edc8 x25: ffffd46ebe0f1228 x24: ffff02738106b280
[ 23.904973] x23: ffff027383452000 x22: ffffd46ebd086290 x21: 0000000000000000
[ 23.905452] x20: ffff027382712080 x19: 0000000000000008 x18: ffff8000840550d0
[ 23.905820] x17: 000000040044ffff x16: 005000f2b5503510 x15: 00000000000006ce
[ 23.906300] x14: 0000000000000f00 x13: 0000000000000f00 x12: 0000000000000f00
[ 23.906778] x11: 0000000000000040 x10: ffffd46ebe853258 x9 : ffffd46ebe853250
[ 23.907146] x8 : ffffd46ebec30000 x7 : 0000000000000000 x6 : 0000000000000000
[ 23.907621] x5 : 0000000000000000 x4 : ffff027384eac080 x3 : ffff027381a1a080
[ 23.908099] x2 : 0000000000000001 x1 : ffff027384eac140 x0 : ffffd46ebd086290
[ 23.908467] Call trace:
[ 23.908688] dpu_core_irq_register_callback+0x1b4/0x244
[ 23.909113] dpu_encoder_phys_cmd_irq_enable+0x30/0x8c
[ 23.909417] _dpu_encoder_irq_enable+0x58/0xa4
[ 23.909814] dpu_encoder_resource_control+0x1e8/0x498
[ 23.910116] dpu_encoder_virt_atomic_enable+0x9c/0x15c
[ 23.910531] drm_atomic_helper_commit_modeset_enables+0x180/0x26c
[ 23.910871] msm_atomic_commit_tail+0x1a4/0x510
[ 23.911277] commit_tail+0xa8/0x19c
[ 23.911544] drm_atomic_helper_commit+0x188/0x1a0
[ 23.911842] drm_atomic_commit+0xb4/0xf0
[ 23.912226] drm_client_modeset_commit_atomic+0x1fc/0x268
[ 23.912540] drm_client_modeset_commit_locked+0x60/0x178
[ 23.912963] drm_client_modeset_commit+0x30/0x5c
[ 23.913256] drm_fb_helper_lastclose+0x64/0xb0
[ 23.913542] msm_fbdev_client_restore+0x18/0x2c
[ 23.913948] drm_client_dev_restore+0x8c/0xec
[ 23.914233] drm_lastclose+0x68/0xac
[ 23.914499] drm_release+0x128/0x15c
[ 23.914765] __fput+0x7c/0x2cc
[ 23.915017] __fput_sync+0x54/0x64
[ 23.915272] __arm64_sys_close+0x3c/0x84
[ 23.915661] invoke_syscall+0x4c/0x11c
[ 23.915932] el0_svc_common.constprop.0+0x44/0xec
[ 23.916230] do_el0_svc+0x20/0x30
[ 23.916600] el0_svc+0x38/0xe4
[ 23.916854] el0t_64_sync_handler+0x128/0x134
[ 23.917139] el0t_64_sync+0x198/0x19c
[ 23.917515] ---[ end trace 0000000000000000 ]---
[ 23.918007] ------------[ cut here ]------------
[ 23.918324] WARNING: CPU: 1 PID: 747 at drivers/gpu/drm/msm/disp/dpu1/dpu_hw_interrupts.c:545 dpu_core_irq_register_callback+0x1b4/0x244
[ 23.918720] Modules linked in:
[ 23.918878] CPU: 1 PID: 747 Comm: modetest Tainted: G U W 6.9.0-rc1-next-20240328-SoMainline-02555-g27abbea53b6b #19
[ 23.919248] Hardware name: Sony Xperia 1 (DT)
[ 23.919424] pstate: 804000c5 (Nzcv daIF +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[ 23.919725] pc : dpu_core_irq_register_callback+0x1b4/0x244
[ 23.919934] lr : dpu_encoder_phys_cmd_irq_enable+0x78/0x8c
[ 23.920214] sp : ffff800086833930
[ 23.920373] x29: ffff800086833930 x28: 0000000000000001 x27: ffff0273834522d0
[ 23.920686] x26: ffffd46ebdb5edc8 x25: ffffd46ebe0f1228 x24: ffff02738106b280
[ 23.920922] x23: ffff027383452000 x22: ffffd46ebd086020 x21: 0000000000000000
[ 23.921237] x20: ffff027382712080 x19: 0000000000000029 x18: ffff8000840550d0
[ 23.921545] x17: 000000040044ffff x16: 005000f2b5503510 x15: 00000000000006ce
[ 23.921780] x14: 0000000000000f00 x13: 0000000000000f00 x12: 0000000000000f00
[ 23.922092] x11: 0000000000000040 x10: ffffd46ebe853258 x9 : ffffd46ebe853250
[ 23.922405] x8 : ffffd46ebec30000 x7 : 0000000000000000 x6 : 0000000000000001
[ 23.922640] x5 : ffffd46ebe0878d8 x4 : ffff027384eac080 x3 : ffff027381a1a080
[ 23.922953] x2 : 0000000000000001 x1 : ffff027384eac458 x0 : ffffd46ebd086020
[ 23.923266] Call trace:
[ 23.923411] dpu_core_irq_register_callback+0x1b4/0x244
[ 23.923616] dpu_encoder_phys_cmd_irq_enable+0x78/0x8c
[ 23.923893] _dpu_encoder_irq_enable+0x58/0xa4
[ 23.924078] dpu_encoder_resource_control+0x1e8/0x498
[ 23.924273] dpu_encoder_virt_atomic_enable+0x9c/0x15c
[ 23.924547] drm_atomic_helper_commit_modeset_enables+0x180/0x26c
[ 23.924763] msm_atomic_commit_tail+0x1a4/0x510
[ 23.925030] commit_tail+0xa8/0x19c
[ 23.925205] drm_atomic_helper_commit+0x188/0x1a0
[ 23.925477] drm_atomic_commit+0xb4/0xf0
[ 23.925653] drm_client_modeset_commit_atomic+0x1fc/0x268
[ 23.925856] drm_client_modeset_commit_locked+0x60/0x178
[ 23.926136] drm_client_modeset_commit+0x30/0x5c
[ 23.926325] drm_fb_helper_lastclose+0x64/0xb0
[ 23.926585] msm_fbdev_client_restore+0x18/0x2c
[ 23.926771] drm_client_dev_restore+0x8c/0xec
[ 23.926956] drm_lastclose+0x68/0xac
[ 23.927206] drm_release+0x128/0x15c
[ 23.927379] __fput+0x7c/0x2cc
[ 23.927541] __fput_sync+0x54/0x64
[ 23.927785] __arm64_sys_close+0x3c/0x84
[ 23.927965] invoke_syscall+0x4c/0x11c
[ 23.928141] el0_svc_common.constprop.0+0x44/0xec
[ 23.928411] do_el0_svc+0x20/0x30
[ 23.928582] el0_svc+0x38/0xe4
[ 23.928746] el0t_64_sync_handler+0x128/0x134
[ 23.929008] el0t_64_sync+0x198/0x19c
[ 23.929180] ---[ end trace 0000000000000000 ]---
[ 23.929429] panel-samsung-souxp ae94000.dsi.0: samsung_souxp00_enable
- Marijn
--
// Caleb (they/them)