Module Name: src Committed By: riastradh Date: Sun Dec 19 11:52:25 UTC 2021
Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_vblank.c src/sys/external/bsd/drm2/dist/include/drm: drm_vblank.h Log Message: drm: Simplify condvar conditionals in drm_vblank To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/sys/external/bsd/drm2/dist/drm/drm_vblank.c cvs rdiff -u -r1.9 -r1.10 \ src/sys/external/bsd/drm2/dist/include/drm/drm_vblank.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/external/bsd/drm2/dist/drm/drm_vblank.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_vblank.c:1.9 src/sys/external/bsd/drm2/dist/drm/drm_vblank.c:1.10 --- src/sys/external/bsd/drm2/dist/drm/drm_vblank.c:1.9 Sun Dec 19 11:52:16 2021 +++ src/sys/external/bsd/drm2/dist/drm/drm_vblank.c Sun Dec 19 11:52:25 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_vblank.c,v 1.9 2021/12/19 11:52:16 riastradh Exp $ */ +/* $NetBSD: drm_vblank.c,v 1.10 2021/12/19 11:52:25 riastradh Exp $ */ /* * drm_irq.c IRQ and vblank support @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: drm_vblank.c,v 1.9 2021/12/19 11:52:16 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_vblank.c,v 1.10 2021/12/19 11:52:25 riastradh Exp $"); #include <linux/export.h> #include <linux/moduleparam.h> @@ -463,10 +463,8 @@ void drm_vblank_cleanup(struct drm_devic drm_core_check_feature(dev, DRIVER_MODESET)); del_timer_sync(&vblank->disable_timer); -#ifdef __NetBSD__ teardown_timer(&vblank->disable_timer); seqlock_destroy(&vblank->seqlock); -#endif } kfree(dev->vblank); @@ -505,11 +503,7 @@ int drm_vblank_init(struct drm_device *d vblank->dev = dev; vblank->pipe = i; -#ifdef __NetBSD__ DRM_INIT_WAITQUEUE(&vblank->queue, "drmvblnq"); -#else - init_waitqueue_head(&vblank->queue); -#endif timer_setup(&vblank->disable_timer, vblank_disable_fn, 0); seqlock_init(&vblank->seqlock); } @@ -545,11 +539,7 @@ EXPORT_SYMBOL(drm_vblank_init); * Drivers can use this to implement vblank waits using wait_event() and related * functions. */ -#ifdef __NetBSD__ drm_waitqueue_t *drm_crtc_vblank_waitqueue(struct drm_crtc *crtc) -#else -wait_queue_head_t *drm_crtc_vblank_waitqueue(struct drm_crtc *crtc) -#endif { return &crtc->dev->vblank[drm_crtc_index(crtc)].queue; } @@ -1190,20 +1180,12 @@ void drm_wait_one_vblank(struct drm_devi if (WARN(ret, "vblank not available on crtc %i, ret=%i\n", pipe, ret)) return; -#ifdef __NetBSD__ spin_lock(&dev->vbl_lock); last = drm_vblank_count(dev, pipe); DRM_SPIN_TIMED_WAIT_UNTIL(ret, &vblank->queue, &dev->vbl_lock, msecs_to_jiffies(100), last != drm_vblank_count(dev, pipe)); spin_unlock(&dev->vbl_lock); -#else - last = drm_vblank_count(dev, pipe); - - ret = wait_event_timeout(vblank->queue, - last != drm_vblank_count(dev, pipe), - msecs_to_jiffies(100)); -#endif WARN(ret == 0, "vblank wait timed out on crtc %i\n", pipe); @@ -1261,11 +1243,7 @@ void drm_crtc_vblank_off(struct drm_crtc if (drm_core_check_feature(dev, DRIVER_ATOMIC) || !vblank->inmodeset) drm_vblank_disable_and_save(dev, pipe); -#ifdef __NetBSD__ DRM_SPIN_WAKEUP_ONE(&vblank->queue, &dev->vbl_lock); -#else - wake_up(&vblank->queue); -#endif /* * Prevent subsequent drm_vblank_get() from re-enabling @@ -1784,17 +1762,10 @@ int drm_wait_vblank_ioctl(struct drm_dev DRM_DEBUG("waiting on vblank count %"PRIu64", crtc %u\n", req_seq, pipe); -#ifdef __NetBSD__ DRM_SPIN_TIMED_WAIT_UNTIL(wait, &vblank->queue, &dev->vbl_lock, msecs_to_jiffies(3000), - vblank_passed(drm_vblank_count(dev, pipe), req_seq) || - !READ_ONCE(vblank->enabled)); -#else - wait = wait_event_interruptible_timeout(vblank->queue, - vblank_passed(drm_vblank_count(dev, pipe), req_seq) || - !READ_ONCE(vblank->enabled), - msecs_to_jiffies(3000)); -#endif + (vblank_passed(drm_vblank_count(dev, pipe), req_seq) || + !READ_ONCE(vblank->enabled))); switch (wait) { case 0: @@ -1897,11 +1868,7 @@ bool drm_handle_vblank(struct drm_device spin_unlock(&dev->vblank_time_lock); -#ifdef __NetBSD__ DRM_SPIN_WAKEUP_ONE(&vblank->queue, &dev->vbl_lock); -#else - wake_up(&vblank->queue); -#endif /* With instant-off, we defer disabling the interrupt until after * we finish processing the following vblank after all events have Index: src/sys/external/bsd/drm2/dist/include/drm/drm_vblank.h diff -u src/sys/external/bsd/drm2/dist/include/drm/drm_vblank.h:1.9 src/sys/external/bsd/drm2/dist/include/drm/drm_vblank.h:1.10 --- src/sys/external/bsd/drm2/dist/include/drm/drm_vblank.h:1.9 Sun Dec 19 11:48:42 2021 +++ src/sys/external/bsd/drm2/dist/include/drm/drm_vblank.h Sun Dec 19 11:52:25 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_vblank.h,v 1.9 2021/12/19 11:48:42 riastradh Exp $ */ +/* $NetBSD: drm_vblank.h,v 1.10 2021/12/19 11:52:25 riastradh Exp $ */ /* * Copyright 2016 Intel Corp. @@ -39,10 +39,6 @@ #include <drm/drm_wait_netbsd.h> #endif -#ifdef __NetBSD__ /* XXX */ -#include <drm/drm_wait_netbsd.h> -#endif - struct drm_device; struct drm_crtc; @@ -106,11 +102,7 @@ struct drm_vblank_crtc { /** * @queue: Wait queue for vblank waiters. */ -#ifdef __NetBSD__ drm_waitqueue_t queue; -#else - wait_queue_head_t queue; -#endif /** * @disable_timer: Disable timer for the delayed vblank disabling * hysteresis logic. Vblank disabling is controlled through the @@ -252,11 +244,7 @@ bool drm_calc_vbltimestamp_from_scanoutp bool in_vblank_irq); void drm_calc_timestamping_constants(struct drm_crtc *crtc, const struct drm_display_mode *mode); -#ifdef __NetBSD__ drm_waitqueue_t *drm_crtc_vblank_waitqueue(struct drm_crtc *crtc); -#else -wait_queue_head_t *drm_crtc_vblank_waitqueue(struct drm_crtc *crtc); -#endif void drm_crtc_set_max_vblank_count(struct drm_crtc *crtc, u32 max_vblank_count); #endif