89 lines
3.4 KiB
Diff
89 lines
3.4 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Zhipeng Gong <zhipeng.gong@intel.com>
|
|
Date: Mon, 22 Oct 2018 16:53:59 +0800
|
|
Subject: [PATCH] drm/i915/gvt: Support vgpu workload priority config
|
|
|
|
Add support to configure vgpu workload priority, make the param
|
|
writable to facilitate performance issue debug.
|
|
|
|
Signed-off-by: Zhipeng Gong <zhipeng.gong@intel.com>
|
|
Signed-off-by: Min He <min.he@intel.com>
|
|
|
|
V2: rebased to 4.19
|
|
Tracked-On: projectacrn/acrn-hypervisor#1552
|
|
Signed-off-by: Xinyun Liu <xinyun.liu@intel.com>
|
|
Reviewed-by: Min He <min.he@intel.com>
|
|
---
|
|
drivers/gpu/drm/i915/gvt/scheduler.c | 12 ++++++++++++
|
|
drivers/gpu/drm/i915/i915_params.c | 4 ++++
|
|
drivers/gpu/drm/i915/i915_params.h | 1 +
|
|
3 files changed, 17 insertions(+)
|
|
|
|
diff --git a/drivers/gpu/drm/i915/gvt/scheduler.c b/drivers/gpu/drm/i915/gvt/scheduler.c
|
|
index 50af02d79de1..3f9e6a0731c4 100644
|
|
--- a/drivers/gpu/drm/i915/gvt/scheduler.c
|
|
+++ b/drivers/gpu/drm/i915/gvt/scheduler.c
|
|
@@ -467,6 +467,15 @@ static void gen8_shadow_pid_cid(struct intel_vgpu_workload *workload)
|
|
intel_ring_advance(workload->req, cs);
|
|
}
|
|
|
|
+static int sanitize_priority(int priority)
|
|
+{
|
|
+ if (priority > I915_CONTEXT_MAX_USER_PRIORITY)
|
|
+ return I915_CONTEXT_MAX_USER_PRIORITY;
|
|
+ else if (priority < I915_CONTEXT_MIN_USER_PRIORITY)
|
|
+ return I915_CONTEXT_MIN_USER_PRIORITY;
|
|
+ return priority;
|
|
+}
|
|
+
|
|
static void release_shadow_batch_buffer(struct intel_vgpu_workload *workload);
|
|
|
|
static int prepare_shadow_batch_buffer(struct intel_vgpu_workload *workload)
|
|
@@ -701,6 +710,7 @@ static int dispatch_workload(struct intel_vgpu_workload *workload)
|
|
{
|
|
struct intel_vgpu *vgpu = workload->vgpu;
|
|
struct drm_i915_private *dev_priv = vgpu->gvt->dev_priv;
|
|
+ struct intel_vgpu_submission *s = &vgpu->submission;
|
|
int ring_id = workload->ring_id;
|
|
int ret;
|
|
|
|
@@ -729,6 +739,8 @@ static int dispatch_workload(struct intel_vgpu_workload *workload)
|
|
if (!IS_ERR_OR_NULL(workload->req)) {
|
|
gvt_dbg_sched("ring id %d submit workload to i915 %p\n",
|
|
ring_id, workload->req);
|
|
+ s->shadow_ctx->sched.priority = i915_modparams.gvt_workload_priority =
|
|
+ sanitize_priority(i915_modparams.gvt_workload_priority);
|
|
i915_request_add(workload->req);
|
|
workload->dispatched = true;
|
|
}
|
|
diff --git a/drivers/gpu/drm/i915/i915_params.c b/drivers/gpu/drm/i915/i915_params.c
|
|
index 5c6e7dc48b7f..e594fd3cf6c9 100644
|
|
--- a/drivers/gpu/drm/i915/i915_params.c
|
|
+++ b/drivers/gpu/drm/i915/i915_params.c
|
|
@@ -174,6 +174,10 @@ i915_param_named(enable_dpcd_backlight, bool, 0600,
|
|
i915_param_named(enable_gvt, bool, 0400,
|
|
"Enable support for Intel GVT-g graphics virtualization host support(default:false)");
|
|
|
|
+i915_param_named(gvt_workload_priority, int, 0600,
|
|
+ "Set GVT-g workload priority, (range: (-1023, 1023), default: 0, "
|
|
+ "more positive value means higher priority).");
|
|
+
|
|
i915_param_named(domain_scaler_owner, int, 0400,
|
|
"scaler owners for each domain and for each pipe ids can be from 0-F");
|
|
|
|
diff --git a/drivers/gpu/drm/i915/i915_params.h b/drivers/gpu/drm/i915/i915_params.h
|
|
index d902bedad72a..a0d1d7e7a3ac 100644
|
|
--- a/drivers/gpu/drm/i915/i915_params.h
|
|
+++ b/drivers/gpu/drm/i915/i915_params.h
|
|
@@ -75,6 +75,7 @@ struct drm_printer;
|
|
PVMMIO_ELSP_SUBMIT | PVMMIO_PLANE_UPDATE \
|
|
| PVMMIO_PLANE_WM_UPDATE | PVMMIO_PPGTT_UPDATE \
|
|
| PVMMIO_GGTT_UPDATE ) \
|
|
+ param(int, gvt_workload_priority, 0) \
|
|
param(bool, enable_gvt, false) \
|
|
param(bool, enable_conformance_check, true)
|
|
|
|
--
|
|
https://clearlinux.org
|
|
|