)]}'
{
  "log": [
    {
      "commit": "d7240b988017521ebf89edfadd42c0942f166850",
      "tree": "07bdbb42405e0d247f719d45464760d0dd12864c",
      "parents": [
        "4ab0a9409af5fad74ad1fc9e46d5a8b460f353e9"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jan 29 10:08:01 2009 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 30 18:31:08 2009 +0100"
      },
      "message": "generic-ipi: use per cpu data for single cpu ipi calls\n\nThe smp_call_function can be passed a wait parameter telling it to\nwait for all the functions running on other CPUs to complete before\nreturning, or to return without waiting. Unfortunately, this is\ncurrently just a suggestion and not manditory. That is, the\nsmp_call_function can decide not to return and wait instead.\n\nThe reason for this is because it uses kmalloc to allocate storage\nto send to the called CPU and that CPU will free it when it is done.\nBut if we fail to allocate the storage, the stack is used instead.\nThis means we must wait for the called CPU to finish before\ncontinuing.\n\nUnfortunatly, some callers do no abide by this hint and act as if\nthe non-wait option is mandatory. The MTRR code for instance will\ndeadlock if the smp_call_function is set to wait. This is because\nthe smp_call_function will wait for the other CPUs to finish their\ncalled functions, but those functions are waiting on the caller to\ncontinue.\n\nThis patch changes the generic smp_call_function code to use per cpu\nvariables if the allocation of the data fails for a single CPU call. The\nsmp_call_function_many will fall back to the smp_call_function_single\nif it fails its alloc. The smp_call_function_single is modified\nto not force the wait state.\n\nSince we now are using a single data per cpu we must synchronize the\ncallers to prevent a second caller modifying the data before the\nfirst called IPI functions complete. To do so, I added a flag to\nthe call_single_data called CSD_FLAG_LOCK. When the single CPU is\ncalled (which can be called when a many call fails an alloc), we\nset the LOCK bit on this per cpu data. When the caller finishes\nit clears the LOCK bit.\n\nThe caller must wait till the LOCK bit is cleared before setting\nit. When it is cleared, there is no IPI function using it.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nAcked-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "4f4b6c1a94a8735bbdc030a2911cf395495645b6",
      "tree": "0572f8b8be03a32b4ae7b3deb4b1412226a0f598",
      "parents": [
        "9e2f913df70b378379a358a44e7d286f7b765e8e"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jan 01 10:12:15 2009 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jan 01 10:12:15 2009 +1030"
      },
      "message": "cpumask: prepare for iterators to only go to nr_cpu_ids/nr_cpumask_bits.: core\n\nImpact: cleanup\n\nIn future, all cpumask ops will only be valid (in general) for bit\nnumbers \u003c nr_cpu_ids.  So use that instead of NR_CPUS in iterators\nand other comparisons.\n\nThis is always safe: no cpu number can be \u003e\u003d nr_cpu_ids, and\nnr_cpu_ids is initialized to NR_CPUS at boot.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: James Morris \u003cjmorris@namei.org\u003e\nCc: Eric Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "ce47d974f71af26d00832e83a43ac79bec272d99",
      "tree": "eb2434bd6f6afefcfb1ec4b03c0886f371b81067",
      "parents": [
        "54b11e6d57a10aa9d0009efd93873e17bffd5d30"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Dec 30 09:05:17 2008 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Dec 30 09:05:17 2008 +1030"
      },
      "message": "cpumask: arch_send_call_function_ipi_mask: core\n\nImpact: new API to reduce stack usage\n\nWe\u0027re weaning the core code off handing cpumask\u0027s around on-stack.\nThis introduces arch_send_call_function_ipi_mask().\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "54b11e6d57a10aa9d0009efd93873e17bffd5d30",
      "tree": "ac09296e7b0726aa6143913526f8983fae1cb497",
      "parents": [
        "3fa41520696fec2815e2d88fbcccdda77ba4d693"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Dec 30 09:05:16 2008 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Dec 30 09:05:16 2008 +1030"
      },
      "message": "cpumask: smp_call_function_many()\n\nImpact: Implementation change to remove cpumask_t from stack.\n\nActually change smp_call_function_mask() to smp_call_function_many().\nWe avoid cpumasks on the stack in this version.\n\n(S390 has its own version, but that\u0027s going away apparently).\n\nWe have to do some dancing to figure out if 0 or 1 other cpus are in\nthe mask supplied and the online mask without allocating a tmp\ncpumask.  It\u0027s still fairly cheap.\n\nWe allocate the cpumask at the end of the call_function_data\nstructure: if allocation fails we fallback to smp_call_function_single\nrather than using the baroque quiescing code (which needs a cpumask on\nstack).\n\n(Thanks to Hiroshi Shimamoto for spotting several bugs in previous versions!)\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\nCc: Hiroshi Shimamoto \u003ch-shimamoto@ct.jp.nec.com\u003e\nCc: npiggin@suse.de\nCc: axboe@kernel.dk\n"
    },
    {
      "commit": "561920a0d2bb6d63343e83acfd784c0a77bd28d1",
      "tree": "7b87d9d867296d4a14e9b287129fcfd0b2cd1b47",
      "parents": [
        "e78042e5b83936b1d12a4b5bbb492bdd88ad76c6"
      ],
      "author": {
        "name": "Suresh Siddha",
        "email": "suresh.b.siddha@intel.com",
        "time": "Thu Oct 30 18:28:41 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Nov 06 08:41:56 2008 +0100"
      },
      "message": "generic-ipi: fix the smp_mb() placement\n\nsmp_mb() is needed (to make the memory operations visible globally) before\nsending the ipi on the sender and the receiver (on Alpha atleast) needs\nsmp_read_barrier_depends() in the handler before reading the call_single_queue\nlist in a lock-free fashion.\n\nOn x86, x2apic mode register accesses for sending IPI\u0027s don\u0027t have serializing\nsemantics. So the need for smp_mb() before sending the IPI becomes more\ncritical in x2apic mode.\n\nRemove the unnecessary smp_mb() in csd_flag_wait(), as the presence of that\nsmp_mb() doesn\u0027t mean anything on the sender, when the ipi receiver is not\ndoing any thing special (like memory fence) after clearing the CSD_FLAG_WAIT.\n\nSigned-off-by: Suresh Siddha \u003csuresh.b.siddha@intel.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "f73be6dedf4fa058ce80846dae604b08fa805ca1",
      "tree": "eb38c111bedf6b356db3af20ab124dff846643cb",
      "parents": [
        "2a61812af2e564cba2c8170cf96e1c823210f619"
      ],
      "author": {
        "name": "H. Peter Anvin",
        "email": "hpa@zytor.com",
        "time": "Mon Aug 25 17:07:14 2008 -0700"
      },
      "committer": {
        "name": "H. Peter Anvin",
        "email": "hpa@zytor.com",
        "time": "Mon Aug 25 17:45:48 2008 -0700"
      },
      "message": "smp: have smp_call_function_single() detect invalid CPUs\n\nHave smp_call_function_single() return invalid CPU indicies and return\n-ENXIO.  This function is already executed inside a\nget_cpu()..put_cpu() which locks out CPU removal, so rather than\nhaving the higher layers doing another layer of locking to guard\nagainst unplugged CPUs do the test here.\n\nSigned-off-by: H. Peter Anvin \u003chpa@zytor.com\u003e\n"
    },
    {
      "commit": "c2fc11985db304572322f1dcdcb0f71337315006",
      "tree": "330196cefd4eb0ad3b4999fb14518a62f0294d93",
      "parents": [
        "23a0ee908cbfba3264d19729c67c22b20fa73886"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "nickpiggin@yahoo.com.au",
        "time": "Tue Aug 12 18:05:13 2008 +1000"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Aug 12 11:21:27 2008 +0200"
      },
      "message": "generic-ipi: fix stack and rcu interaction bug in smp_call_function_mask(), fix\n\n\u003e \u003e Nick Piggin (1):\n\u003e \u003e       generic-ipi: fix stack and rcu interaction bug in\n\u003e \u003e smp_call_function_mask()\n\u003e\n\u003e I\u0027m still not 100% sure that I have this patch right... I might have seen\n\u003e a lockup trace implicating the smp call function path... which may have\n\u003e been due to some other problem or a different bug in the new call function\n\u003e code, but if some more people can take a look at it before merging?\n\nOK indeed it did have a couple of bugs. Firstly, I wasn\u0027t freeing the\ndata properly in the alloc \u0026\u0026 wait case. Secondly, I wasn\u0027t resetting\nCSD_FLAG_WAIT in the for each cpu loop (so only the first CPU would\nwait).\n\nAfter those fixes, the patch boots and runs with the kmalloc commented\nout (so it always executes the slowpath).\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "cc7a486cac78f6fc1a24e8cd63036bae8d2ab431",
      "tree": "258abdc1843d6f9ed76608412f1364178fb8c697",
      "parents": [
        "796aadeb1b2db9b5d463946766c5bbfd7717158c"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "nickpiggin@yahoo.com.au",
        "time": "Mon Aug 11 13:49:30 2008 +1000"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Aug 11 15:21:28 2008 +0200"
      },
      "message": "generic-ipi: fix stack and rcu interaction bug in smp_call_function_mask()\n\n* Venki Pallipadi \u003cvenkatesh.pallipadi@intel.com\u003e wrote:\n\n\u003e Found a OOPS on a big SMP box during an overnight reboot test with\n\u003e upstream git.\n\u003e\n\u003e Suresh and I looked at the oops and looks like the root cause is in\n\u003e generic_smp_call_function_interrupt() and smp_call_function_mask() with\n\u003e wait parameter.\n\u003e\n\u003e The actual oops looked like\n\u003e\n\u003e [   11.277260] BUG: unable to handle kernel paging request at ffff8802ffffffff\n\u003e [   11.277815] IP: [\u003cffff8802ffffffff\u003e] 0xffff8802ffffffff\n\u003e [   11.278155] PGD 202063 PUD 0\n\u003e [   11.278576] Oops: 0010 [1] SMP\n\u003e [   11.279006] CPU 5\n\u003e [   11.279336] Modules linked in:\n\u003e [   11.279752] Pid: 0, comm: swapper Not tainted 2.6.27-rc2-00020-g685d87f #290\n\u003e [   11.280039] RIP: 0010:[\u003cffff8802ffffffff\u003e]  [\u003cffff8802ffffffff\u003e] 0xffff8802ffffffff\n\u003e [   11.280692] RSP: 0018:ffff88027f1f7f70  EFLAGS: 00010086\n\u003e [   11.280976] RAX: 00000000ffffffff RBX: 0000000000000000 RCX: 0000000000000000\n\u003e [   11.281264] RDX: 0000000000004f4e RSI: 0000000000000001 RDI: 0000000000000000\n\u003e [   11.281624] RBP: ffff88027f1f7f98 R08: 0000000000000001 R09: ffffffff802509af\n\u003e [   11.281925] R10: ffff8800280c2780 R11: 0000000000000000 R12: ffff88027f097d48\n\u003e [   11.282214] R13: ffff88027f097d70 R14: 0000000000000005 R15: ffff88027e571000\n\u003e [   11.282502] FS:  0000000000000000(0000) GS:ffff88027f1c3340(0000) knlGS:0000000000000000\n\u003e [   11.283096] CS:  0010 DS: 0018 ES: 0018 CR0: 000000008005003b\n\u003e [   11.283382] CR2: ffff8802ffffffff CR3: 0000000000201000 CR4: 00000000000006e0\n\u003e [   11.283760] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000\n\u003e [   11.284048] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400\n\u003e [   11.284337] Process swapper (pid: 0, threadinfo ffff88027f1f2000, task ffff88027f1f0640)\n\u003e [   11.284936] Stack:  ffffffff80250963 0000000000000212 0000000000ee8c78 0000000000ee8a66\n\u003e [   11.285802]  ffff88027e571550 ffff88027f1f7fa8 ffffffff8021adb5 ffff88027f1f3e40\n\u003e [   11.286599]  ffffffff8020bdd6 ffff88027f1f3e40 \u003cEOI\u003e  ffff88027f1f3ef8 0000000000000000\n\u003e [   11.287120] Call Trace:\n\u003e [   11.287768]  \u003cIRQ\u003e  [\u003cffffffff80250963\u003e] ? generic_smp_call_function_interrupt+0x61/0x12c\n\u003e [   11.288354]  [\u003cffffffff8021adb5\u003e] smp_call_function_interrupt+0x17/0x27\n\u003e [   11.288744]  [\u003cffffffff8020bdd6\u003e] call_function_interrupt+0x66/0x70\n\u003e [   11.289030]  \u003cEOI\u003e  [\u003cffffffff8024ab3b\u003e] ? clockevents_notify+0x19/0x73\n\u003e [   11.289380]  [\u003cffffffff803b9b75\u003e] ? acpi_idle_enter_simple+0x18b/0x1fa\n\u003e [   11.289760]  [\u003cffffffff803b9b6b\u003e] ? acpi_idle_enter_simple+0x181/0x1fa\n\u003e [   11.290051]  [\u003cffffffff8053aeca\u003e] ? cpuidle_idle_call+0x70/0xa2\n\u003e [   11.290338]  [\u003cffffffff80209f61\u003e] ? cpu_idle+0x5f/0x7d\n\u003e [   11.290723]  [\u003cffffffff8060224a\u003e] ? start_secondary+0x14d/0x152\n\u003e [   11.291010]\n\u003e [   11.291287]\n\u003e [   11.291654] Code:  Bad RIP value.\n\u003e [   11.292041] RIP  [\u003cffff8802ffffffff\u003e] 0xffff8802ffffffff\n\u003e [   11.292380]  RSP \u003cffff88027f1f7f70\u003e\n\u003e [   11.292741] CR2: ffff8802ffffffff\n\u003e [   11.310951] ---[ end trace 137c54d525305f1c ]---\n\u003e\n\u003e The problem is with the following sequence of events:\n\u003e\n\u003e - CPU A calls smp_call_function_mask() for CPU B with wait parameter\n\u003e - CPU A sets up the call_function_data on the stack and does an rcu add to\n\u003e   call_function_queue\n\u003e - CPU A waits until the WAIT flag is cleared\n\u003e - CPU B gets the call function interrupt and starts going through the\n\u003e   call_function_queue\n\u003e - CPU C also gets some other call function interrupt and starts going through\n\u003e   the call_function_queue\n\u003e - CPU C, which is also going through the call_function_queue, starts referencing\n\u003e   CPU A\u0027s stack, as that element is still in call_function_queue\n\u003e - CPU B finishes the function call that CPU A set up and as there are no other\n\u003e   references to it, rcu deletes the call_function_data (which was from CPU A\n\u003e   stack)\n\u003e - CPU B sees the wait flag and just clears the flag (no call_rcu to free)\n\u003e - CPU A which was waiting on the flag continues executing and the stack\n\u003e   contents change\n\u003e\n\u003e - CPU C is still in rcu_read section accessing the CPU A\u0027s stack sees\n\u003e   inconsistent call_funation_data and can try to execute\n\u003e   function with some random pointer, causing stack corruption for A\n\u003e   (by clearing the bits in mask field) and oops.\n\nNice debugging work.\n\nI\u0027d suggest something like the attached (boot tested) patch as the simple\nfix for now.\n\nI expect the benefits from the less synchronized, multiple-in-flight-data\nglobal queue will still outweigh the costs of dynamic allocations. But\nif worst comes to worst then we just go back to a globally synchronous\none-at-a-time implementation, but that would be pretty sad!\n\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": "63cf13b77ab785e87c867defa8545e6d4a989774",
      "tree": "b71d0a77a59f58f90de9d24d3ecaf6f4eab67fca",
      "parents": [
        "59190f4213462f191fc0d22d39b1cf18ea39ca39"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Tue Jul 15 13:22:49 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 15 14:12:20 2008 -0700"
      },
      "message": "generic ipi function calls: wait on alloc failure fallback\n\nWhen a GFP_ATOMIC allocation fails, it falls back to allocating the\ndata on the stack and converting it to a waiting call.\n\nMake sure we actually wait in this case.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy.fitzhardinge@citrix.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "59190f4213462f191fc0d22d39b1cf18ea39ca39",
      "tree": "8f30fa62ae7d8948e7974dfecede3d6a41ae3ec3",
      "parents": [
        "64fd52a52077d3cd5a778ca031c0aaecf885eaa6",
        "f6f88e9bfb6ced9871ed65ebe85c371de3c9e4be"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 15 14:02:33 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 15 14:12:03 2008 -0700"
      },
      "message": "Merge branch \u0027generic-ipi-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027generic-ipi-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (22 commits)\n  generic-ipi: more merge fallout\n  generic-ipi: merge fix\n  x86, visws: use mach-default/entry_arch.h\n  x86, visws: fix generic-ipi build\n  generic-ipi: fixlet\n  generic-ipi: fix s390 build bug\n  generic-ipi: fix linux-next tree build failure\n  fix: \"smp_call_function: get rid of the unused nonatomic/retry argument\"\n  fix: \"smp_call_function: get rid of the unused nonatomic/retry argument\"\n  fix \"smp_call_function: get rid of the unused nonatomic/retry argument\"\n  on_each_cpu(): kill unused \u0027retry\u0027 parameter\n  smp_call_function: get rid of the unused nonatomic/retry argument\n  sh: convert to generic helpers for IPI function calls\n  parisc: convert to generic helpers for IPI function calls\n  mips: convert to generic helpers for IPI function calls\n  m32r: convert to generic helpers for IPI function calls\n  arm: convert to generic helpers for IPI function calls\n  alpha: convert to generic helpers for IPI function calls\n  ia64: convert to generic helpers for IPI function calls\n  powerpc: convert to generic helpers for IPI function calls\n  ...\n\nFix trivial conflicts due to rcu updates in kernel/rcupdate.c manually\n"
    },
    {
      "commit": "ce0d1b6f73870878aae622b72e85fe8f7a16b51c",
      "tree": "da0be66d6c13e4b2bc4f304b3c367f60839d1c31",
      "parents": [
        "127a237a1ff49fa5b8e00af91e841598aeea3513"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jun 27 11:50:32 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jun 27 11:50:32 2008 +0200"
      },
      "message": "fix: \"smp_call_function: get rid of the unused nonatomic/retry argument\"\n\nfix:\n\nkernel/smp.c: In function \u0027smp_call_function_mask\u0027:\nkernel/smp.c:303: error: too many arguments to function \u0027smp_call_function_single\u0027\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\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": "3d4422332711ef48ef0f132f1fcbfcbd56c7f3d1",
      "tree": "9fd3cfa9825e8cb0b7e08dfae85cc9a722442849",
      "parents": [
        "543cf4cb3fe6f6cae3651ba918b9c56200b257d0"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jun 26 11:21:34 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jun 26 11:21:34 2008 +0200"
      },
      "message": "Add generic helpers for arch IPI function calls\n\nThis adds kernel/smp.c which contains helpers for IPI function calls. In\naddition to supporting the existing smp_call_function() in a more efficient\nmanner, it also adds a more scalable variant called smp_call_function_single()\nfor calling a given function on a single CPU only.\n\nThe core of this is based on the x86-64 patch from Nick Piggin, lots of\nchanges since then. \"Alan D. Brunelle\" \u003cAlan.Brunelle@hp.com\u003e has\ncontributed lots of fixes and suggestions as well. Also thanks to\nPaul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e for reviewing RCU usage\nand getting rid of the data allocation fallback deadlock.\n\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nReviewed-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    }
  ]
}
