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-07 13:48:26 +02:00
2017-03-02 08:42:29 +01:00
2017-03-09 11:55:23 -05:00
2017-03-02 08:42:32 +01:00
2017-03-16 16:59:55 +09:00
2017-03-16 16:56:19 -07:00
2017-03-24 15:42:47 -06:00
2017-03-22 19:22:04 -07:00
2017-02-23 15:57:04 -08:00
2017-02-17 14:08:19 -07:00
2017-03-28 17:34:19 +10:00
2017-03-23 16:08:46 -07:00
2017-04-02 09:22:03 -07:00
2017-03-31 23:00:53 +02:00
2017-03-29 22:55:36 +02:00
2017-03-31 12:11:32 -07:00
2017-03-10 19:56:56 -08:00
2017-02-27 18:43:47 -08:00
2017-03-14 10:11:27 +05:30
2017-04-03 21:57:20 +05:30
2017-03-26 09:36:28 +02:00
2017-03-22 18:29:48 +09:00
2017-02-28 20:29:41 -08:00
2017-03-17 18:53:12 +00:00
2017-02-10 15:20:44 +01:00
2017-02-10 15:19:48 +01:00
2017-03-30 11:08:46 +02:00
2017-04-26 16:28:42 +03:00
2017-03-31 11:50:31 -07:00
2017-03-02 08:42:32 +01:00
2017-03-16 16:42:33 +09:00
2017-03-23 12:01:57 -07:00
2017-03-15 14:55:18 +02:00
2017-04-11 07:40:42 +10:00
2017-03-02 08:42:36 +01:00
2017-03-02 17:41:27 -08:00
2017-04-02 11:44:03 +01:00
2017-03-24 22:44:29 -04:00
2017-03-23 19:51:06 -07:00
2017-03-22 23:59:56 +01:00
2017-03-31 16:54:48 +02:00
2017-03-28 17:59:33 -07:00
2017-03-02 08:42:27 +01:00
2017-03-02 08:42:32 +01:00
2017-02-15 08:27:21 -07:00
2017-03-10 14:17:23 +11:00
2017-03-02 08:42:32 +01:00
2017-04-08 11:56:58 -07:00
2017-03-24 13:34:16 -07:00
2017-03-06 08:37:53 -08:00
2017-02-17 14:08:19 -07:00
2017-02-21 11:51:42 -08:00
2017-02-22 12:14:01 -08:00
2017-03-26 11:15:54 -07:00
2017-03-30 21:10:29 +02:00
2017-03-09 17:01:09 -08:00
2017-04-05 18:46:40 -07:00
2017-02-27 18:43:47 -08:00
2017-02-16 23:11:26 -05:00
2017-03-01 00:49:42 -08:00
2017-04-02 10:24:15 +03:00
2017-03-14 15:07:33 +01:00
2017-03-02 08:42:40 +01:00
2017-03-03 16:20:06 -08:00
2017-03-16 17:32:21 +09:00
2017-04-11 07:40:42 +10:00
2017-03-02 08:42:27 +01:00
2017-03-09 15:29:57 +05:30
2017-04-07 01:08:08 +02:00
2017-03-30 22:42:30 +02:00
2017-02-27 18:43:47 -08:00
2017-03-02 08:42:29 +01:00
2017-03-20 16:25:06 +01:00
2017-03-01 09:46:02 -08:00
2017-03-31 17:13:30 -07:00
2017-02-20 17:23:57 -08:00
2017-03-20 14:45:44 -07:00
2017-02-23 15:57:04 -08:00
2017-03-02 13:53:13 -08:00
2017-03-02 08:42:32 +01:00
2017-04-05 20:17:38 -07:00
2017-04-08 11:56:58 -07:00
2017-03-02 08:42:32 +01:00
2017-03-02 08:42:27 +01:00
2017-04-08 12:13:11 +02:00
2017-03-18 16:32:30 -07:00
2017-03-13 10:06:55 +08:00
2017-04-02 09:25:10 -07:00
2017-03-02 08:42:32 +01:00
2017-03-29 12:13:50 +02:00
2017-03-14 17:07:31 +08:00
2017-03-24 14:39:36 -07:00
2017-03-21 14:41:46 -07:00
2017-03-03 01:45:16 +01:00
2017-03-28 20:41:28 +03:00
2017-03-02 08:42:29 +01:00
2017-03-01 06:15:10 -08:00
2017-04-04 10:11:06 -04:00
2017-02-10 15:19:48 +01:00
2017-02-23 11:53:22 -08:00