[PATCH] drm/i915/gvt: force to active the high-performance mode during vGPU busy

Du, Changbin changbin.du at intel.com
Wed Apr 18 02:48:17 UTC 2018


On Wed, Apr 18, 2018 at 10:31:33AM +0800, Weinan Li wrote:
> With the RPS interrupt, KMD can adjust the GPU frequency dynamically for
> power saving. It works well in the non-virtualized environment, but there
> is more latency imported by VMM and virtual interrupt handler which may
> break the RPS policy work model, and GPU works in inefficient mode. Here
> we force to active the high-performance mode when detect vgpu is busy until
> the GPU runs into idle.
> 
> Signed-off-by: Weinan Li <weinan.z.li at intel.com>
> ---
>  drivers/gpu/drm/i915/gvt/scheduler.c | 12 ++++++++++++
>  1 file changed, 12 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/gvt/scheduler.c b/drivers/gpu/drm/i915/gvt/scheduler.c
> index d71e3de..7ba8703 100644
> --- a/drivers/gpu/drm/i915/gvt/scheduler.c
> +++ b/drivers/gpu/drm/i915/gvt/scheduler.c
> @@ -222,6 +222,17 @@ static void save_ring_hw_state(struct intel_vgpu *vgpu, int ring_id)
>  	vgpu_vreg(vgpu, i915_mmio_reg_offset(reg)) = I915_READ_FW(reg);
>  }
>  
> +static int active_high_performance_mode(struct drm_i915_private *dev_priv)
> +{
> +	struct intel_rps rps = dev_priv->gt_pm.rps;
> +
> +	if (rps.cur_freq != rps.max_freq || rps.interrupts_enabled) {
> +		intel_set_rps(dev_priv, rps.max_freq);
> +		gen6_disable_rps_interrupts(dev_priv);
> +		trace_printk("active high performance mode for GVT-g.\n");
trace_printk() should not be used. It will cause non-production warning.

> +	}
> +}
> +
>  static int shadow_context_status_change(struct notifier_block *nb,
>  		unsigned long action, void *data)
>  {
> @@ -263,6 +274,7 @@ static int shadow_context_status_change(struct notifier_block *nb,
>  			gvt_dbg_sched("skip ring %d mmio switch for vgpu%d\n",
>  				      ring_id, workload->vgpu->id);
>  		spin_unlock_irqrestore(&scheduler->mmio_context_lock, flags);
> +		active_high_performance_mode(gvt->dev_priv);
>  		atomic_set(&workload->shadow_ctx_active, 1);
>  		break;
>  	case INTEL_CONTEXT_SCHEDULE_OUT:
> -- 
> 1.9.1
> 
> _______________________________________________
> intel-gvt-dev mailing list
> intel-gvt-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gvt-dev

-- 
Thanks,
Changbin Du


More information about the intel-gvt-dev mailing list