)]}'
{
  "commit": "e6717fdd1fbc2bbc3fb7c7a9932a195eee6b1522",
  "tree": "d0bf06a3d2bd0268969d7d26c2a8de5e58a4ea9a",
  "parents": [
    "56b42db68ddf6aac9bc33130535e2a52d309ceea"
  ],
  "author": {
    "name": "Michael Bohan",
    "email": "mbohan@codeaurora.org",
    "time": "Tue Jan 03 16:37:43 2012 -0800"
  },
  "committer": {
    "name": "Michael Bohan",
    "email": "mbohan@codeaurora.org",
    "time": "Mon Jan 16 14:25:42 2012 -0800"
  },
  "message": "irq: irqdomain: Add support for dynamic irq_desc allocations\n\nThe current irq_domain_add() design assumes the underlying\nirq_descs are valid when irq_domain_add() is called. It also\nassumes that every hwirq enlisted in the irq_domain is valid.\nOften, these assumptions are not correct.\n\nTypically, irq_domain_add() is called at board_init time, but\nsometimes interrupt chip drivers are not initialized until an\nunderlying bus is probed. When using SPARSE_IRQ, it\u0027s quite\nnatural to hold off allocating irq_descs until the board\ntopology specifies them as included.\n\nAnd in such device topologies, there\u0027s no guarantee that chip\ninterrupt numbers will be contiguous. For example, each hwirq may\nmap to a particular device, but that device may or may not be\npresent in the actual hardware configuration. In order to support\nthis, we need the concept of an irq_domain that supports holes\nin it.\n\nIn order to solve these problems, let\u0027s break the irq_domain\ncreation from the irq registration process. The irq_domain\ncreation can occur at init time and then have no dependencies. An\ninterrupt is not \u0027registered\u0027 with the domain until its resources\nhave already been allocated by the chip driver. For simple cases,\nan additional API is provided to register the entire\nlogical irq_domain range to provide feature parity with what\nalready exists.\n\nChange-Id: Ie3340d07ba8663196dc87d1185e3bb7fbed4be4d\nSigned-off-by: Michael Bohan \u003cmbohan@codeaurora.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "99834e581b9e6fc2b1772d83b7556d354a414e0f",
      "old_mode": 33188,
      "old_path": "include/linux/irqdomain.h",
      "new_id": "ac0ab7010ade0cb4321a487dd99e26596beb1870",
      "new_mode": 33188,
      "new_path": "include/linux/irqdomain.h"
    },
    {
      "type": "modify",
      "old_id": "200ce832c58543785f62f3c4b6e4d80dcddc80f1",
      "old_mode": 33188,
      "old_path": "kernel/irq/irqdomain.c",
      "new_id": "8d275014e463c001383aed34e4076d072e332a9b",
      "new_mode": 33188,
      "new_path": "kernel/irq/irqdomain.c"
    }
  ]
}
