)]}'
{
  "log": [
    {
      "commit": "263ec6457bb23d57b575ede18ff6c3d11e0b4e96",
      "tree": "ac9ce48e24b2f37292614a3d363009f1332384cc",
      "parents": [
        "e465b535ce5b2318798c68e1454917204494bfe3"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Jan 03 13:16:09 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Jan 03 18:59:25 2009 +0100"
      },
      "message": "cpumask: convert RCU implementations, fix\n\nImpact: cleanup\n\nThis warning:\n\n kernel/rcuclassic.c: In function ‘rcu_start_batch’:\n kernel/rcuclassic.c:397: warning: passing argument 1 of ‘cpumask_andnot’ from incompatible pointer type\n\ntriggers because one usage site of rcp-\u003ecpumask was not converted\nto to_cpumask(rcp-\u003ecpumask). There\u0027s no ill effects of this bug.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "7eb19553369c46cc1fa64caf120cbcab1b597f7c",
      "tree": "ef1a3beae706b9497c845d0a2557ceb4d2754998",
      "parents": [
        "6092848a2a23b660150a38bc06f59d75838d70c8",
        "8c384cdee3e04d6194a2c2b192b624754f990835"
      ],
      "author": {
        "name": "Mike Travis",
        "email": "travis@sgi.com",
        "time": "Wed Dec 31 17:34:16 2008 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Jan 03 18:53:31 2009 +0100"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-cpumask into merge-rr-cpumask\n\nConflicts:\n\tarch/x86/kernel/io_apic.c\n\tkernel/rcuclassic.c\n\tkernel/sched.c\n\tkernel/time/tick-sched.c\n\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\n[ mingo@elte.hu: backmerged typo fix for io_apic.c ]\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "bd232f97b30f6bb630efa136a777647545db3039",
      "tree": "0dd55c07abfee9e1f4c83f9e8cbf853f817ff226",
      "parents": [
        "d036e67b40f52bdd95392390108defbac7e53837"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jan 01 10:12:26 2009 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jan 01 10:12:26 2009 +1030"
      },
      "message": "cpumask: convert RCU implementations\n\nImpact: use new cpumask API.\n\nrcu_ctrlblk contains a cpumask, and it\u0027s highly optimized so I don\u0027t want\na cpumask_var_t (ie. a pointer) for the CONFIG_CPUMASK_OFFSTACK case.  It\ncould use a dangling bitmap, and be allocated in __rcu_init to save memory,\nbut for the moment we use a bitmap.\n\n(Eventually \u0027struct cpumask\u0027 will be undefined for CONFIG_CPUMASK_OFFSTACK,\nso we use a bitmap here to show we really mean it).\n\nWe remove on-stack cpumasks, using cpumask_var_t for\nrcu_torture_shuffle_tasks() and for_each_cpu_and in force_quiescent_state().\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "6a7b3dc3440f7b5a9b67594af01ed562cdeb41e4",
      "tree": "fdbe54d2c9cd665c6a76ed09e9e4b7c51fb4df20",
      "parents": [
        "6c99e9ad47d9c082bd096f42fb49e397b05d58a8"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Nov 25 02:35:04 2008 +1030"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Nov 24 17:51:10 2008 +0100"
      },
      "message": "sched: convert nohz_cpu_mask to cpumask_var_t.\n\nImpact: (future) size reduction for large NR_CPUS.\n\nDynamically allocating cpumasks (when CONFIG_CPUMASK_OFFSTACK) saves\nspace for small nr_cpu_ids but big CONFIG_NR_CPUS.  cpumask_var_t\nis just a struct cpumask for !CONFIG_CPUMASK_OFFSTACK.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "be19ef82e068e92a28df50341938fdeb5ea56436",
      "tree": "bdf0ab2cf7d8fd3fc205205ec4de616507942728",
      "parents": [
        "45beca08dd8b6d6a65c5ffd730af2eac7a2c7a03"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Nov 03 14:35:12 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Nov 03 18:34:55 2008 +0100"
      },
      "message": "rcu: make rcu-stall debug printout more standard\n\nImpact: change debug printout\n\nChange \"RCU detected CPU stall\" to \"INFO: RCU detected CPU stall\"\nmessage, to make it easier for tools to pick up the warning.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "2ec2b482b10a1ed3493c224f1893cddd3d33833b",
      "tree": "a190d40ef92925fb1e6e55ffe777dd038fc27433",
      "parents": [
        "2133b5d7ff531bc15a923db4a6a50bf96c561be9"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Oct 03 10:41:00 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Oct 03 10:41:00 2008 +0200"
      },
      "message": "rcu: RCU-based detection of stalled CPUs for Classic RCU, fix\n\nfix the !CONFIG_RCU_CPU_STALL_DETECTOR path:\n\n kernel/rcuclassic.c: In function \u0027__rcu_pending\u0027:\n kernel/rcuclassic.c:609: error: too few arguments to function \u0027check_cpu_stall\u0027\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "2133b5d7ff531bc15a923db4a6a50bf96c561be9",
      "tree": "5917515eaec573fbc3d4a734769d6184beb83dbb",
      "parents": [
        "b5259d944279d0b7e78a83849a352d8ba0447c4c"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Oct 02 16:06:39 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Oct 03 10:36:08 2008 +0200"
      },
      "message": "rcu: RCU-based detection of stalled CPUs for Classic RCU\n\nThis patch adds stalled-CPU detection to Classic RCU.  This capability\nis enabled by a new config variable CONFIG_RCU_CPU_STALL_DETECTOR, which\ndefaults disabled.\n\nThis is a debugging feature to detect infinite loops in kernel code, not\nsomething that non-kernel-hackers would be expected to care about.\n\nThis feature can detect looping CPUs in !PREEMPT builds and looping CPUs\nwith preemption disabled in PREEMPT builds.  This is essentially a port of\nthis functionality from the treercu patch, replacing the stall debug patch\nthat is already in tip/core/rcu (commit 67182ae1c4).\n\nThe changes from the patch in tip/core/rcu include making the config\nvariable name match that in treercu, changing from seconds to jiffies to\navoid spurious warnings, and printing a boot message when this feature\nis enabled.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "3a72dc8eb5a7122fff439a22bd22486a4fff505c",
      "tree": "ed7925a0f0fdb82ca6430a92b733a1e111bd0b9d",
      "parents": [
        "e8aed68614c81f24d8c4cbcb4923f848ece846e1"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Mon Sep 22 14:55:46 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Sep 23 11:04:30 2008 +0200"
      },
      "message": "rcu: fix sparse shadowed variable warning\n\nkernel/rcuclassic.c:564:18: warning: symbol \u0027flags\u0027 shadows an earlier one\nkernel/rcuclassic.c:527:16: originally declared here\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nAcked-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": "0cd418ddb1ee88df7d16d5df06cb2da68eceb9e4",
      "tree": "a57f4c271361a73a84d27eb3b4e764f608afefe7",
      "parents": [
        "275a89bdd3868af3008852594d2e169eaf69441b"
      ],
      "author": {
        "name": "Hiroshi Shimamoto",
        "email": "h-shimamoto@ct.jp.nec.com",
        "time": "Mon Aug 18 14:39:21 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Aug 27 09:28:07 2008 +0200"
      },
      "message": "rcuclassic: fix compiler warning\n\nCC      kernel/rcuclassic.o\nkernel/rcuclassic.c: In function \u0027rcu_init_percpu_data\u0027:\nkernel/rcuclassic.c:705: warning: comparison of distinct pointer types lacks a cast\nkernel/rcuclassic.c:713: warning: comparison of distinct pointer types lacks a cast\n\nflags should be unsigned long.\n\nSigned-off-by: Hiroshi Shimamoto \u003ch-shimamoto@ct.jp.nec.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "275a89bdd3868af3008852594d2e169eaf69441b",
      "tree": "81ad2537fe871a3e583013dabf6fdba539773332",
      "parents": [
        "0c925d79234fe77589d8ff3861f9f8bb9e7fc3f6"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Aug 21 06:14:55 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Aug 21 16:01:02 2008 +0200"
      },
      "message": "rcu: use irq-safe locks\n\nSome earlier tip/core/rcu patches caused RCU to incorrectly enable irqs\ntoo early in boot.  This caused Yinghai\u0027s repeated-kexec testing to\nhit oopses, presumably due to so that device interrupts left over from\nthe prior kernel instance (which would oops the newly booting kernel\nbefore it got a chance to reset said devices).  This patch therefore\nconverts all the local_irq_disable()s in rcuclassic.c to local_irq_save().\n\nBesides, I never did like local_irq_disable() anyway.  ;-)\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "0c925d79234fe77589d8ff3861f9f8bb9e7fc3f6",
      "tree": "c66005cd74469523883254bba513ac692d25bbcb",
      "parents": [
        "eff9b713ee3540ddab862095aaf4b1511a6758bc"
      ],
      "author": {
        "name": "Hiroshi Shimamoto",
        "email": "h-shimamoto@ct.jp.nec.com",
        "time": "Mon Aug 18 21:49:51 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Aug 19 11:03:33 2008 +0200"
      },
      "message": "rcuclassic: fix compilation NG\n\nfix:\n\n  CC      kernel/rcuclassic.o\nkernel/rcuclassic.c: In function \u0027__rcu_process_callbacks\u0027:\nkernel/rcuclassic.c:561: error: \u0027flags\u0027 undeclared (first use in this function)\nkernel/rcuclassic.c:561: error: (Each undeclared identifier is reported only once\nkernel/rcuclassic.c:561: error: for each function it appears in.)\n\nDeclare missing variable flags.\n\nSigned-off-by: Hiroshi Shimamoto \u003ch-shimamoto@ct.jp.nec.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "eff9b713ee3540ddab862095aaf4b1511a6758bc",
      "tree": "4ca1e0610453addd1701ecddbcb885c88ed30be1",
      "parents": [
        "ded00a56e99555c3f4000ef3eebfd5fe0d574565"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Aug 18 17:51:08 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Aug 19 04:15:36 2008 +0200"
      },
      "message": "rcu: fix locking cleanup fallout\n\nGiven that the rcp-\u003elock is now acquired from call_rcu(), which can be\ninvoked from irq-disable regions, all acquisitions need to disable irqs.\nThe following patch fixes this.\n\nAlthough I don\u0027t have any reason to believe that this is the cause of\nYinghai\u0027s oops, it does need to be fixed.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "cd95851785bcfe95fdf73689e8ecb5a1c5959231",
      "tree": "701d419396d1cc990bad624e7b9cdc867a318693",
      "parents": [
        "5802294f1b1895ee19a3d0ae72805da453afb9de"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Aug 17 07:37:15 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Aug 17 17:38:01 2008 +0200"
      },
      "message": "rcu: fix classic RCU locking cleanup lockdep problem\n\nOn Fri, Aug 15, 2008 at 04:24:30PM +0200, Ingo Molnar wrote:\n\u003e\n\u003e Paul,\n\u003e\n\u003e one of your two recent RCU patches caused this lockdep splat in -tip\n\u003e testing:\n\u003e\n\u003e -------------------\u003e\n\u003e Brought up 2 CPUs\n\u003e Total of 2 processors activated (6850.87 BogoMIPS).\n\u003e PM: Adding info for No Bus:platform\n\u003e khelper used greatest stack depth: 3124 bytes left\n\u003e\n\u003e \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\u003d\u003d\n\u003e [ INFO: inconsistent lock state ]\n\u003e 2.6.27-rc3-tip #1\n\u003e ---------------------------------\n\u003e inconsistent {softirq-on-W} -\u003e {in-softirq-W} usage.\n\u003e ksoftirqd/0/4 [HC0[0]:SC1[1]:HE1:SE0] takes:\n\u003e  (\u0026rcu_ctrlblk.lock){-+..}, at: [\u003cc016d91c\u003e] __rcu_process_callbacks+0x1ac/0x1f0\n\u003e {softirq-on-W} state was registered at:\n\u003e   [\u003cc01528e4\u003e] __lock_acquire+0x3f4/0x5b0\n\u003e   [\u003cc0152b29\u003e] lock_acquire+0x89/0xc0\n\u003e   [\u003cc076142b\u003e] _spin_lock+0x3b/0x70\n\u003e   [\u003cc016d649\u003e] rcu_init_percpu_data+0x29/0x80\n\u003e   [\u003cc075e43f\u003e] rcu_cpu_notify+0xaf/0xd0\n\u003e   [\u003cc076458d\u003e] notifier_call_chain+0x2d/0x60\n\u003e   [\u003cc0145ede\u003e] __raw_notifier_call_chain+0x1e/0x30\n\u003e   [\u003cc075db29\u003e] _cpu_up+0x79/0x110\n\u003e   [\u003cc075dc0d\u003e] cpu_up+0x4d/0x70\n\u003e   [\u003cc0a769e1\u003e] kernel_init+0xb1/0x200\n\u003e   [\u003cc01048a3\u003e] kernel_thread_helper+0x7/0x10\n\u003e   [\u003cffffffff\u003e] 0xffffffff\n\u003e irq event stamp: 14\n\u003e hardirqs last  enabled at (14): [\u003cc01534db\u003e] trace_hardirqs_on+0xb/0x10\n\u003e hardirqs last disabled at (13): [\u003cc014dbeb\u003e] trace_hardirqs_off+0xb/0x10\n\u003e softirqs last  enabled at (0): [\u003cc012b186\u003e] copy_process+0x276/0x1190\n\u003e softirqs last disabled at (11): [\u003cc0105c0a\u003e] call_on_stack+0x1a/0x30\n\u003e\n\u003e other info that might help us debug this:\n\u003e no locks held by ksoftirqd/0/4.\n\u003e\n\u003e stack backtrace:\n\u003e Pid: 4, comm: ksoftirqd/0 Not tainted 2.6.27-rc3-tip #1\n\u003e  [\u003cc01504dc\u003e] print_usage_bug+0x16c/0x1b0\n\u003e  [\u003cc0152455\u003e] mark_lock+0xa75/0xb10\n\u003e  [\u003cc0108b75\u003e] ? sched_clock+0x15/0x30\n\u003e  [\u003cc015289d\u003e] __lock_acquire+0x3ad/0x5b0\n\u003e  [\u003cc0152b29\u003e] lock_acquire+0x89/0xc0\n\u003e  [\u003cc016d91c\u003e] ? __rcu_process_callbacks+0x1ac/0x1f0\n\u003e  [\u003cc076142b\u003e] _spin_lock+0x3b/0x70\n\u003e  [\u003cc016d91c\u003e] ? __rcu_process_callbacks+0x1ac/0x1f0\n\u003e  [\u003cc016d91c\u003e] __rcu_process_callbacks+0x1ac/0x1f0\n\u003e  [\u003cc016d986\u003e] rcu_process_callbacks+0x26/0x50\n\u003e  [\u003cc0132305\u003e] __do_softirq+0x95/0x120\n\u003e  [\u003cc0132270\u003e] ? __do_softirq+0x0/0x120\n\u003e  [\u003cc0105c0a\u003e] call_on_stack+0x1a/0x30\n\u003e  [\u003cc0132426\u003e] ? ksoftirqd+0x96/0x110\n\u003e  [\u003cc0132390\u003e] ? ksoftirqd+0x0/0x110\n\u003e  [\u003cc01411f7\u003e] ? kthread+0x47/0x80\n\u003e  [\u003cc01411b0\u003e] ? kthread+0x0/0x80\n\u003e  [\u003cc01048a3\u003e] ? kernel_thread_helper+0x7/0x10\n\u003e  \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\u003e calling  init_cpufreq_transition_notifier_list+0x0/0x20\n\u003e initcall init_cpufreq_transition_notifier_list+0x0/0x20 returned 0 after 0 msecs\n\u003e calling  net_ns_init+0x0/0x190\n\u003e net_namespace: 676 bytes\n\u003e initcall net_ns_init+0x0/0x190 returned 0 after 0 msecs\n\u003e calling  cpufreq_tsc+0x0/0x20\n\u003e initcall cpufreq_tsc+0x0/0x20 returned 0 after 0 msecs\n\u003e calling  reboot_init+0x0/0x20\n\u003e initcall reboot_init+0x0/0x20 returned 0 after 0 msecs\n\u003e calling  print_banner+0x0/0x10\n\u003e Booting paravirtualized kernel on bare hardware\n\u003e\n\u003e \u003c-----------------------\n\u003e\n\u003e my guess is on:\n\u003e\n\u003e  commit 1f7b94cd3d564901f9e04a8bc5832ae7bfd690a0\n\u003e  Author: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n\u003e  Date:   Tue Aug 5 09:21:44 2008 -0700\n\u003e\n\u003e     rcu: classic RCU locking and memory-barrier cleanups\n\u003e\n\u003e \tIngo\n\nFixes a problem detected by lockdep in which rcu-\u003elock was acquired\nboth in irq context and in process context, but without disabling from\nprocess context.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "1f7b94cd3d564901f9e04a8bc5832ae7bfd690a0",
      "tree": "32da3db422dd590cadd879bf6e5f8c5aa7b2a2a2",
      "parents": [
        "293a17ebc944c958e24e6ffbd1d5a49abdbf489e"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Aug 05 09:21:44 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Aug 15 16:08:47 2008 +0200"
      },
      "message": "rcu: classic RCU locking and memory-barrier cleanups\n\nThis patch simplifies the locking and memory-barrier usage in the Classic\nRCU grace-period-detection mechanism, incorporating Lai Jiangshan\u0027s\nfeedback from the earlier version (http://lkml.org/lkml/2008/8/1/400\nand http://lkml.org/lkml/2008/8/3/43).  Passed 10 hours of\nrcutorture concurrent with CPUs being put online and taken offline on\na 128-hardware-thread Power machine.  My apologies to whoever in the\nEastern Hemisphere was planning to use this machine over the Western\nHemisphere night, but it was sitting idle and...\n\nSo this is ready for tip/core/rcu.\n\nThis patch is in preparation for moving to a hierarchical\nalgorithm to allow the very large SMP machines -- requested by some\npeople at OLS, and there seem to have been a few recent patches in the\n4096-CPU direction as well.  The general idea is to move to a much more\nconservative concurrency design, then apply a hierarchy to reduce\ncontention on the global lock by a few orders of magnitude (larger\nmachines would see greater reductions).  The reason for taking a\nconservative approach is that this code isn\u0027t on any fast path.\n\nPrototype in progress.\n\nThis patch is against the linux-tip git tree (tip/core/rcu).  If you\nwish to test this against 2.6.26, use the following set of patches:\n\nhttp://www.rdrop.com/users/paulmck/patches/2.6.26-ljsimp-1.patch\nhttp://www.rdrop.com/users/paulmck/patches/2.6.26-ljsimpfix-3.patch\n\nThe first patch combines commits 5127bed588a2f8f3a1f732de2a8a190b7df5dce3\nand 3cac97cbb14aed00d83eb33d4613b0fe3aaea863 from Lai Jiangshan\n\u003claijs@cn.fujitsu.com\u003e, and the second patch contains my changes.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "293a17ebc944c958e24e6ffbd1d5a49abdbf489e",
      "tree": "56f0b15d3bdaa4a86fea8a9dd305b18976e15a78",
      "parents": [
        "78635fc739b1254f3e0362ac430edbdd2cff01dc"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Aug 12 17:25:03 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Aug 15 15:08:58 2008 +0200"
      },
      "message": "rcu: prevent console flood when one CPU sees another AWOL via RCU\n\nOne small change needed to keep from flooding the console when one\nCPU notices that another is AWOL.  Unless I am missing something subtle.\nOtherwise the cleanups look good!\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "78635fc739b1254f3e0362ac430edbdd2cff01dc",
      "tree": "9cb480451f63260951b4b46d3b6026934174c39c",
      "parents": [
        "67182ae1c42206e516f7efb292b745e826497b24"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Aug 11 13:34:15 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Aug 11 13:35:18 2008 +0200"
      },
      "message": "rcu, debug: detect stalled grace periods, cleanups\n\nsmall cleanups.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "67182ae1c42206e516f7efb292b745e826497b24",
      "tree": "d2d402550a0432489090264df95a8154597dc989",
      "parents": [
        "c4c0c56a7a85ed5725786219e4fbca7e840b1531"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Aug 10 18:35:38 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Aug 11 13:35:18 2008 +0200"
      },
      "message": "rcu, debug: detect stalled grace periods\n\nthis is a diagnostic patch for Classic RCU.\n\nThe approach is to record a timestamp at the beginning\nof the grace period (in rcu_start_batch()), then have\nrcu_check_callbacks() complain if:\n\n 1.\tit is running on a CPU that has holding up grace periods for\n \ta long time (say one second).  This will identify the culprit\n \tassuming that the culprit has not disabled hardware irqs,\n \tinstruction execution, or some such.\n\n 2.\tit is running on a CPU that is not holding up grace periods,\n \tbut grace periods have been held up for an even longer time\n \t(say two seconds).\n\nIt is enabled via the default-off CONFIG_DEBUG_RCU_STALL kernel parameter.\n\nRather than exponential backoff, it backs off to once per 30 seconds.\nMy feeling upon thinking on it was that if you have stalled RCU grace\nperiods for that long, a few extra printk() messages are probably the\nleast of your worries...\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\nCc: David Witbrodt \u003cdawitbro@sbcglobal.net\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c4c0c56a7a85ed5725786219e4fbca7e840b1531",
      "tree": "c9d6b35a571fd5e80ddf5bf4a60142480eaa18d8",
      "parents": [
        "5127bed588a2f8f3a1f732de2a8a190b7df5dce3",
        "796aadeb1b2db9b5d463946766c5bbfd7717158c"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Aug 11 13:27:47 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Aug 11 13:27:47 2008 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into core/rcu\n"
    },
    {
      "commit": "9b1a4d38373a5581a4e01032a3ccdd94cd93477b",
      "tree": "3d0f0ebd1ac4512551fc35e57d173870eb060c0c",
      "parents": [
        "eeec4fad963490821348a331cca6102ae1c4a7a3"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Jul 28 12:16:30 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Jul 28 12:16:31 2008 +1000"
      },
      "message": "stop_machine: Wean existing callers off stop_machine_run()\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "5127bed588a2f8f3a1f732de2a8a190b7df5dce3",
      "tree": "bf79321ffa4c1b7c1071bea8ad1a3eb6eb7b888e",
      "parents": [
        "3cac97cbb14aed00d83eb33d4613b0fe3aaea863"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Sun Jul 06 17:23:59 2008 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jul 18 16:07:33 2008 +0200"
      },
      "message": "rcu classic: new algorithm for callbacks-processing(v2)\n\nThis is v2, it\u0027s a little deference from v1 that I\nhad send to lkml.\nuse ACCESS_ONCE\nuse rcu_batch_after/rcu_batch_before for batch # comparison.\n\nrcutorture test result:\n(hotplugs: do cpu-online/offline once per second)\n\nNo CONFIG_NO_HZ:           OK, 12hours\nNo CONFIG_NO_HZ, hotplugs: OK, 12hours\nCONFIG_NO_HZ\u003dy:            OK, 24hours\nCONFIG_NO_HZ\u003dy, hotplugs:  Failed.\n(Failed also without my patch applied, exactly the same bug occurred,\nhttp://lkml.org/lkml/2008/7/3/24)\n\nv1\u0027s email thread:\nhttp://lkml.org/lkml/2008/6/2/539\n\nv1\u0027s description:\n\nThe code/algorithm of the implement of current callbacks-processing\nis very efficient and technical. But when I studied it and I found\na disadvantage:\n\nIn multi-CPU systems, when a new RCU callback is being\nqueued(call_rcu[_bh]), this callback will be invoked after the grace\nperiod for the batch with batch number \u003d rcp-\u003ecur+2 has completed\nvery very likely in current implement. Actually, this callback can be\ninvoked after the grace period for the batch with\nbatch number \u003d rcp-\u003ecur+1 has completed. The delay of invocation means\nthat latency of synchronize_rcu() is extended. But more important thing\nis that the callbacks usually free memory, and these works are delayed\ntoo! it\u0027s necessary for reclaimer to free memory as soon as\npossible when left memory is few.\n\nA very simple way can solve this problem:\na field(struct rcu_head::batch) is added to record the batch number for\nthe RCU callback. And when a new RCU callback is being queued, we\ndetermine the batch number for this callback(head-\u003ebatch \u003d rcp-\u003ecur+1)\nand we move this callback to rdp-\u003edonelist if we find\nthat head-\u003ebatch \u003c\u003d rcp-\u003ecompleted when we process callbacks.\nThis simple way reduces the wait time for invocation a lot. (about\n2.5Grace Period -\u003e 1.5Grace Period in average in multi-CPU systems)\n\nThis is my algorithm. But I do not add any field for struct rcu_head\nin my implement. We just need to memorize the last 2 batches and\ntheir batch number, because these 2 batches include all entries that\nfor whom the grace period hasn\u0027t completed. So we use a special\nlinked-list rather than add a field.\nPlease see the comment of struct rcu_data.\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Dipankar Sarma \u003cdipankar@in.ibm.com\u003e\nCc: Gautham Shenoy \u003cego@in.ibm.com\u003e\nCc: Dhaval Giani \u003cdhaval@linux.vnet.ibm.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "3cac97cbb14aed00d83eb33d4613b0fe3aaea863",
      "tree": "ba775ff62be34c2a7c17149516509d6c7d70f4d5",
      "parents": [
        "5b664cb235e97afbf34db9c4d77f08ebd725335e"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Sun Jul 06 17:23:55 2008 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jul 18 16:07:32 2008 +0200"
      },
      "message": "rcu classic: simplify the next pending batch\n\nuse a batch number(rcp-\u003epending) instead of a flag(rcp-\u003enext_pending)\n\nrcu_start_batch() need to change this flag, so mb()s is needed\nfor memory-access safe.\n\nbut(after this patch applied) rcu_start_batch() do not change\nthis batch number(rcp-\u003epending), rcp-\u003epending is managed by\n__rcu_process_callbacks only, and troublesome mb()s are eliminated.\n\nAnd codes look simpler and clearer.\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Dipankar Sarma \u003cdipankar@in.ibm.com\u003e\nCc: Gautham Shenoy \u003cego@in.ibm.com\u003e\nCc: Dhaval Giani \u003cdhaval@linux.vnet.ibm.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "82638844d9a8581bbf33201cc209a14876eca167",
      "tree": "961d7f9360194421a71aa644a9d0c176a960ce49",
      "parents": [
        "9982fbface82893e77d211fbabfbd229da6bdde6",
        "63cf13b77ab785e87c867defa8545e6d4a989774"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jul 16 00:29:07 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jul 16 00:29:07 2008 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into cpus4096\n\nConflicts:\n\n\tarch/x86/xen/smp.c\n\tkernel/sched_rt.c\n\tnet/iucv/iucv.c\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "6c9fcaf2eec1b9f85226a694230dd957dd7926b3",
      "tree": "f8c824c6c64dc411752c844f116e693760768bcc",
      "parents": [
        "b9d2252c1e44fa83a4e65fdc9eb93db6297c55af",
        "199a952876adbfc2b6c13b8b07adabebf4ff54b2"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jul 15 21:10:12 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jul 15 21:10:12 2008 +0200"
      },
      "message": "Merge branch \u0027core/rcu\u0027 into core/rcu-for-linus\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": "199a952876adbfc2b6c13b8b07adabebf4ff54b2",
      "tree": "8c53dca02da179c0a43735020c77e6df9d4c6117",
      "parents": [
        "0c81b2a1448bc6a2a9b2d6469fb0669fb4b25e5b"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Thu Jun 26 10:06:43 2008 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Jul 13 23:12:17 2008 +0200"
      },
      "message": "rcu classic: update qlen when cpu offline\n\nWhen callbacks are moved from offline cpu to this cpu,\nthe qlen field of this rdp should be updated.\n\n[ Paul E. McKenney: ]\n\nThe effect of this bug would be for force_quiescent_state() to be invoked\nwhen it should not and vice versa -- wasting cycles in the first case\nand letting RCU callbacks remain piled up in the second case.  The bug\nis thus \"benign\" in that it does not result in premature grace-period\ntermination, but should of course be fixed nonetheless.\n\nPreemption is disabled by the caller\u0027s get_cpu_var(), so we are guaranteed\nto remain on the same CPU, as required.  The local_irq_disable() is indeed\nneeded, otherwise, an interrupt might invoke call_rcu() or call_rcu_bh(),\nwhich could cause that interrupt\u0027s increment of -\u003eqlen to be lost.\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nReviewed-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "0c81b2a1448bc6a2a9b2d6469fb0669fb4b25e5b",
      "tree": "6f82579cae6d6e39fa9f837a3c349ded51e19d14",
      "parents": [
        "0729fbf3bc70870370b4f43d652f05a468dc68b8",
        "70ff05554f91a1edda1f11684da1dbde09e2feea"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jul 11 10:46:50 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jul 11 10:46:50 2008 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into core/rcu\n\nConflicts:\n\n\tinclude/linux/rculist.h\n\tkernel/rcupreempt.c\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "68083e05d72d94f347293d8cc0067050ba904bfa",
      "tree": "842e71365bd90866be7add181661a4039d891564",
      "parents": [
        "7baac8b91f9871ba8cb09af84de4ae1d86d07812",
        "b7279469d66b55119784b8b9529c99c1955fe747"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Jul 06 14:23:39 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Jul 06 14:23:39 2008 +0200"
      },
      "message": "Merge commit \u0027v2.6.26-rc9\u0027 into cpus4096\n"
    },
    {
      "commit": "8558f8f81680a43d383abd1b5f23d3501fedfa65",
      "tree": "209da90800fbcd6cb8a9c568c08fee30f3a1fb17",
      "parents": [
        "d7ee56059b335e27c3c6db34f7efe5a705d65b1c"
      ],
      "author": {
        "name": "Gautham R Shenoy",
        "email": "ego@in.ibm.com",
        "time": "Fri Jun 27 10:17:38 2008 +0530"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jul 01 09:27:17 2008 +0200"
      },
      "message": "rcu: fix hotplug vs rcu race\n\nDhaval Giani reported this warning during cpu hotplug stress-tests:\n\n| On running kernel compiles in parallel with cpu hotplug:\n|\n| WARNING: at arch/x86/kernel/smp.c:118\n| native_smp_send_reschedule+0x21/0x36()\n| Modules linked in:\n| Pid: 27483, comm: cc1 Not tainted 2.6.26-rc7 #1\n| [...]\n|  [\u003cc0110355\u003e] native_smp_send_reschedule+0x21/0x36\n|  [\u003cc014fe8f\u003e] force_quiescent_state+0x47/0x57\n|  [\u003cc014fef0\u003e] call_rcu+0x51/0x6d\n|  [\u003cc01713b3\u003e] __fput+0x130/0x158\n|  [\u003cc0171231\u003e] fput+0x17/0x19\n|  [\u003cc016fd99\u003e] filp_close+0x4d/0x57\n|  [\u003cc016fdff\u003e] sys_close+0x5c/0x97\n\nIMHO the warning is a spurious one.\n\ncpu_online_map is updated by the _cpu_down() using stop_machine_run().\nSince force_quiescent_state is invoked from irqs disabled section,\nstop_machine_run() won\u0027t be executing while a cpu is executing\nforce_quiescent_state(). Hence the cpu_online_map is stable while we\u0027re\nin the irq disabled section.\n\nHowever, a cpu might have been offlined _just_ before we disabled irqs\nwhile entering force_quiescent_state(). And rcu subsystem might not yet\nhave handled the CPU_DEAD notification, leading to the offlined cpu\u0027s\nbit being set in the rcp-\u003ecpumask.\n\nHence cpumask \u003d (rcp-\u003ecpumask \u0026 cpu_online_map) to prevent sending\nsmp_reschedule() to an offlined CPU.\n\nHere\u0027s the timeline:\n\nCPU_A\t\t\t\t\t\t CPU_B\n--------------------------------------------------------------\ncpu_down():\t\t\t\t\t.\n.\t\t\t\t\t   \t.\n.\t\t\t\t\t\t.\nstop_machine(): /* disables preemption,\t\t.\n\t\t * and irqs */\t\t\t.\n.\t\t\t\t\t\t.\n.\t\t\t\t\t\t.\ntake_cpu_down();\t\t\t\t.\n.\t\t\t\t\t\t.\n.\t\t\t\t\t\t.\n.\t\t\t\t\t\t.\ncpu_disable(); /*this removes cpu \t\t.\n\t\t*from cpu_online_map \t\t.\n\t\t*/\t\t\t\t.\n.\t\t\t\t\t\t.\n.\t\t\t\t\t\t.\nrestart_machine(); /* enables irqs */\t\t.\n------WINDOW DURING WHICH rcp-\u003ecpumask is stale ---------------\n.\t\t\t\t\t\tcall_rcu();\n.\t\t\t\t\t\t/* disables irqs here */\n.\t\t\t\t\t\t.force_quiescent_state();\n.CPU_DEAD:\t\t\t\t\t.for_each_cpu(rcp-\u003ecpumask)\n.\t\t\t\t\t\t.   smp_send_reschedule();\n.\t\t\t\t\t\t.\n.\t\t\t\t\t\t.   WARN_ON() for offlined CPU!\n.\n.\n.\nrcu_cpu_notify:\n.\n-------- WINDOW ENDS ------------------------------------------\nrcu_offline_cpu() /* Which calls cpu_quiet()\n\t\t   * which removes\n\t\t   * cpu from rcp-\u003ecpumask.\n\t\t   */\n\nIf a new batch was started just before calling stop_machine_run(), the\n\"tobe-offlined\" cpu is still present in rcp-cpumask.\n\nDuring a cpu-offline, from take_cpu_down(), we queue an rt-prio idle\ntask as the next task to be picked by the scheduler. We also call\ncpu_disable() which will disable any further interrupts and remove the\ncpu\u0027s bit from the cpu_online_map.\n\nOnce the stop_machine_run() successfully calls take_cpu_down(), it calls\nschedule(). That\u0027s the last time a schedule is called on the offlined\ncpu, and hence the last time when rdp-\u003epassed_quiesc will be set to 1\nthrough rcu_qsctr_inc().\n\nBut the cpu_quiet() will be on this cpu will be called only when the\nnext RCU_SOFTIRQ occurs on this CPU. So at this time, the offlined CPU\nis still set in rcp-\u003ecpumask.\n\nNow coming back to the idle_task which truely offlines the CPU, it does\ncheck for a pending RCU and raises the softirq, since it will find\nrdp-\u003epassed_quiesc to be 0 in this case. However, since the cpu is\noffline I am not sure if the softirq will trigger on the CPU.\n\nEven if it doesn\u0027t the rcu_offline_cpu() will find that rcp-\u003ecompleted\nis not the same as rcp-\u003ecur, which means that our cpu could be holding\nup the grace period progression. Hence we call cpu_quiet() and move\nahead.\n\nBut because of the window explained in the timeline, we could still have\na call_rcu() before the RCU subsystem executes it\u0027s CPU_DEAD\nnotification, and we send smp_send_reschedule() to offlined cpu while\ntrying to force the quiescent states. The appended patch adds comments\nand prevents checking for offlined cpu everytime.\n\ncpu_online_map is updated by the _cpu_down() using stop_machine_run().\nSince force_quiescent_state is invoked from irqs disabled section,\nstop_machine_run() won\u0027t be executing while a cpu is executing\nforce_quiescent_state(). Hence the cpu_online_map is stable while we\u0027re\nin the irq disabled section.\n\nReported-by: Dhaval Giani \u003cdhaval@linux.vnet.ibm.com\u003e\nSigned-off-by: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nAcked-by: Dhaval Giani \u003cdhaval@linux.vnet.ibm.com\u003e\nCc: Dipankar Sarma \u003cdipankar@in.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Rusty Russel \u003crusty@rustcorp.com.au\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@linux.vnet.ibm.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": "363ab6f1424cdea63e5d182312d60e19077b892a",
      "tree": "e200197412691015ca8de083155985e7e460ecfc",
      "parents": [
        "068b12772a64c2440ef2f64ac5d780688c06576f"
      ],
      "author": {
        "name": "Mike Travis",
        "email": "travis@sgi.com",
        "time": "Mon May 12 21:21:13 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 18:35:12 2008 +0200"
      },
      "message": "core: use performance variant for_each_cpu_mask_nr\n\nChange references from for_each_cpu_mask to for_each_cpu_mask_nr\nwhere appropriate\n\nReviewed-by: Paul Jackson \u003cpj@sgi.com\u003e\nReviewed-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n\n"
    },
    {
      "commit": "8db559b83009bed92e1b5dd13a651ff273d9ff62",
      "tree": "b25e521434747cc11e958a71ad24c47117db4e08",
      "parents": [
        "4446a36ff8c74ac3b32feb009b651048e129c6af"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon May 12 21:21:05 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon May 19 10:01:36 2008 +0200"
      },
      "message": "rcu: add memory barriers and comments to rcu_check_callbacks()\n\nAdd comments to the logic that infers quiescent states when interrupting\nfrom either user mode or the idle loop.  Also add a memory barrier: it\nappears that James Huang was in fact onto something, as the scheduler\nis much less synchronization happy than it once was, so we can no longer\nrely on its memory barriers in all cases.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReported-by: James Huang \u003cjamesclhuang@yahoo.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "e260be673a15b6125068270e0216a3bfbfc12f87",
      "tree": "f50760606d395bf6faa9e865f814761a3c88d32c",
      "parents": [
        "e0ecfa7917cafe72f4a75f87e8bb5d8d51dc534f"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Jan 25 21:08:24 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:24 2008 +0100"
      },
      "message": "Preempt-RCU: implementation\n\nThis patch implements a new version of RCU which allows its read-side\ncritical sections to be preempted. It uses a set of counter pairs\nto keep track of the read-side critical sections and flips them\nwhen all tasks exit read-side critical section. The details\nof this implementation can be found in this paper -\n\n\thttp://www.rdrop.com/users/paulmck/RCU/OLSrtRCU.2006.08.11a.pdf\n\nand the article-\n\n\thttp://lwn.net/Articles/253651/\n\nThis patch was developed as a part of the -rt kernel development and\nmeant to provide better latencies when read-side critical sections of\nRCU don\u0027t disable preemption.  As a consequence of keeping track of RCU\nreaders, the readers have a slight overhead (optimizations in the paper).\nThis implementation co-exists with the \"classic\" RCU implementations\nand can be switched to at compiler.\n\nAlso includes RCU tracing summarized in debugfs.\n\n[ akpm@linux-foundation.org: build fixes on non-preempt architectures ]\n\nSigned-off-by: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nSigned-off-by: Dipankar Sarma \u003cdipankar@in.ibm.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@us.ibm.com\u003e\nReviewed-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e0ecfa7917cafe72f4a75f87e8bb5d8d51dc534f",
      "tree": "92106dbd88530d3884bc6c4d1c088cba1ad8630e",
      "parents": [
        "01c1c660f4b8086cad7a62345fd04290f3d82c8f"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Jan 25 21:08:24 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:24 2008 +0100"
      },
      "message": "Preempt-RCU: fix rcu_barrier for preemptive environment.\n\nFix rcu_barrier() to work properly in preemptive kernel environment.\nAlso, the ordering of callback must be preserved while moving\ncallbacks to another CPU during CPU hotplug.\n\nSigned-off-by: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nSigned-off-by: Dipankar Sarma \u003cdipankar@in.ibm.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "01c1c660f4b8086cad7a62345fd04290f3d82c8f",
      "tree": "bd09ab1fc3f9e267b1ea78f1a41b121175e1585a",
      "parents": [
        "c2d727aa2ff17a1c8e5ed1e5e231bb8579b27e82"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Jan 25 21:08:24 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:24 2008 +0100"
      },
      "message": "Preempt-RCU: reorganize RCU code into rcuclassic.c and rcupdate.c\n\nThis patch re-organizes the RCU code to enable multiple implementations\nof RCU. Users of RCU continues to include rcupdate.h and the\nRCU interfaces remain the same. This is in preparation for\nsubsequently merging the preemptible RCU implementation.\n\nSigned-off-by: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nSigned-off-by: Dipankar Sarma \u003cdipankar@in.ibm.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    }
  ]
}
