Displaying 20 results from an estimated 53 matches for "drm_modeset_lock_all".
2012 Dec 12
43
[PATCH 00/37] [RFC] revamped modeset locking
...auses nightmares, right?
vmwgfx ...
Please bring on the flames.
Cheers, Daniel
Daniel Vetter (37):
drm: review locking rules in drm_crtc.c
drm/doc: integrate drm_crtc.c kerneldoc
drm: add drm_modeset_lock|unlock_all
drm/i915: rework locking for intel_dpio|sbi_read|write
drm/i915: use drm_modeset_lock_all
drm/gma500: use drm_modeset_lock_all
drm/ast: use drm_modeset_lock_all
drm/shmobile: use drm_modeset_lock_all
drm/vmgfx: use drm_modeset_lock_all
drm: add per-crtc locks
drm/radeon: add W|RREG32_IDX for MM_INDEX|DATA based mmio accesss
drm/radeon: make indirect register access concurr...
2017 Nov 10
2
[PATCH] Accept 3d controllers and not only VGA controllers.
...uct nv50_mstc *mstc = nv50_mstc(connector);
+ if (!drm->fbcon)
+ {
+ NV_WARN(drm, "drm->fbcon of %s point to NULL. Will not destroy
connector\n",
+ connector->name);
+ return;
+ }
+
drm_connector_unregister(&mstc->connector);
drm_modeset_lock_all(drm->dev);
@@ -3229,6 +3236,12 @@ nv50_mstm_register_connector(struct drm_connector
*connector)
{
struct nouveau_drm *drm = nouveau_drm(connector->dev);
+ if (!drm->fbcon)
+ {
+ NV_WARN(drm, "drm->fbcon of %s point to NULL. Will not register
connector\n",...
2017 Dec 03
2
[PATCH] Accept 3d controllers and not only VGA controllers.
... {
>> + NV_WARN(drm, "drm->fbcon of %s point to NULL. Will not destroy
>> connector\n",
>> + connector->name);
>> + return;
>> + }
>> +
>> drm_connector_unregister(&mstc->connector);
>> drm_modeset_lock_all(drm->dev);
>> @@ -3229,6 +3236,12 @@ nv50_mstm_register_connector(struct drm_connector
>> *connector)
>> {
>> struct nouveau_drm *drm = nouveau_drm(connector->dev);
>> + if (!drm->fbcon)
>> + {
>> + NV_WARN(drm, "drm->...
2018 May 02
0
[PATCH] drm/nouveau: Fix deadlock in nv50_mstm_register_connector()
...locks held by kworker/1:0/18:
#0: 000000004a05cd50 ((wq_completion)"events_long"){+.+.}, at: process_one_work+0x187/0x650
#1: 00000000601c11d1 ((work_completion)(&mgr->work)){+.+.}, at: process_one_work+0x187/0x650
#2: 00000000586ca0df (&dev->mode_config.mutex){+.+.}, at: drm_modeset_lock_all+0x3a/0x1b0 [drm]
#3: 00000000d3ca0ffa (crtc_ww_class_acquire){+.+.}, at: drm_modeset_lock_all+0x44/0x1b0 [drm]
#4: 00000000942e28e2 (crtc_ww_class_mutex){+.+.}, at: drm_modeset_backoff+0x8e/0x1c0 [drm]
stack backtrace:
CPU: 1 PID: 18 Comm: kworker/1:0 Tainted: G O 4.17.0-rc3Lyude-...
2017 Dec 14
2
[PATCH] Accept 3d controllers and not only VGA controllers.
...%s point to NULL. Will not destroy
>>>> connector\n",
>>>> + connector->name);
>>>> + return;
>>>> + }
>>>> +
>>>> drm_connector_unregister(&mstc->connector);
>>>> drm_modeset_lock_all(drm->dev);
>>>> @@ -3229,6 +3236,12 @@ nv50_mstm_register_connector(struct drm_connector
>>>> *connector)
>>>> {
>>>> struct nouveau_drm *drm = nouveau_drm(connector->dev);
>>>> + if (!drm->fbcon)
>>>>...
2019 Aug 06
2
Xorg indefinitely hangs in kernelspace
...x750
[354073.762217] ? __switch_to_asm+0x34/0x70
[354073.762218] ? __switch_to_asm+0x40/0x70
[354073.762219] ? __switch_to_asm+0x40/0x70
[354073.762220] __ww_mutex_lock_slowpath+0x16/0x20
[354073.762221] ww_mutex_lock+0x34/0x50
[354073.762235] drm_modeset_lock+0x35/0xb0 [drm]
[354073.762243] drm_modeset_lock_all_ctx+0x5d/0xe0 [drm]
[354073.762251] drm_modeset_lock_all+0x5e/0xb0 [drm]
[354073.762252] qxl_display_read_client_monitors_config+0x1e1/0x370 [qxl]
[354073.762254] qxl_client_monitors_config_work_func+0x15/0x20 [qxl]
[354073.762256] process_one_work+0x20f/0x410
[354073.762257] worker_thread+0x3...
2019 Aug 06
2
Xorg indefinitely hangs in kernelspace
...x750
[354073.762217] ? __switch_to_asm+0x34/0x70
[354073.762218] ? __switch_to_asm+0x40/0x70
[354073.762219] ? __switch_to_asm+0x40/0x70
[354073.762220] __ww_mutex_lock_slowpath+0x16/0x20
[354073.762221] ww_mutex_lock+0x34/0x50
[354073.762235] drm_modeset_lock+0x35/0xb0 [drm]
[354073.762243] drm_modeset_lock_all_ctx+0x5d/0xe0 [drm]
[354073.762251] drm_modeset_lock_all+0x5e/0xb0 [drm]
[354073.762252] qxl_display_read_client_monitors_config+0x1e1/0x370 [qxl]
[354073.762254] qxl_client_monitors_config_work_func+0x15/0x20 [qxl]
[354073.762256] process_one_work+0x20f/0x410
[354073.762257] worker_thread+0x3...
2013 Mar 05
3
nouveau lockdep splat
...}, at: [<ffffffff812c900a>] register_framebuffer+0x1ba/0x310
> [ 0.633646] #6: ((fb_notifier_list).rwsem){.+.+.+}, at: [<ffffffff810694d2>] __blocking_notifier_call_chain+0x42/0x80
> [ 0.633648] #7: (&dev->mode_config.mutex){+.+.+.}, at: [<ffffffff8135e63a>] drm_modeset_lock_all+0x2a/0x70
> [ 0.633650] #8: (&crtc->mutex){+.+.+.}, at: [<ffffffff8135e664>] drm_modeset_lock_all+0x54/0x70
> [ 0.633652] #9: (&dmac->lock){+.+...}, at: [<ffffffff8141bb53>] evo_wait+0x43/0xf0
> [ 0.633652]
> [ 0.633652] stack backtrace:
> [...
2017 Dec 18
2
[PATCH] Accept 3d controllers and not only VGA controllers.
...gt; connector\n",
>>>>>> + connector->name);
>>>>>> + return;
>>>>>> + }
>>>>>> +
>>>>>> drm_connector_unregister(&mstc->connector);
>>>>>> drm_modeset_lock_all(drm->dev);
>>>>>> @@ -3229,6 +3236,12 @@ nv50_mstm_register_connector(struct
>> drm_connector
>>>>>> *connector)
>>>>>> {
>>>>>> struct nouveau_drm *drm = nouveau_drm(connector->dev);
>>>>>&...
2017 Nov 11
0
[PATCH] Accept 3d controllers and not only VGA controllers.
...(!drm->fbcon)
> + {
> + NV_WARN(drm, "drm->fbcon of %s point to NULL. Will not destroy
> connector\n",
> + connector->name);
> + return;
> + }
> +
> drm_connector_unregister(&mstc->connector);
>
> drm_modeset_lock_all(drm->dev);
> @@ -3229,6 +3236,12 @@ nv50_mstm_register_connector(struct drm_connector
> *connector)
> {
> struct nouveau_drm *drm = nouveau_drm(connector->dev);
>
> + if (!drm->fbcon)
> + {
> + NV_WARN(drm, "drm->fbcon of %s point to...
2017 Dec 14
0
[PATCH] Accept 3d controllers and not only VGA controllers.
...drm, "drm->fbcon of %s point to NULL. Will not destroy
>>> connector\n",
>>> + connector->name);
>>> + return;
>>> + }
>>> +
>>> drm_connector_unregister(&mstc->connector);
>>> drm_modeset_lock_all(drm->dev);
>>> @@ -3229,6 +3236,12 @@ nv50_mstm_register_connector(struct drm_connector
>>> *connector)
>>> {
>>> struct nouveau_drm *drm = nouveau_drm(connector->dev);
>>> + if (!drm->fbcon)
>>> + {
>>> + ...
2018 Dec 10
2
[PATCH 4/7] drm: Move the legacy kms disable_all helper to crtc helpers
...*
- * Note: This should only be used by non-atomic legacy drivers. For an atomic
- * version look at drm_atomic_helper_shutdown().
- *
- * Returns:
- * Zero on success, error code on failure.
- */
-int drm_crtc_force_disable_all(struct drm_device *dev)
-{
- struct drm_crtc *crtc;
- int ret = 0;
-
- drm_modeset_lock_all(dev);
- drm_for_each_crtc(crtc, dev)
- if (crtc->enabled) {
- ret = drm_crtc_force_disable(crtc);
- if (ret)
- goto out;
- }
-out:
- drm_modeset_unlock_all(dev);
- return ret;
-}
-EXPORT_SYMBOL(drm_crtc_force_disable_all);
-
static unsigned int drm_num_crtcs(struct drm_device *dev)
{...
2017 Jun 21
0
[PATCH 01/11] drm/fb-helper: do a generic fb_setcmap helper in terms of crtc .gamma_set
...too much effort.
>
> I suspect something like that indeed needs to be done though. E.g.
> killing Xorg results in fbcon continuing to use the LUT set by Xorg.
Ok, the only trouble with that is atomic kms locking, which requires that
we can only do 1 commit per lock-holding time, and also
drm_modeset_lock_all is an evil hack and needs to be phased out. Two
solutions:
- We just update the lut after we've dropped the locks again in
restore_fbdev_mode.
- We need both a legacy path, in restore_fbdev_mode_legacy, and an atomic
path in restore_fbdev_mode_atomic. The latter cannot use the gamme_set...
2017 Dec 14
0
[PATCH] Accept 3d controllers and not only VGA controllers.
...estroy
>>>>> connector\n",
>>>>> + connector->name);
>>>>> + return;
>>>>> + }
>>>>> +
>>>>> drm_connector_unregister(&mstc->connector);
>>>>> drm_modeset_lock_all(drm->dev);
>>>>> @@ -3229,6 +3236,12 @@ nv50_mstm_register_connector(struct
>drm_connector
>>>>> *connector)
>>>>> {
>>>>> struct nouveau_drm *drm = nouveau_drm(connector->dev);
>>>>> + if (!drm->...
2017 Jun 22
1
[PATCH v2 03/14] drm/fb-helper: do a generic fb_setcmap helper in terms of crtc .gamma_set
...drm_crtc *crtc;
u16 *r, *g, *b;
- int i, j, rc = 0;
- int start;
+ int i, ret;
if (oops_in_progress)
return -EBUSY;
@@ -1216,65 +1170,83 @@ int drm_fb_helper_setcmap(struct fb_cmap *cmap, struct fb_info *info)
if (cmap->start + cmap->len < cmap->start)
return -EINVAL;
- drm_modeset_lock_all(dev);
+ drm_modeset_acquire_init(&ctx, 0);
+retry:
+ ret = drm_modeset_lock_all_ctx(dev, &ctx);
+ if (ret)
+ goto out;
if (!drm_fb_helper_is_bound(fb_helper)) {
- drm_modeset_unlock_all(dev);
- return -EBUSY;
+ ret = -EBUSY;
+ goto out;
}
for (i = 0; i < fb_helper->crtc_c...
2016 Jun 30
6
[PATCH] backlight: Avoid double fbcon backlight handling
...ocking dependency detected ]
[ 18.983766] 4.7.0-rc5+ #524 Tainted: G O
[ 18.983767] -------------------------------------------------------
[ 18.983767] kworker/u8:0/6 is trying to acquire lock:
[ 18.983777] (&dev->mode_config.mutex){+.+.+.}, at: [<ffffffff815afde0>] drm_modeset_lock_all+0x40/0x120
[ 18.983777]
but task is already holding lock:
[ 18.983782] ((fb_notifier_list).rwsem){++++.+}, at: [<ffffffff810ac195>] __blocking_notifier_call_chain+0x35/0x70
[ 18.983783]
which lock already depends on the new lock.
[ 18.983783]...
2017 Jun 21
2
[PATCH 01/11] drm/fb-helper: do a generic fb_setcmap helper in terms of crtc .gamma_set
...*green, *blue, *transp;
>> + struct drm_modeset_acquire_ctx ctx;
>> struct drm_crtc *crtc;
>> - int i, j, rc = 0;
>> - int start;
>> + u16 *r, *g, *b;
>> + int i, ret;
>>
>> if (oops_in_progress)
>> return -EBUSY;
>>
>> - drm_modeset_lock_all(dev);
>> + if (cmap->start + cmap->len < cmap->start)
>> + return -EINVAL;
>> +
>> + drm_modeset_acquire_init(&ctx, 0);
>> +retry:
>> + ret = drm_modeset_lock_all_ctx(dev, &ctx);
>> + if (ret)
>> + goto out;
>> if (!drm_f...
2017 Dec 18
0
[PATCH] Accept 3d controllers and not only VGA controllers.
...gt;>>>>>> + connector->name);
>>>>>>> + return;
>>>>>>> + }
>>>>>>> +
>>>>>>> drm_connector_unregister(&mstc->connector);
>>>>>>> drm_modeset_lock_all(drm->dev);
>>>>>>> @@ -3229,6 +3236,12 @@ nv50_mstm_register_connector(struct
>>> drm_connector
>>>>>>> *connector)
>>>>>>> {
>>>>>>> struct nouveau_drm *drm = nouveau_drm(connector->dev);
&...
2016 May 24
4
[PATCH 9/9] drm: Turn off crtc before tearing down its data structure
...tc is currently enabled,
> + * it is turned off first.
> */
> void drm_crtc_cleanup(struct drm_crtc *crtc)
> {
> struct drm_device *dev = crtc->dev;
>
> + if (crtc->enabled) {
> + struct drm_mode_set modeset = {
> + .crtc = crtc,
> + };
> +
> + drm_modeset_lock_all(dev);
> + drm_mode_set_config_internal(&modeset);
> + drm_modeset_unlock_all(dev);
> + }
> +
> kfree(crtc->gamma_store);
> crtc->gamma_store = NULL;
>
> --
> 2.8.1
>
> _______________________________________________
> Nouveau mailing list
>...
2020 Jan 13
0
[PATCH RESEND] drm/nouveau: Add HD-audio component notifier support
...evice *kdev, struct device *hda_kdev,
+ void *data)
+{
+ struct drm_device *drm_dev = dev_get_drvdata(kdev);
+ struct nouveau_drm *drm = nouveau_drm(drm_dev);
+ struct drm_audio_component *acomp = data;
+
+ if (WARN_ON(!device_link_add(hda_kdev, kdev, DL_FLAG_STATELESS)))
+ return -ENOMEM;
+
+ drm_modeset_lock_all(drm_dev);
+ acomp->ops = &nv50_audio_component_ops;
+ acomp->dev = kdev;
+ drm->audio.component = acomp;
+ drm_modeset_unlock_all(drm_dev);
+ return 0;
+}
+
+static void
+nv50_audio_component_unbind(struct device *kdev, struct device *hda_kdev,
+ void *data)
+{
+ struct drm_devic...