|
Takashi Iwai |
ff9dd4 |
From 4d3e67bb6fa26e50eb087799d98ec232acfb630d Mon Sep 17 00:00:00 2001
|
|
Takashi Iwai |
ff9dd4 |
From: Chuanxiao Dong <chuanxiao.dong@intel.com>
|
|
Takashi Iwai |
ff9dd4 |
Date: Fri, 4 Aug 2017 13:08:59 +0800
|
|
Takashi Iwai |
ff9dd4 |
Subject: [PATCH] drm/i915/gvt: Refine the intel_vgpu_reset_gtt reset function
|
|
Takashi Iwai |
ff9dd4 |
Git-commit: 4d3e67bb6fa26e50eb087799d98ec232acfb630d
|
|
Takashi Iwai |
ff9dd4 |
Patch-mainline: v4.14-rc1
|
|
Takashi Iwai |
ff9dd4 |
References: FATE#322643 bsc#1055900
|
|
Takashi Iwai |
ff9dd4 |
|
|
Takashi Iwai |
ff9dd4 |
When doing the VGPU reset, we don't need to do the gtt/ppgtt reset.
|
|
Takashi Iwai |
ff9dd4 |
This will make the GVT to do the ppgtt shadow every time for
|
|
Takashi Iwai |
ff9dd4 |
a workload and caused really bad performance after a VGPU reset.
|
|
Takashi Iwai |
ff9dd4 |
This patch will make sure ppgtt clean only happen at device module
|
|
Takashi Iwai |
ff9dd4 |
level reset to fix this.
|
|
Takashi Iwai |
ff9dd4 |
|
|
Takashi Iwai |
ff9dd4 |
Signed-off-by: Chuanxiao Dong <chuanxiao.dong@intel.com>
|
|
Takashi Iwai |
ff9dd4 |
Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
|
|
Takashi Iwai |
ff9dd4 |
Acked-by: Takashi Iwai <tiwai@suse.de>
|
|
Takashi Iwai |
ff9dd4 |
|
|
Takashi Iwai |
ff9dd4 |
---
|
|
Takashi Iwai |
ff9dd4 |
drivers/gpu/drm/i915/gvt/gtt.c | 6 +-----
|
|
Takashi Iwai |
ff9dd4 |
drivers/gpu/drm/i915/gvt/gtt.h | 2 +-
|
|
Takashi Iwai |
ff9dd4 |
drivers/gpu/drm/i915/gvt/vgpu.c | 6 +++---
|
|
Takashi Iwai |
ff9dd4 |
3 files changed, 5 insertions(+), 9 deletions(-)
|
|
Takashi Iwai |
ff9dd4 |
|
|
Takashi Iwai |
ff9dd4 |
--- a/drivers/gpu/drm/i915/gvt/gtt.c
|
|
Takashi Iwai |
ff9dd4 |
+++ b/drivers/gpu/drm/i915/gvt/gtt.c
|
|
Takashi Iwai |
ff9dd4 |
@@ -2352,13 +2352,12 @@ void intel_vgpu_reset_ggtt(struct intel_
|
|
Takashi Iwai |
ff9dd4 |
/**
|
|
Takashi Iwai |
ff9dd4 |
* intel_vgpu_reset_gtt - reset the all GTT related status
|
|
Takashi Iwai |
ff9dd4 |
* @vgpu: a vGPU
|
|
Takashi Iwai |
ff9dd4 |
- * @dmlr: true for vGPU Device Model Level Reset, false for GT Reset
|
|
Takashi Iwai |
ff9dd4 |
*
|
|
Takashi Iwai |
ff9dd4 |
* This function is called from vfio core to reset reset all
|
|
Takashi Iwai |
ff9dd4 |
* GTT related status, including GGTT, PPGTT, scratch page.
|
|
Takashi Iwai |
ff9dd4 |
*
|
|
Takashi Iwai |
ff9dd4 |
*/
|
|
Takashi Iwai |
ff9dd4 |
-void intel_vgpu_reset_gtt(struct intel_vgpu *vgpu, bool dmlr)
|
|
Takashi Iwai |
ff9dd4 |
+void intel_vgpu_reset_gtt(struct intel_vgpu *vgpu)
|
|
Takashi Iwai |
ff9dd4 |
{
|
|
Takashi Iwai |
ff9dd4 |
int i;
|
|
Takashi Iwai |
ff9dd4 |
|
|
Takashi Iwai |
ff9dd4 |
@@ -2370,9 +2369,6 @@ void intel_vgpu_reset_gtt(struct intel_v
|
|
Takashi Iwai |
ff9dd4 |
*/
|
|
Takashi Iwai |
ff9dd4 |
intel_vgpu_free_mm(vgpu, INTEL_GVT_MM_PPGTT);
|
|
Takashi Iwai |
ff9dd4 |
|
|
Takashi Iwai |
ff9dd4 |
- if (!dmlr)
|
|
Takashi Iwai |
ff9dd4 |
- return;
|
|
Takashi Iwai |
ff9dd4 |
-
|
|
Takashi Iwai |
ff9dd4 |
intel_vgpu_reset_ggtt(vgpu);
|
|
Takashi Iwai |
ff9dd4 |
|
|
Takashi Iwai |
ff9dd4 |
/* clear scratch page for security */
|
|
Takashi Iwai |
ff9dd4 |
--- a/drivers/gpu/drm/i915/gvt/gtt.h
|
|
Takashi Iwai |
ff9dd4 |
+++ b/drivers/gpu/drm/i915/gvt/gtt.h
|
|
Takashi Iwai |
ff9dd4 |
@@ -212,7 +212,7 @@ extern void intel_vgpu_clean_gtt(struct
|
|
Takashi Iwai |
ff9dd4 |
void intel_vgpu_reset_ggtt(struct intel_vgpu *vgpu);
|
|
Takashi Iwai |
ff9dd4 |
|
|
Takashi Iwai |
ff9dd4 |
extern int intel_gvt_init_gtt(struct intel_gvt *gvt);
|
|
Takashi Iwai |
ff9dd4 |
-extern void intel_vgpu_reset_gtt(struct intel_vgpu *vgpu, bool dmlr);
|
|
Takashi Iwai |
ff9dd4 |
+void intel_vgpu_reset_gtt(struct intel_vgpu *vgpu);
|
|
Takashi Iwai |
ff9dd4 |
extern void intel_gvt_clean_gtt(struct intel_gvt *gvt);
|
|
Takashi Iwai |
ff9dd4 |
|
|
Takashi Iwai |
ff9dd4 |
extern struct intel_vgpu_mm *intel_gvt_find_ppgtt_mm(struct intel_vgpu *vgpu,
|
|
Takashi Iwai |
ff9dd4 |
--- a/drivers/gpu/drm/i915/gvt/vgpu.c
|
|
Takashi Iwai |
ff9dd4 |
+++ b/drivers/gpu/drm/i915/gvt/vgpu.c
|
|
Takashi Iwai |
ff9dd4 |
@@ -504,11 +504,11 @@ void intel_gvt_reset_vgpu_locked(struct
|
|
Takashi Iwai |
ff9dd4 |
/* full GPU reset or device model level reset */
|
|
Takashi Iwai |
ff9dd4 |
if (engine_mask == ALL_ENGINES || dmlr) {
|
|
Takashi Iwai |
ff9dd4 |
|
|
Takashi Iwai |
ff9dd4 |
- intel_vgpu_reset_gtt(vgpu, dmlr);
|
|
Takashi Iwai |
ff9dd4 |
-
|
|
Takashi Iwai |
ff9dd4 |
/*fence will not be reset during virtual reset */
|
|
Takashi Iwai |
ff9dd4 |
- if (dmlr)
|
|
Takashi Iwai |
ff9dd4 |
+ if (dmlr) {
|
|
Takashi Iwai |
ff9dd4 |
+ intel_vgpu_reset_gtt(vgpu);
|
|
Takashi Iwai |
ff9dd4 |
intel_vgpu_reset_resource(vgpu);
|
|
Takashi Iwai |
ff9dd4 |
+ }
|
|
Takashi Iwai |
ff9dd4 |
|
|
Takashi Iwai |
ff9dd4 |
intel_vgpu_reset_mmio(vgpu, dmlr);
|
|
Takashi Iwai |
ff9dd4 |
populate_pvinfo_page(vgpu);
|