[PATCH]i915: use WARN_ON_ONCE in intel_dp_aux_transfer

Dave Young dyoung at redhat.com
Thu Nov 24 08:11:39 UTC 2016


I see a lot of below warning:
[   17.128256] WARNING: CPU: 1 PID: 95 at drivers/gpu/drm/i915/intel_dp.c:1062 intel_dp_aux_transfer+0x201/0x240 [i915]
[   17.128264] WARN_ON_ONCE(!msg->buffer != !msg->size)
[   17.128267] Modules linked in:
[   17.128273]  kvm_intel kvm irqbypass i915 intel_gtt drm_kms_helper snd_hda_codec_realtek syscopyarea snd_hda_codec_generic sysfillrect sysimgblt fb_sys_fops drm arc4 rtsx_pci_sdmmc iwlmvm mac80211 snd_hda_intel btusb snd_hda_codec btrtl iwlwifi btbcm btintel snd_hwdep snd_hda_core snd_seq bluetooth e1000e i2c_i801 cfg80211 input_leds snd_seq_device i2c_smbus serio_raw pcspkr snd_pcm ptp rtsx_pci pps_core mfd_core snd_timer thinkpad_acpi snd soundcore rfkill video nfsd auth_rpcgss nfs_acl lockd grace sunrpc
[   17.128338] CPU: 1 PID: 95 Comm: kworker/u16:2 Not tainted 4.9.0-rc6+ #200
[   17.128344] Hardware name: LENOVO 20ARS1BJ02/20ARS1BJ02, BIOS GJET91WW (2.41 ) 09/21/2016
[   17.128355] Workqueue: events_unbound async_run_entry_fn
[   17.128361]  ffff9db20105fa98 ffffffffa9eeb8ed ffff9db20105fae8 0000000000000000
[   17.128370]  ffff9db20105fad8 ffffffffa9c5339b 00000426907d27c8 ffff9db20105fbc0
[   17.128379]  ffff9474910510e0 0000000000000003 00000000fffffffb 0000000000000000
[   17.128388] Call Trace:
[   17.128396]  [<ffffffffa9eeb8ed>] dump_stack+0x63/0x86
[   17.128404]  [<ffffffffa9c5339b>] __warn+0xcb/0xf0
[   17.128410]  [<ffffffffa9c5341f>] warn_slowpath_fmt+0x5f/0x80
[   17.128454]  [<ffffffffc0a8e45e>] ? intel_dp_aux_transfer+0xde/0x240 [i915]
[   17.128492]  [<ffffffffc0a8e581>] intel_dp_aux_transfer+0x201/0x240 [i915]
[   17.128507]  [<ffffffffc09b2c82>] drm_dp_dpcd_access+0x72/0x110 [drm_kms_helper]
[   17.128519]  [<ffffffffc09b2d3b>] drm_dp_dpcd_write+0x1b/0x20 [drm_kms_helper]
[   17.128557]  [<ffffffffc0a89b3b>] intel_dp_start_link_train+0x2cb/0x4c0 [i915]
[   17.128594]  [<ffffffffc0a8b099>] intel_dp_check_link_status+0xd9/0x110 [i915]
[   17.128630]  [<ffffffffc0a8fc3f>] intel_dp_detect+0x79f/0xb90 [i915]
[   17.128641]  [<ffffffffc09b413f>] drm_helper_probe_single_connector_modes+0x3ff/0x4f0 [drm_kms_helper]
[   17.128654]  [<ffffffffc09c21fe>] drm_fb_helper_initial_config+0xae/0x430 [drm_kms_helper]
[   17.128697]  [<ffffffffc0a81418>] intel_fbdev_initial_config+0x18/0x30 [i915]
[   17.128705]  [<ffffffffa9c74fb7>] async_run_entry_fn+0x37/0xe0
[   17.128713]  [<ffffffffa9c6c4a9>] process_one_work+0x1e9/0x440
[   17.128721]  [<ffffffffa9c6c74b>] worker_thread+0x4b/0x4f0
[   17.128728]  [<ffffffffa9c6c700>] ? process_one_work+0x440/0x440
[   17.128721]  [<ffffffffa9c6c74b>] worker_thread+0x4b/0x4f0
[   17.128728]  [<ffffffffa9c6c700>] ? process_one_work+0x440/0x440
[   17.128735]  [<ffffffffa9c71f99>] kthread+0xd9/0xf0
[   17.128741]  [<ffffffffa9c1172e>] ? __switch_to+0x2ce/0x580
[   17.128748]  [<ffffffffa9c71ec0>] ? kthread_park+0x60/0x60
[   17.128754]  [<ffffffffa9c71ec0>] ? kthread_park+0x60/0x60
[   17.128762]  [<ffffffffaa1f7835>] ret_from_fork+0x25/0x30
[   17.128768] ---[ end trace 1c8614b2fcd03dac ]---
[   17.151929] [drm:intel_dp_start_link_train [i915]] *ERROR* failed to update link training

It seems a known issue below:
https://bugs.freedesktop.org/show_bug.cgi?id=97344

This is not to fix the real problem just use WARN_ON_ONCE is better for
this kind of warnings instead of warn again and again.

Signed-off-by: Dave Young <dyoung at redhat.com>
---
 drivers/gpu/drm/i915/intel_dp.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- linux-x86.orig/drivers/gpu/drm/i915/intel_dp.c
+++ linux-x86/drivers/gpu/drm/i915/intel_dp.c
@@ -1059,7 +1059,7 @@ intel_dp_aux_transfer(struct drm_dp_aux
 		if (WARN_ON(txsize > 20))
 			return -E2BIG;
 
-		WARN_ON(!msg->buffer != !msg->size);
+		WARN_ON_ONCE(!msg->buffer != !msg->size);
 
 		if (msg->buffer)
 			memcpy(txbuf + HEADER_SIZE, msg->buffer, msg->size);


More information about the dri-devel mailing list