)]}'
{
  "log": [
    {
      "commit": "3911ff30f5d1175e2e67e73244405e3492b35c79",
      "tree": "9727439d23b9308b6c26710db3aadf0406b1998b",
      "parents": [
        "b6255ee3d82798eb1eee9fb1cca713317b5afae8"
      ],
      "author": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Sun May 13 12:13:15 2012 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 15 08:10:07 2012 -0700"
      },
      "message": "genirq: export handle_edge_irq() and irq_to_desc()\n\nExport handle_edge_irq() and irq_to_desc() to modules to allow them to\ndo things such as\n\n\t__irq_set_handler_locked(...., handle_edge_irq);\n\nThis fixes\n\n\tERROR: \"handle_edge_irq\" [drivers/gpio/gpio-pch.ko] undefined!\n\tERROR: \"irq_to_desc\" [drivers/gpio/gpio-pch.ko] undefined!\n\nwhen gpio-pch is being built as a module.\n\nThis was introduced by commit df9541a60af0 (\"gpio: pch9: Use proper flow\ntype handlers\") that added\n\n\t__irq_set_handler_locked(d-\u003eirq, handle_edge_irq);\n\nbut handle_edge_irq() was not exported for modules (and inlined\n__irq_set_handler_locked() requires irq_to_desc() exported as well)\n\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ec53cf23c0ddb0c29950b9a4ac46964c4c6c6c2f",
      "tree": "198b2e172c5d9043ee10341092900e584c5f97f6",
      "parents": [
        "1d58996da6a8045c8df2899ce5689a19c721322f"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Mon Sep 19 20:33:19 2011 -0400"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Mon Oct 31 19:32:35 2011 -0400"
      },
      "message": "irq: don\u0027t put module.h into irq.h for tracking irqgen modules.\n\nRecent commit \"irq: Track the  owner of irq descriptor\" in\ncommit ID b6873807a7143b7 placed module.h into linux/irq.h\nbut we are trying to limit module.h inclusion to just C files\nthat really need it, due to its size and number of children\nincludes.  This targets just reversing that include.\n\nAdd in the basic \"struct module\" since that is all we really need\nto ensure things compile.  In theory, b687380 should have added the\nmodule.h include to the irqdesc.h header as well, but the implicit\nmodule.h everywhere presence masked this from showing up.  So give\nit the \"struct module\" as well.\n\nAs for the C files, irqdesc.c is only using THIS_MODULE, so it\ndoes not need module.h - give it export.h instead.  The C file\nirq/manage.c is now (as of b687380) using try_module_get and\nmodule_put and so it needs module.h (which it already has).\n\nAlso convert the irq_alloc_descs variants to macros, since all\nthey really do is is call the __irq_alloc_descs primitive.\nThis avoids including export.h and no debug info is lost.\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "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"
    },
    {
      "commit": "d522a0d17963e9c2e556db2cbd60c96d40505b6c",
      "tree": "90391acd50f0fa2b432d9defdb96627e6c1061b7",
      "parents": [
        "8cf2d2399ab60842f55598bc1b00fd15503b9950"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "rdunlap@xenotime.net",
        "time": "Thu Aug 18 12:19:27 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 18 14:12:48 2011 -0700"
      },
      "message": "irqdesc: fix new kernel-doc warning\n\nFix kernel-doc warning in irqdesc.c:\n\n  Warning(kernel/irq/irqdesc.c:353): No description found for parameter \u0027owner\u0027\n\nSigned-off-by: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b6873807a7143b7d6d8b06809295e559d07d7deb",
      "tree": "1187413ab85f1a7b7d5da91bf61ae21601da3855",
      "parents": [
        "f3637a5f2e2eb391ff5757bc83fb5de8f9726464"
      ],
      "author": {
        "name": "Sebastian Andrzej Siewior",
        "email": "sebastian@breakpoint.cc",
        "time": "Mon Jul 11 12:17:31 2011 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Jul 28 11:23:21 2011 +0200"
      },
      "message": "irq: Track the owner of irq descriptor\n\nInterrupt descriptors can be allocated from modules. The interrupts\nare used by other modules, but we have no refcount on the module which\nprovides the interrupts and there is no way to establish one on the\ndevice level as the interrupt using module is agnostic to the fact\nthat the interrupt is provided by a module rather than by some builtin\ninterrupt controller.\n\nTo prevent removal of the interrupt providing module, we can track the\nowner of the interrupt descriptor, which also provides the relevant\nirq chip functions in the irq descriptor.\n\nrequest/setup_irq() can now acquire a refcount on the owner module to\nprevent unloading. free_irq() drops the refcount.\n\nSigned-off-by: Sebastian Andrzej Siewior \u003csebastian@breakpoint.cc\u003e\nLink: http://lkml.kernel.org/r/20110711101731.GA13804@Chamillionaire.breakpoint.cc\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "c5182b8867e189e14a8df5dbfcba1c73f286e061",
      "tree": "89ac7169ab5009625770124e8b78549e69009ea1",
      "parents": [
        "e7fbad300a7a6432238f086e3c9a61538a905858"
      ],
      "author": {
        "name": "Mark Brown",
        "email": "broonie@opensource.wolfsonmicro.com",
        "time": "Thu Jun 02 18:55:13 2011 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Jun 03 14:53:16 2011 +0200"
      },
      "message": "genirq: Ensure we locate the passed IRQ in irq_alloc_descs()\n\nWhen irq_alloc_descs() is called with no base IRQ specified then it will\nsearch for a range of IRQs starting from a specified base address. In the\ncase where an IRQ is specified it still does this search in order to ensure\nthat none of the requested range is already allocated and it still uses the\nfrom parameter to specify the base for the search. This means that in the\ncase where a base is specified but from is zero (which is reasonable as\nany IRQ number is in the range specified by a zero from) the function will\nget confused and try to allocate the first suitably sized block of free IRQs\nit finds.\n\nInstead use a specified IRQ as the base address for the search, and insist\nthat any from that is specified can support that IRQ.\n\nSigned-off-by: Mark Brown \u003cbroonie@opensource.wolfsonmicro.com\u003e\nLink: http://lkml.kernel.org/r/1307037313-15733-1-git-send-email-broonie@opensource.wolfsonmicro.com\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "e7fbad300a7a6432238f086e3c9a61538a905858",
      "tree": "76841c453717fd32be49d7d2b06e835e15b87c99",
      "parents": [
        "3a43e05f4d0600e906fa09f4a65d749288c44592"
      ],
      "author": {
        "name": "Linus Walleij",
        "email": "linus.walleij@stericsson.com",
        "time": "Tue May 31 18:14:39 2011 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Jun 03 14:53:16 2011 +0200"
      },
      "message": "genirq: Fix descriptor init on non-sparse IRQs\n\nThe genirq changes are initializing descriptors for sparse IRQs quite\ndifferently from how non-sparse (stacked?) IRQs are initialized, with\nthe effect that on my platform all IRQs are default-disabled on sparse\nIRQs and default-enabled if non-sparse IRQs are used, crashing some\nGPIO driver.\n\nFix this by refactoring the non-sparse IRQs to use the same descriptor\ninit function as the sparse IRQs.\n\nSigned-off: Linus Walleij \u003clinus.walleij@linaro.org\u003e\nLink: http://lkml.kernel.org/r/1306858479-16622-1-git-send-email-linus.walleij@stericsson.com\nCc: stable@kernel.org # 2.6.39\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "edf76f8307c350bcb81f0c760118a991b3e62956",
      "tree": "35adb6aa29f61f64f5841b1ccb2e6a50eb250529",
      "parents": [
        "fe12bc2c996d3e492b2920e32ac79f7bbae3e15d"
      ],
      "author": {
        "name": "Jonathan Cameron",
        "email": "jic23@cam.ac.uk",
        "time": "Wed May 18 10:39:04 2011 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed May 18 14:59:08 2011 +0200"
      },
      "message": "irq: Export functions to allow modular irq drivers\n\nExport handle_simple_irq, irq_modify_status, irq_alloc_descs,\nirq_free_descs and generic_handle_irq to allow their usage in\nmodules. First user is IIO, which wants to be built modular, but needs\nto be able to create irq chips, allocate and configure interrupt\ndescriptors and handle demultiplexing interrupts.\n\n[ tglx: Moved the uninlinig of generic_handle_irq to a separate patch ]\n\nSigned-off-by: Jonathan Cameron \u003cjic23@cam.ac.uk\u003e\nLink: http://lkml.kernel.org/r/%3C1305711544-505-1-git-send-email-jic23%40cam.ac.uk%3E\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "fe12bc2c996d3e492b2920e32ac79f7bbae3e15d",
      "tree": "05af87563123d909d04c328aead3fe24599633d1",
      "parents": [
        "fe0514348452f5b0ad7e842b0d71b8322b1297de"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed May 18 12:48:00 2011 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed May 18 14:59:08 2011 +0200"
      },
      "message": "genirq: Uninline and sanity check generic_handle_irq()\n\ngeneric_handle_irq() is missing a NULL pointer check for the result of\nirq_to_desc. This was a not a big problem, but we want to expose it to\ndrivers, so we better have sanity checks in place. Add a return value\nas well, which indicates that the irq number was valid and the handler\nwas invoked.\n\nBased on the pure code move from Jonathan Cameron.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Jonathan Cameron \u003cjic23@cam.ac.uk\u003e\n"
    },
    {
      "commit": "fe0514348452f5b0ad7e842b0d71b8322b1297de",
      "tree": "bdf49e276958303c7b55b362eeffc0a149b1bb2f",
      "parents": [
        "c42321c76b0ef472e3bae4bfcb0f46ab19e038ef"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed May 18 12:53:03 2011 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed May 18 14:59:07 2011 +0200"
      },
      "message": "genirq: Remove pointless ifdefs\n\nkernel/irq/ is only built when CONFIG_GENERIC_HARDIRQS\u003dy. So making\ncode inside of kernel/irq/ conditional on CONFIG_GENERIC_HARDIRQS is\npointless.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "32f4125ebffee4f3c4dbc6a437fc656129eb9e60",
      "tree": "d64c6bb7ba40c33734896303734416ea5b4f3290",
      "parents": [
        "c2d0c555c22242c3a76e366074c4d83ef9fa3b8c"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Mar 28 14:10:52 2011 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Mar 28 16:55:10 2011 +0200"
      },
      "message": "genirq: Move INPROGRESS, MASKED and DISABLED state flags to irq_data\n\nWe really need these flags for some of the interrupt chips. Move it\nfrom internal state to irq_data and provide proper accessors.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: David Daney \u003cddaney@caviumnetworks.com\u003e\n"
    },
    {
      "commit": "801a0e9ae36e9b487092e31699d28c0b9a21ad52",
      "tree": "c448d150797272b09417f5410e7570742e59368b",
      "parents": [
        "d72274e5895d11570a0a4a3214a1933c86d5ccb7"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sun Mar 27 11:02:49 2011 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sun Mar 27 17:45:58 2011 +0200"
      },
      "message": "genirq: Add irq disabled flag to irq_data state\n\nSome irq_chip implementation require to know the disabled state of the\ninterrupt in certain callbacks. Add a state flag and accessor to\nirq_data.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "3b9038912828384e38d82409c281124631c8533b",
      "tree": "68e41aeda588e7363ad252d108b5fce39a587ec6",
      "parents": [
        "6447f55da90b77faec1697d499ed7986bb4f6de6"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Mar 23 00:24:11 2011 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Mar 23 20:22:06 2011 +0100"
      },
      "message": "genirq; Remove the last leftovers of the old sparse irq code\n\nAll users converted. Get rid of it.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "ed4dea6e0e33a3e58d8b77b775a8f0e433e7a005",
      "tree": "99f3168f5307545e6107603431e877b5369f767f",
      "parents": [
        "a61d825808a0ce9935afebc225dcd602d5339e14"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yinghai@kernel.org",
        "time": "Sat Feb 19 11:07:37 2011 -0800"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Feb 21 21:20:00 2011 +0100"
      },
      "message": "genirq: Use IRQ_BITMAP_BITS as search size in irq_alloc_descs()\n\nThe runtime expansion of nr_irqs does not take into account that\nbitmap_find_next_zero_area() returns \"start\" + size in case the search\nfor an matching zero area fails. That results in a start value which\ncan be completely off and is not covered by the following\nexpand_nr_irqs() and possibly outside of the absolute limit. But we\nuse it without further checking.\n\nUse IRQ_BITMAP_BITS as the limit for the bitmap search and expand\nnr_irqs when the start bit is beyond nr_irqs. So start is always\npointing to the correct area in the bitmap. nr_irqs is just the limit\nfor irq enumerations, not the real limit for the irq space.\n\n[ tglx: Let irq_expand_nr_irqs() take the new upper end so we do not\n  \texpand nr_irqs more than necessary. Made changelog readable ]\n\nSigned-off-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nLKML-Reference: \u003c4D6014F9.8040605@kernel.org\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "d5eb4ad2dfb2dfae43fd51bc8630b4fc3ef00e92",
      "tree": "ec164ed62dd55d14e0f73e1ba6f894433f70394e",
      "parents": [
        "091738a266fc74329ae186f22ff2b3f01319112d"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Feb 12 12:16:16 2011 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Feb 19 12:58:23 2011 +0100"
      },
      "message": "genirq: Implement irq_get/put_desc_[bus]locked/unlock()\n\nMost of the managing functions get the irq descriptor and lock it -\neither with or without buslock. Instead of open coding this over and\nover provide a common function to do that.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "f9e4989eb8183a1f33581fa1b99274287b0639d2",
      "tree": "3b69372623761448a044a24627ceba973e25c4f1",
      "parents": [
        "1ccb4e612f68ceefb888c2c6c1def6294ea8666d"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Feb 09 14:54:49 2011 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Feb 19 12:58:21 2011 +0100"
      },
      "message": "genirq: Force wrapped access to desc-\u003estatus in core code\n\nForce the usage of wrappers by another nasty CPP substitution.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "c1594b77e46124bb462f961e536120e471c67446",
      "tree": "3f52ad5809125ab5be6db1fd4b1212fe6127df66",
      "parents": [
        "163ef3091195f514a06f064b12914597d2644c55"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Feb 07 22:11:30 2011 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Feb 19 12:58:17 2011 +0100"
      },
      "message": "genirq: Move IRQ_DISABLED to core\n\nKeep status in sync until all abusers are fixed.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "e6bea9c404699223322d7411c6f2ceaec02fa83c",
      "tree": "c006048322aae74b4d60ec2a2a16e1fd941af09b",
      "parents": [
        "dbec07bac614a61e3392c1e7c08cc6a49ad43f7a"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Feb 09 13:16:52 2011 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Feb 19 12:58:14 2011 +0100"
      },
      "message": "genirq: Protect tglx from tripping over his own feet\n\nThe irq_desc.status field will either go away or renamed to\nsettings. Anyway we need to maintain compatibility to avoid breaking\nthe world and some more. While moving bits into the core, I need to\navoid that I use any of the still existing IRQ_ bits in the core code\nby typos. So that file will hold the inline wrappers and some nasty\nCPP tricks to break the build when typoed.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "e7bcecb7b1d29b9ad5af939149a945658620ca8f",
      "tree": "8f5ea66fd6e178574a31f2b1cfc5eeb2da28bef6",
      "parents": [
        "218502bfe674f570205367b9094048207b04ba15"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Feb 16 17:12:57 2011 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Feb 19 12:58:06 2011 +0100"
      },
      "message": "genirq: Make nr_irqs runtime expandable\n\nWe face more and more the requirement to expand nr_irqs at\nruntime. The reason are irq expanders which can not be detected in the\nearly boot stage. So we speculate nr_irqs to have enough room. Further\nXen needs extra irq numbers and we really want to avoid adding more\n\"detection\" code into the early boot. There is no real good reason why\nwe need to limit nr_irqs at early boot.\n\nAllow the allocation code to expand nr_irqs. We have already 8k extra\nnumber space in the allocation bitmap, so lets use it.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "218502bfe674f570205367b9094048207b04ba15",
      "tree": "c6187b97e7c79d902aef08f049e9fba04c421d56",
      "parents": [
        "51327ada7142ab520ed610a42572d1f4cbfbb2dc",
        "6d83f94db95cfe65d2a6359cccdf61cf087c2598"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Feb 19 12:56:36 2011 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Feb 19 12:56:43 2011 +0100"
      },
      "message": "Merge branch \u0027irq/urgent\u0027 into irq/core\n\nReason: Further patches are conflicting with mainline fixes\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "c1ee6264280e740a9d3ff3feef38642cf0a57013",
      "tree": "a5d3b9ce791551657458d53eafb47533ee34509a",
      "parents": [
        "0cc9d5257857608ba85885b75fcada13d359b5d1"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Feb 17 17:45:15 2011 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Feb 19 12:10:51 2011 +0100"
      },
      "message": "genirq: Prevent access beyond allocated_irqs bitmap\n\nLars-Peter Clausen pointed out:\n\n   I stumbled upon this while looking through the existing archs using\n   SPARSE_IRQ.  Even with SPARSE_IRQ the NR_IRQS is still the upper\n   limit for the number of IRQs.\n\n   Both PXA and MMP set NR_IRQS to IRQ_BOARD_START, with\n   IRQ_BOARD_START being the number of IRQs used by the core.\n\n   In various machine files the nr_irqs field of the ARM machine\n   defintion struct is then set to \"IRQ_BOARD_START + NR_BOARD_IRQS\".\n\n   As a result \"nr_irqs\" will greater then NR_IRQS which then again\n   causes the \"allocated_irqs\" bitmap in the core irq code to be\n   accessed beyond its size overwriting unrelated data.\n\nThe core code really misses a sanity check there.\n\nThis went unnoticed so far as by chance the compiler/linker places\ndata behind that bitmap which gets initialized later on those affected\nplatforms.\n\nSo the obvious fix would be to add a sanity check in early_irq_init()\nand break all affected platforms. Though that check wants to be\nbackported to stable as well, which will require to fix all known\nproblematic platforms and probably some more yet not known ones as\nwell. Lots of churn.\n\nA way simpler solution is to allocate a slightly larger bitmap and\navoid the whole churn w/o breaking anything. Add a few warnings when\nan arch returns utter crap.\n\nReported-by: Lars-Peter Clausen \u003clars@metafoo.de\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: stable@kernel.org # .37\nCc: Haojian Zhuang \u003chaojian.zhuang@marvell.com\u003e\nCc: Eric Miao \u003ceric.y.miao@gmail.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\n"
    },
    {
      "commit": "44951a60ff888add9e84f509ffce20052e45af94",
      "tree": "7c1c6fb7009ef43fa76d6bb7c73c0d8b7d9a3699",
      "parents": [
        "c305d524e5dd3c3c7a6035083e30950bea1b52dc"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Feb 04 17:33:49 2011 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Feb 08 19:37:13 2011 +0100"
      },
      "message": "genirq: Remove dead code\n\nCONFIG_KSTAT_IRQS_ONDEMAND does not exist. It\u0027s not worth to implement\nit. Use sparse irqs if you care about memory consumption of the\ninterrupt layer.\n\nFound by undertaker: http://vamos.informatik.uni-erlangen.de/trac/undertaker\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "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"
    },
    {
      "commit": "478735e38887077ac77a9756121b6ce0cb956e2f",
      "tree": "7b42110f71b1711f56cbbc0a01f00894b221337d",
      "parents": [
        "f2c66cd8eeddedb440f33bc0f5cec1ed7ae376cb"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Oct 27 15:34:15 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 27 18:03:13 2010 -0700"
      },
      "message": "/proc/stat: fix scalability of irq sum of all cpu\n\nIn /proc/stat, the number of per-IRQ event is shown by making a sum each\nirq\u0027s events on all cpus.  But we can make use of kstat_irqs().\n\nkstat_irqs() do the same calculation, If !CONFIG_GENERIC_HARDIRQ,\nit\u0027s not a big cost. (Both of the number of cpus and irqs are small.)\n\nIf a system is very big and CONFIG_GENERIC_HARDIRQ, it does\n\n\tfor_each_irq()\n\t\tfor_each_cpu()\n\t\t\t- look up a radix tree\n\t\t\t- read desc-\u003eirq_stat[cpu]\nThis seems not efficient. This patch adds kstat_irqs() for\nCONFIG_GENRIC_HARDIRQ and change the calculation as\n\n\tfor_each_irq()\n\t\tlook up radix tree\n\t\tfor_each_cpu()\n\t\t\t- read desc-\u003eirq_stat[cpu]\n\nThis reduces cost.\n\nA test on (4096cpusp, 256 nodes, 4592 irqs) host (by Jack Steiner)\n\n%time cat /proc/stat \u003e /dev/null\n\nBefore Patch:\t 2.459 sec\nAfter Patch :\t  .561 sec\n\n[akpm@linux-foundation.org: unexport kstat_irqs, coding-style tweaks]\n[akpm@linux-foundation.org: fix unused variable \u0027per_irq_sum\u0027]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nTested-by: Jack Steiner \u003csteiner@sgi.com\u003e\nAcked-by: Jack Steiner \u003csteiner@sgi.com\u003e\nCc: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\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"
    },
    {
      "commit": "c0a19ebc018222ffd1dd93af5b53d9efd779c19b",
      "tree": "f648fb93efb064b22000aca24e48dfda2cbfab0a",
      "parents": [
        "2ee39065988d632b403f8470942b0b5edee3632b"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 21:58:27 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 21:59:55 2010 +0200"
      },
      "message": "genirq: Fix CONFIG_GENIRQ_NO_DEPRECATED\u003dy build\n\nThis option can be set to verify the full conversion to the new chip\nfunctions. Fix the fallout of the patch rework, so the core code\ncompiles and works with it.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "baa0d233afe765daa6dc01ff233aea8c5944f534",
      "tree": "23b0793b6014b637680cddef4ccc4a2860cf6436",
      "parents": [
        "a05a900a51c7622ebd8ddb41f14f8bf9db599d8d"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 05 15:14:35 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 16:53:45 2010 +0200"
      },
      "message": "genirq: Switch sparse_irq allocator to GFP_KERNEL\n\nThe allocator functions are now called outside of preempt disabled\nregions. Switch to GFP_KERNEL.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a05a900a51c7622ebd8ddb41f14f8bf9db599d8d",
      "tree": "3c0f7d5c6aff2af86c350c76cc44631e620d9333",
      "parents": [
        "c2f31c37b7303150ffcce53f6c6ed4ac62952b34"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Oct 08 12:47:53 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 16:53:45 2010 +0200"
      },
      "message": "genirq: Make sparse_lock a mutex\n\nNo callers from atomic regions. \n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "78f90d91f395cd0dc1ef3f21e0c5cd6fd50d202c",
      "tree": "e9a6b0a5d8a0b99cd23dbc1c1f376a7e78a93428",
      "parents": [
        "b7b29338dc7111ed8bd4d6555d84afae13ebe752"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Sep 29 17:18:47 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 16:53:44 2010 +0200"
      },
      "message": "genirq: Remove the now unused sparse irq leftovers\n\nThe move_irq_desc() function was only used due to the problem that the\nallocator did not free the old descriptors. So the descriptors had to\nbe moved in create_irq_nr(). That\u0027s history.\n\nThe code would have never been able to move active interrupt\ndescriptors on affinity settings. That can be done in a completely\ndifferent way w/o all this horror.\n\nRemove all of it.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b7b29338dc7111ed8bd4d6555d84afae13ebe752",
      "tree": "4c3159ea8bb0489ba463a061d3e6446dbfb45af2",
      "parents": [
        "b7d0d8258a9f71949b810e0f82a3d75088f4d364"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Sep 29 18:46:55 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 16:53:44 2010 +0200"
      },
      "message": "genirq: Sanitize dynamic irq handling\n\nUse the cleanup functions of the dynamic allocator. No need to have\nseparate implementations.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b7d0d8258a9f71949b810e0f82a3d75088f4d364",
      "tree": "1e37a6d3e89816abab898e3646a4e23eeb457021",
      "parents": [
        "77dff1c755c3218691e95e7e38ee14323b35dbdb"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Sep 29 18:44:23 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 16:53:44 2010 +0200"
      },
      "message": "genirq: Remove arch_init_chip_data()\n\nThis function should have not been there in the first place.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b683de2b3cb17bb10fa6fd4af614dc75b5749fe0",
      "tree": "e1a799293b218f5c13d4903c57fab144b2f433b3",
      "parents": [
        "aa99ec0f3f26bf2bcd0fa5176de93598427f1e5e"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Sep 27 20:55:03 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 16:39:08 2010 +0200"
      },
      "message": "genirq: Query arch for number of early descriptors\n\nsparse irq sets up NR_IRQS_LEGACY irq descriptors and archs then go\nahead and allocate more.\n\nUse the unused return value of arch_probe_nr_irqs() to let the\narchitecture return the number of early allocations. Fix up all users.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "aa99ec0f3f26bf2bcd0fa5176de93598427f1e5e",
      "tree": "bbba6c0fc1293f0bc854644aa177ea67306f8814",
      "parents": [
        "25ade601a0f97453c6f511ebfae9339e06a28d75"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Sep 27 20:02:56 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 16:39:07 2010 +0200"
      },
      "message": "genirq: Use sane sparse allocator\n\nMake irq_to_desc_alloc_node() a wrapper around the new allocator.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "06f6c3399e9f9ff6eafc200e80f9226c3cee0eaf",
      "tree": "f4d8fc67194b1a50bfe501634088b3776ca6bbd4",
      "parents": [
        "a98d24b71b6e229965f18dc00d28dc71cb8fe324"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 12:31:46 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 16:39:07 2010 +0200"
      },
      "message": "genirq: Implement irq reservation\n\nMark a range of interrupts as allocated. In the SPARSE_IRQ\u003dn case we\nneed this to update the bitmap for the legacy irqs so the enumerator\nvia irq_get_next_irq() works.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "a98d24b71b6e229965f18dc00d28dc71cb8fe324",
      "tree": "213a6daf67e459b2078e630d5a8163c3b8fd3a9c",
      "parents": [
        "13bfe99e09123ef5edb6acb81ba337d2db600b53"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Sep 30 10:45:07 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 16:39:07 2010 +0200"
      },
      "message": "genirq: Implement sane enumeration\n\nUse the allocator bitmap to lookup active interrupts.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "13bfe99e09123ef5edb6acb81ba337d2db600b53",
      "tree": "f96f5be41c90e1ab437bb40a02a8f137deb9e3ab",
      "parents": [
        "1f5a5b87f78fade3ae48dfd55e8765d1d622ea4e"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Sep 30 02:46:07 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 16:39:07 2010 +0200"
      },
      "message": "genirq: Prepare proc for real sparse irq support\n\n/proc/irq never removes any entries, but when irq descriptors can be\nfreed for real this is necessary. Otherwise we\u0027d reference a freed\ndescriptor in /proc/irq/N\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "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"
    },
    {
      "commit": "1318a481fc37c503a901b96ae06b692ca2b21af5",
      "tree": "2b1bb8f52af5938759af38efdfa8a868b02d5804",
      "parents": [
        "d895f51ebb54cefe367bda135fcf2cd734d51d03"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Sep 27 21:01:37 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 16:39:06 2010 +0200"
      },
      "message": "genirq: Provide default irq init flags\n\nArch code sets it\u0027s own irq_desc.status flags right after boot and for\ndynamically allocated interrupts. That might involve iterating over a\nhuge array.\n\nAllow ARCH_IRQ_INIT_FLAGS to set separate flags aside of IRQ_DISABLED\nwhich is the default.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d895f51ebb54cefe367bda135fcf2cd734d51d03",
      "tree": "bb70160ad291a7280ff8e8a2aba07d407f7f07dc",
      "parents": [
        "40f08a724fcc21285cf3a75aec957aef908605c6"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Sep 27 17:45:49 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 16:39:06 2010 +0200"
      },
      "message": "genirq: Remove export of kstat_irqs_cpu\n\nThe statistics accessor is only used by proc/stats and\nshow_interrupts(). Both are compiled in.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "154cd387cdf0e5566ce523cbddf92dd2a062dfd6",
      "tree": "8ab329f26992c570b65fe62843275eb71c8bf505",
      "parents": [
        "3795de236d67a05994a1a12759db9d4dd9ffc42c"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Sep 22 15:58:45 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 16:39:06 2010 +0200"
      },
      "message": "genirq: Remove early_init_irq_lock_class()\n\nearly_init_irq_lock_class() is called way before anything touches the\nirq descriptors. In case of SPARSE_IRQ\u003dy this is a NOP operation\nbecause the radix tree is empty at this point. For the SPARSE_IRQ\u003dn\ncase it\u0027s sufficient to set the lock class in early_init_irq(). \n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "3795de236d67a05994a1a12759db9d4dd9ffc42c",
      "tree": "75e5a2a8922e114de60f468494c879ba4f65ebee",
      "parents": [
        "f303a6dd127b5ec6de90d1cd79ed19820c7e9658"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Sep 22 17:09:43 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 16:39:05 2010 +0200"
      },
      "message": "genirq: Distangle kernel/irq/handle.c\n\nkernel/irq/handle.c has become a dumpground for random code in random\norder. Split out the irq descriptor management and the dummy irq_chip\nimplementation into separate files. Cleanup the include maze while at\nit.\n\nNo code change.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    }
  ]
}
