summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/Kconfig
diff options
context:
space:
mode:
authorChris Wilson2017-09-11 10:41:26 +0200
committerChris Wilson2017-09-19 14:06:21 +0200
commit81c0ed21aa91230ab6c0de945155aa5c0626d001 (patch)
tree29e6b323814e56a77bec1c09845f68a678fdfc54 /drivers/gpu/drm/i915/Kconfig
parentdrm/i915/selftests: Only touch archdata.iommu when it exists (diff)
downloadkernel-qcow2-linux-81c0ed21aa91230ab6c0de945155aa5c0626d001.tar.gz
kernel-qcow2-linux-81c0ed21aa91230ab6c0de945155aa5c0626d001.tar.xz
kernel-qcow2-linux-81c0ed21aa91230ab6c0de945155aa5c0626d001.zip
drm/i915/fence: Avoid del_timer_sync() from inside a timer
A fence may be signaled from any context, including from inside a timer. One example is timer_i915_sw_fence_wake() which is used to provide a safety-net when waiting on an external fence. If the external fence is not signaled within a timely fashion, we signal our fence on its behalf, and so we then may process subsequent fences in the chain from within that timer context. Given that dma_i915_sw_fence_wake() may be from inside a timer, we cannot then use del_timer_sync() as that requires the timer lock for itself. To circumvent this, while trying to keep the signal propagation as low latency as possible, move the completion into a worker and use a bit of atomic switheroo to serialise the timer-callback and the dma-callback. Testcase: igt/gem_eio/in-flight-external Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20170911084135.22903-3-chris@chris-wilson.co.uk Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Diffstat (limited to 'drivers/gpu/drm/i915/Kconfig')
-rw-r--r--drivers/gpu/drm/i915/Kconfig1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/Kconfig b/drivers/gpu/drm/i915/Kconfig
index e9e64e8e9765..dfd95889f4b7 100644
--- a/drivers/gpu/drm/i915/Kconfig
+++ b/drivers/gpu/drm/i915/Kconfig
@@ -12,6 +12,7 @@ config DRM_I915
select DRM_PANEL
select DRM_MIPI_DSI
select RELAY
+ select IRQ_WORK
# i915 depends on ACPI_VIDEO when ACPI is enabled
# but for select to work, need to select ACPI_VIDEO's dependencies, ick
select BACKLIGHT_LCD_SUPPORT if ACPI