Re: [PATCH v2] drm/loongson: stop to set get_vblank_timestamp for LS7A1000 CRTC

From: Thomas Zimmermann

Date: Mon Mar 23 2026 - 09:40:47 EST


Hi

Am 23.03.26 um 12:42 schrieb Icenowy Zheng:
[...]
drm_update_vblank_count+0xac/0x418
[    0.334960] [<ffffffff80be6270>] drm_vblank_enable+0xf0/0x288
[    0.334960] [<ffffffff80be7010>] drm_vblank_get+0xf8/0x160
[    0.334960] [<ffffffff80beb2e0>]
drm_client_modeset_wait_for_vblank+0x50/0xa0
I doubt the problem here is that the function above is called with
hardcoded 0 by drm_fb_helper_fb_dirty() (being inlined into
drm_fb_helper_damage_work() by the compiler). Then on my setup it
failed because my primary output (laptop LCD) is on CRTC 1 (CRTC 0 is
external HDMI instead).

The CRTC 0 has vblank interrupt. The CRTC 1 does not. Is that correct?


This is new behavior introduced by d8c4bddcd8bc ("drm/fb-helper:
Synchronize dirty worker with vblank"), and the commit messages say
`This allows several screen updates to pile up and acts as a rate
limiter.` .

This should work if the vblanks are configured correctly.



Should it wait for any vblanks instead of waiting for one on CRTC 0 ?
(Or check whether CRTC 0 is on before waiting on it?)

It should only wait for the vblank on the CRTC it uses (1 in your case).

Best regards
Thomas



Thanks,
Icenowy

[    0.334960] [<ffffffff80c0a144>]
drm_fb_helper_damage_work+0x8c/0x1d8
[    0.334960] [<ffffffff8028fac8>] process_one_work+0x198/0x348
[    0.334960] [<ffffffff802906c0>] worker_thread+0x238/0x390
[    0.334960] [<ffffffff8029c0d8>] kthread+0x160/0x198
[    0.334960] [<ffffffff8021fd8c>]
ret_from_kernel_thread+0x14/0x1c

[    0.334960] ---[ end trace 0000000000000000 ]---
```

Signed-off-by: Icenowy Zheng <zhengxingda@xxxxxxxxxxx>
Oh forgot to attach when crafting v2:

```
Acked-by: Thomas Zimmermann <tzimmermann@xxxxxxx>
```

---
Changes in v2:
- Re-formatted Loongson product model numbers per request
from
Huacai.

   drivers/gpu/drm/loongson/lsdc_crtc.c | 1 -
   1 file changed, 1 deletion(-)

diff --git a/drivers/gpu/drm/loongson/lsdc_crtc.c
b/drivers/gpu/drm/loongson/lsdc_crtc.c
index 587fbe285e9ef..b3af8e0cdb15f 100644
--- a/drivers/gpu/drm/loongson/lsdc_crtc.c
+++ b/drivers/gpu/drm/loongson/lsdc_crtc.c
@@ -721,7 +721,6 @@ static const struct drm_crtc_funcs
ls7a1000_crtc_funcs = {
    .late_register = lsdc_crtc_late_register,
    .enable_vblank = lsdc_crtc_enable_vblank,
    .disable_vblank = lsdc_crtc_disable_vblank,
- .get_vblank_timestamp =
drm_crtc_vblank_helper_get_vblank_timestamp,
    .atomic_print_state = lsdc_crtc_atomic_print_state,
   };

--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
GF: Jochen Jaser, Andrew McDonald, Werner Knoblich, (HRB 36809, AG Nürnberg)