)]}'
{
  "commit": "1f5a5b87f78fade3ae48dfd55e8765d1d622ea4e",
  "tree": "762a5dbf40129ffd9667a170b2503a77c95320f7",
  "parents": [
    "1318a481fc37c503a901b96ae06b692ca2b21af5"
  ],
  "author": {
    "name": "Thomas Gleixner",
    "email": "tglx@linutronix.de",
    "time": "Mon Sep 27 17:48:26 2010 +0200"
  },
  "committer": {
    "name": "Thomas Gleixner",
    "email": "tglx@linutronix.de",
    "time": "Tue Oct 12 16:39:07 2010 +0200"
  },
  "message": "genirq: Implement a sane sparse_irq allocator\n\nThe current sparse_irq allocator has several short comings due to\nfailures in the design or the lack of it:\n\n - Requires iteration over the number of active irqs to find a free slot\n   (Some architectures have grown their own workarounds for this)\n - Removal of entries is not possible\n - Racy between create_irq_nr and destroy_irq (plugged by horrible\n   callbacks)\n - Migration of active irq descriptors is not possible\n - No bulk allocation of irq ranges\n - Sprinkeled irq_desc references all over the place outside of kernel/irq/\n   (The previous chip functions series is addressing this issue)\n\nImplement a sane allocator which fixes the above short comings (though\nmigration of active descriptors needs a full tree wide cleanup of the\ndirect and mostly unlocked access to irq_desc).\n\nThe new allocator still uses a radix_tree, but uses a bitmap for\nkeeping track of allocated irq numbers. That allows:\n\n - Fast lookup of a free slot\n - Allows the removal of descriptors\n - Prevents the create/destroy race\n - Bulk allocation of consecutive irq ranges\n - Basic design is ready for migration of life descriptors after\n   further cleanups\n\nThe bitmap is also used in the SPARSE_IRQ\u003dn case for lookup and\nraceless (de)allocation of irq numbers. So it removes the requirement\nfor looping through the descriptor array to find slots.\n\nRight now it uses sparse_irq_lock to protect the bitmap and the radix\ntree, but after cleaning up all users we should be able convert that\nto a mutex and to switch the radix_tree and decriptor allocations to\nGFP_KERNEL.\n\n[ Folded in a bugfix from Yinghai Lu ]\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "30a300991ed4de131677e5ade19f85501c4aebaa",
      "old_mode": 33188,
      "old_path": "include/linux/irq.h",
      "new_id": "cefacf928b33f111d2930e5f77691eb693c545ff",
      "new_mode": 33188,
      "new_path": "include/linux/irq.h"
    },
    {
      "type": "modify",
      "old_id": "29963f99f24d7330d8b2d2b8a482588da21fe8ca",
      "old_mode": 33188,
      "old_path": "kernel/irq/irqdesc.c",
      "new_id": "4eea48b4f5767b53b5b2420138303f22faddcdf5",
      "new_mode": 33188,
      "new_path": "kernel/irq/irqdesc.c"
    }
  ]
}
