linux/drivers/gpu/drm/i915/gvt
Changbin Du 969b0950a1 drm/i915: Add interface to reserve fence registers for vGPU
In the past, vGPU alloc fence registers by walking through mm.fence_list
to find fence which pin_count = 0 and vma is empty. vGPU may not find
enough fence registers this way. Because a fence can be bind to vma even
though it is not in using. We have found such failure many times these
days.

An option to resolve this issue is that we can force-remove fence from
vma in this case.

This patch added two new api to the fence management code:
 - i915_reserve_fence() will try to find a free fence from fence_list
   and force-remove vma if need.
 - i915_unreserve_fence() reclaim a reserved fence after vGPU has
   finished.

With this change, the fence management is more clear to work with vGPU.
GVTg do not need remove fence from fence_list in private.

v3: (Chris)
  - Add struct_mutex lock assertion.
  - Only count for unpinned fence.

v2: (Chris)
  - Rename the new api for symmetry.
  - Add safeguard to ensure at least 1 fence remained for host display.

Signed-off-by: Changbin Du <changbin.du@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Link: https://patchwork.freedesktop.org/patch/msgid/1504512061-5892-1-git-send-email-changbin.du@intel.com
Acked-by: Zhenyu Wang <zhenyuw@linux.intel.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2017-09-04 16:34:59 +01:00
..
aperture_gm.c drm/i915: Add interface to reserve fence registers for vGPU 2017-09-04 16:34:59 +01:00
cfg_space.c drm/i915/gvt: exclude cfg space from failsafe mode 2017-03-30 17:47:39 +08:00
cmd_parser.c drm/i915/gvt: Replace duplicated code with exist function 2017-08-10 10:26:08 +08:00
cmd_parser.h drm/i915/gvt: Factor out scan and shadow from workload dispatch 2017-08-10 10:26:06 +08:00
debug.h drm/i915/gvt: replace the gvt_err with gvt_vgpu_err 2017-03-17 16:46:45 +08:00
display.c drm/i915/hsw+: Add has_fuses power well attribute 2017-07-27 09:38:53 +02:00
display.h drm/i915/gvt: add resolution definition for vGPU type 2017-02-24 13:25:18 +08:00
edid.c drm/i915/gvt: Fix guest fail to read EDID leading to black guest console issue. 2017-03-21 10:50:02 +08:00
edid.h drm/i915/gvt: Fix static checker warning on intel_gvt_i2c_handle_aux_ch_write() 2016-11-14 18:06:44 +08:00
execlist.c drm/i915/gvt: Add shadow context descriptor updating 2017-08-10 10:26:15 +08:00
execlist.h drm/i915/gvt: fix crash in vgpu_reset_execlist 2016-11-14 18:06:43 +08:00
firmware.c drm/i915/gvt: Cleanup struct intel_gvt_mmio_info 2017-06-08 13:59:19 +08:00
gtt.c drm/i915/gvt: Fix guest i915 full ppgtt blocking issue 2017-08-15 10:13:09 +08:00
gtt.h drm/i915/gvt: Refine the intel_vgpu_reset_gtt reset function 2017-08-10 10:26:10 +08:00
gvt.c drm/i915/gvt: Support event based scheduling 2017-06-08 13:59:16 +08:00
gvt.h drm/i915/gvt: Add shadow context descriptor updating 2017-08-10 10:26:15 +08:00
handlers.c drm/i915/hsw+: Add support for multiple power well regs 2017-08-15 15:28:10 +03:00
hypercall.h drm/i915/gvt: remove detect_host() MPT hook 2017-02-07 17:21:44 +08:00
interrupt.c drm/i915/gvt: Change flood gvt dmesg into trace 2017-06-08 13:59:16 +08:00
interrupt.h drm/i915/gvt: vGPU command scanner 2016-10-14 18:15:25 +08:00
kvmgt.c drm/i915/gvt: expose vGPU context hw id 2017-08-10 10:26:11 +08:00
Makefile drm/i915/gvt: remove redundant -Wall 2017-06-08 13:59:18 +08:00
mmio.c drm/i915/gvt: Refine virtual reset function 2017-06-08 13:59:21 +08:00
mmio.h drm/i915/gvt: Refine virtual reset function 2017-06-08 13:59:21 +08:00
mpt.h drm/i915/gvt: Change flood gvt dmesg into trace 2017-06-08 13:59:16 +08:00
opregion.c drm/i915/gvt: replace the gvt_err with gvt_vgpu_err 2017-03-17 16:46:45 +08:00
reg.h drm/i915/gvt: cleanup opregion memory allocation code 2017-01-09 11:11:32 +08:00
render.c drm/i915/gvt: Optimize ring siwtch 2x faster again by light weight mmio access wrapper 2017-08-10 10:26:06 +08:00
render.h drm/i915/gvt: implement per-vm mmio switching optimization 2017-06-08 13:59:15 +08:00
sched_policy.c Merge tag 'gvt-next-2017-06-08' of https://github.com/01org/gvt-linux into drm-intel-next-queued 2017-06-16 10:03:01 +03:00
sched_policy.h drm/i915/gvt: use hrtimer replace delayed_work in scheduler 2017-03-30 13:32:24 +08:00
scheduler.c drm/i915/gvt: Add shadow context descriptor updating 2017-08-10 10:26:15 +08:00
scheduler.h drm/i915/gvt: Audit and shadow workload during ELSP writing 2017-08-10 10:26:07 +08:00
trace_points.c drm/i915/gvt: trace stub 2016-10-14 18:12:11 +08:00
trace.h drm/i915/gvt: Change flood gvt dmesg into trace 2017-06-08 13:59:16 +08:00
vgpu.c drm/i915/gvt: Fix guest i915 full ppgtt blocking issue 2017-08-15 10:13:09 +08:00