• C
    drm/i915: Lie and treat all engines as idle if wedged · a8e9a419
    Chris Wilson 提交于
    Similar to commit 8490ae20 ("drm/i915: Suppress busy status for
    engines if wedged") we also want to report intel_engine_is_idle() as
    true as well as the main intel_engines_are_idle(), as we now check that
    the engines are idle when overwriting the HWS page. This is not true
    whilst we are setting the device as wedged, at least according to our
    bookkeeping, so we have to lie to ourselves!
    
    [  383.588601] [drm:i915_reset [i915]] *ERROR* Failed to reset chip: -110
    [  383.588685] ------------[ cut here ]------------
    [  383.588755] WARNING: CPU: 0 PID: 12 at drivers/gpu/drm/i915/intel_engine_cs.c:226 intel_engine_init_global_seqno+0x222/0x290 [i915]
    [  383.588757] WARN_ON(!intel_engine_is_idle(engine))
    [  383.588759] Modules linked in: ctr ccm snd_hda_codec_hdmi snd_hda_codec_conexant snd_hda_codec_generic snd_hda_intel snd_hda_codec snd_hda_core arc4 iwldvm mac80211 snd_pcm snd_hwdep snd_seq_midi snd_seq_midi_event rfcomm bnep snd_rawmidi intel_powerclamp coretemp dm_multipath iwlwifi crct10dif_pclmul snd_seq crc32_pclmul ghash_clmulni_intel btusb aesni_intel btrtl btbcm aes_x86_64 crypto_simd cryptd btintel snd_timer glue_helper bluetooth intel_ips snd_seq_device cfg80211 snd soundcore binfmt_misc mei_me mei dm_mirror dm_region_hash dm_log i915 intel_gtt i2c_algo_bit drm_kms_helper cfbfillrect syscopyarea cfbimgblt sysfillrect sysimgblt fb_sys_fops cfbcopyarea prime_numbers ahci libahci drm e1000e
    [  383.588851] CPU: 0 PID: 12 Comm: migration/0 Not tainted 4.11.0-rc5+ #207
    [  383.588853] Hardware name: LENOVO 514328U/514328U, BIOS 6QET44WW (1.14 ) 04/20/2010
    [  383.588855] Call Trace:
    [  383.588866]  dump_stack+0x63/0x90
    [  383.588871]  __warn+0xc7/0xf0
    [  383.588876]  warn_slowpath_fmt+0x4a/0x50
    [  383.588883]  ? set_next_entity+0x821/0x910
    [  383.588943]  intel_engine_init_global_seqno+0x222/0x290 [i915]
    [  383.588998]  __i915_gem_set_wedged_BKL+0xa4/0x190 [i915]
    [  383.589003]  ? __switch_to+0x215/0x390
    [  383.589008]  multi_cpu_stop+0xbb/0xe0
    [  383.589012]  ? cpu_stop_queue_work+0x90/0x90
    [  383.589016]  cpu_stopper_thread+0x82/0x110
    [  383.589021]  smpboot_thread_fn+0x137/0x190
    [  383.589026]  kthread+0xf7/0x130
    [  383.589030]  ? sort_range+0x20/0x20
    [  383.589034]  ? kthread_park+0x90/0x90
    [  383.589040]  ret_from_fork+0x2c/0x40
    
    Fixes: 2ca9faa5 ("drm/i915: Assert the engine is idle before overwiting the HWS")
    Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
    Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Reviewed-by: NJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/20170411190042.25662-1-chris@chris-wilson.co.uk
    a8e9a419
intel_engine_cs.c 32.7 KB