)]}'
{
  "log": [
    {
      "commit": "b47430d3adbedbfdb5979ba4874f5dadf94f16b1",
      "tree": "d08e2c0e3de3b5beab6bed07045be3e2a61271c3",
      "parents": [
        "485cf5dac2966b93ef2b6211cf2fd42d66c823e6"
      ],
      "author": {
        "name": "Srivatsa S. Bhat",
        "email": "srivatsa.bhat@linux.vnet.ibm.com",
        "time": "Tue May 14 04:01:27 2013 +0530"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue May 14 17:43:29 2013 +0200"
      },
      "message": "rcu/idle: Wrap cpu-idle poll mode within rcu_idle_enter/exit\n\nBjørn Mork reported the following warning when running powertop.\n\n[   49.289034] ------------[ cut here ]------------\n[   49.289055] WARNING: at kernel/rcutree.c:502 rcu_eqs_exit_common.isra.48+0x3d/0x125()\n[   49.289244] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 3.10.0-bisect-rcu-warn+ #107\n[   49.289251]  ffffffff8157d8c8 ffffffff81801e28 ffffffff8137e4e3 ffffffff81801e68\n[   49.289260]  ffffffff8103094f ffffffff81801e68 0000000000000000 ffff88023afcd9b0\n[   49.289268]  0000000000000000 0140000000000000 ffff88023bee7700 ffffffff81801e78\n[   49.289276] Call Trace:\n[   49.289285]  [\u003cffffffff8137e4e3\u003e] dump_stack+0x19/0x1b\n[   49.289293]  [\u003cffffffff8103094f\u003e] warn_slowpath_common+0x62/0x7b\n[   49.289300]  [\u003cffffffff8103097d\u003e] warn_slowpath_null+0x15/0x17\n[   49.289306]  [\u003cffffffff810a9006\u003e] rcu_eqs_exit_common.isra.48+0x3d/0x125\n[   49.289314]  [\u003cffffffff81079b49\u003e] ? trace_hardirqs_off_caller+0x37/0xa6\n[   49.289320]  [\u003cffffffff810a9692\u003e] rcu_idle_exit+0x85/0xa8\n[   49.289327]  [\u003cffffffff8107076e\u003e] trace_cpu_idle_rcuidle+0xae/0xff\n[   49.289334]  [\u003cffffffff810708b1\u003e] cpu_startup_entry+0x72/0x115\n[   49.289341]  [\u003cffffffff813689e5\u003e] rest_init+0x149/0x150\n[   49.289347]  [\u003cffffffff8136889c\u003e] ? csum_partial_copy_generic+0x16c/0x16c\n[   49.289355]  [\u003cffffffff81a82d34\u003e] start_kernel+0x3f0/0x3fd\n[   49.289362]  [\u003cffffffff81a8274c\u003e] ? repair_env_string+0x5a/0x5a\n[   49.289368]  [\u003cffffffff81a82481\u003e] x86_64_start_reservations+0x2a/0x2c\n[   49.289375]  [\u003cffffffff81a82550\u003e] x86_64_start_kernel+0xcd/0xd1\n[   49.289379] ---[ end trace 07a1cc95e29e9036 ]---\n\nThe warning is that \u0027rdtp-\u003edynticks\u0027 has an unexpected value, which roughly\ntranslates to - the calls to rcu_idle_enter() and rcu_idle_exit() were not\nmade in the correct order, or otherwise messed up.\n\nAnd Bjørn\u0027s painstaking debugging indicated that this happens when the idle\nloop enters the poll mode. Looking at the poll function cpu_idle_poll(), and\nthe implementation of trace_cpu_idle_rcuidle(), the problem becomes very clear:\ncpu_idle_poll() lacks calls to rcu_idle_enter/exit(), and trace_cpu_idle_rcuidle()\ncalls them in the reverse order - first rcu_idle_exit(), and then rcu_idle_enter().\nHence the even/odd alternative sequencing of rdtp-\u003edynticks goes for a toss.\n\nAnd powertop readily triggers this because powertop uses the idle-tracing\ninfrastructure extensively.\n\nSo, to fix this, wrap the code in cpu_idle_poll() within rcu_idle_enter/exit(),\nso that it blends properly with the calls inside trace_cpu_idle_rcuidle() and\nthus get the function ordering right.\n\nReported-and-tested-by: Bjørn Mork \u003cbjorn@mork.no\u003e\nCc: Paul McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Dipankar Sarma \u003cdipankar@in.ibm.com\u003e\nSigned-off-by: Srivatsa S. Bhat \u003csrivatsa.bhat@linux.vnet.ibm.com\u003e\nLink: http://lkml.kernel.org/r/519169BF.4080208@linux.vnet.ibm.com\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "ab86e974f04b1cd827a9c7c35273834ebcd9ab38",
      "tree": "41df33732d2700d6d57d1e7ab3f430942f09ffcc",
      "parents": [
        "8700c95adb033843fc163d112b9d21d4fda78018",
        "6f7a05d7018de222e40ca003721037a530979974"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 30 08:15:40 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 30 08:15:40 2013 -0700"
      },
      "message": "Merge branch \u0027timers-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull core timer updates from Ingo Molnar:\n \"The main changes in this cycle\u0027s merge are:\n\n   - Implement shadow timekeeper to shorten in kernel reader side\n     blocking, by Thomas Gleixner.\n\n   - Posix timers enhancements by Pavel Emelyanov:\n\n   - allocate timer ID per process, so that exact timer ID allocations\n     can be re-created be checkpoint/restore code.\n\n   - debuggability and tooling (/proc/PID/timers, etc.) improvements.\n\n   - suspend/resume enhancements by Feng Tang: on certain new Intel Atom\n     processors (Penwell and Cloverview), there is a feature that the\n     TSC won\u0027t stop in S3 state, so the TSC value won\u0027t be reset to 0\n     after resume.  This can be taken advantage of by the generic via\n     the CLOCK_SOURCE_SUSPEND_NONSTOP flag: instead of using the RTC to\n     recover/approximate sleep time, the main (and precise) clocksource\n     can be used.\n\n   - Fix /proc/timer_list for 4096 CPUs by Nathan Zimmer: on so many\n     CPUs the file goes beyond 4MB of size and thus the current\n     simplistic seqfile approach fails.  Convert /proc/timer_list to a\n     proper seq_file with its own iterator.\n\n   - Cleanups and refactorings of the core timekeeping code by John\n     Stultz.\n\n   - International Atomic Clock time is managed by the NTP code\n     internally currently but not exposed externally.  Separate the TAI\n     code out and add CLOCK_TAI support and TAI support to the hrtimer\n     and posix-timer code, by John Stultz.\n\n   - Add deep idle support enhacement to the broadcast clockevents core\n     timer code, by Daniel Lezcano: add an opt-in CLOCK_EVT_FEAT_DYNIRQ\n     clockevents feature (which will be utilized by future clockevents\n     driver updates), which allows the use of IRQ affinities to avoid\n     spurious wakeups of idle CPUs - the right CPU with an expiring\n     timer will be woken.\n\n   - Add new ARM bcm281xx clocksource driver, by Christian Daudt\n\n   - ... various other fixes and cleanups\"\n\n* \u0027timers-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (52 commits)\n  clockevents: Set dummy handler on CPU_DEAD shutdown\n  timekeeping: Update tk-\u003ecycle_last in resume\n  posix-timers: Remove unused variable\n  clockevents: Switch into oneshot mode even if broadcast registered late\n  timer_list: Convert timer list to be a proper seq_file\n  timer_list: Split timer_list_show_tickdevices\n  posix-timers: Show sigevent info in proc file\n  posix-timers: Introduce /proc/PID/timers file\n  posix timers: Allocate timer id per process (v2)\n  timekeeping: Make sure to notify hrtimers when TAI offset changes\n  hrtimer: Fix ktime_add_ns() overflow on 32bit architectures\n  hrtimer: Add expiry time overflow check in hrtimer_interrupt\n  timekeeping: Shorten seq_count region\n  timekeeping: Implement a shadow timekeeper\n  timekeeping: Delay update of clock-\u003ecycle_last\n  timekeeping: Store cycle_last value in timekeeper struct as well\n  ntp: Remove ntp_lock, using the timekeeping locks to protect ntp state\n  timekeeping: Simplify tai updating from do_adjtimex\n  timekeeping: Hold timekeepering locks in do_adjtimex and hardpps\n  timekeeping: Move ADJ_SETOFFSET to top level do_adjtimex()\n  ...\n"
    },
    {
      "commit": "d190e8195b90bc1e65c494fe08e54e9e581bfd16",
      "tree": "c605d086deeec31a94fb982779b54c15c2be876f",
      "parents": [
        "8198c1696a2cd15d436ade172bfd8085f5f818d3"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Apr 17 10:33:13 2013 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Apr 17 10:39:38 2013 +0200"
      },
      "message": "idle: Remove GENERIC_IDLE_LOOP config switch\n\nAll archs are converted over. Remove the config switch and the\nfallback code.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "d166991234347215dc23fc9dc15a63a83a1a54e1",
      "tree": "5ca0351d7271b7591ab2a73bcad127cf8944ad63",
      "parents": [
        "a1a04ec3c7c27a682473fd9beb2c996316a64649"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Mar 21 22:49:35 2013 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Apr 08 17:39:23 2013 +0200"
      },
      "message": "idle: Implement generic idle function\n\nAll idle functions in arch/* are more or less the same, plus minus a\nfew bugs and extra instrumentation, tickless support and other\noptional items.\n\nImplement a generic idle function which resembles the functionality\nfound in arch/. Provide weak arch_cpu_idle_* functions which can be\noverridden by the architecture code if needed.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Paul McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nReviewed-by: Cc: Srivatsa S. Bhat \u003csrivatsa.bhat@linux.vnet.ibm.com\u003e\nCc: Magnus Damm \u003cmagnus.damm@gmail.com\u003e\nLink: http://lkml.kernel.org/r/20130321215233.646635455@linutronix.de\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "a1a04ec3c7c27a682473fd9beb2c996316a64649",
      "tree": "9075a4b4c001f81283b2a7d5c1668dee134ec81d",
      "parents": [
        "3a98f871ecaf44806e188184332c3fec27c8f08c"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Mar 21 22:49:34 2013 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Apr 08 17:39:23 2013 +0200"
      },
      "message": "idle: Provide a generic entry point for the idle code\n\nFor now this calls cpu_idle(), but in the long run we want to move the\ncpu bringup code to the core and therefor we add a state argument.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Paul McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nReviewed-by: Cc: Srivatsa S. Bhat \u003csrivatsa.bhat@linux.vnet.ibm.com\u003e\nCc: Magnus Damm \u003cmagnus.damm@gmail.com\u003e\nLink: http://lkml.kernel.org/r/20130321215233.583190032@linutronix.de\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    }
  ]
}
