linux_dsm_epyc7002/drivers/gpu/drm/i915
Changbin Du cfe65f4037 drm/i915/gvt: fix vGPU instance reuse issues by vGPU reset function
Our function tests found several issues related to reusing vGPU
instance. They are qemu reboot failure, guest tdr after reboot, host
hang when reboot guest. All these issues are caused by dirty status
inherited from last VM.

This patch fix all these issues by resetting a virtual GPU before VM
use it. The reset logical is put into a low level function
_intel_gvt_reset_vgpu(), which supports Device Model Level Reset, Full
GT Reset and Per-Engine Reset.

vGPU Device Model Level Reset (DMLR) simulates the PCI reset to reset
the whole vGPU to default state as when it is created, including GTT,
execlist, scratch pages, cfg space, mmio space, pvinfo page, scheduler
and fence registers. The ultimate goal of vGPU DMLR is that reuse a
vGPU instance by different virtual machines. When we reassign a vGPU
to a virtual machine we must issue such reset first.

Full GT Reset and Per-Engine GT Reset are soft reset flow for GPU engines
(Render, Blitter, Video, Video Enhancement). It is defined by GPU Spec.
Unlike the FLR, GT reset only reset particular resource of a vGPU per
the reset request. Guest driver can issue a GT reset by programming
the virtual GDRST register to reset specific virtual GPU engine or all
engines.

Since vGPU DMLR and GT reset can share some code so we implement both
these two into one single function intel_gvt_reset_vgpu_locked(). The
parameter dmlr is to identify if we will do FLR or GT reset. The
parameter engine_mask is to specific the engines that need to be
resetted. If value ALL_ENGINES is given for engine_mask, it means
the caller requests a full gt reset that we will reset all virtual
GPU engines.

