Re: [PATCH] drm/i915: Always backoff after a drm_modeset_lock() deadlock

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Mar 29, 2019 at 04:51:52PM +0000, Chris Wilson wrote:
> If drm_modeset_lock() reports a deadlock it sets the ctx->contexted
> field and insists that the caller calls drm_modeset_backoff() or else it
> generates a WARN on cleanup.

I call the drm_modeset_backoff() for the second
drm_modeset_lock() but didnt call it for the first one, since it was the first one
and assumed it wont get deadlocked.
But apparently we do run in this situation, so yes we should handle the deadlock in this case too.
Thanks for the fix, looks good to me.

Reviewed-by: Manasi Navare <manasi.d.navare@xxxxxxxxx>

Manasi

> 
> <4> [1601.870376] WARNING: CPU: 3 PID: 8445 at drivers/gpu/drm/drm_modeset_lock.c:228 drm_modeset_drop_locks+0x35/0x40
> <4> [1601.870395] Modules linked in: vgem snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_codec_generic x86_pkg_temp_thermal i915 coretemp crct10dif_pclmul
> <6> [1601.870403] Console: switching
> <4> [1601.870403]  snd_hda_intel
> <4> [1601.870406] to colour frame buffer device 320x90
> <4> [1601.870406]  crc32_pclmul snd_hda_codec snd_hwdep ghash_clmulni_intel e1000e snd_hda_core cdc_ether ptp usbnet mii pps_core snd_pcm i2c_i801 mei_me mei prime_numbers
> <4> [1601.870422] CPU: 3 PID: 8445 Comm: cat Tainted: G     U            5.0.0-rc7-CI-CI_DRM_5650+ #1
> <4> [1601.870424] Hardware name: Intel Corporation Ice Lake Client Platform/IceLake U DDR4 SODIMM PD RVP TLC, BIOS ICLSFWR1.R00.2402.AD3.1810170014 10/17/2018
> <4> [1601.870427] RIP: 0010:drm_modeset_drop_locks+0x35/0x40
> <4> [1601.870430] Code: 29 48 8b 43 60 48 8d 6b 60 48 39 c5 74 19 48 8b 43 60 48 8d b8 70 ff ff ff e8 87 ff ff ff 48 8b 43 60 48 39 c5 75 e7 5b 5d c3 <0f> 0b eb d3 0f 1f 80 00 00 00 00 41 56 41 55 41 54 55 53 48 8b 6f
> <4> [1601.870432] RSP: 0018:ffffc90000d67ce8 EFLAGS: 00010282
> <4> [1601.870435] RAX: 00000000ffffffdd RBX: ffffc90000d67d00 RCX: 5dbbe23d00000000
> <4> [1601.870437] RDX: 0000000000000000 RSI: 0000000093e6194a RDI: ffffc90000d67d00
> <4> [1601.870439] RBP: ffff88849e62e678 R08: 0000000003b7329a R09: 0000000000000001
> <4> [1601.870441] R10: 0000000000000000 R11: 0000000000000000 R12: ffff888492100410
> <4> [1601.870442] R13: ffff88849ea50958 R14: ffff8884a67eb028 R15: ffff8884a67eb028
> <4> [1601.870445] FS:  00007fa7a27745c0(0000) GS:ffff8884aff80000(0000) knlGS:0000000000000000
> <4> [1601.870447] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> <4> [1601.870449] CR2: 000055af07e66000 CR3: 00000004a8cc2006 CR4: 0000000000760ee0
> <4> [1601.870451] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> <4> [1601.870453] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
> <4> [1601.870454] PKRU: 55555554
> <4> [1601.870456] Call Trace:
> <4> [1601.870505]  i915_dsc_fec_support_show+0x91/0x190 [i915]
> <4> [1601.870522]  seq_read+0xdb/0x3c0
> <4> [1601.870531]  full_proxy_read+0x51/0x80
> <4> [1601.870538]  __vfs_read+0x31/0x190
> <4> [1601.870546]  ? __se_sys_newfstat+0x3c/0x60
> <4> [1601.870552]  vfs_read+0x9e/0x150
> <4> [1601.870557]  ksys_read+0x50/0xc0
> <4> [1601.870564]  do_syscall_64+0x55/0x190
> <4> [1601.870569]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
> <4> [1601.870572] RIP: 0033:0x7fa7a226d081
> <4> [1601.870574] Code: fe ff ff 48 8d 3d 67 9c 0a 00 48 83 ec 08 e8 a6 4c 02 00 66 0f 1f 44 00 00 48 8d 05 81 08 2e 00 8b 00 85 c0 75 13 31 c0 0f 05 <48> 3d 00 f0 ff ff 77 57 f3 c3 0f 1f 44 00 00 41 54 55 49 89 d4 53
> <4> [1601.870576] RSP: 002b:00007ffcc05140c8 EFLAGS: 00000246 ORIG_RAX: 0000000000000000
> <4> [1601.870579] RAX: ffffffffffffffda RBX: 0000000000020000 RCX: 00007fa7a226d081
> <4> [1601.870581] RDX: 0000000000020000 RSI: 000055af07e63000 RDI: 0000000000000007
> <4> [1601.870583] RBP: 0000000000020000 R08: 000000000000007b R09: 0000000000000000
> <4> [1601.870585] R10: 000055af07e60010 R11: 0000000000000246 R12: 000055af07e63000
> <4> [1601.870587] R13: 0000000000000007 R14: 000055af07e634bf R15: 0000000000020000
> 
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=109745
> Fixes: e845f099f1c6 ("drm/i915/dsc: Add Per connector debugfs node for DSC support/enable")
> Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx>
> Cc: Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx>
> Cc: Ville Syrjala <ville.syrjala@xxxxxxxxxxxxxxx>
> Cc: Anusha Srivatsa <anusha.srivatsa@xxxxxxxxx>
> Cc: Lyude Paul <lyude@xxxxxxxxxx>
> Cc: Manasi Navare <manasi.d.navare@xxxxxxxxx>
> ---
>  drivers/gpu/drm/i915/i915_debugfs.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
> index 84c0c2a50f78..3aef121067e4 100644
> --- a/drivers/gpu/drm/i915/i915_debugfs.c
> +++ b/drivers/gpu/drm/i915/i915_debugfs.c
> @@ -4787,7 +4787,10 @@ static int i915_dsc_fec_support_show(struct seq_file *m, void *data)
>  		ret = drm_modeset_lock(&dev->mode_config.connection_mutex,
>  				       &ctx);
>  		if (ret) {
> -			ret = -EINTR;
> +			if (ret == -EDEADLK && !drm_modeset_backoff(&ctx)) {
> +				try_again = true;
> +				continue;
> +			}
>  			break;
>  		}
>  		crtc = connector->state->crtc;
> -- 
> 2.20.1
> 
_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux