mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 03:40:35 +09:00
ANDROID: sched: fix wrong truncation of walt_avg
The result of "__entry->walt_avg = (__entry->demand << 10)" will exceed the range of "unsigned int", which will be truncated and make the trace looks like as follows: UnityMain-4588 [004] 6029.645672: walt_update_history: 4588(UnityMain): runtime 9928307 samples 1 event 4 demand 9928307 walt 157 pelt 870 (hist: 9928307 9604307 8440077 87392 34144328) cpu 4 UnityMain-4588 [004] 6029.653658: walt_update_history: 4588(UnityMain): runtime 10000000 samples 1 event 4 demand 10000000 walt 165 pelt 886 (hist: 10000000 9955691 6549308 64000 34144328) cpu 4 Fix this by using a u64 type instead of unsgined int type and make the trace as below: UnityMain-4617 [004] 117.613558: walt_update_history: 4617(UnityMain): runtime 5770597 samples 1 event 4 demand 7038739 walt 720 pelt 680 (hist: 577059776800018904509 65596 156) cpu 4 UnityMain-4617 [004] 117.633560: walt_update_history: 4617(UnityMain): runtime 9911238 samples 1 event 4 demand 9911238 walt 1014 pelt 769 (hist: 9911238 577059776800010 1664188058) cpu 4 Signed-off-by: Ke Wang <ke.wang@spreadtrum.com> [AmitP: cherry-picked from aosp/android-3.18] Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
This commit is contained in:
@@ -1019,7 +1019,7 @@ TRACE_EVENT(walt_update_history,
|
||||
__field( int, samples )
|
||||
__field( int, evt )
|
||||
__field( u64, demand )
|
||||
__field(unsigned int, walt_avg )
|
||||
__field( u64, walt_avg )
|
||||
__field(unsigned int, pelt_avg )
|
||||
__array( u32, hist, RAVG_HIST_SIZE_MAX)
|
||||
__field( int, cpu )
|
||||
@@ -1040,7 +1040,7 @@ TRACE_EVENT(walt_update_history,
|
||||
),
|
||||
|
||||
TP_printk("%d (%s): runtime %u samples %d event %d demand %llu"
|
||||
" walt %u pelt %u (hist: %u %u %u %u %u) cpu %d",
|
||||
" walt %llu pelt %u (hist: %u %u %u %u %u) cpu %d",
|
||||
__entry->pid, __entry->comm,
|
||||
__entry->runtime, __entry->samples, __entry->evt,
|
||||
__entry->demand,
|
||||
|
||||
Reference in New Issue
Block a user