)]}'
{
  "commit": "871b72dd1e12afc3f024479531d25a9339d2e3f9",
  "tree": "132f309ab587561f4da1cfe6592c570fbad67d53",
  "parents": [
    "a4d7749be5de4a7261bcbe3c7d96c748792ec455"
  ],
  "author": {
    "name": "Dmitry Adamushko",
    "email": "dmitry.adamushko@gmail.com",
    "time": "Mon May 11 23:48:27 2009 +0200"
  },
  "committer": {
    "name": "Ingo Molnar",
    "email": "mingo@elte.hu",
    "time": "Tue May 12 10:36:44 2009 +0200"
  },
  "message": "x86: microcode: use smp_call_function_single instead of set_cpus_allowed, cleanup of synchronization logic\n\n* Solve issues described in 6f66cbc63081fd70e3191b4dbb796746780e5ae1\n  in a way that doesn\u0027t resort to set_cpus_allowed();\n\n* in fact, only collect_cpu_info and apply_microcode callbacks\n  must run on a target cpu, others will do just fine on any other.\n  smp_call_function_single() (as suggested by Ingo) is used to run\n  these callbacks on a target cpu.\n\n* cleanup of synchronization logic of the \u0027microcode_core\u0027 part\n\n  The generic \u0027microcode_core\u0027 part guarantees that only a single cpu\n  (be it a full-fledged cpu, one of the cores or HT)\n  is being updated at any particular moment of time.\n\n  In general, there is no need for any additional sync. mechanism in\n  arch-specific parts (the patch removes existing spinlocks).\n\n  See also the \"Synchronization\" section in microcode_core.c.\n\n* return -EINVAL instead of -1 (which is translated into -EPERM) in\n  microcode_write(), reload_cpu() and mc_sysdev_add(). Other suggestions\n  for an error code?\n\n* use \u0027enum ucode_state\u0027 as return value of request_microcode_{fw, user}\n  to gain more flexibility by distinguishing between real error cases\n  and situations when an appropriate ucode was not found (which is not an\n  error per-se).\n\n* some minor cleanups\n\nThanks a lot to Hugh Dickins for review/suggestions/testing!\n\n   Reference: http://marc.info/?l\u003dlinux-kernel\u0026m\u003d124025889012541\u0026w\u003d2\n\n[ Impact: refactor and clean up microcode driver locking code ]\n\nSigned-off-by: Dmitry Adamushko \u003cdmitry.adamushko@gmail.com\u003e\nAcked-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Andreas Herrmann \u003candreas.herrmann3@amd.com\u003e\nCc: Peter Oruba \u003cpeter.oruba@amd.com\u003e\nCc: Arjan van de Ven \u003carjan@infradead.org\u003e\nLKML-Reference: \u003c1242078507.5560.9.camel@earth\u003e\n[ did some more cleanups ]\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n arch/x86/include/asm/microcode.h  |   25 ++\n arch/x86/kernel/microcode_amd.c   |   58 ++----\n arch/x86/kernel/microcode_core.c  |  326 +++++++++++++++++++++-----------------\n arch/x86/kernel/microcode_intel.c |   92 +++-------\n 4 files changed, 261 insertions(+), 240 deletions(-)\n\n(~20 new comment lines)\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c882664716c1d13e5678aa188fb0ccf75d50acca",
      "old_mode": 33188,
      "old_path": "arch/x86/include/asm/microcode.h",
      "new_id": "ef51b501e22a6e53bf4ae7e2d9e2566760f72ee1",
      "new_mode": 33188,
      "new_path": "arch/x86/include/asm/microcode.h"
    },
    {
      "type": "modify",
      "old_id": "453b5795a5c6a23817f8e833f722d6140c6be644",
      "old_mode": 33188,
      "old_path": "arch/x86/kernel/microcode_amd.c",
      "new_id": "c8be20f16447db28d63bc61a3eb7f4214482d90c",
      "new_mode": 33188,
      "new_path": "arch/x86/kernel/microcode_amd.c"
    },
    {
      "type": "modify",
      "old_id": "98c470c069d150f26af3125a7690a25689614362",
      "old_mode": 33188,
      "old_path": "arch/x86/kernel/microcode_core.c",
      "new_id": "9c4461501fcbb9618ac3ce12fef93f990b8f3955",
      "new_mode": 33188,
      "new_path": "arch/x86/kernel/microcode_core.c"
    },
    {
      "type": "modify",
      "old_id": "149b9ec7c1ab72fcd20c2f2ab84cc511b3d707e7",
      "old_mode": 33188,
      "old_path": "arch/x86/kernel/microcode_intel.c",
      "new_id": "0d334ddd0a9642a2c05485e9e31394f8b1e98a3b",
      "new_mode": 33188,
      "new_path": "arch/x86/kernel/microcode_intel.c"
    }
  ]
}
