4.9-rc1 lockdep warning suggesting a deadlock between nouveau and i915 with prime video outputs active

Jiri Slaby jirislaby at gmail.com
Thu Jul 13 13:57:31 UTC 2017


Stealing this thread as an opensuse user hit that too:
https://bugzilla.suse.com/show_bug.cgi?id=1045105

On 11/09/2016, 06:26 PM, Chris Wilson wrote:
> On Wed, Nov 09, 2016 at 06:02:40PM +0100, Hans de Goede wrote:
>> Hi,
>>
>> I noticed this while testing the displayport output attached
>> to the nvidia GPU on a Thinkpad P50 while the intel GPU
>> was driving the LCD panel (and was the primary GPU according
>> to Xorg). This was while logging into gnome-3 with Xorg-1.19-rc2,
>> from gdm (also running on top of Xorg-1.19-rc2).
> 
> Worth trying
> 
> 
> 
> to test for a false positive first.

Hmm, not that easy:
[  +0.011001] BUG: key ffff8807573ed758 not in .data!
[  +0.000103] DEBUG_LOCKS_WARN_ON(1)
[  +0.000012] ------------[ cut here ]------------
[  +0.000147] WARNING: CPU: 1 PID: 282 at
../kernel/locking/lockdep.c:3156 lockdep_init_map+0x4db/0x5e0

Any other idea :)?

> -Chris
> 
> diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
> index 6efdba4993fc..3e4dc782812d 100644
> --- a/drivers/gpu/drm/drm_drv.c
> +++ b/drivers/gpu/drm/drm_drv.c
> @@ -505,7 +505,9 @@ int drm_dev_init(struct drm_device *dev,
>  
>         spin_lock_init(&dev->buf_lock);
>         spin_lock_init(&dev->event_lock);
> -       mutex_init(&dev->struct_mutex);
> +       __mutex_init(&dev->struct_mutex,
> +                    "struct_mutex",
> +                    &dev->struct_mutex_class);
>         mutex_init(&dev->filelist_mutex);
>         mutex_init(&dev->ctxlist_mutex);
>         mutex_init(&dev->master_mutex);
> diff --git a/include/drm/drmP.h b/include/drm/drmP.h
> index ae49c3174d24..ed2e53534c2e 100644
> --- a/include/drm/drmP.h
> +++ b/include/drm/drmP.h
> @@ -808,6 +808,7 @@ struct drm_device {
>  
>         /** \name Locks */
>         /*@{ */
> +       struct lock_class_key struct_mutex_class;
>         struct mutex struct_mutex;      /**< For others */
>         struct mutex master_mutex;      /**< For drm_minor::master and drm_file::is_master */
>         /*@} */
> 


-- 
js


More information about the dri-devel mailing list