Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/udl: Increase GET_URB_TIMEOUT

[WHY]
A situation has occurred where udl_handle_damage() executed successfully
and the kernel log appears normal, but the display fails to show any output.
This is because the call to udl_get_urb() in udl_crtc_helper_atomic_enable()
failed without generating any error message.

[HOW]
1. Increase timeout of getting urb.
2. Add error messages when calling udl_get_urb() failed in
udl_crtc_helper_atomic_enable().

Signed-off-by: Shixiong Ou <oushixiong@kylinos.cn>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Fixes: 5320918b9a87 ("drm/udl: initial UDL driver (v4)")
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Cc: <stable@vger.kernel.org> # v3.4+
Link: https://patch.msgid.link/20260424124427.657-1-oushixiong1025@163.com

authored by

Shixiong Ou and committed by
Thomas Zimmermann
ac2c9966 5dfd4295

+5 -3
+1 -2
drivers/gpu/drm/udl/udl_main.c
··· 285 285 return unode->urb; 286 286 } 287 287 288 - #define GET_URB_TIMEOUT HZ 289 288 struct urb *udl_get_urb(struct udl_device *udl) 290 289 { 291 290 struct urb *urb; 292 291 293 292 spin_lock_irq(&udl->urbs.lock); 294 - urb = udl_get_urb_locked(udl, GET_URB_TIMEOUT); 293 + urb = udl_get_urb_locked(udl, HZ * 2); 295 294 spin_unlock_irq(&udl->urbs.lock); 296 295 return urb; 297 296 }
+4 -1
drivers/gpu/drm/udl/udl_modeset.c
··· 21 21 #include <drm/drm_gem_framebuffer_helper.h> 22 22 #include <drm/drm_gem_shmem_helper.h> 23 23 #include <drm/drm_modeset_helper_vtables.h> 24 + #include <drm/drm_print.h> 24 25 #include <drm/drm_probe_helper.h> 25 26 #include <drm/drm_vblank.h> 26 27 ··· 343 342 return; 344 343 345 344 urb = udl_get_urb(udl); 346 - if (!urb) 345 + if (!urb) { 346 + drm_err_ratelimited(dev, "get urb failed when enabling crtc\n"); 347 347 goto out; 348 + } 348 349 349 350 buf = (char *)urb->transfer_buffer; 350 351 buf = udl_vidreg_lock(buf);