Signed-off-by: Changbin Du <changbin.du@intel.com>
Reviewed-by: Jike Song <jike.song@intel.com>
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
2017-01-13 15:05:38 +08:00
..
gvt drm/i915/gvt: fix vGPU instance reuse issues by vGPU reset function 2017-01-13 15:05:38 +08:00
dvo_ch7xxx.c
dvo_ch7017.c
dvo_ivch.c
dvo_ns2501.c
dvo_sil164.c
dvo_tfp410.c
dvo.h
i915_cmd_parser.c drm/i915: Refactor object page API 2016-10-28 20:53:46 +01:00
i915_debugfs.c Merge tag 'drm-intel-next-fixes-2016-12-07' of git://anongit.freedesktop.org/git/drm-intel into drm-next 2016-12-08 10:33:26 +10:00
i915_drv.c drm/i915: dev_priv cleanup in intel_display.c 2016-11-17 13:56:46 +00:00
i915_drv.h drm/i915/gen9: Fix PCODE polling during CDCLK change notification 2016-12-20 16:28:52 +02:00
i915_gem_batch_pool.c drm/i915: Move GEM activity tracking into a common struct reservation_object 2016-10-28 20:53:50 +01:00
i915_gem_batch_pool.h
i915_gem_context.c drm/i915: Store the execution priority on the context 2016-11-14 21:01:22 +00:00
i915_gem_dmabuf.c drm/i915: Move GEM activity tracking into a common struct reservation_object 2016-10-28 20:53:50 +01:00
i915_gem_evict.c drm/i915: Enable multiple timelines 2016-10-28 20:53:57 +01:00
i915_gem_execbuffer.c drm/i915: Move frontbuffer CS write tracking from ggtt vma to object 2016-11-18 11:15:59 +00:00
i915_gem_fence_reg.c drm/i915: Use dev_priv in INTEL_INFO in i915_gem_fence_reg.c 2016-11-17 13:56:06 +00:00
i915_gem_fence_reg.h drm/i915: Split out i915_vma.c 2016-11-11 14:34:54 +02:00
i915_gem_gtt.c drm/i915: add i915_address_space_fini 2016-11-17 21:05:36 +00:00
i915_gem_gtt.h drm/i915: dev_priv cleanup in i915_gem_gtt.c 2016-11-17 13:56:12 +00:00
i915_gem_internal.c drm/i915: Allow shrinking of userptr objects once again 2016-11-01 16:35:26 +00:00
i915_gem_object.h drm/i915: Move frontbuffer CS write tracking from ggtt vma to object 2016-11-18 11:15:59 +00:00
i915_gem_render_state.c drm/i915: Introduce HAS_64BIT_RELOC 2016-11-03 12:45:57 +02:00
i915_gem_render_state.h drm/i915: Reuse the active golden render state batch 2016-10-28 20:53:44 +01:00
i915_gem_request.c Main pull request for drm for 4.10 kernel 2016-12-13 09:35:09 -08:00
i915_gem_request.h drm/i915: Fix oopses in the overlay code due to i915_gem_active stuff 2017-01-03 11:41:17 +02:00
i915_gem_shrinker.c Main pull request for drm for 4.10 kernel 2016-12-13 09:35:09 -08:00
i915_gem_stolen.c drm/i915: skip the first 4k of stolen memory on everything >= gen8 2016-12-20 16:30:55 +02:00
i915_gem_tiling.c drm/i915: dev_priv cleanup in i915_gem_tiling.c 2016-11-17 13:56:20 +00:00
i915_gem_timeline.c drm/i915: Create distinct lockclasses for execution vs user timelines 2016-11-14 21:00:21 +00:00
i915_gem_timeline.h drm/i915: Create distinct lockclasses for execution vs user timelines 2016-11-14 21:00:21 +00:00
i915_gem_userptr.c mm: add locked parameter to get_user_pages_remote() 2016-12-14 16:04:08 -08:00
i915_gem.c Merge branch 'stable/for-linus-4.10' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/swiotlb 2017-01-06 10:53:21 -08:00
i915_gem.h drm/i915: avoid harmless empty-body warning 2016-11-08 17:33:47 +01:00
i915_gpu_error.c drm/i915: Move frontbuffer CS write tracking from ggtt vma to object 2016-11-18 11:15:59 +00:00
i915_guc_reg.h
i915_guc_submission.c drm/i915/scheduler: Execute requests in order of priorities 2016-11-14 21:01:21 +00:00
i915_ioc32.c
i915_irq.c drm/i915: dev_priv cleanup in i915_irq.c 2016-11-17 13:56:28 +00:00
i915_memcpy.c
i915_mm.c
i915_params.c drm/i915: rename preliminary_hw_support to alpha_support 2016-11-14 15:33:27 +02:00
i915_params.h drm/i915: rename preliminary_hw_support to alpha_support 2016-11-14 15:33:27 +02:00
i915_pci.c drm/i915/bxt: Broxton decoupled MMIO 2016-11-16 09:33:10 +00:00
i915_pvinfo.h
i915_reg.h drm/i915/bxt: Broxton decoupled MMIO 2016-11-16 09:33:10 +00:00
i915_suspend.c drm/i915: dev_priv cleanup in i915_suspend.c 2016-11-17 13:56:31 +00:00
i915_sw_fence.c drm/i915: Give each sw_fence its own lockclass 2016-11-14 21:00:20 +00:00
i915_sw_fence.h drm/i915: Hold a reference on the request for its fence chain 2016-12-05 11:00:32 +02:00
i915_sysfs.c drm/i915: Fix setting of boost freq tunable 2016-12-20 16:29:48 +02:00
i915_trace_points.c
i915_trace.h drm/i915: Introduce a global_seqno for each request 2016-10-28 20:53:53 +01:00
i915_vgpu.c
i915_vgpu.h
i915_vma.c drm/i915: Move frontbuffer CS write tracking from ggtt vma to object 2016-11-18 11:15:59 +00:00
i915_vma.h drm/i915: Move frontbuffer CS write tracking from ggtt vma to object 2016-11-18 11:15:59 +00:00
intel_acpi.c
intel_atomic_plane.c Merge tag 'drm-misc-next-2016-11-29' of git://anongit.freedesktop.org/git/drm-misc into drm-next 2016-11-30 14:28:20 +10:00
intel_atomic.c
intel_audio.c drm/i915/audio: fix hdmi audio noise issue 2016-12-05 11:00:31 +02:00
intel_bios.c drm/i915: Assume non-DP++ port if dvo_port is HDMI and there's no AUX ch specified in the VBT 2016-11-16 10:06:14 +02:00
intel_bios.h drm/i915/dsi: Fix swapping of MIPI_SEQ_DEASSERT_RESET / MIPI_SEQ_ASSERT_RESET 2016-12-20 16:28:25 +02:00
intel_breadcrumbs.c drm/i915: Spin until breadcrumb threads are complete 2016-11-09 15:01:52 +00:00
intel_color.c drm/i915: Assorted INTEL_INFO(dev) cleanups 2016-11-17 13:56:35 +00:00
intel_crt.c drm/i915: Assorted INTEL_INFO(dev) cleanups 2016-11-17 13:56:35 +00:00
intel_csr.c drm/i915/DMC/KBL: Load DMC on KBL using the no_stepping_info array 2016-10-26 14:20:53 -07:00
intel_ddi.c drm/i915: Assorted INTEL_INFO(dev) cleanups 2016-11-17 13:56:35 +00:00
intel_device_info.c drm/i915: Don't try to initialize sprite planes on pre-ilk 2016-10-31 16:56:32 +02:00
intel_display.c drm/i915: Move the min_pixclk[] handling to the end of readout 2017-01-03 11:37:01 +02:00
intel_dp_aux_backlight.c
intel_dp_link_training.c
intel_dp_mst.c drm/i915: Kill dp_encoder_is_mst 2016-11-14 20:27:54 +02:00
intel_dp.c drm/i915: Force VDD off on the new power seqeuencer before starting to use it 2017-01-03 11:36:11 +02:00
intel_dpio_phy.c drm/i915/bxt: Don't set OCL2_LDOFUSE_PWR_DIS bit in phy init sequence 2016-11-02 09:35:47 +02:00
intel_dpll_mgr.c drm/i915: Assorted INTEL_INFO(dev) cleanups 2016-11-17 13:56:35 +00:00
intel_dpll_mgr.h
intel_drv.h drm/i915: dev_priv cleanup in intel_dp.c 2016-11-17 13:56:39 +00:00
intel_dsi_dcs_backlight.c
intel_dsi_panel_vbt.c drm/i915/dsi: Fix chv_exec_gpio disabling the GPIOs it is setting 2016-12-20 16:28:38 +02:00
intel_dsi_pll.c drm/i915: Make IS_BROXTON only take dev_priv 2016-10-14 12:23:19 +01:00
intel_dsi.c drm: Make the connector .detect() callback optional 2016-12-01 10:05:53 -05:00
intel_dsi.h
intel_dvo.c drm/i915: Pass dev_priv to intel_get_crtc_for_pipe() 2016-11-01 16:40:38 +02:00
intel_engine_cs.c drm/i915/scheduler: Execute requests in order of priorities 2016-11-14 21:01:21 +00:00
intel_fbc.c drm/i915/fbc: convert intel_fbc.c to use INTEL_GEN() 2016-11-14 14:00:29 -02:00
intel_fbdev.c Merge tag 'drm-misc-next-2016-11-29' of git://anongit.freedesktop.org/git/drm-misc into drm-next 2016-11-30 14:28:20 +10:00
intel_fifo_underrun.c drm/i915: Always use intel_get_crtc_for_pipe() 2016-11-01 16:40:38 +02:00
intel_frontbuffer.c
intel_frontbuffer.h drm/i915: Move frontbuffer CS write tracking from ggtt vma to object 2016-11-18 11:15:59 +00:00
intel_guc_fwif.h drm/i915: Increase GuC log buffer size to reduce flush interrupts 2016-10-25 09:34:23 +01:00
intel_guc_loader.c drm/i915: Further assorted dev_priv cleanups 2016-11-11 14:58:26 +00:00
intel_guc.h drm/i915/guc: Cache the client mapping 2016-11-03 19:57:43 +00:00
intel_gvt.c Documentation/gpu: Add section for Intel GVT-g host support 2016-10-20 17:18:39 +08:00
intel_gvt.h drm/i915/gvt: clean up intel_gvt.h as interface for i915 core 2016-10-20 17:18:30 +08:00
intel_hangcheck.c drm/i915: Move hangcheck code out from i915_irq.c 2016-11-02 11:59:10 +02:00
intel_hdmi.c drm/i915: Pass atomic state to intel_audio_codec_enable, v2. 2016-11-09 13:55:05 +01:00
intel_hotplug.c drm/i915: More assorted dev_priv cleanups 2016-11-11 14:58:26 +00:00
intel_i2c.c drm/i915: GMBUS don't need no forcewake 2016-10-17 14:26:42 +03:00
intel_lrc.c drm/i915: Fix use after free in logical_render_ring_init 2016-12-20 16:30:27 +02:00
intel_lrc.h drm/i915: Make sure engines are idle during GPU idling in LR mode 2016-11-07 14:48:05 +02:00
intel_lspcon.c drm/i915/lspcon: Add workaround for resuming in PCON mode 2016-10-26 12:41:01 +03:00
intel_lvds.c drm/i915: Assorted INTEL_INFO(dev) cleanups 2016-11-17 13:56:35 +00:00
intel_mocs.c
intel_mocs.h
intel_modes.c
intel_opregion.c drm/i915/opregion: fill in the CADL from connector list, not DIDL 2016-11-17 12:45:59 +02:00
intel_overlay.c drm/i915: Fix oops in overlay due to frontbuffer tracking 2017-01-03 11:41:28 +02:00
intel_panel.c drm/i915: Introduce enableddisabled helper 2016-11-17 15:00:36 +00:00
intel_pm.c Merge tag 'drm-intel-next-fixes-2016-12-22' of git://anongit.freedesktop.org/git/drm-intel into drm-fixes 2016-12-23 05:28:02 +10:00
intel_psr.c drm/i915: disable PSR by default on HSW/BDW 2016-12-20 16:30:09 +02:00
intel_renderstate_gen6.c
intel_renderstate_gen7.c
intel_renderstate_gen8.c
intel_renderstate_gen9.c
intel_renderstate.h
intel_ringbuffer.c drm/i915: Defer transfer onto execution timeline to actual hw submission 2016-11-14 21:00:23 +00:00
intel_ringbuffer.h drm/i915/scheduler: Execute requests in order of priorities 2016-11-14 21:01:21 +00:00
intel_runtime_pm.c drm/i915/dsi: Do not clear DPOUNIT_CLOCK_GATE_DISABLE from vlv_init_display_clock_gating 2016-12-20 16:27:46 +02:00
intel_sdvo_regs.h
intel_sdvo.c drm/i915: Assorted INTEL_INFO(dev) cleanups 2016-11-17 13:56:35 +00:00
intel_sideband.c
intel_sprite.c Merge tag 'drm-misc-next-2016-11-29' of git://anongit.freedesktop.org/git/drm-misc into drm-next 2016-11-30 14:28:20 +10:00
intel_tv.c drm/i915: Assorted INTEL_INFO(dev) cleanups 2016-11-17 13:56:35 +00:00
intel_uncore.c ktime: Cleanup ktime_set() usage 2016-12-25 17:21:22 +01:00
intel_vbt_defs.h drm/i915: Assume non-DP++ port if dvo_port is HDMI and there's no AUX ch specified in the VBT 2016-11-16 10:06:14 +02:00
Kconfig drm/i915/gvt/kvmgt: add vfio/mdev support to KVMGT 2016-12-16 16:55:26 +08:00
Kconfig.debug drm/i915: Restrict DRM_DEBUG_MM automatic selection 2016-11-09 02:13:48 +01:00
Makefile drm/i915: Split out i915_vma.c 2016-11-11 14:34:54 +02:00