在 2020/11/25 20:19, Tejun Heo 写道:
Hello,
@@ -2225,6 +2207,25 @@ static void ioc_timer_fn(struct timer_list *timer)
                     time_before64(vtime, now.vnow - ioc->margins.low))) {
                        u32 hwa, old_hwi, hwm, new_hwi;
+ if (vdone != vtime) {
+                               u64 inflight_us = DIV64_U64_ROUND_UP(
+                                       cost_to_abs_cost(vtime - vdone, 
hw_inuse),
+                                       ioc->vtime_base_rate);
+
+                               usage_us = max(usage_us, inflight_us);
+                       }
+
+                       /* convert to hweight based usage ratio */
+                       if (time_after64(iocg->activated_at, ioc->period_at))
+                               usage_dur = max_t(u64, now.now - 
iocg->activated_at, 1);
+                       else
+                               usage_dur = max_t(u64, now.now - 
ioc->period_at, 1);
+
+                       usage = clamp_t(u32,
+                               DIV64_U64_ROUND_UP(usage_us * WEIGHT_ONE,
+                                                  usage_dur),
+                               1, WEIGHT_ONE);

Can you please move the variable declarations inside the block together with
the code?

Yes, sure. Will do in next version. Thanks.

Reply via email to