Chris Wilson
96dabe99ca
drm/i915: Avoid busy-spinning on VLV_GLTC_PW_STATUS mmio
The busy-spin, as the first stage of intel_wait_for_register(), is
currently under suspicion for causing:
[ 62.034926] NMI watchdog: Watchdog detected hard LOCKUP on cpu 1
[ 62.034928] Modules linked in: i2c_dev i915 intel_gtt drm_kms_helper prime_numbers
[ 62.034932] CPU: 1 PID: 183 Comm: kworker/1:2 Not tainted 4.11.0-rc7+ #471
[ 62.034933] Hardware name: / , BIOS PYBSWCEL.86A.0027.2015.0507.1758 05/07/2015
[ 62.034934] Workqueue: pm pm_runtime_work
[ 62.034936] task: ffff880275a04ec0 task.stack: ffffc900002d8000
[ 62.034936] RIP: 0010:__intel_wait_for_register_fw+0x77/0x1a0 [i915]
[ 62.034937] RSP: 0018:ffffc900002dbc38 EFLAGS: 00000082
[ 62.034939] RAX: ffffc90003530094 RBX: 0000000000130094 RCX: 0000000000000001
[ 62.034940] RDX: 00000000000000a1 RSI: ffff88027fd15e58 RDI: 0000000000000000
[ 62.034941] RBP: ffffc900002dbc78 R08: 0000000000000002 R09: 0000000000000000
[ 62.034942] R10: ffffc900002dbc18 R11: ffff880276429dd0 R12: ffff8802707c0000
[ 62.034943] R13: 00000000000000a0 R14: 0000000000000000 R15: 00000000fffefc10
[ 62.034945] FS: 0000000000000000(0000) GS:ffff88027fd00000(0000) knlGS:0000000000000000
[ 62.034945] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 62.034947] CR2: 00007ffd3cd98ff8 CR3: 0000000274c19000 CR4: 00000000001006e0
[ 62.034947] Call Trace:
[ 62.034948] intel_wait_for_register+0x77/0x140 [i915]
[ 62.034949] vlv_suspend_complete+0x23/0x5b0 [i915]
[ 62.034950] intel_runtime_suspend+0x16c/0x2a0 [i915]
[ 62.034950] pci_pm_runtime_suspend+0x50/0x180
[ 62.034951] ? pci_pm_runtime_resume+0xa0/0xa0
[ 62.034952] __rpm_callback+0xc5/0x210
[ 62.034953] rpm_callback+0x1f/0x80
[ 62.034953] ? pci_pm_runtime_resume+0xa0/0xa0
[ 62.034954] rpm_suspend+0x118/0x580
[ 62.034955] pm_runtime_work+0x64/0x90
[ 62.034956] process_one_work+0x1bb/0x3e0
[ 62.034956] worker_thread+0x46/0x4f0
[ 62.034957] ? __schedule+0x18b/0x610
[ 62.034958] kthread+0xff/0x140
[ 62.034958] ? process_one_work+0x3e0/0x3e0
[ 62.034959] ? kthread_create_on_node+
and related hard lockups in CI for byt and bsw.
Note this effectively reverts commits 41ce405e68 and b273669588
("drm/i915: Convert wait_for(I915_READ(reg)) to intel_wait_for_register()")
v2: Convert bool allow into a u32 mask for clarity and repeat the
comment on vlv rc6 timing to justify the 3ms timeout used for the wait (Ville)
Fixes: 41ce405e68 ("drm/i915: Convert wait_for(I915_READ(reg)) to intel_wait_for_register()")
Fixes: b273669588 ("drm/i915: Convert wait_for(I915_READ(reg)) to intel_wait_for_register()")
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=100718
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Tomi Sarvela <tomi.p.sarvela@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170421135815.11897-1-chris@chris-wilson.co.uk
Tested-by: Tomi Sarvela <tomi.p.sarvela@intel.com>
(cherry picked from commit 3dd14c04d7)
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
2017-04-26 16:28:42 +03:00
..
2017-04-11 07:41:10 +10:00
2017-02-07 21:43:55 +01:00
2017-04-06 17:00:27 -04:00
2017-03-29 09:50:38 +02:00
2017-04-11 07:41:10 +10:00
2017-04-06 17:00:27 -04:00
2017-04-04 23:33:42 -04:00
2017-04-07 13:28:32 -04:00
2017-04-11 07:41:10 +10:00
2017-04-11 07:40:42 +10:00
2017-04-06 17:00:27 -04:00
2017-04-06 17:00:27 -04:00
2017-04-06 10:21:55 +02:00
2017-04-06 17:00:27 -04:00
2017-01-26 10:44:43 +01:00
2017-04-26 16:28:42 +03:00
2017-04-11 07:41:10 +10:00
2017-04-11 07:41:10 +10:00
2017-04-06 17:00:27 -04:00
2017-02-27 18:43:47 -08:00
2017-04-11 07:41:10 +10:00
2017-04-11 07:47:02 +10:00
2017-04-06 17:00:27 -04:00
2017-04-11 07:41:10 +10:00
2017-04-06 17:00:27 -04:00
2017-04-13 06:17:40 +10:00
2017-04-04 23:33:42 -04:00
2017-03-01 09:44:11 +01:00
2017-04-11 07:41:10 +10:00
2017-04-04 17:04:21 +03:00
2017-04-07 13:28:32 -04:00
2017-02-26 22:54:47 +01:00
2017-03-29 09:50:38 +02:00
2017-02-03 11:10:32 +01:00
2017-03-14 14:38:34 +01:00
2017-04-06 17:00:27 -04:00
2017-03-27 17:50:47 +02:00
2017-04-06 17:00:27 -04:00
2017-03-27 09:43:58 +02:00
2017-04-11 07:40:42 +10:00
2017-03-29 09:50:38 +02:00
2017-04-11 07:40:42 +10:00
2017-03-14 15:07:33 +01:00
2017-02-28 10:00:50 +01:00
2017-04-11 07:41:10 +10:00
2017-04-11 07:41:10 +10:00
2017-03-22 13:44:42 +08:00
2017-01-26 10:44:43 +01:00
2017-04-06 17:00:27 -04:00
2017-04-06 10:22:43 +02:00
2017-01-25 16:22:42 +01:00
2017-03-06 11:43:43 +01:00
2017-02-28 14:32:19 +01:00
2017-04-06 10:22:35 +02:00
2017-02-28 16:16:48 +01:00
2017-03-29 09:56:25 +02:00
2017-04-06 10:22:43 +02:00
2017-04-06 22:49:50 +02:00
2017-04-07 16:18:28 -04:00
2017-03-24 09:36:06 +01:00
2017-02-23 11:06:12 -05:00
2017-03-07 16:38:16 -05:00
2017-03-22 21:47:44 +01:00
2017-02-23 12:10:12 +10:00
2017-01-25 16:30:34 +01:00
2017-02-21 15:41:24 +02:00
2017-03-23 12:05:13 +10:00
2017-01-25 16:30:34 +01:00
2017-02-28 16:16:48 +01:00
2017-03-22 19:45:00 +02:00
2017-04-06 10:23:06 +02:00
2017-03-14 14:38:34 +01:00
2017-03-23 08:15:55 +01:00
2017-04-06 10:22:43 +02:00
2017-03-14 15:07:33 +01:00
2017-02-28 16:16:43 +01:00
2017-01-14 11:37:18 +01:00
2017-03-24 09:36:06 +01:00
2017-04-04 20:47:54 +02:00
2017-04-04 20:59:12 +01:00
2017-04-04 20:59:12 +01:00
2017-03-09 16:18:02 +01:00
2017-03-02 08:42:29 +01:00
2017-02-06 16:57:37 +01:00
2017-02-28 16:16:48 +01:00
2017-03-14 15:07:33 +01:00
2017-02-28 16:14:53 +01:00
2017-03-22 19:45:00 +02:00
2017-04-05 09:26:45 +02:00
2017-04-06 17:00:27 -04:00
2017-03-09 16:18:02 +01:00
2017-03-29 09:56:25 +02:00
2017-04-07 13:28:32 -04:00
2017-03-09 16:18:02 +01:00
2017-02-26 21:43:08 +01:00
2017-04-06 21:29:23 +02:00
2017-04-05 09:27:16 +02:00
2017-03-21 10:15:56 +02:00
2017-03-30 12:02:00 -07:00
2017-04-04 20:47:54 +02:00
2017-03-14 14:38:33 +01:00
2017-02-24 17:46:55 -08:00
2017-02-03 11:10:32 +01:00
2017-02-26 22:11:37 +01:00
2017-03-21 10:15:39 +02:00