Merge branch 'timers/urgent' into timers/core
authorThomas Gleixner <tglx@linutronix.de>
Sun, 15 Jul 2012 08:24:53 +0000 (10:24 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Sun, 15 Jul 2012 08:24:53 +0000 (10:24 +0200)
Reason: Update to upstream changes to avoid further conflicts.
Fixup a trivial merge conflict in kernel/time/tick-sched.c

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
1  2 
kernel/time/tick-sched.c

@@@ -271,15 -271,50 +271,15 @@@ u64 get_cpu_iowait_time_us(int cpu, u6
  }
  EXPORT_SYMBOL_GPL(get_cpu_iowait_time_us);
  
 -static void tick_nohz_stop_sched_tick(struct tick_sched *ts)
 +static ktime_t tick_nohz_stop_sched_tick(struct tick_sched *ts,
 +                                       ktime_t now, int cpu)
  {
        unsigned long seq, last_jiffies, next_jiffies, delta_jiffies;
 -      ktime_t last_update, expires, now;
 +      ktime_t last_update, expires, ret = { .tv64 = 0 };
+       unsigned long rcu_delta_jiffies;
        struct clock_event_device *dev = __get_cpu_var(tick_cpu_device).evtdev;
        u64 time_delta;
 -      int cpu;
  
 -      cpu = smp_processor_id();
 -      ts = &per_cpu(tick_cpu_sched, cpu);
 -
 -      now = tick_nohz_start_idle(cpu, ts);
 -
 -      /*
 -       * If this cpu is offline and it is the one which updates
 -       * jiffies, then give up the assignment and let it be taken by
 -       * the cpu which runs the tick timer next. If we don't drop
 -       * this here the jiffies might be stale and do_timer() never
 -       * invoked.
 -       */
 -      if (unlikely(!cpu_online(cpu))) {
 -              if (cpu == tick_do_timer_cpu)
 -                      tick_do_timer_cpu = TICK_DO_TIMER_NONE;
 -      }
 -
 -      if (unlikely(ts->nohz_mode == NOHZ_MODE_INACTIVE))
 -              return;
 -
 -      if (need_resched())
 -              return;
 -
 -      if (unlikely(local_softirq_pending() && cpu_online(cpu))) {
 -              static int ratelimit;
 -
 -              if (ratelimit < 10) {
 -                      printk(KERN_ERR "NOHZ: local_softirq_pending %02x\n",
 -                             (unsigned int) local_softirq_pending());
 -                      ratelimit++;
 -              }
 -              return;
 -      }
--
 -      ts->idle_calls++;
        /* Read jiffies and the time when jiffies were updated last */
        do {
                seq = read_seqbegin(&xtime_lock);
                 */
                if (!ts->tick_stopped) {
                        select_nohz_load_balancer(1);
+                       calc_load_enter_idle();
  
 -                      ts->idle_tick = hrtimer_get_expires(&ts->sched_timer);
 +                      ts->last_tick = hrtimer_get_expires(&ts->sched_timer);
                        ts->tick_stopped = 1;
 -                      ts->idle_jiffies = last_jiffies;
                }
  
 -              ts->idle_sleeps++;
 -
 -              /* Mark expires */
 -              ts->idle_expires = expires;
 -
                /*
                 * If the expiration time == KTIME_MAX, then
                 * in this case we simply stop the tick timer.