linux/drivers/gpu/drm/i915
Chris Wilson 45c5f2022c drm/i915: Disable all GEM timers and work on unload
We have two once very similar functions, i915_gpu_idle() and
i915_gem_idle(). The former is used as the lower level operation to
flush work on the GPU, whereas the latter is the high level interface to
flush the GEM bookkeeping in addition to flushing the GPU. As such
i915_gem_idle() also clears out the request and activity lists and
cancels the delayed work. This is what we need for unloading the driver,
unfortunately we called i915_gpu_idle() instead.

In the process, make sure that when cancelling the delayed work and
timer, which is synchronous, that we do not hold any locks to prevent a
deadlock if the work item is already waiting upon the mutex. This
requires us to push the mutex down from the caller to i915_gem_idle().

v2: s/i915_gem_idle/i915_gem_suspend/

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=70334
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Tested-by: xunx.fang@intel.com
[danvet: Only set ums.suspended for !kms as discussed earlier. Chris
noticed that this slipped through.]
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2013-10-16 19:42:14 +02:00
..
dvo_ch7xxx.c drm/i915: dvo_ch7xxx: fix vsync polarity setting 2013-07-25 16:10:22 +02:00
dvo_ch7017.c
dvo_ivch.c
dvo_ns2501.c
dvo_sil164.c
dvo_tfp410.c
dvo.h drm/i915: Remove unused mode_fixup() vfunc of struct intel_dvo_dev_ops 2013-09-05 21:39:59 +02:00
i915_debugfs.c drm/i915: constify harder 2013-10-16 13:32:18 +02:00
i915_dma.c drm/i915: Disable all GEM timers and work on unload 2013-10-16 19:42:14 +02:00
i915_drv.c drm/i915: Disable all GEM timers and work on unload 2013-10-16 19:42:14 +02:00
i915_drv.h drm/i915: Disable all GEM timers and work on unload 2013-10-16 19:42:14 +02:00
i915_gem_context.c drm/i915: cleanup context fini 2013-10-16 11:08:30 +02:00
i915_gem_debug.c drm/i915: Fix #endif comment 2013-08-09 10:45:52 +02:00
i915_gem_dmabuf.c drm/i915: Pin pages whilst mapping the dma-buf 2013-09-03 19:17:58 +02:00
i915_gem_evict.c drm/i915: trace vm eviction instead of everything 2013-10-01 07:45:20 +02:00
i915_gem_execbuffer.c drm/i915: Convert active API to VMA 2013-10-01 07:45:21 +02:00
i915_gem_gtt.c drm/i915: Use kcalloc more 2013-10-01 07:45:01 +02:00
i915_gem_stolen.c Linux 3.12-rc2 2013-09-24 09:32:53 +02:00
i915_gem_tiling.c drm/i915: Use kcalloc more 2013-10-01 07:45:01 +02:00
i915_gem.c drm/i915: Disable all GEM timers and work on unload 2013-10-16 19:42:14 +02:00
i915_gpu_error.c drm/i915: Educate users in dmesg about reporting gpu hangs 2013-10-10 14:49:17 +02:00
i915_ioc32.c
i915_irq.c drm/i915: static inline for dummy crc functions 2013-10-16 13:32:17 +02:00
i915_reg.h drm/i915: Expose latest 200 CRC value for pipe through debugfs 2013-10-16 13:31:42 +02:00
i915_suspend.c drm/i915: don't save/restore CACHE_MODE_0 on gen7+ 2013-10-11 23:32:32 +02:00
i915_sysfs.c drm/i915: Finish enabling rps before use by sysfs or debugfs 2013-10-10 14:23:39 +02:00
i915_trace_points.c
i915_trace.h drm/i915: Add a tracepoint for using a semaphore 2013-10-01 07:45:24 +02:00
i915_ums.c drm/i915: scrap register address storage 2013-06-10 19:54:14 +02:00
intel_acpi.c i915: fix ACPI _DSM warning 2013-08-05 19:04:05 +02:00
intel_bios.c drm/i915: Rip out SUPPORTS_EDP 2013-10-01 07:45:07 +02:00
intel_bios.h drm/i915: use the HDMI DDI buffer translations from VBT 2013-10-01 07:45:04 +02:00
intel_crt.c drm/i915: destroy connector sysfs files earlier 2013-10-01 07:45:48 +02:00
intel_ddi.c drm/i915: don't leak dp_connector at intel_ddi_init 2013-10-10 12:47:13 +02:00
intel_display.c drm/i915: Init HSW watermark tracking in intel_modeset_setup_hw_state() 2013-10-15 19:01:24 +02:00
intel_dp.c drm/i915/dp: constify link_status 2013-10-15 09:36:09 +02:00
intel_drv.h drm/i915: Init HSW watermark tracking in intel_modeset_setup_hw_state() 2013-10-15 19:01:24 +02:00
intel_dsi_cmd.c drm/i915/dsi: s/size_t/int/ 2013-09-04 17:34:51 +02:00
intel_dsi_cmd.h drm/i915/dsi: s/size_t/int/ 2013-09-04 17:34:51 +02:00
intel_dsi_pll.c drm/i915: Use adjusted_mode in DSI PLL calculations 2013-09-16 23:36:38 +02:00
intel_dsi.c drm/i915: destroy connector sysfs files earlier 2013-10-01 07:45:48 +02:00
intel_dsi.h drm/i915: add VLV DSI PLL Calculations 2013-09-04 17:34:48 +02:00
intel_dvo.c drm/i915: destroy connector sysfs files earlier 2013-10-01 07:45:48 +02:00
intel_fbdev.c drm/i915: rename intel_fb.c to intel_fbdev.c 2013-10-11 23:37:33 +02:00
intel_hdmi.c drm/i915: Move some hdmi enable function name to vlv specific. 2013-10-16 13:32:18 +02:00
intel_i2c.c drm/i915: Program GMBUS Frequency based on the CDCLK for VLV. 2013-10-01 07:45:41 +02:00
intel_lvds.c drm/i915: destroy connector sysfs files earlier 2013-10-01 07:45:48 +02:00
intel_modes.c drm/i915: Add "Automatic" mode for the "Broadcast RGB" property 2013-01-20 13:09:44 +01:00
intel_opregion.c drm/i915: Add breadcrumbs for why the backlight is being set 2013-10-14 10:02:36 +02:00
intel_overlay.c drm/i915: use pointer = k[cmz...]alloc(sizeof(*pointer), ...) pattern 2013-10-01 07:45:01 +02:00
intel_panel.c drm/i915: Add breadcrumbs for why the backlight is being set 2013-10-14 10:02:36 +02:00
intel_pm.c drm/i915: Check 5/6 DDB split only when sprites are enabled 2013-10-15 19:01:31 +02:00
intel_ringbuffer.c drm/i915: Do a fuller init after reset 2013-10-16 11:08:08 +02:00
intel_ringbuffer.h drm/i915: Write RING_TAIL once per-request 2013-09-10 15:35:58 +02:00
intel_sdvo_regs.h
intel_sdvo.c drm/i915: destroy connector sysfs files earlier 2013-10-01 07:45:48 +02:00
intel_sideband.c drm/i915/vlv: add doc names to sideband file 2013-10-11 23:33:44 +02:00
intel_sprite.c drm/i915: Rename primary_disabled to primary_enabled 2013-10-10 12:47:14 +02:00
intel_tv.c drm/i915: Rename intel_flush_display_plane to intel_flush_primary_plane 2013-10-10 12:47:02 +02:00
intel_uncore.c drm/i915: Remove gen specific checks in MMIO 2013-10-10 12:47:10 +02:00
Kconfig drm/i915: Kconfig option to disable the legacy fbdev support 2013-10-11 23:37:23 +02:00
Makefile drm/i915: rename intel_fb.c to intel_fbdev.c 2013-10-11 23:37:33 +02:00