)]}'
{
  "log": [
    {
      "commit": "416eb33cd60ef405e2860a186364e57bcb2d89f6",
      "tree": "c8c67e399b99246ce47a411b3518d4365f139606",
      "parents": [
        "98ad1cc14a5c4fd658f9d72c6ba5c86dfd3ce0d5"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri Oct 07 16:31:02 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Dec 11 10:31:38 2011 -0800"
      },
      "message": "rcu: Fix early call to rcu_idle_enter()\n\nOn the irq exit path, tick_nohz_irq_exit()\nmay raise a softirq, which action leads to the wake up\npath and select_task_rq_fair() that makes use of rcu\nto iterate the domains.\n\nThis is an illegal use of RCU because we may be in RCU\nextended quiescent state if we interrupted an RCU-idle\nwindow in the idle loop:\n\n[  132.978883] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n[  132.978883] [ INFO: suspicious RCU usage. ]\n[  132.978883] -------------------------------\n[  132.978883] kernel/sched_fair.c:1707 suspicious rcu_dereference_check() usage!\n[  132.978883]\n[  132.978883] other info that might help us debug this:\n[  132.978883]\n[  132.978883]\n[  132.978883] rcu_scheduler_active \u003d 1, debug_locks \u003d 0\n[  132.978883] RCU used illegally from extended quiescent state!\n[  132.978883] 2 locks held by swapper/0:\n[  132.978883]  #0:  (\u0026p-\u003epi_lock){-.-.-.}, at: [\u003cffffffff8105a729\u003e] try_to_wake_up+0x39/0x2f0\n[  132.978883]  #1:  (rcu_read_lock){.+.+..}, at: [\u003cffffffff8105556a\u003e] select_task_rq_fair+0x6a/0xec0\n[  132.978883]\n[  132.978883] stack backtrace:\n[  132.978883] Pid: 0, comm: swapper Tainted: G        W   3.0.0+ #178\n[  132.978883] Call Trace:\n[  132.978883]  \u003cIRQ\u003e  [\u003cffffffff810a01f6\u003e] lockdep_rcu_suspicious+0xe6/0x100\n[  132.978883]  [\u003cffffffff81055c49\u003e] select_task_rq_fair+0x749/0xec0\n[  132.978883]  [\u003cffffffff8105556a\u003e] ? select_task_rq_fair+0x6a/0xec0\n[  132.978883]  [\u003cffffffff812fe494\u003e] ? do_raw_spin_lock+0x54/0x150\n[  132.978883]  [\u003cffffffff810a1f2d\u003e] ? trace_hardirqs_on+0xd/0x10\n[  132.978883]  [\u003cffffffff8105a7c3\u003e] try_to_wake_up+0xd3/0x2f0\n[  132.978883]  [\u003cffffffff81094f98\u003e] ? ktime_get+0x68/0xf0\n[  132.978883]  [\u003cffffffff8105aa35\u003e] wake_up_process+0x15/0x20\n[  132.978883]  [\u003cffffffff81069dd5\u003e] raise_softirq_irqoff+0x65/0x110\n[  132.978883]  [\u003cffffffff8108eb65\u003e] __hrtimer_start_range_ns+0x415/0x5a0\n[  132.978883]  [\u003cffffffff812fe3ee\u003e] ? do_raw_spin_unlock+0x5e/0xb0\n[  132.978883]  [\u003cffffffff8108ed08\u003e] hrtimer_start+0x18/0x20\n[  132.978883]  [\u003cffffffff8109c9c3\u003e] tick_nohz_stop_sched_tick+0x393/0x450\n[  132.978883]  [\u003cffffffff810694f2\u003e] irq_exit+0xd2/0x100\n[  132.978883]  [\u003cffffffff81829e96\u003e] do_IRQ+0x66/0xe0\n[  132.978883]  [\u003cffffffff81820d53\u003e] common_interrupt+0x13/0x13\n[  132.978883]  \u003cEOI\u003e  [\u003cffffffff8103434b\u003e] ? native_safe_halt+0xb/0x10\n[  132.978883]  [\u003cffffffff810a1f2d\u003e] ? trace_hardirqs_on+0xd/0x10\n[  132.978883]  [\u003cffffffff810144ea\u003e] default_idle+0xba/0x370\n[  132.978883]  [\u003cffffffff810147fe\u003e] amd_e400_idle+0x5e/0x130\n[  132.978883]  [\u003cffffffff8100a9f6\u003e] cpu_idle+0xb6/0x120\n[  132.978883]  [\u003cffffffff817f217f\u003e] rest_init+0xef/0x150\n[  132.978883]  [\u003cffffffff817f20e2\u003e] ? rest_init+0x52/0x150\n[  132.978883]  [\u003cffffffff81ed9cf3\u003e] start_kernel+0x3da/0x3e5\n[  132.978883]  [\u003cffffffff81ed9346\u003e] x86_64_start_reservations+0x131/0x135\n[  132.978883]  [\u003cffffffff81ed944d\u003e] x86_64_start_kernel+0x103/0x112\n\nFix this by calling rcu_idle_enter() after tick_nohz_irq_exit().\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "280f06774afedf849f0b34248ed6aff57d0f6908",
      "tree": "62ef683226d0569c0e6c3ba34ab2e6d85b2e047f",
      "parents": [
        "867f236bd12f5091df6dc7cc75f94d7fd982d78a"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri Oct 07 18:22:06 2011 +0200"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Dec 11 10:31:35 2011 -0800"
      },
      "message": "nohz: Separate out irq exit and idle loop dyntick logic\n\nThe tick_nohz_stop_sched_tick() function, which tries to delay\nthe next timer tick as long as possible, can be called from two\nplaces:\n\n- From the idle loop to start the dytick idle mode\n- From interrupt exit if we have interrupted the dyntick\nidle mode, so that we reprogram the next tick event in\ncase the irq changed some internal state that requires this\naction.\n\nThere are only few minor differences between both that\nare handled by that function, driven by the ts-\u003einidle\ncpu variable and the inidle parameter. The whole guarantees\nthat we only update the dyntick mode on irq exit if we actually\ninterrupted the dyntick idle mode, and that we enter in RCU extended\nquiescent state from idle loop entry only.\n\nSplit this function into:\n\n- tick_nohz_idle_enter(), which sets ts-\u003einidle to 1, enters\ndynticks idle mode unconditionally if it can, and enters into RCU\nextended quiescent state.\n\n- tick_nohz_irq_exit() which only updates the dynticks idle mode\nwhen ts-\u003einidle is set (ie: if tick_nohz_idle_enter() has been called).\n\nTo maintain symmetry, tick_nohz_restart_sched_tick() has been renamed\ninto tick_nohz_idle_exit().\n\nThis simplifies the code and micro-optimize the irq exit path (no need\nfor local_irq_save there). This also prepares for the split between\ndynticks and rcu extended quiescent state logics. We\u0027ll need this split to\nfurther fix illegal uses of RCU in extended quiescent states in the idle\nloop.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Mike Frysinger \u003cvapier@gentoo.org\u003e\nCc: Guan Xuetao \u003cgxt@mprc.pku.edu.cn\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\nCc: Hans-Christian Egtvedt \u003chans-christian.egtvedt@atmel.com\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: H. Peter Anvin \u003chpa@zytor.com\u003e\nCc: Russell King \u003clinux@arm.linux.org.uk\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "9984de1a5a8a96275fcab818f7419af5a3c86e71",
      "tree": "1935d411752707a1621c5caf64f75dfe105beb3a",
      "parents": [
        "7c77509c542927ee2a3c8812fad84957e51bf67d"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Mon May 23 14:51:41 2011 -0400"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Mon Oct 31 09:20:12 2011 -0400"
      },
      "message": "kernel: Map most files to use export.h instead of module.h\n\nThe changed files were only including linux/module.h for the\nEXPORT_SYMBOL infrastructure, and nothing else.  Revector them\nonto the isolated export header for faster compile times.\n\nNothing to see here but a whole lot of instances of:\n\n  -#include \u003clinux/module.h\u003e\n  +#include \u003clinux/export.h\u003e\n\nThis commit is only changing the kernel dir; next targets\nwill probably be mm, fs, the arch dirs, etc.\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "ec433f0c51527426989ea8a38a856d810d739414",
      "tree": "001550d7b18b3f2b5326da3f9dfd893e31c8dc1c",
      "parents": [
        "c5d753a55ac92e09816d410cd17093813f1a904b"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue Jul 19 15:32:00 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Jul 20 10:50:12 2011 -0700"
      },
      "message": "softirq,rcu: Inform RCU of irq_exit() activity\n\nThe rcu_read_unlock_special() function relies on in_irq() to exclude\nscheduler activity from interrupt level.  This fails because exit_irq()\ncan invoke the scheduler after clearing the preempt_count() bits that\nin_irq() uses to determine that it is at interrupt level.  This situation\ncan result in failures as follows:\n\n $task\t\t\tIRQ\t\tSoftIRQ\n\n rcu_read_lock()\n\n /* do stuff */\n\n \u003cpreempt\u003e |\u003d UNLOCK_BLOCKED\n\n rcu_read_unlock()\n   --t-\u003ercu_read_lock_nesting\n\n\t\t\tirq_enter();\n\t\t\t/* do stuff, don\u0027t use RCU */\n\t\t\tirq_exit();\n\t\t\t  sub_preempt_count(IRQ_EXIT_OFFSET);\n\t\t\t  invoke_softirq()\n\n\t\t\t\t\tttwu();\n\t\t\t\t\t  spin_lock_irq(\u0026pi-\u003elock)\n\t\t\t\t\t  rcu_read_lock();\n\t\t\t\t\t  /* do stuff */\n\t\t\t\t\t  rcu_read_unlock();\n\t\t\t\t\t    rcu_read_unlock_special()\n\t\t\t\t\t      rcu_report_exp_rnp()\n\t\t\t\t\t        ttwu()\n\t\t\t\t\t          spin_lock_irq(\u0026pi-\u003elock) /* deadlock */\n\n   rcu_read_unlock_special(t);\n\nEd can simply trigger this \u0027easy\u0027 because invoke_softirq() immediately\ndoes a ttwu() of ksoftirqd/# instead of doing the in-place softirq stuff\nfirst, but even without that the above happens.\n\nCure this by also excluding softirqs from the\nrcu_read_unlock_special() handler and ensuring the force_irqthreads\nksoftirqd/# wakeup is done from full softirq context.\n\n[ Alternatively, delaying the -\u003ercu_read_lock_nesting decrement\n  until after the special handling would make the thing more robust\n  in the face of interrupts as well.  And there is a separate patch\n  for that. ]\n\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReported-and-tested-by: Ed Tomlinson \u003cedt@aei.ca\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "09223371deac67d08ca0b70bd18787920284c967",
      "tree": "0ad0354a93ac209c8cfd2b79d03d0462aa3c5c58",
      "parents": [
        "9a432736904d386cda28b987b38ba14dae960ecc"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Tue Jun 14 13:26:25 2011 +0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Jun 14 15:25:39 2011 -0700"
      },
      "message": "rcu: Use softirq to address performance regression\n\nCommit a26ac2455ffcf3(rcu: move TREE_RCU from softirq to kthread)\nintroduced performance regression. In an AIM7 test, this commit degraded\nperformance by about 40%.\n\nThe commit runs rcu callbacks in a kthread instead of softirq. We observed\nhigh rate of context switch which is caused by this. Out test system has\n64 CPUs and HZ is 1000, so we saw more than 64k context switch per second\nwhich is caused by RCU\u0027s per-CPU kthread.  A trace showed that most of\nthe time the RCU per-CPU kthread doesn\u0027t actually handle any callbacks,\nbut instead just does a very small amount of work handling grace periods.\nThis means that RCU\u0027s per-CPU kthreads are making the scheduler do quite\na bit of work in order to allow a very small amount of RCU-related\nprocessing to be done.\n\nAlex Shi\u0027s analysis determined that this slowdown is due to lock\ncontention within the scheduler.  Unfortunately, as Peter Zijlstra points\nout, the scheduler\u0027s real-time semantics require global action, which\nmeans that this contention is inherent in real-time scheduling.  (Yes,\nperhaps someone will come up with a workaround -- otherwise, -rt is not\ngoing to do well on large SMP systems -- but this patch will work around\nthis issue in the meantime.  And \"the meantime\" might well be forever.)\n\nThis patch therefore re-introduces softirq processing to RCU, but only\nfor core RCU work.  RCU callbacks are still executed in kthread context,\nso that only a small amount of RCU work runs in softirq context in the\ncommon case.  This should minimize ksoftirqd execution, allowing us to\nskip boosting of ksoftirqd for CONFIG_RCU_BOOST\u003dy kernels.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nTested-by: \"Alex,Shi\" \u003calex.shi@intel.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "a26ac2455ffcf3be5c6ef92bc6df7182700f2114",
      "tree": "601697c7c3fd152a1b3f29f43d3a028fc8fefd5f",
      "parents": [
        "12f5f524cafef3ab689929b118f2dfb8bf2be321"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Wed Jan 12 14:10:23 2011 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu May 05 23:16:54 2011 -0700"
      },
      "message": "rcu: move TREE_RCU from softirq to kthread\n\nIf RCU priority boosting is to be meaningful, callback invocation must\nbe boosted in addition to preempted RCU readers.  Otherwise, in presence\nof CPU real-time threads, the grace period ends, but the callbacks don\u0027t\nget invoked.  If the callbacks don\u0027t get invoked, the associated memory\ndoesn\u0027t get freed, so the system is still subject to OOM.\n\nBut it is not reasonable to priority-boost RCU_SOFTIRQ, so this commit\nmoves the callback invocations to a kthread, which can be boosted easily.\n\nAlso add comments and properly synchronized all accesses to\nrcu_cpu_kthread_task, as suggested by Lai Jiangshan.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "25985edcedea6396277003854657b5f3cb31a628",
      "tree": "f026e810210a2ee7290caeb737c23cb6472b7c38",
      "parents": [
        "6aba74f2791287ec407e0f92487a725a25908067"
      ],
      "author": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Wed Mar 30 22:57:33 2011 -0300"
      },
      "committer": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Thu Mar 31 11:26:23 2011 -0300"
      },
      "message": "Fix common misspellings\n\nFixes generated by \u0027codespell\u0027 and manually reviewed.\n\nSigned-off-by: Lucas De Marchi \u003clucas.demarchi@profusion.mobi\u003e\n"
    },
    {
      "commit": "94dcf29a11b3d20a28790598d701f98484a969da",
      "tree": "21c65f6634dcde739bb85cbc019ee273f1427f90",
      "parents": [
        "207205a2ba2655652fe46a60b49838af6c16a919"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Mar 22 16:30:45 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 22 17:44:01 2011 -0700"
      },
      "message": "kthread: use kthread_create_on_node()\n\nksoftirqd, kworker, migration, and pktgend kthreads can be created with\nkthread_create_on_node(), to get proper NUMA affinities for their stack and\ntask_struct.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nReviewed-by: Andi Kleen \u003cak@linux.intel.com\u003e\nAcked-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Tony Luck \u003ctony.luck@intel.com\u003e\nCc: Fenghua Yu \u003cfenghua.yu@intel.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: \u003clinux-arch@vger.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": "5f6fb45466b2273ffb91c9cf209f164f666c33b1",
      "tree": "2b19f24b678ae379be1b19338c3095c1f76ed41d",
      "parents": [
        "3904afb41d4316f7a2968c615d689e19149a4f84",
        "c0185808eb85139f45dbfd0de66963c498d0c4db"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 15 19:23:40 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 15 19:23:40 2011 -0700"
      },
      "message": "Merge branch \u0027irq-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027irq-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (116 commits)\n  x86: Enable forced interrupt threading support\n  x86: Mark low level interrupts IRQF_NO_THREAD\n  x86: Use generic show_interrupts\n  x86: ioapic: Avoid redundant lookup of irq_cfg\n  x86: ioapic: Use new move_irq functions\n  x86: Use the proper accessors in fixup_irqs()\n  x86: ioapic: Use irq_data-\u003estate\n  x86: ioapic: Simplify irq chip and handler setup\n  x86: Cleanup the genirq name space\n  genirq: Add chip flag to force mask on suspend\n  genirq: Add desc-\u003eirq_data accessor\n  genirq: Add comments to Kconfig switches\n  genirq: Fixup fasteoi handler for oneshot mode\n  genirq: Provide forced interrupt threading\n  sched: Switch wait_task_inactive to schedule_hrtimeout()\n  genirq: Add IRQF_NO_THREAD\n  genirq: Allow shared oneshot interrupts\n  genirq: Prepare the handling of shared oneshot interrupts\n  genirq: Make warning in handle_percpu_event useful\n  x86: ioapic: Move trigger defines to io_apic.h\n  ...\n\nFix up trivial(?) conflicts in arch/x86/pci/xen.c due to genirq name\nspace changes clashing with the Xen cleanups.  The set_irq_msi() had\nmoved to xen_bind_pirq_msi_to_irq().\n"
    },
    {
      "commit": "8d32a307e4faa8b123dc8a9cd56d1a7525f69ad3",
      "tree": "50141928db9f0ac1377dd8bb355d600232d6b38c",
      "parents": [
        "8eb90c30e0e815a1308828352eabd03ca04229dd"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Feb 23 23:52:23 2011 +0000"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Feb 26 11:57:18 2011 +0100"
      },
      "message": "genirq: Provide forced interrupt threading\n\nAdd a commandline parameter \"threadirqs\" which forces all interrupts except\nthose marked IRQF_NO_THREAD to run threaded. That\u0027s mostly a debug option to\nallow retrieving better debug data from crashing interrupt handlers. If\n\"threadirqs\" is not enabled on the kernel command line, then there is no\nimpact in the interrupt hotpath.\n\nArchitecture code needs to select CONFIG_IRQ_FORCED_THREADING after\nmarking the interrupts which cant be threaded IRQF_NO_THREAD. All\ninterrupts which have IRQF_TIMER set are implict marked\nIRQF_NO_THREAD. Also all PER_CPU interrupts are excluded.\n\nForced threading hard interrupts also forces all soft interrupt\nhandling into thread context.\n\nWhen enabled it might slow down things a bit, but for debugging problems in\ninterrupt code it\u0027s a reasonable penalty as it does not immediately\ncrash and burn the machine when an interrupt handler is buggy.\n\nSome test results on a Core2Duo machine:\n\nCache cold run of:\n # time git grep irq_desc\n\n      non-threaded       threaded\n real 1m18.741s          1m19.061s\n user 0m1.874s           0m1.757s\n sys  0m5.843s           0m5.427s\n\n # iperf -c server\nnon-threaded\n[  3]  0.0-10.0 sec  1.09 GBytes   933 Mbits/sec\n[  3]  0.0-10.0 sec  1.09 GBytes   934 Mbits/sec\n[  3]  0.0-10.0 sec  1.09 GBytes   933 Mbits/sec\nthreaded\n[  3]  0.0-10.0 sec  1.09 GBytes   939 Mbits/sec\n[  3]  0.0-10.0 sec  1.09 GBytes   934 Mbits/sec\n[  3]  0.0-10.0 sec  1.09 GBytes   937 Mbits/sec\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLKML-Reference: \u003c20110223234956.772668648@linutronix.de\u003e\n"
    },
    {
      "commit": "c305d524e5dd3c3c7a6035083e30950bea1b52dc",
      "tree": "2929186dfc8b0f1094375873231809768d1ac385",
      "parents": [
        "c9a443cdf7726ce8b78c3177c6ae601ce37292fc"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Feb 02 17:10:48 2011 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Feb 08 19:37:12 2011 +0100"
      },
      "message": "softirq: Avoid stack switch from ksoftirqd\n\nksoftirqd() calls do_softirq() which switches stacks on several\narchitectures. That makes no sense at all. ksoftirqd\u0027s stack is\nsufficient.\n\nCall __do_softirq() directly.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nAcked-by: David Miller \u003cdavem@davemloft.net\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nReviewed-by: Frank Rowand \u003cfrank.rowand@am.sony.com\u003e\nLKML-Reference: \u003calpine.LFD.2.00.1102021704530.31804@localhost6.localdomain6\u003e\n"
    },
    {
      "commit": "4dd53d891ca46dcc1fde0376a33540d3fd83cb9a",
      "tree": "9a6c242176f196c062ae76c50b0f321251900b5a",
      "parents": [
        "f07333bf6ee66d9b49286cec4371cf375e745b7a"
      ],
      "author": {
        "name": "Venkatesh Pallipadi",
        "email": "venki@google.com",
        "time": "Tue Dec 21 17:09:00 2010 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jan 26 12:33:20 2011 +0100"
      },
      "message": "softirqs: Free up pf flag PF_KSOFTIRQD\n\nCleanup patch, freeing up PF_KSOFTIRQD and use per_cpu ksoftirqd pointer\ninstead, as suggested by Eric Dumazet.\n\nTested-by: Shaun Ruffell \u003csruffell@digium.com\u003e\nSigned-off-by: Venkatesh Pallipadi \u003cvenki@google.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003c1292980144-28796-2-git-send-email-venki@google.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "351f8f8e6499ae4fff40f5e3a8fe16d9e1903646",
      "tree": "9393c8d3a6a1eaa9dba50932eb6de3017a8afe86",
      "parents": [
        "b8cb464e4a8abc60ad5a43e0375fec8a3c728167"
      ],
      "author": {
        "name": "Amerigo Wang",
        "email": "amwang@redhat.com",
        "time": "Wed Jan 12 16:59:39 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:08 2011 -0800"
      },
      "message": "kernel: clean up USE_GENERIC_SMP_HELPERS\n\nFor arch which needs USE_GENERIC_SMP_HELPERS, it has to select\nUSE_GENERIC_SMP_HELPERS, rather than leaving a choice to user, since they\ndon\u0027t provide their own implementions.\n\nAlso, move on_each_cpu() to kernel/smp.c, it is strange to put it in\nkernel/softirq.c.\n\nFor arch which doesn\u0027t use USE_GENERIC_SMP_HELPERS, e.g.  blackfin, only\non_each_cpu() is compiled.\n\nSigned-off-by: Amerigo Wang \u003camwang@redhat.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "72eb6a791459c87a0340318840bb3bd9252b627b",
      "tree": "3bfb8ad99f9c7e511f37f72d57b56a2cea06d753",
      "parents": [
        "23d69b09b78c4876e134f104a3814c30747c53f1",
        "55ee4ef30241a62b700f79517e6d5ef2ddbefa67"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 07 17:02:58 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 07 17:02:58 2011 -0800"
      },
      "message": "Merge branch \u0027for-2.6.38\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu\n\n* \u0027for-2.6.38\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu: (30 commits)\n  gameport: use this_cpu_read instead of lookup\n  x86: udelay: Use this_cpu_read to avoid address calculation\n  x86: Use this_cpu_inc_return for nmi counter\n  x86: Replace uses of current_cpu_data with this_cpu ops\n  x86: Use this_cpu_ops to optimize code\n  vmstat: User per cpu atomics to avoid interrupt disable / enable\n  irq_work: Use per cpu atomics instead of regular atomics\n  cpuops: Use cmpxchg for xchg to avoid lock semantics\n  x86: this_cpu_cmpxchg and this_cpu_xchg operations\n  percpu: Generic this_cpu_cmpxchg() and this_cpu_xchg support\n  percpu,x86: relocate this_cpu_add_return() and friends\n  connector: Use this_cpu operations\n  xen: Use this_cpu_inc_return\n  taskstats: Use this_cpu_ops\n  random: Use this_cpu_inc_return\n  fs: Use this_cpu_inc_return in buffer.c\n  highmem: Use this_cpu_xx_return() operations\n  vmstat: Use this_cpu_inc_return for vm statistics\n  x86: Support for this_cpu_add, sub, dec, inc_return\n  percpu: Generic support for this_cpu_add, sub, dec, inc_return\n  ...\n\nFixed up conflicts: in arch/x86/kernel/{apic/nmi.c, apic/x2apic_uv_x.c, process.c}\nas per Tejun.\n"
    },
    {
      "commit": "c9b5f501ef1580faa30c40c644b7691870462201",
      "tree": "d22df12b72bc90b130254078ee71b1b7e7e3e521",
      "parents": [
        "524429c31b486c05449666b94613f59f729c0a84"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri Jan 07 13:41:40 2011 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 07 15:55:45 2011 +0100"
      },
      "message": "sched: Constify function scope static struct sched_param usage\n\nFunction-scope statics are discouraged because they are\neasily overlooked and can cause subtle bugs/races due to\ntheir global (non-SMP safe) nature.\n\nLinus noticed that we did this for sched_param - at minimum\nmake the const.\n\nSuggested-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: Message-ID: \u003cAANLkTinotRxScOHEb0HgFgSpGPkq_6jKTv5CfvnQM\u003dee@mail.gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "909ea96468096b07fbb41aaf69be060d92bd9271",
      "tree": "a7e015edd96b5f674874fe78cdd889769e130a2a",
      "parents": [
        "780f36d8b3fa9572f731d4fb85067b2e45e6f993"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Wed Dec 08 16:22:55 2010 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Dec 17 15:07:19 2010 +0100"
      },
      "message": "core: Replace __get_cpu_var with __this_cpu_read if not used for an address.\n\n__get_cpu_var() can be replaced with this_cpu_read and will then use a\nsingle read instruction with implied address calculation to access the\ncorrect per cpu instance.\n\nHowever, the address of a per cpu variable passed to __this_cpu_read()\ncannot be determined (since it\u0027s an implied address conversion through\nsegment prefixes).  Therefore apply this only to uses of __get_cpu_var\nwhere the address of the variable is not used.\n\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "92fd4d4d67b945c0766416284d4ab236b31542c4",
      "tree": "00b8b5f90748f752ccaba3dddbe271091d93543a",
      "parents": [
        "fe7de49f9d4e53f24ec9ef762a503f70b562341c",
        "e53beacd23d9cb47590da6a7a7f6d417b941a994"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Nov 18 13:22:14 2010 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Nov 18 13:22:26 2010 +0100"
      },
      "message": "Merge commit \u0027v2.6.37-rc2\u0027 into sched/core\n\nMerge reason: Move to a .37-rc base.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a042e26137d7674ac04b1cd2d5c06b9ebc1ee2d5",
      "tree": "c1a7a8bda41b99caa4b4a0fe320fc73278879f7d",
      "parents": [
        "f66dd539feb849a3a00f7fac67c026e0935e373a",
        "e25804a0327dad954f7d43803178fdef2fd35b4e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 27 18:48:00 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 27 18:48:00 2010 -0700"
      },
      "message": "Merge branch \u0027perf-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027perf-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (50 commits)\n  perf python scripting: Add futex-contention script\n  perf python scripting: Fixup cut\u0027n\u0027paste error in sctop script\n  perf scripting: Shut up \u0027perf record\u0027 final status\n  perf record: Remove newline character from perror() argument\n  perf python scripting: Support fedora 11 (audit 1.7.17)\n  perf python scripting: Improve the syscalls-by-pid script\n  perf python scripting: print the syscall name on sctop\n  perf python scripting: Improve the syscalls-counts script\n  perf python scripting: Improve the failed-syscalls-by-pid script\n  kprobes: Remove redundant text_mutex lock in optimize\n  x86/oprofile: Fix uninitialized variable use in debug printk\n  tracing: Fix \u0027faild\u0027 -\u003e \u0027failed\u0027 typo\n  perf probe: Fix format specified for Dwarf_Off parameter\n  perf trace: Fix detection of script extension\n  perf trace: Use $PERF_EXEC_PATH in canned report scripts\n  perf tools: Document event modifiers\n  perf tools: Remove direct slang.h include\n  perf_events: Fix for transaction recovery in group_sched_in()\n  perf_events: Revert: Fix transaction recovery in group_sched_in()\n  perf, x86: Use NUMA aware allocations for PEBS/BTS/DS allocations\n  ...\n"
    },
    {
      "commit": "b8ecad8b2f8757d51632b1ea6d602c1f7b9760a2",
      "tree": "5a03029dbf02df606fa48a82525eb321e59b5c33",
      "parents": [
        "eea4a0b19a2719e3e23b5450dd9fbe97789d2a57",
        "8bfb5e7d6a14b29cffddd113f4b0be7d9aafc1e8"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Oct 23 20:05:43 2010 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Oct 23 20:05:43 2010 +0200"
      },
      "message": "Merge branch \u0027perf/core\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux-2.6 into perf/urgent\n"
    },
    {
      "commit": "fe7de49f9d4e53f24ec9ef762a503f70b562341c",
      "tree": "766b012c7199f12625bc909748175d9e37b0b87d",
      "parents": [
        "d4429f608abde89e8bc1e24b43cd503feb95c496"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Wed Oct 20 16:01:12 2010 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Oct 23 17:56:48 2010 +0200"
      },
      "message": "sched: Make sched_param argument static in sched_setscheduler() callers\n\nAndrew Morton pointed out almost all sched_setscheduler() callers are\nusing fixed parameters and can be converted to static.  It reduces runtime\nmemory use a little.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReported-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nAcked-by: James Morris \u003cjmorris@namei.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "02f36038c568111ad4fc433f6fa760ff5e38fab4",
      "tree": "78e6ef15798c6e9d1052eab7f7d3a0db0ec908e5",
      "parents": [
        "6c2754c28f2388a276fe21edde826f2113c8f60e",
        "676cb02dc32adef13d9efb5ea52079e4ede1e3ec",
        "07bd8516a2f967aa67904c68ab97bb896a448b09",
        "50f2d7f682f9c0ed58191d0982fe77888d59d162",
        "892df7f81c31ce7f85778aa78094e8d1f19b8413",
        "68f4d5a00adaab33b136fce2c72d5c377b39b0b0",
        "b365a85c68161ea5db5476eb8845a91ceb1777ea",
        "6554287b1de0448f1e02e200d02b43914e997d15"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 23 08:25:36 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 23 08:25:36 2010 -0700"
      },
      "message": "Merge branches \u0027softirq-for-linus\u0027, \u0027x86-debug-for-linus\u0027, \u0027x86-numa-for-linus\u0027, \u0027x86-quirks-for-linus\u0027, \u0027x86-setup-for-linus\u0027, \u0027x86-uv-for-linus\u0027 and \u0027x86-vm86-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027softirq-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  softirqs: Make wakeup_softirqd static\n\n* \u0027x86-debug-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  x86, asm: Restore parentheses around one pushl_cfi argument\n  x86, asm: Fix ancient-GAS workaround\n  x86, asm: Fix CFI macro invocations to deal with shortcomings in gas\n\n* \u0027x86-numa-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  x86, numa: Assign CPUs to nodes in round-robin manner on fake NUMA\n\n* \u0027x86-quirks-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  x86: HPET force enable for CX700 / VIA Epia LT\n\n* \u0027x86-setup-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  x86, setup: Use string copy operation to optimze copy in kernel compression\n\n* \u0027x86-uv-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  x86, UV: Use allocated buffer in tlb_uv.c:tunables_read()\n\n* \u0027x86-vm86-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  x86, vm86: Fix preemption bug for int1 debug and int3 breakpoint handlers.\n"
    },
    {
      "commit": "4a60cfa9457749f7987fd4f3c956dbba5a281129",
      "tree": "85f3633276282cde0a3ac558d988704eaa3e68af",
      "parents": [
        "62bea97f54d806218a992b18d1f425cfb5060175",
        "27afdf2008da0b8878a73e32e4eb12381b84e224"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 21 14:11:46 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 21 14:11:46 2010 -0700"
      },
      "message": "Merge branch \u0027irq-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027irq-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (96 commits)\n  apic, x86: Use BIOS settings for IBS and MCE threshold interrupt LVT offsets\n  apic, x86: Check if EILVT APIC registers are available (AMD only)\n  x86: ioapic: Call free_irte only if interrupt remapping enabled\n  arm: Use ARCH_IRQ_INIT_FLAGS\n  genirq, ARM: Fix boot on ARM platforms\n  genirq: Fix CONFIG_GENIRQ_NO_DEPRECATED\u003dy build\n  x86: Switch sparse_irq allocations to GFP_KERNEL\n  genirq: Switch sparse_irq allocator to GFP_KERNEL\n  genirq: Make sparse_lock a mutex\n  x86: lguest: Use new irq allocator\n  genirq: Remove the now unused sparse irq leftovers\n  genirq: Sanitize dynamic irq handling\n  genirq: Remove arch_init_chip_data()\n  x86: xen: Sanitise sparse_irq handling\n  x86: Use sane enumeration\n  x86: uv: Clean up the direct access to irq_desc\n  x86: Make io_apic.c local functions static\n  genirq: Remove irq_2_iommu\n  x86: Speed up the irq_remapped check in hot pathes\n  intr_remap: Simplify the code further\n  ...\n\nFix up trivial conflicts in arch/x86/Kconfig\n"
    },
    {
      "commit": "f4bc6bb2d562703eafc895c37e7be20906de139d",
      "tree": "e80d4ed1bc925a2236773eff7d68163c534efea3",
      "parents": [
        "750ed158bf6c782d2813da1bca2c824365a0b777"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 19 15:00:13 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Oct 21 16:50:29 2010 +0200"
      },
      "message": "tracing: Cleanup the convoluted softirq tracepoints\n\nWith the addition of trace_softirq_raise() the softirq tracepoint got\neven more convoluted. Why the tracepoints take two pointers to assign\nan integer is beyond my comprehension.\n\nBut adding an extra case which treats the first pointer as an unsigned\nlong when the second pointer is NULL including the back and forth\ntype casting is just horrible.\n\nConvert the softirq tracepoints to take a single unsigned int argument\nfor the softirq vector number and fix the call sites.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nLKML-Reference: \u003calpine.LFD.2.00.1010191428560.6815@localhost6.localdomain6\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nAcked-by: mathieu.desnoyers@efficios.com\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\n\n"
    },
    {
      "commit": "d267f87fb8179c6dba03d08b91952e81bc3723c7",
      "tree": "ddcd2f7429964367fcb4ab1dd230a970452d72da",
      "parents": [
        "aa483808516ca5cacfa0e5849691f64fec25828e"
      ],
      "author": {
        "name": "Venkatesh Pallipadi",
        "email": "venki@google.com",
        "time": "Mon Oct 04 17:03:23 2010 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Oct 18 20:52:29 2010 +0200"
      },
      "message": "sched: Call tick_check_idle before __irq_enter\n\nWhen CPU is idle and on first interrupt, irq_enter calls tick_check_idle()\nto notify interruption from idle. But, there is a problem if this call\nis done after __irq_enter, as all routines in __irq_enter may find\nstale time due to yet to be done tick_check_idle.\n\nSpecifically, trace calls in __irq_enter when they use global clock and also\naccount_system_vtime change in this patch as it wants to use sched_clock_cpu()\nto do proper irq timing.\n\nBut, tick_check_idle was moved after __irq_enter intentionally to\nprevent problem of unneeded ksoftirqd wakeups by the commit ee5f80a:\n\n    irq: call __irq_enter() before calling the tick_idle_check\n    Impact: avoid spurious ksoftirqd wakeups\n\nMoving tick_check_idle() before __irq_enter and wrapping it with\nlocal_bh_enable/disable would solve both the problems.\n\nFixed-by: Yong Zhang \u003cyong.zhang0@gmail.com\u003e\nSigned-off-by: Venkatesh Pallipadi \u003cvenki@google.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003c1286237003-12406-9-git-send-email-venki@google.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "6cdd5199daf0cb7b0fcc8dca941af08492612887",
      "tree": "ad9d632d5731a64d0b1ab6410557415480ffcbfd",
      "parents": [
        "e1e10a265d28273ab8c70be19d43dcbdeead6c5a"
      ],
      "author": {
        "name": "Venkatesh Pallipadi",
        "email": "venki@google.com",
        "time": "Mon Oct 04 17:03:18 2010 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Oct 18 20:52:22 2010 +0200"
      },
      "message": "sched: Add a PF flag for ksoftirqd identification\n\nTo account softirq time cleanly in scheduler, we need to identify whether\nsoftirq is invoked in ksoftirqd context or softirq at hardirq tail context.\nAdd PF_KSOFTIRQD for that purpose.\n\nAs all PF flag bits are currently taken, create space by moving one of the\ninfrequently used bits (PF_THREAD_BOUND) down in task_struct to be along\nwith some other state fields.\n\nSigned-off-by: Venkatesh Pallipadi \u003cvenki@google.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003c1286237003-12406-4-git-send-email-venki@google.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "75e1056f5c57050415b64cb761a3acc35d91f013",
      "tree": "e7cd483e38f9bf9131a3b212301a009890b8de49",
      "parents": [
        "75dd321d79d495a0ee579e6249ebc38ddbb2667f"
      ],
      "author": {
        "name": "Venkatesh Pallipadi",
        "email": "venki@google.com",
        "time": "Mon Oct 04 17:03:16 2010 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Oct 18 20:52:20 2010 +0200"
      },
      "message": "sched: Fix softirq time accounting\n\nPeter Zijlstra found a bug in the way softirq time is accounted in\nVIRT_CPU_ACCOUNTING on this thread:\n\n   http://lkml.indiana.edu/hypermail//linux/kernel/1009.2/01366.html\n\nThe problem is, softirq processing uses local_bh_disable internally. There\nis no way, later in the flow, to differentiate between whether softirq is\nbeing processed or is it just that bh has been disabled. So, a hardirq when bh\nis disabled results in time being wrongly accounted as softirq.\n\nLooking at the code a bit more, the problem exists in !VIRT_CPU_ACCOUNTING\nas well. As account_system_time() in normal tick based accouting also uses\nsoftirq_count, which will be set even when not in softirq with bh disabled.\n\nPeter also suggested solution of using 2*SOFTIRQ_OFFSET as irq count\nfor local_bh_{disable,enable} and using just SOFTIRQ_OFFSET while softirq\nprocessing. The patch below does that and adds API in_serving_softirq() which\nreturns whether we are currently processing softirq or not.\n\nAlso changes one of the usages of softirq_count in net/sched/cls_cgroup.c\nto in_serving_softirq.\n\nLooks like many usages of in_softirq really want in_serving_softirq. Those\nchanges can be made individually on a case by case basis.\n\nSigned-off-by: Venkatesh Pallipadi \u003cvenki@google.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003c1286237003-12406-2-git-send-email-venki@google.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b7d0d8258a9f71949b810e0f82a3d75088f4d364",
      "tree": "1e37a6d3e89816abab898e3646a4e23eeb457021",
      "parents": [
        "77dff1c755c3218691e95e7e38ee14323b35dbdb"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Sep 29 18:44:23 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 16:53:44 2010 +0200"
      },
      "message": "genirq: Remove arch_init_chip_data()\n\nThis function should have not been there in the first place.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b683de2b3cb17bb10fa6fd4af614dc75b5749fe0",
      "tree": "e1a799293b218f5c13d4903c57fab144b2f433b3",
      "parents": [
        "aa99ec0f3f26bf2bcd0fa5176de93598427f1e5e"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Sep 27 20:55:03 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 16:39:08 2010 +0200"
      },
      "message": "genirq: Query arch for number of early descriptors\n\nsparse irq sets up NR_IRQS_LEGACY irq descriptors and archs then go\nahead and allocate more.\n\nUse the unused return value of arch_probe_nr_irqs() to let the\narchitecture return the number of early allocations. Fix up all users.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "676cb02dc32adef13d9efb5ea52079e4ede1e3ec",
      "tree": "17e394a2ee1353779922fde0470fdacdd66b446c",
      "parents": [
        "b30a3f6257ed2105259b404d419b4964e363928c"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Jul 20 23:33:49 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Sep 22 10:15:42 2010 +0200"
      },
      "message": "softirqs: Make wakeup_softirqd static\n\nNo users outside of kernel/softirq.c\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "9e506f7adce8e6165a104d3d78fddd8ff0cdccf8",
      "tree": "9ddfd67eec7e8a7dc73fb0ced97cc06e54a35c63",
      "parents": [
        "94b3dd0f7bb393d93e84a173b1df9b8b64c83ac4"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Fri Jun 04 14:15:04 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 04 15:21:45 2010 -0700"
      },
      "message": "kernel/: fix BUG_ON checks for cpu notifier callbacks direct call\n\nThe commit 80b5184cc537718122e036afe7e62d202b70d077 (\"kernel/: convert cpu\nnotifier to return encapsulate errno value\") changed the return value of\ncpu notifier callbacks.\n\nThose callbacks don\u0027t return NOTIFY_BAD on failures anymore.  But there\nare a few callbacks which are called directly at init time and checking\nthe return value.\n\nI forgot to change BUG_ON checking by the direct callers in the commit.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "80b5184cc537718122e036afe7e62d202b70d077",
      "tree": "d4e2b400f0e951156d64d546fd563fa5a8ab02d3",
      "parents": [
        "ad84bb5b98bf81deae97e3bcd814675d6b4e6f72"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Wed May 26 14:43:32 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 09:12:48 2010 -0700"
      },
      "message": "kernel/: convert cpu notifier to return encapsulate errno value\n\nBy the previous modification, the cpu notifier can return encapsulate\nerrno value.  This converts the cpu notifiers for kernel/*.c\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "25502a6c13745f4650cc59322bd198194f55e796",
      "tree": "d76cc659d3ea797c5da4630e219ac363d17c44a6",
      "parents": [
        "99652b54de1ee094236f7171485214071af4ef31"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Apr 01 17:37:01 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon May 10 11:08:33 2010 -0700"
      },
      "message": "rcu: refactor RCU\u0027s context-switch handling\n\nThe addition of preemptible RCU to treercu resulted in a bit of\nconfusion and inefficiency surrounding the handling of context switches\nfor RCU-sched and for RCU-preempt.  For RCU-sched, a context switch\nis a quiescent state, pure and simple, just like it always has been.\nFor RCU-preempt, a context switch is in no way a quiescent state, but\nspecial handling is required when a task blocks in an RCU read-side\ncritical section.\n\nHowever, the callout from the scheduler and the outer loop in ksoftirqd\nstill calls something named rcu_sched_qs(), whose name is no longer\naccurate.  Furthermore, when rcu_check_callbacks() notes an RCU-sched\nquiescent state, it ends up unnecessarily (though harmlessly, aside\nfrom the performance hit) enqueuing the current task if it happens to\nbe running in an RCU-preempt read-side critical section.  This not only\nincreases the maximum latency of scheduler_tick(), it also needlessly\nincreases the overhead of the next outermost rcu_read_unlock() invocation.\n\nThis patch addresses this situation by separating the notion of RCU\u0027s\ncontext-switch handling from that of RCU-sched\u0027s quiescent states.\nThe context-switch handling is covered by rcu_note_context_switch() in\ngeneral and by rcu_preempt_note_context_switch() for preemptible RCU.\nThis permits rcu_sched_qs() to handle quiescent states and only quiescent\nstates.  It also reduces the maximum latency of scheduler_tick(), though\nprobably by much less than a microsecond.  Finally, it means that tasks\nwithin preemptible-RCU read-side critical sections avoid incurring the\noverhead of queuing unless there really is a context switch.\n\nSuggested-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nAcked-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\n"
    },
    {
      "commit": "b9c3032277f756e73f6c673419dc414155e04e46",
      "tree": "1727289fff4ea4fdcd93658d07e20ab53b55af96",
      "parents": [
        "c80d292f137275a1ed88e6ed515ecb457051f1a4"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Wed Feb 03 18:08:52 2010 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Feb 03 18:17:40 2010 +0100"
      },
      "message": "hrtimer, softirq: Fix hrtimer-\u003esoftirq trampoline\n\nhrtimers callbacks are always done from hardirq context, either the\njiffy tick interrupt or the hrtimer device interrupt.\n\n[ there is currently one exception that can still call a hrtimer\n  callback from softirq, but even in that case this will still\n  work correctly. ]\n\nReported-by: Wei Yongjun \u003cyjwei@cn.fujitsu.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Yury Polyanskiy \u003cypolyans@princeton.edu\u003e\nTested-by: Wei Yongjun \u003cyjwei@cn.fujitsu.com\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nLKML-Reference: \u003c1265120401.24455.306.camel@laptop\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "d0316554d3586cbea60592a41391b5def2553d6f",
      "tree": "5e7418f0bacbc68cec5dfd1541e03eb56870aa02",
      "parents": [
        "fb0bbb92d42d5bd0ab224605444efdfed06d6934",
        "51e99be00ce2713cbb841cedc997cafa6e26c7f4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 14 09:58:24 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 14 09:58:24 2009 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu: (34 commits)\n  m68k: rename global variable vmalloc_end to m68k_vmalloc_end\n  percpu: add missing per_cpu_ptr_to_phys() definition for UP\n  percpu: Fix kdump failure if booted with percpu_alloc\u003dpage\n  percpu: make misc percpu symbols unique\n  percpu: make percpu symbols in ia64 unique\n  percpu: make percpu symbols in powerpc unique\n  percpu: make percpu symbols in x86 unique\n  percpu: make percpu symbols in xen unique\n  percpu: make percpu symbols in cpufreq unique\n  percpu: make percpu symbols in oprofile unique\n  percpu: make percpu symbols in tracer unique\n  percpu: make percpu symbols under kernel/ and mm/ unique\n  percpu: remove some sparse warnings\n  percpu: make alloc_percpu() handle array types\n  vmalloc: fix use of non-existent percpu variable in put_cpu_var()\n  this_cpu: Use this_cpu_xx in trace_functions_graph.c\n  this_cpu: Use this_cpu_xx for ftrace\n  this_cpu: Use this_cpu_xx in nmi handling\n  this_cpu: Use this_cpu operations in RCU\n  this_cpu: Use this_cpu ops for VM statistics\n  ...\n\nFix up trivial (famous last words) global per-cpu naming conflicts in\n\tarch/x86/kvm/svm.c\n\tmm/slab.c\n"
    },
    {
      "commit": "c5e0cb3ddc5f14cedcfc50c0fb3b5fc6b56576da",
      "tree": "ab4d9ccc68fcdca681c2991fa3773d7483a7f26b",
      "parents": [
        "2c28e2451dba2260e9f88811b29a7787db7e7616"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Wed Oct 28 08:14:48 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Nov 02 16:06:37 2009 +0100"
      },
      "message": "rcu: Cleanup: balance rcu_irq_enter()/rcu_irq_exit() calls\n\nCurrently, rcu_irq_exit() is invoked only for CONFIG_NO_HZ,\nwhile rcu_irq_enter() is invoked unconditionally.  This patch\nmoves rcu_irq_exit() out from under CONFIG_NO_HZ so that the\ncalls are balanced.\n\nThis patch has no effect on the behavior of the kernel because\nboth rcu_irq_enter() and rcu_irq_exit() are empty for\n!CONFIG_NO_HZ, but the code is easier to understand if the calls\nare obviously balanced in all cases.\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: dipankar@in.ibm.com\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nLKML-Reference: \u003c12567428891605-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "1871e52c76dd95895caeb772f845a1718dcbcd75",
      "tree": "49e8148326f65353e673204f427bd4545eb26c16",
      "parents": [
        "0f5e4816dbf38ce9488e611ca2296925c1e90d5e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Oct 29 22:34:13 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Oct 29 22:34:13 2009 +0900"
      },
      "message": "percpu: make percpu symbols under kernel/ and mm/ unique\n\nThis patch updates percpu related symbols under kernel/ and mm/ such\nthat percpu symbols are unique and don\u0027t clash with local symbols.\nThis serves two purposes of decreasing the possibility of global\npercpu symbol collision and allowing dropping per_cpu__ prefix from\npercpu symbols.\n\n* kernel/lockdep.c: s/lock_stats/cpu_lock_stats/\n\n* kernel/sched.c: s/init_rq_rt/init_rt_rq_var/\t(any better idea?)\n  \t\t  s/sched_group_cpus/sched_groups/\n\n* kernel/softirq.c: s/ksoftirqd/run_ksoftirqd/a\n\n* kernel/softlockup.c: s/(*)_timestamp/softlockup_\\1_ts/\n  \t\t       s/watchdog_task/softlockup_watchdog/\n\t\t       s/timestamp/ts/ for local variables\n\n* kernel/time/timer_stats: s/lookup_lock/tstats_lookup_lock/\n\n* mm/slab.c: s/reap_work/slab_reap_work/\n  \t     s/reap_node/slab_reap_node/\n\n* mm/vmstat.c: local variable changed to avoid collision with vmstat_work\n\nPartly based on Rusty Russell\u0027s \"alloc_percpu: rename percpu vars\nwhich cause name clashes\" patch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: (slab/vmstat) Christoph Lameter \u003ccl@linux-foundation.org\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\n"
    },
    {
      "commit": "5dd4de587fd9c25cb32a7a0fe9feec3647509b6f",
      "tree": "5c724508e4f9ae4f9f099e50551abf28c5d82e9f",
      "parents": [
        "9a5963eb494c8a7be65199e15854551df7d2d939"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Sep 17 17:38:32 2009 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Sep 17 15:53:44 2009 -0400"
      },
      "message": "softirq: add BLOCK_IOPOLL to softirq_to_name\n\nWith BLOCK_IOPOLL_SOFTIRQ added, softirq_to_name[] and\nshow_softirq_name() needs to be updated.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nLKML-Reference: \u003c4AB20398.8070209@cn.fujitsu.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "d6714c22b43fbcbead7e7b706ff270e15f04a791",
      "tree": "1dc15e57d982351bed45b7b9768a118f86b88c19",
      "parents": [
        "9f77da9f40045253e91f55c12d4481254b513d2d"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sat Aug 22 13:56:46 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Aug 23 10:32:37 2009 +0200"
      },
      "message": "rcu: Renamings to increase RCU clarity\n\nMake RCU-sched, RCU-bh, and RCU-preempt be underlying\nimplementations, with \"RCU\" defined in terms of one of the\nthree.  Update the outdated rcu_qsctr_inc() names, as these\nfunctions no longer increment anything.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: akpm@linux-foundation.org\nCc: mathieu.desnoyers@polymtl.ca\nCc: josht@linux.vnet.ibm.com\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nLKML-Reference: \u003c12509746132696-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "9ba5f005c994ad28e266a0cd14ef29354be382c9",
      "tree": "0a2ff570070afc18e7dad61a2955b94614ce9b51",
      "parents": [
        "aea1f7964ae6cba5eb419a958956deb9016b3341"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "peterz@infradead.org",
        "time": "Wed Jul 22 14:18:35 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Jul 22 17:01:17 2009 +0200"
      },
      "message": "softirq: introduce tasklet_hrtimer infrastructure\n\ncommit ca109491f (hrtimer: removing all ur callback modes) moved all\nhrtimer callbacks into hard interrupt context when high resolution\ntimers are active. That breaks code which relied on the assumption\nthat the callback happens in softirq context.\n\nProvide a generic infrastructure which combines tasklets and hrtimers\ntogether to provide an in-softirq hrtimer experience.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: torvalds@linux-foundation.org\nCc: kaber@trash.net\nCc: David Miller \u003cdavem@davemloft.net\u003e\nLKML-Reference: \u003c1248265724.27058.1366.camel@twins\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "aa0ce5bbc2dbb1853bd0c6d13f17716fcc38ac5a",
      "tree": "79efff8d1e52e3d1b968a5122447d25886ef29d7",
      "parents": [
        "1d89b30cc9be41af87881682ec82e2c107849dbe"
      ],
      "author": {
        "name": "Keika Kobayashi",
        "email": "kobayashi.kk@ncos.nec.co.jp",
        "time": "Wed Jun 17 16:25:52 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:40 2009 -0700"
      },
      "message": "softirq: introduce statistics for softirq\n\nStatistics for softirq doesn\u0027t exist.\nIt will be helpful like statistics for interrupts.\nThis patch introduces counting the number of softirq,\nwhich will be exported in /proc/softirqs.\n\nWhen softirq handler consumes much CPU time,\n/proc/stat is like the following.\n\n$ while :; do  cat /proc/stat | head -n1 ; sleep 10 ; done\ncpu  88 0 408 739665 583 28 2 0 0\ncpu  450 0 1090 740970 594 28 1294 0 0\n                              ^^^^\n                             softirq\n\nIn such a situation,\n/proc/softirqs shows us which softirq handler is invoked.\nWe can see the increase rate of softirqs.\n\n\u003cbefore\u003e\n$ cat /proc/softirqs\n                CPU0       CPU1       CPU2       CPU3\nHI                 0          0          0          0\nTIMER         462850     462805     462782     462718\nNET_TX             0          0          0        365\nNET_RX          2472          2          2         40\nBLOCK              0          0        381       1164\nTASKLET            0          0          0        224\nSCHED         462654     462689     462698     462427\nRCU             3046       2423       3367       3173\n\n\u003cafter\u003e\n$ cat /proc/softirqs\n                CPU0       CPU1       CPU2       CPU3\nHI                 0          0          0          0\nTIMER         463361     465077     465056     464991\nNET_TX            53          0          1        365\nNET_RX          3757          2          2         40\nBLOCK              0          0        398       1170\nTASKLET            0          0          0        224\nSCHED         463074     464318     464612     463330\nRCU             3505       2948       3947       3673\n\nWhen CPU TIME of softirq is high,\nthe rates of increase is the following.\n  TIMER  : 220/sec     : CPU1-3\n  NET_TX : 5/sec       : CPU0\n  NET_RX : 120/sec     : CPU0\n  SCHED  : 40-200/sec  : all CPU\n  RCU    : 45-58/sec   : all CPU\n\nThe rates of increase in an idle mode is the following.\n  TIMER  : 250/sec\n  SCHED  : 250/sec\n  RCU    : 2/sec\n\nIt seems many softirqs for receiving packets and rcu are invoked.  This\ngives us help for checking system.\n\nSigned-off-by: Keika Kobayashi \u003ckobayashi.kk@ncos.nec.co.jp\u003e\nReviewed-by: Hiroshi Shimamoto \u003ch-shimamoto@ct.jp.nec.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7c692cbade8b8884f1c20500393bcc7cd6d24ef8",
      "tree": "2cf4353c684304dfdefb89e0a70bfbd7eeadf85b",
      "parents": [
        "8eae985f08138758e06503588f5f1196269bc415"
      ],
      "author": {
        "name": "Vegard Nossum",
        "email": "vegard.nossum@gmail.com",
        "time": "Wed May 21 22:53:13 2008 +0200"
      },
      "committer": {
        "name": "Vegard Nossum",
        "email": "vegard.nossum@gmail.com",
        "time": "Sat Jun 13 10:02:24 2009 +0200"
      },
      "message": "tasklets: new tasklet scheduling function\n\nRationale: kmemcheck needs to be able to schedule a tasklet without\ntouching any dynamically allocated memory _at_ _all_ (since that would\nlead to a recursive page fault). This tasklet is used for writing the\nerror reports to the kernel log.\n\nThe new scheduling function avoids touching any other tasklets by\ninserting the new tasklist as the head of the \"tasklet_hi\" list instead\nof on the tail.\n\nAlso don\u0027t wake up the softirq thread lest the scheduler access some\ntracked memory and we go down with a recursive page fault.\n\nIn this case, we\u0027d better just wait for the maximum time of 1/HZ for the\nmessage to appear.\n\nSigned-off-by: Vegard Nossum \u003cvegard.nossum@gmail.com\u003e\n"
    },
    {
      "commit": "862366118026a358882eefc70238dbcc3db37aac",
      "tree": "4eb62bc10327a5afac064a95a091ea05ecd2acc1",
      "parents": [
        "57eee9ae7bbcfb692dc96c739a5184adb6349733",
        "511b01bdf64ad8a38414096eab283c7784aebfc4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 10 19:53:40 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 10 19:53:40 2009 -0700"
      },
      "message": "Merge branch \u0027tracing-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027tracing-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (244 commits)\n  Revert \"x86, bts: reenable ptrace branch trace support\"\n  tracing: do not translate event helper macros in print format\n  ftrace/documentation: fix typo in function grapher name\n  tracing/events: convert block trace points to TRACE_EVENT(), fix !CONFIG_BLOCK\n  tracing: add protection around module events unload\n  tracing: add trace_seq_vprint interface\n  tracing: fix the block trace points print size\n  tracing/events: convert block trace points to TRACE_EVENT()\n  ring-buffer: fix ret in rb_add_time_stamp\n  ring-buffer: pass in lockdep class key for reader_lock\n  tracing: add annotation to what type of stack trace is recorded\n  tracing: fix multiple use of __print_flags and __print_symbolic\n  tracing/events: fix output format of user stack\n  tracing/events: fix output format of kernel stack\n  tracing/trace_stack: fix the number of entries in the header\n  ring-buffer: discard timestamps that are at the start of the buffer\n  ring-buffer: try to discard unneeded timestamps\n  ring-buffer: fix bug in ring_buffer_discard_commit\n  ftrace: do not profile functions when disabled\n  tracing: make trace pipe recognize latency format flag\n  ...\n"
    },
    {
      "commit": "44347d947f628060b92449702071bfe1d31dfb75",
      "tree": "c6ed74610d5b3295df4296659f80f5feb94b28cc",
      "parents": [
        "d94fc523f3c35bd8013f04827e94756cbc0212f4",
        "413f81eba35d6ede9289b0c8a920c013a84fac71"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu May 07 11:17:13 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu May 07 11:17:34 2009 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into tracing/core\n\nMerge reason: tracing/core was on a .30-rc1 base and was missing out on\n              on a handful of tracing fixes present in .30-rc5-almost.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a0e39ed378fb6ba916522764cd508fa7d42ad495",
      "tree": "e696fef3ec7daebb8861e002b3e7432a209baae4",
      "parents": [
        "8b3725621074040d380664964ffbc40610aef8c6"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Apr 29 13:51:39 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Apr 29 14:06:21 2009 +0200"
      },
      "message": "tracing: fix build failure on s390\n\n\"tracing: create automated trace defines\" causes this compile error on s390,\nas reported by Sachin Sant against linux-next:\n\n kernel/built-in.o: In function `__do_softirq\u0027:\n (.text+0x1c680): undefined reference to `__tracepoint_softirq_entry\u0027\n\nThis happens because the definitions of the softirq tracepoints were moved\nfrom kernel/softirq.c to kernel/irq/handle.c. Since s390 doesn\u0027t support\ngeneric hardirqs handle.c doesn\u0027t get compiled and the definitions are\nmissing.\n\nSo move the tracepoints to softirq.c again.\n\n[ Impact: fix build failure on s390 ]\n\nReported-by: Sachin Sant \u003csachinp@in.ibm.com\u003e\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: fweisbec@gmail.com\nLKML-Reference: \u003c20090429135139.5fac79b8@osiris.boeblingen.de.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "85ac16d033370caf6f48d743c8dc8103700f5cc5",
      "tree": "04a73af31c07a8ad29780b777b3f9d041fa236fa",
      "parents": [
        "57b150cce8e004ddd36330490a68bfb59b7271e9"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yinghai@kernel.org",
        "time": "Mon Apr 27 18:00:38 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Apr 28 12:21:17 2009 +0200"
      },
      "message": "x86/irq: change irq_desc_alloc() to take node instead of cpu\n\nThis simplifies the node awareness of the code. All our allocators\nonly deal with a NUMA node ID locality not with CPU ids anyway - so\nthere\u0027s no need to maintain (and transform) a CPU id all across the\nIRq layer.\n\nv2: keep move_irq_desc related\n\n[ Impact: cleanup, prepare IRQ code to be NUMA-aware ]\n\nSigned-off-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Suresh Siddha \u003csuresh.b.siddha@intel.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@goop.org\u003e\nLKML-Reference: \u003c49F65536.2020300@kernel.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "79d381c9f2354b594dcab9b04dfcc0debf7294fe",
      "tree": "e3b9264b52c443bfa7508850e1ca0c17271a1779",
      "parents": [
        "ef631b0ca01655d24e9ca7e199262c4a46416a26"
      ],
      "author": {
        "name": "H Hartley Sweeten",
        "email": "hartleys@visionengravers.com",
        "time": "Thu Apr 16 19:30:18 2009 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Apr 17 01:57:54 2009 +0200"
      },
      "message": "kernel/softirq.c: fix sparse warning\n\nFix sparse warning in kernel/softirq.c.\n\n  warning: do-while statement is not a compound statement\n\nSigned-off-by: H Hartley Sweeten \u003chsweeten@visionengravers.com\u003e\nLKML-Reference: \u003cBD79186B4FD85F4B8E60E381CAEE1909015F9033@mi8nycmail19.Mi8.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "ad8d75fff811a6a230f7f43b05a6483099349533",
      "tree": "764f75c0785b29067b141719b6e8000f005da7fd",
      "parents": [
        "ecda8ae02a08ef065ff387f5cb2a2d4999da2408"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Apr 14 19:39:12 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Apr 14 22:05:43 2009 -0400"
      },
      "message": "tracing/events: move trace point headers into include/trace/events\n\nImpact: clean up\n\nCreate a sub directory in include/trace called events to keep the\ntrace point headers in their own separate directory. Only headers that\ndeclare trace points should be defined in this directory.\n\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nCc: Zhao Lei \u003czhaolei@cn.fujitsu.com\u003e\nCc: Eduard - Gabriel Munteanu \u003ceduard.munteanu@linux360.ro\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "a8d154b009168337494fbf345671bab74d3e4b8b",
      "tree": "4097612e1a5cc8bf7658542f7d0f51b815113eaf",
      "parents": [
        "ea20d9293ce423a39717ed4375393129a2e701f9"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Apr 10 09:36:00 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Apr 14 12:57:28 2009 -0400"
      },
      "message": "tracing: create automated trace defines\n\nThis patch lowers the number of places a developer must modify to add\nnew tracepoints. The current method to add a new tracepoint\ninto an existing system is to write the trace point macro in the\ntrace header with one of the macros TRACE_EVENT, TRACE_FORMAT or\nDECLARE_TRACE, then they must add the same named item into the C file\nwith the macro DEFINE_TRACE(name) and then add the trace point.\n\nThis change cuts out the needing to add the DEFINE_TRACE(name).\nEvery file that uses the tracepoint must still include the trace/\u003ctype\u003e.h\nfile, but the one C file must also add a define before the including\nof that file.\n\n #define CREATE_TRACE_POINTS\n #include \u003ctrace/mytrace.h\u003e\n\nThis will cause the trace/mytrace.h file to also produce the C code\nnecessary to implement the trace point.\n\nNote, if more than one trace/\u003ctype\u003e.h is used to create the C code\nit is best to list them all together.\n\n #define CREATE_TRACE_POINTS\n #include \u003ctrace/foo.h\u003e\n #include \u003ctrace/bar.h\u003e\n #include \u003ctrace/fido.h\u003e\n\nThanks to Mathieu Desnoyers and Christoph Hellwig for coming up with\nthe cleaner solution of the define above the includes over my first\ndesign to have the C code include a \"special\" header.\n\nThis patch converts sched, irq and lockdep and skb to use this new\nmethod.\n\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nCc: Zhao Lei \u003czhaolei@cn.fujitsu.com\u003e\nCc: Eduard - Gabriel Munteanu \u003ceduard.munteanu@linux360.ro\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "609862be074cc20e007c640fd936ffe798b41abc",
      "tree": "2ebcacf036fce1b075fe267f608b6abe3f196c67",
      "parents": [
        "12fe32e4f942ac5c71a4ab70b039fee65c0dc29d",
        "eedeeabdeeadb016b8c783e3620d06b98d0cb4e1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 06 13:37:30 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 06 13:37:30 2009 -0700"
      },
      "message": "Merge branch \u0027locking-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027locking-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  lockdep: add stack dumps to asserts\n  hrtimer: fix rq-\u003elock inversion (again)\n"
    },
    {
      "commit": "714f83d5d9f7c785f622259dad1f4fad12d64664",
      "tree": "20563541ae438e11d686b4d629074eb002a481b7",
      "parents": [
        "8901e7ffc2fa78ede7ce9826dbad68a3a25dc2dc",
        "645dae969c3b8651c5bc7c54a1835ec03820f85f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Apr 05 11:04:19 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Apr 05 11:04:19 2009 -0700"
      },
      "message": "Merge branch \u0027tracing-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027tracing-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (413 commits)\n  tracing, net: fix net tree and tracing tree merge interaction\n  tracing, powerpc: fix powerpc tree and tracing tree interaction\n  ring-buffer: do not remove reader page from list on ring buffer free\n  function-graph: allow unregistering twice\n  trace: make argument \u0027mem\u0027 of trace_seq_putmem() const\n  tracing: add missing \u0027extern\u0027 keywords to trace_output.h\n  tracing: provide trace_seq_reserve()\n  blktrace: print out BLK_TN_MESSAGE properly\n  blktrace: extract duplidate code\n  blktrace: fix memory leak when freeing struct blk_io_trace\n  blktrace: fix blk_probes_ref chaos\n  blktrace: make classic output more classic\n  blktrace: fix off-by-one bug\n  blktrace: fix the original blktrace\n  blktrace: fix a race when creating blk_tree_root in debugfs\n  blktrace: fix timestamp in binary output\n  tracing, Text Edit Lock: cleanup\n  tracing: filter fix for TRACE_EVENT_FORMAT events\n  ftrace: Using FTRACE_WARN_ON() to check \"freed record\" in ftrace_release()\n  x86: kretprobe-booster interrupt emulation code fix\n  ...\n\nFix up trivial conflicts in\n arch/parisc/include/asm/ftrace.h\n include/linux/memory.h\n kernel/extable.c\n kernel/module.c\n"
    },
    {
      "commit": "b1dbb67911fecb290db3f566281bcd9ccc9dc6df",
      "tree": "f55add06f624f7fed8a68372d8c96b583ca578fe",
      "parents": [
        "492f59f526d95e73028f57bff475b4bbe3c8cb72",
        "70f454408e68fdba2c2529ab7d6ec3c3525e59f2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 17:33:30 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 17:33:30 2009 -0700"
      },
      "message": "Merge branch \u0027ipi-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027ipi-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  s390: remove arch specific smp_send_stop()\n  panic: clean up kernel/panic.c\n  panic, smp: provide smp_send_stop() wrapper on UP too\n  panic: decrease oops_in_progress only after having done the panic\n  generic-ipi: eliminate WARN_ON()s during oops/panic\n  generic-ipi: cleanups\n  generic-ipi: remove CSD_FLAG_WAIT\n  generic-ipi: remove kmalloc()\n  generic IPI: simplify barriers and locking\n"
    },
    {
      "commit": "7f1e2ca9f04b02794597f60e7b1d43f0a1317939",
      "tree": "dad1d80ab4232f3ca12d7ff9a58f0dc76133dab1",
      "parents": [
        "7bee946358c3cb957d4aa648fc5ab3cad0b232d0"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri Mar 13 12:21:27 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Mar 31 14:52:52 2009 +0200"
      },
      "message": "hrtimer: fix rq-\u003elock inversion (again)\n\nIt appears I inadvertly introduced rq-\u003elock recursion to the\nhrtimer_start() path when I delegated running already expired\ntimers to softirq context.\n\nThis patch fixes it by introducing a __hrtimer_start_range_ns()\nmethod that will not use raise_softirq_irqoff() but\n__raise_softirq_irqoff() which avoids the wakeup.\n\nIt then also changes schedule() to check for pending softirqs and\ndo the wakeup then, I\u0027m not quite sure I like this last bit, nor\nam I convinced its really needed.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: paulus@samba.org\nLKML-Reference: \u003c20090313112301.096138802@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "7bee946358c3cb957d4aa648fc5ab3cad0b232d0",
      "tree": "693061ebde2abc35ecc846e5084630d7225aaaff",
      "parents": [
        "d820ac4c2fa881079e6b689d2098adce337558ae",
        "15f7176eb1cccec0a332541285ee752b935c1c85"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Mar 31 13:53:43 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Mar 31 13:53:43 2009 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into locking-for-linus\n\nConflicts:\n\tlib/Kconfig.debug\n"
    },
    {
      "commit": "6e15cf04860074ad032e88c306bea656bbdd0f22",
      "tree": "c346383bb7563e8d66b2f4a502f875b259c34870",
      "parents": [
        "be0ea69674ed95e1e98cb3687a241badc756d228",
        "60db56422043aaa455ac7f858ce23c273220f9d9"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 26 21:39:17 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 27 17:28:43 2009 +0100"
      },
      "message": "Merge branch \u0027core/percpu\u0027 into percpu-cpumask-x86-for-linus-2\n\nConflicts:\n\tarch/parisc/kernel/irq.c\n\tarch/x86/include/asm/fixmap_64.h\n\tarch/x86/include/asm/setup.h\n\tkernel/irq/handle.c\n\nSemantic merge:\n        arch/x86/include/asm/fixmap.h\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "cd80a8142efa3468c2cd9fb52845f334c3220d54",
      "tree": "919e88994bd3c09b34ce852d0a09bb0655d231d0",
      "parents": [
        "641cd4cfcdc71ce01535b31cc4d57d59a1fae1fc",
        "a98fe7f3425c6b4e90de16f8da63b0429a8fed08"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 13 11:05:58 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 13 11:05:58 2009 +0100"
      },
      "message": "Merge branch \u0027x86/core\u0027 into core/ipi\n"
    },
    {
      "commit": "899039e8746bb9a09b6487ddb8ab2275ce9d0256",
      "tree": "4bc6365d81796fb675c4fe0fde243e11fd9cb361",
      "parents": [
        "7f96f93f02b7637491a1637dee12dcdcd40b9802"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Mar 13 00:43:33 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Mar 13 00:43:33 2009 -0400"
      },
      "message": "softirq: no need to have SOFTIRQ in softirq name\n\nImpact: clean up\n\nIt is redundant to have \u0027SOFTIRQ\u0027 in the softirq names.\n\nReported-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    },
    {
      "commit": "39842323ceb368d2ea36ab7696aedbe296e13b61",
      "tree": "6050a0e282eaaf500f3809b1e53256b24b570d92",
      "parents": [
        "5d592b44b29a1d73e13d5c9e3426eed843bdc359"
      ],
      "author": {
        "name": "Jason Baron",
        "email": "jbaron@redhat.com",
        "time": "Thu Mar 12 14:36:03 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Mar 12 21:20:58 2009 -0400"
      },
      "message": "tracing: tracepoints for softirq entry/exit - tracepoints\n\nIntroduce softirq entry/exit tracepoints. These are useful for\naugmenting existing tracers, and to figure out softirq frequencies and\ntimings.\n\n[\n  s/irq_softirq_/softirq_/ for trace point names and\n  Fixed printf format in TRACE_FORMAT macro\n   - Steven Rostedt\n]\n\nLKML-Reference: \u003c20090312183603.GC3352@redhat.com\u003e\nSigned-off-by: Jason Baron \u003cjbaron@redhat.com\u003e\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    },
    {
      "commit": "5d592b44b29a1d73e13d5c9e3426eed843bdc359",
      "tree": "e26ec625e6fb5efdbbf41d0bba940a2dbac19f50",
      "parents": [
        "e447e1df2e568cd43d1918963c9f09fae85aea57"
      ],
      "author": {
        "name": "Jason Baron",
        "email": "jbaron@redhat.com",
        "time": "Thu Mar 12 14:33:36 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Mar 12 21:15:02 2009 -0400"
      },
      "message": "tracing: tracepoints for softirq entry/exit - add softirq-to-name array\n\nCreate a \u0027softirq_to_name\u0027 array, which is indexed by softirq #, so\nthat we can easily convert between the softirq index # and its name, in\norder to get more meaningful output messages.\n\nLKML-Reference: \u003c20090312183336.GB3352@redhat.com\u003e\nSigned-off-by: Jason Baron \u003cjbaron@redhat.com\u003e\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    },
    {
      "commit": "25d500067d5a666d1336598d1b324793554e5496",
      "tree": "3402308c4c69a66d02ce55f5c165e242fad2a8a9",
      "parents": [
        "0b13fda1e0936b3d64c4c407f183d33fa6bd2ad4",
        "9ead64974b05501bbac0d63a47c99fa786d064ba"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 13 02:14:25 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 13 02:14:25 2009 +0100"
      },
      "message": "Merge branch \u0027linus\u0027 into core/ipi\n"
    },
    {
      "commit": "480c93df5b99699390f93a7024c9f60d09da0e96",
      "tree": "b93b6c8c71c5f2e716dd05b126e01ef4e20ff0af",
      "parents": [
        "aecfcde920da8d32949f6cbbc1fc051b4ef9e7be",
        "d820ac4c2fa881079e6b689d2098adce337558ae"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 13 01:33:21 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 13 01:33:21 2009 +0100"
      },
      "message": "Merge branch \u0027core/locking\u0027 into tracing/ftrace\n"
    },
    {
      "commit": "d820ac4c2fa881079e6b689d2098adce337558ae",
      "tree": "39e4e989d22271cd401f6974c9ae7accc571d500",
      "parents": [
        "3c1f67d60e2b4f4455563928999fd41cc653645d"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 13 01:30:40 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 13 01:32:36 2009 +0100"
      },
      "message": "locking: rename trace_softirq_[enter|exit] \u003d\u003e lockdep_softirq_[enter|exit]\n\nImpact: cleanup\n\nThe naming clashes with upcoming softirq tracepoints, so rename the\nAPIs to lockdep_*().\n\nRequested-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "12e87e36e0141c08dbc8b2177c93c75fb18ad7e5",
      "tree": "a82ac66b372ddc7ee97fe095222232875b6737d4",
      "parents": [
        "42b40b3d55f5782b00b74d9105c3565fbfa5cb80",
        "c3ffc7a40b7e94b094efe1c8ab4e24370a782b65",
        "7bffc23e56e92c14b787bf4d95249a32085bfed5",
        "7a203f3b089be4410fe065dd9927027eade94557"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Mar 10 09:56:25 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Mar 10 09:56:25 2009 +0100"
      },
      "message": "Merge branches \u0027tracing/doc\u0027, \u0027tracing/ftrace\u0027, \u0027tracing/printk\u0027 and \u0027linus\u0027 into tracing/core\n"
    },
    {
      "commit": "467c88fee51e2ae862e9485245687da0730e29aa",
      "tree": "244aa2469e31cb53d7e04ec0768b506ccad71932",
      "parents": [
        "1f442d70c84aa798e243e721eba728a98434cd86",
        "7ab152470e8416ef2a44c800fdc157e2192f2974",
        "8827247ffcc9e880cbe4705655065cf011265157",
        "d1a8e7792047f7dca7eb5759250e2c12800bf262",
        "0feca851c1b3cb4ebfa3149144b3d5de0879ebaa",
        "d0fc63f7bd07cb779a06dc1cdd0c5a14e7f5d562",
        "7a203f3b089be4410fe065dd9927027eade94557",
        "3a450de1365d20afde406f0d9b2931a5e4a4fd6a"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Mar 10 09:26:38 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Mar 10 09:26:38 2009 +0100"
      },
      "message": "Merge branches \u0027x86/apic\u0027, \u0027x86/asm\u0027, \u0027x86/fixmap\u0027, \u0027x86/memtest\u0027, \u0027x86/mm\u0027, \u0027x86/urgent\u0027, \u0027linus\u0027 and \u0027core/percpu\u0027 into x86/core\n"
    },
    {
      "commit": "f0ef03985130287c6c84ebe69416cf790e6cc00e",
      "tree": "3ecb04cc4d82e5fc3ae5f1747e6da172ae8cbcb7",
      "parents": [
        "16097439703bcd38e9fe5608c12add6dacb825ea",
        "31bbed527e7039203920c51c9fb48c27aed0820c"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 06 16:44:14 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 06 16:45:01 2009 +0100"
      },
      "message": "Merge branch \u0027x86/core\u0027 into tracing/textedit\n\nConflicts:\n\tarch/x86/Kconfig\n\tblock/blktrace.c\n\tkernel/irq/handle.c\n\nSemantic conflict:\n\tkernel/trace/blktrace.c\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "64ca5ab913f1594ef316556e65f5eae63ff50cee",
      "tree": "44cecee89609fbec9e4d7ed853b0eaf5c3782fc3",
      "parents": [
        "559595a985e106d2fa9f0c79b7f5805453fed593"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Wed Mar 04 12:11:56 2009 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Mar 04 22:08:45 2009 +0100"
      },
      "message": "rcu: increment quiescent state counter in ksoftirqd()\n\nIf a machine is flooded by network frames, a cpu can loop\n100% of its time inside ksoftirqd() without calling schedule().\nThis can delay RCU grace period to insane values.\n\nAdding rcu_qsctr_inc() call in ksoftirqd() solves this problem.\n\nPaul: \"This regression was a result of the recent change from\n\"schedule()\" to \"cond_resched()\", which got rid of that quiescent\nstate in the common case where a reschedule is not needed\".\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nReviewed-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "6e2756376c706e4da3454a272947983f92e80a7e",
      "tree": "3a54c5dd97921ae869bb6122a69af42d9161ee3e",
      "parents": [
        "8969a5ede0f9e17da4b943712429aef2c9bcd82b"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Wed Feb 25 13:59:48 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 25 14:13:44 2009 +0100"
      },
      "message": "generic-ipi: remove CSD_FLAG_WAIT\n\nOleg noticed that we don\u0027t strictly need CSD_FLAG_WAIT, rework\nthe code so that we can use CSD_FLAG_LOCK for both purposes.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "7e49fcce1bdadd723ae6a0b3b324c4daced61563",
      "tree": "a2bf1a143ed33ca01612dfab1fb7c993c467cdb0",
      "parents": [
        "b06a830183b610c0a88c29a92feb7991a867ab46"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Jan 22 19:01:40 2009 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 23 11:10:57 2009 +0100"
      },
      "message": "trace, lockdep: manual preempt count adding for local_bh_disable\n\nImpact: fix to preempt trace triggering lockdep check_flag failure\n\nIn local_bh_disable, the use of add_preempt_count causes the\npreempt tracer to start recording the time preemption is off.\nBut because it already modified the preempt_count to show\nsoftirqs disabled, and before it called the lockdep code to\nhandle this, it causes a state that lockdep can not handle.\n\nThe preempt tracer will reset the ring buffer on start of a trace,\nand the ring buffer reset code does a spin_lock_irqsave. This\ncalls into lockdep and lockdep will fail when it detects the\ninvalid state of having softirqs disabled but the internal\ncurrent-\u003esoftirqs_enabled is still set.\n\nThe fix is to manually add the SOFTIRQ_OFFSET to preempt count\nand call the preempt tracer code outside the lockdep critical\narea.\n\nThanks to Peter Zijlstra for suggesting this solution.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "4a046d1754ee6ebb6f399696805ed61ea0444d4c",
      "tree": "9b9e8e63d9490aea4c2f06263ad541cb8115eb63",
      "parents": [
        "e65e49d0f3714f4a6a42f6f6a19926ba33fcda75"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yinghai@kernel.org",
        "time": "Mon Jan 12 17:39:24 2009 -0800"
      },
      "committer": {
        "name": "Mike Travis",
        "email": "travis@sgi.com",
        "time": "Mon Jan 12 17:39:24 2009 -0800"
      },
      "message": "x86: arch_probe_nr_irqs\n\nImpact: save RAM with large NR_CPUS, get smaller nr_irqs\n\nSigned-off-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\n"
    },
    {
      "commit": "7d3b56ba37a95f1f370f50258ed3954c304c524b",
      "tree": "86102527b92f02450aa245f084ffb491c18d2e0a",
      "parents": [
        "269b012321f2f1f8e4648c43a93bf432b42c6668",
        "ab14398abd195af91a744c320a52a1bce814dd1e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 03 12:04:39 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 03 12:04:39 2009 -0800"
      },
      "message": "Merge branch \u0027cpus4096-for-linus-3\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027cpus4096-for-linus-3\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (77 commits)\n  x86: setup_per_cpu_areas() cleanup\n  cpumask: fix compile error when CONFIG_NR_CPUS is not defined\n  cpumask: use alloc_cpumask_var_node where appropriate\n  cpumask: convert shared_cpu_map in acpi_processor* structs to cpumask_var_t\n  x86: use cpumask_var_t in acpi/boot.c\n  x86: cleanup some remaining usages of NR_CPUS where s/b nr_cpu_ids\n  sched: put back some stack hog changes that were undone in kernel/sched.c\n  x86: enable cpus display of kernel_max and offlined cpus\n  ia64: cpumask fix for is_affinity_mask_valid()\n  cpumask: convert RCU implementations, fix\n  xtensa: define __fls\n  mn10300: define __fls\n  m32r: define __fls\n  h8300: define __fls\n  frv: define __fls\n  cris: define __fls\n  cpumask: CONFIG_DISABLE_OBSOLETE_CPUMASK_FUNCTIONS\n  cpumask: zero extra bits in alloc_cpumask_var_node\n  cpumask: replace for_each_cpu_mask_nr with for_each_cpu in kernel/time/\n  cpumask: convert mm/\n  ...\n"
    },
    {
      "commit": "f1fc057c79cb2d27602fb3ad08a031f13459ef27",
      "tree": "1bfa272b43e76b1abc0bf27361ad088fc5a17ba1",
      "parents": [
        "4462344ee9ea9224d026801b877887f2f39774a3"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jan 01 10:12:23 2009 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jan 01 10:12:23 2009 +1030"
      },
      "message": "cpumask: remove any_online_cpu() users: kernel/\n\nImpact: Remove obsolete API usage\n\nany_online_cpu() is a good name, but it takes a cpumask_t, not a\npointer.\n\nThere are several places where any_online_cpu() doesn\u0027t really want a\nmask arg at all.  Replace all callers with cpumask_any() and\ncpumask_any_and().\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\n"
    },
    {
      "commit": "db200df0b3530f673d8e9f5bd535e9e10305842a",
      "tree": "9a94039b8813452c51a50fcb45e95c32a9f0e537",
      "parents": [
        "ec270e59a74eee972006a87c8e12514a20588369",
        "43a256322ac1fc105c181b3cade3b9bfc0b63ca1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 31 09:00:59 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 31 09:00:59 2008 -0800"
      },
      "message": "Merge branch \u0027irq-fixes-for-linus-4\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027irq-fixes-for-linus-4\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  sparseirq: move __weak symbols into separate compilation unit\n  sparseirq: work around __weak alias bug\n  sparseirq: fix hang with !SPARSE_IRQ\n  sparseirq: set lock_class for legacy irq when sparse_irq is selected\n  sparseirq: work around compiler optimizing away __weak functions\n  sparseirq: fix desc-\u003elock init\n  sparseirq: do not printk when migrating IRQ descriptors\n  sparseirq: remove duplicated arch_early_irq_init()\n  irq: simplify for_each_irq_desc() usage\n  proc: remove ifdef CONFIG_SPARSE_IRQ from stat.c\n  irq: for_each_irq_desc() move to irqnr.h\n  hrtimer: remove #include \u003clinux/irq.h\u003e\n"
    },
    {
      "commit": "43a256322ac1fc105c181b3cade3b9bfc0b63ca1",
      "tree": "6f4b6fc286451598d20222af8b511fe0a3fcdcfc",
      "parents": [
        "b2e2fe99628c4f944c3075258e536197b5a4f3f8"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yhlu.kernel@gmail.com",
        "time": "Sun Dec 28 16:01:13 2008 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Dec 29 12:15:49 2008 +0100"
      },
      "message": "sparseirq: move __weak symbols into separate compilation unit\n\nGCC has a bug with __weak alias functions: if the functions are in\nthe same compilation unit as their call site, GCC can decide to\ninline them - and thus rob the linker of the opportunity to override\nthe weak alias with the real thing.\n\nSo move all the IRQ handling related __weak symbols to kernel/irq/chip.c.\n\nSigned-off-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "6638101c1124c19c8a65b1645e4ecd09e0572f3e",
      "tree": "a1e47e8da2e5478846afdd91e8ebcf0914ed7373",
      "parents": [
        "cc37d3d20604f3759d269247b022616f710aa52d",
        "3ae7020543db0b769538e64d1ce8d51fceff60ca",
        "a08636690d06b2e36cfb4c2b3ee133a81c47e1e0",
        "00ef9f7348dfd2fc223ec42aceb30836e86b367f",
        "26cc271db798cf211d35967cbfbb53e997126b84",
        "12d79bafb75639f406a9f71aab94808c414c836e",
        "3ac52669c7a24b93663acfcab606d1065ed1accd",
        "8b752e3ef6e3f5cde87afc649dd51d92b1e549c1",
        "9212ddb5eada64fec5a08b28207401f3cc3d0876"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Dec 25 14:06:29 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Dec 25 14:06:29 2008 +0100"
      },
      "message": "Merge branches \u0027core/debugobjects\u0027, \u0027core/iommu\u0027, \u0027core/locking\u0027, \u0027core/printk\u0027, \u0027core/rcu\u0027, \u0027core/resources\u0027, \u0027core/softirq\u0027 and \u0027core/stacktrace\u0027 into core/core\n"
    },
    {
      "commit": "64db4cfff99c04cd5f550357edcc8780f96b54a2",
      "tree": "4856e788d21f0e31ed78a22b70b4521f7237705e",
      "parents": [
        "d110ec3a1e1f522e2e9dfceb9c36d6590c26d2d4"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Dec 18 21:55:32 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Dec 18 21:56:04 2008 +0100"
      },
      "message": "\"Tree RCU\": scalable classic RCU implementation\n\nThis patch fixes a long-standing performance bug in classic RCU that\nresults in massive internal-to-RCU lock contention on systems with\nmore than a few hundred CPUs.  Although this patch creates a separate\nflavor of RCU for ease of review and patch maintenance, it is intended\nto replace classic RCU.\n\nThis patch still handles stress better than does mainline, so I am still\ncalling it ready for inclusion.  This patch is against the -tip tree.\nNevertheless, experience on an actual 1000+ CPU machine would still be\nmost welcome.\n\nMost of the changes noted below were found while creating an rcutiny\n(which should permit ejecting the current rcuclassic) and while doing\ndetailed line-by-line documentation.\n\nUpdates from v9 (http://lkml.org/lkml/2008/12/2/334):\n\no\tFixes from remainder of line-by-line code walkthrough,\n\tincluding comment spelling, initialization, undesirable\n\tnarrowing due to type conversion, removing redundant memory\n\tbarriers, removing redundant local-variable initialization,\n\tand removing redundant local variables.\n\n\tI do not believe that any of these fixes address the CPU-hotplug\n\tissues that Andi Kleen was seeing, but please do give it a whirl\n\tin case the machine is smarter than I am.\n\n\tA writeup from the walkthrough may be found at the following\n\tURL, in case you are suffering from terminal insomnia or\n\tmasochism:\n\n\thttp://www.kernel.org/pub/linux/kernel/people/paulmck/tmp/rcutree-walkthrough.2008.12.16a.pdf\n\no\tMade rcutree tracing use seq_file, as suggested some time\n\tago by Lai Jiangshan.\n\no\tAdded a .csv variant of the rcudata debugfs trace file, to allow\n\tpeople having thousands of CPUs to drop the data into\n\ta spreadsheet.\tTested with oocalc and gnumeric.  Updated\n\tdocumentation to suit.\n\nUpdates from v8 (http://lkml.org/lkml/2008/11/15/139):\n\no\tFix a theoretical race between grace-period initialization and\n\tforce_quiescent_state() that could occur if more than three\n\tjiffies were required to carry out the grace-period\n\tinitialization.  Which it might, if you had enough CPUs.\n\no\tApply Ingo\u0027s printk-standardization patch.\n\no\tSubstitute local variables for repeated accesses to global\n\tvariables.\n\no\tFix comment misspellings and redundant (but harmless) increments\n\tof -\u003en_rcu_pending (this latter after having explicitly added it).\n\no\tApply checkpatch fixes.\n\nUpdates from v7 (http://lkml.org/lkml/2008/10/10/291):\n\no\tFixed a number of problems noted by Gautham Shenoy, including\n\tthe cpu-stall-detection bug that he was having difficulty\n\tconvincing me was real.  ;-)\n\no\tChanged cpu-stall detection to wait for ten seconds rather than\n\tthree in order to reduce false positive, as suggested by Ingo\n\tMolnar.\n\no\tProduced a design document (http://lwn.net/Articles/305782/).\n\tThe act of writing this document uncovered a number of both\n\ttheoretical and \"here and now\" bugs as noted below.\n\no\tFix dynticks_nesting accounting confusion, simplify WARN_ON()\n\tcondition, fix kerneldoc comments, and add memory barriers\n\tin dynticks interface functions.\n\no\tAdd more data to tracing.\n\no\tRemove unused \"rcu_barrier\" field from rcu_data structure.\n\no\tCount calls to rcu_pending() from scheduling-clock interrupt\n\tto use as a surrogate timebase should jiffies stop counting.\n\no\tFix a theoretical race between force_quiescent_state() and\n\tgrace-period initialization.  Yes, initialization does have to\n\tgo on for some jiffies for this race to occur, but given enough\n\tCPUs...\n\nUpdates from v6 (http://lkml.org/lkml/2008/9/23/448):\n\no\tFix a number of checkpatch.pl complaints.\n\no\tApply review comments from Ingo Molnar and Lai Jiangshan\n\ton the stall-detection code.\n\no\tFix several bugs in !CONFIG_SMP builds.\n\no\tFix a misspelled config-parameter name so that RCU now announces\n\tat boot time if stall detection is configured.\n\no\tRun tests on numerous combinations of configurations parameters,\n\twhich after the fixes above, now build and run correctly.\n\nUpdates from v5 (http://lkml.org/lkml/2008/9/15/92, bad subject line):\n\no\tFix a compiler error in the !CONFIG_FANOUT_EXACT case (blew a\n\tchangeset some time ago, and finally got around to retesting\n\tthis option).\n\no\tFix some tracing bugs in rcupreempt that caused incorrect\n\ttotals to be printed.\n\no\tI now test with a more brutal random-selection online/offline\n\tscript (attached).  Probably more brutal than it needs to be\n\ton the people reading it as well, but so it goes.\n\no\tA number of optimizations and usability improvements:\n\n\to\tMake rcu_pending() ignore the grace-period timeout when\n\t\tthere is no grace period in progress.\n\n\to\tMake force_quiescent_state() avoid going for a global\n\t\tlock in the case where there is no grace period in\n\t\tprogress.\n\n\to\tRearrange struct fields to improve struct layout.\n\n\to\tMake call_rcu() initiate a grace period if RCU was\n\t\tidle, rather than waiting for the next scheduling\n\t\tclock interrupt.\n\n\to\tInvoke rcu_irq_enter() and rcu_irq_exit() only when\n\t\tidle, as suggested by Andi Kleen.  I still don\u0027t\n\t\tcompletely trust this change, and might back it out.\n\n\to\tMake CONFIG_RCU_TRACE be the single config variable\n\t\tmanipulated for all forms of RCU, instead of the prior\n\t\tconfusion.\n\n\to\tDocument tracing files and formats for both rcupreempt\n\t\tand rcutree.\n\nUpdates from v4 for those missing v5 given its bad subject line:\n\no\tSeparated dynticks interface so that NMIs and irqs call separate\n\tfunctions, greatly simplifying it.  In particular, this code\n\tno longer requires a proof of correctness.  ;-)\n\no\tSeparated dynticks state out into its own per-CPU structure,\n\tavoiding the duplicated accounting.\n\no\tThe case where a dynticks-idle CPU runs an irq handler that\n\tinvokes call_rcu() is now correctly handled, forcing that CPU\n\tout of dynticks-idle mode.\n\no\tReview comments have been applied (thank you all!!!).\n\tFor but one example, fixed the dynticks-ordering issue that\n\tManfred pointed out, saving me much debugging.  ;-)\n\no\tAdjusted rcuclassic and rcupreempt to handle dynticks changes.\n\nAttached is an updated patch to Classic RCU that applies a hierarchy,\ngreatly reducing the contention on the top-level lock for large machines.\nThis passes 10-hour concurrent rcutorture and online-offline testing on\n128-CPU ppc64 without dynticks enabled, and exposes some timekeeping\nbugs in presence of dynticks (exciting working on a system where\n\"sleep 1\" hangs until interrupted...), which were fixed in the\n2.6.27 kernel.  It is getting more reliable than mainline by some\nmeasures, so the next version will be against -tip for inclusion.\nSee also Manfred Spraul\u0027s recent patches (or his earlier work from\n2004 at http://marc.info/?l\u003dlinux-kernel\u0026m\u003d108546384711797\u0026w\u003d2).\nWe will converge onto a common patch in the fullness of time, but are\ncurrently exploring different regions of the design space.  That said,\nI have already gratefully stolen quite a few of Manfred\u0027s ideas.\n\nThis patch provides CONFIG_RCU_FANOUT, which controls the bushiness\nof the RCU hierarchy.  Defaults to 32 on 32-bit machines and 64 on\n64-bit machines.  If CONFIG_NR_CPUS is less than CONFIG_RCU_FANOUT,\nthere is no hierarchy.  By default, the RCU initialization code will\nadjust CONFIG_RCU_FANOUT to balance the hierarchy, so strongly NUMA\narchitectures may choose to set CONFIG_RCU_FANOUT_EXACT to disable\nthis balancing, allowing the hierarchy to be exactly aligned to the\nunderlying hardware.  Up to two levels of hierarchy are permitted\n(in addition to the root node), allowing up to 16,384 CPUs on 32-bit\nsystems and up to 262,144 CPUs on 64-bit systems.  I just know that I\nam going to regret saying this, but this seems more than sufficient\nfor the foreseeable future.  (Some architectures might wish to set\nCONFIG_RCU_FANOUT\u003d4, which would limit such architectures to 64 CPUs.\nIf this becomes a real problem, additional levels can be added, but I\ndoubt that it will make a significant difference on real hardware.)\n\nIn the common case, a given CPU will manipulate its private rcu_data\nstructure and the rcu_node structure that it shares with its immediate\nneighbors.  This can reduce both lock and memory contention by multiple\norders of magnitude, which should eliminate the need for the strange\nmanipulations that are reported to be required when running Linux on\nvery large systems.\n\nSome shortcomings:\n\no\tMore bugs will probably surface as a result of an ongoing\n\tline-by-line code inspection.\n\n\tPatches will be provided as required.\n\no\tThere are probably hangs, rcutorture failures, \u0026c.  Seems\n\tquite stable on a 128-CPU machine, but that is kind of small\n\tcompared to 4096 CPUs.  However, seems to do better than\n\tmainline.\n\n\tPatches will be provided as required.\n\no\tThe memory footprint of this version is several KB larger\n\tthan rcuclassic.\n\n\tA separate UP-only rcutiny patch will be provided, which will\n\treduce the memory footprint significantly, even compared\n\tto the old rcuclassic.  One such patch passes light testing,\n\tand has a memory footprint smaller even than rcuclassic.\n\tInitial reaction from various embedded guys was \"it is not\n\tworth it\", so am putting it aside.\n\nCredits:\n\no\tManfred Spraul for ideas, review comments, and bugs spotted,\n\tas well as some good friendly competition.  ;-)\n\no\tJosh Triplett, Ingo Molnar, Peter Zijlstra, Mathieu Desnoyers,\n\tLai Jiangshan, Andi Kleen, Andy Whitcroft, and Andrew Morton\n\tfor reviews and comments.\n\no\tThomas Gleixner for much-needed help with some timer issues\n\t(see patches below).\n\no\tJon M. Tollefson, Tim Pepper, Andrew Theurer, Jose R. Santos,\n\tAndy Whitcroft, Darrick Wong, Nishanth Aravamudan, Anton\n\tBlanchard, Dave Kleikamp, and Nathan Lynch for keeping machines\n\talive despite my heavy abuse^Wtesting.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "8b752e3ef6e3f5cde87afc649dd51d92b1e549c1",
      "tree": "352c2790e31c595cb4c15e4fe751251c4596299f",
      "parents": [
        "ed313489badef16d700f5a3be50e8fd8f8294bc8"
      ],
      "author": {
        "name": "Liming Wang",
        "email": "liming.wang@windriver.com",
        "time": "Fri Nov 28 09:52:40 2008 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Nov 28 12:38:38 2008 +0100"
      },
      "message": "softirq: remove useless function __local_bh_enable\n\nImpact: remove unused code\n\n__local_bh_enable has been replaced with _local_bh_enable.\nAs comments says \"it always nests inside local_bh_enable() sections\"\nhas not been valid now. Also there is no reason to use __local_bh_enable\nanywhere, so we can remove this useless function.\n\nSigned-off-by: Liming Wang \u003climing.wang@windriver.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "ee5f80a993539490a07477ff2526bf62c503fbb4",
      "tree": "4c23450fb35f9dfdb491506a3864647aae7e8e78",
      "parents": [
        "5ceb1a04187553e08c6ab60d30cee7c454ee139a"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Nov 07 11:06:00 2008 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@apollo.(none)",
        "time": "Mon Nov 10 22:36:39 2008 +0100"
      },
      "message": "irq: call __irq_enter() before calling the tick_idle_check\n\nImpact: avoid spurious ksoftirqd wakeups\n\nThe tick idle check which is called from irq_enter() was run before\nthe call to __irq_enter() which did not set the in_interrupt() bits in\npreempt_count. That way the raise of a softirq woke up softirqd for\nnothing as the softirq was handled on return from interrupt.\n\nCall __irq_enter() before calling into the tick idle check code.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c465a76af658b443075d6efee1c3131257643020",
      "tree": "63c28c9fab02dedec7f03cee4a3ef7fe4dc1c072",
      "parents": [
        "2d42244ae71d6c7b0884b5664cf2eda30fb2ae68",
        "1b02469088ac7a13d7e622b618b7410d0f1ce5ec",
        "fb02fbc14d17837b4b7b02dbb36142c16a7bf208",
        "d40e944c25fb4642adb2a4c580a48218a9f3f824",
        "1508487e7f16d992ad23cabd3712563ff912f413",
        "322acf6585f3c4e82ee32a246b0483ca0f6ad3f4"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Oct 20 13:14:06 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Oct 20 13:14:06 2008 +0200"
      },
      "message": "Merge branches \u0027timers/clocksource\u0027, \u0027timers/hrtimers\u0027, \u0027timers/nohz\u0027, \u0027timers/ntp\u0027, \u0027timers/posixtimers\u0027 and \u0027timers/debug\u0027 into v28-timers-for-linus\n"
    },
    {
      "commit": "719254faa17ffedc87ba0fadb9b34e535c9758d5",
      "tree": "6afe1e9f2175aa5394cf6e0fc7c84afef0be3e9b",
      "parents": [
        "2e532d68a2b3e2aa6b19731501222069735c741c"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Oct 17 09:59:47 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@apollo.(none)",
        "time": "Fri Oct 17 18:13:38 2008 +0200"
      },
      "message": "NOHZ: unify the nohz function calls in irq_enter()\n\nWe have two separate nohz function calls in irq_enter() for no good\nreason. Just call a single NOHZ function from irq_enter() and call\nthe bits in the tick code.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "54514a70adefe356afe854e2d3912d46668068e6",
      "tree": "e2b08f2c10ff427447fdc40e96555fc2f22549e1",
      "parents": [
        "2e532d68a2b3e2aa6b19731501222069735c741c"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Sep 23 22:15:57 2008 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Oct 17 08:46:56 2008 +0200"
      },
      "message": "softirq: Add support for triggering softirq work on softirqs.\n\nThis is basically a genericization of Jens Axboe\u0027s block layer\nremote softirq changes.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "1c95e1b69073cff5ff179e592fa1a1e182c78a17",
      "tree": "3fc9d1f665f66beb24d66b3ea65d2b5fdd7a1878",
      "parents": [
        "e533b227055598b1f7dc8503a3b4f36b14b9da8a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 16 15:32:46 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 16 15:32:46 2008 -0700"
      },
      "message": "Fix kernel/softirq.c printk format warning properly\n\nThis fixes the broken 77af7e3403e7314c47b0c07fbc5e4ef21d939532\n(\"softirq, warning fix: correct a format to avoid a warning\") fix\ncorrectly.\n\nThe type of a pointer subtraction is not \"int\", nor is it \"long\".  It\ncan be either (or something else).  It\u0027s \"ptrdiff_t\", and the printk\nformat for it is \"%td\".\n\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "77af7e3403e7314c47b0c07fbc5e4ef21d939532",
      "tree": "76bc65173d4880fd2dfc5f31a520d1e9345fffcf",
      "parents": [
        "8e85b4b553fc932e1c5141feb5fda389b7f5db01"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri Oct 03 11:39:46 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Oct 03 11:41:41 2008 +0200"
      },
      "message": "softirq, warning fix: correct a format to avoid a warning\n\nLast -tip gives this warning:\n\nkernel/softirq.c: Dans la fonction «__do_softirq» :\nkernel/softirq.c:216: attention : format «%ld» expects type «long int», but argument 2 has type «int»\n\nThis patch corrects the format type, and a small mistake in the \"softirq\" word.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "8e85b4b553fc932e1c5141feb5fda389b7f5db01",
      "tree": "2e3f1894e36be800aadeac7ed86ebb4f9fb992a3",
      "parents": [
        "978b0116cd225682a29e3d1d5010319bf2de32c2"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Oct 02 10:50:53 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Oct 02 10:58:04 2008 +0200"
      },
      "message": "softirqs, debug: preemption check\n\nif a preempt count leaks out of a softirq handler it can be very hard\nto figure it out. Add a debug check for this.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "978b0116cd225682a29e3d1d5010319bf2de32c2",
      "tree": "250cc9c7740e72407993f22358449b87d322cb32",
      "parents": [
        "70bb08962ea9bd50797ae9f16b2493f5f7c65053"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sat Sep 06 20:04:36 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Sep 06 20:04:36 2008 +0200"
      },
      "message": "softirq: allocate less vectors\n\nWe don\u0027t need whole 32 of them, only NR_SOFTIRQS.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "7babe8db99d305340cf4828ce1f5a1481d5622ef",
      "tree": "fdac7a084646bb6d125ebc62b0b75806e45d1025",
      "parents": [
        "c2147a5092cfe13dbf3210e54e8a622015edeecc"
      ],
      "author": {
        "name": "Eduard - Gabriel Munteanu",
        "email": "eduard.munteanu@linux360.ro",
        "time": "Fri Jul 25 19:45:11 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:04 2008 -0700"
      },
      "message": "Full conversion to early_initcall() interface, remove old interface\n\nA previous patch added the early_initcall(), to allow a cleaner hooking of\npre-SMP initcalls.  Now we remove the older interface, converting all\nexisting users to the new one.\n\n[akpm@linux-foundation.org: cleanups]\n[akpm@linux-foundation.org: build fix]\n[kosaki.motohiro@jp.fujitsu.com: warning fix]\n[kosaki.motohiro@jp.fujitsu.com: warning fix]\nSigned-off-by: Eduard - Gabriel Munteanu \u003ceduard.munteanu@linux360.ro\u003e\nCc: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9b610fda0df5d0f0b0c64242e37441ad1b384aac",
      "tree": "0ea14b15f2e6546f37fe18d8ac3dc83077ec0e55",
      "parents": [
        "b8f8c3cf0a4ac0632ec3f0e15e9dc0c29de917af",
        "5b664cb235e97afbf34db9c4d77f08ebd725335e"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jul 18 19:53:16 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jul 18 19:53:16 2008 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into timers/nohz\n"
    },
    {
      "commit": "b8f8c3cf0a4ac0632ec3f0e15e9dc0c29de917af",
      "tree": "183825db00f4e9252603a51a1be6f8874a963dbc",
      "parents": [
        "857f3fd7a496ddf4329345af65a4a2b16dd25fe8"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Jul 18 17:27:28 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Jul 18 18:10:28 2008 +0200"
      },
      "message": "nohz: prevent tick stop outside of the idle loop\n\nJack Ren and Eric Miao tracked down the following long standing\nproblem in the NOHZ code:\n\n\tscheduler switch to idle task\n\tenable interrupts\n\nWindow starts here\n\n\t----\u003e interrupt happens (does not set NEED_RESCHED)\n\t      \tirq_exit() stops the tick\n\n\t----\u003e interrupt happens (does set NEED_RESCHED)\n\n\treturn from schedule()\n\t\n\tcpu_idle(): preempt_disable();\n\nWindow ends here\n\nThe interrupts can happen at any point inside the race window. The\nfirst interrupt stops the tick, the second one causes the scheduler to\nrerun and switch away from idle again and we end up with the tick\ndisabled.\n\nThe fact that it needs two interrupts where the first one does not set\nNEED_RESCHED and the second one does made the bug obscure and extremly\nhard to reproduce and analyse. Kudos to Jack and Eric.\n\nSolution: Limit the NOHZ functionality to the idle loop to make sure\nthat we can not run into such a situation ever again.\n\ncpu_idle()\n{\n\tpreempt_disable();\n\n\twhile(1) {\n\t\t tick_nohz_stop_sched_tick(1); \u003c- tell NOHZ code that we\n\t\t \t\t\t          are in the idle loop\n\n\t\t while (!need_resched())\n\t\t       halt();\n\n\t\t tick_nohz_restart_sched_tick(); \u003c- disables NOHZ mode\n\t\t preempt_enable_no_resched();\n\t\t schedule();\n\t\t preempt_disable();\n\t}\n}\n\nIn hindsight we should have done this forever, but ... \n\n/me grabs a large brown paperbag.\n\nDebugged-by: Jack Ren \u003cjack.ren@marvell.com\u003e, \nDebugged-by: eric miao \u003ceric.y.miao@gmail.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n\n"
    },
    {
      "commit": "1a781a777b2f6ac46523fe92396215762ced624d",
      "tree": "4f34bb4aade85c0eb364b53d664ec7f6ab959006",
      "parents": [
        "b9d2252c1e44fa83a4e65fdc9eb93db6297c55af",
        "42a2f217a5e324ed5f2373ab1b7a0a15187c4d6c"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jul 15 21:55:59 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jul 15 21:55:59 2008 +0200"
      },
      "message": "Merge branch \u0027generic-ipi\u0027 into generic-ipi-for-linus\n\nConflicts:\n\n\tarch/powerpc/Kconfig\n\tarch/s390/kernel/time.c\n\tarch/x86/kernel/apic_32.c\n\tarch/x86/kernel/cpu/perfctr-watchdog.c\n\tarch/x86/kernel/i8259_64.c\n\tarch/x86/kernel/ldt.c\n\tarch/x86/kernel/nmi_64.c\n\tarch/x86/kernel/smpboot.c\n\tarch/x86/xen/smp.c\n\tinclude/asm-x86/hw_irq_32.h\n\tinclude/asm-x86/hw_irq_64.h\n\tinclude/asm-x86/mach-default/irq_vectors.h\n\tinclude/asm-x86/mach-voyager/irq_vectors.h\n\tinclude/asm-x86/smp.h\n\tkernel/Makefile\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "666484f0250db2e016948d63b3ef33e202e3b8d0",
      "tree": "734f48c10aa364965e4f4642ee3de51669e62be2",
      "parents": [
        "d18bb9a548e550f3ced57618e75085fb3f173133",
        "ace7f1b79670aa0c1d9f4b0442be82e565827333"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 14 15:28:42 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 14 15:28:42 2008 -0700"
      },
      "message": "Merge branch \u0027core/softirq\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027core/softirq\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  softirq: remove irqs_disabled warning from local_bh_enable\n  softirq: remove initialization of static per-cpu variable\n  Remove argument from open_softirq which is always NULL\n"
    },
    {
      "commit": "15c8b6c1aaaf1c4edd67e2f02e4d8e1bd1a51c0d",
      "tree": "3658f893c2f89ea0be4c6cc08aa11fa54476d0f4",
      "parents": [
        "8691e5a8f691cc2a4fda0651e8d307aaba0e7d68"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 09 09:39:44 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jun 26 11:24:38 2008 +0200"
      },
      "message": "on_each_cpu(): kill unused \u0027retry\u0027 parameter\n\nIt\u0027s not even passed on to smp_call_function() anymore, since that\nwas removed. So kill it.\n\nAcked-by: Jeremy Fitzhardinge \u003cjeremy.fitzhardinge@citrix.com\u003e\nReviewed-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "8691e5a8f691cc2a4fda0651e8d307aaba0e7d68",
      "tree": "6cb6767064d2d43441212566da2d83dcc9a0cd8e",
      "parents": [
        "490f5de52a87063fcb40e3b22f61b0779603ff6d"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jun 06 11:18:06 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jun 26 11:24:35 2008 +0200"
      },
      "message": "smp_call_function: get rid of the unused nonatomic/retry argument\n\nIt\u0027s never used and the comments refer to nonatomic and retry\ninterchangably. So get rid of it.\n\nAcked-by: Jeremy Fitzhardinge \u003cjeremy.fitzhardinge@citrix.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "961ccddd59d627b89bd3dc284b6517833bbdf25d",
      "tree": "4d755085845b8beeaa0bbc3d3ee66e1ccc4156a8",
      "parents": [
        "481c5346d0981940ee63037eb53e4e37b0735c10"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Jun 23 13:55:38 2008 +1000"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jun 23 22:57:56 2008 +0200"
      },
      "message": "sched: add new API sched_setscheduler_nocheck: add a flag to control access checks\n\nHidehiro Kawai noticed that sched_setscheduler() can fail in\nstop_machine: it calls sched_setscheduler() from insmod, which can\nhave CAP_SYS_MODULE without CAP_SYS_NICE.\n\nTwo cases could have failed, so are changed to sched_setscheduler_nocheck:\n  kernel/softirq.c:cpu_callback()\n\t- CPU hotplug callback\n  kernel/stop_machine.c:__stop_machine_run()\n\t- Called from various places, including modprobe()\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@goop.org\u003e\nCc: Hidehiro Kawai \u003chidehiro.kawai.ez@hitachi.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: linux-mm@kvack.org\nCc: sugita \u003cyumiko.sugita.yf@hitachi.com\u003e\nCc: Satoshi OSHIMA \u003csatoshi.oshima.fk@hitachi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "0f476b6d91a1395bda6464e653ce66ea9bea7167",
      "tree": "28a7f73ebc553dec0ee136395c99f641b0cbf6cc",
      "parents": [
        "4620b49f76096fa5183eecad7d689faa898a4c82"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Wed Jun 18 09:29:37 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jun 20 15:45:29 2008 +0200"
      },
      "message": "softirq: remove irqs_disabled warning from local_bh_enable\n\nThere\u0027s no need to use local_irq_save() over local_irq_disable() in the\nlocal_bh_enable code since it is a bug to call it with irqs disabled and\ndo_softirq will enable irqs if there is any pending work.\n\nConsolidate the code from local_bh_enable and ..._ip to avoid having a\ndisconnect between them in the warnings they trigger that is currently\nthere.\n\nAlso always trigger the warning on in_irq(), not just in the\ntrace-irqflags case.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nCc: Michael Buesch \u003cmb@bu3sch.de\u003e\nCc: David Ellingsworth \u003cdavid@identd.dyndns.org\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "4620b49f76096fa5183eecad7d689faa898a4c82",
      "tree": "872e0744a24a2c1c85920a425894bbb2dc1620a6",
      "parents": [
        "9583f3d9c00974911daf227cbaa12d6c1caaabad"
      ],
      "author": {
        "name": "Vegard Nossum",
        "email": "vegard.nossum@gmail.com",
        "time": "Thu Jun 12 23:21:53 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jun 18 14:30:43 2008 +0200"
      },
      "message": "softirq: remove initialization of static per-cpu variable\n\nSigned-off-by: Vegard Nossum \u003cvegard.nossum@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "962cf36c5bf6d2840b8d66ee9a606fae2f540bbd",
      "tree": "263ead6b5224453e8c2a92f1ad9cd2091e003b68",
      "parents": [
        "75d3bce2fc0a80f435fe12f2c9ed2632c8ac29e4"
      ],
      "author": {
        "name": "Carlos R. Mafra",
        "email": "crmafra2@gmail.com",
        "time": "Thu May 15 11:15:37 2008 -0300"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sun May 25 07:43:15 2008 +0200"
      },
      "message": "Remove argument from open_softirq which is always NULL\n\nAs git-grep shows, open_softirq() is always called with the last argument\nbeing NULL\n\nblock/blk-core.c:       open_softirq(BLOCK_SOFTIRQ, blk_done_softirq, NULL);\nkernel/hrtimer.c:       open_softirq(HRTIMER_SOFTIRQ, run_hrtimer_softirq, NULL);\nkernel/rcuclassic.c:    open_softirq(RCU_SOFTIRQ, rcu_process_callbacks, NULL);\nkernel/rcupreempt.c:    open_softirq(RCU_SOFTIRQ, rcu_process_callbacks, NULL);\nkernel/sched.c: open_softirq(SCHED_SOFTIRQ, run_rebalance_domains, NULL);\nkernel/softirq.c:       open_softirq(TASKLET_SOFTIRQ, tasklet_action, NULL);\nkernel/softirq.c:       open_softirq(HI_SOFTIRQ, tasklet_hi_action, NULL);\nkernel/timer.c: open_softirq(TIMER_SOFTIRQ, run_timer_softirq, NULL);\nnet/core/dev.c: open_softirq(NET_TX_SOFTIRQ, net_tx_action, NULL);\nnet/core/dev.c: open_softirq(NET_RX_SOFTIRQ, net_rx_action, NULL);\n\nThis observation has already been made by Matthew Wilcox in June 2002\n(http://www.cs.helsinki.fi/linux/linux-kernel/2002-25/0687.html)\n\n\"I notice that none of the current softirq routines use the data element\npassed to them.\"\n\nand the situation hasn\u0027t changed since them. So it appears we can safely\nremove that extra argument to save 128 (54) bytes of kernel data (text).\n\nSigned-off-by: Carlos R. Mafra \u003ccrmafra@ift.unesp.br\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "e5e417232e7c9ecc58a77902d2e8dd46792cd092",
      "tree": "d42798a6dafa81ff63784b2017ce647bd41a4f57",
      "parents": [
        "6bffd7b57d747d74ec2962d7c822f4b86e9f64d4"
      ],
      "author": {
        "name": "Christian Borntraeger",
        "email": "borntraeger@de.ibm.com",
        "time": "Thu May 01 04:34:23 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 01 08:03:58 2008 -0700"
      },
      "message": "Fix cpu hotplug problem in softirq code\n\ncurrently cpu hotplug (unplug) seems broken on s390 and likely others. On cpu\nunplug the system starts to behave very strange and hangs.\n\nI bisected the problem to the following commit:\n\ncommit 48f20a9a9488c432fc86df1ff4b7f4fa895d1183\nAuthor: Olof Johansson \u003colof@lixom.net\u003e\nDate: Tue Mar 4 15:23:25 2008 -0800\n\ttasklets: execute tasklets in the same order they were queued\n\nReverting this patch seems to fix the problem.  I looked into takeover_tasklet\nand it seems that there is a way to corrupt the tail pointer of the current\ncpu.  If the tasklet list of the frozen cpu is empty, the tail pointer of the\ncurrent cpu points to the address of the head pointer of the stopped cpu and\nnot to the next pointer of a tasklet_struct.\n\nThis patch avoids the list splice of the list is empty and cpu hotplug seems\nto work as the tail pointer is not corrupted.  Olof, can you look into that\npatch and ACK/NACK it so Andrew can push this to Linus, if appropriate?\nPlease note that some lines are longer than 80 chars, but line-wrapping looked\nworse that this version.\n\nSigned-off-by: Christian Borntraeger \u003cborntraeger@de.ibm.com\u003e\nAcked-by: Olof Johansson \u003colof@lixom.net\u003e\nAcked-by: 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": "48f20a9a9488c432fc86df1ff4b7f4fa895d1183",
      "tree": "987a41075c8a6640968b6b2054306644e10e4933",
      "parents": [
        "ac086bc22997a2be24fc40fc8d46522fe7e03d11"
      ],
      "author": {
        "name": "Olof Johansson",
        "email": "olof@lixom.net",
        "time": "Tue Mar 04 15:23:25 2008 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Apr 19 19:44:58 2008 +0200"
      },
      "message": "tasklets: execute tasklets in the same order they were queued\n\nI noticed this when looking at an openswan issue.  Openswan (ab?)uses the\ntasklet API to defer processing of packets in some situations, with one\npacket per tasklet_action().  I started noticing sequences of\nbackwards-ordered sequence numbers coming over the wire, since new tasklets\nare always queued at the head of the list but processed sequentially.\n\nConvert it to instead append new entries to the tail of the list.  As an\nextra bonus, the splicing code in takeover_tasklets() no longer has to\niterate over the list.\n\nSigned-off-by: Olof Johansson \u003colof@lixom.net\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "2232c2d8e0a6a31061dec311f3d1cf7624bc14f1",
      "tree": "1d90ec0b8bd4e3c154e386f005ef596ee25fa53f",
      "parents": [
        "c0f4133b8f70769bc8dda977feb9a29109d6ccca"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Feb 29 18:46:50 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Feb 29 18:46:50 2008 +0100"
      },
      "message": "rcu: add support for dynamic ticks and preempt rcu\n\nThe PREEMPT-RCU can get stuck if a CPU goes idle and NO_HZ is set. The\nidle CPU will not progress the RCU through its grace period and a\nsynchronize_rcu my get stuck. Without this patch I have a box that will\nnot boot when PREEMPT_RCU and NO_HZ are set. That same box boots fine\nwith this patch.\n\nThis patch comes from the -rt kernel where it has been tested for\nseveral months.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "7ad5b3a505e68cfdc342933d6e0fc0eaa5e0a4f7",
      "tree": "6715ffd8df509d3d53dea581bb97418a21bc7cbc",
      "parents": [
        "fc9b52cd8f5f459b88adcf67c47668425ae31a78"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Fri Feb 08 04:19:53 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:31 2008 -0800"
      },
      "message": "kernel: remove fastcall in kernel/*\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nAcked-by: 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": "6378ddb592158db4b42197f1bc8666228800e379",
      "tree": "f9b1e671dfd12fb221f6140dd231ccb14cd9f27e",
      "parents": [
        "bbe4d18ac2e058c56adb0cd71f49d9ed3216a405"
      ],
      "author": {
        "name": "Venki Pallipadi",
        "email": "venkatesh.pallipadi@intel.com",
        "time": "Wed Jan 30 13:30:04 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jan 30 13:30:04 2008 +0100"
      },
      "message": "time: track accurate idle time with tick_sched.idle_sleeptime\n\nCurrent idle time in kstat is based on jiffies and is coarse grained.\ntick_sched.idle_sleeptime is making some attempt to keep track of idle time\nin a fine grained manner.  But, it is not handling the time spent in\ninterrupts fully.\n\nMake tick_sched.idle_sleeptime accurate with respect to time spent on\nhandling interrupts and also add tick_sched.idle_lastupdate, which keeps\ntrack of last time when idle_sleeptime was updated.\n\nThis statistics will be crucial for cpufreq-ondemand governor, which can\nshed some conservative gaurd band that is uses today while setting the\nfrequency.  The ondemand changes that uses the exact idle time is coming\nsoon.\n\nSigned-off-by: Venkatesh Pallipadi \u003cvenkatesh.pallipadi@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "b10db7f0d2b589a7f88dc3026e150756cb437a28",
      "tree": "92942041770257c78f7271b79d9860eec10bd77c",
      "parents": [
        "4c9dc6412247abf4972080c51cd16a58c4009c19"
      ],
      "author": {
        "name": "Pavel Machek",
        "email": "pavel@ucw.cz",
        "time": "Wed Jan 30 13:30:00 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jan 30 13:30:00 2008 +0100"
      },
      "message": "time: more timer related cleanups\n\nI was confused by FSEC \u003d 10^15 NSEC statement, plus small whitespace\nfixes. When there\u0027s copyright, there should be GPL.\n\nSigned-off-by: Pavel Machek \u003cpavel@suse.cz\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    }
  ],
  "next": "464771fe4743afd00ebff65aee0983fa1aa1da4f"
}
