linux/drivers/gpu/drm/i915
Colin Xu baec997285 drm/i915/gvt: Only pin/unpin intel_context along with workload
One issue exposed after below commit with which the system will freeze
at suspend after vGPU is created (no need to activate the vGPU).
commit e6ba764802 ("drm/i915: Remove i915->kernel_context")

Old implementation pin the intel_context at setup_submission and
unpin it at clean_submission. So after some vGPU is created, the
intel_context is always pinned there although no workload using it.
It will then block i915 enter suspend state.

There is no need to pin it all the time. Pin/unpin it around workload
lifecycle is more reasonable. After GVT enabled suspend/resume, the
pinned intel_context will also get unpined when userspace put VM process
into suspend state since all workloads are retired, then it's safe to
unpin all intel_context for workloads created. So move the pin/unpin to
create_workload and destroy_workload, while still keep the
create/destroy in old place.

V2:
Rebase.

Fixes: e6ba764802 ("drm/i915: Remove i915->kernel_context")
Reviewed-by: Zhenyu Wang <zhenyuw@linux.intel.com>
Signed-off-by: Colin Xu <colin.xu@intel.com>
Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20201016054059.238371-1-colin.xu@intel.com
2020-10-30 11:45:46 +08:00
..
display drm/i915: fix regression leading to display audio probe failure on GLK 2020-09-08 14:38:46 +03:00
gem drm/i915/gem: Reduce context termination list iteration guard to RCU 2020-09-16 11:09:43 +03:00
gt drm/i915: Be wary of data races when reading the active execlists 2020-09-16 11:09:51 +03:00
gvt drm/i915/gvt: Only pin/unpin intel_context along with workload 2020-10-30 11:45:46 +08:00
selftests drm/i915/selftests: Push the fake iommu device from the stack to data 2020-09-23 10:15:46 +03:00
.gitignore
i915_active_types.h
i915_active.c drm/i915: Allow asynchronous waits on the i915_active barriers 2020-04-06 19:48:06 +01:00
i915_active.h drm/i915: Allow asynchronous waits on the i915_active barriers 2020-04-06 19:48:06 +01:00
i915_buddy.c
i915_buddy.h
i915_cmd_parser.c drm/i915: Fix cmd parser desc matching with masks 2020-08-25 11:01:34 +03:00
i915_config.c drm/i915: Replace the hardcoded I915_FENCE_TIMEOUT 2020-05-09 12:57:57 +01:00
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_debugfs.c drm/i915/dg1: add support for the master unit interrupt 2020-07-14 02:47:19 -07:00
i915_debugfs.h
i915_drv.c drm/i915: Introduce gt_init_mmio 2020-07-08 21:07:13 +01:00
i915_drv.h Linux 5.8-rc6 2020-07-24 08:48:05 +10:00
i915_fixed.h
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_gem.c drm/i915: Leave vma intact as they are discarded 2020-06-12 10:13:07 +01:00
i915_gem.h drm/i915: Print caller when tainting for CI 2020-07-06 19:21:07 +01:00
i915_getparam.c drm/i915/sseu: Move sseu_info under gt_info 2020-07-08 21:13:09 +01:00
i915_globals.c
i915_globals.h
i915_gpu_error.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05: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/dg1: Remove SHPD_FILTER_CNT register programming 2020-07-14 02:47:20 -07: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: fix a couple of spelling mistakes in kernel parameter help text 2020-06-30 11:30:02 +03:00
i915_params.h drm/i915: Add psr_safest_params 2020-06-04 19:36:48 -07:00
i915_pci.c drm/i915/dg1: add initial DG-1 definitions 2020-07-14 02:47:17 -07:00
i915_perf_types.h drm/i915/perf: Schedule oa_config after modifying the contexts 2020-03-30 18:20:34 +01: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_pmu.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05: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/dg1: add support for the master unit interrupt 2020-07-14 02:47:19 -07:00
i915_request.c drm/i915: Be wary of data races when reading the active execlists 2020-09-16 11:09:51 +03:00
i915_request.h drm/i915: Mark up inline getters as taking a const i915_request 2020-06-16 21:13:58 +01:00
i915_scatterlist.c
i915_scatterlist.h
i915_scheduler_types.h drm/i915: Drop no-semaphore boosting 2020-05-14 06:14:33 +01:00
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_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_work.c drm/i915: Immediately execute the fenced work 2020-03-25 13:05:04 +00:00
i915_sw_fence_work.h drm/i915: Immediately execute the fenced work 2020-03-25 13:05:04 +00:00
i915_sw_fence.c drm/i915: Filter wake_flags passed to default_wake_function 2020-09-16 11:10:05 +03:00
i915_sw_fence.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_points.c
i915_trace.h drm/i915: Drop i915_request.i915 backpointer 2020-06-03 13:53:39 +01:00
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_types.h drm/i915: Export ppgtt_bind_vma 2020-07-03 15:14:35 +01:00
i915_vma.c Linux 5.8-rc6 2020-07-24 08:48:05 +10:00
i915_vma.h drm/i915/gt: Remove local entries from GGTT on suspend 2020-05-28 16:55:15 +01:00
intel_device_info.c drm/i915/dg1: add initial DG-1 definitions 2020-07-14 02:47:17 -07:00
intel_device_info.h drm/i915/dg1: add initial DG-1 definitions 2020-07-14 02:47:17 -07: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: Document FBC related w/as more thoroughly 2020-07-09 16:50:53 +03: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