[PATCH Precise SRU] tick: Fix the spurious broadcast timer ticks after resume
Tim Gardner
tim.gardner at canonical.com
Fri Oct 12 18:32:53 UTC 2012
From: Suresh Siddha <suresh.b.siddha at intel.com>
BugLink: http://bugs.launchpad.net/bugs/1065076
During resume, tick_resume_broadcast() programs the broadcast timer in
oneshot mode unconditionally. On the platforms where broadcast timer
is not really required, this will generate spurious broadcast timer
ticks upon resume. For example, on the always running apic timer
platforms with HPET, I see spurious hpet tick once every ~5minutes
(which is the 32-bit hpet counter wraparound time).
Similar to boot time, during resume make the oneshot mode setting of
the broadcast clock event device conditional on the state of active
broadcast users.
Signed-off-by: Suresh Siddha <suresh.b.siddha at intel.com>
Tested-by: Santosh Shilimkar <santosh.shilimkar at ti.com>
Tested-by: svenjoac at gmx.de
Cc: torvalds at linux-foundation.org
Cc: rjw at sisk.pl
Link: http://lkml.kernel.org/r/1334802459.28674.209.camel@sbsiddha-desk.sc.intel.com
Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
(cherry picked from commit a6371f80230eaaafd7eef7efeedaa9509bdc982d)
Signed-off-by: Tim Gardner <tim.gardner at canonical.com>
---
kernel/time/tick-broadcast.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c
index fd4a7b1..f61d678 100644
--- a/kernel/time/tick-broadcast.c
+++ b/kernel/time/tick-broadcast.c
@@ -346,7 +346,8 @@ int tick_resume_broadcast(void)
tick_get_broadcast_mask());
break;
case TICKDEV_MODE_ONESHOT:
- broadcast = tick_resume_broadcast_oneshot(bc);
+ if (!cpumask_empty(tick_get_broadcast_mask()))
+ broadcast = tick_resume_broadcast_oneshot(bc);
break;
}
}
--
1.7.9.5
More information about the kernel-team
mailing list