)]}'
{
  "log": [
    {
      "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": "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"
    }
  ]
}
