|
@@ -262,21 +262,21 @@ static __always_inline bool steal_account_process_tick(void)
|
|
|
#ifdef CONFIG_PARAVIRT
|
|
|
if (static_key_false(¶virt_steal_enabled)) {
|
|
|
u64 steal;
|
|
|
- cputime_t steal_ct;
|
|
|
+ unsigned long steal_jiffies;
|
|
|
|
|
|
steal = paravirt_steal_clock(smp_processor_id());
|
|
|
steal -= this_rq()->prev_steal_time;
|
|
|
|
|
|
/*
|
|
|
- * cputime_t may be less precise than nsecs (eg: if it's
|
|
|
- * based on jiffies). Lets cast the result to cputime
|
|
|
+ * steal is in nsecs but our caller is expecting steal
|
|
|
+ * time in jiffies. Lets cast the result to jiffies
|
|
|
* granularity and account the rest on the next rounds.
|
|
|
*/
|
|
|
- steal_ct = nsecs_to_cputime(steal);
|
|
|
- this_rq()->prev_steal_time += cputime_to_nsecs(steal_ct);
|
|
|
+ steal_jiffies = nsecs_to_jiffies(steal);
|
|
|
+ this_rq()->prev_steal_time += jiffies_to_nsecs(steal_jiffies);
|
|
|
|
|
|
- account_steal_time(steal_ct);
|
|
|
- return steal_ct;
|
|
|
+ account_steal_time(jiffies_to_cputime(steal_jiffies));
|
|
|
+ return steal_jiffies;
|
|
|
}
|
|
|
#endif
|
|
|
return false;
|