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.h
dvo_ch7xxx.c
dvo_ch7017.c
dvo_ivch.c
dvo_ns2501.c
dvo_sil164.c
dvo_tfp410.c
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.c 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
i915_gem_dmabuf.c
i915_gem_evict.c
i915_gem_execbuffer.c
i915_gem_gtt.c
i915_gem_stolen.c
i915_gem_tiling.c
i915_gpu_error.c
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
i915_sysfs.c
i915_trace.h
i915_trace_points.c
i915_ums.c
intel_acpi.c
intel_bios.c
intel_bios.h
intel_crt.c
intel_ddi.c
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.c
intel_dsi.h
intel_dsi_cmd.c
intel_dsi_cmd.h
intel_dsi_pll.c
intel_dvo.c
intel_fbdev.c
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
intel_lvds.c
intel_modes.c
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
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
intel_sdvo.c
intel_sdvo_regs.h
intel_sideband.c
intel_sprite.c
intel_tv.c
intel_uncore.c
Kconfig
Makefile