)]}'
{
  "commit": "8d32a307e4faa8b123dc8a9cd56d1a7525f69ad3",
  "tree": "50141928db9f0ac1377dd8bb355d600232d6b38c",
  "parents": [
    "8eb90c30e0e815a1308828352eabd03ca04229dd"
  ],
  "author": {
    "name": "Thomas Gleixner",
    "email": "tglx@linutronix.de",
    "time": "Wed Feb 23 23:52:23 2011 +0000"
  },
  "committer": {
    "name": "Thomas Gleixner",
    "email": "tglx@linutronix.de",
    "time": "Sat Feb 26 11:57:18 2011 +0100"
  },
  "message": "genirq: Provide forced interrupt threading\n\nAdd a commandline parameter \"threadirqs\" which forces all interrupts except\nthose marked IRQF_NO_THREAD to run threaded. That\u0027s mostly a debug option to\nallow retrieving better debug data from crashing interrupt handlers. If\n\"threadirqs\" is not enabled on the kernel command line, then there is no\nimpact in the interrupt hotpath.\n\nArchitecture code needs to select CONFIG_IRQ_FORCED_THREADING after\nmarking the interrupts which cant be threaded IRQF_NO_THREAD. All\ninterrupts which have IRQF_TIMER set are implict marked\nIRQF_NO_THREAD. Also all PER_CPU interrupts are excluded.\n\nForced threading hard interrupts also forces all soft interrupt\nhandling into thread context.\n\nWhen enabled it might slow down things a bit, but for debugging problems in\ninterrupt code it\u0027s a reasonable penalty as it does not immediately\ncrash and burn the machine when an interrupt handler is buggy.\n\nSome test results on a Core2Duo machine:\n\nCache cold run of:\n # time git grep irq_desc\n\n      non-threaded       threaded\n real 1m18.741s          1m19.061s\n user 0m1.874s           0m1.757s\n sys  0m5.843s           0m5.427s\n\n # iperf -c server\nnon-threaded\n[  3]  0.0-10.0 sec  1.09 GBytes   933 Mbits/sec\n[  3]  0.0-10.0 sec  1.09 GBytes   934 Mbits/sec\n[  3]  0.0-10.0 sec  1.09 GBytes   933 Mbits/sec\nthreaded\n[  3]  0.0-10.0 sec  1.09 GBytes   939 Mbits/sec\n[  3]  0.0-10.0 sec  1.09 GBytes   934 Mbits/sec\n[  3]  0.0-10.0 sec  1.09 GBytes   937 Mbits/sec\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLKML-Reference: \u003c20110223234956.772668648@linutronix.de\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "89835a4766a684468695b430ac8e7e7f1b76dabc",
      "old_mode": 33188,
      "old_path": "Documentation/kernel-parameters.txt",
      "new_id": "cac6cf9a588cdd1668921e17a9e25401dd609ff9",
      "new_mode": 33188,
      "new_path": "Documentation/kernel-parameters.txt"
    },
    {
      "type": "modify",
      "old_id": "0fc3eb9397b4867dc83ff3034b6764e32ad1ffbd",
      "old_mode": 33188,
      "old_path": "include/linux/interrupt.h",
      "new_id": "f8a8af108e0cd855b4eebdc861fbdd27f4a87517",
      "new_mode": 33188,
      "new_path": "include/linux/interrupt.h"
    },
    {
      "type": "modify",
      "old_id": "355b8c7957f5e062be77c94a69a25e7fc5a720dd",
      "old_mode": 33188,
      "old_path": "kernel/irq/Kconfig",
      "new_id": "144db9dcfcde97ff9e94f3722607274a562905c9",
      "new_mode": 33188,
      "new_path": "kernel/irq/Kconfig"
    },
    {
      "type": "modify",
      "old_id": "935bec4bfa874841813cfc3fcabbd2efa6e2810b",
      "old_mode": 33188,
      "old_path": "kernel/irq/internals.h",
      "new_id": "6c6ec9a490274e7c313f78eb202aa1c5af84f9b7",
      "new_mode": 33188,
      "new_path": "kernel/irq/internals.h"
    },
    {
      "type": "modify",
      "old_id": "58c861367300dc44905453becc6bc3bad0fcec5d",
      "old_mode": 33188,
      "old_path": "kernel/irq/manage.c",
      "new_id": "acd599a43bfb56b6fdafe98d1bb531c16e71b77c",
      "new_mode": 33188,
      "new_path": "kernel/irq/manage.c"
    },
    {
      "type": "modify",
      "old_id": "c0490464e92f04630fc84a071f39a4303842be09",
      "old_mode": 33188,
      "old_path": "kernel/softirq.c",
      "new_id": "a33fb291124823dbc6f5ce9989d76e6a25b3ac33",
      "new_mode": 33188,
      "new_path": "kernel/softirq.c"
    }
  ]
}
