diff --git a/drivers/gpu/drm/i915/gt/intel_gt.c b/drivers/gpu/drm/i915/gt/intel_gt.c index f2440113fdf86dcd93eb7405f920bd2383ce92fc..898662c158ad2892e29c71b8065db8938baffb53 100644 --- a/drivers/gpu/drm/i915/gt/intel_gt.c +++ b/drivers/gpu/drm/i915/gt/intel_gt.c @@ -26,6 +26,8 @@ void intel_gt_init_early(struct intel_gt *gt, struct drm_i915_private *i915) intel_gt_init_reset(gt); intel_gt_init_requests(gt); intel_gt_pm_init_early(gt); + + intel_rps_init_early(>->rps); intel_uc_init_early(>->uc); } diff --git a/drivers/gpu/drm/i915/gt/intel_rps.c b/drivers/gpu/drm/i915/gt/intel_rps.c index f6de19456c54ef11ee377cfd584764f7820441ba..20d6ee148afccf17c3fbdae94fd86f293b546d13 100644 --- a/drivers/gpu/drm/i915/gt/intel_rps.c +++ b/drivers/gpu/drm/i915/gt/intel_rps.c @@ -641,9 +641,6 @@ static void gen6_rps_set_thresholds(struct intel_rps *rps, u8 val) void intel_rps_mark_interactive(struct intel_rps *rps, bool interactive) { - if (!rps->enabled) - return; - mutex_lock(&rps->power.mutex); if (interactive) { if (!rps->power.interactive++ && rps->active) @@ -1609,16 +1606,19 @@ void gen5_rps_irq_handler(struct intel_rps *rps) spin_unlock(&mchdev_lock); } -void intel_rps_init(struct intel_rps *rps) +void intel_rps_init_early(struct intel_rps *rps) { - struct drm_i915_private *i915 = rps_to_i915(rps); - mutex_init(&rps->lock); mutex_init(&rps->power.mutex); INIT_WORK(&rps->work, rps_work); atomic_set(&rps->num_waiters, 0); +} + +void intel_rps_init(struct intel_rps *rps) +{ + struct drm_i915_private *i915 = rps_to_i915(rps); if (IS_CHERRYVIEW(i915)) chv_rps_init(rps); diff --git a/drivers/gpu/drm/i915/gt/intel_rps.h b/drivers/gpu/drm/i915/gt/intel_rps.h index 997a4b4e02078b9d3023edee0facb0002e38f724..9518c66c9792029154bfbd74a8036a1536cadc1f 100644 --- a/drivers/gpu/drm/i915/gt/intel_rps.h +++ b/drivers/gpu/drm/i915/gt/intel_rps.h @@ -11,6 +11,7 @@ struct i915_request; +void intel_rps_init_early(struct intel_rps *rps); void intel_rps_init(struct intel_rps *rps); void intel_rps_driver_register(struct intel_rps *rps);