)]}'
{
  "commit": "3fc1f1e27a5b807791d72e5d992aa33b668a6626",
  "tree": "396c2f49909c506c3ad53fd6a9bdddf6c24f7860",
  "parents": [
    "1142d810298e694754498dbb4983fcb6cb7fd884"
  ],
  "author": {
    "name": "Tejun Heo",
    "email": "tj@kernel.org",
    "time": "Thu May 06 18:49:20 2010 +0200"
  },
  "committer": {
    "name": "Tejun Heo",
    "email": "tj@kernel.org",
    "time": "Thu May 06 18:49:20 2010 +0200"
  },
  "message": "stop_machine: reimplement using cpu_stop\n\nReimplement stop_machine using cpu_stop.  As cpu stoppers are\nguaranteed to be available for all online cpus,\nstop_machine_create/destroy() are no longer necessary and removed.\n\nWith resource management and synchronization handled by cpu_stop, the\nnew implementation is much simpler.  Asking the cpu_stop to execute\nthe stop_cpu() state machine on all online cpus with cpu hotplug\ndisabled is enough.\n\nstop_machine itself doesn\u0027t need to manage any global resources\nanymore, so all per-instance information is rolled into struct\nstop_machine_data and the mutex and all static data variables are\nremoved.\n\nThe previous implementation created and destroyed RT workqueues as\nnecessary which made stop_machine() calls highly expensive on very\nlarge machines.  According to Dimitri Sivanich, preventing the dynamic\ncreation/destruction makes booting faster more than twice on very\nlarge machines.  cpu_stop resources are preallocated for all online\ncpus and should have the same effect.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Dimitri Sivanich \u003csivanich@sgi.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "fba6dec156bf4c27b1f469b9e07543a05d21ded8",
      "old_mode": 33188,
      "old_path": "arch/s390/kernel/time.c",
      "new_id": "03d96569f187b33ac4d46cf9c462f7f6b0d239fc",
      "new_mode": 33188,
      "new_path": "arch/s390/kernel/time.c"
    },
    {
      "type": "modify",
      "old_id": "2ac4440e7b087c1a9ac9c0b087d09a12be3f3a2e",
      "old_mode": 33188,
      "old_path": "drivers/xen/manage.c",
      "new_id": "8943b8ccee1a2ba3c35ac8eabfc14bd716fb136c",
      "new_mode": 33188,
      "new_path": "drivers/xen/manage.c"
    },
    {
      "type": "modify",
      "old_id": "efcbd6c379474877b30b69176a7954a2dad14587",
      "old_mode": 33188,
      "old_path": "include/linux/stop_machine.h",
      "new_id": "0e552e72a4c46685cd14a571aa8b68ce80b208a8",
      "new_mode": 33188,
      "new_path": "include/linux/stop_machine.h"
    },
    {
      "type": "modify",
      "old_id": "914aedcde849a2d577dcfae1a670a3e6c83877e0",
      "old_mode": 33188,
      "old_path": "kernel/cpu.c",
      "new_id": "545777574779da71ef8e3fcc3935e0e41fa266ca",
      "new_mode": 33188,
      "new_path": "kernel/cpu.c"
    },
    {
      "type": "modify",
      "old_id": "1016b75b026ab61b7ef0ee233915c3b1adeaf64d",
      "old_mode": 33188,
      "old_path": "kernel/module.c",
      "new_id": "0838246d8c94991ec8e8788b22a86e91e8552349",
      "new_mode": 33188,
      "new_path": "kernel/module.c"
    },
    {
      "type": "modify",
      "old_id": "7e3f9182aef3a3283b9e92c55bf3ecf833d50ae9",
      "old_mode": 33188,
      "old_path": "kernel/stop_machine.c",
      "new_id": "884c7a1afeed38f8dfdddc65fe04c0bca551c8bf",
      "new_mode": 33188,
      "new_path": "kernel/stop_machine.c"
    }
  ]
}
