linux_old1/drivers/gpu/drm/i915
Chris Wilson 290271de34 drm/i915: Spin for struct_mutex inside shrinker
Having resolved whether or not we would deadlock upon a call to
mutex_lock(&dev->struct_mutex), we can then spin for the contended
struct_mutex if we are not the owner. We cannot afford to simply block
and wait for the mutex, as the owner may itself be waiting for the
allocator -- i.e. a cyclic deadlock. This should significantly improve
the chance of running the shrinker for other processes whilst the GPU is
busy.

A more balanced approach would be to optimistically spin whilst the
mutex owner was on the cpu and there was an opportunity to acquire the
mutex for ourselves quickly. However, that requires support from
kernel/locking/ and a new mutex_spin_trylock() primitive.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170609110350.1767-4-chris@chris-wilson.co.uk
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
2017-06-14 10:55:11 +01:00
..
gvt Linux 4.12-rc3 2017-05-30 15:54:15 +10:00
selftests Merge tag 'drm-intel-next-2017-05-29' of git://anongit.freedesktop.org/git/drm-intel into drm-next 2017-05-30 15:25:28 +10:00
Kconfig Merge tag 'topic/designware-baytrail-2017-03-02' of git://anongit.freedesktop.org/git/drm-intel into drm-intel-next-queued 2017-03-13 09:26:06 +01:00
Kconfig.debug Merge tag 'drm-intel-next-2017-05-29' of git://anongit.freedesktop.org/git/drm-intel into drm-next 2017-05-30 15:25:28 +10:00
Makefile drm/i915/guc: Introduce buffer based cmd transport 2017-05-26 13:26:53 +01:00
dvo.h
dvo_ch7xxx.c drm/i915/dvo: fix debug logging on unknown DID 2017-06-01 15:53:03 +03:00
dvo_ch7017.c drm/i915/lvds: Remove magic from PLL programming 2017-05-10 13:47:55 +03:00
dvo_ivch.c
dvo_ns2501.c
dvo_sil164.c
dvo_tfp410.c
i915_cmd_parser.c drm/i915: Redefine ptr_pack_bits() and friends 2017-05-17 13:38:04 +01:00
i915_debugfs.c drm/i915: s/fbc_fc/fbc_false_color/ 2017-06-06 19:02:37 +03:00
i915_drv.c drm/i915/cfl: Coffee Lake uses CNP PCH. 2017-06-08 09:55:22 -07:00
i915_drv.h drm/i915/cfl: Basic DDI plumbing for Coffee Lake. 2017-06-12 09:48:58 -07:00
i915_gem.c drm/i915: Only restrict noreclaim in the early shrink passes 2017-06-14 10:53:37 +01:00
i915_gem.h drm/i915: Squash repeated awaits on the same fence 2017-05-03 11:08:48 +01:00
i915_gem_batch_pool.c drm/i915: Retire an active batch pool object rather than allocate new 2017-03-17 17:57:20 +00:00
i915_gem_batch_pool.h
i915_gem_clflush.c drm/i915: Mark up clflushes as belonging to an unordered timeline 2017-05-03 11:08:45 +01:00
i915_gem_clflush.h drm/i915: Mark up clflushes as belonging to an unordered timeline 2017-05-03 11:08:45 +01:00
i915_gem_context.c drm/i915: Use a define for the default priority [0] 2017-05-17 13:38:08 +01:00
i915_gem_context.h drm/i915: make context status notifier head be per engine 2017-03-21 16:51:47 +02:00
i915_gem_dmabuf.c drm/i915: Implement dma_buf_ops->kmap 2017-05-03 23:15:02 +01:00
i915_gem_evict.c drm/i915: Move retire-requests into i915_gem_wait_for_idle() 2017-03-31 12:03:46 +01:00
i915_gem_execbuffer.c Merge tag 'drm-intel-next-2017-05-29' of git://anongit.freedesktop.org/git/drm-intel into drm-next 2017-05-30 15:25:28 +10:00
i915_gem_fence_reg.c drm/i915: Take rpm wakelock for releasing the fence on unbind 2017-03-06 14:38:18 +00:00
i915_gem_fence_reg.h
i915_gem_gtt.c drm/i915/guc: Assert that we switch between known ggtt->invalidate functions 2017-06-01 14:17:41 +01:00
i915_gem_gtt.h drm/i915: return the correct usable aperture size under gvt environment 2017-06-02 14:28:46 +01:00
i915_gem_internal.c Linux 4.10-rc8 2017-02-23 12:10:12 +10:00
i915_gem_object.h drm/i915: Add kerneldoc to describe i915_gem_object.vma_list 2017-05-30 11:46:23 +01:00
i915_gem_render_state.c scripts/spelling.txt: add "aligment" pattern and fix typo instances 2017-02-27 18:43:46 -08:00
i915_gem_render_state.h
i915_gem_request.c drm/i915: Remove the spin-request during execbuf await_request 2017-06-08 12:33:09 +01:00
i915_gem_request.h Merge tag 'drm-intel-next-2017-05-29' of git://anongit.freedesktop.org/git/drm-intel into drm-next 2017-05-30 15:25:28 +10:00
i915_gem_shrinker.c drm/i915: Spin for struct_mutex inside shrinker 2017-06-14 10:55:11 +01:00
i915_gem_stolen.c drm/i915: Consolidate #ifdef CONFIG_INTEL_IOMMU 2017-05-25 21:51:49 +01:00
i915_gem_tiling.c drm/i915: Fix logical inversion for gen4 quirking 2017-06-01 14:27:44 +01:00
i915_gem_timeline.c drm/i915: Squash repeated awaits on the same fence 2017-05-03 11:08:48 +01:00
i915_gem_timeline.h drm/i915: Rename intel_timeline.sync_seqno[] to .global_sync[] 2017-05-03 11:08:52 +01:00
i915_gem_userptr.c drm: drop drm_[cm]alloc* helpers 2017-05-18 17:22:39 +02:00
i915_gpu_error.c drm/i915/execlists: Pack the count into the low bits of the port.request 2017-05-17 13:38:06 +01:00
i915_guc_reg.h
i915_guc_submission.c drm/i915/guc: Fix doorbell id selection 2017-05-31 10:34:03 +03:00
i915_ioc32.c
i915_irq.c drm/i915/cnp: Introduce Cannonpoint PCH. 2017-06-02 13:56:19 -07:00
i915_memcpy.c
i915_mm.c
i915_oa_hsw.c
i915_oa_hsw.h
i915_params.c drm/i915/uc: Add params for specifying firmware 2017-03-15 14:26:30 +02:00
i915_params.h drm/i915/uc: Add params for specifying firmware 2017-03-15 14:26:30 +02:00
i915_pci.c drm/i915/DMC/CNL: Load DMC on CNL 2017-06-12 09:44:34 -07:00
i915_perf.c drm/i915/perf: rate limit spurious oa report notice 2017-05-13 11:03:43 +01:00
i915_pvinfo.h drm/i915: Fix GVT-g PVINFO version compatibility check 2017-06-12 14:39:24 +03:00
i915_reg.h drm/i915/cnl: Implement voltage swing sequence. 2017-06-12 09:44:00 -07:00
i915_selftest.h
i915_suspend.c
i915_sw_fence.c drm/i915: Import the kfence selftests for i915_sw_fence 2017-05-17 13:38:02 +01:00
i915_sw_fence.h drm/i915: Remove kref from i915_sw_fence 2017-05-17 13:38:01 +01:00
i915_syncmap.c drm/i915: Squash repeated awaits on the same fence 2017-05-03 11:08:48 +01:00
i915_syncmap.h drm/i915: Squash repeated awaits on the same fence 2017-05-03 11:08:48 +01:00
i915_sysfs.c drm/i915: Do not leak dev_priv->l3_parity.remap_info[] 2017-05-02 12:09:13 +03:00
i915_trace.h drm/i915: Add g4x watermark tracepoint 2017-05-10 16:48:32 +03:00
i915_trace_points.c
i915_utils.h drm/i915: Split execlist priority queue into rbtree + linked list 2017-05-17 13:38:09 +01:00
i915_vgpu.c drm/i915: Fix GVT-g PVINFO version compatibility check 2017-06-12 14:39:24 +03:00
i915_vgpu.h
i915_vma.c drm/i915: Remove the vma from the drm_mm if binding fails 2017-03-09 10:43:55 +02:00
i915_vma.h
intel_acpi.c
intel_atomic.c drm/i915/cnl: Fix Cannonlake scaler mode programing. 2017-06-12 09:45:55 -07:00
intel_atomic_plane.c Merge tag 'drm-intel-next-2017-05-29' of git://anongit.freedesktop.org/git/drm-intel into drm-next 2017-05-30 15:25:28 +10:00
intel_audio.c drm/i915: Reorganize intel_lpe_audio_notify() arguments 2017-05-03 16:20:48 +03:00
intel_bios.c drm/i915/vbt: split out defaults that are set when there is no VBT 2017-03-14 10:49:13 +02:00
intel_bios.h
intel_breadcrumbs.c drm/i915: Skip adding the request to the signal tree is complete 2017-06-08 12:33:08 +01:00
intel_cdclk.c drm/i915/cnl: Allow dynamic cdclk changes on CNL 2017-06-12 09:41:33 -07:00
intel_color.c drm/i915/glk: Improve rounding caused by pre-CSC gamma tables 2017-03-14 16:07:00 +02:00
intel_crt.c drm/i915: Convert intel_crt connector properties to atomic. 2017-04-12 10:53:22 +02:00
intel_csr.c drm/i915: Use HAS_CSR instead of gen number on DMC load. 2017-06-12 09:45:30 -07:00
intel_ddi.c drm/i915/cfl: Basic DDI plumbing for Coffee Lake. 2017-06-12 09:48:58 -07:00
intel_device_info.c drm/i915/cfl: Introduce Coffee Lake platform definition. 2017-06-08 09:55:08 -07:00
intel_display.c drm/i915: Configure DPLL's for Cannonlake 2017-06-12 09:42:06 -07:00
intel_dp.c drm/i915/cnl: Implement voltage swing sequence. 2017-06-12 09:44:00 -07:00
intel_dp_aux_backlight.c drm/i915: Pass atomic state to backlight enable/disable/set callbacks. 2017-06-12 16:06:28 +02:00
intel_dp_link_training.c drm/i915: Implement Link Rate fallback on Link training failure 2017-04-13 21:57:37 +03:00
intel_dp_mst.c Merge tag 'drm-intel-next-2017-05-29' of git://anongit.freedesktop.org/git/drm-intel into drm-next 2017-05-30 15:25:28 +10:00
intel_dpio_phy.c
intel_dpll_mgr.c drm/i915/cnl: Enable wrpll computation for CNL 2017-06-12 09:46:30 -07:00
intel_dpll_mgr.h drm/i915/cnl: Initialize PLLs 2017-06-12 09:42:18 -07:00
intel_drv.h drm/i915/cnl: Implement CNL display init/unit sequence 2017-06-12 09:41:01 -07:00
intel_dsi.c drm/i915: Pass crtc_state and connector state to backlight enable/disable functions 2017-06-12 16:05:45 +02:00
intel_dsi.h drm/i915/dsi: arrange intel_dsi.h according to relevant files 2017-03-07 15:18:43 +02:00
intel_dsi_dcs_backlight.c drm/i915: Pass atomic state to backlight enable/disable/set callbacks. 2017-06-12 16:06:28 +02:00
intel_dsi_pll.c drm/i915/glk: Validate only DSI PORT A PLL divider 2017-02-28 11:54:52 +02:00
intel_dsi_vbt.c drm/i915/glk: Calculate high/low switch count for GLK 2017-05-15 18:29:46 +03:00
intel_dvo.c drm/i915: Convert intel DVO connector to atomic 2017-04-12 10:53:29 +02:00
intel_engine_cs.c drm/i915: Check the ring is empty when declaring the engines are idle 2017-06-01 14:22:16 +01:00
intel_fbc.c drm/i915: Fix 90/270 rotated coordinates for FBC 2017-06-06 19:31:28 +03:00
intel_fbdev.c drm: Add DRM_MODE_ROTATE_ and DRM_MODE_REFLECT_ to UAPI 2017-05-22 09:49:48 +02:00
intel_fifo_underrun.c drm/i915/cnl: Enable fifo underrun for Cannonlake. 2017-06-12 09:46:08 -07:00
intel_frontbuffer.c drm/i915: Remove 'retire' parameter from intel_fb_obj_flush 2017-02-22 12:12:17 +00:00
intel_frontbuffer.h drm/i915: Remove 'retire' parameter from intel_fb_obj_flush 2017-02-22 12:12:17 +00:00
intel_guc_ct.c drm/i915/guc: Introduce buffer based cmd transport 2017-05-26 13:26:53 +01:00
intel_guc_ct.h drm/i915/guc: Introduce buffer based cmd transport 2017-05-26 13:26:53 +01:00
intel_guc_fwif.h drm/i915/guc: Introduce buffer based cmd transport 2017-05-26 13:26:53 +01:00
intel_guc_loader.c drm/i915/guc: Load GuC on Coffee Lake 2017-06-09 11:56:53 -07:00
intel_guc_log.c drm/i915: Treat WC a separate cache domain 2017-04-12 12:35:17 +01:00
intel_gvt.c drm/i915/gvt: Return -EIO if host GuC submission is enabled when loading GVT-g 2017-05-30 16:00:07 +03:00
intel_gvt.h drm/i915/gvt: Add gvt options sanitize function 2017-05-30 15:59:47 +03:00
intel_hangcheck.c drm/i915: Avoid format string expansion from engine names 2017-04-19 15:49:27 +03:00
intel_hdmi.c drm/i915/cnp: add CNP gmbus support 2017-06-02 13:59:32 -07:00
intel_hotplug.c drm/atomic: Acquire connection_mutex lock in drm_helper_probe_single_connector_modes, v4. 2017-04-06 21:29:23 +02:00
intel_huc.c drm/i915/huc: Load HuC on Coffee Lake 2017-06-09 11:57:16 -07:00
intel_i2c.c drm/i915/cnp: add CNP gmbus support 2017-06-02 13:59:32 -07:00
intel_lpe_audio.c drm/i915: Fix runtime PM for LPE audio 2017-05-15 14:44:11 +03:00
intel_lrc.c drm/i915/gen10: Set value of Indirect Context Offset for gen10 2017-06-07 07:29:58 -07:00
intel_lrc.h drm/i915: Sanitize engine context sizes 2017-04-28 12:11:59 +03:00
intel_lspcon.c drm/i915/lspcon: Fix resume time initialization due to unasserted HPD 2017-02-16 11:59:10 +02:00
intel_lvds.c drm/i915: Pass crtc_state and connector state to backlight enable/disable functions 2017-06-12 16:05:45 +02:00
intel_mocs.c drm/i915/cnl: Cannonlake has same MOCS table than Skylake. 2017-06-07 07:29:51 -07:00
intel_mocs.h
intel_modes.c
intel_opregion.c drm/i915: Pass connector state to intel_panel_set_backlight_acpi 2017-06-12 16:06:10 +02:00
intel_overlay.c drm/i915: Remove superfluous i915_add_request_no_flush() helper 2017-03-17 13:03:25 +00:00
intel_panel.c drm/i915: Pass atomic state to backlight enable/disable/set callbacks. 2017-06-12 16:06:28 +02:00
intel_pipe_crc.c drm/i915: use memdup_user_nul 2017-05-08 09:28:39 +02:00
intel_pm.c drm/i915/cfl: Introduce Display workarounds for Coffee Lake. 2017-06-08 09:55:37 -07:00
intel_psr.c drm/i915/psr: disable psr2 for resolution greater than 32X20 2017-05-30 10:11:41 -07:00
intel_renderstate.h
intel_renderstate_gen6.c
intel_renderstate_gen7.c
intel_renderstate_gen8.c
intel_renderstate_gen9.c
intel_ringbuffer.c drm/i915: Micro-optimise hotpath through intel_ring_begin() 2017-05-04 15:40:38 +01:00
intel_ringbuffer.h drm/i915: Split execlist priority queue into rbtree + linked list 2017-05-17 13:38:09 +01:00
intel_runtime_pm.c drm/i915/cnl: Implement CNL display init/unit sequence 2017-06-12 09:41:01 -07:00
intel_sdvo.c drm/i915: Convert intel_sdvo connector properties to atomic. 2017-05-30 10:33:28 +02:00
intel_sdvo_regs.h
intel_sideband.c drm/i915: Distinguish between timeout and error in sideband transactions 2017-02-27 17:22:19 +00:00
intel_sprite.c drm/i915: Workaround VLV/CHV DSI scanline counter hardware fail 2017-06-06 17:58:42 +03:00
intel_tv.c drm/i915: Convert intel_tv connector properties to atomic, v5. 2017-04-12 10:53:22 +02:00
intel_uc.c drm/i915/guc: Clear enable_guc_loading in case of init failure 2017-06-08 12:21:19 +03:00
intel_uc.h drm/i915/guc: capture GuC logs if FW fails to load 2017-05-26 13:59:56 +01:00
intel_uncore.c drm/i915: Remove decoupled MMIO code 2017-05-30 09:59:41 +03:00
intel_uncore.h drm/i915: Keep the forcewake timer alive for 1ms past the most recent use 2017-05-26 15:58:21 +01:00
intel_vbt_defs.h