在 2026-03-23一的 11:40 +0800,Jianmin Lv写道: > > > On 2026/3/21 下午5:29, Icenowy Zheng wrote: > > 在 2026-03-21六的 17:28 +0800,Icenowy Zheng写道: > > > As there's no known hardware capability about querying vblank on > > > the > > > LS7A1000 display controller, setting get_vblank_timestamp will > > > mislead the > > > kernel about the support of DC-backed high precision vblank > > > query. > > > > > > Drop this function pointer in the CRTC function table for > > > LS7A1000. > > > > > > This solves a kernel warning when booting Linux 7.0-rc3 on a > > > Loongson-3A4000+LS7A1000 Haier Boyue G51 laptop (with injected > > > EDID > > > for > > > replicating the display timing set by the firmware). > > > > The drm_crtc_vblank_helper_get_vblank_timestamp will call > get_scanout_position hook to caculate timestamp, and the driver has > get_scanout_position to support it (LS7A1000 has related register). > So > the get_vblank_timestamp hook is ok for LS7A1000, and we'd better > look > into the warning information.
The warning information is copied here: ``` [ 0.334960] ------------[ cut here ]------------ [ 0.334960] WARNING: drivers/gpu/drm/drm_vblank.c:747 at drm_crtc_vblank_helper_get_vblank_timestamp_internal+0x3c8/0x438, CPU#0: kworker/0:1/11 [ 0.334960] loongson 0000:00:06.1: [drm] drm_WARN_ON_ONCE(drm_drv_uses_atomic_modeset(dev)) [ 0.334960] Modules linked in: [ 0.334960] CPU: 0 UID: 0 PID: 11 Comm: kworker/0:1 Not tainted 7.0.0-rc4-3a4000-laptop-test+ #31 PREEMPT [ 0.334960] Hardware name: Haier Boyue G51/Boyue G51, BIOS K3L3A4000.HR10.200909.T 09/09/2020 [ 0.334960] Workqueue: events drm_fb_helper_damage_work [ 0.334960] Stack : ffffffff819dec03 0000000000000000 0000000000000018 9800000100223938 [ 0.334960] 9800000100223938 9800000100223a68 0000000000000000 0000000000000000 [ 0.334960] b8e8b3f2ec6b8200 98000000092bffa8 9800000100223768 0000000000000000 [ 0.334960] ffffffff81632b08 0000000000000030 ffffffff813c9530 0000000000200b20 [ 0.334960] fffffffffffffffc 0000000000000000 0000000000000000 ffffffff816c1d50 [ 0.334960] ffffffff81890000 00000000000002eb 0000000000000000 ffffffff80c1b180 [ 0.334960] 9800000100ff8500 0000000000000000 9800000005c965a8 0000000000000000 [ 0.334960] ffffffff81a70000 9800000100220000 9800000100223930 0000000000000000 [ 0.334960] ffffffff802274dc 0000000000000000 0000000000000000 0000000000000000 [ 0.334960] 0000000000000000 0000000000000000 ffffffff802274fc b8e8b3f2ec6b8200 [ 0.334960] ... [ 0.334960] Call Trace: [ 0.334960] [<ffffffff802274fc>] show_stack+0x64/0x158 [ 0.334960] [<ffffffff8021bac4>] dump_stack_lvl+0x70/0xb0 [ 0.334960] [<ffffffff8026a988>] __warn+0xa8/0x120 [ 0.334960] [<ffffffff8026ab60>] warn_slowpath_fmt+0x160/0x1f8 [ 0.334960] [<ffffffff80be5668>] drm_crtc_vblank_helper_get_vblank_timestamp_internal+0x3c8/0x438 [ 0.334960] [<ffffffff80be48d8>] drm_crtc_get_last_vbltimestamp+0x68/0xb0 [ 0.334960] [<ffffffff80be5e14>] 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 [ 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 <[email protected]> > > > > Oh forgot to attach when crafting v2: > > > > ``` > > Acked-by: Thomas Zimmermann <[email protected]> > > ``` > > > > > --- > > > 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, > > > }; > > >
