)]}'
{
  "log": [
    {
      "commit": "ed6d68763b8b589c0ae9d231cbd72bd01f6685c5",
      "tree": "df2ad85df56c40013eea6f0bd5806d1f94e0b8b7",
      "parents": [
        "59f9415ffb9759e950d775f4c400f747b332cc02"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Jul 31 10:31:02 2008 +0800"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Aug 12 17:52:55 2008 +1000"
      },
      "message": "stop_machine: remove unused variable\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "eeec4fad963490821348a331cca6102ae1c4a7a3",
      "tree": "163a7d9414d719fccac096d1ba822416f705b397",
      "parents": [
        "04321587584272f4e8b9818f319f40caf8eeee13"
      ],
      "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:30 2008 +1000"
      },
      "message": "stop_machine(): stop_machine_run() changed to use cpu mask\n\nInstead of a \"cpu\" arg with magic values NR_CPUS (any cpu) and ~0 (all\ncpus), pass a cpumask_t.  Allow NULL for the common case (where we\ndon\u0027t care which CPU the function is run on): temporary cpumask_t\u0027s\nare usually considered bad for stack space.\n\nThis deprecates stop_machine_run, to be removed soon when all the\ncallers are dead.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "ffdb5976c47609c862917d4c186ecbb5706d2dda",
      "tree": "7a8485260922290080094adc25f3cbebd4ad506b",
      "parents": [
        "5c2aed622571ac7c3c6ec182d6d3c318e4b45c8b"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Jul 28 12:16:28 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Jul 28 12:16:29 2008 +1000"
      },
      "message": "Simplify stop_machine\n\nstop_machine creates a kthread which creates kernel threads.  We can\ncreate those threads directly and simplify things a little.  Some care\nmust be taken with CPU hotunplug, which has special needs, but that code\nseems more robust than it was in the past.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nAcked-by: Christian Borntraeger \u003cborntraeger@de.ibm.com\u003e\n"
    },
    {
      "commit": "5c2aed622571ac7c3c6ec182d6d3c318e4b45c8b",
      "tree": "0a3b422b16cd0725eebbe5047fd5482583279d8a",
      "parents": [
        "15bba37d62351749c3915add81f673b256952ee1"
      ],
      "author": {
        "name": "Jason Baron",
        "email": "jbaron@redhat.com",
        "time": "Thu Feb 28 11:33:03 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Jul 28 12:16:28 2008 +1000"
      },
      "message": "stop_machine: add ALL_CPUS option\n\n-allow stop_mahcine_run() to call a function on all cpus. Calling\n stop_machine_run() with a \u0027ALL_CPUS\u0027 invokes this new behavior.\n stop_machine_run() proceeds as normal until the calling cpu has\n invoked \u0027fn\u0027. Then, we tell all the other cpus to call \u0027fn\u0027.\n\nSigned-off-by: Jason Baron \u003cjbaron@redhat.com\u003e\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCC: Adrian Bunk \u003cbunk@stusta.de\u003e\nCC: Andi Kleen \u003candi@firstfloor.org\u003e\nCC: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCC: Christoph Hellwig \u003chch@infradead.org\u003e\nCC: mingo@elte.hu\nCC: akpm@osdl.org\n"
    },
    {
      "commit": "65c011845316d3c1381f478ca0d8265c43b3b039",
      "tree": "a7e29e92a1ad0440ef5fe16dc16d73e8bf7983d2",
      "parents": [
        "bb2c018b09b681d43f5e08124b83e362647ea82b"
      ],
      "author": {
        "name": "Mike Travis",
        "email": "travis@sgi.com",
        "time": "Tue Jul 15 14:14:30 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jul 18 22:02:57 2008 +0200"
      },
      "message": "cpumask: Replace cpumask_of_cpu with cpumask_of_cpu_ptr\n\n  * This patch replaces the dangerous lvalue version of cpumask_of_cpu\n    with new cpumask_of_cpu_ptr macros.  These are patterned after the\n    node_to_cpumask_ptr macros.\n\n    In general terms, if there is a cpumask_of_cpu_map[] then a pointer to\n    the cpumask_of_cpu_map[cpu] entry is used.  The cpumask_of_cpu_map\n    is provided when there is a large NR_CPUS count, reducing\n    greatly the amount of code generated and stack space used for\n    cpumask_of_cpu().  The pointer to the cpumask_t value is needed for\n    calling set_cpus_allowed_ptr() to reduce the amount of stack space\n    needed to pass the cpumask_t value.\n\n    If there isn\u0027t a cpumask_of_cpu_map[], then a temporary variable is\n    declared and filled in with value from cpumask_of_cpu(cpu) as well as\n    a pointer variable pointing to this temporary variable.  Afterwards,\n    the pointer is used to reference the cpumask value.  The compiler\n    will optimize out the extra dereference through the pointer as well\n    as the stack space used for the pointer, resulting in identical code.\n\n    A good example of the orthogonal usages is in net/sunrpc/svc.c:\n\n\tcase SVC_POOL_PERCPU:\n\t{\n\t\tunsigned int cpu \u003d m-\u003epool_to[pidx];\n\t\tcpumask_of_cpu_ptr(cpumask, cpu);\n\n\t\t*oldmask \u003d current-\u003ecpus_allowed;\n\t\tset_cpus_allowed_ptr(current, cpumask);\n\t\treturn 1;\n\t}\n\tcase SVC_POOL_PERNODE:\n\t{\n\t\tunsigned int node \u003d m-\u003epool_to[pidx];\n\t\tnode_to_cpumask_ptr(nodecpumask, node);\n\n\t\t*oldmask \u003d current-\u003ecpus_allowed;\n\t\tset_cpus_allowed_ptr(current, nodecpumask);\n\t\treturn 1;\n\t}\n\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\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": "3401a61e16a5b852d4e353c8850c857105a67a9c",
      "tree": "5e05731a790c48512c7fe41c5fc83b0fee6081e3",
      "parents": [
        "4d2e7d0d77e4e1e8a21cc990c607985fdba20e66"
      ],
      "author": {
        "name": "Christian Borntraeger",
        "email": "borntraeger@de.ibm.com",
        "time": "Thu May 08 15:20:38 2008 +0200"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri May 23 13:09:34 2008 +1000"
      },
      "message": "stop_machine: make stop_machine_run more virtualization friendly\n\nOn kvm I have seen some rare hangs in stop_machine when I used more guest\ncpus than hosts cpus. e.g. 32 guest cpus on 1 host cpu triggered the\nhang quite often. I could also reproduce the problem on a 4 way z/VM host with\na 64 way guest.\n\nIt turned out that the guest was consuming all available cpus mostly for\nspinning on scheduler locks like rq-\u003elock. This is expected as the threads are\ncalling yield all the time.\nThe problem is now, that the host scheduling decisings together with the guest\nscheduling decisions and spinlocks not being fair managed to create an\ninteresting scenario similar to a live lock. (Sometimes the hang resolved\nitself after some minutes)\n\nChanging stop_machine to yield the cpu to the hypervisor when yielding inside\nthe guest fixed the problem for me. While I am not completely happy with this\npatch, I think it causes no harm and it really improves the situation for me.\n\nI used cpu_relax for yielding to the hypervisor, does that work on all\narchitectures?\n\np.s.: If you want to reproduce the problem, cpu hotplug and kprobes use\nstop_machine_run and both triggered the problem after some retries.\n\nSigned-off-by: Christian Borntraeger \u003cborntraeger@de.ibm.com\u003e\nCC: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "e9b62693ae0a1e13ccc97a6792d9a7770c8d1b5b",
      "tree": "c676609730533fc1b7c5e01992e46b6eaf75f99b",
      "parents": [
        "548453fd107f789f5f1bc2dc13cc432ceb3b5efd",
        "838cb6aba4cebcf4fcd06b90e2adf890bef884ac"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 21 16:36:46 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 21 16:36:46 2008 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/juhl/trivial\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/juhl/trivial: (24 commits)\n  DOC:  A couple corrections and clarifications in USB doc.\n  Generate a slightly more informative error msg for bad HZ\n  fix typo \"is\" -\u003e \"if\" in Makefile\n  ext*: spelling fix prefered -\u003e preferred\n  DOCUMENTATION:  Use newer DEFINE_SPINLOCK macro in docs.\n  KEYS:  Fix the comment to match the file name in rxrpc-type.h.\n  RAID: remove trailing space from printk line\n  DMA engine: typo fixes\n  Remove unused MAX_NODES_SHIFT\n  MAINTAINERS: Clarify access to OCFS2 development mailing list.\n  V4L: Storage class should be before const qualifier (sn9c102)\n  V4L: Storage class should be before const qualifier\n  sonypi: Storage class should be before const qualifier\n  intel_menlow: Storage class should be before const qualifier\n  DVB: Storage class should be before const qualifier\n  arm: Storage class should be before const qualifier\n  ALSA: Storage class should be before const qualifier\n  acpi: Storage class should be before const qualifier\n  firmware_sample_driver.c: fix coding style\n  MAINTAINERS: Add ati_remote2 driver\n  ...\n\nFixed up trivial conflicts in firmware_sample_driver.c\n"
    },
    {
      "commit": "429f731dea577bdd43693940cdca524135287e6a",
      "tree": "932337b7d23dd736612c6b6e6601c50bc24cfc5f",
      "parents": [
        "85b375a613085b78531ec86369a51c2f3b922f95",
        "d2f5e80862d33a7746a40569840248a592dbc395"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 21 15:41:27 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 21 15:41:27 2008 -0700"
      },
      "message": "Merge branch \u0027semaphore\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/willy/misc\n\n* \u0027semaphore\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/willy/misc:\n  Deprecate the asm/semaphore.h files in feature-removal-schedule.\n  Convert asm/semaphore.h users to linux/semaphore.h\n  security: Remove unnecessary inclusions of asm/semaphore.h\n  lib: Remove unnecessary inclusions of asm/semaphore.h\n  kernel: Remove unnecessary inclusions of asm/semaphore.h\n  include: Remove unnecessary inclusions of asm/semaphore.h\n  fs: Remove unnecessary inclusions of asm/semaphore.h\n  drivers: Remove unnecessary inclusions of asm/semaphore.h\n  net: Remove unnecessary inclusions of asm/semaphore.h\n  arch: Remove unnecessary inclusions of asm/semaphore.h\n"
    },
    {
      "commit": "f5264481c8049673e2cc8c7aca410931f571ba2d",
      "tree": "cfe54747b75be1c83d2102d9e7f80c650602fcdc",
      "parents": [
        "1fb7c6e4cba35b5e7cef88b58d0a2ad164d801a5"
      ],
      "author": {
        "name": "Pavel Machek",
        "email": "pavel@suse.cz",
        "time": "Mon Apr 21 22:15:06 2008 +0000"
      },
      "committer": {
        "name": "Jesper Juhl",
        "email": "juhl@hera.kernel.org",
        "time": "Mon Apr 21 22:15:06 2008 +0000"
      },
      "message": "trivial: small cleanups\n\nThese are small cleanups all over the tree.\n\nTrivial style and comment changes to\n  fs/select.c, kernel/signal.c, kernel/stop_machine.c \u0026 mm/pdflush.c\n\nSigned-off-by: Pavel Machek \u003cpavel@suse.cz\u003e\nSigned-off-by: Jesper Juhl \u003cjesper.juhl@gmail.com\u003e\n"
    },
    {
      "commit": "f70316dace2bb99730800d47044acb818c6735f6",
      "tree": "03c0178c8d6c0213a82b800f4a3e00c2da9a4d5c",
      "parents": [
        "fc0e474840d1fd96f28fbd76d4f36b80e7ad1cc3"
      ],
      "author": {
        "name": "Mike Travis",
        "email": "travis@sgi.com",
        "time": "Fri Apr 04 18:11:06 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Apr 19 19:44:58 2008 +0200"
      },
      "message": "generic: use new set_cpus_allowed_ptr function\n\n  * Use new set_cpus_allowed_ptr() function added by previous patch,\n    which instead of passing the \"newly allowed cpus\" cpumask_t arg\n    by value,  pass it by pointer:\n\n    -int set_cpus_allowed(struct task_struct *p, cpumask_t new_mask)\n    +int set_cpus_allowed_ptr(struct task_struct *p, const cpumask_t *new_mask)\n\n  * Modify CPU_MASK_ALL\n\nDepends on:\n\t[sched-devel]: sched: add new set_cpus_allowed_ptr function\n\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a6550207538619bc9b90bac2e1d5e54902a432ad",
      "tree": "cc9bb9b5153810b544c2afcc7721353ff5ce957d",
      "parents": [
        "5a6483feb0c5193519625d0ea8c4254364d423cc"
      ],
      "author": {
        "name": "Matthew Wilcox",
        "email": "matthew@wil.cx",
        "time": "Tue Feb 26 10:47:18 2008 -0500"
      },
      "committer": {
        "name": "Matthew Wilcox",
        "email": "willy@linux.intel.com",
        "time": "Fri Apr 18 22:17:04 2008 -0400"
      },
      "message": "kernel: Remove unnecessary inclusions of asm/semaphore.h\n\nNone of these files use any of the functionality promised by\nasm/semaphore.h.\n\nSigned-off-by: Matthew Wilcox \u003cwilly@linux.intel.com\u003e\n"
    },
    {
      "commit": "6c6080f74c8d83a83a1e36bce803de15c0633898",
      "tree": "fd017cd3697ca30a169572018e88bf628983509b",
      "parents": [
        "bcf11cbeccd7d981d68567942ba6ec184890bc29"
      ],
      "author": {
        "name": "Daniel Walker",
        "email": "dwalker@mvista.com",
        "time": "Wed Feb 06 01:37:41 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 06 10:41:08 2008 -0800"
      },
      "message": "stopmachine: semaphore to mutex\n\n[akpm@linux-foundation.org: cleanup]\nSigned-off-by: Daniel Walker \u003cdwalker@mvista.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": "86ef5c9a8edd78e6bf92879f32329d89b2d55b5a",
      "tree": "7bf46885326a6fdbb0c3596855408e9a5634dd3a",
      "parents": [
        "d221938c049f4845da13c8593132595a6b9222a8"
      ],
      "author": {
        "name": "Gautham R Shenoy",
        "email": "ego@in.ibm.com",
        "time": "Fri Jan 25 21:08:02 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:02 2008 +0100"
      },
      "message": "cpu-hotplug: replace lock_cpu_hotplug() with get_online_cpus()\n\nReplace all lock_cpu_hotplug/unlock_cpu_hotplug from the kernel and use\nget_online_cpus and put_online_cpus instead as it highlights the\nrefcount semantics in these operations.\n\nThe new API guarantees protection against the cpu-hotplug operation, but\nit doesn\u0027t guarantee serialized access to any of the local data\nstructures. Hence the changes needs to be reviewed.\n\nIn case of pseries_add_processor/pseries_remove_processor, use\ncpu_maps_update_begin()/cpu_maps_update_done() as we\u0027re modifying the\ncpu_present_map there.\n\nSigned-off-by: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "85653af7d488702165eba72c6c1dd0250fae4e70",
      "tree": "f2e1340e3c19eda7c28b1c73c1f9f39c13e381a1",
      "parents": [
        "647bd61a5f3a51a38c670f91af9d861ad66149a3"
      ],
      "author": {
        "name": "Satoru Takeuchi",
        "email": "takeuchi_satoru@jp.fujitsu.com",
        "time": "Sun Jul 15 23:39:47 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:41 2007 -0700"
      },
      "message": "Fix stop_machine_run problem with naughty real time process\n\nstop_machine_run() does its work on \"kstopmachine\" thread having max\npriority.  However that thread get such priority after woken up.\nTherefore, in the following case ...\n\n  - \"kstopmachine\" try to run on CPU1\n\n  - There is a real time process which doesn\u0027t relinquish CPU time\n    voluntary on CPU1\n\n...  \"kstopmachine\" can\u0027t start to run and the CPU on which\n    stop_machine_run() is runing hangs up.  To fix this problem, call\n    sched_setscheduler() before waking up that thread.\n\nSigned-off-by: Satoru Takeuchi \u003ctakeuchi_satoru@jp.fujitsu.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Ashok Raj \u003cashok.raj@intel.com\u003e\nCc: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a12bb44471b819c7f33d8a83044e7116c124e3d5",
      "tree": "cdf3fee16c535d70659fd343d11b3578941f3596",
      "parents": [
        "2d3fbbb391e280724f7f7804ab00ff61cf1b6a4c"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Thu May 10 22:22:47 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri May 11 08:29:34 2007 -0700"
      },
      "message": "stop_machine() now uses hard_irq_disable\n\nAdd a call to hard_irq_disable() to stop_machine so that we make sure IRQs are\nreally disabled and not only lazy-disabled on archs like powerpc as some users\nof stop_machine() may rely on that.\n\n[akpm@linux-foundation.org: build fix]\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nAcked-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ee527cd3a20c2aeaac17d939e5d011f7a76d69f5",
      "tree": "113e8dd439c5a3656be07058f055e6340ad41623",
      "parents": [
        "616883df78bd4b3fcdb6ddc39bd3d4cb902bfa32"
      ],
      "author": {
        "name": "Prarit Bhargava",
        "email": "prarit@redhat.com",
        "time": "Tue May 08 00:25:08 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:00 2007 -0700"
      },
      "message": "Use stop_machine_run in the Intel RNG driver\n\nReplace call_smp_function with stop_machine_run in the Intel RNG driver.\n\nCPU A has done read_lock(\u0026lock)\nCPU B has done write_lock_irq(\u0026lock) and is waiting for A to release the lock.\n\nA third CPU calls call_smp_function and issues the IPI.  CPU A takes CPU\nC\u0027s IPI.  CPU B is waiting with interrupts disabled and does not see the\nIPI.  CPU C is stuck waiting for CPU B to respond to the IPI.\n\nDeadlock.\n\nThe solution is to use stop_machine_run instead of call_smp_function\n(call_smp_function should not be called in situations where the CPUs may be\nsuspended).\n\n[haruo.tomita@toshiba.co.jp: fix a typo in mod_init()]\n[haruo.tomita@toshiba.co.jp: fix memory leak]\nSigned-off-by: Prarit Bhargava \u003cprarit@redhat.com\u003e\nCc: Jan Beulich \u003cjbeulich@novell.com\u003e\nCc: \"Tomita, Haruo\" \u003charuo.tomita@toshiba.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e5582ca21af82929d5cd3613321ac9233c492ebc",
      "tree": "33d2b5cc6a42efac04320c7b566c55ca5388dfe9",
      "parents": [
        "39f0247d3823e4e0bf8f6838a10362864b1e1053"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Sep 29 02:01:35 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 29 09:18:24 2006 -0700"
      },
      "message": "[PATCH] stop_machine.c copyright\n\nI had to look back: this code was extracted from the module.c code in 2005.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4edb9a143e31d2e191c199262226e1a5923ff8f7",
      "tree": "c876dfb150124613dfb0564781de4fb2bf424d7c",
      "parents": [
        "ecdc63948763586e101108dfe1ba316ec069fe39"
      ],
      "author": {
        "name": "Yingchao Zhou",
        "email": "yingchao.zhou@gmail.com",
        "time": "Sun Aug 27 01:23:46 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Aug 27 11:01:31 2006 -0700"
      },
      "message": "[PATCH] Remove redundant up() in stop_machine()\n\nAn up() is called in kernel/stop_machine.c on failure, and also in the\ncaller (unconditionally).\n\nSigned-off-by: Zhou Yingchao \u003cyingchao.zhou@gmail.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d8cb7c1ded6e5a80a7335716dde60784a0d51c1d",
      "tree": "e7c975ad049fa84549ef1c9fef45f9f96ccae829",
      "parents": [
        "38c54ee8d5338f49aca986081ea41a987c15cf9d"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Mon Jul 03 17:32:22 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 03 21:25:20 2006 -0700"
      },
      "message": "[PATCH] revert \"kthread: convert stop_machine into a kthread\"\n\nJiri reports that the stop_machin kthread conversion caused his machine to\nhang when suspending.  Hyperthreading is apparently involved.\n\nI don\u0027t see why that would be and I can\u0027t reproduce it.  Revert to the 2.6.17\ncode.\n\nCc: \"Serge E. Hallyn\" \u003cserue@us.ibm.com\u003e\nCc: Jiri Slaby \u003cjirislaby@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8bdd1d1250d55afe403ac4affa6ccc5f9e60468f",
      "tree": "b7ffa764ccaa88e07753f9a75d837ea47ea9ea01",
      "parents": [
        "2b943cf09d75c0dfbfd22548988df48f6c24c727"
      ],
      "author": {
        "name": "Serge E. Hallyn",
        "email": "serue@us.ibm.com",
        "time": "Sun Jun 25 05:49:08 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jun 25 10:01:22 2006 -0700"
      },
      "message": "[PATCH] kthread: convert stop_machine into a kthread\n\n- Update stop_machine.c to spawn stop_machine as kthreads rather than the\n  deprecated kernel_threads.\n\n- Update stop_machine to use the more efficient kthread_bind() before\n  running task in place of set_cpus_allowed() after.\n\n[akpm@osdl.org: remove now-wrong set_cpus_allowed()]\nSigned-off-by: Serge E. Hallyn \u003cserue@us.ibm.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ed653a640419cd9d1ad0f8dc176478e6634a694e",
      "tree": "9d7868679e51e7152e1fedfd34514b79ec3e4048",
      "parents": [
        "df2e71fb9115a8d4f721fb1464db09adc8332bc5"
      ],
      "author": {
        "name": "akpm@osdl.org",
        "email": "akpm@osdl.org",
        "time": "Mon Jan 09 20:51:38 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jan 10 08:01:25 2006 -0800"
      },
      "message": "[PATCH] Remove set_fs() in stop_machine()\n\n\r)\n\nFrom: Brian Gerst \u003cbgerst@didntduck.org\u003e\n\nCall sched_setscheduler() directly instead.\n\nSigned-off-by: Brian Gerst \u003cbgerst@didntduck.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4557398f8cbaf9f254cff747534b4724c7f75c4f",
      "tree": "052b59279b1312a4fde83a76feb4a7a0c5cf7df1",
      "parents": [
        "c5b609797b8e212dbfaf23944da8bf8c53233d5c"
      ],
      "author": {
        "name": "Kirill Korotaev",
        "email": "dev@sw.ru",
        "time": "Sun Nov 13 16:07:30 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Nov 13 18:14:16 2005 -0800"
      },
      "message": "[PATCH] stop_machine() vs. synchronous IPI send deadlock\n\nThis fixes deadlock of stop_machine() vs.  synchronous IPI send.  The\nproblem is that stop_machine() disables interrupts before disabling\npreemption on other CPUs.  So if another CPU is preempted and then calls\nsomething like flush_tlb_all() it will deadlock with CPU doing\nstop_machine() and which can\u0027t process IPI due to disabled IRQs.\n\nI changed stop_machine() to do the same things exactly as it does on other\nCPUs, i.e.  it should disable preemption first on _all_ CPUs including\nitself and only after that disable IRQs.\n\nSigned-off-by: Kirill Korotaev \u003cdev@sw.ru\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: \"Andrey Savochkin\" \u003csaw@sawoct.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "39c715b71740c4a78ba4769fb54826929bac03cb",
      "tree": "94dd679dfc8e6c2db65971739aa8c8c6206f8174",
      "parents": [
        "84929801e14d968caeb84795bfbb88f04283fbd9"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jun 21 17:14:34 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Tue Jun 21 18:46:13 2005 -0700"
      },
      "message": "[PATCH] smp_processor_id() cleanup\n\nThis patch implements a number of smp_processor_id() cleanup ideas that\nArjan van de Ven and I came up with.\n\nThe previous __smp_processor_id/_smp_processor_id/smp_processor_id API\nspaghetti was hard to follow both on the implementational and on the\nusage side.\n\nSome of the complexity arose from picking wrong names, some of the\ncomplexity comes from the fact that not all architectures defined\n__smp_processor_id.\n\nIn the new code, there are two externally visible symbols:\n\n - smp_processor_id(): debug variant.\n\n - raw_smp_processor_id(): nondebug variant. Replaces all existing\n   uses of _smp_processor_id() and __smp_processor_id(). Defined\n   by every SMP architecture in include/asm-*/smp.h.\n\nThere is one new internal symbol, dependent on DEBUG_PREEMPT:\n\n - debug_smp_processor_id(): internal debug variant, mapped to\n                             smp_processor_id().\n\nAlso, i moved debug_smp_processor_id() from lib/kernel_lock.c into a new\nlib/smp_processor_id.c file.  All related comments got updated and/or\nclarified.\n\nI have build/boot tested the following 8 .config combinations on x86:\n\n {SMP,UP} x {PREEMPT,!PREEMPT} x {DEBUG_PREEMPT,!DEBUG_PREEMPT}\n\nI have also build/boot tested x64 on UP/PREEMPT/DEBUG_PREEMPT.  (Other\narchitectures are untested, but should work just fine.)\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Arjan van de Ven \u003carjan@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d59dd4620fb8d6422555a9e2b82a707718e68327",
      "tree": "78205657d24efcaa3f8314064951ac3814ed95a7",
      "parents": [
        "0d8d4d42f2d00eb65262b49f4edd4cf7ef4eb6fc"
      ],
      "author": {
        "name": "akpm@osdl.org",
        "email": "akpm@osdl.org",
        "time": "Sun May 01 08:58:47 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sun May 01 08:58:47 2005 -0700"
      },
      "message": "[PATCH] use smp_mb/wmb/rmb where possible\n\nReplace a number of memory barriers with smp_ variants.  This means we won\u0027t\ntake the unnecessary hit on UP machines.\n\nSigned-off-by: Anton Blanchard \u003canton@samba.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
