Skip to content
  • John Stultz's avatar
    alarmtimer: Use hrtimer per-alarm instead of per-base · dae373be
    John Stultz authored
    
    
    Arve Hjønnevåg reported numerous crashes from the
    "BUG_ON(timer->state != HRTIMER_STATE_CALLBACK)" check
    in __run_hrtimer after it called alarmtimer_fired.
    
    It ends up the alarmtimer code was not properly handling
    possible failures of hrtimer_try_to_cancel, and because
    these faulres occur when the underlying base hrtimer is
    being run, this limits the ability to properly handle
    modifications to any alarmtimers on that base.
    
    Because much of the logic duplicates the hrtimer logic,
    it seems that we might as well have a per-alarmtimer
    hrtimer, and avoid the extra complextity of trying to
    multiplex many alarmtimers off of one hrtimer.
    
    Thus this patch moves the hrtimer to the alarm structure
    and simplifies the management logic.
    
    Changelog:
    v2:
    * Includes a fix for double alarm_start calls found by
      Arve
    
    Cc: Arve Hjønnevåg <arve@android.com>
    Cc: Colin Cross <ccross@android.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Reported-by: default avatarArve Hjønnevåg <arve@android.com>
    Tested-by: default avatarArve Hjønnevåg <arve@android.com>
    Signed-off-by: default avatarJohn Stultz <john.stultz@linaro.org>
    dae373be