)]}'
{
  "log": [
    {
      "commit": "5e41d0d60a534d2a5dc9772600a58f44c8d12506",
      "tree": "d020ec1e72c338f3bf9dc4558ac3c82527a02384",
      "parents": [
        "31d9b3938c0459e5e9755ce0a98ac1e24eeff972"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sun Sep 16 15:36:43 2007 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@chaos.(none)",
        "time": "Sun Sep 16 15:36:43 2007 +0200"
      },
      "message": "clockevents: prevent stale tick update on offline cpu\n\nTaking a cpu offline removes the cpu from the online mask before the\nCPU_DEAD notification is done. The clock events layer does the cleanup\nof the dead CPU from the CPU_DEAD notifier chain. tick_do_timer_cpu is\nused to avoid xtime lock contention by assigning the task of jiffies\nxtime updates to one CPU. If a CPU is taken offline, then this\nassignment becomes stale. This went unnoticed because most of the time\nthe offline CPU went dead before the online CPU reached __cpu_die(),\nwhere the CPU_DEAD state is checked. In the case that the offline CPU did\nnot reach the DEAD state before we reach __cpu_die(), the code in there\ngoes to sleep for 100ms. Due to the stale time update assignment, the\nsystem is stuck forever.\n\nTake the assignment away when a cpu is not longer in the cpu_online_mask.\nWe do this in the last call to tick_nohz_stop_sched_tick() when the offline\nCPU is on the way to the final play_dead() idle entry.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n\n"
    },
    {
      "commit": "3704540b48295253bd9c87a5e7ff545f9d47a3b8",
      "tree": "081647bba6b901bfaa7e7216ed2f23c42ecee75d",
      "parents": [
        "5590a536c0bc403fc73908c66c1c88cbed735ecb"
      ],
      "author": {
        "name": "john stultz",
        "email": "johnstul@us.ibm.com",
        "time": "Sat Jul 21 04:37:35 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat Jul 21 17:49:15 2007 -0700"
      },
      "message": "tick management: spread timer interrupt\n\nAfter discussing w/ Thomas over IRC, it seems the issue is the sched tick\nfires on every cpu at the same time, causing extra lock contention.\n\nThis smaller change, adds an extra offset per cpu so the ticks don\u0027t line up.\nThis patch also drops the idle latency from 40us down to under 20us.\n\nSigned-off-by: john stultz \u003cjohnstul@us.ibm.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "eaad084bb0f3a6259e56400cd45d061dbf040600",
      "tree": "34a5f5c3e1a849b035510ee28d5aaffd42a36dcc",
      "parents": [
        "6e98ee75c3ab99db48ecc0615c2246dc193111a9"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue May 29 23:47:39 2007 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 29 18:11:10 2007 -0700"
      },
      "message": "NOHZ: prevent multiplication overflow - stop timer for huge timeouts\n\nget_next_timer_interrupt() returns a delta of (LONG_MAX \u003e 1) in case\nthere is no timer pending. On 64 bit machines this results in a\nmultiplication overflow in tick_nohz_stop_sched_tick().\n\nReported by: Dave Miller \u003cdavem@davemloft.net\u003e\n\nMake the return value a constant and limit the return value to a 32 bit\nvalue.\n\nWhen the max timeout value is returned, we can safely stop the tick\ntimer device. The max jiffies delta results in a 12 days timeout for\nHZ\u003d1000.\n\nIn the long term the get_next_timer_interrupt() code needs to be\nreworked to return ktime instead of jiffies, but we have to wait until\nthe last users of the original NO_IDLE_HZ code are converted.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "352823160613b65fdaa558be486720a71f75ed86",
      "tree": "772f0aa4c31c26f3c762baae41a288b72ce7dee7",
      "parents": [
        "43d4f961a87509b4ea5c1d6f02751aef360a632f"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed May 23 13:57:37 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 23 20:14:11 2007 -0700"
      },
      "message": "NOHZ: Rate limit the local softirq pending warning output\n\nThe warning in the NOHZ code, which triggers when a CPU goes idle with\nsoftirqs pending can fill up the logs quite quickly.  Rate limit the output\nuntil we found the root cause of that problem.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "46cb4b7c88fa5517f64b5bee42939ea3614cddcb",
      "tree": "429b8092394974ae787bf0cfaefe5c7b6a1da782",
      "parents": [
        "bdecea3a9282d529b54954f3f1e59877629baba1"
      ],
      "author": {
        "name": "Siddha, Suresh B",
        "email": "suresh.b.siddha@intel.com",
        "time": "Tue May 08 00:32:51 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:17 2007 -0700"
      },
      "message": "sched: dynticks idle load balancing\n\nFix the process idle load balancing in the presence of dynticks.  cpus for\nwhich ticks are stopped will sleep till the next event wakes it up.\nPotentially these sleeps can be for large durations and during which today,\nthere is no periodic idle load balancing being done.\n\nThis patch nominates an owner among the idle cpus, which does the idle load\nbalancing on behalf of the other idle cpus.  And once all the cpus are\ncompletely idle, then we can stop this idle load balancing too.  Checks added\nin fast path are minimized.  Whenever there are busy cpus in the system, there\nwill be an owner(idle cpu) doing the system wide idle load balancing.\n\nOpen items:\n1. Intelligent owner selection (like an idle core in a busy package).\n2. Merge with rcu\u0027s nohz_cpu_mask?\n\nSigned-off-by: Suresh Siddha \u003csuresh.b.siddha@intel.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d3ed782458f315c30ea679b919a2cc59f2b82565",
      "tree": "b87fffc87acf5632566a6384f5c8be8f5c2e03b2",
      "parents": [
        "d5d3b736e3264934ec832a657a9a434b65f3d51f"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue May 08 00:30:03 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:10 2007 -0700"
      },
      "message": "highres/dyntick: prevent xtime lock contention\n\nWhile the !highres/!dyntick code assigns the duty of the do_timer() call to\none specific CPU, this was dropped in the highres/dyntick part during\ndevelopment.\n\nSteven Rostedt discovered the xtime lock contention on highres/dyntick due\nto several CPUs trying to update jiffies.\n\nAdd the single CPU assignement back.  In the dyntick case this needs to be\nhandled carefully, as the CPU which has the do_timer() duty must drop the\nassignement and let it be grabbed by another CPU, which is active.\nOtherwise the do_timer() calls would not happen during the long sleep.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nAcked-by: Mark Lord \u003cmlord@pobox.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9e203bcc1051cac2a8b15c3ee9db4c0d05794abe",
      "tree": "f3c42ce033084c34a8a47c1d4f5d186ac8ab132f",
      "parents": [
        "9654640d0af8f2de40ff3807d3695109d3463f54"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Sat Feb 24 22:10:13 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Mon Feb 26 11:13:49 2007 -0800"
      },
      "message": "[TIME] tick-sched: Add missing asm/irq_regs.h include.\n\nAcked-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "bc5393a6c9c0e70b4b43fb2fb63e3315e9a15c8f",
      "tree": "7fe069bfde8bef8381bead946e42036e8a325e5a",
      "parents": [
        "6ba9b346e1e0eca65ec589d32de3a9fe32dc5de6"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Feb 19 18:12:05 2007 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Feb 19 14:18:43 2007 -0800"
      },
      "message": "[PATCH] NOHZ: Produce debug output instead of a BUG()\n\nThe BUG_ON() in tick_nohz_stop_sched_tick() triggers on some boxen.\nRemove the BUG_ON and print information about the pending softirq\nto allow better debugging of the problem.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6ba9b346e1e0eca65ec589d32de3a9fe32dc5de6",
      "tree": "393923cf8c563be65bb02a38153e387f6284ae55",
      "parents": [
        "2aa6eb313e57a8254b17e60b8bb5e0a2570d7776"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Feb 19 18:11:56 2007 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Feb 19 14:18:43 2007 -0800"
      },
      "message": "[PATCH] NOHZ: Fix RCU handling\n\nWhen a CPU is needed for RCU the tick has to continue even when it was\nstopped before.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "289f480af87e45f7a6de6ba9b4c061c2e259fe98",
      "tree": "1075cdb8656d7af12558ea2a3dee1fcd1d7a44a7",
      "parents": [
        "82f67cd9fca8c8762c15ba7ed0d5747588c1e221"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Feb 16 01:28:15 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 16 08:13:59 2007 -0800"
      },
      "message": "[PATCH] Add debugging feature /proc/timer_list\n\nadd /proc/timer_list, which prints all currently pending (high-res) timers,\nall clock-event sources and their parameters in a human-readable form.\n\nSample output:\n\nTimer List Version: v0.1\nHRTIMER_MAX_CLOCK_BASES: 2\nnow at 4246046273872 nsecs\n\ncpu: 0\n clock 0:\n  .index:      0\n  .resolution: 1 nsecs\n  .get_time:   ktime_get_real\n  .offset:     1273998312645738432 nsecs\nactive timers:\n clock 1:\n  .index:      1\n  .resolution: 1 nsecs\n  .get_time:   ktime_get\n  .offset:     0 nsecs\nactive timers:\n #0: \u003cf5a90ec8\u003e, hrtimer_sched_tick, hrtimer_stop_sched_tick, swapper/0\n # expires at 4246432689566 nsecs [in 386415694 nsecs]\n #1: \u003cf5a90ec8\u003e, hrtimer_wakeup, do_nanosleep, pcscd/2050\n # expires at 4247018194689 nsecs [in 971920817 nsecs]\n #2: \u003cf5a90ec8\u003e, hrtimer_wakeup, do_nanosleep, irqbalance/1909\n # expires at 4247351358392 nsecs [in 1305084520 nsecs]\n #3: \u003cf5a90ec8\u003e, hrtimer_wakeup, do_nanosleep, crond/2157\n # expires at 4249097614968 nsecs [in 3051341096 nsecs]\n #4: \u003cf5a90ec8\u003e, it_real_fn, do_setitimer, syslogd/1888\n # expires at 4251329900926 nsecs [in 5283627054 nsecs]\n  .expires_next   : 4246432689566 nsecs\n  .hres_active    : 1\n  .check_clocks   : 0\n  .nr_events      : 31306\n  .idle_tick      : 4246020791890 nsecs\n  .tick_stopped   : 1\n  .idle_jiffies   : 986504\n  .idle_calls     : 40700\n  .idle_sleeps    : 36014\n  .idle_entrytime : 4246019418883 nsecs\n  .idle_sleeptime : 4178181972709 nsecs\n\ncpu: 1\n clock 0:\n  .index:      0\n  .resolution: 1 nsecs\n  .get_time:   ktime_get_real\n  .offset:     1273998312645738432 nsecs\nactive timers:\n clock 1:\n  .index:      1\n  .resolution: 1 nsecs\n  .get_time:   ktime_get\n  .offset:     0 nsecs\nactive timers:\n #0: \u003cf5a90ec8\u003e, hrtimer_sched_tick, hrtimer_restart_sched_tick, swapper/0\n # expires at 4246050084568 nsecs [in 3810696 nsecs]\n #1: \u003cf5a90ec8\u003e, hrtimer_wakeup, do_nanosleep, atd/2227\n # expires at 4261010635003 nsecs [in 14964361131 nsecs]\n #2: \u003cf5a90ec8\u003e, hrtimer_wakeup, do_nanosleep, smartd/2332\n # expires at 5469485798970 nsecs [in 1223439525098 nsecs]\n  .expires_next   : 4246050084568 nsecs\n  .hres_active    : 1\n  .check_clocks   : 0\n  .nr_events      : 24043\n  .idle_tick      : 4246046084568 nsecs\n  .tick_stopped   : 0\n  .idle_jiffies   : 986510\n  .idle_calls     : 26360\n  .idle_sleeps    : 22551\n  .idle_entrytime : 4246043874339 nsecs\n  .idle_sleeptime : 4170763761184 nsecs\n\ntick_broadcast_mask: 00000003\nevent_broadcast_mask: 00000001\n\nCPU#0\u0027s local event device:\n\nClock Event Device: lapic\n capabilities:   0000000e\n max_delta_ns:   807385544\n min_delta_ns:   1443\n mult:           44624025\n shift:          32\n set_next_event: lapic_next_event\n set_mode:       lapic_timer_setup\n event_handler:  hrtimer_interrupt\n  .installed:  1\n  .expires:    4246432689566 nsecs\n\nCPU#1\u0027s local event device:\n\nClock Event Device: lapic\n capabilities:   0000000e\n max_delta_ns:   807385544\n min_delta_ns:   1443\n mult:           44624025\n shift:          32\n set_next_event: lapic_next_event\n set_mode:       lapic_timer_setup\n event_handler:  hrtimer_interrupt\n  .installed:  1\n  .expires:    4246050084568 nsecs\n\nClock Event Device: hpet\n capabilities:   00000007\n max_delta_ns:   2147483647\n min_delta_ns:   3352\n mult:           61496110\n shift:          32\n set_next_event: hpet_next_event\n set_mode:       hpet_set_mode\n event_handler:  handle_nextevt_broadcast\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Roman Zippel \u003czippel@linux-m68k.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "79bf2bb335b85db25d27421c798595a2fa2a0e82",
      "tree": "550ec2654ae1dd65b871de7fe9c890108c6e86d8",
      "parents": [
        "f8381cba04ba8173fd5a2b8e5cd8b3290ee13a98"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Feb 16 01:28:03 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 16 08:13:59 2007 -0800"
      },
      "message": "[PATCH] tick-management: dyntick / highres functionality\n\nWith Ingo Molnar \u003cmingo@elte.hu\u003e\n\nAdd functions to provide dynamic ticks and high resolution timers.  The code\nwhich keeps track of jiffies and handles the long idle periods is shared\nbetween tick based and high resolution timer based dynticks.  The dyntick\nfunctionality can be disabled on the kernel commandline.  Provide also the\ninfrastructure to support high resolution timers.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Roman Zippel \u003czippel@linux-m68k.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ]
}
