)]}'
{
  "log": [
    {
      "commit": "685fd0b4ea3f0f1d5385610b0d5b57775a8d5842",
      "tree": "44c224195e6500c67812b38ff9fd60c96c6b8dc5",
      "parents": [
        "1a041a23da7c77b53c71fe11b4f940388bee37b1"
      ],
      "author": {
        "name": "Ian Campbell",
        "email": "ian.campbell@citrix.com",
        "time": "Thu Jul 29 11:16:32 2010 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Jul 29 13:24:57 2010 +0200"
      },
      "message": "irq: Add new IRQ flag IRQF_NO_SUSPEND\n\nA small number of users of IRQF_TIMER are using it for the implied no\nsuspend behaviour on interrupts which are not timer interrupts.\n\nTherefore add a new IRQF_NO_SUSPEND flag, rename IRQF_TIMER to\n__IRQF_TIMER and redefine IRQF_TIMER in terms of these new flags.\n\nSigned-off-by: Ian Campbell \u003cian.campbell@citrix.com\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@goop.org\u003e\nCc: Dmitry Torokhov \u003cdmitry.torokhov@gmail.com\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\nCc: xen-devel@lists.xensource.com\nCc: linux-input@vger.kernel.org\nCc: linuxppc-dev@ozlabs.org\nCc: devicetree-discuss@lists.ozlabs.org\nLKML-Reference: \u003c1280398595-29708-1-git-send-email-ian.campbell@citrix.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "4673247562e39a17e09440fa1400819522ccd446",
      "tree": "31746ff2cd7f41048b7507cd3cae9dae2a1519be",
      "parents": [
        "84f7586edab93052bbe7eb72e1e9bce5f7b6ae45"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Jun 07 17:53:51 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Jun 09 17:05:08 2010 +0200"
      },
      "message": "genirq: Deal with desc-\u003eset_type() changing desc-\u003echip\n\nThe set_type() function can change the chip implementation when the\ntrigger mode changes. That might result in using an non-initialized\nirq chip when called from __setup_irq() or when called via\nset_irq_type() on an already enabled irq. \n\nThe set_irq_type() function should not be called on an enabled irq,\nbut because we forgot to put a check into it, we have a bunch of users\nwhich grew the habit of doing that and it never blew up as the\nfunction is serialized via desc-\u003elock against all users of desc-\u003echip\nand they never hit the non-initialized irq chip issue.\n\nThe easy fix for the __setup_irq() issue would be to move the\nirq_chip_set_defaults(desc-\u003echip) call after the trigger setting to\nmake sure that a chip change is covered.\n\nBut as we have already users, which do the type setting after\nrequest_irq(), the safe fix for now is to call irq_chip_set_defaults()\nfrom __irq_set_trigger() when desc-\u003eset_type() changed the irq chip.\n\nIt needs a deeper analysis whether we should refuse to change the chip\non an already enabled irq, but that\u0027d be a large scale change to fix\nall the existing users. So that\u0027s neither stable nor 2.6.35 material.\n\nReported-by: Esben Haabendal \u003ceha@doredevelopment.dk\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: linuxppc-dev \u003clinuxppc-dev@ozlabs.org\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "e7a297b0d7d6049bd4e423ac1e17da31e4c401b8",
      "tree": "f10f12806a637b09bec89ef5428d981c4c1a4bc9",
      "parents": [
        "6932bf37bed45ce8ed531928b1b0f98162fe6df6"
      ],
      "author": {
        "name": "Peter P Waskiewicz Jr",
        "email": "peter.p.waskiewicz.jr@intel.com",
        "time": "Fri Apr 30 14:44:50 2010 -0700"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon May 03 11:50:57 2010 +0200"
      },
      "message": "genirq: Add CPU mask affinity hint\n\nThis patch adds a cpumask affinity hint to the irq_desc structure,\nalong with a registration function and a read-only proc entry for each\ninterrupt.\n\nThis affinity_hint handle for each interrupt can be used by underlying\ndrivers that need a better mechanism to control interrupt affinity.\nThe underlying driver can register a cpumask for the interrupt, which\nwill allow the driver to provide the CPU mask for the interrupt to\nanything that requests it.  The intent is to extend the userspace\ndaemon, irqbalance, to help hint to it a preferred CPU mask to balance\nthe interrupt into.\n\n[ tglx: Fixed compile warnings, added WARN_ON, made SMP only ]\n\nSigned-off-by: Peter P Waskiewicz Jr \u003cpeter.p.waskiewicz.jr@intel.com\u003e\nCc: davem@davemloft.net\nCc: arjan@linux.jf.intel.com\nCc: bhutchings@solarflare.com\nLKML-Reference: \u003c20100430214445.3992.41647.stgit@ppwaskie-hc2.jf.intel.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "6932bf37bed45ce8ed531928b1b0f98162fe6df6",
      "tree": "3b7af6b49608cb8e3474bf6cb56f86e712466942",
      "parents": [
        "e58aa3d2d0cc01ad8d6f7f640a0670433f794922"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Mar 26 00:06:55 2010 +0000"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Apr 13 16:36:40 2010 +0200"
      },
      "message": "genirq: Remove IRQF_DISABLED from core code\n\nRemove all code which is related to IRQF_DISABLED from the core kernel\ncode. IRQF_DISABLED still exists as a flag, but becomes a NOOP and\nwill be removed after a grace period. That way we can easily revert to\nthe previous behaviour by just restoring the core code.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nCc: Linus Torvalds \u003ctorvalds@osdl.org\u003e\nLKML-Reference: \u003c20100326000405.991244690@linutronix.de\u003e\n"
    },
    {
      "commit": "ae731f8d0785ccd3380f511bae888933b6562e45",
      "tree": "07db03ce79231153a4ae5df75c0ca4dcd96307c2",
      "parents": [
        "7c7145f6acc68100dbdc5d3c5c64fe3af1c99c89"
      ],
      "author": {
        "name": "Marc Zyngier",
        "email": "maz@misterjones.org",
        "time": "Mon Mar 15 22:56:33 2010 +0000"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Apr 13 16:36:39 2010 +0200"
      },
      "message": "genirq: Introduce request_any_context_irq()\n\nNow that we enjoy threaded interrupts, we\u0027re starting to see irq_chip\nimplementations (wm831x, pca953x) that make use of threaded interrupts\nfor the controller, and nested interrupts for the client interrupt. It\nall works very well, with one drawback:\n\nDrivers requesting an IRQ must now know whether the handler will\nrun in a thread context or not, and call request_threaded_irq() or\nrequest_irq() accordingly.\n\nThe problem is that the requesting driver sometimes doesn\u0027t know\nabout the nature of the interrupt, specially when the interrupt\ncontroller is a discrete chip (typically a GPIO expander connected\nover I2C) that can be connected to a wide variety of otherwise perfectly\nsupported hardware.\n\nThis patch introduces the request_any_context_irq() function that mostly\nmimics the usual request_irq(), except that it checks whether the irq\nlevel is configured as nested or not, and calls the right backend.\nOn success, it also returns either IRQC_IS_HARDIRQ or IRQC_IS_NESTED.\n\n[ tglx: Made return value an enum, simplified code and made the export\n  \tof request_any_context_irq GPL ]\n\nSigned-off-by: Marc Zyngier \u003cmaz@misterjones.org\u003e\nCc: \u003cjoachim.eastwood@jotron.com\u003e\nLKML-Reference: \u003c927ea285bd0c68934ddae1a47e44a9ba@localhost\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "753649dbc49345a73a2454c770a3f2d54d11aec6",
      "tree": "7489a4f883a1281a4874817826ebf369f7d019f0",
      "parents": [
        "2eaa9cfdf33b8d7fb7aff27792192e0019ae8fc6"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Mar 31 13:30:19 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Mar 31 15:48:38 2010 +0200"
      },
      "message": "genirq: Force MSI irq handlers to run with interrupts disabled\n\nNetwork folks reported that directing all MSI-X vectors of their multi\nqueue NICs to a single core can cause interrupt stack overflows when\nenough interrupts fire at the same time.\n\nThis is caused by the fact that we run interrupt handlers by default\nwith interrupts enabled unless the driver reuqests the interrupt with\nthe IRQF_DISABLED set. The NIC handlers do not set this flag, so\nsimultaneous interrupts can nest unlimited and cause the stack\noverflow.\n\nThe only safe counter measure is to run the interrupt handlers with\ninterrupts disabled. We can\u0027t switch to this mode in general right\nnow, but it is safe to do so for MSI interrupts.\n\nForce IRQF_DISABLED for MSI interrupt handlers.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Linus Torvalds \u003ctorvalds@osdl.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "cc8c3b78433222e5dbc1fdfcfdde29e1743f181a",
      "tree": "7efe13d87d7d92b1ff409455e65c85129bc30121",
      "parents": [
        "0b1adaa031a55e44f5dd942f234bf09d28e8a0d6"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Mar 23 22:40:53 2010 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Mar 24 14:38:23 2010 +0100"
      },
      "message": "genirq: Protect access to irq_desc-\u003eaction in can_request_irq()\n\ncan_request_irq() accesses and dereferences irq_desc-\u003eaction w/o\nholding irq_desc-\u003elock. So action can be freed on another CPU before\nit\u0027s dereferenced. Unlikely, but ...\n\nProtect it with desc-\u003elock.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "0b1adaa031a55e44f5dd942f234bf09d28e8a0d6",
      "tree": "354aa6cbfbcd856226c543b9f263f87864245065",
      "parents": [
        "522dba7134d6b2e5821d3457f7941ec34f668e6d"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Mar 09 19:45:54 2010 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Mar 10 17:45:14 2010 +0100"
      },
      "message": "genirq: Prevent oneshot irq thread race\n\nLars-Peter pointed out that the oneshot threaded interrupt handler\ncode has the following race:\n\n CPU0                            CPU1\n hande_level_irq(irq X)\n   mask_ack_irq(irq X)\n   handle_IRQ_event(irq X)\n     wake_up(thread_handler)\n                                 thread handler(irq X) runs\n                                 finalize_oneshot(irq X)\n\t\t\t\t  does not unmask due to \n\t\t\t\t  !(desc-\u003estatus \u0026 IRQ_MASKED)\n\n return from irq\n does not unmask due to\n (desc-\u003estatus \u0026 IRQ_ONESHOT)\n  \t\t\t\t  \nThis leaves the interrupt line masked forever. \n\nThe reason for this is the inconsistent handling of the IRQ_MASKED\nflag. Instead of setting it in the mask function the oneshot support\nsets the flag after waking up the irq thread.\n\nThe solution for this is to set/clear the IRQ_MASKED status whenever\nwe mask/unmask an interrupt line. That\u0027s the easy part, but that\ncleanup opens another race:\n\n CPU0                            CPU1\n hande_level_irq(irq)\n   mask_ack_irq(irq)\n   handle_IRQ_event(irq)\n     wake_up(thread_handler)\n                                 thread handler(irq) runs\n                                 finalize_oneshot_irq(irq)\n\t\t\t\t  unmask(irq)\n     irq triggers again\n     handle_level_irq(irq)\n       mask_ack_irq(irq)\n     return from irq due to IRQ_INPROGRESS\t\t\t\t  \n\n return from irq\n does not unmask due to\n (desc-\u003estatus \u0026 IRQ_ONESHOT)\n\nThis requires that we synchronize finalize_oneshot_irq() with the\nprimary handler. If IRQ_INPROGESS is set we wait until the primary\nhandler on the other CPU has returned before unmasking the interrupt\nline again.\n\nWe probably have never seen that problem because it does not happen on\nUP and on SMP the irqbalancer protects us by pinning the primary\nhandler and the thread to the same CPU.\n\nReported-by: Lars-Peter Clausen \u003clars@metafoo.de\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "239007b8440abff689632f50cdf0f2b9e895b534",
      "tree": "569cab843af4a999d6d868ec9a824530d2bfa733",
      "parents": [
        "9f5a5621e78cf48d86682a71ceb3fcdbde38b222"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Nov 17 16:46:45 2009 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Dec 14 23:55:33 2009 +0100"
      },
      "message": "genirq: Convert irq_desc.lock to raw_spinlock\n\nConvert locks which cannot be sleeping locks in preempt-rt to\nraw_spinlocks.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "2b876f95d03e226394b5d360c86127cbefaf614b",
      "tree": "1f7ea2b85896bac5f5caecb6ff7a8c5d5262914f",
      "parents": [
        "fbf07eac7bf21c262143194181bd97c5d18b8ceb",
        "c95b4502ad7fe8f3b9954aec794b00ac0046ab3a",
        "6ce51c431019310ca03371355a4366c4649fa349"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 08 19:30:19 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 08 19:30:19 2009 -0800"
      },
      "message": "Merge branches \u0027timers-for-linus-ntp\u0027 and \u0027irq-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027timers-for-linus-ntp\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  ntp: Provide compability defines (You say MOD_NANO, I say ADJ_NANO)\n\n* \u0027irq-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  genirq: do not execute DEBUG_SHIRQ when irq setup failed\n"
    },
    {
      "commit": "d90a7e86401ffea2163a4337f3a47f3909c4e255",
      "tree": "afe3d4aa24849c561bb1e6c04c4c54808cbedb47",
      "parents": [
        "12a499612e1ff439bdad240c7f86c55366941d4d",
        "4dbc9ca219b0f294332e734528f7b82211700170"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Sep 11 13:21:31 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Sep 11 13:21:31 2009 -0700"
      },
      "message": "Merge branch \u0027irq-threaded-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027irq-threaded-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  genirq: Do not mask oneshot edge type interrupts\n  genirq: Support nested threaded irq handling\n  genirq: Add buslock support\n  genirq: Add oneshot support\n"
    },
    {
      "commit": "69ab849439b506cd8dd2879527fdb64d95dd5211",
      "tree": "059fba8bcb8147fafcd4e86db61f0f88d6a84095",
      "parents": [
        "2d860ad76f4ee4d2eba0fe3797c8d7cdce432cc0"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Aug 17 14:07:16 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Aug 18 17:22:43 2009 +0200"
      },
      "message": "genirq: Wake up irq thread after action has been installed\n\nThe wake_up_process() of the new irq thread in __setup_irq() is too\nearly as the irqaction is not yet fully initialized especially\naction-\u003eirq is not yet set. The interrupt thread might dereference the\nwrong irq descriptor.\n\nMove the wakeup after the action is installed and action-\u003eirq has been\nset.\n\nReported-by: Michael Buesch \u003cmb@bu3sch.de\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nTested-by: Michael Buesch \u003cmb@bu3sch.de\u003e\n"
    },
    {
      "commit": "399b5da29b9f851eb7b96e2882097127f003e87c",
      "tree": "0264a7ae22988e8a298407c611b5b639c9315ff7",
      "parents": [
        "70aedd24d20e75198f5a0b11750faabbb56924e2"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Aug 13 13:21:38 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Aug 17 10:54:05 2009 +0200"
      },
      "message": "genirq: Support nested threaded irq handling\n\nInterrupt chips which are behind a slow bus (i2c, spi ...) and\ndemultiplex other interrupt sources need to run their interrupt\nhandler in a thread. \n\nThe demultiplexed interrupt handlers need to run in thread context as\nwell and need to finish before the demux handler thread can reenable\nthe interrupt line. So the easiest way is to run the sub device\nhandlers in the context of the demultiplexing handler thread.\n\nTo avoid that a separate thread is created for the subdevices the\nfunction set_nested_irq_thread() is provided which sets the\nIRQ_NESTED_THREAD flag in the interrupt descriptor.\n\nA driver which calls request_threaded_irq() must not be aware of the\nfact that the threaded handler is called in the context of the\ndemultiplexing handler thread. The setup code checks the\nIRQ_NESTED_THREAD flag which was set from the irq chip setup code and\ndoes not setup a separate thread for the interrupt. The primary\nfunction which is provided by the device driver is replaced by an\ninternal dummy function which warns when it is called.\n\nFor the demultiplexing handler a helper function handle_nested_irq()\nis provided which calls the demux interrupt thread function in the\ncontext of the caller and does the proper interrupt accounting and\ntakes the interrupt disabled status of the demultiplexed subdevice\ninto account.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Mark Brown \u003cbroonie@opensource.wolfsonmicro.com\u003e\nCc: Dmitry Torokhov \u003cdmitry.torokhov@gmail.com\u003e\nCc: Trilok Soni \u003csoni.trilok@gmail.com\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: Brian Swetland \u003cswetland@google.com\u003e\nCc: Joonyoung Shim \u003cjy0922.shim@samsung.com\u003e\nCc: m.szyprowski@samsung.com\nCc: t.fujak@samsung.com\nCc: kyungmin.park@samsung.com,\nCc: David Brownell \u003cdavid-b@pacbell.net\u003e\nCc: Daniel Ribeiro \u003cdrwyrm@gmail.com\u003e\nCc: arve@android.com\nCc: Barry Song \u003c21cnbao@gmail.com\u003e\n\n"
    },
    {
      "commit": "70aedd24d20e75198f5a0b11750faabbb56924e2",
      "tree": "8492641c61aa3af6f4dea421b8f628efe6fc92bd",
      "parents": [
        "b25c340c195447afb1860da580fe2a85a6b652c5"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Aug 13 12:17:48 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Aug 17 10:54:05 2009 +0200"
      },
      "message": "genirq: Add buslock support\n\nSome interrupt chips are connected to a \"slow\" bus (i2c, spi ...). The\nbus access needs to sleep and therefor cannot be called in atomic\ncontexts.\n\nSome of the generic interrupt management functions like disable_irq(),\nenable_irq() ... call interrupt chip functions with the irq_desc-\u003elock\nheld and interrupts disabled. This does not work for such devices.\n\nProvide a separate synchronization mechanism for such interrupt\nchips. The irq_chip structure is extended by two optional functions\n(bus_lock and bus_sync_and_unlock).\n\nThe idea is to serialize the bus access for those operations in the\ncore code so that drivers which are behind that bus operated interrupt\ncontroller do not have to worry about it and just can use the normal\ninterfaces. To achieve this we add two function pointers to the\nirq_chip: bus_lock and bus_sync_unlock.\n\nbus_lock() is called to serialize access to the interrupt controller\nbus.\n\nNow the core code can issue chip-\u003emask/unmask ... commands without\nchanging the fast path code at all. The chip implementation merily\nstores that information in a chip private data structure and\nreturns. No bus interaction as these functions are called from atomic\ncontext.\n\nAfter that bus_sync_unlock() is called outside the atomic context. Now\nthe chip implementation issues the bus commands, waits for completion\nand unlocks the interrupt controller bus.\n\nThe irq_chip implementation as pseudo code:\n\nstruct irq_chip_data {\n       struct mutex   mutex;\n       unsigned int   irq_offset;\n       unsigned long  mask;\n       unsigned long  mask_status;\n}\n\nstatic void bus_lock(unsigned int irq)\n{\n        struct irq_chip_data *data \u003d get_irq_desc_chip_data(irq);\n\n        mutex_lock(\u0026data-\u003emutex);\n}\n\nstatic void mask(unsigned int irq)\n{\n        struct irq_chip_data *data \u003d get_irq_desc_chip_data(irq);\n\n        irq -\u003d data-\u003eirq_offset;\n        data-\u003emask |\u003d (1 \u003c\u003c irq);\n}\n\nstatic void unmask(unsigned int irq)\n{\n        struct irq_chip_data *data \u003d get_irq_desc_chip_data(irq);\n\n        irq -\u003d data-\u003eirq_offset;\n        data-\u003emask \u0026\u003d ~(1 \u003c\u003c irq);\n}\n\nstatic void bus_sync_unlock(unsigned int irq)\n{\n        struct irq_chip_data *data \u003d get_irq_desc_chip_data(irq);\n\n        if (data-\u003emask !\u003d data-\u003emask_status) {\n                do_bus_magic_to_set_mask(data-\u003emask);\n                data-\u003emask_status \u003d data-\u003emask;\n        }\n        mutex_unlock(\u0026data-\u003emutex);\n}\n\nThe device drivers can use request_threaded_irq, free_irq, disable_irq\nand enable_irq as usual with the only restriction that the calls need\nto come from non atomic context.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Mark Brown \u003cbroonie@opensource.wolfsonmicro.com\u003e\nCc: Dmitry Torokhov \u003cdmitry.torokhov@gmail.com\u003e\nCc: Trilok Soni \u003csoni.trilok@gmail.com\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: Brian Swetland \u003cswetland@google.com\u003e\nCc: Joonyoung Shim \u003cjy0922.shim@samsung.com\u003e\nCc: m.szyprowski@samsung.com\nCc: t.fujak@samsung.com\nCc: kyungmin.park@samsung.com,\nCc: David Brownell \u003cdavid-b@pacbell.net\u003e\nCc: Daniel Ribeiro \u003cdrwyrm@gmail.com\u003e\nCc: arve@android.com\nCc: Barry Song \u003c21cnbao@gmail.com\u003e\n\n"
    },
    {
      "commit": "b25c340c195447afb1860da580fe2a85a6b652c5",
      "tree": "99578092c1e6100f50786e44a1a4fe9cfdb11662",
      "parents": [
        "b2add73dbf93fd50f00564d7abc3e2b9aa9dd20c"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Aug 13 12:17:22 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Aug 17 10:54:05 2009 +0200"
      },
      "message": "genirq: Add oneshot support\n\nFor threaded interrupt handlers we expect the hard interrupt handler\npart to mask the interrupt on the originating device. The interrupt\nline itself is reenabled after the hard interrupt handler has\nexecuted.\n\nThis requires access to the originating device from hard interrupt\ncontext which is not always possible. There are devices which can only\nbe accessed via a bus (i2c, spi, ...). The bus access requires thread\ncontext. For such devices we need to keep the interrupt line masked\nuntil the threaded handler has executed.\n\nAdd a new flag IRQF_ONESHOT which allows drivers to request that the\ninterrupt is not unmasked after the hard interrupt context handler has\nbeen executed and the thread has been woken. The interrupt line is\nunmasked after the thread handler function has been executed.\n\nNote that for now IRQF_ONESHOT cannot be used with IRQF_SHARED to\navoid complex accounting mechanisms.\n\nFor oneshot interrupts the primary handler simply returns\nIRQ_WAKE_THREAD and does nothing else. A generic implementation\nirq_default_primary_handler() is provided to avoid useless copies all\nover the place. It is automatically installed when\nrequest_threaded_irq() is called with handler\u003dNULL and\nthread_fn!\u003dNULL.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Mark Brown \u003cbroonie@opensource.wolfsonmicro.com\u003e\nCc: Dmitry Torokhov \u003cdmitry.torokhov@gmail.com\u003e\nCc: Trilok Soni \u003csoni.trilok@gmail.com\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: Brian Swetland \u003cswetland@google.com\u003e\nCc: Joonyoung Shim \u003cjy0922.shim@samsung.com\u003e\nCc: m.szyprowski@samsung.com\nCc: t.fujak@samsung.com\nCc: kyungmin.park@samsung.com,\nCc: David Brownell \u003cdavid-b@pacbell.net\u003e\nCc: Daniel Ribeiro \u003cdrwyrm@gmail.com\u003e\nCc: arve@android.com\nCc: Barry Song \u003c21cnbao@gmail.com\u003e\n\n"
    },
    {
      "commit": "2d860ad76f4ee4d2eba0fe3797c8d7cdce432cc0",
      "tree": "928e3a162ce9bf9294afd138f5609cf3b70a747b",
      "parents": [
        "3493e84de60590d3012139187f631f2dfbf0887f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 13 13:05:10 2009 -0700"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Aug 13 23:09:27 2009 +0200"
      },
      "message": "genirq: prevent wakeup of freed irq thread\n\nfree_irq() can remove an irqaction while the corresponding interrupt\nis in progress, but free_irq() sets action-\u003ethread to NULL\nunconditionally, which might lead to a NULL pointer dereference in\nhandle_IRQ_event() when the hard interrupt context tries to wake up\nthe handler thread.\n\nPrevent this by moving the thread stop after synchronize_irq(). No\nneed to set action-\u003ethread to NULL either as action is going to be\nfreed anyway.\n\nThis fixes a boot crash reported against preempt-rt which uses the\nmainline irq threads code to implement full irq threading.\n\n[ tglx: removed local irqthread variable ]\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "61f3826133dc07142935fb5712fc738e19eb5575",
      "tree": "2bac9166734e564a4f89d9db9d7498df87597c31",
      "parents": [
        "3c3301083e3bea4d14c597106c7b20b4b85fc03d"
      ],
      "author": {
        "name": "Bruno Premont",
        "email": "bonbons@linux-vserver.org",
        "time": "Wed Jul 22 22:22:32 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Jul 22 23:18:46 2009 +0200"
      },
      "message": "genirq: Fix UP compile failure caused by irq_thread_check_affinity\n\nSince genirq: Delegate irq affinity setting to the irq thread\n(591d2fb02ea80472d846c0b8507007806bdd69cc) compilation with\nCONFIG_SMP\u003dn fails with following error:\n\n/usr/src/linux-2.6/kernel/irq/manage.c:\n   In function \u0027irq_thread_check_affinity\u0027:\n/usr/src/linux-2.6/kernel/irq/manage.c:475:\n   error: \u0027struct irq_desc\u0027 has no member named \u0027affinity\u0027\nmake[4]: *** [kernel/irq/manage.o] Error 1\n\nThat commit adds a new function irq_thread_check_affinity() which\nuses struct irq_desc.affinity which is only available for CONFIG_SMP\u003dy.\nMove that function under #ifdef CONFIG_SMP.\n\n[ tglx@brownpaperbag: compile and boot tested on UP and SMP ]\n\nSigned-off-by: Bruno Premont \u003cbonbons@linux-vserver.org\u003e\nLKML-Reference: \u003c20090722222232.2eb3e1c4@neptune.home\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "591d2fb02ea80472d846c0b8507007806bdd69cc",
      "tree": "c7962a95a47bbdf664f15a504eff24c351f33613",
      "parents": [
        "aea1f7964ae6cba5eb419a958956deb9016b3341"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Jul 21 11:09:39 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Jul 21 14:35:07 2009 +0200"
      },
      "message": "genirq: Delegate irq affinity setting to the irq thread\n\nirq_set_thread_affinity() calls set_cpus_allowed_ptr() which might\nsleep, but irq_set_thread_affinity() is called with desc-\u003elock held\nand can be called from hard interrupt context as well. The code has\nanother bug as it does not hold a ref on the task struct as required\nby set_cpus_allowed_ptr().\n\nJust set the IRQTF_AFFINITY bit in action-\u003ethread_flags. The next time\nthe thread runs it migrates itself. Solves all of the above problems\nnicely.\n\nAdd kerneldoc to irq_set_thread_affinity() while at it.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nLKML-Reference: \u003cnew-submission\u003e\n\n"
    },
    {
      "commit": "2453d6ff6ffc5f0d496b7b14f509a26f99bf115e",
      "tree": "9e4e709bdb932889b0b9cfc5b2b767cfcf750b83",
      "parents": [
        "12e24f34cb0d55efd08c18b2112507d4bf498008",
        "ab33dcff40d7a9a28587e4425621e4cbc4089e03"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jun 20 11:30:01 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jun 20 11:30:01 2009 -0700"
      },
      "message": "Merge branch \u0027irq-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027irq-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  genirq, irq.h: Fix kernel-doc warnings\n  genirq: fix comment to say IRQ_WAKE_THREAD\n"
    },
    {
      "commit": "39a2eddb9b62959dc55c6978b5eaeb3dd57c5ff2",
      "tree": "cef63cdc205079cbdbeafd71998eacb31052b54c",
      "parents": [
        "1d80cac0fe44fb87b2a3d35fddd7f534ea81cd90"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue May 12 14:35:54 2009 -0400"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue May 12 22:11:29 2009 +0200"
      },
      "message": "genirq: fix comment to say IRQ_WAKE_THREAD\n\nTrying to implement a driver to use threaded irqs, I was confused when the \nreturn value to use that was described in the comment above \nrequest_threaded_irq was not defined.\n\nTurns out that the enum is IRQ_WAKE_THREAD where as the comment said \nIRQ_THREAD_WAKE.\n\n[Impact: do not confuse developers with wrong comments ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nLKML-Reference: \u003calpine.DEB.2.00.0905121431020.13338@gandalf.stny.rr.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n\n"
    },
    {
      "commit": "57b150cce8e004ddd36330490a68bfb59b7271e9",
      "tree": "f337b08b6cd9bbe165c709a7e5159b0d6d779238",
      "parents": [
        "d5dedd4507d307eb3f35f21b6e16f336fdc0d82a"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yinghai@kernel.org",
        "time": "Mon Apr 27 17:59:53 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Apr 28 12:21:16 2009 +0200"
      },
      "message": "irq: only update affinity if -\u003eset_affinity() is sucessfull\n\nirq_set_affinity() and move_masked_irq() try to assign affinity\nbefore calling chip set_affinity(). Some archs are assigning it\nin -\u003eset_affinity() again.\n\nWe do something like:\n\n cpumask_cpy(desc-\u003eaffinity, mask);\n desc-\u003echip-\u003eset_affinity(mask);\n\nBut in the failure path, affinity should not be touched - otherwise\nwe\u0027ll end up with a different affinity mask despite the failure to\nmigrate the IRQ.\n\nSo try to update the afffinity only if set_affinity returns with 0.\nAlso call irq_set_thread_affinity accordingly.\n\nv2: update after \"irq, x86: Remove IRQ_DISABLED check in process context IRQ move\"\nv3: according to Ingo, change set_affinity() in irq_chip should return int.\nv4: update comments by removing moving irq_desc code.\n\n[ Impact: fix /proc/irq/*/smp_affinity setting corner case bug ]\n\nSigned-off-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Suresh Siddha \u003csuresh.b.siddha@intel.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nLKML-Reference: \u003c49F65509.60307@kernel.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "6ce51c431019310ca03371355a4366c4649fa349",
      "tree": "8f081f9c6ce501833f105e3d1541f748d9614adc",
      "parents": [
        "833bb3046b6cb320e775ea2160ddca87d53260d5"
      ],
      "author": {
        "name": "Luis Henriques",
        "email": "henrix@sapo.pt",
        "time": "Wed Apr 01 18:06:35 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Apr 23 08:45:48 2009 +0200"
      },
      "message": "genirq: do not execute DEBUG_SHIRQ when irq setup failed\n\nWhen requesting an IRQ, the DEBUG_SHIRQ code executes a fake IRQ just to make\nsure the driver is ready to receive an IRQ immediately.  The problem was that\nthis fake IRQ was being executed even if interrupt line failed to be allocated\nby __setup_irq.\n\nSigned-off-by: Luis Henriques \u003chenrix@sapo.pt\u003e\nLKML-Reference: \u003c20090401170635.GA4392@hades.domain.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n[ fixed bug pointed out by a warning reported by Stephen Rothwell ]\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "6ec3cfeca04622e3d80c9270191cd7f5f88214af",
      "tree": "ba9d66ec365e59842fe97d72855c6065763dfe98",
      "parents": [
        "b21597d0268983f8f9e8b563494f75490403e948"
      ],
      "author": {
        "name": "Pallipadi, Venkatesh",
        "email": "venkatesh.pallipadi@intel.com",
        "time": "Mon Apr 13 15:20:58 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Apr 14 15:21:13 2009 +0200"
      },
      "message": "x86, irq: Remove IRQ_DISABLED check in process context IRQ move\n\nAs discussed in the thread here:\n\n  http://marc.info/?l\u003dlinux-kernel\u0026m\u003d123964468521142\u0026w\u003d2\n\nEric W. Biederman observed:\n\n\u003e It looks like some additional bugs have slipped in since last I looked.\n\u003e\n\u003e set_irq_affinity does this:\n\u003e ifdef CONFIG_GENERIC_PENDING_IRQ\n\u003e        if (desc-\u003estatus \u0026 IRQ_MOVE_PCNTXT || desc-\u003estatus \u0026 IRQ_DISABLED) {\n\u003e                cpumask_copy(desc-\u003eaffinity, cpumask);\n\u003e                desc-\u003echip-\u003eset_affinity(irq, cpumask);\n\u003e        } else {\n\u003e                desc-\u003estatus |\u003d IRQ_MOVE_PENDING;\n\u003e                cpumask_copy(desc-\u003epending_mask, cpumask);\n\u003e        }\n\u003e #else\n\u003e\n\u003e That IRQ_DISABLED case is a software state and as such it has nothing to\n\u003e do with how safe it is to move an irq in process context.\n\n[...]\n\n\u003e\n\u003e The only reason we migrate MSIs in interrupt context today is that there\n\u003e wasn\u0027t infrastructure for support migration both in interrupt context\n\u003e and outside of it.\n\nYes. The idea here was to force the MSI migration to happen in process\ncontext. One of the patches in the series did\n\n        disable_irq(dev-\u003eirq);\n        irq_set_affinity(dev-\u003eirq, cpumask_of(dev-\u003ecpu));\n        enable_irq(dev-\u003eirq);\n\nwith the above patch adding irq/manage code check for interrupt disabled\nand moving the interrupt in process context.\n\nIIRC, there was no IRQ_MOVE_PCNTXT when we were developing this HPET\ncode and we ended up having this ugly hack. IRQ_MOVE_PCNTXT was there\nwhen we eventually submitted the patch upstream. But, looks like I did a\nblind rebasing instead of using IRQ_MOVE_PCNTXT in hpet MSI code.\n\nBelow patch fixes this. i.e., revert commit 932775a4ab622e3c99bd59f14cc\nand add PCNTXT to HPET MSI setup. Also removes copying of desc-\u003eaffinity\nin generic code as set_affinity routines are doing it internally.\n\nReported-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Venkatesh Pallipadi \u003cvenkatesh.pallipadi@intel.com\u003e\nAcked-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: \"Li Shaohua\" \u003cshaohua.li@intel.com\u003e\nCc: Gary Hade \u003cgaryhade@us.ibm.com\u003e\nCc: \"lcm@us.ibm.com\" \u003clcm@us.ibm.com\u003e\nCc: suresh.b.siddha@intel.com\nLKML-Reference: \u003c20090413222058.GB8211@linux-os.sc.intel.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "9efe21cb82b5dbe3b0b2ae4de4eccc64ecb94e95",
      "tree": "7ff8833745d2f268f897f6fa4a27263b4a572245",
      "parents": [
        "de18836e447c2dc30120c0919b8db8ddc0401cc4",
        "0221c81b1b8eb0cbb6b30a0ced52ead32d2b4e4c"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Apr 06 01:41:22 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Apr 06 01:41:22 2009 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into irq/threaded\n\nConflicts:\n\tinclude/linux/irq.h\n\tkernel/irq/handle.c\n"
    },
    {
      "commit": "0a0c5168df270a50e3518e4f12bddb31f8f5f38f",
      "tree": "ea1e392fef9d52a7b81c9010580c09317a4d707d",
      "parents": [
        "019abbc87025a030fd25008612afd4eff8a375f7"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Mon Mar 16 22:33:49 2009 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Mon Mar 30 21:46:54 2009 +0200"
      },
      "message": "PM: Introduce functions for suspending and resuming device interrupts\n\nIntroduce helper functions allowing us to prevent device drivers from\ngetting any interrupts (without disabling interrupts on the CPU)\nduring suspend (or hibernation) and to make them start to receive\ninterrupts again during the subsequent resume.  These functions make it\npossible to keep timer interrupts enabled while the \"late\" suspend and\n\"early\" resume callbacks provided by device drivers are being\nexecuted.  In turn, this allows device drivers\u0027 \"late\" suspend and\n\"early\" resume callbacks to sleep, execute ACPI callbacks etc.\n\nThe functions introduced here will be used to rework the handling of\ninterrupts during suspend (hibernation) and resume.  Namely,\ninterrupts will only be disabled on the CPU right before suspending\nsysdevs, while device drivers will be prevented from receiving\ninterrupts, with the help of the new helper function, before their\n\"late\" suspend callbacks run (and analogously during resume).\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "6e15cf04860074ad032e88c306bea656bbdd0f22",
      "tree": "c346383bb7563e8d66b2f4a502f875b259c34870",
      "parents": [
        "be0ea69674ed95e1e98cb3687a241badc756d228",
        "60db56422043aaa455ac7f858ce23c273220f9d9"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 26 21:39:17 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 27 17:28:43 2009 +0100"
      },
      "message": "Merge branch \u0027core/percpu\u0027 into percpu-cpumask-x86-for-linus-2\n\nConflicts:\n\tarch/parisc/kernel/irq.c\n\tarch/x86/include/asm/fixmap_64.h\n\tarch/x86/include/asm/setup.h\n\tkernel/irq/handle.c\n\nSemantic merge:\n        arch/x86/include/asm/fixmap.h\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f48fe81e5b032914183e9a17052313720c2cac56",
      "tree": "9404047368387a6f8b39b4a822ef28e18eba45e9",
      "parents": [
        "935bd5b971f0df7c06d214d022cf8392e2f37952"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Mar 24 11:46:22 2009 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Mar 24 12:15:23 2009 +0100"
      },
      "message": "genirq: threaded irq handlers review fixups\n\nDelta patch to address the review comments.\n\n      - Implement warning when IRQ_WAKE_THREAD is requested and no\n        thread handler installed\n      - coding style fixes\n\nPointed-out-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n\n"
    },
    {
      "commit": "3aa551c9b4c40018f0e261a178e3d25478dc04a9",
      "tree": "2a696109273fcc421d774cc8fefa4180331a85ad",
      "parents": [
        "80c5520811d3805adcb15c570ea5e2d489fa5d0b"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Mar 23 18:28:15 2009 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Mar 24 12:15:23 2009 +0100"
      },
      "message": "genirq: add threaded interrupt handler support\n\nAdd support for threaded interrupt handlers:\n\nA device driver can request that its main interrupt handler runs in a\nthread. To achive this the device driver requests the interrupt with\nrequest_threaded_irq() and provides additionally to the handler a\nthread function. The handler function is called in hard interrupt\ncontext and needs to check whether the interrupt originated from the\ndevice. If the interrupt originated from the device then the handler\ncan either return IRQ_HANDLED or IRQ_WAKE_THREAD. IRQ_HANDLED is\nreturned when no further action is required. IRQ_WAKE_THREAD causes\nthe genirq code to invoke the threaded (main) handler. When\nIRQ_WAKE_THREAD is returned handler must have disabled the interrupt\non the device level. This is mandatory for shared interrupt handlers,\nbut we need to do it as well for obscure x86 hardware where disabling\nan interrupt on the IO_APIC level redirects the interrupt to the\nlegacy PIC interrupt lines.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n\n"
    },
    {
      "commit": "80c5520811d3805adcb15c570ea5e2d489fa5d0b",
      "tree": "ae797a7f4af39f80e77526533d06ac23b439f0ab",
      "parents": [
        "b3e3b302cf6dc8d60b67f0e84d1fa5648889c038",
        "8c083f081d0014057901c68a0a3e0f8ca7ac8d23"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Mar 23 14:50:03 2009 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Mar 23 21:20:20 2009 +0100"
      },
      "message": "Merge branch \u0027cpus4096\u0027 into irq/threaded\n\nConflicts:\n\tarch/parisc/kernel/irq.c\n\tkernel/irq/handle.c\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "edb35028e40515beb2f94808aff8b3e71fb9f35a",
      "tree": "153da9f8ca1934b30474bb15478feb14a7bd5b75",
      "parents": [
        "8f8573ae9f5deefada6f5d64d0a52c9b39c730c7",
        "cb065c06b6cc615a58860d619d7fa7952cd6a18b",
        "5bee17f18b595937e6beafeee5197868a3f74a06"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Mar 16 09:20:13 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Mar 16 09:20:13 2009 +0100"
      },
      "message": "Merge branches \u0027irq/genirq\u0027 and \u0027linus\u0027 into irq/core\n"
    },
    {
      "commit": "4553573277906901f62f73c0432b332c53de5e2c",
      "tree": "4093af83302fa711e9079152089085927f60c838",
      "parents": [
        "bedd30d986a05e32dc3eab874e4b9ed8a38058bb"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sun Feb 22 23:00:32 2009 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Mar 13 14:32:29 2009 +0100"
      },
      "message": "genirq: use kzalloc instead of explicit zero initialization\n\nImpact: simplification\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\n"
    },
    {
      "commit": "c8e2aeef0b8ac9fb8821b8b3734c031579d0b77a",
      "tree": "6b171eb497bdd5f21f9e6a0b06c4aa6c3c60b76b",
      "parents": [
        "3dd3d46b78c22503957230ca5981849b7bb29b9a"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Mar 09 20:26:23 2009 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Mar 13 14:32:28 2009 +0100"
      },
      "message": "genirq: remove redundant if condition\n\nImpact: cleanup\n\nThe code is only compiled if CONFIG_GENERIC_HARDIRQS\u003dy so another\ncheck for this define in the code is redundant. Remove it.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "eb53b4e8fef10ccccb49a6dbb5e19ca84ba5a305",
      "tree": "156b1a9b799c0b1c4dc90b05a7b2468df56ca1c1",
      "parents": [
        "cbf94f06824780183e4bba165c7c29d5c7bd9a51"
      ],
      "author": {
        "name": "Magnus Damm",
        "email": "damm@igel.co.jp",
        "time": "Thu Mar 12 21:05:59 2009 +0900"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 12 13:16:33 2009 +0100"
      },
      "message": "irq: export remove_irq() and setup_irq() symbols\n\nExport the setup_irq() and remove_irq() symbols.\n\nI\u0027d like to export these functions since I have timer\ncode that needs to use setup_irq() early on (too early\nfor request_irq()), and the same code can also be\ncompiled as a module.\n\nSigned-off-by: Magnus Damm \u003cdamm@igel.co.jp\u003e\nLKML-Reference: \u003c20090312120559.2926.82371.sendpatchset@rx1.opensource.se\u003e\n[ changed to _GPL as these are special APIs deep inside the irq layer. ]\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "cbf94f06824780183e4bba165c7c29d5c7bd9a51",
      "tree": "e1cfa04aee8ba76d79737526061c706defb1552c",
      "parents": [
        "f21cfb258df6dd3ea0b3e56d75c7e994edb81b35"
      ],
      "author": {
        "name": "Magnus Damm",
        "email": "damm@igel.co.jp",
        "time": "Thu Mar 12 21:05:51 2009 +0900"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 12 13:16:33 2009 +0100"
      },
      "message": "irq: match remove_irq() args with setup_irq()\n\nModify remove_irq() to match setup_irq().\n\nSigned-off-by: Magnus Damm \u003cdamm@igel.co.jp\u003e\nLKML-Reference: \u003c20090312120551.2926.43942.sendpatchset@rx1.opensource.se\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f21cfb258df6dd3ea0b3e56d75c7e994edb81b35",
      "tree": "63d2c11d1857bdffab6bf3ed036af8e03d16abd7",
      "parents": [
        "f8cb22cbb8383c9f41e6ccbcd4fb94edb1048bda"
      ],
      "author": {
        "name": "Magnus Damm",
        "email": "damm@igel.co.jp",
        "time": "Thu Mar 12 21:05:42 2009 +0900"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 12 13:16:32 2009 +0100"
      },
      "message": "irq: add remove_irq() for freeing of setup_irq() irqs\n\nImpact: add new API\n\nThis patch adds a remove_irq() function for releasing\ninterrupts requested with setup_irq().\n\nWithout this patch we have no way of releasing such\ninterrupts since free_irq() today tries to kfree()\nthe irqaction passed with setup_irq().\n\nSigned-off-by: Magnus Damm \u003cdamm@igel.co.jp\u003e\nLKML-Reference: \u003c20090312120542.2926.56609.sendpatchset@rx1.opensource.se\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c02368a9d059322f913a58111eade87a656fefd5",
      "tree": "2f02dbbe69b86535f58d2010d9adfb20a9c16fb9",
      "parents": [
        "f17c75453b2d195eba0a90d9f16a3ba88c85b3b4",
        "778ef1e6cbb049c9bcbf405936ee6f2b6e451892"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Mar 02 22:08:56 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Mar 02 22:08:56 2009 +0100"
      },
      "message": "Merge branch \u0027linus\u0027 into irq/genirq\n"
    },
    {
      "commit": "f17c75453b2d195eba0a90d9f16a3ba88c85b3b4",
      "tree": "2727a5965c34c11b11257db56fe87c432cd395ef",
      "parents": [
        "8316e38100c70cd1443ac90074eccdd033aa218d"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Feb 17 20:43:37 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Feb 17 20:44:47 2009 +0100"
      },
      "message": "irq: name \u0027p\u0027 variables a bit better\n\n\u0027p\u0027 stands for pointer - make it clear in setup_irq() and free_irq()\nwhat kind of pointer it is.\n\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "8316e38100c70cd1443ac90074eccdd033aa218d",
      "tree": "155392d9a76df31a1934c181d24467cd93294986",
      "parents": [
        "ae88a23b32fa7e0dc9fa7ce735966e68eb41b0bc"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Feb 17 20:28:29 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Feb 17 20:28:29 2009 +0100"
      },
      "message": "irq: further clean up the free_irq() code flow\n\nLinus noticed that the \u0027pp\u0027 variable can be eliminated\naltogether, and the loop can be cleaned up further.\n\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "ae88a23b32fa7e0dc9fa7ce735966e68eb41b0bc",
      "tree": "39f39938fe6d197e0c1c74ecec649833a3321a68",
      "parents": [
        "327ec5699c29454322d0136375f717f509c145b6"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Feb 15 11:29:50 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Feb 15 11:36:49 2009 +0100"
      },
      "message": "irq: refactor and clean up the free_irq() code flow\n\nImpact: cleanup\n\n- separate out the loop from the actual freeing logic, this wins us\n  two indentation levels allowing a number of followup prettifications\n\n- turn the WARN_ON() into a more informative WARN().\n\n- clean up the comments and the code flow some more\n\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "327ec5699c29454322d0136375f717f509c145b6",
      "tree": "6d7903906cd8e40c6075b695d29e1cf428319bd4",
      "parents": [
        "0e43785c57fee50fbc00ea0378e941efb61fa0c2"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Feb 15 11:21:37 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Feb 15 11:21:37 2009 +0100"
      },
      "message": "irq: clean up manage.c\n\n- make printk message git-greppable\n- fix a few style details\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "8f8573ae9f5deefada6f5d64d0a52c9b39c730c7",
      "tree": "444d55bfb8a048ad3b13051cd55a64b688915a58",
      "parents": [
        "37bed90094fdb1eea6e4afec6a200d4e60143e55",
        "0e43785c57fee50fbc00ea0378e941efb61fa0c2",
        "005bf0e6fa0e9543933fe2e36322af649df7cacb",
        "548c8933801c9ee347b6f1bad2491e4286a4f3a2"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Feb 13 11:57:18 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Feb 13 11:57:18 2009 +0100"
      },
      "message": "Merge branches \u0027irq/genirq\u0027, \u0027irq/sparseirq\u0027 and \u0027irq/urgent\u0027 into irq/core\n"
    },
    {
      "commit": "0e43785c57fee50fbc00ea0378e941efb61fa0c2",
      "tree": "f90ec1d34d987a48707fe455534f16b191702f8a",
      "parents": [
        "74296a8ed6aa3c5bf672808ada690de7ba323ecc"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Fri Feb 13 04:38:04 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Feb 13 10:52:07 2009 +0100"
      },
      "message": "irq: use GFP_KERNEL for action allocation in request_irq()\n\nrequest_irq() calls into proc code via __setup_irq() which is not safe\nin an atomic context, so request_irq() can itself use the more\nreliable GFP_KERNEL allocation for the action descriptor.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "548c8933801c9ee347b6f1bad2491e4286a4f3a2",
      "tree": "f9809fe9c8564a4546b16f650ccc29dd284da4be",
      "parents": [
        "d5b562330ec766292a3ac54ae5e0673610bd5b3d"
      ],
      "author": {
        "name": "Hannes Eder",
        "email": "hannes@hanneseder.net",
        "time": "Sun Feb 08 20:24:47 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Feb 09 10:14:05 2009 +0100"
      },
      "message": "kernel/irq: fix sparse warning: make symbol static\n\nWhile being at it make every occurrence of \u0027do_irq_select_affinity\u0027\nhave the same signature in terms of signedness of the first argument.\n\nFix this sparse warning:\n  kernel/irq/manage.c:112:5: warning: symbol \u0027do_irq_select_affinity\u0027 was not declared. Should it be static?\n\nAlso rename do_irq_select_affinity() to setup_affinity() - shorter name\nand clearer naming.\n\nSigned-off-by: Hannes Eder \u003channes@hanneseder.net\u003e\nAcked-by: Matthew Wilcox \u003cmatthew@wil.cx\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c43e0e46adf79c321ed3fbf0351e1005fb8a2413",
      "tree": "35b9ab361651f649d3c9aa69f159812eba50d154",
      "parents": [
        "dba3d36b2f0842ed7f25c33cd3a2ccdb3d0df9db",
        "f2257b70b0f9b2fe8f2afd83fc6798dca75930b8"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 30 18:23:30 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 30 18:23:30 2009 +0100"
      },
      "message": "Merge branch \u0027linus\u0027 into core/percpu\n\nConflicts:\n\tkernel/irq/handle.c\n"
    },
    {
      "commit": "6a385db5ce7f1fd2c68ec511e44587b67dab8fca",
      "tree": "9324c8ae6f7be54b9fdbd6b60f759292aa727b1f",
      "parents": [
        "18e352e4a73465349711a9324767e1b2453383e2",
        "4369f1fb7cd4cf777312f43e1cb9aa5504fc4125"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jan 28 23:12:55 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jan 28 23:12:55 2009 +0100"
      },
      "message": "Merge branch \u0027core/percpu\u0027 into x86/core\n\nConflicts:\n\tkernel/irq/handle.c\n"
    },
    {
      "commit": "97179fd46da7ddedd18e95388130ed3e06c5a0c7",
      "tree": "8d1a56e41345244d36a9d943a69c5ecf76942816",
      "parents": [
        "1267a8df209c7453d65acbdd56e3588954bf890b"
      ],
      "author": {
        "name": "David Daney",
        "email": "ddaney@caviumnetworks.com",
        "time": "Tue Jan 27 09:53:22 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 27 16:06:55 2009 -0800"
      },
      "message": "cpumask fallout: Initialize irq_default_affinity earlier\n\nMove the initialization of irq_default_affinity to early_irq_init as\ncore_initcall is too late.\n\nirq_default_affinity can be used in init_IRQ and potentially timer and\nSMP init as well.  All of these happen before core_initcall.  Moving\nthe initialization to early_irq_init ensures that it is initialized\nbefore it is used.\n\nSigned-off-by: David Daney \u003cddaney@caviumnetworks.com\u003e\nAcked-by: Mike Travis \u003ctravis@sgi.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1267a8df209c7453d65acbdd56e3588954bf890b",
      "tree": "816732505914ba145fd3fba77c903ed4947c8701",
      "parents": [
        "40413dcb7b273bda681dca38e6ff0bbb3728ef11"
      ],
      "author": {
        "name": "David Daney",
        "email": "ddaney@caviumnetworks.com",
        "time": "Tue Jan 27 09:53:21 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 27 16:06:49 2009 -0800"
      },
      "message": "Make irq_*_affinity depend on CONFIG_GENERIC_HARDIRQS too.\n\nIn interrupt.h these functions are declared only if\nCONFIG_GENERIC_HARDIRQS is set.  We should define them under identical\nconditions.\n\nSigned-off-by: David Daney \u003cddaney@caviumnetworks.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7f7ace0cda64c99599c23785f8979a072e118058",
      "tree": "13f2826e64e09ebaef94a3e7fd9c21cfbd31ec3f",
      "parents": [
        "c59765042f53a79a7a65585042ff463b69cb248c"
      ],
      "author": {
        "name": "Mike Travis",
        "email": "travis@sgi.com",
        "time": "Sat Jan 10 21:58:08 2009 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Jan 11 19:12:46 2009 +0100"
      },
      "message": "cpumask: update irq_desc to use cpumask_var_t\n\nImpact: reduce memory usage, use new cpumask API.\n\nReplace the affinity and pending_masks with cpumask_var_t\u0027s.  This adds\nto the significant size reduction done with the SPARSE_IRQS changes.\n\nThe added functions (init_alloc_desc_masks \u0026 init_copy_desc_masks) are\nin the include file so they can be inlined (and optimized out for the\n!CONFIG_CPUMASKS_OFFSTACK case.)  [Naming chosen to be consistent with\nthe other init*irq functions, as well as the backwards arg declaration\nof \"from, to\" instead of the more common \"to, from\" standard.]\n\nIncludes a slight change to the declaration of struct irq_desc to embed\nthe pending_mask within ifdef(CONFIG_SMP) to be consistent with other\nreferences, and some small changes to Xen.\n\nTested: sparse/non-sparse/cpumask_offstack/non-cpumask_offstack/nonuma/nosmp on x86_64\n\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\nCc: Chris Wright \u003cchrisw@sous-sol.org\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Venkatesh Pallipadi \u003cvenkatesh.pallipadi@intel.com\u003e\nCc: virtualization@lists.osdl.org\nCc: xen-devel@lists.xensource.com\nCc: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\n"
    },
    {
      "commit": "d036e67b40f52bdd95392390108defbac7e53837",
      "tree": "4a00537671036c955c98891af9f4729332b35c50",
      "parents": [
        "6b954823c24f04ed026a8517f6bab5abda279db8"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jan 01 10:12:26 2009 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jan 01 10:12:26 2009 +1030"
      },
      "message": "cpumask: convert kernel/irq\n\nImpact: Reduce stack usage, use new cpumask API.  ALPHA mod!\n\nMain change is that irq_default_affinity becomes a cpumask_var_t, so\ntreat it as a pointer (this effects alpha).\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "2ca1a615835d9f4990f42102ab1f2ef434e7e89c",
      "tree": "726cf3d5f29a6c66c44e4bd68e7ebed2fd83d059",
      "parents": [
        "e12f0102ac81d660c9f801d0a0e10ccf4537a9de",
        "6a94cb73064c952255336cc57731904174b2c58f"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed Dec 31 23:05:57 2008 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed Dec 31 23:05:57 2008 +1030"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6\n\nConflicts:\n\n\tarch/x86/kernel/io_apic.c\n"
    },
    {
      "commit": "179475a3b46f86e2d06f83e2312218ac3f0cf3a7",
      "tree": "d4755f722ae606e21ac87baa262041e2580b2568",
      "parents": [
        "bb758e9637e5ddcff84a97177415499ae1fed498",
        "860cf8894b326e4b89720f520540604834337b72"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 30 16:20:19 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 30 16:20:19 2008 -0800"
      },
      "message": "Merge branch \u0027irq-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027irq-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  x86, sparseirq: clean up Kconfig entry\n  x86: turn CONFIG_SPARSE_IRQ off by default\n  sparseirq: fix numa_migrate_irq_desc dependency and comments\n  sparseirq: add kernel-doc notation for new member in irq_desc, -v2\n  locking, irq: enclose irq_desc_lock_class in CONFIG_LOCKDEP\n  sparseirq, xen: make sure irq_desc is allocated for interrupts\n  sparseirq: fix !SMP building, #2\n  x86, sparseirq: move irq_desc according to smp_affinity, v7\n  proc: enclose desc variable of show_stat() in CONFIG_SPARSE_IRQ\n  sparse irqs: add irqnr.h to the user headers list\n  sparse irqs: handle !GENIRQ platforms\n  sparseirq: fix !SMP \u0026\u0026 !PCI_MSI \u0026\u0026 !HT_IRQ build\n  sparseirq: fix Alpha build failure\n  sparseirq: fix typo in !CONFIG_IO_APIC case\n  x86, MSI: pass irq_cfg and irq_desc\n  x86: MSI start irq numbering from nr_irqs_gsi\n  x86: use NR_IRQS_LEGACY\n  sparse irq_desc[] array: core kernel and x86 changes\n  genirq: record IRQ_LEVEL in irq_desc[]\n  irq.h: remove padding from irq_desc on 64bits\n"
    },
    {
      "commit": "0de26520c7cabf36e1de090ea8092f011a6106ce",
      "tree": "3d02e509b6315fdfd9cdb8c9e0b9ed0a30cf9384",
      "parents": [
        "29c0177e6a4ac094302bed54a1d4bbb6b740a9ef"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sat Dec 13 21:20:26 2008 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sat Dec 13 21:20:26 2008 +1030"
      },
      "message": "cpumask: make irq_set_affinity() take a const struct cpumask\n\nImpact: change existing irq_chip API\n\nNot much point with gentle transition here: the struct irq_chip\u0027s\nsetaffinity method signature needs to change.\n\nFortunately, not widely used code, but hits a few architectures.\n\nNote: In irq_select_affinity() I save a temporary in by mangling\nirq_desc[irq].affinity directly.  Ingo, does this break anything?\n\n(Folded in fix from KOSAKI Motohiro)\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\nReviewed-by: Grant Grundler \u003cgrundler@parisc-linux.org\u003e\nAcked-by: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: ralf@linux-mips.org\nCc: grundler@parisc-linux.org\nCc: jeremy@xensource.com\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\n"
    },
    {
      "commit": "cb9c34e6d090d376b77becaa5d29a65dec7f4272",
      "tree": "3678abce20d6825aebe3fec218057d4131e13fd6",
      "parents": [
        "470c66239ef0336429b35345f3f615d47341e13b",
        "061e41fdb5047b1fb161e89664057835935ca1d2"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Dec 04 08:52:14 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Dec 04 08:52:14 2008 +0100"
      },
      "message": "Merge commit \u0027v2.6.28-rc7\u0027 into core/locking\n"
    },
    {
      "commit": "470c66239ef0336429b35345f3f615d47341e13b",
      "tree": "8816b081041daa9b5f8332b0c803678cbbd04e1f",
      "parents": [
        "7807fafa52b990abb321f1212416c71e64523ecb"
      ],
      "author": {
        "name": "David Brownell",
        "email": "dbrownell@users.sourceforge.net",
        "time": "Mon Dec 01 14:31:37 2008 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Dec 02 11:25:29 2008 +0100"
      },
      "message": "genirq: warn when IRQF_DISABLED may be ignored\n\nImpact: emit new warning\n\nWe periodically waste time tracking down problems from the genirq\nframework not respecting IRQF_DISABLED for some shared IRQ cases.  Linus\nviews this as \"will not fix\", but we\u0027re still left with the bugs caused by\nthis misbehavior.\n\nThis patch adds a nag message in request_irq(), so that drivers can fix\ntheir IRQ handlers to avoid this problem.\n\nNote that developers will never see the relevant bugs when they run with\nLOCKDEP, so it\u0027s no wonder these bugs are hard to find.  (That also means\nLOCKDEP is overlooking some IRQ-related bugs involving IRQ handlers that\ndon\u0027t set IRQF_DISABLED...)\n\nSigned-off-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f2b662da8d6bd44673537f3f64220afefdca369f",
      "tree": "f0cb66d79a1eecfaecc7af47a3ba0390d63ad2c5",
      "parents": [
        "061e41fdb5047b1fb161e89664057835935ca1d2"
      ],
      "author": {
        "name": "David Brownell",
        "email": "dbrownell@users.sourceforge.net",
        "time": "Mon Dec 01 14:31:38 2008 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Dec 02 11:20:46 2008 +0100"
      },
      "message": "genirq: record IRQ_LEVEL in irq_desc[]\n\nImpact: fix __irq_set_trigger() for IRQ_LEVEL\n\nWhen recording the irq trigger type, let\u0027s also make sure\nthat IRQ_LEVEL gets set correctly.\n\nSigned-off-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nAcked-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "3ff68a6a106c362a6811d3e51bced58e6fc87de7",
      "tree": "9a0a10ff49f7453d26afcced211307c818fd9fa9",
      "parents": [
        "f131e2436ddbac2527bb2d6297a823aae4b024f8"
      ],
      "author": {
        "name": "Mark Nelson",
        "email": "markn@au1.ibm.com",
        "time": "Thu Nov 13 21:37:41 2008 +1100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Nov 13 11:59:48 2008 +0100"
      },
      "message": "genirq: __irq_set_trigger: change pr_warning to pr_debug\n\nCommit 0c5d1eb77a8be917b638344a22afe1398236482b (genirq: record trigger\ntype) caused powerpc platforms that had no set_type() function in their\nstruct irq_chip to spew out warnings about \"No set_type function for\nIRQ...\". This warning isn\u0027t necessarily justified though because the\ngeneric powerpc platform code calls set_irq_type() (which in turn calls\n__irq_set_trigger) with information from the device tree to establish\nthe interrupt mappings, regardless of whether the PIC can actually set\na type.\n\nA platform\u0027s irq_chip might not have a set_type function for a variety\nof reasons, for example: the platform may have the type essentially\nhard-coded, or as in the case for Cell interrupts are just messages\npast around that have no real concept of type, or the platform\ncould even have a virtual PIC as on the PS3.\n\nSigned-off-by: Mark Nelson \u003cmarkn@au1.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f131e2436ddbac2527bb2d6297a823aae4b024f8",
      "tree": "c200eb82c6e9924f19261e4fc2a7281a80346900",
      "parents": [
        "6c2e94033df5ca11149e52dd179b8dde3172e9bf"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Nov 08 09:57:40 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 09 22:26:45 2008 +0100"
      },
      "message": "irq: fix typo\n\nImpact: build fix\n\nfix build failure on UP.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "612e3684c1b7752d2890510e4f90115fd1eb2afb",
      "tree": "77d8b8de0a4ae3805cb38bfe60ed2b107fc87cad",
      "parents": [
        "f6d87f4bd259cf33e092cd1a8fde05f291c47af1"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Nov 07 13:58:46 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 09 22:23:54 2008 +0100"
      },
      "message": "genirq: fix the affinity setting in setup_irq\n\nThe affinity setting in setup irq is called before the NO_BALANCING\nflag is checked and might therefore override affinity settings from the\ncalling code with the default setting.\n\nMove the NO_BALANCING flag check before the call to the affinity\nsetting.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f6d87f4bd259cf33e092cd1a8fde05f291c47af1",
      "tree": "abaa66af3c80fb18a20004b8d97261c680551792",
      "parents": [
        "8b805ef617cf0e02f6d18b891f8deb6246421b01"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Nov 07 13:18:30 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 09 22:23:49 2008 +0100"
      },
      "message": "genirq: keep affinities set from userspace across free/request_irq()\n\nImpact: preserve user-modified affinities on interrupts\n\nKumar Galak noticed that commit\n18404756765c713a0be4eb1082920c04822ce588 (genirq: Expose default irq\naffinity mask (take 3))\n\noverrides an already set affinity setting across a free /\nrequest_irq(). Happens e.g. with ifdown/ifup of a network device.\n\nChange the logic to mark the affinities as set and keep them\nintact. This also fixes the unlocked access to irq_desc in\nirq_select_affinity() when called from irq_affinity_proc_write()\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d3c60047bdb03199b93497ac40bd531315d43a86",
      "tree": "858b74f422b1c79be54d2050d23c51999d312566",
      "parents": [
        "a1aca5de08a0cb840a90fb3f729a5940f8d21185"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Oct 16 09:55:00 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Oct 16 16:53:29 2008 +0200"
      },
      "message": "genirq: cleanup the sparseirq modifications\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "932775a4ab622e3c99bd59f14cc7d96722f79501",
      "tree": "401968aea64ed093eb7691f197981a0e18d9d1a1",
      "parents": [
        "1f3addcf2d54394d10713be947eeaf18d2b998a9"
      ],
      "author": {
        "name": "venkatesh.pallipadi@intel.com",
        "email": "venkatesh.pallipadi@intel.com",
        "time": "Fri Sep 05 18:02:15 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Oct 16 16:53:07 2008 +0200"
      },
      "message": "x86: HPET_MSI change IRQ affinity in process context when it is disabled\n\nChange the IRQ affinity in the process context when the IRQ is disabled.\n\nSigned-off-by: Venkatesh Pallipadi \u003cvenkatesh.pallipadi@intel.com\u003e\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "8b8e8c1bf7275eca859fe551dfa484134eaf013b",
      "tree": "3e2f950a8f34f419a59a31ddd12e9d7331911e3d",
      "parents": [
        "6d50bc26836e16a9589e0b128d527c29e30d722a"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yhlu.kernel@gmail.com",
        "time": "Tue Aug 19 20:50:23 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Oct 16 16:52:52 2008 +0200"
      },
      "message": "x86: remove irqbalance in kernel for 32 bit\n\nThis has been deprecated for years, the user space irqbalanced utility\nworks better with numa, has configurable policies, etc...\n\nSigned-off-by: Yinghai Lu \u003cyhlu.kernel@gmai.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "cb5bc83225a86ca53bbb889ed8439e4fd6cf44ac",
      "tree": "d2c43413adbc86562ab63498e3ce14e36ba253ed",
      "parents": [
        "1d5f6b36c4736af1dac396d6267eb53dcc8c0021"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yhlu.kernel@gmail.com",
        "time": "Tue Aug 19 20:50:17 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Oct 16 16:52:51 2008 +0200"
      },
      "message": "x86_64: rename irq_desc/irq_desc_alloc\n\nchange names:\n\n          irq_desc() \u003d\u003d\u003e irq_desc_alloc\n\t__irq_desc() \u003d\u003d\u003e irq_desc\n\nAlso split a few of the uses in lowlevel x86 code.\n\nv2: need to check if desc is null in smp_irq_move_cleanup\n\nSigned-off-by: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "7d94f7ca401dd7f445fda9a971a48aa5427b3e55",
      "tree": "8f4d4b73966fd0aa54df2da5bbcf67ea0a7ff43a",
      "parents": [
        "46b8214d12c274bd4265aae482ab7ffe69d94818"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yhlu.kernel@gmail.com",
        "time": "Tue Aug 19 20:50:14 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Oct 16 16:52:50 2008 +0200"
      },
      "message": "irq: remove \u003e\u003d nr_irqs checking with config_have_sparse_irq\n\nremove irq limit checks - nr_irqs is dynamic and we expand anytime.\n\nv2: fix checking about result irq_cfg_without_new, so could use msi again\nv3: use irq_desc_without_new to check irq is valid\n\nSigned-off-by: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "2c6927a38f65b53b62f86158fba29a068c4e8b6a",
      "tree": "4f23cf5689c8fbaed771219b4afd3f785d8048bc",
      "parents": [
        "9059d8fa4a3a9153da53da890039f7f956cc9d19"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yhlu.kernel@gmail.com",
        "time": "Tue Aug 19 20:50:11 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Oct 16 16:52:33 2008 +0200"
      },
      "message": "irq: replace loop with nr_irqs with for_each_irq_desc\n\nThere are a handful of loops that go from 0 to nr_irqs and use\nget_irq_desc() on them. These would allocate all the irq_desc\nentries, regardless of the need for them.\n\nUse the smarter for_each_irq_desc() iterator that will only iterate\nover the present ones.\n\nv2: make sure arch without GENERIC_HARDIRQS work too\n\nSigned-off-by: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "08678b0841267c1d00d771fe01548d86043d065e",
      "tree": "7debb21f9e9a768ced43077f7376797a0c46f8c0",
      "parents": [
        "bfea1238beac9d306eeac081c67de5ca6aec4c7a"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yhlu.kernel@gmail.com",
        "time": "Tue Aug 19 20:50:05 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Oct 16 16:52:29 2008 +0200"
      },
      "message": "generic: sparse irqs: use irq_desc() together with dyn_array, instead of irq_desc[]\n\nadd CONFIG_HAVE_SPARSE_IRQ to for use condensed array.\nGet rid of irq_desc[] array assumptions.\n\nPreallocate 32 irq_desc, and irq_desc() will try to get more.\n\n( No change in functionality is expected anywhere, except the odd build\n  failure where we missed a code site or where a crossing commit itroduces\n  new irq_desc[] usage. )\n\nv2: according to Eric, change get_irq_desc() to irq_desc()\n\nSigned-off-by: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "85c0f90978bf50596dbd23854648020f1f9b5bfd",
      "tree": "f66c598bb37b925dd6c74e4ce1fb06345c742c01",
      "parents": [
        "6da55c3e8da88e8a7cb6452160776ad6706798ad"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yhlu.kernel@gmail.com",
        "time": "Tue Aug 19 20:49:47 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Oct 16 16:52:05 2008 +0200"
      },
      "message": "irq: introduce nr_irqs\n\nat this point nr_irqs is equal NR_IRQS\n\nconvert a few easy users from NR_IRQS to dynamic nr_irqs.\n\nv2: according to Eric, we need to take care of arch without generic_hardirqs\n\nSigned-off-by: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "5fef06e8c8c52aa7170dbbb068aa996d83738d38",
      "tree": "f46a1eefd68863bdae57afa004e5281801a6b61e",
      "parents": [
        "0c5d1eb77a8be917b638344a22afe1398236482b",
        "278429cff8809958d25415ba0ed32b59866ab1a8"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Oct 16 16:51:32 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Oct 16 16:51:32 2008 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into genirq\n"
    },
    {
      "commit": "0c5d1eb77a8be917b638344a22afe1398236482b",
      "tree": "57d57c9b270cc10428f818cfec9725a1344b78ce",
      "parents": [
        "d6d5aeb661fc14655c417f3582ae7ec52985d2a8"
      ],
      "author": {
        "name": "David Brownell",
        "email": "dbrownell@users.sourceforge.net",
        "time": "Wed Oct 01 14:46:18 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Oct 02 10:24:09 2008 +0200"
      },
      "message": "genirq: record trigger type\n\nGenirq hasn\u0027t previously recorded the trigger type used by any given IRQ,\nalthough some irq_chip support has done so.  That data can be useful when\ntroubleshooting.  This patch records it in the relevant irq_desc.status\nbits, and improves consistency between the two driver-visible calls\naffected:\n\n - Make set_irq_type() usage match request_irq() usage:\n    * IRQ_TYPE_NONE should be a NOP; succeed, so irq_chip methods\n      won\u0027t have to handle that case any more (many do it wrong).\n    * IRQ_TYPE_PROBE is ignored; any buggy out-of-tree callers\n      might need to switch over to the real IRQ probing code.\n    * emit the same diagnostics (from shared utility code)\n\n - Their kerneldoc now reflects usage:\n    * request_irq() flags include IRQF_TRIGGER_* to specify\n      active edge(s)/level ... docs previously omitted that\n    * set_irq_type() is declared in \u003clinux/irq.h\u003e so callers\n      should use the (bit-equivalent) IRQ_TYPE_* symbols there\n\nAlso: adds a warning about shared IRQs that don\u0027t end up using the\nrequested trigger mode; and fix an unrelated \"sparse\" warning.\n\nSigned-off-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nAcked-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d6d5aeb661fc14655c417f3582ae7ec52985d2a8",
      "tree": "5e168da05cb28d10b5accc74718428cfd5527201",
      "parents": [
        "7e6e178ab1548c8d894a77593e757acf4510b8ba",
        "94aca1dac6f6d21f4b07e4864baf7768cabcc6e7"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Oct 02 10:21:26 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Oct 02 10:21:26 2008 +0200"
      },
      "message": "Merge commit \u0027v2.6.27-rc8\u0027 into genirq\n"
    },
    {
      "commit": "7e6e178ab1548c8d894a77593e757acf4510b8ba",
      "tree": "1bbebd67a2a80573f277e39e7746c2d9c19dfcf4",
      "parents": [
        "377bf1e4ac2d894791733270604594c7c851ef83"
      ],
      "author": {
        "name": "Pawel MOLL",
        "email": "pawel.moll@st.com",
        "time": "Mon Sep 01 10:12:11 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Sep 06 20:36:38 2008 +0200"
      },
      "message": "genirq: irq_chip-\u003estartup() usage in setup_irq and set_irq_chained handler\n\nThis patch clarifies usage of irq_chip-\u003estartup() callback:\n\n1. The \"if (startup) startup(); else enabled();\" code in setup_irq()\n   is unnecessary, as startup() falls back to enabled() via\n   default callbacks, set by irq_chip_set_defaults().\n\n2. When using set_irq_chained_handler() the startup() was never called,\n   which is not good at all... Fixed. And again - when startup() is not\n   defined the call will fall back to enable() than to unmask() via\n   default callbacks.\n\nSigned-off-by: Pawel Moll \u003cpawel.moll@st.com\u003e\nAcked-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "377bf1e4ac2d894791733270604594c7c851ef83",
      "tree": "955bb2e540d8ae5b5290982dcadb3ff18673ba2c",
      "parents": [
        "8d00a6c8f6b08e7167bc03bf955cdc7e47c5132e"
      ],
      "author": {
        "name": "Anton Vorontsov",
        "email": "avorontsov@ru.mvista.com",
        "time": "Thu Aug 21 22:58:28 2008 +0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Aug 22 08:07:21 2008 +0200"
      },
      "message": "genirq: fix irq_desc-\u003edepth handling with DEBUG_SHIRQ\n\nWhen DEBUG_SHIRQ is selected, a spurious IRQ is issued before\nthe setup_irq() initializes the desc-\u003edepth. An IRQ handler may\ncall disable_irq_nosync(), but then setup_irq() will overwrite\ndesc-\u003edepth, and upon enable_irq() we\u0027ll catch this WARN:\n\n------------[ cut here ]------------\nBadness at kernel/irq/manage.c:180\nNIP: c0061ab8 LR: c0061f10 CTR: 00000000\nREGS: cf83be50 TRAP: 0700   Not tainted  (2.6.27-rc3-23450-g74919b0)\nMSR: 00021032 \u003cME,IR,DR\u003e  CR: 22042022  XER: 20000000\nTASK \u003d cf829100[5] \u0027events/0\u0027 THREAD: cf83a000\nGPR00: c0061f10 cf83bf00 cf829100 c038e674 00000016 00000000 cf83bef8 00000038\nGPR08: c0298910 00000000 c0310d28 cf83a000 00000c9c 1001a1a8 0fffe000 00800000\nGPR16: ffffffff 00000000 007fff00 00000000 007ffeb0 c03320a0 c031095c c0310924\nGPR24: cf8292ec cf807190 cf83a000 00009032 c038e6a4 c038e674 cf99b1cc c038e674\nNIP [c0061ab8] __enable_irq+0x20/0x80\nLR [c0061f10] enable_irq+0x50/0x70\nCall Trace:\n[cf83bf00] [c038e674] irq_desc+0x630/0x9000 (unreliable)\n[cf83bf10] [c0061f10] enable_irq+0x50/0x70\n[cf83bf30] [c01abe94] phy_change+0x68/0x108\n[cf83bf50] [c0046394] run_workqueue+0xc4/0x16c\n[cf83bf90] [c0046834] worker_thread+0x74/0xd4\n[cf83bfd0] [c004ab7c] kthread+0x48/0x84\n[cf83bff0] [c00135e0] kernel_thread+0x44/0x60\nInstruction dump:\n4e800020 3d20c031 38a94214 4bffffcc 9421fff0 7c0802a6 93e1000c 7c7f1b78\n90010014 8123001c 2f890000 409e001c \u003c0fe00000\u003e 80010014 83e1000c 38210010\n\nThat trace corresponds to this line:\nWARN(1, KERN_WARNING \"Unbalanced enable for IRQ %d\\n\", irq);\n\nThe patch fixes the problem by moving the SHIRQ code below the\nsetup_irq().\n\nUnfortunately we can\u0027t easily move the SHIRQ code inside the\nsetup_irq(), since it grabs a spinlock, so to prvent a \u0027real\u0027\nIRQ from interfere us we should disable that IRQ.\n\np.s. The driver in question is drivers/net/phy/phy.c.\n\nSigned-off-by: Anton Vorontsov \u003cavorontsov@ru.mvista.com\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "51ca3c679194e7435c25b8e77b0a73c597e41ae9",
      "tree": "a681dca369607ab0f371d5246b0f75140b860a8a",
      "parents": [
        "b55793f7528ce1b73c25b3ac8a86a6cda2a0f9a4",
        "b635acec48bcaa9183fcbf4e3955616b0d4119b5"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Aug 14 14:58:01 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Aug 14 14:58:01 2008 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into x86/core\n\nConflicts:\n\tarch/x86/kernel/genapic_64.c\n\tinclude/asm-x86/kvm_host.h\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c69ad71bcdecbaab82cfacb1dc967bd7fd967a3b",
      "tree": "0554837705dd0e63d18522085c22ab0c2c1467ff",
      "parents": [
        "5b2becc8cffdccdd60c63099f592ddd35aa6c34f"
      ],
      "author": {
        "name": "David Brownell",
        "email": "dbrownell@users.sourceforge.net",
        "time": "Tue Aug 05 13:01:14 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 05 14:33:47 2008 -0700"
      },
      "message": "genirq: better warning on irqchip-\u003eset_type() failure\n\nWhile I\u0027m glad to finally see the hole fixed whereby passing an invalid\nIRQ trigger type to request_irq() would be ignored, the current diagnostic\nisn\u0027t quite useful.  Fixed by also listing the trigger type which was\nrejected.\n\nSigned-off-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nAcked-by: Uwe Kleine-König \u003cUwe.Kleine-Koenig@digi.com\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": "15dd859cacf312f606f54502d1f66537a1e5c78c",
      "tree": "e50e125eaa6da83fa715704e53c1bde013d1ef8e",
      "parents": [
        "b2d9d33412b9d13a40cd314d93ab517950fc5950",
        "6e86841d05f371b5b9b86ce76c02aaee83352298"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jul 30 19:33:48 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jul 30 19:33:48 2008 +0200"
      },
      "message": "Merge commit \u0027v2.6.27-rc1\u0027 into x86/core\n\nConflicts:\n\n\tinclude/asm-x86/dma-mapping.h\n\tinclude/asm-x86/namei.h\n\tinclude/asm-x86/uaccess.h\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b8c512f6190e313df69060bae4a161c5c044e272",
      "tree": "4b36b2ff66f5139141058d8d63f3dc219281bb5d",
      "parents": [
        "51cc50685a4275c6a02653670af9f108a64e01cf"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Fri Jul 25 19:45:36 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:07 2008 -0700"
      },
      "message": "Use WARN() in kernel/irq/manage.c\n\nReplace a printk+WARN_ON() by a WARN(); this increases the chance of the\nstring making it into the bugreport (ie: it goes inside the\n---[ cut here ]--- section)\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6dec3a10a7a6093af10cef7ac56021150afd6451",
      "tree": "f4d8511f023e3e0c203baf889d4a0f3925882381",
      "parents": [
        "29308333fbe2cc61258c1c470f9403960428beb2",
        "10a010f6953b5a14ba2f0be40a4fce1bea220875"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Jul 26 16:29:23 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Jul 26 16:29:23 2008 +0200"
      },
      "message": "Merge branch \u0027x86/x2apic\u0027 into x86/core\n\nConflicts:\n\n\tinclude/asm-x86/i8259.h\n\tinclude/asm-x86/msidef.h\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "7a2c477069fbd32f91598f05334003979b987a39",
      "tree": "fe4ac84819050159a45752ad4c03b2abc971ad06",
      "parents": [
        "a8f18b909c0a3f22630846207035c8b84bb252b8"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Fri Jul 25 01:45:54 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:29 2008 -0700"
      },
      "message": "kernel/irq/manage.c: replace a printk + WARN_ON() to a WARN()\n\nReplace a printk+WARN_ON() by a WARN(); this increases the chance of the\nstring making it into the bugreport (ie: it goes inside the\n---[ cut here ]--- section)\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "10a010f6953b5a14ba2f0be40a4fce1bea220875",
      "tree": "19aadf718c796bc7fae0a1a1c970d84d67c541d4",
      "parents": [
        "510b37258dfd61693ca6c039865c78bd996e3718",
        "fb2e405fc1fc8b20d9c78eaa1c7fd5a297efde43"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jul 25 13:08:16 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jul 25 13:08:16 2008 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into x86/x2apic\n\nConflicts:\n\n\tdrivers/pci/dmar.c\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "82736f4d1d2b7063b829cc93171a6e5aea8a9c49",
      "tree": "3e0e7bf57638dcb1321496440a11623beb005458",
      "parents": [
        "f606ddf42fd4edc558eeb48bfee66d2c591571d2"
      ],
      "author": {
        "name": "Uwe Kleine-König",
        "email": "Uwe.Kleine-Koenig@digi.com",
        "time": "Wed Jul 23 21:28:54 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:24 2008 -0700"
      },
      "message": "generic irqs: handle failure of irqchip-\u003eset_type in setup_irq\n\nset_type returns an int indicating success or failure, but up to now\nsetup_irq ignores that.\n\nIn my case this resulted in a machine hang:\n\ngpio-keys requested IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING, but\narm/ns9xxx can only trigger on one direction so set_type didn\u0027t touch\nthe configuration which happens do default to a level sensitiveness and\nreturned -EINVAL.  setup_irq ignored that and unmasked the irq.  This\nresulted in an endless triggering of the gpio-key interrupt service\nroutine which effectively killed the machine.\n\nWith this patch applied setup_irq propagates the error to the caller.\n\nNote that before in the case\n\n\tchip \u0026\u0026 !chip-\u003eset_type \u0026\u0026 !chip-\u003ename\n\na NULL pointer was feed to printk.  This is fixed, too.\n\nSigned-off-by: Uwe Kleine-König \u003cUwe.Kleine-Koenig@digi.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2db873211ba47ef704c301f9ecf4a33413a0b649",
      "tree": "1d406d7b446da8e677f6014b4fd101456e485466",
      "parents": [
        "1bad879a078111748ebc27fb0d29e8c916556835"
      ],
      "author": {
        "name": "Uwe Kleine-König",
        "email": "Uwe.Kleine-Koenig@digi.com",
        "time": "Wed Jul 23 14:42:25 2008 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 23 09:35:53 2008 -0700"
      },
      "message": "set_irq_wake: fix return code and wake status tracking\n\nSince 15a647eba94c3da27ccc666bea72e7cca06b2d19 set_irq_wake returned -ENXIO\nif another device had it already enabled.  Zero is the right value to\nreturn in this case.  Moreover the change to desc-\u003estatus was not reverted\nif desc-\u003echip-\u003eset_wake returned an error.\n\nSigned-off-by: Uwe Kleine-König \u003cUwe.Kleine-Koenig@digi.com\u003e\nAcked-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nCc: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a208f37a465e222218974ab20a31b42b7b4893b2",
      "tree": "77c6acdd4be32024330a14f2618b814126ce7a20",
      "parents": [
        "511d9d34183662aada3890883e860b151d707e22",
        "5b664cb235e97afbf34db9c4d77f08ebd725335e"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jul 18 22:50:34 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jul 18 22:50:34 2008 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into x86/x2apic\n"
    },
    {
      "commit": "72b1e22dfcad1daca6906148fd956ffe404bb0bc",
      "tree": "9ca9c198c7bd592528c322002bada84bc3e9d84d",
      "parents": [
        "b6fcb33ad6c05f152a672f7c96c1fab006527b80"
      ],
      "author": {
        "name": "Suresh Siddha",
        "email": "suresh.b.siddha@intel.com",
        "time": "Thu Jul 10 11:16:45 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Jul 12 08:44:55 2008 +0200"
      },
      "message": "x64, x2apic/intr-remap: generic irq migration support from process context\n\nGeneric infrastructure for migrating the irq from the process context in the\npresence of CONFIG_GENERIC_PENDING_IRQ.\n\nThis will be used later for migrating irq in the presence of\ninterrupt-remapping.\n\nSigned-off-by: Suresh Siddha \u003csuresh.b.siddha@intel.com\u003e\nCc: akpm@linux-foundation.org\nCc: arjan@linux.intel.com\nCc: andi@firstfloor.org\nCc: ebiederm@xmission.com\nCc: jbarnes@virtuousgeek.org\nCc: steiner@sgi.com\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "48627d8d23c34106c1365563604739a50343edaf",
      "tree": "8e73b8abfe222a4f9dee54ec94e4e9195599aac3",
      "parents": [
        "18404756765c713a0be4eb1082920c04822ce588"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Jul 10 07:01:13 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Jul 10 07:01:13 2008 +0200"
      },
      "message": "genirq: remove extraneous checks in manage.c\n\nIn http://bugzilla.kernel.org/show_bug.cgi?id\u003d9580 it was pointed out\nthat the desc-\u003echip checks are extraneous. In fact these are left\novers from early development and can be removed safely.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n\n"
    },
    {
      "commit": "18404756765c713a0be4eb1082920c04822ce588",
      "tree": "ed426f8fe90bff1ffd854074a2e4b370dd6821f8",
      "parents": [
        "c3b25b32e8bef526cca748e1ba023c6bdd705a99"
      ],
      "author": {
        "name": "Max Krasnyansky",
        "email": "maxk@qualcomm.com",
        "time": "Thu May 29 11:02:52 2008 -0700"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Jun 05 15:18:30 2008 +0200"
      },
      "message": "genirq: Expose default irq affinity mask (take 3)\n\nCurrent IRQ affinity interface does not provide a way to set affinity\nfor the IRQs that will be allocated/activated in the future.\nThis patch creates /proc/irq/default_smp_affinity that lets users set\ndefault affinity mask for the newly allocated IRQs. Changing the default\ndoes not affect affinity masks for the currently active IRQs, they\nhave to be changed explicitly.\n\nUpdated based on Paul J\u0027s comments and added some more documentation.\n\nSigned-off-by: Max Krasnyansky \u003cmaxk@qualcomm.com\u003e\nCc: pj@sgi.com\nCc: a.p.zijlstra@chello.nl\nCc: tglx@linutronix.de\nCc: rdunlap@xenotime.net\nCc: mingo@elte.hu\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "1adb0850a1254333d81e64121c80af100c6d6e06",
      "tree": "61835b06e78eb6f556c038ceabc706440f339d3a",
      "parents": [
        "886c35fbcf6fb2eee15687efc2d64d99b6ad9a4a"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Apr 28 17:01:56 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 02 13:40:34 2008 +0200"
      },
      "message": "genirq: reenable a nobody cared disabled irq when a new driver arrives\n\nUwe Kleine-Koenig has some strange hardware where one of the shared\ninterrupts can be asserted during boot before the appropriate driver\nloads. Requesting the shared irq line from another driver result in a\nspurious interrupt storm which finally disables the interrupt line.\n\nI have seen similar behaviour on resume before (the hardware does not\nwork anymore so I can not verify).\n\nChange the spurious disable logic to increment the disable depth and\nmark the interrupt with an extra flag which allows us to reenable the\ninterrupt when a new driver arrives which requests the same irq\nline. In the worst case this will disable the irq again via the\nspurious trap, but there is a decent chance that the new driver is the\none which can handle the already asserted interrupt and makes the box\nusable again.\n\nEric Biederman said further: This case also happens on a regular basis\nin kdump kernels where we deliberately don\u0027t shutdown the hardware\nbefore starting the new kernel.  This patch should reduce the need for\nusing irqpoll in that situation by a small amount.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nTested-and-Acked-by: Uwe Kleine-König \u003cUwe.Kleine-Koenig@digi.com\u003e\n\n"
    },
    {
      "commit": "1aeb272cf09f9e2cbc62163b9f37a9b4d1c7e81d",
      "tree": "17c76e18fa145affedae790460cff724f965646b",
      "parents": [
        "3a2e7f47d71e1df86acc1dda6826890b6546a4e1"
      ],
      "author": {
        "name": "Robert P. J. Day",
        "email": "rpjday@crashcourse.ca",
        "time": "Tue Apr 29 00:59:25 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:04 2008 -0700"
      },
      "message": "kernel: explicitly include required header files under kernel/\n\nFollowing an experimental deletion of the unnecessary directive\n\n #include \u003clinux/slab.h\u003e\n\nfrom the header file \u003clinux/percpu.h\u003e, these files under kernel/ were exposed\nas needing to include one of \u003clinux/slab.h\u003e or \u003clinux/gfp.h\u003e, so explicit\nincludes were added where necessary.\n\nSigned-off-by: Robert P. J. Day \u003crpjday@crashcourse.ca\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "70edcd77a0d6d0f8731c826764f5eb6732f521e9",
      "tree": "1ea618a73c784c11b52168046d5a27197398520a",
      "parents": [
        "17abecfe651c862cd31b1f9e8ef6cfc29083f00d"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jan 30 13:33:24 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jan 30 13:33:24 2008 +0100"
      },
      "message": "genirq: stackdump after the \"Trying to free already-free IRQ\" message\n\nthese bugs are harder to find than they seem, a stackdump helps.\n\nmake it dependent on CONFIG_DEBUG_SHIRQ so that people can turn it off\nif it annoys them.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "a98ce5c6feead6bfedefabd46cb3d7f5be148d9a",
      "tree": "7bbd027e40805966ad908e40f09ffd412a72a88b",
      "parents": [
        "48d2268473a66fe3aa78fb13b09ee59d6ee95073"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Tue Oct 23 11:26:25 2007 +0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 23 09:01:31 2007 -0700"
      },
      "message": "Fix synchronize_irq races with IRQ handler\n\nAs it is some callers of synchronize_irq rely on memory barriers\nto provide synchronisation against the IRQ handlers.  For example,\nthe tg3 driver does\n\n\ttp-\u003eirq_sync \u003d 1;\n\tsmp_mb();\n\tsynchronize_irq();\n\nand then in the IRQ handler:\n\n\tif (!tp-\u003eirq_sync)\n\t\tnetif_rx_schedule(dev, \u0026tp-\u003enapi);\n\nUnfortunately memory barriers only work well when they come in\npairs.  Because we don\u0027t actually have memory barriers on the\nIRQ path, the memory barrier before the synchronize_irq() doesn\u0027t\nactually protect us.\n\nIn particular, synchronize_irq() may return followed by the\nresult of netif_rx_schedule being made visible.\n\nThis patch (mostly written by Linus) fixes this by using spin\nlocks instead of memory barries on the synchronize_irq() path.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nAcked-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1d99493b3a68e40e56459ea3565d4402fb6e5f3a",
      "tree": "362ebcf8871e0fad07aa754bb5194de3a2cd64d3",
      "parents": [
        "f13ef7754f724842dbf5ae6d85d0604fff0d1a84"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "dwmw2@infradead.org",
        "time": "Tue Oct 16 23:26:29 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:49 2007 -0700"
      },
      "message": "Fix CONFIG_DEBUG_SHIRQ trigger on free_irq()\n\nAndy Gospodarek pointed out that because we return in the middle of the\nfree_irq() function, we never actually do call the IRQ handler that just\ngot deregistered. This should fix it, although I expect Andrew will want\nto convert those \u0027return\u0027s to \u0027break\u0027. That\u0027s a separate change though.\n\nSigned-off-by: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Andy Gospodarek \u003candy@greyhouse.net\u003e\nCc: Fernando Luis Vzquez Cao \u003cfernando@oss.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "59845b1ffd9121e5ef474ea5f27405fd7a83c85b",
      "tree": "9f7c073327138b7c5bb0193229244dbdd5444113",
      "parents": [
        "2aeb3db17fc33443d21b11d7121c5627d55717c6"
      ],
      "author": {
        "name": "Jarek Poplawski",
        "email": "jarkao2@o2.pl",
        "time": "Thu Aug 30 23:56:34 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Aug 31 01:42:23 2007 -0700"
      },
      "message": "request_irq: fix DEBUG_SHIRQ handling\n\nMariusz Kozlowski reported lockdep\u0027s warning:\n\n\u003e \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\u003e [ INFO: inconsistent lock state ]\n\u003e 2.6.23-rc2-mm1 #7\n\u003e ---------------------------------\n\u003e inconsistent {in-hardirq-W} -\u003e {hardirq-on-W} usage.\n\u003e ifconfig/5492 [HC0[0]:SC0[0]:HE1:SE1] takes:\n\u003e  (\u0026tp-\u003elock){+...}, at: [\u003cde8706e0\u003e] rtl8139_interrupt+0x27/0x46b [8139too]\n\u003e {in-hardirq-W} state was registered at:\n\u003e   [\u003cc0138eeb\u003e] __lock_acquire+0x949/0x11ac\n\u003e   [\u003cc01397e7\u003e] lock_acquire+0x99/0xb2\n\u003e   [\u003cc0452ff3\u003e] _spin_lock+0x35/0x42\n\u003e   [\u003cde8706e0\u003e] rtl8139_interrupt+0x27/0x46b [8139too]\n\u003e   [\u003cc0147a5d\u003e] handle_IRQ_event+0x28/0x59\n\u003e   [\u003cc01493ca\u003e] handle_level_irq+0xad/0x10b\n\u003e   [\u003cc0105a13\u003e] do_IRQ+0x93/0xd0\n\u003e   [\u003cc010441e\u003e] common_interrupt+0x2e/0x34\n...\n\u003e other info that might help us debug this:\n\u003e 1 lock held by ifconfig/5492:\n\u003e  #0:  (rtnl_mutex){--..}, at: [\u003cc0451778\u003e] mutex_lock+0x1c/0x1f\n\u003e\n\u003e stack backtrace:\n...\n\u003e  [\u003cc0452ff3\u003e] _spin_lock+0x35/0x42\n\u003e  [\u003cde8706e0\u003e] rtl8139_interrupt+0x27/0x46b [8139too]\n\u003e  [\u003cc01480fd\u003e] free_irq+0x11b/0x146\n\u003e  [\u003cde871d59\u003e] rtl8139_close+0x8a/0x14a [8139too]\n\u003e  [\u003cc03bde63\u003e] dev_close+0x57/0x74\n...\n\nThis shows that a driver\u0027s irq handler was running both in hard interrupt\nand process contexts with irqs enabled. The latter was done during\nfree_irq() call and was possible only with CONFIG_DEBUG_SHIRQ enabled.\nThis was fixed by another patch.\n\nBut similar problem is possible with request_irq(): any locks taken from\nirq handler could be vulnerable - especially with soft interrupts. This\npatch fixes it by disabling local interrupts during handler\u0027s run. (It\nseems, disabling softirqs should be enough, but it needs more checking\non possible races or other special cases).\n\nReported-by: Mariusz Kozlowski \u003cm.kozlowski@tuxland.pl\u003e\nSigned-off-by: Jarek Poplawski \u003cjarkao2@o2.pl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8b7f07155f8ee1536da2f9590f1aa9383afefb6b",
      "tree": "d4f0fcf4a96734c33ed9e0470fcb28be523070a0",
      "parents": [
        "436bbd431d41e0fd3bfedb0312ab764b291ddf82"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Wed Aug 22 14:01:20 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Aug 22 19:52:44 2007 -0700"
      },
      "message": "free_irq(): fix DEBUG_SHIRQ handling\n\nIf we\u0027re going to run the handler from free_irq() then we must do it with\nlocal irq\u0027s disabled.  Otherwise lockdep complains that the handler is taking\nirq-safe spinlocks in a non-irq-safe fashion.\n\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f75d222b836f7febfab0954c7612b23059d748cb",
      "tree": "229ff362a000daca8aa4c45c3c7216efdb4bfb94",
      "parents": [
        "3367b994fe4f131ab1240600682a1981de7cad0c"
      ],
      "author": {
        "name": "Ahmed S. Darwish",
        "email": "darwish.07@gmail.com",
        "time": "Tue May 08 00:27:55 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:06 2007 -0700"
      },
      "message": "IRQ: check for PERCPU flag only when adding first irqaction\n\nAn irqaction structure won\u0027t be added to an IRQ descriptor irqaction list if\nit doesn\u0027t agree with other irqactions on the IRQF_PERCPU flag.  Don\u0027t check\nfor this flag to change IRQ descriptor `status\u0027 for every irqaction added to\nthe list, Doing the check only for the first irqaction added is enough.\n\nSigned-off-by: Ahmed S. Darwish \u003cdarwish.07@gmail.com\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": "771ee3b04eaac6184312825eb600b4c598f027a5",
      "tree": "f0db1cca6b9849855c1d2fd6a16828084311e03c",
      "parents": [
        "950f4427c2ddc921164088a20f01304cf231437c"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Feb 16 01:27:25 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 16 08:13:56 2007 -0800"
      },
      "message": "[PATCH] Add a function to handle interrupt affinity setting\n\nProvide funtions to:\n - check, whether an interrupt can set the affinity\n - pin the interrupt to a given cpu\n\nNecessary for the ability to setup clocksources more flexible (e.g.  use the\ndifferent HPET channels per CPU)\n\n[akpm@osdl.org: alpha build fix]\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Roman Zippel \u003czippel@linux-m68k.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "950f4427c2ddc921164088a20f01304cf231437c",
      "tree": "8fd3fb1ad045a47dbd2c6ac238c6ff1c1c5aa6c6",
      "parents": [
        "b463fc60730bea6cdd73fec6edc6ec4658d47d37"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Feb 16 01:27:24 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 16 08:13:56 2007 -0800"
      },
      "message": "[PATCH] Add irq flag to disable balancing for an interrupt\n\nAdd a flag so we can prevent the irq balancing of an interrupt.  Move the\nbits, so we have room for more :)\n\nNecessary for the ability to setup clocksources more flexible (e.g.  use the\ndifferent HPET channels per CPU)\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Roman Zippel \u003czippel@linux-m68k.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "38515e908ba3a9c467ad3bf347b9bce69216df94",
      "tree": "3bb0287ad4ea18d61cb3cad74337343ef5034b5d",
      "parents": [
        "3159f06dc2303630c02d1ad2eeaeaf341414c9df"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Feb 14 00:33:16 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 14 08:09:54 2007 -0800"
      },
      "message": "[PATCH] Scheduled removal of SA_xxx interrupt flags fixups\n\nThe obsolete SA_xxx interrupt flags have been used despite the scheduled\nremoval.  Fixup the remaining users.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Roman Zippel \u003czippel@linux-m68k.org\u003e\nCc: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nCc: Jeff Garzik \u003cjeff@garzik.org\u003e\nCc: Wim Van Sebroeck \u003cwim@iguana.be\u003e\nCc: Roland Dreier \u003crolandd@cisco.com\u003e\nCc: Alessandro Zummo \u003ca.zummo@towertech.it\u003e\nCc: James Bottomley \u003cJames.Bottomley@steeleye.com\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nCc: Dave Airlie \u003cairlied@linux.ie\u003e\nCc: James Simmons \u003cjsimmons@infradead.org\u003e\nCc: \"Antonino A. Daplas\" \u003cadaplas@pol.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3f0504471536a2b6978b9a99ed1c222950fff07a",
      "tree": "173f4554a2bcf2d27dbbe6aeeed562afc8bb6847",
      "parents": [
        "a304e1b82808904c561b7b149b467e338c53fcce"
      ],
      "author": {
        "name": "Alan Cox",
        "email": "alan@lxorguk.ukuu.org.uk",
        "time": "Mon Feb 12 00:52:04 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Feb 12 09:48:28 2007 -0800"
      },
      "message": "[PATCH] kernel: shut up the IRQ mismatch messages\n\nThe problem is various drivers legally validly and sensibly try to claim\nIRQs but the kernel insists on vomiting forth a giant irrelevant debugging\nspew when the types clash.\n\nEdit kernel/irq/manage.c go down to mismatch: in setup_irq() and ifdef out\nthe if clause that checks for mismatches.  It\u0027ll then just do the right\nthing and work sanely.\n\nFor the current -mm kernel this will do the trick (and moves it into shared\nirq debugging as in debug mode the info spew is useful).  I\u0027ve had a\nvariant of this in my private tree for some time as I got fed up on the\nmess on boxes where old legacy IRQs get reused.\n\nSigned-off-by: Alan Cox \u003calan@redhat.com\u003e\nCc: Arjan van de Ven \u003carjan@infradead.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a304e1b82808904c561b7b149b467e338c53fcce",
      "tree": "068b68c37f6f11de116288886eb211f267d790f7",
      "parents": [
        "f9e4acf3befd3b2903e01b3ef1bd344f03299826"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "dwmw2@infradead.org",
        "time": "Mon Feb 12 00:52:00 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Feb 12 09:48:28 2007 -0800"
      },
      "message": "[PATCH] Debug shared irqs\n\nDrivers registering IRQ handlers with SA_SHIRQ really ought to be able to\nhandle an interrupt happening before request_irq() returns.  They also\nought to be able to handle an interrupt happening during the start of their\ncall to free_irq().  Let\u0027s test that hypothesis....\n\n[bunk@stusta.de: Kconfig fixes]\nSigned-off-by: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Arjan van de Ven \u003carjan@infradead.org\u003e\nSigned-off-by: Jesper Juhl \u003cjesper.juhl@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5ea8176994003483a18c8fed580901e2125f8a83",
      "tree": "0712ec9cd3384fbd897eb454ce9c0f907289ab51",
      "parents": [
        "2835fdfa4a7f1400986d76d054237809a9392406"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Sun Feb 11 15:41:31 2007 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Feb 11 11:18:07 2007 -0800"
      },
      "message": "[PATCH] sort the devres mess out\n\n* Split the implementation-agnostic stuff in separate files.\n* Make sure that targets using non-default request_irq() pull\n  kernel/irq/devres.o\n* Introduce new symbols (HAS_IOPORT and HAS_IOMEM) defaulting to positive;\n  allow architectures to turn them off (we needed these symbols anyway for\n  dependencies of quite a few drivers).\n* protect the ioport-related parts of lib/devres.o with CONFIG_HAS_IOPORT.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9ac7849e35f705830f7b016ff272b0ff1f7ff759",
      "tree": "7f17cdff87e154937a15cc2ec8da9b4e6018ce8e",
      "parents": [
        "77a527eadb425b60db3f5f0aae6a4c51c38e35e5"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Sat Jan 20 16:00:26 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Feb 09 17:39:36 2007 -0500"
      },
      "message": "devres: device resource management\n\nImplement device resource management, in short, devres.  A device\ndriver can allocate arbirary size of devres data which is associated\nwith a release function.  On driver detach, release function is\ninvoked on the devres data, then, devres data is freed.\n\ndevreses are typed by associated release functions.  Some devreses are\nbetter represented by single instance of the type while others need\nmultiple instances sharing the same release function.  Both usages are\nsupported.\n\ndevreses can be grouped using devres group such that a device driver\ncan easily release acquired resources halfway through initialization\nor selectively release resources (e.g. resources for port 1 out of 4\nports).\n\nThis patch adds devres core including documentation and the following\nmanaged interfaces.\n\n* alloc/free\t: devm_kzalloc(), devm_kzfree()\n* IO region\t: devm_request_region(), devm_release_region()\n* IRQ\t\t: devm_request_irq(), devm_free_irq()\n* DMA\t\t: dmam_alloc_coherent(), dmam_free_coherent(),\n\t\t  dmam_declare_coherent_memory(), dmam_pool_create(),\n\t\t  dmam_pool_destroy()\n* PCI\t\t: pcim_enable_device(), pcim_pin_device(), pci_is_managed()\n* iomap\t\t: devm_ioport_map(), devm_ioport_unmap(), devm_ioremap(),\n\t\t  devm_ioremap_nocache(), devm_iounmap(), pcim_iomap_table(),\n\t\t  pcim_iomap(), pcim_iounmap()\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    }
  ],
  "next": "8528b0f1de1101c6002036fd53638fb21111d0ea"
}
