linux/drivers/gpu/drm/i915
Alex Dai 5a843307cd drm/i915/guc: Clean up locks in GuC
For now, remove the spinlocks that protected the GuC's
statistics block and work queue; they are only accessed
by code that already holds the global struct_mutex, and
so are redundant (until the big struct_mutex rewrite!).

The specific problem that the spinlocks caused was that
if the work queue was full, the driver would try to
spinwait for one jiffy, but with interrupts disabled the
jiffy count would not advance, leading to a system hang.
The issue was found using test case igt/gem_close_race.

The new version will usleep() instead, still holding
the struct_mutex but without any spinlocks.

v4: Reorganize commit message (Dave Gordon)
v3: Remove unnecessary whitespace churn
v2: Clean up wq_lock too
v1: Clean up host2guc lock as well

Signed-off-by: Alex Dai <yu.dai@intel.com>
Reviewed-by: Dave Gordon <david.s.gordon@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1449104189-27591-1-git-send-email-yu.dai@intel.com
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2015-12-03 15:11:54 +01:00
..
dvo_ch7xxx.c drm/i915: Constify adjusted_mode 2015-09-30 10:20:11 +02:00
dvo_ch7017.c drm/i915: Constify adjusted_mode 2015-09-30 10:20:11 +02:00
dvo_ivch.c drm/i915: Constify adjusted_mode 2015-09-30 10:20:11 +02:00
dvo_ns2501.c drm/i915: Constify adjusted_mode 2015-09-30 10:20:11 +02:00
dvo_sil164.c drm/i915: Constify adjusted_mode 2015-09-30 10:20:11 +02:00
dvo_tfp410.c drm/i915: Constify adjusted_mode 2015-09-30 10:20:11 +02:00
dvo.h drm/i915: Type safe register read/write 2015-11-18 15:39:11 +02:00
i915_cmd_parser.c drm/i915: Type safe register read/write 2015-11-18 15:39:11 +02:00
i915_debugfs.c drm/i915/guc: Clean up locks in GuC 2015-12-03 15:11:54 +01:00
i915_dma.c Linux 4.4-rc2 2015-11-23 09:04:05 +01:00
i915_drv.c drm/i915: more virtual south bridge detection 2015-11-26 15:20:41 +01:00
i915_drv.h drm/i915: kill fbc.uncompressed_size 2015-12-03 11:36:42 -02:00
i915_gem_batch_pool.c
i915_gem_batch_pool.h
i915_gem_context.c drm/i915: Remove incorrect warning in context cleanup 2015-11-24 11:58:12 +01:00
i915_gem_debug.c
i915_gem_dmabuf.c
i915_gem_evict.c drm/i915: Remove dead i915_gem_evict_everything() 2015-10-07 16:05:40 +02:00
i915_gem_execbuffer.c drm/i915: Add functions to emit register offsets to the ring 2015-11-18 14:35:24 +02:00
i915_gem_fence.c Linux 4.4-rc2 2015-11-23 09:04:05 +01:00
i915_gem_gtt.c drm/i915: Stuff rotation params into view union 2015-11-19 16:42:01 +01:00
i915_gem_gtt.h drm/i915: Fix i915_ggtt_view_equal to handle rotation correctly 2015-11-19 16:42:06 +01:00
i915_gem_render_state.c drm/i915: Add provision to extend Golden context batch 2015-07-21 09:30:57 +02:00
i915_gem_render_state.h drm/i915: Add provision to extend Golden context batch 2015-07-21 09:30:57 +02:00
i915_gem_shrinker.c drm/i915: Fix kerneldoc for i915_gem_shrink_all 2015-10-13 16:21:03 +03:00
i915_gem_stolen.c drm/i915/kbl: Introduce Kabylake platform defition. 2015-10-28 21:35:38 +02:00
i915_gem_tiling.c drm/i915: get runtime PM reference around GEM set_tiling IOCTL 2015-11-17 18:43:30 +02:00
i915_gem_userptr.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2015-11-10 09:33:06 -08:00
i915_gem.c Linux 4.4-rc2 2015-11-23 09:04:05 +01:00
i915_gpu_error.c drm/i915: Type safe register read/write 2015-11-18 15:39:11 +02:00
i915_guc_reg.h drm/i915: Type safe register read/write 2015-11-18 15:39:11 +02:00
i915_guc_submission.c drm/i915/guc: Clean up locks in GuC 2015-12-03 15:11:54 +01:00
i915_ioc32.c Merge tag 'drm-intel-fixes-2015-07-15' into drm-intel-next-queued 2015-07-15 16:36:50 +02:00
i915_irq.c drm/i915: Fix kerneldoc indent fails 2015-11-26 18:55:40 +02:00
i915_params.c Linux 4.4-rc2 2015-11-23 09:04:05 +01:00
i915_reg.h drm/i915: Don't register the CRT connector when it's fused off on LPT-H 2015-12-02 11:23:32 +02:00
i915_suspend.c drm/i915: Parametrize and fix SWF registers 2015-10-13 13:20:38 +02:00
i915_sysfs.c drm/i915: Type safe register read/write 2015-11-18 15:39:11 +02:00
i915_trace_points.c
i915_trace.h drm/i915: Type safe register read/write 2015-11-18 15:39:11 +02:00
i915_vgpu.c drm/i915: Turn __raw_i915_read8() & co. in to inline functions 2015-10-26 16:28:04 +02:00
i915_vgpu.h drm/i915: Type safe register read/write 2015-11-18 15:39:11 +02:00
intel_acpi.c drm/i915: Drop unnecessary #include <linux/vga_switcheroo.h> 2015-10-13 10:18:38 +02:00
intel_atomic_plane.c drm/i915: Wait for object idle without locks in atomic_commit, v2. 2015-11-02 15:50:31 +01:00
intel_atomic.c drm/i915: Make wait_for_flips interruptible. 2015-11-02 15:50:17 +01:00
intel_audio.c Linux 4.4-rc2 2015-11-23 09:04:05 +01:00
intel_bios.c drm/i915: Check VBT for CRT port presence on HSW/BDW 2015-12-02 11:24:01 +02:00
intel_bios.h drm/i915: Ignore "digital output" and "not HDMI output" bits for eDP detection 2015-09-23 16:58:29 +02:00
intel_crt.c drm/i915: Don't register CRT connector when it's fused off 2015-11-24 16:23:44 +02:00
intel_csr.c drm/i915: Type safe register read/write 2015-11-18 15:39:11 +02:00
intel_ddi.c drm/i915: Don't use crtc->config when reading out infoframe state 2015-12-01 16:01:21 +02:00
intel_display.c drm/i915: introduce intel_fbc_{enable,disable} 2015-12-03 11:34:01 -02:00
intel_dp_link_training.c drm/i915: Make intel_dp_source_supports_hbr2() take an intel_dp pointer 2015-11-05 15:14:56 +02:00
intel_dp_mst.c Linux 4.4-rc2 2015-11-23 09:04:05 +01:00
intel_dp.c drm/i915: Round the AUX clock divider to closest on all platforms 2015-12-02 11:22:57 +02:00
intel_drv.h drm/i915: introduce intel_fbc_{enable,disable} 2015-12-03 11:34:01 -02:00
intel_dsi_panel_vbt.c
intel_dsi_pll.c drm/i915/bxt: vlv_dsi_reset_clocks() can be static 2015-10-06 10:57:06 +02:00
intel_dsi.c drm/i915: add has_dsi_encoder to crtc state 2015-11-30 12:54:33 +02:00
intel_dsi.h drm/i915/bxt: get DSI pixelclock 2015-10-02 14:45:51 +02:00
intel_dvo.c drm/i915: Type safe register read/write 2015-11-18 15:39:11 +02:00
intel_fbc.c drm/i915: only recompress FBC after flushing a drawing operation 2015-12-03 11:38:11 -02:00
intel_fbdev.c drm/i915: Tear down fbdev if initialization fails 2015-11-19 17:52:38 +01:00
intel_fifo_underrun.c drm/i915: Introduce bdw_{update,enable,disable}_pipe_irq() 2015-11-26 18:55:39 +02:00
intel_frontbuffer.c drm/i915: fix FBC frontbuffer tracking flushing code 2015-08-05 09:59:44 +02:00
intel_guc_fwif.h drm/i915/guc: Add GuC css header parser 2015-10-21 14:31:34 +02:00
intel_guc_loader.c Linux 4.4-rc2 2015-11-23 09:04:05 +01:00
intel_guc.h drm/i915/guc: Clean up locks in GuC 2015-12-03 15:11:54 +01:00
intel_hdmi.c drm/i915: Don't use crtc->config when reading out infoframe state 2015-12-01 16:01:21 +02:00
intel_hotplug.c Revert "drm/i915: Call encoder hotplug for init and resume cases" 2015-10-08 21:51:57 +02:00
intel_i2c.c drm/i915: abstract i2c bit banging fallback in gmbus xfer 2015-12-02 13:29:41 +02:00
intel_lrc.c Linux 4.4-rc2 2015-11-23 09:04:05 +01:00
intel_lrc.h Linux 4.4-rc2 2015-11-23 09:04:05 +01:00
intel_lvds.c drm/i915: Type safe register read/write 2015-11-18 15:39:11 +02:00
intel_mocs.c drm/i915: Type safe register read/write 2015-11-18 15:39:11 +02:00
intel_mocs.h
intel_modes.c drm/i915: Add HDMI aspect ratio property for SDVO 2015-09-30 10:20:12 +02:00
intel_opregion.c drm/i915: Don't complain about lack of ACPI video bios 2015-10-31 09:26:20 +01:00
intel_overlay.c drm/i915: Wait for object idle without locks in atomic_commit, v2. 2015-11-02 15:50:31 +01:00
intel_panel.c drm/i915: Use cached cdclk_freq for PWM calculations 2015-12-02 11:22:57 +02:00
intel_pm.c drm/i915: introduce is_active/activate/deactivate to the FBC terminology 2015-12-03 11:33:01 -02:00
intel_psr.c drm/i915: Also disable PSR on Sink when disabling it on Source. 2015-11-24 13:33:50 +01:00
intel_renderstate_gen6.c
intel_renderstate_gen7.c
intel_renderstate_gen8.c
intel_renderstate_gen9.c
intel_renderstate.h
intel_ringbuffer.c Linux 4.4-rc2 2015-11-23 09:04:05 +01:00
intel_ringbuffer.h drm/i915: Type safe register read/write 2015-11-18 15:39:11 +02:00
intel_runtime_pm.c drm/i915/bxt: Disable power well support 2015-12-01 14:28:37 -08:00
intel_sdvo_regs.h
intel_sdvo.c drm/i915: Type safe register read/write 2015-11-18 15:39:11 +02:00
intel_sideband.c
intel_sprite.c drm/i915: Avoid pointer arithmetic in calculating plane surface offset 2015-11-09 20:00:11 +02:00
intel_tv.c Merge remote-tracking branch 'airlied/drm-next' into drm-intel-next 2015-09-30 08:47:41 +02:00
intel_uncore.c Linux 4.4-rc2 2015-11-23 09:04:05 +01:00
Kconfig drm/i915: Serialise updates to GGTT with access through GGTT on Braswell 2015-11-17 17:36:01 +01:00
Makefile drm/i915: Move generic link training code to a separate file 2015-11-05 15:14:56 +02:00