linux/drivers/gpu/drm/i915
Chris Wilson bdeb978506 drm/i915: Repeat flush of idle work during suspend
The idle work handler is self-arming - if it detects that it needs to
run again it will queue itself from its work handler. Take greater care
when trying to drain the idle work, and double check that it is flushed.

The free worker has a similar issue where it is armed by an RCU task
which may be running concurrently with us.

This should hopefully help with the sporadic WARN_ON(dev_priv->gt.awake)
from i915_gem_suspend.

v2: Reuse drain_freed_objects.
v3: Don't try to flush the freed objects from the shrinker, as it may be
underneath the struct_mutex already.
v4: do while and comment upon the excess rcu_barrier in drain_freed_objects

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20161223145804.6605-2-chris@chris-wilson.co.uk
2016-12-23 16:07:11 +00:00
..
gvt drm/i915: Mark the shadow gvt context as closed 2016-12-18 16:18:54 +00:00
dvo_ch7xxx.c
dvo_ch7017.c
dvo_ivch.c
dvo_ns2501.c
dvo_sil164.c
dvo_tfp410.c
dvo.h
i915_cmd_parser.c drm/i915: Use the precomputed value for whether to enable command parsing 2016-11-24 13:52:34 +00:00
i915_debugfs.c drm/i915: Repeat flush of idle work during suspend 2016-12-23 16:07:11 +00:00
i915_drv.c drm/i915: Repeat flush of idle work during suspend 2016-12-23 16:07:11 +00:00
i915_drv.h drm/i915: Repeat flush of idle work during suspend 2016-12-23 16:07:11 +00:00
i915_gem_batch_pool.c
i915_gem_batch_pool.h
i915_gem_context.c drm/i915: Mark the shadow gvt context as closed 2016-12-18 16:18:54 +00:00
i915_gem_dmabuf.c drm/i915: Make GEM object alloc/free and stolen created take dev_priv 2016-12-01 18:00:15 +00:00
i915_gem_evict.c drm/i915: Retire before attempting to evict from the active lists 2016-12-12 12:25:32 +00:00
i915_gem_execbuffer.c drm/i915: Add a reminder that i915_vma_move_to_active() requires struct_mutex 2016-12-18 16:18:48 +00:00
i915_gem_fence_reg.c drm/i915: simplify check for I915G/I945G in bit 6 swizzling detection 2016-12-14 15:18:52 +02:00
i915_gem_fence_reg.h drm/i915: Split out i915_vma.c 2016-11-11 14:34:54 +02:00
i915_gem_gtt.c drm/i915: move vma sanity checking into i915_vma_bind 2016-12-16 21:17:22 +00:00
i915_gem_gtt.h drm/i915: fully apply WaSkipStolenMemoryFirstPage 2016-12-20 10:45:33 -02:00
i915_gem_internal.c drm/i915: rename BROADWATER and CRESTLINE to I965G and I965GM, respectively 2016-12-07 15:18:33 +02:00
i915_gem_object.h drm/i915: Move frontbuffer CS write tracking from ggtt vma to object 2016-11-18 11:15:59 +00:00
i915_gem_render_state.c
i915_gem_render_state.h
i915_gem_request.c drm/i915: Swap if(enable_execlists) in i915_gem_request_alloc for a vfunc 2016-12-18 16:18:56 +00:00
i915_gem_request.h drm/i915: Fix oopses in the overlay code due to i915_gem_active stuff 2016-12-22 21:26:33 +02:00
i915_gem_shrinker.c
i915_gem_stolen.c drm/i915: fully apply WaSkipStolenMemoryFirstPage 2016-12-20 10:45:33 -02:00
i915_gem_tiling.c drm/i915: Convert vm->dev backpointer to vm->i915 2016-11-29 11:38:00 +00:00
i915_gem_timeline.c drm/i915: Create distinct lockclasses for execution vs user timelines 2016-11-14 21:00:21 +00:00
i915_gem_timeline.h drm/i915: Rename i915_gem_timeline.next_seqno to .seqno 2016-11-25 07:01:11 +00:00
i915_gem_userptr.c drm/i915: Make GEM object alloc/free and stolen created take dev_priv 2016-12-01 18:00:15 +00:00
i915_gem.c drm/i915: Repeat flush of idle work during suspend 2016-12-23 16:07:11 +00:00
i915_gem.h drm/i915: introduce GEM_WARN_ON 2016-12-16 21:16:36 +00:00
i915_gpu_error.c drm/i915: replace platform flags with a platform enum 2016-12-07 11:58:26 +02:00
i915_guc_reg.h drm/i915/guc: Drop guc2host/host2guc from names 2016-11-25 21:28:57 +00:00
i915_guc_submission.c drm/i915: Unify active context tracking between legacy/execlists/guc 2016-12-18 16:18:50 +00:00
i915_ioc32.c
i915_irq.c drm/i915/glk: Reuse broxton code for geminilake 2016-12-02 16:38:56 +02:00
i915_memcpy.c
i915_mm.c
i915_oa_hsw.c drm/i915: Add more Haswell OA metric sets 2016-11-22 14:40:00 +01:00
i915_oa_hsw.h drm/i915: advertise available metrics via sysfs 2016-11-22 14:38:51 +01:00
i915_params.c drm/i915: Use the precomputed value for whether to enable command parsing 2016-11-24 13:52:34 +00:00
i915_params.h drm/i915: Use the precomputed value for whether to enable command parsing 2016-11-24 13:52:34 +00:00
i915_pci.c drm/i915: Remove useless VLV_FEATURE Macro. 2016-12-20 08:32:10 -08:00
i915_perf.c drm/i915: Simplify releasing context reference 2016-12-18 16:18:53 +00:00
i915_pvinfo.h
i915_reg.h drm/i915: Disable L2 cache clock gating on 830 when using the overlay 2016-12-22 21:31:21 +02:00
i915_suspend.c drm/i915: Make i915_save/restore_state and intel_i2c_reset take dev_priv 2016-12-01 18:01:23 +00:00
i915_sw_fence.c drm/i915: Integrate i915_sw_fence with debugobjects 2016-11-25 13:49:26 +00:00
i915_sw_fence.h drm/i915: Integrate i915_sw_fence with debugobjects 2016-11-25 13:49:26 +00:00
i915_sysfs.c drm/i915: Fix setting of boost freq tunable 2016-12-14 15:48:28 +02:00
i915_trace_points.c
i915_trace.h drm/i915: Fix i915_gem_evict_for_vma (soft-pinning) 2016-12-05 20:49:17 +00:00
i915_vgpu.c
i915_vgpu.h
i915_vma.c drm/i915: convert to using range_overflows 2016-12-16 21:22:12 +00:00
i915_vma.h drm/i915: Optimise VMA lookup slightly 2016-12-15 13:31:26 +00:00
intel_acpi.c
intel_atomic_plane.c Merge tag 'drm-misc-next-2016-11-29' of git://anongit.freedesktop.org/git/drm-misc into drm-next 2016-11-30 14:28:20 +10:00
intel_atomic.c
intel_audio.c drm/i915: Check num_pipes before initializing audio component 2016-12-22 12:29:17 +02:00
intel_bios.c drm/915: Parsing the missed out DTD fields from the VBT 2016-12-23 15:13:39 +02:00
intel_bios.h drm/i915/dsi: Fix swapping of MIPI_SEQ_DEASSERT_RESET / MIPI_SEQ_ASSERT_RESET 2016-12-07 19:37:22 +02:00
intel_breadcrumbs.c drm/i915/breadcrumbs: s/container_of/rb_entry/ 2016-12-20 12:30:25 +00:00
intel_color.c drm/i915: Assorted INTEL_INFO(dev) cleanups 2016-11-17 13:56:35 +00:00
intel_crt.c drm/i915: Pass dev_priv to intel_setup_outputs() 2016-11-25 16:43:24 +02:00
intel_csr.c drm/i915: fix compilation warnings on maybe uninitialized pointers 2016-11-29 11:31:01 +01:00
intel_ddi.c drm/i915/glk: Reuse broxton code for geminilake 2016-12-02 16:38:56 +02:00
intel_device_info.c drm/i915: give G45 and GM45 their own platform enums 2016-12-07 15:19:51 +02:00
intel_display.c drm/i915: Move the min_pixclk[] handling to the end of readout 2016-12-22 15:41:11 +02:00
intel_dp_aux_backlight.c
intel_dp_link_training.c
intel_dp_mst.c drm/i915: Validate mode against max. link data rate for DP MST 2016-12-05 16:23:18 +02:00
intel_dp.c drm/i915: Force VDD off on the new power seqeuencer before starting to use it 2016-12-22 14:31:04 +02:00
intel_dpio_phy.c drm/i915: Only poll DW3_A when init DDI PHY for ports B and C. 2016-12-02 12:16:25 -08:00
intel_dpll_mgr.c drm/i915/glk: Update Port PLL enable sequence for Geminilkae 2016-12-02 16:41:47 +02:00
intel_dpll_mgr.h
intel_drv.h drm/i915: Prevent PPS stealing from a normal DP port on VLV/CHV 2016-12-19 14:59:11 +02:00
intel_dsi_dcs_backlight.c
intel_dsi_panel_vbt.c drm/i915/bxt: add bxt dsi gpio element support 2016-12-13 14:49:15 +02:00
intel_dsi_pll.c drm/i915: relax uncritical udelay_range() 2016-12-16 11:22:01 +02:00
intel_dsi.c drm/i915/dsi: Move disable pll call outside of clear_device_ready() 2016-12-23 15:34:17 +02:00
intel_dsi.h
intel_dvo.c drm/i915: Pass dev_priv to intel_setup_outputs() 2016-11-25 16:43:24 +02:00
intel_engine_cs.c drm/i915: Unify active context tracking between legacy/execlists/guc 2016-12-18 16:18:50 +00:00
intel_fbc.c drm/i915: fully apply WaSkipStolenMemoryFirstPage 2016-12-20 10:45:33 -02:00
intel_fbdev.c Merge remote-tracking branch 'airlied/drm-next' into drm-intel-next-queued 2016-12-05 09:52:17 +01:00
intel_fifo_underrun.c
intel_frontbuffer.c
intel_frontbuffer.h drm/i915: Move frontbuffer CS write tracking from ggtt vma to object 2016-11-18 11:15:59 +00:00
intel_guc_fwif.h drm/i915/guc: Drop comment on fwif autogeneration 2016-12-07 07:10:21 +00:00
intel_guc_loader.c drm/i915: Fix kerneldoc for intel_guc_fini 2016-12-02 09:55:46 +00:00
intel_gvt.c
intel_gvt.h
intel_hangcheck.c drm/i915: Disable hangcheck when wedged 2016-11-22 17:42:17 +00:00
intel_hdmi.c drm/i915/glk: Reuse broxton code for geminilake 2016-12-02 16:38:56 +02:00
intel_hotplug.c drm/i915: More assorted dev_priv cleanups 2016-11-11 14:58:26 +00:00
intel_i2c.c drm/i915: add some more "i" in platform names for consistency 2016-12-07 15:19:31 +02:00
intel_lrc.c drm/i915: Swap if(enable_execlists) in i915_gem_request_alloc for a vfunc 2016-12-18 16:18:56 +00:00
intel_lrc.h drm/i915: Swap if(enable_execlists) in i915_gem_request_alloc for a vfunc 2016-12-18 16:18:56 +00:00
intel_lspcon.c drm/i915/lspcon: Remove unused force change mode parameter 2016-11-23 13:32:01 +02:00
intel_lvds.c drm/i915: Intel panel detection cleanup 2016-12-13 17:25:26 +02:00
intel_mocs.c drm/i915/glk: Reuse broxton code for geminilake 2016-12-02 16:38:56 +02:00
intel_mocs.h drm/i915: Make various init functions take dev_priv 2016-12-01 18:01:15 +00:00
intel_modes.c
intel_opregion.c drm/i915/opregion: fill in the CADL from connector list, not DIDL 2016-11-17 12:45:59 +02:00
intel_overlay.c drm/i915: Kill the 830 MI_OVERLAY_OFF workaround 2016-12-23 16:42:41 +02:00
intel_panel.c drm/i915: clean up Hz to PWM for i965 2016-12-13 17:28:08 +02:00
intel_pipe_crc.c drm/i915/debugfs: Move out pipe CRC code 2016-12-13 09:41:24 +01:00
intel_pm.c drm/i915: Disable L2 cache clock gating on 830 when using the overlay 2016-12-22 21:31:21 +02:00
intel_psr.c drm/i915: disable PSR by default on HSW/BDW 2016-12-14 18:15:24 -02:00
intel_renderstate_gen6.c
intel_renderstate_gen7.c
intel_renderstate_gen8.c
intel_renderstate_gen9.c
intel_renderstate.h
intel_ringbuffer.c drm/i915: Swap if(enable_execlists) in i915_gem_request_alloc for a vfunc 2016-12-18 16:18:56 +00:00
intel_ringbuffer.h drm/i915: Swap if(enable_execlists) in i915_gem_request_alloc for a vfunc 2016-12-18 16:18:56 +00:00
intel_runtime_pm.c drm/i915/dsi: Do not clear DPOUNIT_CLOCK_GATE_DISABLE from vlv_init_display_clock_gating 2016-12-05 20:45:58 +02:00
intel_sdvo_regs.h
intel_sdvo.c drm/i915: distinguish G33 and Pineview from each other 2016-12-07 23:28:33 +02:00
intel_sideband.c
intel_sprite.c Merge remote-tracking branch 'airlied/drm-next' into drm-intel-next-queued 2016-12-05 09:52:17 +01:00
intel_tv.c drm/i915: Pass dev_priv to intel_setup_outputs() 2016-11-25 16:43:24 +02:00
intel_uc.c drm/i915/guc: Init send_mutex in intel_uc_init_early() 2016-11-25 21:42:36 +00:00
intel_uc.h drm/i915: Make various init functions take dev_priv 2016-12-01 18:01:15 +00:00
intel_uncore.c drm/i915: Catch non-existent registers in find_fw_domain 2016-12-08 09:37:23 +02:00
intel_vbt_defs.h drm/915: Parsing the missed out DTD fields from the VBT 2016-12-23 15:13:39 +02:00
Kconfig drm/i915: rename preliminary_hw_support to alpha_support 2016-11-14 15:33:27 +02:00
Kconfig.debug drm/i915: Enable swfence debugobject support for i915.ko 2016-12-05 20:49:17 +00:00
Makefile drm/i915/debugfs: Move out pipe CRC code 2016-12-13 09:41:24 +01:00