)]}'
{
  "log": [
    {
      "commit": "c9b5f501ef1580faa30c40c644b7691870462201",
      "tree": "d22df12b72bc90b130254078ee71b1b7e7e3e521",
      "parents": [
        "524429c31b486c05449666b94613f59f729c0a84"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri Jan 07 13:41:40 2011 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 07 15:55:45 2011 +0100"
      },
      "message": "sched: Constify function scope static struct sched_param usage\n\nFunction-scope statics are discouraged because they are\neasily overlooked and can cause subtle bugs/races due to\ntheir global (non-SMP safe) nature.\n\nLinus noticed that we did this for sched_param - at minimum\nmake the const.\n\nSuggested-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: Message-ID: \u003cAANLkTinotRxScOHEb0HgFgSpGPkq_6jKTv5CfvnQM\u003dee@mail.gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "8e9255e6a2141e050d51bc4d96dbef494a87d653",
      "tree": "f190b142830153eaab05555a93c4f71a144ba3d4",
      "parents": [
        "5091faa449ee0b7d73bc296a93bca9540fc51d0a",
        "6313e3c21743cc88bb5bd8aa72948ee1e83937b6"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Dec 08 20:15:26 2010 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Dec 08 20:15:29 2010 +0100"
      },
      "message": "Merge branch \u0027linus\u0027 into sched/core\n\nMerge reason: we want to queue up dependent cleanup\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "25c9170ed64a6551beefe9315882f754e14486f4",
      "tree": "655035a70de19a8d88cbd04264bfaebc1af92a5a",
      "parents": [
        "22a5b566c8c442b0b35b3b106795e2f2b3578096"
      ],
      "author": {
        "name": "Kenji Kaneshige",
        "email": "kaneshige.kenji@jp.fujitsu.com",
        "time": "Tue Nov 30 17:36:08 2010 +0900"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Dec 01 08:44:26 2010 +0100"
      },
      "message": "genirq: Fix incorrect proc spurious output\n\nSince commit a1afb637(switch /proc/irq/*/spurious to seq_file) all\n/proc/irq/XX/spurious files show the information of irq 0.\n\nCurrent irq_spurious_proc_open() passes on NULL as the 3rd argument,\nwhich is used as an IRQ number in irq_spurious_proc_show(), to the\nsingle_open(). Because of this, all the /proc/irq/XX/spurious file\nshows IRQ 0 information regardless of the IRQ number.\n\nTo fix the problem, irq_spurious_proc_open() must pass on the\nappropreate data (IRQ number) to single_open().\n\nSigned-off-by: Kenji Kaneshige \u003ckaneshige.kenji@jp.fujitsu.com\u003e\nReviewed-by: Yong Zhang \u003cyong.zhang0@gmail.com\u003e\nLKML-Reference: \u003c4CF4B778.90604@jp.fujitsu.com\u003e\nCc: stable@kernel.org [2.6.33+]\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n\n"
    },
    {
      "commit": "92fd4d4d67b945c0766416284d4ab236b31542c4",
      "tree": "00b8b5f90748f752ccaba3dddbe271091d93543a",
      "parents": [
        "fe7de49f9d4e53f24ec9ef762a503f70b562341c",
        "e53beacd23d9cb47590da6a7a7f6d417b941a994"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Nov 18 13:22:14 2010 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Nov 18 13:22:26 2010 +0100"
      },
      "message": "Merge commit \u0027v2.6.37-rc2\u0027 into sched/core\n\nMerge reason: Move to a .37-rc base.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "82279e6bd7643da1b3fbda42555c3238c7b00d38",
      "tree": "e3f846e0a7daf6966375809ff4317f9eb57a9af9",
      "parents": [
        "bb8430a2c8fe2b726033017daadf73c69b0348ea",
        "4600d7c493f354a3e338a35bcf8a3bfbe815776a",
        "4882720b267b7b1d1b0ce08334b205f0329d4615"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 31 20:40:24 2010 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 31 20:40:24 2010 -0400"
      },
      "message": "Merge branches \u0027irq-core-for-linus\u0027 and \u0027core-locking-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  genirq: Fix up irq_node() for irq_data changes.\n  genirq: Add single IRQ reservation helper\n  genirq: Warn if enable_irq is called before irq is set up\n\n* \u0027core-locking-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  semaphore: Remove mutex emulation\n  staging: Final semaphore cleanup\n  jbd2: Convert jbd2_slab_create_sem to mutex\n  hpfs: Convert sbi-\u003ehpfs_creation_de to mutex\n\nFix up trivial change/delete conflicts with deleted \u0027dream\u0027 drivers\n(drivers/staging/dream/camera/{mt9d112.c,mt9p012_fox.c,mt9t013.c,s5k3e2fx.c})\n"
    },
    {
      "commit": "478735e38887077ac77a9756121b6ce0cb956e2f",
      "tree": "7b42110f71b1711f56cbbc0a01f00894b221337d",
      "parents": [
        "f2c66cd8eeddedb440f33bc0f5cec1ed7ae376cb"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Oct 27 15:34:15 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 27 18:03:13 2010 -0700"
      },
      "message": "/proc/stat: fix scalability of irq sum of all cpu\n\nIn /proc/stat, the number of per-IRQ event is shown by making a sum each\nirq\u0027s events on all cpus.  But we can make use of kstat_irqs().\n\nkstat_irqs() do the same calculation, If !CONFIG_GENERIC_HARDIRQ,\nit\u0027s not a big cost. (Both of the number of cpus and irqs are small.)\n\nIf a system is very big and CONFIG_GENERIC_HARDIRQ, it does\n\n\tfor_each_irq()\n\t\tfor_each_cpu()\n\t\t\t- look up a radix tree\n\t\t\t- read desc-\u003eirq_stat[cpu]\nThis seems not efficient. This patch adds kstat_irqs() for\nCONFIG_GENRIC_HARDIRQ and change the calculation as\n\n\tfor_each_irq()\n\t\tlook up radix tree\n\t\tfor_each_cpu()\n\t\t\t- read desc-\u003eirq_stat[cpu]\n\nThis reduces cost.\n\nA test on (4096cpusp, 256 nodes, 4592 irqs) host (by Jack Steiner)\n\n%time cat /proc/stat \u003e /dev/null\n\nBefore Patch:\t 2.459 sec\nAfter Patch :\t  .561 sec\n\n[akpm@linux-foundation.org: unexport kstat_irqs, coding-style tweaks]\n[akpm@linux-foundation.org: fix unused variable \u0027per_irq_sum\u0027]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nTested-by: Jack Steiner \u003csteiner@sgi.com\u003e\nAcked-by: Jack Steiner \u003csteiner@sgi.com\u003e\nCc: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fe7de49f9d4e53f24ec9ef762a503f70b562341c",
      "tree": "766b012c7199f12625bc909748175d9e37b0b87d",
      "parents": [
        "d4429f608abde89e8bc1e24b43cd503feb95c496"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Wed Oct 20 16:01:12 2010 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Oct 23 17:56:48 2010 +0200"
      },
      "message": "sched: Make sched_param argument static in sched_setscheduler() callers\n\nAndrew Morton pointed out almost all sched_setscheduler() callers are\nusing fixed parameters and can be converted to static.  It reduces runtime\nmemory use a little.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReported-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nAcked-by: James Morris \u003cjmorris@namei.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "2656c36699677238edc9ec1fea79039f1fddbcb6",
      "tree": "4fd8b68709598b5c581b3792ad2fc7481be76e12",
      "parents": [
        "d4429f608abde89e8bc1e24b43cd503feb95c496"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Oct 22 14:47:57 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Oct 22 16:10:29 2010 +0200"
      },
      "message": "genirq: Warn if enable_irq is called before irq is set up\n\nThe recent changes in the genirq core unearthed a bug in arch/um which\ncalled enable_irq() before the interrupt was set up.\n\nWarn and return instead of crashing the machine with a NULL pointer\ndereference.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Richard Weinberger \u003crichard@nod.at\u003e\n"
    },
    {
      "commit": "c0a19ebc018222ffd1dd93af5b53d9efd779c19b",
      "tree": "f648fb93efb064b22000aca24e48dfda2cbfab0a",
      "parents": [
        "2ee39065988d632b403f8470942b0b5edee3632b"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 21:58:27 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 21:59:55 2010 +0200"
      },
      "message": "genirq: Fix CONFIG_GENIRQ_NO_DEPRECATED\u003dy build\n\nThis option can be set to verify the full conversion to the new chip\nfunctions. Fix the fallout of the patch rework, so the core code\ncompiles and works with it.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "baa0d233afe765daa6dc01ff233aea8c5944f534",
      "tree": "23b0793b6014b637680cddef4ccc4a2860cf6436",
      "parents": [
        "a05a900a51c7622ebd8ddb41f14f8bf9db599d8d"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 05 15:14:35 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 16:53:45 2010 +0200"
      },
      "message": "genirq: Switch sparse_irq allocator to GFP_KERNEL\n\nThe allocator functions are now called outside of preempt disabled\nregions. Switch to GFP_KERNEL.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a05a900a51c7622ebd8ddb41f14f8bf9db599d8d",
      "tree": "3c0f7d5c6aff2af86c350c76cc44631e620d9333",
      "parents": [
        "c2f31c37b7303150ffcce53f6c6ed4ac62952b34"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Oct 08 12:47:53 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 16:53:45 2010 +0200"
      },
      "message": "genirq: Make sparse_lock a mutex\n\nNo callers from atomic regions. \n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "78f90d91f395cd0dc1ef3f21e0c5cd6fd50d202c",
      "tree": "e9a6b0a5d8a0b99cd23dbc1c1f376a7e78a93428",
      "parents": [
        "b7b29338dc7111ed8bd4d6555d84afae13ebe752"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Sep 29 17:18:47 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 16:53:44 2010 +0200"
      },
      "message": "genirq: Remove the now unused sparse irq leftovers\n\nThe move_irq_desc() function was only used due to the problem that the\nallocator did not free the old descriptors. So the descriptors had to\nbe moved in create_irq_nr(). That\u0027s history.\n\nThe code would have never been able to move active interrupt\ndescriptors on affinity settings. That can be done in a completely\ndifferent way w/o all this horror.\n\nRemove all of it.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b7b29338dc7111ed8bd4d6555d84afae13ebe752",
      "tree": "4c3159ea8bb0489ba463a061d3e6446dbfb45af2",
      "parents": [
        "b7d0d8258a9f71949b810e0f82a3d75088f4d364"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Sep 29 18:46:55 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 16:53:44 2010 +0200"
      },
      "message": "genirq: Sanitize dynamic irq handling\n\nUse the cleanup functions of the dynamic allocator. No need to have\nseparate implementations.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b7d0d8258a9f71949b810e0f82a3d75088f4d364",
      "tree": "1e37a6d3e89816abab898e3646a4e23eeb457021",
      "parents": [
        "77dff1c755c3218691e95e7e38ee14323b35dbdb"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Sep 29 18:44:23 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 16:53:44 2010 +0200"
      },
      "message": "genirq: Remove arch_init_chip_data()\n\nThis function should have not been there in the first place.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b683de2b3cb17bb10fa6fd4af614dc75b5749fe0",
      "tree": "e1a799293b218f5c13d4903c57fab144b2f433b3",
      "parents": [
        "aa99ec0f3f26bf2bcd0fa5176de93598427f1e5e"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Sep 27 20:55:03 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 16:39:08 2010 +0200"
      },
      "message": "genirq: Query arch for number of early descriptors\n\nsparse irq sets up NR_IRQS_LEGACY irq descriptors and archs then go\nahead and allocate more.\n\nUse the unused return value of arch_probe_nr_irqs() to let the\narchitecture return the number of early allocations. Fix up all users.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "aa99ec0f3f26bf2bcd0fa5176de93598427f1e5e",
      "tree": "bbba6c0fc1293f0bc854644aa177ea67306f8814",
      "parents": [
        "25ade601a0f97453c6f511ebfae9339e06a28d75"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Sep 27 20:02:56 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 16:39:07 2010 +0200"
      },
      "message": "genirq: Use sane sparse allocator\n\nMake irq_to_desc_alloc_node() a wrapper around the new allocator.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "06f6c3399e9f9ff6eafc200e80f9226c3cee0eaf",
      "tree": "f4d8fc67194b1a50bfe501634088b3776ca6bbd4",
      "parents": [
        "a98d24b71b6e229965f18dc00d28dc71cb8fe324"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 12:31:46 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 16:39:07 2010 +0200"
      },
      "message": "genirq: Implement irq reservation\n\nMark a range of interrupts as allocated. In the SPARSE_IRQ\u003dn case we\nneed this to update the bitmap for the legacy irqs so the enumerator\nvia irq_get_next_irq() works.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "a98d24b71b6e229965f18dc00d28dc71cb8fe324",
      "tree": "213a6daf67e459b2078e630d5a8163c3b8fd3a9c",
      "parents": [
        "13bfe99e09123ef5edb6acb81ba337d2db600b53"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Sep 30 10:45:07 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 16:39:07 2010 +0200"
      },
      "message": "genirq: Implement sane enumeration\n\nUse the allocator bitmap to lookup active interrupts.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "13bfe99e09123ef5edb6acb81ba337d2db600b53",
      "tree": "f96f5be41c90e1ab437bb40a02a8f137deb9e3ab",
      "parents": [
        "1f5a5b87f78fade3ae48dfd55e8765d1d622ea4e"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Sep 30 02:46:07 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 16:39:07 2010 +0200"
      },
      "message": "genirq: Prepare proc for real sparse irq support\n\n/proc/irq never removes any entries, but when irq descriptors can be\nfreed for real this is necessary. Otherwise we\u0027d reference a freed\ndescriptor in /proc/irq/N\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "1f5a5b87f78fade3ae48dfd55e8765d1d622ea4e",
      "tree": "762a5dbf40129ffd9667a170b2503a77c95320f7",
      "parents": [
        "1318a481fc37c503a901b96ae06b692ca2b21af5"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Sep 27 17:48:26 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 16:39:07 2010 +0200"
      },
      "message": "genirq: Implement a sane sparse_irq allocator\n\nThe current sparse_irq allocator has several short comings due to\nfailures in the design or the lack of it:\n\n - Requires iteration over the number of active irqs to find a free slot\n   (Some architectures have grown their own workarounds for this)\n - Removal of entries is not possible\n - Racy between create_irq_nr and destroy_irq (plugged by horrible\n   callbacks)\n - Migration of active irq descriptors is not possible\n - No bulk allocation of irq ranges\n - Sprinkeled irq_desc references all over the place outside of kernel/irq/\n   (The previous chip functions series is addressing this issue)\n\nImplement a sane allocator which fixes the above short comings (though\nmigration of active descriptors needs a full tree wide cleanup of the\ndirect and mostly unlocked access to irq_desc).\n\nThe new allocator still uses a radix_tree, but uses a bitmap for\nkeeping track of allocated irq numbers. That allows:\n\n - Fast lookup of a free slot\n - Allows the removal of descriptors\n - Prevents the create/destroy race\n - Bulk allocation of consecutive irq ranges\n - Basic design is ready for migration of life descriptors after\n   further cleanups\n\nThe bitmap is also used in the SPARSE_IRQ\u003dn case for lookup and\nraceless (de)allocation of irq numbers. So it removes the requirement\nfor looping through the descriptor array to find slots.\n\nRight now it uses sparse_irq_lock to protect the bitmap and the radix\ntree, but after cleaning up all users we should be able convert that\nto a mutex and to switch the radix_tree and decriptor allocations to\nGFP_KERNEL.\n\n[ Folded in a bugfix from Yinghai Lu ]\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "1318a481fc37c503a901b96ae06b692ca2b21af5",
      "tree": "2b1bb8f52af5938759af38efdfa8a868b02d5804",
      "parents": [
        "d895f51ebb54cefe367bda135fcf2cd734d51d03"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Sep 27 21:01:37 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 16:39:06 2010 +0200"
      },
      "message": "genirq: Provide default irq init flags\n\nArch code sets it\u0027s own irq_desc.status flags right after boot and for\ndynamically allocated interrupts. That might involve iterating over a\nhuge array.\n\nAllow ARCH_IRQ_INIT_FLAGS to set separate flags aside of IRQ_DISABLED\nwhich is the default.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d895f51ebb54cefe367bda135fcf2cd734d51d03",
      "tree": "bb70160ad291a7280ff8e8a2aba07d407f7f07dc",
      "parents": [
        "40f08a724fcc21285cf3a75aec957aef908605c6"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Sep 27 17:45:49 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 16:39:06 2010 +0200"
      },
      "message": "genirq: Remove export of kstat_irqs_cpu\n\nThe statistics accessor is only used by proc/stats and\nshow_interrupts(). Both are compiled in.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "154cd387cdf0e5566ce523cbddf92dd2a062dfd6",
      "tree": "8ab329f26992c570b65fe62843275eb71c8bf505",
      "parents": [
        "3795de236d67a05994a1a12759db9d4dd9ffc42c"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Sep 22 15:58:45 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 16:39:06 2010 +0200"
      },
      "message": "genirq: Remove early_init_irq_lock_class()\n\nearly_init_irq_lock_class() is called way before anything touches the\nirq descriptors. In case of SPARSE_IRQ\u003dy this is a NOP operation\nbecause the radix tree is empty at this point. For the SPARSE_IRQ\u003dn\ncase it\u0027s sufficient to set the lock class in early_init_irq(). \n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "3795de236d67a05994a1a12759db9d4dd9ffc42c",
      "tree": "75e5a2a8922e114de60f468494c879ba4f65ebee",
      "parents": [
        "f303a6dd127b5ec6de90d1cd79ed19820c7e9658"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Sep 22 17:09:43 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 16:39:05 2010 +0200"
      },
      "message": "genirq: Distangle kernel/irq/handle.c\n\nkernel/irq/handle.c has become a dumpground for random code in random\norder. Split out the irq descriptor management and the dummy irq_chip\nimplementation into separate files. Cleanup the include maze while at\nit.\n\nNo code change.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f303a6dd127b5ec6de90d1cd79ed19820c7e9658",
      "tree": "8060ccc63ab56406e6a9535b21cca29f17956052",
      "parents": [
        "442471848f5abb55b99cba1229301655f67492b4"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Sep 28 17:34:01 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 16:39:05 2010 +0200"
      },
      "message": "genirq: Sanitize irq_data accessors\n\nGet the data structure from the core and provide inline wrappers to\naccess the irq_data members.\n\nProvide accessor inlines for irq_data as well.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "442471848f5abb55b99cba1229301655f67492b4",
      "tree": "4265a98a62db515d2b0a63d95a7c7e5badb1dbc0",
      "parents": [
        "3a3856d00c74560a7b8d9f8a13c1ca94ee786b78"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Sep 28 10:40:18 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 16:39:05 2010 +0200"
      },
      "message": "genirq: Provide status modifier\n\nProvide a irq_desc.status modifier function to cleanup the direct\naccess to irq_desc in arch and driver code.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n\n"
    },
    {
      "commit": "e144710b302525de5b90b9c3ba43562458d8957f",
      "tree": "0a6ef61ccb4957512ebf4a1887ba3bc54e78f99e",
      "parents": [
        "fe21221386e46b8e0f2cbd83559a29680c28473b"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Oct 01 16:03:45 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 12 16:39:04 2010 +0200"
      },
      "message": "genirq: Distangle irq.h\n\nMove irq_desc and internal functions out of irq.h\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "bd151412263a67b5321e9dd1d5b4bf6d96fdebf3",
      "tree": "7571b3eaf7ebc2ef200fb00688543f00a451c5f9",
      "parents": [
        "21e2b8c62cca8f7dbec0c8c131ca1637e4a5670f"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Oct 01 15:17:14 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Oct 04 13:40:24 2010 +0200"
      },
      "message": "genirq: Provide config option to disable deprecated code\n\nThis option covers now the old chip functions and the irq_desc data\nfields which are moving to struct irq_data. More stuff will follow.\n\nPretty handy for testing a conversion, whether something broke or not.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "21e2b8c62cca8f7dbec0c8c131ca1637e4a5670f",
      "tree": "8810be220dc49cf78c055ba960b1083cd1459a21",
      "parents": [
        "2f7e99bb9be6a2d8d7b808dc86037710cc8b7bf1"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Sep 27 12:45:53 2010 +0000"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Oct 04 12:43:50 2010 +0200"
      },
      "message": "genirq: Provide compat handling for chip-\u003eretrigger()\n\nWrap the old chip function retrigger() until the migration is complete\nand the old chip functions are removed.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLKML-Reference: \u003c20100927121843.025801092@linutronix.de\u003e\nReviewed-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "2f7e99bb9be6a2d8d7b808dc86037710cc8b7bf1",
      "tree": "c620f5e8eb1a160bebb73a330fecd95a430977ed",
      "parents": [
        "b2ba2c30033c10cca2454f8b44bf98f5249e61c6"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Sep 27 12:45:50 2010 +0000"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Oct 04 12:43:48 2010 +0200"
      },
      "message": "genirq: Provide compat handling for chip-\u003eset_wake()\n\nWrap the old chip function set_wake() until the migration is complete\nand the old chip functions are removed.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLKML-Reference: \u003c20100927121842.927527393@linutronix.de\u003e\nReviewed-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b2ba2c30033c10cca2454f8b44bf98f5249e61c6",
      "tree": "a168cbcd1314f76edccecd5984d75793773b5239",
      "parents": [
        "c96b3b3c448592a0b87ef20306deb8b1fb4878c7"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Sep 27 12:45:47 2010 +0000"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Oct 04 12:43:47 2010 +0200"
      },
      "message": "genirq: Provide compat handling for chip-\u003eset_type()\n\nWrap the old chip function set_type() until the migration is complete\nand the old chip functions are removed.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLKML-Reference: \u003c20100927121842.832261548@linutronix.de\u003e\nReviewed-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c96b3b3c448592a0b87ef20306deb8b1fb4878c7",
      "tree": "744c6879a585b9ab07ed51315930f8a673c09aed",
      "parents": [
        "37e12df709f09eac17314d79a52190ac46746e33"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Sep 27 12:45:41 2010 +0000"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Oct 04 12:43:46 2010 +0200"
      },
      "message": "genirq: Provide compat handling for chip-\u003eset_affinity()\n\nWrap the old chip function set_affinity() until the migration is\ncomplete and the old chip functions are removed.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLKML-Reference: \u003c20100927121842.732894108@linutronix.de\u003e\nReviewed-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "37e12df709f09eac17314d79a52190ac46746e33",
      "tree": "78159578101faddef22c5b13ccc200542cb3d2b6",
      "parents": [
        "bc310dda41be6439364c8f3b9fe7c9d743d22b1c"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Sep 27 12:45:38 2010 +0000"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Oct 04 12:43:44 2010 +0200"
      },
      "message": "genirq: Provide compat handling for chip-\u003estartup()\n\nWrap the old chip function startup() until the migration is complete and\nthe old chip functions are removed.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLKML-Reference: \u003c20100927121842.635152961@linutronix.de\u003e\nReviewed-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "bc310dda41be6439364c8f3b9fe7c9d743d22b1c",
      "tree": "86a8b4da3d9e81aad104b61023858813454b0f35",
      "parents": [
        "c5f756344c390f629243b4a28c2bd198fdfd7ee9"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Sep 27 12:45:02 2010 +0000"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Oct 04 12:43:43 2010 +0200"
      },
      "message": "genirq: Provide compat handling for chip-\u003edisable()/shutdown()\n\nWrap the old chip functions disable() and shutdown() until the\nmigration is complete and the old chip functions are removed.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLKML-Reference: \u003c20100927121842.532070631@linutronix.de\u003e\nReviewed-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c5f756344c390f629243b4a28c2bd198fdfd7ee9",
      "tree": "9bd1ce01615c9e29ccf970a6478d5eb75fe1ddde",
      "parents": [
        "0c5c15572ac096001f52d37b416f2a4be9aebb80"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Sep 27 12:44:56 2010 +0000"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Oct 04 12:43:42 2010 +0200"
      },
      "message": "genirq: Provide compat handling for chip-\u003eenable()\n\nWrap the old chip function enable() until the migration is complete and\nthe old chip functions are removed.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLKML-Reference: \u003c20100927121842.437159182@linutronix.de\u003e\nReviewed-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "0c5c15572ac096001f52d37b416f2a4be9aebb80",
      "tree": "54c2559cac7e6ee71e31d6b41a1980a392f202b3",
      "parents": [
        "9205e31d1af0f725e71bbae10d199c6b9e8d6dd8"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Sep 27 12:44:53 2010 +0000"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Oct 04 12:43:41 2010 +0200"
      },
      "message": "genirq: Provide compat handling for chip-\u003eeoi()\n\nWrap the old chip function eoi() until the migration is complete and\nthe old chip functions are removed.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLKML-Reference: \u003c20100927121842.339657617@linutronix.de\u003e\nReviewed-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "9205e31d1af0f725e71bbae10d199c6b9e8d6dd8",
      "tree": "9ed35cf7a968ed94395ade073880c7b951f5aa92",
      "parents": [
        "22a49163e90dd7088f801dd54e25b04e1f337e9b"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Sep 27 12:44:50 2010 +0000"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Oct 04 12:43:40 2010 +0200"
      },
      "message": "genirq: Provide compat handling for chip-\u003emask_ack()\n\nWrap the old chip function mask_ack() until the migration is complete\nand the old chip functions are removed.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLKML-Reference: \u003c20100927121842.240806983@linutronix.de\u003e\nReviewed-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "22a49163e90dd7088f801dd54e25b04e1f337e9b",
      "tree": "4b1e13b29959be2a03ae6892b469f1f11bb08823",
      "parents": [
        "0eda58b7f3a30c9a13d83db1cfaab00e1c452055"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Sep 27 12:44:47 2010 +0000"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Oct 04 12:43:38 2010 +0200"
      },
      "message": "genirq: Provide compat handling for chip-\u003eack()\n\nWrap the old chip function ack() until the migration is complete and\nthe old chip functions are removed.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLKML-Reference: \u003c20100927121842.142624725@linutronix.de\u003e\nReviewed-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "0eda58b7f3a30c9a13d83db1cfaab00e1c452055",
      "tree": "6e6efb689188f20271d8dd290008652d3c3defd8",
      "parents": [
        "e2c0f8ff0fc26959952fbfa89f732fef928df77f"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Sep 27 12:44:44 2010 +0000"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Oct 04 12:43:37 2010 +0200"
      },
      "message": "genirq: Provide compat handling for chip-\u003eunmask()\n\nWrap the old chip function unmask() until the migration is complete\nand the old chip functions are removed.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLKML-Reference: \u003c20100927121842.043608928@linutronix.de\u003e\nReviewed-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e2c0f8ff0fc26959952fbfa89f732fef928df77f",
      "tree": "3a85e05d69b4c48c86bcd3b032d8f6e239a3c126",
      "parents": [
        "3876ec9ef3775d062345b3760d3271ecb8cd3fea"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Sep 27 12:44:42 2010 +0000"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Oct 04 12:43:36 2010 +0200"
      },
      "message": "genirq: Provide compat handling for chip-\u003emask()\n\nWrap the old chip function mask() until the migration is complete and\nthe old chip functions are removed.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLKML-Reference: \u003c20100927121841.940355859@linutronix.de\u003e\nReviewed-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "3876ec9ef3775d062345b3760d3271ecb8cd3fea",
      "tree": "6c1cd233753fe09d48bdf107da34b4dbe4e003fc",
      "parents": [
        "a77c4635915021c646cc017f22239e66d1aab4d5"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Sep 27 12:44:35 2010 +0000"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Oct 04 12:43:35 2010 +0200"
      },
      "message": "genirq: Provide compat handling for bus_lock/bus_sync_unlock\n\nWrap the old chip functions for bus_lock/bus_sync_unlock until the\nmigration is complete and the old chip functions are removed.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLKML-Reference: \u003c20100927121841.842536121@linutronix.de\u003e\nReviewed-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a77c4635915021c646cc017f22239e66d1aab4d5",
      "tree": "59f372efa6d87064fda9c901ea785c838cb642e5",
      "parents": [
        "f8822657e799b02c55556c99a601261e207a299d"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Oct 01 14:44:58 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Oct 04 12:43:34 2010 +0200"
      },
      "message": "genirq: Add new functions to dummy chips\n\nThe compat functions go away when the core code is converted.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "6b8ff3120c758340505dddf08ad685ebb841d5d5",
      "tree": "794eed27c6f9a8931b8fdf4a7ae60a1560b237fc",
      "parents": [
        "ff7dcd44dd446db2c3e13bdedf2d52b8e0127f16"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Oct 01 12:58:38 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Oct 04 12:36:26 2010 +0200"
      },
      "message": "genirq: Convert core code to irq_data\n\nConvert all references in the core code to orq, chip, handler_data,\nchip_data, msi_desc, affinity to irq_data.*\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "ff7dcd44dd446db2c3e13bdedf2d52b8e0127f16",
      "tree": "ca03e829ea08aa536124a7777d99233dbbd89984",
      "parents": [
        "3bb9808e99bcc36eecb8e082bf70efb2a0bcdcb7"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Sep 27 12:44:25 2010 +0000"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Oct 04 12:27:16 2010 +0200"
      },
      "message": "genirq: Create irq_data\n\nLow level chip functions need access to irq_desc-\u003ehandler_data,\nirq_desc-\u003echip_data and irq_desc-\u003emsi_desc. We hand down the irq\nnumber to the low level functions, so they need to lookup irq_desc.\nWith sparse irq this means a radix tree lookup.\n\nWe could hand down irq_desc itself, but low level chip functions have\nno need to fiddle with it directly and we want to restrict access to\nirq_desc further.\n\nPreparatory patch for new chip functions.\n\nNote, that the ugly anon union/struct is there to avoid a full tree\nwide clean up for now. This is not going to last 3 years like __do_IRQ()\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLKML-Reference: \u003c20100927121841.645542300@linutronix.de\u003e\nReviewed-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d9817ebeeef16e01487549312c68540ca8f1561b",
      "tree": "7bb05550dcd1b4ec2cd6cf92e38d783b6f5e8c9e",
      "parents": [
        "e7ffec1eb178db349c7fbfd647725e9d06619962"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Sep 27 12:45:59 2010 +0000"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Oct 04 11:01:05 2010 +0200"
      },
      "message": "genirq: Provide Kconfig\n\nThe generic irq Kconfig options are copied around all archs. Provide a\ngeneric Kconfig file which can be included.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLKML-Reference: \u003c20100927121843.217333624@linutronix.de\u003e\nReviewed-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d1ea13c6e2cce0106531852daaa93dd97aec9580",
      "tree": "9a49b1029af4e63e08267d2b4d6e2f66396be0aa",
      "parents": [
        "a800c7cc5380fbb6b4f2f3bd89f6776eb3da2242"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Sep 23 18:40:07 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Sep 23 19:12:26 2010 +0200"
      },
      "message": "genirq: Cleanup irq_chip-\u003etypename leftovers\n\n3 years transition phase is enough. Cleanup the last users and remove\nthe cruft.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Leo Chen \u003cleochen@broadcom.com\u003e\nCc: Hirokazu Takata \u003ctakata@linux-m32r.org\u003e\nCc: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\nCc: Jeff Dike \u003cjdike@addtoit.com\u003e\nCc: Chris Zankel \u003cchris@zankel.net\u003e\n"
    },
    {
      "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": "4308ad801193f14ff42cb746da37cf07e35f0d08",
      "tree": "d25466295270408c11a234658b70c43095aed4d3",
      "parents": [
        "e7a297b0d7d6049bd4e423ac1e17da31e4c401b8"
      ],
      "author": {
        "name": "Peter P Waskiewicz Jr",
        "email": "peter.p.waskiewicz.jr@intel.com",
        "time": "Wed May 05 13:56:42 2010 -0700"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed May 12 11:23:34 2010 +0200"
      },
      "message": "genirq: Clear CPU mask in affinity_hint when none is provided\n\nWhen an interrupt is disabled and torn down, the CPU mask returned\nthrough affinity_hint right now is all CPUs. Also, for drivers that\ndon\u0027t provide an affinity_hint mask, this can be misleading. There\nshould be no hint at all, meaning an empty CPU mask.\n\n[ tglx: use zalloc_cpumask_var instead of clearing it under the lock ]\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: \u003c20100505205638.5426.87189.stgit@ppwaskie-hc2.jf.intel.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\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": "e58aa3d2d0cc01ad8d6f7f640a0670433f794922",
      "tree": "6ed92d753a48e1fe9978f0958d1c09c8aae92fae",
      "parents": [
        "ae731f8d0785ccd3380f511bae888933b6562e45"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 26 00:06:51 2010 +0000"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Apr 13 16:36:40 2010 +0200"
      },
      "message": "genirq: Run irq handlers with interrupts disabled\n\nRunning interrupt handlers with interrupts enabled can cause stack\noverflows. That has been observed with multiqueue NICs delivering all\ntheir interrupts to a single core. We might band aid that somehow by\nchecking the interrupt stacks, but the real safe fix is to run the irq\nhandlers with interrupts disabled.\n\nDrivers for whacky hardware still can reenable them in the handler\nitself, if the need arises. (They do already due to lockdep)\n\nThe risk of doing this is rather low:\n\n - lockdep already enforces this\n - CONFIG_NOHZ has shaken out the drivers which relied on jiffies updates\n - time keeping is not longer sensitive to the timer interrupt being delayed\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\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.758579387@linutronix.de\u003e\n\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": "7c7145f6acc68100dbdc5d3c5c64fe3af1c99c89",
      "tree": "5e93e3eb4787229032f1df222fa490112f4b0c32",
      "parents": [
        "92d6b71ab906be706f3679353b30a8d2c3831144",
        "0d0fb0f9c5fddef4a10242fe3337f00f528a3099"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Apr 13 14:12:17 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Apr 13 14:12:17 2010 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into irq/core\n\nReason: Get the upstream IRQF_DISABLED related changes.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "94c4fcec0144e032ef7d4ec761ab81d570b0bc2a",
      "tree": "b67880526801ce7af4c6bc847fcb1742569dc0f9",
      "parents": [
        "14e71e4fb94c340273534a6d7f210aa82a3ca717",
        "753649dbc49345a73a2454c770a3f2d54d11aec6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 06 13:03:22 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 06 13:03:22 2010 -0700"
      },
      "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  genirq: Force MSI irq handlers to run with interrupts disabled\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": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "309d1dcb5b73ab1f8212aff3037a7bcb46afe819",
      "tree": "af8ccaeb98051504db8f44a32f56945382f67271",
      "parents": [
        "8128f55a0bc60cf3779135a1f837c4323e77c582",
        "860652bfb890bd861c999ec39fcffabe5b712f85"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 26 15:09:06 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 26 15:09:06 2010 -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: Move two IRQ functions from .init.text to .text\n  genirq: Protect access to irq_desc-\u003eaction in can_request_irq()\n  genirq: Prevent oneshot irq thread race\n"
    },
    {
      "commit": "860652bfb890bd861c999ec39fcffabe5b712f85",
      "tree": "9a266245973217e00533039d7aa707bf09b09e55",
      "parents": [
        "cc8c3b78433222e5dbc1fdfcfdde29e1743f181a"
      ],
      "author": {
        "name": "Henrik Kretzschmar",
        "email": "henne@nachtwindheim.de",
        "time": "Wed Mar 24 12:59:20 2010 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Mar 24 14:38:23 2010 +0100"
      },
      "message": "genirq: Move two IRQ functions from .init.text to .text\n\nBoth functions should not be marked as __init, since they be called\nfrom modules after the init section is freed.\n\nSigned-off-by: Henrik Kretzschmar \u003chenne@nachtwindheim.de\u003e\nCc: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Jiri Kosina \u003cjkosina@suse.cz\u003e\nLKML-Reference: \u003c1269431961-5731-1-git-send-email-henne@nachtwindheim.de\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\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": "92d6b71ab906be706f3679353b30a8d2c3831144",
      "tree": "2b82cc7f065f947f4a6430e0de3bc63a4870907d",
      "parents": [
        "220bf991b0366cc50a94feede3d7341fa5710ee4"
      ],
      "author": {
        "name": "Dimitri Sivanich",
        "email": "sivanich@sgi.com",
        "time": "Thu Mar 11 14:08:56 2010 -0800"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Mar 24 14:10:03 2010 +0100"
      },
      "message": "genirq: Expose irq_desc-\u003enode in proc/irq\n\nExpose irq_desc-\u003enode as /proc/irq/*/node.\n\nThis file provides device hardware locality information for apps\ndesiring to include hardware locality in irq mapping decisions.\n\nSigned-off-by: Dimitri Sivanich \u003csivanich@sgi.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\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": "318ae2edc3b29216abd8a2510f3f80b764f06858",
      "tree": "ce595adde342f57f379d277b25e4dd206988a052",
      "parents": [
        "25cf84cf377c0aae5dbcf937ea89bc7893db5176",
        "3e58974027b04e84f68b964ef368a6cd758e2f84"
      ],
      "author": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Mar 08 16:55:37 2010 +0100"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Mar 08 16:55:37 2010 +0100"
      },
      "message": "Merge branch \u0027for-next\u0027 into for-linus\n\nConflicts:\n\tDocumentation/filesystems/proc.txt\n\tarch/arm/mach-u300/include/mach/debug-macro.S\n\tdrivers/net/qlge/qlge_ethtool.c\n\tdrivers/net/qlge/qlge_main.c\n\tdrivers/net/typhoon.c\n"
    },
    {
      "commit": "b5eb78f76ddfa7caf4340cf6893b032f45d8114a",
      "tree": "490349138af4f4e01f1373a947aec090eb733b2a",
      "parents": [
        "99558f0bbe68cb09799ec38adbaa3f3b2dc7ba63"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yinghai@kernel.org",
        "time": "Wed Feb 10 01:20:35 2010 -0800"
      },
      "committer": {
        "name": "H. Peter Anvin",
        "email": "hpa@zytor.com",
        "time": "Wed Feb 17 17:27:20 2010 -0800"
      },
      "message": "sparseirq: Use radix_tree instead of ptrs array\n\nUse radix_tree irq_desc_tree instead of irq_desc_ptrs.\n\n-v2: according to Eric and cyrill to use radix_tree_lookup_slot and\n     radix_tree_replace_slot\n\nSigned-off-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nLKML-Reference: \u003c1265793639-15071-32-git-send-email-yinghai@kernel.org\u003e\nSigned-off-by: H. Peter Anvin \u003chpa@zytor.com\u003e\n"
    },
    {
      "commit": "99558f0bbe68cb09799ec38adbaa3f3b2dc7ba63",
      "tree": "03a0393cae76ac3d0249fc53128974433d94e802",
      "parents": [
        "773e3eb7b81e5ba13b5155dfb3bb75b8ce37f8f9"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yinghai@kernel.org",
        "time": "Wed Feb 10 01:20:34 2010 -0800"
      },
      "committer": {
        "name": "H. Peter Anvin",
        "email": "hpa@zytor.com",
        "time": "Wed Feb 17 17:27:03 2010 -0800"
      },
      "message": "sparseirq: Change irq_desc_ptrs to static\n\nAdd replace_irq_desc() instead of poking at the array directly.\n\n-v2: remove unneeded boundary check in replace_irq_desc\n\nSigned-off-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nLKML-Reference: \u003c1265793639-15071-31-git-send-email-yinghai@kernel.org\u003e\nSigned-off-by: H. Peter Anvin \u003chpa@zytor.com\u003e\n"
    },
    {
      "commit": "febcb0c59ac19fef2081a30e371e7af3619b5e91",
      "tree": "b920a26f537df2ee736cd2690eff75baf781e7db",
      "parents": [
        "5619c28061ff9d2559a93eaba492935530f2a513"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yinghai@kernel.org",
        "time": "Wed Feb 10 01:20:32 2010 -0800"
      },
      "committer": {
        "name": "H. Peter Anvin",
        "email": "hpa@zytor.com",
        "time": "Wed Feb 17 17:23:59 2010 -0800"
      },
      "message": "irq: Remove unnecessary bootmem code\n\nmem_init is moved early already.\n\nSigned-off-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nLKML-Reference: \u003c1265793639-15071-29-git-send-email-yinghai@kernel.org\u003e\nSigned-off-by: H. Peter Anvin \u003chpa@zytor.com\u003e\n"
    },
    {
      "commit": "dfff0615d28bdb3e8d213e5537dd069265912667",
      "tree": "04cfbe3e3cabd8020cee569b10dddf933ee4229f",
      "parents": [
        "6b79b264ce04e2acd24330140e147801cdbaa39f"
      ],
      "author": {
        "name": "Uwe Kleine-König",
        "email": "u.kleine-koenig@pengutronix.de",
        "time": "Fri Feb 12 21:58:11 2010 +0100"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Feb 15 15:38:10 2010 +0100"
      },
      "message": "tree-wide: fix typos \"ass?o[sc]iac?te\" -\u003e \"associate\" in comments\n\nSigned-off-by: Uwe Kleine-König \u003cu.kleine-koenig@pengutronix.de\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "5c42dc7070c94622ca914b5a2e227f3744e857e7",
      "tree": "5b00ef785218d1eb3d3430f7a9d8361aa63fe52b",
      "parents": [
        "b80109e256bc17ed66c9d559175f087b03ca2a8e"
      ],
      "author": {
        "name": "Jean Delvare",
        "email": "khali@linux-fr.org",
        "time": "Thu Feb 11 15:04:36 2010 +0100"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Thu Feb 11 16:01:02 2010 +0100"
      },
      "message": "devres/irq: Fix devm_irq_match comment\n\nFix the reference (in comment).\n\nSigned-off-by: Jean Delvare \u003ckhali@linux-fr.org\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "ced5b697a76d325e7a7ac7d382dbbb632c765093",
      "tree": "1a0a56d4415afcd16d034aa3bc5c0a6ba06c8a52",
      "parents": [
        "e28cab42f384745c8a947a9ccd51e4aae52f5d51"
      ],
      "author": {
        "name": "Brandon Phiilps",
        "email": "bphilips@suse.de",
        "time": "Wed Feb 10 01:20:06 2010 -0800"
      },
      "committer": {
        "name": "H. Peter Anvin",
        "email": "hpa@zytor.com",
        "time": "Wed Feb 10 14:27:28 2010 -0800"
      },
      "message": "x86: Avoid race condition in pci_enable_msix()\n\nKeep chip_data in create_irq_nr and destroy_irq.\n\nWhen two drivers are setting up MSI-X at the same time via\npci_enable_msix() there is a race.  See this dmesg excerpt:\n\n[   85.170610] ixgbe 0000:02:00.1: irq 97 for MSI/MSI-X\n[   85.170611]   alloc irq_desc for 99 on node -1\n[   85.170613] igb 0000:08:00.1: irq 98 for MSI/MSI-X\n[   85.170614]   alloc kstat_irqs on node -1\n[   85.170616] alloc irq_2_iommu on node -1\n[   85.170617]   alloc irq_desc for 100 on node -1\n[   85.170619]   alloc kstat_irqs on node -1\n[   85.170621] alloc irq_2_iommu on node -1\n[   85.170625] ixgbe 0000:02:00.1: irq 99 for MSI/MSI-X\n[   85.170626]   alloc irq_desc for 101 on node -1\n[   85.170628] igb 0000:08:00.1: irq 100 for MSI/MSI-X\n[   85.170630]   alloc kstat_irqs on node -1\n[   85.170631] alloc irq_2_iommu on node -1\n[   85.170635]   alloc irq_desc for 102 on node -1\n[   85.170636]   alloc kstat_irqs on node -1\n[   85.170639] alloc irq_2_iommu on node -1\n[   85.170646] BUG: unable to handle kernel NULL pointer dereference\nat 0000000000000088\n\nAs you can see igb and ixgbe are both alternating on create_irq_nr()\nvia pci_enable_msix() in their probe function.\n\nixgbe: While looping through irq_desc_ptrs[] via create_irq_nr() ixgbe\nchoses irq_desc_ptrs[102] and exits the loop, drops vector_lock and\ncalls dynamic_irq_init. Then it sets irq_desc_ptrs[102]-\u003echip_data \u003d\nNULL via dynamic_irq_init().\n\nigb: Grabs the vector_lock now and starts looping over irq_desc_ptrs[]\nvia create_irq_nr(). It gets to irq_desc_ptrs[102] and does this:\n\n\tcfg_new \u003d irq_desc_ptrs[102]-\u003echip_data;\n\tif (cfg_new-\u003evector !\u003d 0)\n\t\tcontinue;\n\nThis hits the NULL deref.\n\nAnother possible race exists via pci_disable_msix() in a driver or in\nthe number of error paths that call free_msi_irqs():\n\ndestroy_irq()\ndynamic_irq_cleanup() which sets desc-\u003echip_data \u003d NULL\n...race window...\ndesc-\u003echip_data \u003d cfg;\n\nRemove the save and restore code for cfg in create_irq_nr() and\ndestroy_irq() and take the desc-\u003elock when checking the irq_cfg.\n\nReported-and-analyzed-by: Brandon Philips \u003cbphilips@suse.de\u003e\nSigned-off-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nLKML-Reference: \u003c1265793639-15071-3-git-send-email-yinghai@kernel.org\u003e\nSigned-off-by: Brandon Phililps \u003cbphilips@suse.de\u003e\nCc: stable@kernel.org\nSigned-off-by: H. Peter Anvin \u003chpa@zytor.com\u003e\n"
    },
    {
      "commit": "9ce8e498ee58bb8a866a6c3c08fcb385ed66e9d2",
      "tree": "1d382d2e410f87ee9ce7c06bdd3d4b024ee53a49",
      "parents": [
        "350f82586b7554240bee18c41cc5c842f63265ae"
      ],
      "author": {
        "name": "Baruch Siach",
        "email": "baruch@tkos.co.il",
        "time": "Tue Feb 02 08:54:51 2010 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Fri Feb 05 12:22:43 2010 +0100"
      },
      "message": "devres: typo fix s/dev/devm/\n\nSigned-off-by: Baruch Siach \u003cbaruch@tkos.co.il\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\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": "4ef58d4e2ad1fa2a3e5bbf41af2284671fca8cf8",
      "tree": "856ba96302a36014736747e8464f80eeb827bbdd",
      "parents": [
        "f6c4c8195b5e7878823caa1181be404d9e86d369",
        "d014d043869cdc591f3a33243d3481fa4479c2d0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 09 19:43:33 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 09 19:43:33 2009 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (42 commits)\n  tree-wide: fix misspelling of \"definition\" in comments\n  reiserfs: fix misspelling of \"journaled\"\n  doc: Fix a typo in slub.txt.\n  inotify: remove superfluous return code check\n  hdlc: spelling fix in find_pvc() comment\n  doc: fix regulator docs cut-and-pasteism\n  mtd: Fix comment in Kconfig\n  doc: Fix IRQ chip docs\n  tree-wide: fix assorted typos all over the place\n  drivers/ata/libata-sff.c: comment spelling fixes\n  fix typos/grammos in Documentation/edac.txt\n  sysctl: add missing comments\n  fs/debugfs/inode.c: fix comment typos\n  sgivwfb: Make use of ARRAY_SIZE.\n  sky2: fix sky2_link_down copy/paste comment error\n  tree-wide: fix typos \"couter\" -\u003e \"counter\"\n  tree-wide: fix typos \"offest\" -\u003e \"offset\"\n  fix kerneldoc for set_irq_msi()\n  spidev: fix double \"of of\" in comment\n  comment typo fix: sybsystem -\u003e subsystem\n  ...\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": "d014d043869cdc591f3a33243d3481fa4479c2d0",
      "tree": "63626829498e647ba058a1ce06419fe7e4d5f97d",
      "parents": [
        "6ec22f9b037fc0c2e00ddb7023fad279c365324d",
        "6070d81eb5f2d4943223c96e7609a53cdc984364"
      ],
      "author": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Dec 07 18:36:35 2009 +0100"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Dec 07 18:36:35 2009 +0100"
      },
      "message": "Merge branch \u0027for-next\u0027 into for-linus\n\nConflicts:\n\n\tkernel/irq/chip.c\n"
    },
    {
      "commit": "bb2166c898adb5fe29bc450004926802d2a16035",
      "tree": "dc0a1d1219ab7e7324fbca533676d9d3a6a02c56",
      "parents": [
        "0bf7969feae831ede7276f7cc73b586ce0902374",
        "34769945f7cd9ab470413ffe64426e3ad069f49e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Dec 05 09:53:08 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Dec 05 09:53:08 2009 -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  genirq: Fix spurious irq seqfile conversion\n  genirq: switch /proc/irq/*/spurious to seq_file\n  irq: Do not attempt to create subdirectories if /proc/irq/\u003cirq\u003e failed\n  irq: Remove unused debug_poll_all_shared_irqs()\n  irq: Fix docbook comments\n  irq: trivial: Fix typo in comment for #endif\n"
    },
    {
      "commit": "fbfecd3712f917ca210a55c157233d88b785896b",
      "tree": "d0c06649b45a583e8d39eb0a8e60440163ceb77c",
      "parents": [
        "bf48aabb894fd0639ab72a26e8abbd7683ef23c2"
      ],
      "author": {
        "name": "Uwe Kleine-König",
        "email": "u.kleine-koenig@pengutronix.de",
        "time": "Wed Oct 28 20:11:04 2009 +0100"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Fri Dec 04 15:39:51 2009 +0100"
      },
      "message": "tree-wide: fix typos \"couter\" -\u003e \"counter\"\n\nThis patch was generated by\n\n\tgit grep -E -i -l \u0027couter\u0027 | xargs -r perl -p -i -e \u0027s/couter/counter/\u0027\n\nSigned-off-by: Uwe Kleine-König \u003cu.kleine-koenig@pengutronix.de\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "fb3d38b9904888aa8e36d88b2388dc70934b2169",
      "tree": "de1358697bdb8706024eaff7905555b166dad460",
      "parents": [
        "137f1188ef2747e987cbb469e6a54dde3350cb51"
      ],
      "author": {
        "name": "Liuweni",
        "email": "qingshenlwy@gmail.com",
        "time": "Mon Nov 02 15:55:03 2009 +0100"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Fri Dec 04 15:39:50 2009 +0100"
      },
      "message": "fix kerneldoc for set_irq_msi()\n\nSigned-off-by: Liuweni \u003cqingshenlwy@gmail.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "34769945f7cd9ab470413ffe64426e3ad069f49e",
      "tree": "f937799941e6fde05166add1fe4f1712f05aa3a1",
      "parents": [
        "a1afb6371bb5341057056194d1168753f6d77242"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Nov 20 11:46:21 2009 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Nov 20 11:55:26 2009 +0100"
      },
      "message": "genirq: Fix spurious irq seqfile conversion\n\nsingle_open data argument must be PDE(inode)-\u003edata instead of NULL\notherwise seq_file-\u003eprivate is always NULL and we always read the\nspurious data of irq 0.\n\nReported-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "a1afb6371bb5341057056194d1168753f6d77242",
      "tree": "dd120dd5fa3c58319d87ba1e8d28ec37986dfce2",
      "parents": [
        "c82a43d40b93200a10a9fec0a489791e65e135ca"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Fri Aug 28 22:19:33 2009 +0400"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Nov 18 12:50:51 2009 +0100"
      },
      "message": "genirq: switch /proc/irq/*/spurious to seq_file\n\n[ tglx: compacted it a bit ]\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nLKML-Reference: \u003c20090828181743.GA14050@x200.localdomain\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "c82a43d40b93200a10a9fec0a489791e65e135ca",
      "tree": "5986787e2382d88e3191cffafcdf35aa2ad8353f",
      "parents": [
        "663e69592856df53ef52969482ef413a96bc4e06"
      ],
      "author": {
        "name": "Cyrill Gorcunov",
        "email": "gorcunov@openvz.org",
        "time": "Mon Oct 26 23:28:11 2009 +0300"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 08 13:14:22 2009 +0100"
      },
      "message": "irq: Do not attempt to create subdirectories if /proc/irq/\u003cirq\u003e failed\n\nIf a parent directory (ie /proc/irq/\u003cirq\u003e) could not be created\nwe should not attempt to create subdirectories. Otherwise it\nwould lead that \"smp_affinity\" and \"spurious\" entries are may be\nregistered under /proc root instead of a proper place.\n\nSigned-off-by: Cyrill Gorcunov \u003cgorcunov@openvz.org\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Yinghai Lu \u003cyinghai@kernel.org\u003e\nLKML-Reference: \u003c20091026202811.GD5321@lenovo\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e7e7e0c084ef862d5754701108d4a038514d6314",
      "tree": "8f098ade05740e21e93767b657d7b0e6c90b588e",
      "parents": [
        "7c9abfb884b8737f0afdc8a88bcea77526f0da87"
      ],
      "author": {
        "name": "Yong Zhang",
        "email": "yong.zhang0@gmail.com",
        "time": "Sat Nov 07 11:16:13 2009 +0800"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Nov 07 21:44:45 2009 +0100"
      },
      "message": "genirq: try_one_irq() must be called with irq disabled\n\nPrarit reported:\n\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[ INFO: inconsistent lock state ]\n2.6.32-rc5 #1\n---------------------------------\ninconsistent {IN-HARDIRQ-W} -\u003e {HARDIRQ-ON-W} usage.\nswapper/0 [HC0[0]:SC1[1]:HE1:SE0] takes:\n (\u0026irq_desc_lock_class){?.-...}, at: [\u003cffffffff810c264e\u003e] try_one_irq+0x32/0x138\n{IN-HARDIRQ-W} state was registered at:\n [\u003cffffffff81095160\u003e] __lock_acquire+0x2fc/0xd5d\n [\u003cffffffff81095cb4\u003e] lock_acquire+0xf3/0x12d\n [\u003cffffffff814cdadd\u003e] _spin_lock+0x40/0x89\n [\u003cffffffff810c3389\u003e] handle_level_irq+0x30/0x105\n [\u003cffffffff81014e0e\u003e] handle_irq+0x95/0xb7\n [\u003cffffffff810141bd\u003e] do_IRQ+0x6a/0xe0\n [\u003cffffffff81012813\u003e] ret_from_intr+0x0/0x16\nirq event stamp: 195096\nhardirqs last  enabled at (195096): [\u003cffffffff814cd7f7\u003e] _spin_unlock_irq+0x3a/0x5c\nhardirqs last disabled at (195095): [\u003cffffffff814cdbdd\u003e] _spin_lock_irq+0x29/0x95\nsoftirqs last  enabled at (195088): [\u003cffffffff81068c92\u003e] __do_softirq+0x1c1/0x1ef\nsoftirqs last disabled at (195093): [\u003cffffffff8101304c\u003e] call_softirq+0x1c/0x30\n\nother info that might help us debug this:\n1 lock held by swapper/0:\n #0:  (kernel/irq/spurious.c:21){+.-...}, at: [\u003cffffffff81070cf2\u003e]\nrun_timer_softirq+0x1a9/0x315\n\nstack backtrace:\nPid: 0, comm: swapper Not tainted 2.6.32-rc5 #1\nCall Trace:\n \u003cIRQ\u003e  [\u003cffffffff81093e94\u003e] valid_state+0x187/0x1ae\n [\u003cffffffff81093fe4\u003e] mark_lock+0x129/0x253\n [\u003cffffffff810951d4\u003e] __lock_acquire+0x370/0xd5d\n [\u003cffffffff81095cb4\u003e] lock_acquire+0xf3/0x12d\n [\u003cffffffff814cdadd\u003e] _spin_lock+0x40/0x89\n [\u003cffffffff810c264e\u003e] try_one_irq+0x32/0x138\n [\u003cffffffff810c2795\u003e] poll_all_shared_irqs+0x41/0x6d\n [\u003cffffffff810c27dd\u003e] poll_spurious_irqs+0x1c/0x49\n [\u003cffffffff81070d82\u003e] run_timer_softirq+0x239/0x315\n [\u003cffffffff81068bd3\u003e] __do_softirq+0x102/0x1ef\n [\u003cffffffff8101304c\u003e] call_softirq+0x1c/0x30\n [\u003cffffffff81014b65\u003e] do_softirq+0x59/0xca\n [\u003cffffffff810686ad\u003e] irq_exit+0x58/0xae\n [\u003cffffffff81029b84\u003e] smp_apic_timer_interrupt+0x94/0xba\n [\u003cffffffff81012a33\u003e] apic_timer_interrupt+0x13/0x20\n\nThe reason is that try_one_irq() is called from hardirq context with\ninterrupts disabled and from softirq context (poll_all_shared_irqs())\nwith interrupts enabled.\n\nDisable interrupts before calling it from poll_all_shared_irqs().\n\nReported-and-tested-by: Prarit Bhargava \u003cprarit@redhat.com\u003e\nSigned-off-by: Yong Zhang \u003cyong.zhang0@gmail.com\u003e\nLKML-Reference: \u003c1257563773-4620-1-git-send-email-yong.zhang0@gmail.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "663e69592856df53ef52969482ef413a96bc4e06",
      "tree": "7866ab9917d0f4a676b59b37d6e28f354d009872",
      "parents": [
        "24b26d4211130b6455692804c14d537158855cd7"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Nov 04 14:22:21 2009 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Nov 04 14:22:21 2009 +0100"
      },
      "message": "irq: Remove unused debug_poll_all_shared_irqs()\n\ncommit 74296a8ed added this function for debug purposes, but it was\nnever used for anything. Remove it.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "24b26d4211130b6455692804c14d537158855cd7",
      "tree": "5dbc3a26a8a0a8727a848b79e34a333238a5d3dc",
      "parents": [
        "40b1f4e5113eafc5e84f2ba86822df66087fcb25"
      ],
      "author": {
        "name": "Liuweni",
        "email": "qingshenlwy@gmail.com",
        "time": "Wed Nov 04 20:11:05 2009 +0800"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Nov 04 14:13:14 2009 +0100"
      },
      "message": "irq: Fix docbook comments\n\nFix docbook comments to match the actual function names\n(set_irq_msi, handle_percpu_irq).\n\nSigned-off-by: Liuwenyi \u003cqingshenlwy@gmail.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "d43c36dc6b357fa1806800f18aa30123c747a6d1",
      "tree": "339ce510073ecbe9b3592008f7dece7b277035ef",
      "parents": [
        "69585dd69e663a40729492c7b52eb82477a2027a"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Oct 07 17:09:06 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 11 11:20:58 2009 -0700"
      },
      "message": "headers: remove sched.h from interrupt.h\n\nAfter m68k\u0027s task_thread_info() doesn\u0027t refer to current,\nit\u0027s possible to remove sched.h from interrupt.h and not break m68k!\nMany thanks to Heiko Carstens for allowing this.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\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": "372e24b0cb764ec55b4cf3408a95ae40a29e5b96",
      "tree": "ee8b1e26ec723e509f6478898f4cfbd826aac5f2",
      "parents": [
        "31b47cf7609288893a10706c648faa932c7aef90"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yinghai@kernel.org",
        "time": "Wed Aug 26 16:20:13 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Aug 29 15:53:00 2009 +0200"
      },
      "message": "irq: Make sure irq_desc for legacy irq get correct node setting\n\nwhen there is no ram on node 0.\n\nSigned-off-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Jesse Barnes \u003cjbarnes@virtuousgeek.org\u003e\nLKML-Reference: \u003c4A95C32D.5040605@kernel.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "4dbc9ca219b0f294332e734528f7b82211700170",
      "tree": "377ee0e0d671f507dbb73618684630aba2475299",
      "parents": [
        "399b5da29b9f851eb7b96e2882097127f003e87c"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Aug 27 09:38:49 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Aug 27 09:38:49 2009 +0200"
      },
      "message": "genirq: Do not mask oneshot edge type interrupts\n\nMasking oneshot edge type interrupts is wrong as we might lose an\ninterrupt which is issued when the threaded handler is handling the\ndevice. We can keep the irq unmasked safely as with edge type\ninterrupts there is no danger of interrupt floods. If the threaded\nhandler has not yet finished then IRQTF_RUNTHREAD is set which will\nkeep the handler thread active.\n\nDebugged and verified in preempt-rt.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "daedc71836e5a398fd0cc0e12c5cb43539478485",
      "tree": "c56567a92017679e57195cef992d4a5561c20e0e",
      "parents": [
        "c36ba80ea01d0aecb652c26799a912e760ce8981",
        "422bef879e84104fee6dc68ded0e371dbeb5f88e"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Aug 25 10:04:27 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Aug 25 10:04:32 2009 +0200"
      },
      "message": "Merge commit \u0027v2.6.31-rc7\u0027 into irq/core\n\nMerge reason: move from an -rc2 base to -rc7.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\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": "c36ba80ea01d0aecb652c26799a912e760ce8981",
      "tree": "1f44e0c3ebf1d2bde9d3cc2fab41885b80e3a506",
      "parents": [
        "990a55eb25d9698d61352264cc43f3a9c04cce90"
      ],
      "author": {
        "name": "Bartlomiej Zolnierkiewicz",
        "email": "bzolnier@gmail.com",
        "time": "Thu Aug 06 21:46:03 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Aug 09 12:44:29 2009 +0200"
      },
      "message": "irq: Remove superfluous NULL pointer check in check_irq_resend()\n\nThis takes care of the following entry from Dan\u0027s list:\n\nkernel/irq/resend.c +73 check_irq_resend(17) warning: variable derefenced before check \u0027desc-\u003echip\u0027\n\nReported-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\nCc: Jonathan Corbet \u003ccorbet@lwn.net\u003e\nCc: Eugene Teo \u003ceteo@redhat.com\u003e\nCc: Julia Lawall \u003cjulia@diku.dk\u003e\nLKML-Reference: \u003c200908062146.03638.bzolnier@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "ad7d6c7a0654a4bbda3e109f56af713267e96274",
      "tree": "4090be64f42e9c721a797d6798611ad9c07d2a2e",
      "parents": [
        "7b2aa037e878c939676675969983284a02958ae3"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yinghai@kernel.org",
        "time": "Tue Aug 04 09:01:33 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Aug 08 17:06:03 2009 +0200"
      },
      "message": "x86/irq: Fix move_irq_desc() for nodes without ram\n\nDon\u0027t move it if target node is -1.\n\nSigned-off-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nLKML-Reference: \u003c4A785B5D.4070702@kernel.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "990a55eb25d9698d61352264cc43f3a9c04cce90",
      "tree": "60a9c0f0ebbc29f03967c5259b8b2f86b74175ca",
      "parents": [
        "c71320d0c445e01555a86fa6523609db47eeaef6"
      ],
      "author": {
        "name": "Jiri Slaby",
        "email": "jirislaby@gmail.com",
        "time": "Fri Jul 31 00:02:06 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Aug 04 17:00:11 2009 +0200"
      },
      "message": "irq: Clean up by removing irqfixup MODULE_PARM_DESC()\n\nIt\u0027s wrong (the parm takes no arguments) and compile-time wiped\naway anyway (due to !MODULE).\n\nSigned-off-by: Jiri Slaby \u003cjirislaby@gmail.com\u003e\nLKML-Reference: \u003c1248991326-26267-1-git-send-email-jirislaby@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\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": "c71320d0c445e01555a86fa6523609db47eeaef6",
      "tree": "2dbe028328dfeddb04fa191fc9ed9d35b4591c76",
      "parents": [
        "96ccd4a43a4d80c80be636cd025a69959cf47424"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun Jul 05 00:22:34 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sun Jul 05 13:07:00 2009 +0200"
      },
      "message": "genirq: Fix comment describing suspend_device_irqs()\n\nThe kerneldoc comment describing suspend_device_irqs() is currently\nmisleading, because generally the function doesn\u0027t really disable\ninterrupt lines at the chip level.  Replace it with a more accurate\none.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nLKML-Reference: \u003c200907050022.35117.rjw@sisk.pl\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\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"
    }
  ],
  "next": "28be225b23b115573e0ecc8ef9996f42a1652f74"
}
