)]}'
{
  "commit": "31d9d9b6d83030f748d013e61502fa5477e2ac0e",
  "tree": "503670b94d594c09daa83c047b426e7b5328aa76",
  "parents": [
    "60f96b41f71d2a13d1c0a457b8b77958f77142d1"
  ],
  "author": {
    "name": "Marc Zyngier",
    "email": "marc.zyngier@arm.com",
    "time": "Fri Sep 23 17:03:06 2011 +0100"
  },
  "committer": {
    "name": "Thomas Gleixner",
    "email": "tglx@linutronix.de",
    "time": "Mon Oct 03 15:35:26 2011 +0200"
  },
  "message": "genirq: Add support for per-cpu dev_id interrupts\n\nThe ARM GIC interrupt controller offers per CPU interrupts (PPIs),\nwhich are usually used to connect local timers to each core. Each CPU\nhas its own private interface to the GIC, and only sees the PPIs that\nare directly connect to it.\n\nWhile these timers are separate devices and have a separate interrupt\nline to a core, they all use the same IRQ number.\n\nFor these devices, request_irq() is not the right API as it assumes\nthat an IRQ number is visible by a number of CPUs (through the\naffinity setting), but makes it very awkward to express that an IRQ\nnumber can be handled by all CPUs, and yet be a different interrupt\nline on each CPU, requiring a different dev_id cookie to be passed\nback to the handler.\n\nThe *_percpu_irq() functions is designed to overcome these\nlimitations, by providing a per-cpu dev_id vector:\n\nint request_percpu_irq(unsigned int irq, irq_handler_t handler,\n\t\t   const char *devname, void __percpu *percpu_dev_id);\nvoid free_percpu_irq(unsigned int, void __percpu *);\nint setup_percpu_irq(unsigned int irq, struct irqaction *new);\nvoid remove_percpu_irq(unsigned int irq, struct irqaction *act);\nvoid enable_percpu_irq(unsigned int irq);\nvoid disable_percpu_irq(unsigned int irq);\n\nThe API has a number of limitations:\n- no interrupt sharing\n- no threading\n- common handler across all the CPUs\n\nOnce the interrupt is requested using setup_percpu_irq() or\nrequest_percpu_irq(), it must be enabled by each core that wishes its\nlocal interrupt to be delivered.\n\nBased on an initial patch by Thomas Gleixner.\n\nSigned-off-by: Marc Zyngier \u003cmarc.zyngier@arm.com\u003e\nCc: linux-arm-kernel@lists.infradead.org\nLink: http://lkml.kernel.org/r/1316793788-14500-2-git-send-email-marc.zyngier@arm.com\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a103732b75882322c5f451942b93199f64fb9acc",
      "old_mode": 33188,
      "old_path": "include/linux/interrupt.h",
      "new_id": "1cdfd09c8abccb401f82e005a4a2359966869f1d",
      "new_mode": 33188,
      "new_path": "include/linux/interrupt.h"
    },
    {
      "type": "modify",
      "old_id": "73e31abeba1cad0cbf685fade71e5456980f39f0",
      "old_mode": 33188,
      "old_path": "include/linux/irq.h",
      "new_id": "59e49c80cc2ce573d77fa4bb64e86483540c1b03",
      "new_mode": 33188,
      "new_path": "include/linux/irq.h"
    },
    {
      "type": "modify",
      "old_id": "150134ac709ab28372eb874f9afed2741f150988",
      "old_mode": 33188,
      "old_path": "include/linux/irqdesc.h",
      "new_id": "6b69c2c9dff1d5056e9fd2272407b31917ab8d8a",
      "new_mode": 33188,
      "new_path": "include/linux/irqdesc.h"
    },
    {
      "type": "modify",
      "old_id": "dc5114b4c16cc6cd656290cdb03596a2ffd3f3b8",
      "old_mode": 33188,
      "old_path": "kernel/irq/chip.c",
      "new_id": "f7c543a801d97a67a2778e2685fa181739a803ac",
      "new_mode": 33188,
      "new_path": "kernel/irq/chip.c"
    },
    {
      "type": "modify",
      "old_id": "6546431447d766396b371595f6d46df41c883c9a",
      "old_mode": 33188,
      "old_path": "kernel/irq/internals.h",
      "new_id": "a73dd6c7372da3f1d33ccdd0460ee72e667b534e",
      "new_mode": 33188,
      "new_path": "kernel/irq/internals.h"
    },
    {
      "type": "modify",
      "old_id": "039b889ea053abf0ac72cd77809490d202ad0121",
      "old_mode": 33188,
      "old_path": "kernel/irq/irqdesc.c",
      "new_id": "1550e8447a16b06a10e9ff1d95cd46633e9176a8",
      "new_mode": 33188,
      "new_path": "kernel/irq/irqdesc.c"
    },
    {
      "type": "modify",
      "old_id": "7e1a3ed1e61a93495aab9f02d972052871fe15ac",
      "old_mode": 33188,
      "old_path": "kernel/irq/manage.c",
      "new_id": "7b4b156d065ce49cda749d646a52606752e41133",
      "new_mode": 33188,
      "new_path": "kernel/irq/manage.c"
    },
    {
      "type": "modify",
      "old_id": "f1667833d444496d862a3bfdd87ead8d2d2fece2",
      "old_mode": 33188,
      "old_path": "kernel/irq/settings.h",
      "new_id": "1162f1030f18f9326c23522417a3de87feb18ef4",
      "new_mode": 33188,
      "new_path": "kernel/irq/settings.h"
    }
  ]
}
