)]}'
{
  "log": [
    {
      "commit": "8cb75e0c4ec9786b81439761eac1d18d4a931af3",
      "tree": "9d13e6c3580a36cd76d1b3a96827795949519409",
      "parents": [
        "c9c8986847d2f4fc474c10ee08afa57e7474096d"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "peterz@infradead.org",
        "time": "Wed Nov 20 12:22:37 2013 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon Jan 13 17:38:55 2014 +0100"
      },
      "message": "sched/preempt: Fix up missed PREEMPT_NEED_RESCHED folding\n\nWith various drivers wanting to inject idle time; we get people\ncalling idle routines outside of the idle loop proper.\n\nTherefore we need to be extra careful about not missing\nTIF_NEED_RESCHED -\u003e PREEMPT_NEED_RESCHED propagations.\n\nWhile looking at this, I also realized there\u0027s a small window in the\nexisting idle loop where we can miss TIF_NEED_RESCHED; when it hits\nright after the tif_need_resched() test at the end of the loop but\nright before the need_resched() test at the start of the loop.\n\nSo move preempt_fold_need_resched() out of the loop where we\u0027re\nguaranteed to have TIF_NEED_RESCHED set.\n\nSigned-off-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLink: http://lkml.kernel.org/n/tip-x9jgh45oeayzajz2mjt0y7d6@git.kernel.org\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "f27dde8deef33c9e58027df11ceab2198601d6a6",
      "tree": "31793590541baf5b9998b5ca0cc459b757a7cbcf",
      "parents": [
        "4a2b4b222743bb07fedf985b884550f2ca067ea9"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "peterz@infradead.org",
        "time": "Wed Aug 14 14:55:31 2013 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Wed Sep 25 14:07:49 2013 +0200"
      },
      "message": "sched: Add NEED_RESCHED to the preempt_count\n\nIn order to combine the preemption and need_resched test we need to\nfold the need_resched information into the preempt_count value.\n\nSince the NEED_RESCHED flag is set across CPUs this needs to be an\natomic operation, however we very much want to avoid making\npreempt_count atomic, therefore we keep the existing TIF_NEED_RESCHED\ninfrastructure in place but at 3 sites test it and fold its value into\npreempt_count; namely:\n\n - resched_task() when setting TIF_NEED_RESCHED on the current task\n - scheduler_ipi() when resched_task() sets TIF_NEED_RESCHED on a\n                   remote task it follows it up with a reschedule IPI\n                   and we can modify the cpu local preempt_count from\n                   there.\n - cpu_idle_loop() for when resched_task() found tsk_is_polling().\n\nWe use an inverted bitmask to indicate need_resched so that a 0 means\nboth need_resched and !atomic.\n\nAlso remove the barrier() in preempt_enable() between\npreempt_enable_no_resched() and preempt_check_resched() to avoid\nhaving to reload the preemption value and allow the compiler to use\nthe flags of the previuos decrement. I couldn\u0027t come up with any sane\nreason for this barrier() to be there as preempt_enable_no_resched()\nalready has a barrier() before doing the decrement.\n\nSuggested-by: Ingo Molnar \u003cmingo@kernel.org\u003e\nSigned-off-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLink: http://lkml.kernel.org/n/tip-7a7m5qqbn5pmwnd4wko9u6da@git.kernel.org\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "ea8117478918a4734586d35ff530721b682425be",
      "tree": "ccbaaa51ffd91f34fc0a4f5c5dbad34452ddc354",
      "parents": [
        "3150398626466c6cc626732f60bc901d58f40677"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "peterz@infradead.org",
        "time": "Wed Sep 11 12:43:13 2013 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Wed Sep 25 13:53:10 2013 +0200"
      },
      "message": "sched, idle: Fix the idle polling state logic\n\nMike reported that commit 7d1a9417 (\"x86: Use generic idle loop\")\nregressed several workloads and caused excessive reschedule\ninterrupts.\n\nThe patch in question failed to notice that the x86 code had an\ninverted sense of the polling state versus the new generic code (x86:\ndefault polling, generic: default !polling).\n\nFix the two prominent x86 mwait based idle drivers and introduce a few\nnew generic polling helpers (fixing the wrong smp_mb__after_clear_bit\nusage).\n\nAlso switch the idle routines to using tif_need_resched() which is an\nimmediate TIF_NEED_RESCHED test as opposed to need_resched which will\nend up being slightly different.\n\nReported-by: Mike Galbraith \u003cbitbucket@online.de\u003e\nSigned-off-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: lenb@kernel.org\nCc: tglx@linutronix.de\nLink: http://lkml.kernel.org/n/tip-nc03imb0etuefmzybzj7sprf@git.kernel.org\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "29ce3785b22da47c49f4ef6e14b9014fa5dee261",
      "tree": "7280fe879b7a63a9e66d105ef31b4ad2e28ad99a",
      "parents": [
        "d7880812b3594d3c6dcbe3cfd71dabb17347d082"
      ],
      "author": {
        "name": "James Bottomley",
        "email": "JBottomley@Parallels.com",
        "time": "Wed May 08 14:05:34 2013 -0700"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Jun 14 23:01:05 2013 +0200"
      },
      "message": "idle: Enable interrupts in the weak arch_cpu_idle() implementation\n\nPARISC bootup triggers the warning at kernel/cpu/idle.c:96. That\u0027s\ncaused by the weak arch_cpu_idle() implementation, which is provided\nto avoid that architectures implement idle_poll over and over.\n\nThe switchover to polling mode happens in the first call of the weak\narch_cpu_idle() implementation, but that code fails to reenable\ninterrupts and therefor triggers the warning.\n\nFix this by enabling interrupts in the weak arch_cpu_idle() code.\n\n[ tglx: Made the changelog match the patch ]\n\nSigned-off-by: James Bottomley \u003cJBottomley@Parallels.com\u003e\nReviewed-by: Srivatsa S. Bhat \u003csrivatsa.bhat@linux.vnet.ibm.com\u003e\nLink: http://lkml.kernel.org/r/1371236142.2726.43.camel@dabdike\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "d7880812b3594d3c6dcbe3cfd71dabb17347d082",
      "tree": "87d72f75a691ac0d23776afcde0e9f35c09d8148",
      "parents": [
        "c7788792a5e7b0d5d7f96d0766b4cb6112d47d75"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Jun 10 16:52:03 2013 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Jun 11 22:04:47 2013 +0200"
      },
      "message": "idle: Add the stack canary init to cpu_startup_entry()\n\nMoving x86 to the generic idle implementation (commit 7d1a9417 \"x86:\nUse generic idle loop\") wreckaged the stack protector.\n\nI stupidly missed that boot_init_stack_canary() must be inlined from a\nfunction which never returns, but I put that call into\narch_cpu_idle_prepare() which of course returns.\n\nI pondered to play tricks with arch_cpu_idle_prepare() first, but then\nI noticed, that the other archs which have implemented the\nstackprotector (ARM and SH) do not initialize the canary for the\nnon-boot cpus.\n\nSo I decided to move the boot_init_stack_canary() call into\ncpu_startup_entry() ifdeffed with an CONFIG_X86 for now. This #ifdef\nis just a temporary measure as I don\u0027t want to inflict the\nboot_init_stack_canary() call on ARM and SH that late in the cycle.\n\nI\u0027ll queue a patch for 3.11 which removes the #ifdef if the ARM/SH\nmaintainers have no objection.\n\nReported-by: Wouter van Kesteren \u003cwoutershep@gmail.com\u003e\nCc: x86@kernel.org\nCc: Russell King \u003clinux@arm.linux.org.uk\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "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"
    }
  ]
}
