From 61a669473f82cd5cac66146644b829b370c791ca Mon Sep 17 00:00:00 2001 From: Zhenyu Wang Date: Mon, 15 Jan 2018 16:36:12 +0800 Subject: [PATCH] drm/i915/gvt: cancel scheduler timer when no vGPU exists Git-commit: 61a669473f82cd5cac66146644b829b370c791ca Patch-mainline: v4.16-rc1 References: FATE#322643 bsc#1055900 Stop gvt scheduler timer if no vGPU exists, otherwise it keeps gvt service thread busy to handle request schedule event but no actual schedule activity required. Reviewed-by: Zhi Wang Signed-off-by: Zhenyu Wang Signed-off-by: Rodrigo Vivi Acked-by: Takashi Iwai --- drivers/gpu/drm/i915/gvt/sched_policy.c | 7 +++++++ 1 file changed, 7 insertions(+) --- a/drivers/gpu/drm/i915/gvt/sched_policy.c +++ b/drivers/gpu/drm/i915/gvt/sched_policy.c @@ -308,8 +308,15 @@ static int tbs_sched_init_vgpu(struct in static void tbs_sched_clean_vgpu(struct intel_vgpu *vgpu) { + struct intel_gvt *gvt = vgpu->gvt; + struct gvt_sched_data *sched_data = gvt->scheduler.sched_data; + kfree(vgpu->sched_data); vgpu->sched_data = NULL; + + /* this vgpu id has been removed */ + if (idr_is_empty(&gvt->vgpu_idr)) + hrtimer_cancel(&sched_data->timer); } static void tbs_sched_start_schedule(struct intel_vgpu *vgpu)