]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
authorLinus Torvalds <torvalds@linux-foundation.org>
Sun, 31 Dec 2017 20:30:34 +0000 (12:30 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 31 Dec 2017 20:30:34 +0000 (12:30 -0800)
Pull timer fixes from Thomas Gleixner:
 "A pile of fixes for long standing issues with the timer wheel and the
  NOHZ code:

   - Prevent timer base confusion accross the nohz switch, which can
     cause unlocked access and data corruption

   - Reinitialize the stale base clock on cpu hotplug to prevent subtle
     side effects including rollovers on 32bit

   - Prevent an interrupt storm when the timer softirq is already
     pending caused by tick_nohz_stop_sched_tick()

   - Move the timer start tracepoint to a place where it actually makes
     sense

   - Add documentation to timerqueue functions as they caused confusion
     several times now"

* 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  timerqueue: Document return values of timerqueue_add/del()
  timers: Invoke timer_start_debug() where it makes sense
  nohz: Prevent a timer interrupt storm in tick_nohz_stop_sched_tick()
  timers: Reinitialize per cpu bases on hotplug
  timers: Use deferrable base independent of base::nohz_active

1  2 
kernel/cpu.c

diff --combined kernel/cpu.c
index 3d002a6f216e1e23ff1a8ab32c58cc3854a419e1,97858477e586fb33c2d23374dee2fe4dcc6fd299..53f7dc65f9a3b917c1c347834257cf26521eff95
@@@ -80,19 -80,19 +80,19 @@@ static struct lockdep_map cpuhp_state_d
        STATIC_LOCKDEP_MAP_INIT("cpuhp_state-down", &cpuhp_state_down_map);
  
  
 -static void inline cpuhp_lock_acquire(bool bringup)
 +static inline void cpuhp_lock_acquire(bool bringup)
  {
        lock_map_acquire(bringup ? &cpuhp_state_up_map : &cpuhp_state_down_map);
  }
  
 -static void inline cpuhp_lock_release(bool bringup)
 +static inline void cpuhp_lock_release(bool bringup)
  {
        lock_map_release(bringup ? &cpuhp_state_up_map : &cpuhp_state_down_map);
  }
  #else
  
 -static void inline cpuhp_lock_acquire(bool bringup) { }
 -static void inline cpuhp_lock_release(bool bringup) { }
 +static inline void cpuhp_lock_acquire(bool bringup) { }
 +static inline void cpuhp_lock_release(bool bringup) { }
  
  #endif
  
@@@ -1277,9 -1277,9 +1277,9 @@@ static struct cpuhp_step cpuhp_bp_state
         * before blk_mq_queue_reinit_notify() from notify_dead(),
         * otherwise a RCU stall occurs.
         */
-       [CPUHP_TIMERS_DEAD] = {
+       [CPUHP_TIMERS_PREPARE] = {
                .name                   = "timers:dead",
-               .startup.single         = NULL,
+               .startup.single         = timers_prepare_cpu,
                .teardown.single        = timers_dead_cpu,
        },
        /* Kicks the plugged cpu into life */