]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - ti-linux-kernel/ti-linux-kernel-next.git/commitdiff
Merge tag 'v4.4.109' into v4.4-rt
authorSteven Rostedt (VMware) <rostedt@goodmis.org>
Fri, 5 Jan 2018 21:14:00 +0000 (16:14 -0500)
committerSteven Rostedt (VMware) <rostedt@goodmis.org>
Fri, 5 Jan 2018 21:14:00 +0000 (16:14 -0500)
This is the 4.4.109 stable release

1  2 
Documentation/kernel-parameters.txt
Makefile
arch/x86/Kconfig
arch/x86/kernel/reboot.c
arch/x86/kvm/x86.c
kernel/time/tick-sched.c
kernel/trace/trace.c
net/core/skbuff.c
net/ipv4/tcp_ipv4.c

Simple merge
diff --cc Makefile
Simple merge
Simple merge
Simple merge
Simple merge
index d536824cbd369e8b6634ca8e529800a5d66c2bb6,e5d228f7224c91870805cdcf8561b3a3b4360661..45e9456da50fae210628b64b005e13c95c535d9a
@@@ -589,14 -583,24 +594,24 @@@ static ktime_t tick_nohz_stop_sched_tic
  
        /* Read jiffies and the time when jiffies were updated last */
        do {
 -              seq = read_seqbegin(&jiffies_lock);
 +              seq = read_seqcount_begin(&jiffies_seq);
                basemono = last_jiffies_update.tv64;
                basejiff = jiffies;
 -      } while (read_seqretry(&jiffies_lock, seq));
 +      } while (read_seqcount_retry(&jiffies_seq, seq));
        ts->last_jiffies = basejiff;
  
-       if (rcu_needs_cpu(basemono, &next_rcu) ||
-           arch_needs_cpu() || irq_work_needs_cpu()) {
+       /*
+        * Keep the periodic tick, when RCU, architecture or irq_work
+        * requests it.
+        * Aside of that check whether the local timer softirq is
+        * pending. If so its a bad idea to call get_next_timer_interrupt()
+        * because there is an already expired timer, so it will request
+        * immeditate expiry, which rearms the hardware timer with a
+        * minimal delta which brings us back to this place
+        * immediately. Lather, rinse and repeat...
+        */
+       if (rcu_needs_cpu(basemono, &next_rcu) || arch_needs_cpu() ||
+           irq_work_needs_cpu() || local_timer_softirq_pending()) {
                next_tick = basemono + TICK_NSEC;
        } else {
                /*
Simple merge
Simple merge
Simple merge