)]}'
{
  "commit": "6c9ae009b298753a3baf71298d676a68b5a10c8f",
  "tree": "95a7e4ca54fe8e96c95cedd4e8d6450659015212",
  "parents": [
    "558bbb2fc75fd9676e07e347c021865e326c56db"
  ],
  "author": {
    "name": "Eric Dumazet",
    "email": "eric.dumazet@gmail.com",
    "time": "Thu Jan 13 15:45:38 2011 -0800"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Thu Jan 13 17:32:31 2011 -0800"
  },
  "message": "irq: use per_cpu kstat_irqs\n\nUse modern per_cpu API to increment {soft|hard}irq counters, and use\nper_cpu allocation for (struct irq_desc)-\u003ekstats_irq instead of an array.\n\nThis gives better SMP/NUMA locality and saves few instructions per irq.\n\nWith small nr_cpuids values (8 for example), kstats_irq was a small array\n(less than L1_CACHE_BYTES), potentially source of false sharing.\n\nIn the !CONFIG_SPARSE_IRQ case, remove the huge, NUMA/cache unfriendly\nkstat_irqs_all[NR_IRQS][NR_CPUS] array.\n\nNote: we still populate kstats_irq for all possible irqs in\nearly_irq_init().  We probably could use on-demand allocations.  (Code\nincluded in alloc_descs()).  Problem is not all IRQS are used with a prior\nalloc_descs() call.\n\nkstat_irqs_this_cpu() is not used anymore, remove it.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "979c68cc74584c7072ce8b59f33a7dd1a53f453e",
      "old_mode": 33188,
      "old_path": "include/linux/irqdesc.h",
      "new_id": "6a64c6fa81affacd4761f47156f6fb1666ddf112",
      "new_mode": 33188,
      "new_path": "include/linux/irqdesc.h"
    },
    {
      "type": "modify",
      "old_id": "44e83ba12b5b1076e4a1af7624420a9c2762ed2f",
      "old_mode": 33188,
      "old_path": "include/linux/kernel_stat.h",
      "new_id": "0cce2db580c39ca6afaa76e19609ddf6de47e48b",
      "new_mode": 33188,
      "new_path": "include/linux/kernel_stat.h"
    },
    {
      "type": "modify",
      "old_id": "9988d03797f5660dea26f417d9002fae94fd2798",
      "old_mode": 33188,
      "old_path": "kernel/irq/irqdesc.c",
      "new_id": "282f20230e67c9c13b12ef6f30f4fb363cc84acf",
      "new_mode": 33188,
      "new_path": "kernel/irq/irqdesc.c"
    }
  ]
}
