linux/drivers/gpu/drm/i915
Maarten Lankhorst c43ce12328 drm/i915: Use per object locking in execbuf, v12.
Now that we changed execbuf submission slightly to allow us to do all
pinning in one place, we can now simply add ww versions on top of
struct_mutex. All we have to do is a separate path for -EDEADLK
handling, which needs to unpin all gem bo's before dropping the lock,
then starting over.

This finally allows us to do parallel submission, but because not
all of the pinning code uses the ww ctx yet, we cannot completely
drop struct_mutex yet.

Changes since v1:
- Keep struct_mutex for now. :(
Changes since v2:
- Make sure we always lock the ww context in slowpath.
Changes since v3:
- Don't call __eb_unreserve_vma in eb_move_to_gpu now; this can be
  done on normal unlock path.
- Unconditionally release vmas and context.
Changes since v4:
- Rebased on top of struct_mutex reduction.
Changes since v5:
- Remove training wheels.
Changes since v6:
- Fix accidentally broken -ENOSPC handling.
Changes since v7:
- Handle gt buffer pool better.
Changes since v8:
- Properly clear variables, to make -EDEADLK handling not BUG.
Change since v9:
- Fix unpinning fence on pnv and below.
Changes since v10:
- Make relocation gpu chaining working again.
Changes since v11:
- Remove relocation chaining, pain to make it work.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Thomas Hellström <thomas.hellstrom@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200819140904.1708856-9-maarten.lankhorst@linux.intel.com
Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
2020-09-07 14:30:07 +03:00
..
display drm/i915: Add an implementation for i915_gem_ww_ctx locking, v2. 2020-09-07 14:29:44 +03:00
gem drm/i915: Use per object locking in execbuf, v12. 2020-09-07 14:30:07 +03:00
gt drm/i915: Add an implementation for i915_gem_ww_ctx locking, v2. 2020-09-07 14:29:44 +03:00
gvt drm/i915: Remove locking from i915_gem_object_prepare_read/write 2020-09-07 14:29:53 +03:00
selftests drm/i915: Add an implementation for i915_gem_ww_ctx locking, v2. 2020-09-07 14:29:44 +03:00
.gitignore
i915_active.c drm/i915: Reduce locking around i915_active_acquire_preallocate_barrier() 2020-09-07 13:19:11 +03:00
i915_active.h drm/i915: Provide a fastpath for waiting on vma bindings 2020-09-07 13:29:19 +03:00
i915_active_types.h
i915_buddy.c
i915_buddy.h
i915_cmd_parser.c drm/i915: Fix cmd parser desc matching with masks 2020-08-21 13:07:04 +03:00
i915_config.c drm/i915: Replace the hardcoded I915_FENCE_TIMEOUT 2020-05-09 12:57:57 +01:00
i915_debugfs.c drm/i915/dg1: add support for the master unit interrupt 2020-07-14 02:47:19 -07:00
i915_debugfs.h
i915_debugfs_params.c drm/i915/params: switch to device specific parameters 2020-06-22 23:26:40 +03:00
i915_debugfs_params.h
i915_drv.c drm/i915/gt: Switch to object allocations for page directories 2020-09-07 14:24:08 +03:00
i915_drv.h drm/i915/gt: Switch to object allocations for page directories 2020-09-07 14:24:08 +03:00
i915_fixed.h
i915_gem.c drm/i915: Use per object locking in execbuf, v12. 2020-09-07 14:30:07 +03:00
i915_gem.h drm/i915: Use per object locking in execbuf, v12. 2020-09-07 14:30:07 +03:00
i915_gem_evict.c drm/i915: Handle idling during i915_gem_evict_something busy loops 2020-05-13 14:39:41 -07:00
i915_gem_gtt.c drm/i915: Update dma-attributes for our sg DMA 2020-07-07 11:00:47 +01:00
i915_gem_gtt.h drm/i915: Remove PIN_UPDATE for i915_vma_pin 2020-05-21 17:33:51 +01:00
i915_getparam.c drm/i915: add syncobj timeline support 2020-08-17 16:16:51 -04:00
i915_globals.c
i915_globals.h
i915_gpu_error.c drm/i915: Pull printing GT capabilities on error to err_print_gt 2020-07-10 22:06:35 +01:00
i915_gpu_error.h drm/i915: Move the engine mask to intel_gt_info 2020-07-08 21:07:11 +01:00
i915_ioc32.c i915 compat ioctl(): just use drm_ioctl_kernel() 2020-05-01 20:35:26 -04:00
i915_ioc32.h
i915_irq.c drm/i915/gt: Distinguish the virtual breadcrumbs from the irq breadcrumbs 2020-09-07 14:23:55 +03:00
i915_irq.h
i915_memcpy.c drm/i915: remove always-defined CONFIG_AS_MOVNTDQA 2020-04-09 00:01:59 +09:00
i915_memcpy.h
i915_mm.c mm: don't include asm/pgtable.h if linux/mm.h is already included 2020-06-09 09:39:13 -07:00
i915_params.c drm/i915: Initial implementation of PSR2 selective fetch 2020-08-17 16:17:15 -04:00
i915_params.h drm/i915: Initial implementation of PSR2 selective fetch 2020-08-17 16:17:15 -04:00
i915_pci.c drm/i915/rkl: Handle HTI 2020-08-17 16:16:07 -04:00
i915_perf.c drm/i915/perf: Use GTT when saving/restoring engine GPR 2020-07-14 20:31:05 +03:00
i915_perf.h
i915_perf_types.h
i915_pmu.c drm/i915: Provide the perf pmu.module 2020-08-19 15:23:00 +03:00
i915_pmu.h
i915_priolist_types.h drm/i915/gt: Prevent timeslicing into unpreemptable requests 2020-06-16 11:34:23 +03:00
i915_pvinfo.h
i915_query.c drm/i915/sseu: Move sseu_info under gt_info 2020-07-08 21:13:09 +01:00
i915_query.h
i915_reg.h drm/i915/display: Implement WA 1408330847 2020-08-17 16:17:18 -04:00
i915_request.c drm/i915/gt: Hold context/request reference while breadcrumbs are active 2020-09-07 14:24:29 +03:00
i915_request.h drm/i915/gt: Distinguish the virtual breadcrumbs from the irq breadcrumbs 2020-09-07 14:23:55 +03:00
i915_scatterlist.c
i915_scatterlist.h
i915_scheduler.c drm/i915: Don't set queue-priority hint when supressing the reschedule 2020-05-25 15:40:26 +03:00
i915_scheduler.h drm/i915: Mark concurrent submissions with a weak-dependency 2020-05-11 10:54:04 -07:00
i915_scheduler_types.h drm/i915: Drop no-semaphore boosting 2020-05-14 06:14:33 +01:00
i915_selftest.h drm/i915/gem: Implement legacy MI_STORE_DATA_IMM 2020-05-04 15:15:04 +01:00
i915_suspend.c
i915_suspend.h
i915_sw_fence.c drm/i915: Tidy awaiting on dma-fences 2020-05-11 12:56:45 +01:00
i915_sw_fence.h
i915_sw_fence_work.c
i915_sw_fence_work.h
i915_switcheroo.c drm/i915/switcheroo: use struct drm_device based logging 2020-04-08 13:49:35 +03:00
i915_switcheroo.h
i915_syncmap.c
i915_syncmap.h
i915_sysfs.c
i915_sysfs.h
i915_trace.h drm/i915: Drop i915_request.i915 backpointer 2020-06-03 13:53:39 +01:00
i915_trace_points.c
i915_user_extensions.c
i915_user_extensions.h
i915_utils.c drm/i915: Don't taint when using fault injection 2020-07-06 19:21:07 +01:00
i915_utils.h drm/i915: Remove unused inline function drain_delayed_work() 2020-07-15 10:16:44 +01:00
i915_vgpu.c
i915_vgpu.h
i915_vma.c drm/i915/gt: Switch to object allocations for page directories 2020-09-07 14:24:08 +03:00
i915_vma.h drm/i915/gt: Remove local entries from GGTT on suspend 2020-05-28 16:55:15 +01:00
i915_vma_types.h drm/i915: Export ppgtt_bind_vma 2020-07-03 15:14:35 +01:00
intel_device_info.c drm/i915/tgl: Set subplatforms 2020-08-17 16:17:06 -04:00
intel_device_info.h drm/i915/rkl: Handle HTI 2020-08-17 16:16:07 -04:00
intel_dram.c drm/i915/dram: prefer struct drm_device based logging 2020-04-08 13:49:35 +03:00
intel_dram.h
intel_gvt.c drm/i915/params: switch to device specific parameters 2020-06-22 23:26:40 +03:00
intel_gvt.h
intel_memory_region.c
intel_memory_region.h
intel_pch.c drm/i915/dg1: Add fake PCH 2020-07-14 02:47:21 -07:00
intel_pch.h drm/i915/dg1: Add fake PCH 2020-07-14 02:47:21 -07:00
intel_pm.c drm/i915/kbl: Fix revision ID checks 2020-08-17 16:17:12 -04:00
intel_pm.h drm/i915: Fix includes and local vars order 2020-05-22 14:40:35 +01:00
intel_region_lmem.c drm/i915/params: switch to device specific parameters 2020-06-22 23:26:40 +03:00
intel_region_lmem.h
intel_runtime_pm.c Merge drm/drm-next into drm-intel-next-queued 2020-06-25 18:05:03 +03:00
intel_runtime_pm.h
intel_sideband.c drm/i915: Added required new PCode commands 2020-05-05 13:59:55 +03:00
intel_sideband.h
intel_uncore.c drm next for 5.9-rc1 2020-08-05 19:50:06 -07:00
intel_uncore.h drm/i915: Use the gt in HAS_ENGINE 2020-07-08 21:07:09 +01:00
intel_wakeref.c
intel_wakeref.h
intel_wopcm.c drm/i915: Remove cnl pre-prod workarounds 2020-05-04 18:44:52 +03:00
intel_wopcm.h
Kconfig
Kconfig.debug
Kconfig.profile drm/i915: Replace the hardcoded I915_FENCE_TIMEOUT 2020-05-09 12:57:57 +01:00
Kconfig.unstable
Makefile drm/i915: Move sseu debugfs under gt/ 2020-07-08 21:40:15 +01:00
vlv_suspend.c
vlv_suspend.h