linux_dsm_epyc7002/drivers/gpu/drm
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
..
amd Merge tag 'drm-misc-next-2017-08-08' of git://anongit.freedesktop.org/git/drm-misc into drm-next 2017-08-10 10:47:33 +10:00
arc Merge tag 'drm-misc-next-2017-08-08' of git://anongit.freedesktop.org/git/drm-misc into drm-next 2017-08-10 10:47:33 +10:00
arm drm: Nuke drm_atomic_helper_plane_set_property 2017-08-08 14:45:16 +02:00
armada drm: armada: remove dead empty functions 2017-08-04 11:35:34 +02:00
ast Merge tag 'drm-misc-next-2017-08-08' of git://anongit.freedesktop.org/git/drm-misc into drm-next 2017-08-10 10:47:33 +10:00
atmel-hlcdc drm: Nuke drm_atomic_helper_plane_set_property 2017-08-08 14:45:16 +02:00
bochs
bridge drm: Nuke drm_atomic_helper_connector_dpms 2017-08-08 14:48:48 +02:00
cirrus drm: cirrus: remove dead code and pointless local lut storage 2017-08-04 11:35:44 +02:00
etnaviv
exynos drm: Nuke drm_atomic_helper_connector_dpms 2017-08-08 14:48:48 +02:00
fsl-dcu drm: Nuke drm_atomic_helper_connector_dpms 2017-08-08 14:48:48 +02:00
gma500 drm: gma500: remove dead code and pointless local lut storage 2017-08-04 11:35:51 +02:00
hisilicon drm: Nuke drm_atomic_helper_connector_dpms 2017-08-08 14:48:48 +02:00
i2c drm: Nuke drm_atomic_helper_connector_dpms 2017-08-08 14:48:48 +02:00
i810
i915 drm/i915: Add interface to reserve fence registers for vGPU 2017-09-04 16:34:59 +01:00
imx drm: Nuke drm_atomic_helper_connector_dpms 2017-08-08 14:48:48 +02:00
lib
mediatek drm: Nuke drm_atomic_helper_connector_dpms 2017-08-08 14:48:48 +02:00
meson drm: Nuke drm_atomic_helper_connector_dpms 2017-08-08 14:48:48 +02:00
mga
mgag200 drm: mgag200: remove dead code and pointless local lut storage 2017-08-04 11:36:03 +02:00
msm drm: Nuke drm_atomic_helper_connector_dpms 2017-08-08 14:48:48 +02:00
mxsfb drm: Nuke drm_atomic_helper_connector_dpms 2017-08-08 14:48:48 +02:00
nouveau drm: Nuke drm_atomic_helper_connector_dpms 2017-08-08 14:48:48 +02:00
omapdrm drm: Nuke drm_atomic_helper_connector_dpms 2017-08-08 14:48:48 +02:00
panel
pl111 drm: Nuke drm_atomic_helper_connector_dpms 2017-08-08 14:48:48 +02:00
qxl
r128
radeon Merge tag 'drm-misc-next-2017-08-08' of git://anongit.freedesktop.org/git/drm-misc into drm-next 2017-08-10 10:47:33 +10:00
rcar-du Merge tag 'drm-misc-next-2017-08-08' of git://anongit.freedesktop.org/git/drm-misc into drm-next 2017-08-10 10:47:33 +10:00
rockchip drm: Nuke drm_atomic_helper_connector_dpms 2017-08-08 14:48:48 +02:00
savage
selftests
shmobile
sis
sti drm: Nuke drm_atomic_helper_connector_dpms 2017-08-08 14:48:48 +02:00
stm drm: Nuke drm_atomic_helper_plane_set_property 2017-08-08 14:45:16 +02:00
sun4i drm: Nuke drm_atomic_helper_connector_dpms 2017-08-08 14:48:48 +02:00
tdfx
tegra drm: Nuke drm_atomic_helper_connector_dpms 2017-08-08 14:48:48 +02:00
tilcdc drm: Nuke drm_atomic_helper_connector_dpms 2017-08-08 14:48:48 +02:00
tinydrm drm: Nuke drm_atomic_helper_connector_dpms 2017-08-08 14:48:48 +02:00
ttm
udl
vc4 drm: Nuke drm_atomic_helper_connector_dpms 2017-08-08 14:48:48 +02:00
vgem
via
virtio drm: Nuke drm_atomic_helper_connector_dpms 2017-08-08 14:48:48 +02:00
vmwgfx
zte drm: Nuke drm_atomic_helper_connector_dpms 2017-08-08 14:48:48 +02:00
ati_pcigart.c
drm_agpsupport.c
drm_atomic_helper.c Merge airlied/drm-next into drm-intel-next-queued 2017-08-10 18:12:01 +02:00
drm_atomic.c drm: Nuke drm_atomic_legacy_backoff 2017-08-08 14:49:29 +02:00
drm_auth.c
drm_blend.c
drm_bridge.c
drm_bufs.c
drm_cache.c
drm_color_mgmt.c
drm_connector.c drm: Handle properties in the core for atomic drivers 2017-08-08 14:45:09 +02:00
drm_context.c
drm_crtc_helper_internal.h
drm_crtc_helper.c drm: Handle properties in the core for atomic drivers 2017-08-08 14:45:09 +02:00
drm_crtc_internal.h drm: Handle properties in the core for atomic drivers 2017-08-08 14:45:09 +02:00
drm_crtc.c drm: Handle properties in the core for atomic drivers 2017-08-08 14:45:09 +02:00
drm_debugfs_crc.c
drm_debugfs.c
drm_dma.c
drm_dp_aux_dev.c
drm_dp_dual_mode_helper.c
drm_dp_helper.c
drm_dp_mst_topology.c
drm_drv.c
drm_dumb_buffers.c
drm_edid_load.c
drm_edid.c
drm_encoder_slave.c
drm_encoder.c
drm_fb_cma_helper.c
drm_fb_helper.c drm/fb-helper: pass physical dimensions to fbdev 2017-08-07 17:01:15 +02:00
drm_file.c
drm_flip_work.c
drm_fourcc.c
drm_framebuffer.c
drm_gem_cma_helper.c
drm_gem.c
drm_global.c
drm_hashtab.c
drm_info.c
drm_internal.h
drm_ioc32.c
drm_ioctl.c
drm_irq.c
drm_kms_helper_common.c
drm_legacy.h
drm_lock.c
drm_memory.c
drm_mipi_dsi.c
drm_mm.c
drm_mode_config.c
drm_mode_object.c drm: Handle properties in the core for atomic drivers 2017-08-08 14:45:09 +02:00
drm_modes.c
drm_modeset_helper.c
drm_modeset_lock.c
drm_of.c
drm_panel.c
drm_pci.c
drm_plane_helper.c
drm_plane.c drm: Handle properties in the core for atomic drivers 2017-08-08 14:45:09 +02:00
drm_prime.c
drm_print.c
drm_probe_helper.c
drm_property.c
drm_rect.c
drm_scatter.c
drm_scdc_helper.c
drm_simple_kms_helper.c
drm_syncobj.c
drm_sysfs.c
drm_trace_points.c
drm_trace.h
drm_vblank.c
drm_vm.c
drm_vma_manager.c
Kconfig
Makefile