Messages in this thread | | | Date | Mon, 28 Jul 2014 12:19:22 -0700 | From | Stephen Boyd <> | Subject | Re: [PATCH RFC v2] PM / sleep: Fix racing timers |
| |
On 07/25/14 14:06, Soren Brinkmann wrote: > On platforms that do not power off during suspend, successfully entering > suspend races with timers. > > The race happening in a couple of location is: > > 1. disable IRQs (e.g. arch_suspend_disable_irqs()) > ... > 2. syscore_suspend() > -> timekeeping_suspend() > -> clockevents_notify(SUSPEND) > -> tick_suspend() (timers are turned off here) > ... > 3. wfi (wait for wake-IRQ here) > > Between steps 1 and 2 the timers can still generate interrupts that are > not handled and stay pending until step 3. That pending IRQ causes an > immediate - spurious - wake. > > The solution is to move the clockevents suspend/resume notification > out of the syscore_suspend step and explictly call them at the appropriate > time in the suspend/hibernation paths. I.e. timers are suspend _before_ > IRQs get disabled. And accordingly in the resume path. > > Signed-off-by: Soren Brinkmann <soren.brinkmann@xilinx.com>
Do we know which timer_list or hrtimer wants to run while entering suspend? I'd suspect the scheduler tick but perhaps we just forgot to cancel some timer during suspend?
-- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation
| |