)]}'
{
  "commit": "41df0d61c266998b8049df7fec119cd518a43aa1",
  "tree": "6791fa6e3fdaee51ae348f9fe63972d648beaf5a",
  "parents": [
    "143aa5c53bd3895d42d7c08753fe58293988a69d"
  ],
  "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:23:38 2008 +0200"
  },
  "message": "x86: Add performance variants of cpumask operators\n\n  * Increase performance for systems with large count NR_CPUS by limiting\n    the range of the cpumask operators that loop over the bits in a cpumask_t\n    variable.  This removes a large amount of wasted cpu cycles.\n\n  * Add performance variants of the cpumask operators:\n\n    int cpus_weight_nr(mask)\t     Same using nr_cpu_ids instead of NR_CPUS\n    int first_cpu_nr(mask)\t     Number lowest set bit, or nr_cpu_ids\n    int next_cpu_nr(cpu, mask)\t     Next cpu past \u0027cpu\u0027, or nr_cpu_ids\n    for_each_cpu_mask_nr(cpu, mask)  for-loop cpu over mask using nr_cpu_ids\n\n  * Modify following to use performance variants:\n\n    #define num_online_cpus()\tcpus_weight_nr(cpu_online_map)\n    #define num_possible_cpus()\tcpus_weight_nr(cpu_possible_map)\n    #define num_present_cpus()\tcpus_weight_nr(cpu_present_map)\n\n    #define for_each_possible_cpu(cpu) for_each_cpu_mask_nr((cpu), ...)\n    #define for_each_online_cpu(cpu)   for_each_cpu_mask_nr((cpu), ...)\n    #define for_each_present_cpu(cpu)  for_each_cpu_mask_nr((cpu), ...)\n\n  * Comment added to include/linux/cpumask.h:\n\n    Note: The alternate operations with the suffix \"_nr\" are used\n\t  to limit the range of the loop to nr_cpu_ids instead of\n\t  NR_CPUS when NR_CPUS \u003e 64 for performance reasons.\n\t  If NR_CPUS is \u003c\u003d 64 then most assembler bitmask\n\t  operators execute faster with a constant range, so\n\t  the operator will continue to use NR_CPUS.\n\n\t  Another consideration is that nr_cpu_ids is initialized\n\t  to NR_CPUS and isn\u0027t lowered until the possible cpus are\n\t  discovered (including any disabled cpus).  So early uses\n\t  will span the entire range of NR_CPUS.\n\n    (The net effect is that for systems with 64 or less CPU\u0027s there are no\n     functional changes.)\n\nFor inclusion into sched-devel/latest tree.\n\nBased on:\n\tgit://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git\n    +   sched-devel/latest  .../mingo/linux-2.6-sched-devel.git\n\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\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\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5df3db58fcc65620fe5daf05752252c59048a21c",
      "old_mode": 33188,
      "old_path": "include/linux/cpumask.h",
      "new_id": "b49472d1af840ce612d30083c6a751fe61f27bca",
      "new_mode": 33188,
      "new_path": "include/linux/cpumask.h"
    },
    {
      "type": "modify",
      "old_id": "bb4f76d3c3e7cd327488006e4878296d58fe1167",
      "old_mode": 33188,
      "old_path": "lib/cpumask.c",
      "new_id": "5f97dc25ef9c925fb68b83fecec5a7c0114ab339",
      "new_mode": 33188,
      "new_path": "lib/cpumask.c"
    }
  ]
}
