search for: vblank_time_lock

Displaying 20 results from an estimated 28 matches for "vblank_time_lock".

2013 Aug 27
0
[PATCH 6/9] drm/nouveau: Convert event handler list to RCU
Lockdep report [1] correctly identifies a potential deadlock between nouveau_drm_vblank_enable() and nouveau_drm_vblank_handler() due to inverted lock order of event->lock with drm core's dev->vblank_time_lock. Fix vblank event deadlock by converting event handler list to RCU. List updates remain serialized by event->lock. List traversal & handler execution is lockless which prevents inverted lock order problems with the drm core. Safe deletion of the event handler is accomplished with synchroniz...
2013 Aug 12
2
[PATCH] drm/nouveau: fix vblank deadlock
This fixes a deadlock inversion when vblank is enabled/disabled by drm. &dev->vblank_time_lock is always taken when the vblank state is toggled, which caused a deadlock when &event->lock was also taken during event_get/put. Solve the race by requiring that lock to change enable/disable state, and always keeping vblank on the event list. Core drm ignores unwanted vblanks, so extra cal...
2013 Aug 19
0
[PATCH] drm/nouveau: fix vblank deadlock
On 08/12/2013 07:50 AM, Maarten Lankhorst wrote: > This fixes a deadlock inversion when vblank is enabled/disabled by drm. > &dev->vblank_time_lock is always taken when the vblank state is toggled, > which caused a deadlock when &event->lock was also taken during > event_get/put. > > Solve the race by requiring that lock to change enable/disable state, > and always keeping vblank on the event list. Core drm ignores unwant...
2017 Jul 16
3
[drm/nouveau] GeForce 8600 GT boot/suspend grumbling
...oth 8600 GT and GTX 980. --- drivers/gpu/drm/drm_vblank.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) --- a/drivers/gpu/drm/drm_vblank.c +++ b/drivers/gpu/drm/drm_vblank.c @@ -323,6 +323,14 @@ void drm_vblank_disable_and_save(struct spin_lock_irqsave(&dev->vblank_time_lock, irqflags); /* + * Always update the count and timestamp to maintain the + * appearance that the counter has been ticking all along until + * this time. This makes the count account for the entire time + * between drm_crtc_vblank_on() and drm_crtc_vblank_off(). + */ + drm_update_vblank_cou...
2020 Jan 12
2
[PATCH 23/23] drm: Cleanup VBLANK callbacks in struct drm_driver
...; > - !crtc->funcs->get_vblank_timestamp && > - !dev->driver->get_vblank_timestamp, > + !crtc->funcs->get_vblank_timestamp, > "This function requires support for accurate vblank timestamps."); > > spin_lock_irqsave(&dev->vblank_time_lock, flags); > @@ -357,13 +355,11 @@ static void __disable_vblank(struct drm_device *dev, unsigned int pipe) > if (WARN_ON(!crtc)) > return; > > - if (crtc->funcs->disable_vblank) { > + if (crtc->funcs->disable_vblank) > crtc->funcs->disable_vblank(...
2020 Jan 10
0
[PATCH 23/23] drm: Cleanup VBLANK callbacks in struct drm_driver
..._enabled(DRM_UT_VBL) && - !crtc->funcs->get_vblank_timestamp && - !dev->driver->get_vblank_timestamp, + !crtc->funcs->get_vblank_timestamp, "This function requires support for accurate vblank timestamps."); spin_lock_irqsave(&dev->vblank_time_lock, flags); @@ -357,13 +355,11 @@ static void __disable_vblank(struct drm_device *dev, unsigned int pipe) if (WARN_ON(!crtc)) return; - if (crtc->funcs->disable_vblank) { + if (crtc->funcs->disable_vblank) crtc->funcs->disable_vblank(crtc); - return; - } + } else {...
2013 Aug 27
11
[PATCH 0/9] drm/nouveau: Cleanup event/handler design
This series was originally motivated by a deadlock, introduced in commit 1d7c71a3e2f77336df536855b0efd2dc5bdeb41b 'drm/nouveau/disp: port vblank handling to event interface', due to inverted lock order between nouveau_drm_vblank_enable() and nouveau_drm_vblank_handler() (the complete lockdep report is included in the patch 4/5 changelog). Because this series fixes the vblank event
2020 Mar 18
4
[PATCH 1/9] drm/vblank: Add vblank works
..._list); > + work->state = DRM_VBL_WORK_SCHEDULED; > + } > +} > + > /** > * drm_handle_vblank - handle a vblank event > * @dev: DRM device > @@ -1866,6 +1992,7 @@ bool drm_handle_vblank(struct drm_device *dev, unsigned int pipe) > > spin_unlock(&dev->vblank_time_lock); > > + drm_handle_vblank_works(vblank); > wake_up(&vblank->queue); > > /* With instant-off, we defer disabling the interrupt until after > @@ -2076,3 +2203,198 @@ int drm_crtc_queue_sequence_ioctl(struct drm_device *dev, void *data, > kfree(e); > return r...
2020 Jan 20
0
[PATCH v3 03/22] drm: Add get_vblank_timestamp() to struct drm_crtc_funcs
...>get_vblank_timestamp, + WARN_ONCE(drm_debug_enabled(DRM_UT_VBL) && + !crtc->funcs->get_vblank_timestamp && + !dev->driver->get_vblank_timestamp, "This function requires support for accurate vblank timestamps."); spin_lock_irqsave(&dev->vblank_time_lock, flags); @@ -511,9 +513,9 @@ EXPORT_SYMBOL(drm_crtc_vblank_waitqueue); * * Calculate and store various constants which are later needed by vblank and * swap-completion timestamping, e.g, by - * drm_calc_vbltimestamp_from_scanoutpos(). They are derived from CRTC's true - * scanout timing,...
2020 Jan 20
0
[Intel-gfx] [PATCH v3 03/22] drm: Add get_vblank_timestamp() to struct drm_crtc_funcs
...+ WARN_ONCE(drm_debug_enabled(DRM_UT_VBL) && > + !crtc->funcs->get_vblank_timestamp && > + !dev->driver->get_vblank_timestamp, > "This function requires support for accurate vblank timestamps."); > > spin_lock_irqsave(&dev->vblank_time_lock, flags); > @@ -511,9 +513,9 @@ EXPORT_SYMBOL(drm_crtc_vblank_waitqueue); > * > * Calculate and store various constants which are later needed by vblank and > * swap-completion timestamping, e.g, by > - * drm_calc_vbltimestamp_from_scanoutpos(). They are derived from CRTC's...
2020 May 08
0
[RFC v4 04/12] drm/vblank: Add vblank works
...(vblank->dev, vblank->pipe); + queue_vbl_work(work); + } + spin_unlock(&vblank->work_lock); +} + /** * drm_handle_vblank - handle a vblank event * @dev: DRM device @@ -1919,6 +2002,7 @@ bool drm_handle_vblank(struct drm_device *dev, unsigned int pipe) spin_unlock(&dev->vblank_time_lock); + drm_handle_vblank_works(vblank); wake_up(&vblank->queue); /* With instant-off, we defer disabling the interrupt until after @@ -2129,3 +2213,178 @@ int drm_crtc_queue_sequence_ioctl(struct drm_device *dev, void *data, kfree(e); return ret; } + +/** + * drm_vblank_work_schedu...
2020 Mar 18
0
[PATCH 1/9] drm/vblank: Add vblank works
...mp;work->list, &vblank->vblank_work.work_list); + work->state = DRM_VBL_WORK_SCHEDULED; + } +} + /** * drm_handle_vblank - handle a vblank event * @dev: DRM device @@ -1866,6 +1992,7 @@ bool drm_handle_vblank(struct drm_device *dev, unsigned int pipe) spin_unlock(&dev->vblank_time_lock); + drm_handle_vblank_works(vblank); wake_up(&vblank->queue); /* With instant-off, we defer disabling the interrupt until after @@ -2076,3 +2203,198 @@ int drm_crtc_queue_sequence_ioctl(struct drm_device *dev, void *data, kfree(e); return ret; } + +/** + * drm_vblank_work_schedu...
2020 Jun 22
0
[RFC v5 02/10] drm/vblank: Add vblank works
...nk->worker, &work->base)) + work->pending--; + } + spin_unlock(&vblank->work_lock); +} + /** * drm_handle_vblank - handle a vblank event * @dev: DRM device @@ -1932,6 +2044,7 @@ bool drm_handle_vblank(struct drm_device *dev, unsigned int pipe) spin_unlock(&dev->vblank_time_lock); + drm_handle_vblank_works(vblank); wake_up(&vblank->queue); /* With instant-off, we defer disabling the interrupt until after @@ -2146,3 +2259,156 @@ int drm_crtc_queue_sequence_ioctl(struct drm_device *dev, void *data, kfree(e); return ret; } + +/** + * drm_vblank_work_schedu...
2017 Jul 15
4
[drm/nouveau] GeForce 8600 GT boot/suspend grumbling
Greetings, box: bog standard [tc]rusty old Nvidia equipped Q6600 Medion (Aldi) deskside kernel: master.today (v4.12-11690-gccd5d1b91f22) lspci -nn -d 10de: 01:00.0 VGA compatible controller [0300]: NVIDIA Corporation G84 [GeForce 8600 GT] [10de:0402] (rev a1) abreviated dmesg: ... [ 3.720990] fb: switching to nouveaufb from VESA VGA [ 3.744489] Console: switching to colour dummy device
2020 Mar 27
2
[PATCH 1/9] drm/vblank: Add vblank works
...gt; + > > > /** > > > * drm_handle_vblank - handle a vblank event > > > * @dev: DRM device > > > @@ -1866,6 +1992,7 @@ bool drm_handle_vblank(struct drm_device *dev, > > > unsigned int pipe) > > > > > > spin_unlock(&dev->vblank_time_lock); > > > > > > + drm_handle_vblank_works(vblank); > > > wake_up(&vblank->queue); > > > > > > /* With instant-off, we defer disabling the interrupt until after > > > @@ -2076,3 +2203,198 @@ int drm_crtc_queue_sequence_ioctl(struct &...
2020 Jan 15
0
[PATCH v2 03/21] drm: Add get_vblank_timestamp() to struct drm_crtc_funcs
...>get_vblank_timestamp, + WARN_ONCE(drm_debug_enabled(DRM_UT_VBL) && + !crtc->funcs->get_vblank_timestamp && + !dev->driver->get_vblank_timestamp, "This function requires support for accurate vblank timestamps."); spin_lock_irqsave(&dev->vblank_time_lock, flags); @@ -511,9 +513,9 @@ EXPORT_SYMBOL(drm_crtc_vblank_waitqueue); * * Calculate and store various constants which are later needed by vblank and * swap-completion timestamping, e.g, by - * drm_calc_vbltimestamp_from_scanoutpos(). They are derived from CRTC's true - * scanout timing,...
2020 Mar 27
0
[PATCH 1/9] drm/vblank: Add vblank works
...; > > + } > > +} > > + > > /** > > * drm_handle_vblank - handle a vblank event > > * @dev: DRM device > > @@ -1866,6 +1992,7 @@ bool drm_handle_vblank(struct drm_device *dev, > > unsigned int pipe) > > > > spin_unlock(&dev->vblank_time_lock); > > > > + drm_handle_vblank_works(vblank); > > wake_up(&vblank->queue); > > > > /* With instant-off, we defer disabling the interrupt until after > > @@ -2076,3 +2203,198 @@ int drm_crtc_queue_sequence_ioctl(struct > > drm_device *dev, void...
2020 Apr 13
0
[PATCH 1/9] drm/vblank: Add vblank works
...> > > * drm_handle_vblank - handle a vblank event > > > > * @dev: DRM device > > > > @@ -1866,6 +1992,7 @@ bool drm_handle_vblank(struct drm_device *dev, > > > > unsigned int pipe) > > > > > > > > spin_unlock(&dev->vblank_time_lock); > > > > > > > > + drm_handle_vblank_works(vblank); > > > > wake_up(&vblank->queue); > > > > > > > > /* With instant-off, we defer disabling the interrupt until > > > > after > > > > @@ -2076,3 +2203...
2020 Jan 15
2
[Intel-gfx] [PATCH v2 03/21] drm: Add get_vblank_timestamp() to struct drm_crtc_funcs
...+ WARN_ONCE(drm_debug_enabled(DRM_UT_VBL) && > + !crtc->funcs->get_vblank_timestamp && > + !dev->driver->get_vblank_timestamp, > "This function requires support for accurate vblank timestamps."); > > spin_lock_irqsave(&dev->vblank_time_lock, flags); > @@ -511,9 +513,9 @@ EXPORT_SYMBOL(drm_crtc_vblank_waitqueue); > * > * Calculate and store various constants which are later needed by vblank and > * swap-completion timestamping, e.g, by > - * drm_calc_vbltimestamp_from_scanoutpos(). They are derived from CRTC's...
2020 Jan 16
0
[Intel-gfx] [PATCH v2 03/21] drm: Add get_vblank_timestamp() to struct drm_crtc_funcs
...ug_enabled(DRM_UT_VBL) && >> + !crtc->funcs->get_vblank_timestamp && >> + !dev->driver->get_vblank_timestamp, >> "This function requires support for accurate vblank timestamps."); >> >> spin_lock_irqsave(&dev->vblank_time_lock, flags); >> @@ -511,9 +513,9 @@ EXPORT_SYMBOL(drm_crtc_vblank_waitqueue); >> * >> * Calculate and store various constants which are later needed by vblank and >> * swap-completion timestamping, e.g, by >> - * drm_calc_vbltimestamp_from_scanoutpos(). They are deri...