]> Git Repo - linux.git/commit
drm/vkms: Bugfix racing hrtimer vblank handle
authorShayenne Moura <[email protected]>
Wed, 30 Jan 2019 16:07:11 +0000 (14:07 -0200)
committerRodrigo Siqueira <[email protected]>
Sun, 3 Feb 2019 21:28:21 +0000 (19:28 -0200)
commitba420afab565bdc7b028ddd4f222260f2de7a1db
treefbbae8682d4108fb5ce2665938838d24c4d8b8bd
parentdef35e7c592616bc09be328de8795e5e624a3cf8
drm/vkms: Bugfix racing hrtimer vblank handle

When the vblank irq happens, kernel time subsystem executes
`vkms_vblank_simulate`. In parallel or not, it prepares all stuff
necessary to the next vblank with arm, and it must flush these stuff
before the next vblank irq. However, vblank counter is ahead when arm is
executed in parallel with handle vblank.

CPU 0: CPU 1:
 |  |
atomic_commit_tail is ongoing  |
 |  |
 | hrtimer: vkms_vblank_simulate()
 |  |
 | drm_crtc_handle_vblank()
 |  |
drm_crtc_arm_vblank()  |
 |  |
->get_vblank_timestamp()  |
 |  |
 | hrtimer_forward_now()

Then, we should guarantee that the vblank interval time is correct (not
changed) before finish the vblank handle.

Fix the bug including the call to `hrtimer_forward_now()` in the same
lock of `drm_crtc_handle_vblank()` to ensure that the timestamp update
is correct when finish the vblank handle.

Signed-off-by: Shayenne Moura <[email protected]>
Signed-off-by: Daniel Vetter <[email protected]>
Reviewed-by: Rodrigo Siqueira <[email protected]>
Signed-off-by: Rodrigo Siqueira <[email protected]>
Link: https://patchwork.freedesktop.org/patch/msgid/e2e4b8f3a5cab7b2dba75bf1930f86b0a4ee08c9.1548856186.git.shayenneluzmoura@gmail.com
drivers/gpu/drm/vkms/vkms_crtc.c
This page took 0.055248 seconds and 4 git commands to generate.