arch_timer: add error handling when the MPM global timer is cleared
authorChris Redpath <chris.redpath@arm.com>
Mon, 25 Jul 2016 14:13:58 +0000 (15:13 +0100)
committerAmit Pundir <amit.pundir@linaro.org>
Wed, 14 Sep 2016 09:32:22 +0000 (15:02 +0530)
Bug: 29000863
Signed-off-by: albert.zl_huang <albert.zl_huang@htc.com>
Change-Id: I2b5a28b0a9edb31bdaa1ca2310397dd2f36f6c23

Updated to use arch_timer_read_counter() as arch_counter_get_cntvct
doesn't exist in this kernel.

Signed-off-by: Chris Redpath <chris.redpath@arm.com>
kernel/sched/walt.c

index b9ae8d5c4393ada4a0355ea1fdbbbdec81a6c38d..d9d09914ce30f368d1beafe37e0ae5bcfbbbbc2a 100644 (file)
@@ -185,7 +185,14 @@ update_window_start(struct rq *rq, u64 wallclock)
        int nr_windows;
 
        delta = wallclock - rq->window_start;
-       BUG_ON(delta < 0);
+       /* If the MPM global timer is cleared, set delta as 0 to avoid kernel BUG happening */
+       if (delta < 0) {
+               if (arch_timer_read_counter() == 0)
+                       delta = 0;
+               else
+                       BUG_ON(1);
+       }
+
        if (delta < walt_ravg_window)
                return;