Hi

Am 10.11.25 um 13:51 schrieb Jani Nikula:
On Mon, 10 Nov 2025, Thomas Zimmermann <[email protected]> wrote:
Hi

Am 07.11.25 um 12:04 schrieb Jani Nikula:
We have drm_crtc_vblank_waitqueue() to get the wait_queue_head_t pointer
for a vblank. Use it instead of poking at dev->vblank[] directly.

Due to the macro maze of wait_event_timeout() that uses the address-of
operator on the argument, we have to pass it in with the indirection
operator.

Signed-off-by: Jani Nikula <[email protected]>
Reviewed-by Thomas Zimmermann <[email protected]>

But... drm_crtc_vblank_waitqueue() is a terrible interface IMHO, as it
exports internal details of the vblank implementation.

I wonder if the existing users at [1] and [2] couldn't be replaced with
a common vblank helper.

And there's drm_wait_one_vblank() [3] and the waiting that's being fixed
here [4]. The latter looks like [3] but with multiple CRTC waiting for
their next vblank. I'd say this could be a single implementation within
the vblank code.
I don't disagree, but getting that done is a bit more involved than what
I have time for right now. Need to think.

In the mean time, pushed the drm_crtc_vblank_crtc() related patches in
the series, and left the drm_crtc_vblank_waitqueue() ones to simmer.

Please also merge the rest of the series. These patches are an improvement to open-coding the access to the fields.

Best regards
Thomas


Thanks for the reviews.

BR,
Jani.


[1]
https://elixir.bootlin.com/linux/v6.18-rc4/source/drivers/gpu/drm/i915/display/intel_display_rps.c#L73
[2]
https://elixir.bootlin.com/linux/v6.18-rc4/source/drivers/gpu/drm/i915/display/intel_vblank.c#L715
[3]
https://elixir.bootlin.com/linux/v6.18-rc4/source/drivers/gpu/drm/drm_vblank.c#L1304
[4]
https://elixir.bootlin.com/linux/v6.18-rc4/source/drivers/gpu/drm/drm_atomic_helper.c#L1837

Best regards
Thomas

---
   drivers/gpu/drm/drm_atomic_helper.c | 4 +++-
   1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/drm_atomic_helper.c 
b/drivers/gpu/drm/drm_atomic_helper.c
index 5a473a274ff0..e641fcf8c568 100644
--- a/drivers/gpu/drm/drm_atomic_helper.c
+++ b/drivers/gpu/drm/drm_atomic_helper.c
@@ -1831,10 +1831,12 @@ drm_atomic_helper_wait_for_vblanks(struct drm_device 
*dev,
        }
for_each_old_crtc_in_state(state, crtc, old_crtc_state, i) {
+               wait_queue_head_t *queue = drm_crtc_vblank_waitqueue(crtc);
+
                if (!(crtc_mask & drm_crtc_mask(crtc)))
                        continue;
- ret = wait_event_timeout(dev->vblank[i].queue,
+               ret = wait_event_timeout(*queue,
                                         state->crtcs[i].last_vblank_count !=
                                                drm_crtc_vblank_count(crtc),
                                         msecs_to_jiffies(100));

--
--
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)


Reply via email to