)]}'
{
  "log": [
    {
      "commit": "9efe21cb82b5dbe3b0b2ae4de4eccc64ecb94e95",
      "tree": "7ff8833745d2f268f897f6fa4a27263b4a572245",
      "parents": [
        "de18836e447c2dc30120c0919b8db8ddc0401cc4",
        "0221c81b1b8eb0cbb6b30a0ced52ead32d2b4e4c"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Apr 06 01:41:22 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Apr 06 01:41:22 2009 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into irq/threaded\n\nConflicts:\n\tinclude/linux/irq.h\n\tkernel/irq/handle.c\n"
    },
    {
      "commit": "3aa551c9b4c40018f0e261a178e3d25478dc04a9",
      "tree": "2a696109273fcc421d774cc8fefa4180331a85ad",
      "parents": [
        "80c5520811d3805adcb15c570ea5e2d489fa5d0b"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Mar 23 18:28:15 2009 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Mar 24 12:15:23 2009 +0100"
      },
      "message": "genirq: add threaded interrupt handler support\n\nAdd support for threaded interrupt handlers:\n\nA device driver can request that its main interrupt handler runs in a\nthread. To achive this the device driver requests the interrupt with\nrequest_threaded_irq() and provides additionally to the handler a\nthread function. The handler function is called in hard interrupt\ncontext and needs to check whether the interrupt originated from the\ndevice. If the interrupt originated from the device then the handler\ncan either return IRQ_HANDLED or IRQ_WAKE_THREAD. IRQ_HANDLED is\nreturned when no further action is required. IRQ_WAKE_THREAD causes\nthe genirq code to invoke the threaded (main) handler. When\nIRQ_WAKE_THREAD is returned handler must have disabled the interrupt\non the device level. This is mandatory for shared interrupt handlers,\nbut we need to do it as well for obscure x86 hardware where disabling\nan interrupt on the IO_APIC level redirects the interrupt to the\nlegacy PIC interrupt lines.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n\n"
    },
    {
      "commit": "2a7b8df04c11a70105c1abe67d006455d3bdc944",
      "tree": "b4b709bbed075c909b8219148a6b94e6f0c3140d",
      "parents": [
        "5a5fb7dbe88dd57dc2bef0f3be9da991e789612d"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Feb 12 14:16:46 2009 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Feb 12 14:16:46 2009 -0500"
      },
      "message": "sched: do not account for NMIs\n\nImpact: avoid corruption in system time accounting\n\nMartin Schwidefsky told me that there was an issue with NMIs and\nsystem accounting. The problem is that the accounting code is\nnot reentrant, and if an NMI goes off after an interrupt it can\ncorrupt the accounting.\n\nFor now, the best we can do is to treat NMIs like SMIs and they\nare not accounted for.\n\nThis patch changes nmi_enter to not call __irq_enter and to do\nthe preempt-count and tracing calls directly.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    },
    {
      "commit": "5a5fb7dbe88dd57dc2bef0f3be9da991e789612d",
      "tree": "c1645341b09cc4259255991bd74a7aa708db9413",
      "parents": [
        "d524e03207591a6de7e6b5069aabc778e3f0f5f8"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Feb 12 10:53:37 2009 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Feb 12 11:19:05 2009 -0500"
      },
      "message": "preempt-count: force hardirq-count to max of 10\n\nTo add a bit in the preempt_count to be set when in NMI context, we\nfound that some archs did not have enough bits to spare. This is\ndue to the hardirq_count being a mask that can hold NR_IRQS.\n\nSome archs allow for over 16000 IRQs, and that would require a mask\nof 14 bits. The sofitrq mask is 8 bits and the preempt disable mask\nis also 8 bits.  The PREEMP_ACTIVE bit is bit 30, and bit 31 would\nmake the preempt_count (which is type int) a negative number.\nA negative preempt_count is a sign of failure.\n\nAdd them up 14+8+8+1+1 you get 32 bits. No room for the NMI bit.\n\nBut the hardirq_count is to track the number of nested IRQs, not\nthe number of total IRQs.  This originally took the paranoid approach\nof setting the max nesting to NR_IRQS. But when we have archs with\nover 1000 IRQs, it is not practical to think they will ever all\nnest on a single CPU. Not to mention that this would most definitely\ncause a stack overflow.\n\nThis patch sets a max of 10 bits to be used for IRQ nesting.\nI did a \u0027git grep HARDIRQ\u0027 to examine all users of HARDIRQ_BITS and\nHARDIRQ_MASK, and found that making it a max of 10 would not hurt\nanyone. I did find that the m68k expected it to be 8 bits, so\nI allow for the archs to set the number to be less than 10.\n\nI removed the setting of HARDIRQ_BITS from the archs that set it\nto more than 10. This includes ALPHA, ia64 and avr32.\n\nThis will always allow room for the NMI bit, and if we need to allow\nfor NMI nesting, we have 4 bits to play with.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    },
    {
      "commit": "375b38b4214f29109a393ab762d468054bf52354",
      "tree": "d57e22648d1e07659db308abdcb8d5b23d63891f",
      "parents": [
        "4e6ea1440c67de32d7c89aacf233472dfc3bce82"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Feb 06 00:51:37 2009 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Sat Feb 07 20:01:23 2009 -0500"
      },
      "message": "nmi: add generic nmi tracking state\n\nThis code adds an in_nmi() macro that uses the current tasks preempt count\nto track when it is in NMI context. Other parts of the kernel can\nuse this to determine if the context is in NMI context or not.\n\nThis code was inspired by the -rt patch in_nmi version that was\nwritten by Peter Zijlstra, who borrowed that code from\nMathieu Desnoyers.\n\nReported-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    },
    {
      "commit": "5f34fe1cfc1bdd8b4711bbe37421fba4ed0d1ed4",
      "tree": "85b21c8bb0e53005bd970d648ca093acfd0584a3",
      "parents": [
        "eca1bf5b4fab56d2feb1572d34d59fcd92ea7df3",
        "6638101c1124c19c8a65b1645e4ecd09e0572f3e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 30 16:10:19 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 30 16:10:19 2008 -0800"
      },
      "message": "Merge branch \u0027core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (63 commits)\n  stacktrace: provide save_stack_trace_tsk() weak alias\n  rcu: provide RCU options on non-preempt architectures too\n  printk: fix discarding message when recursion_bug\n  futex: clean up futex_(un)lock_pi fault handling\n  \"Tree RCU\": scalable classic RCU implementation\n  futex: rename field in futex_q to clarify single waiter semantics\n  x86/swiotlb: add default swiotlb_arch_range_needs_mapping\n  x86/swiotlb: add default phys\u003c-\u003ebus conversion\n  x86: unify pci iommu setup and allow swiotlb to compile for 32 bit\n  x86: add swiotlb allocation functions\n  swiotlb: consolidate swiotlb info message printing\n  swiotlb: support bouncing of HighMem pages\n  swiotlb: factor out copy to/from device\n  swiotlb: add arch hook to force mapping\n  swiotlb: allow architectures to override phys\u003c-\u003ebus\u003c-\u003ephys conversions\n  swiotlb: add comment where we handle the overflow of a dma mask on 32 bit\n  rcu: fix rcutorture behavior during reboot\n  resources: skip sanity check of busy resources\n  swiotlb: move some definitions to header\n  swiotlb: allow architectures to override swiotlb pool allocation\n  ...\n\nFix up trivial conflicts in\n  arch/x86/kernel/Makefile\n  arch/x86/mm/init_32.c\n  include/linux/hardirq.h\nas per Ingo\u0027s suggestions.\n"
    },
    {
      "commit": "64db4cfff99c04cd5f550357edcc8780f96b54a2",
      "tree": "4856e788d21f0e31ed78a22b70b4521f7237705e",
      "parents": [
        "d110ec3a1e1f522e2e9dfceb9c36d6590c26d2d4"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Dec 18 21:55:32 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Dec 18 21:56:04 2008 +0100"
      },
      "message": "\"Tree RCU\": scalable classic RCU implementation\n\nThis patch fixes a long-standing performance bug in classic RCU that\nresults in massive internal-to-RCU lock contention on systems with\nmore than a few hundred CPUs.  Although this patch creates a separate\nflavor of RCU for ease of review and patch maintenance, it is intended\nto replace classic RCU.\n\nThis patch still handles stress better than does mainline, so I am still\ncalling it ready for inclusion.  This patch is against the -tip tree.\nNevertheless, experience on an actual 1000+ CPU machine would still be\nmost welcome.\n\nMost of the changes noted below were found while creating an rcutiny\n(which should permit ejecting the current rcuclassic) and while doing\ndetailed line-by-line documentation.\n\nUpdates from v9 (http://lkml.org/lkml/2008/12/2/334):\n\no\tFixes from remainder of line-by-line code walkthrough,\n\tincluding comment spelling, initialization, undesirable\n\tnarrowing due to type conversion, removing redundant memory\n\tbarriers, removing redundant local-variable initialization,\n\tand removing redundant local variables.\n\n\tI do not believe that any of these fixes address the CPU-hotplug\n\tissues that Andi Kleen was seeing, but please do give it a whirl\n\tin case the machine is smarter than I am.\n\n\tA writeup from the walkthrough may be found at the following\n\tURL, in case you are suffering from terminal insomnia or\n\tmasochism:\n\n\thttp://www.kernel.org/pub/linux/kernel/people/paulmck/tmp/rcutree-walkthrough.2008.12.16a.pdf\n\no\tMade rcutree tracing use seq_file, as suggested some time\n\tago by Lai Jiangshan.\n\no\tAdded a .csv variant of the rcudata debugfs trace file, to allow\n\tpeople having thousands of CPUs to drop the data into\n\ta spreadsheet.\tTested with oocalc and gnumeric.  Updated\n\tdocumentation to suit.\n\nUpdates from v8 (http://lkml.org/lkml/2008/11/15/139):\n\no\tFix a theoretical race between grace-period initialization and\n\tforce_quiescent_state() that could occur if more than three\n\tjiffies were required to carry out the grace-period\n\tinitialization.  Which it might, if you had enough CPUs.\n\no\tApply Ingo\u0027s printk-standardization patch.\n\no\tSubstitute local variables for repeated accesses to global\n\tvariables.\n\no\tFix comment misspellings and redundant (but harmless) increments\n\tof -\u003en_rcu_pending (this latter after having explicitly added it).\n\no\tApply checkpatch fixes.\n\nUpdates from v7 (http://lkml.org/lkml/2008/10/10/291):\n\no\tFixed a number of problems noted by Gautham Shenoy, including\n\tthe cpu-stall-detection bug that he was having difficulty\n\tconvincing me was real.  ;-)\n\no\tChanged cpu-stall detection to wait for ten seconds rather than\n\tthree in order to reduce false positive, as suggested by Ingo\n\tMolnar.\n\no\tProduced a design document (http://lwn.net/Articles/305782/).\n\tThe act of writing this document uncovered a number of both\n\ttheoretical and \"here and now\" bugs as noted below.\n\no\tFix dynticks_nesting accounting confusion, simplify WARN_ON()\n\tcondition, fix kerneldoc comments, and add memory barriers\n\tin dynticks interface functions.\n\no\tAdd more data to tracing.\n\no\tRemove unused \"rcu_barrier\" field from rcu_data structure.\n\no\tCount calls to rcu_pending() from scheduling-clock interrupt\n\tto use as a surrogate timebase should jiffies stop counting.\n\no\tFix a theoretical race between force_quiescent_state() and\n\tgrace-period initialization.  Yes, initialization does have to\n\tgo on for some jiffies for this race to occur, but given enough\n\tCPUs...\n\nUpdates from v6 (http://lkml.org/lkml/2008/9/23/448):\n\no\tFix a number of checkpatch.pl complaints.\n\no\tApply review comments from Ingo Molnar and Lai Jiangshan\n\ton the stall-detection code.\n\no\tFix several bugs in !CONFIG_SMP builds.\n\no\tFix a misspelled config-parameter name so that RCU now announces\n\tat boot time if stall detection is configured.\n\no\tRun tests on numerous combinations of configurations parameters,\n\twhich after the fixes above, now build and run correctly.\n\nUpdates from v5 (http://lkml.org/lkml/2008/9/15/92, bad subject line):\n\no\tFix a compiler error in the !CONFIG_FANOUT_EXACT case (blew a\n\tchangeset some time ago, and finally got around to retesting\n\tthis option).\n\no\tFix some tracing bugs in rcupreempt that caused incorrect\n\ttotals to be printed.\n\no\tI now test with a more brutal random-selection online/offline\n\tscript (attached).  Probably more brutal than it needs to be\n\ton the people reading it as well, but so it goes.\n\no\tA number of optimizations and usability improvements:\n\n\to\tMake rcu_pending() ignore the grace-period timeout when\n\t\tthere is no grace period in progress.\n\n\to\tMake force_quiescent_state() avoid going for a global\n\t\tlock in the case where there is no grace period in\n\t\tprogress.\n\n\to\tRearrange struct fields to improve struct layout.\n\n\to\tMake call_rcu() initiate a grace period if RCU was\n\t\tidle, rather than waiting for the next scheduling\n\t\tclock interrupt.\n\n\to\tInvoke rcu_irq_enter() and rcu_irq_exit() only when\n\t\tidle, as suggested by Andi Kleen.  I still don\u0027t\n\t\tcompletely trust this change, and might back it out.\n\n\to\tMake CONFIG_RCU_TRACE be the single config variable\n\t\tmanipulated for all forms of RCU, instead of the prior\n\t\tconfusion.\n\n\to\tDocument tracing files and formats for both rcupreempt\n\t\tand rcutree.\n\nUpdates from v4 for those missing v5 given its bad subject line:\n\no\tSeparated dynticks interface so that NMIs and irqs call separate\n\tfunctions, greatly simplifying it.  In particular, this code\n\tno longer requires a proof of correctness.  ;-)\n\no\tSeparated dynticks state out into its own per-CPU structure,\n\tavoiding the duplicated accounting.\n\no\tThe case where a dynticks-idle CPU runs an irq handler that\n\tinvokes call_rcu() is now correctly handled, forcing that CPU\n\tout of dynticks-idle mode.\n\no\tReview comments have been applied (thank you all!!!).\n\tFor but one example, fixed the dynticks-ordering issue that\n\tManfred pointed out, saving me much debugging.  ;-)\n\no\tAdjusted rcuclassic and rcupreempt to handle dynticks changes.\n\nAttached is an updated patch to Classic RCU that applies a hierarchy,\ngreatly reducing the contention on the top-level lock for large machines.\nThis passes 10-hour concurrent rcutorture and online-offline testing on\n128-CPU ppc64 without dynticks enabled, and exposes some timekeeping\nbugs in presence of dynticks (exciting working on a system where\n\"sleep 1\" hangs until interrupted...), which were fixed in the\n2.6.27 kernel.  It is getting more reliable than mainline by some\nmeasures, so the next version will be against -tip for inclusion.\nSee also Manfred Spraul\u0027s recent patches (or his earlier work from\n2004 at http://marc.info/?l\u003dlinux-kernel\u0026m\u003d108546384711797\u0026w\u003d2).\nWe will converge onto a common patch in the fullness of time, but are\ncurrently exploring different regions of the design space.  That said,\nI have already gratefully stolen quite a few of Manfred\u0027s ideas.\n\nThis patch provides CONFIG_RCU_FANOUT, which controls the bushiness\nof the RCU hierarchy.  Defaults to 32 on 32-bit machines and 64 on\n64-bit machines.  If CONFIG_NR_CPUS is less than CONFIG_RCU_FANOUT,\nthere is no hierarchy.  By default, the RCU initialization code will\nadjust CONFIG_RCU_FANOUT to balance the hierarchy, so strongly NUMA\narchitectures may choose to set CONFIG_RCU_FANOUT_EXACT to disable\nthis balancing, allowing the hierarchy to be exactly aligned to the\nunderlying hardware.  Up to two levels of hierarchy are permitted\n(in addition to the root node), allowing up to 16,384 CPUs on 32-bit\nsystems and up to 262,144 CPUs on 64-bit systems.  I just know that I\nam going to regret saying this, but this seems more than sufficient\nfor the foreseeable future.  (Some architectures might wish to set\nCONFIG_RCU_FANOUT\u003d4, which would limit such architectures to 64 CPUs.\nIf this becomes a real problem, additional levels can be added, but I\ndoubt that it will make a significant difference on real hardware.)\n\nIn the common case, a given CPU will manipulate its private rcu_data\nstructure and the rcu_node structure that it shares with its immediate\nneighbors.  This can reduce both lock and memory contention by multiple\norders of magnitude, which should eliminate the need for the strange\nmanipulations that are reported to be required when running Linux on\nvery large systems.\n\nSome shortcomings:\n\no\tMore bugs will probably surface as a result of an ongoing\n\tline-by-line code inspection.\n\n\tPatches will be provided as required.\n\no\tThere are probably hangs, rcutorture failures, \u0026c.  Seems\n\tquite stable on a 128-CPU machine, but that is kind of small\n\tcompared to 4096 CPUs.  However, seems to do better than\n\tmainline.\n\n\tPatches will be provided as required.\n\no\tThe memory footprint of this version is several KB larger\n\tthan rcuclassic.\n\n\tA separate UP-only rcutiny patch will be provided, which will\n\treduce the memory footprint significantly, even compared\n\tto the old rcuclassic.  One such patch passes light testing,\n\tand has a memory footprint smaller even than rcuclassic.\n\tInitial reaction from various embedded guys was \"it is not\n\tworth it\", so am putting it aside.\n\nCredits:\n\no\tManfred Spraul for ideas, review comments, and bugs spotted,\n\tas well as some good friendly competition.  ;-)\n\no\tJosh Triplett, Ingo Molnar, Peter Zijlstra, Mathieu Desnoyers,\n\tLai Jiangshan, Andi Kleen, Andy Whitcroft, and Andrew Morton\n\tfor reviews and comments.\n\no\tThomas Gleixner for much-needed help with some timer issues\n\t(see patches below).\n\no\tJon M. Tollefson, Tim Pepper, Andrew Theurer, Jose R. Santos,\n\tAndy Whitcroft, Darrick Wong, Nishanth Aravamudan, Anton\n\tBlanchard, Dave Kleikamp, and Nathan Lynch for keeping machines\n\talive despite my heavy abuse^Wtesting.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "6a60dd121c5b6c2d827e99b38c1326f2600c3891",
      "tree": "d1be280b4a0dba24ca3ec800d6d1ef74c4df85be",
      "parents": [
        "7e5e26a3d8ac4bcadb380073dc9604c07a9a6198"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Nov 06 15:55:21 2008 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Nov 06 22:20:46 2008 +0100"
      },
      "message": "ftrace: split out hardirq ftrace code into own header\n\nImpact: moving of function prototypes into own header file\n\nftrace.h is too big of a file for hardirq.h, and some archs will fail\nto build because of the include dependencies not being met.\n\nThis patch pulls out the required prototypes for hardirq.h into a smaller\nand safer ftrace_irq.h file.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "7e5e26a3d8ac4bcadb380073dc9604c07a9a6198",
      "tree": "68f6e0ab79358b198ba9cf404d647d2188146292",
      "parents": [
        "7a895f53cda9d9362c30144e42c124a1ae996b9e"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Oct 31 09:36:38 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Nov 03 11:03:43 2008 +0100"
      },
      "message": "ftrace: fix hardirq header for non ftrace archs\n\nImpact: build fix for non-ftrace architectures\n\nNot all archs implement ftrace, and therefore do not have an asm/ftrace.h.\nThis patch corrects the problem.\n\nThe ftrace_nmi_enter/exit now must be defined for all archs that implement\ndynamic ftrace. Currently, only x86 does.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "17666f02b118099028522dfc3df00a235700e216",
      "tree": "6a7d280b9a6440cc7b8aab54d1e3e970d4ca00b2",
      "parents": [
        "7f82f000ed030d1108b4de47d9e2d556092980c6"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Oct 30 16:08:32 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Oct 30 21:30:08 2008 +0100"
      },
      "message": "ftrace: nmi safe code modification\n\nImpact: fix crashes that can occur in NMI handlers, if their code is modified\n\nModifying code is something that needs special care. On SMP boxes,\nif code that is being modified is also being executed on another CPU,\nthat CPU will have undefined results.\n\nThe dynamic ftrace uses kstop_machine to make the system act like a\nuniprocessor system. But this does not address NMIs, that can still\nrun on other CPUs.\n\nOne approach to handle this is to make all code that are used by NMIs\nnot be traced. But NMIs can call notifiers that spread throughout the\nkernel and this will be very hard to maintain, and the chance of missing\na function is very high.\n\nThe approach that this patch takes is to have the NMIs modify the code\nif the modification is taking place. The way this works is that just\nwriting to code executing on another CPU is not harmful if what is\nwritten is the same as what exists.\n\nTwo buffers are used: an IP buffer and a \"code\" buffer.\n\nThe steps that the patcher takes are:\n\n 1) Put in the instruction pointer into the IP buffer\n    and the new code into the \"code\" buffer.\n 2) Set a flag that says we are modifying code\n 3) Wait for any running NMIs to finish.\n 4) Write the code\n 5) clear the flag.\n 6) Wait for any running NMIs to finish.\n\nIf an NMI is executed, it will also write the pending code.\nMultiple writes are OK, because what is being written is the same.\nThen the patcher must wait for all running NMIs to finish before\ngoing to the next line that must be patched.\n\nThis is basically the RCU approach to code modification.\n\nThanks to Ingo Molnar for suggesting the idea, and to Arjan van de Ven\nfor his guidence on what is safe and what is not.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "8e3e076c5a78519a9f64cd384e8f18bc21882ce0",
      "tree": "f032258fde3aa4771e86bf4552fe4530c221dec3",
      "parents": [
        "00b41ec2611dc98f87f30753ee00a53db648d662"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 10 20:58:02 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 10 20:58:02 2008 -0700"
      },
      "message": "BKL: revert back to the old spinlock implementation\n\nThe generic semaphore rewrite had a huge performance regression on AIM7\n(and potentially other BKL-heavy benchmarks) because the generic\nsemaphores had been rewritten to be simple to understand and fair.  The\nlatter, in particular, turns a semaphore-based BKL implementation into a\nmess of scheduling.\n\nThe attempt to fix the performance regression failed miserably (see the\nprevious commit 00b41ec2611dc98f87f30753ee00a53db648d662 \u0027Revert\n\"semaphore: fix\"\u0027), and so for now the simple and sane approach is to\ninstead just go back to the old spinlock-based BKL implementation that\nnever had any issues like this.\n\nThis patch also has the advantage of being reported to fix the\nregression completely according to Yanmin Zhang, unlike the semaphore\nhack which still left a couple percentage point regression.\n\nAs a spinlock, the BKL obviously has the potential to be a latency\nissue, but it\u0027s not really any different from any other spinlock in that\nrespect.  We do want to get rid of the BKL asap, but that has been the\nplan for several years.\n\nThese days, the biggest users are in the tty layer (open/release in\nparticular) and Alan holds out some hope:\n\n  \"tty release is probably a few months away from getting cured - I\u0027m\n   afraid it will almost certainly be the very last user of the BKL in\n   tty to get fixed as it depends on everything else being sanely locked.\"\n\nso while we\u0027re not there yet, we do have a plan of action.\n\nTested-by: Yanmin Zhang \u003cyanmin_zhang@linux.intel.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Matthew Wilcox \u003cmatthew@wil.cx\u003e\nCc: Alexander Viro \u003cviro@ftp.linux.org.uk\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8c703d35fa91911dd92a18c31a718853f483ad80",
      "tree": "13b63c9754ad202cc7f4528ee94c7c54f3f88bba",
      "parents": [
        "f67e74ca690d9f168cc468b7d714caad492740a6"
      ],
      "author": {
        "name": "Jonathan Corbet",
        "email": "corbet@lwn.net",
        "time": "Fri Mar 28 14:15:49 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 28 14:45:21 2008 -0700"
      },
      "message": "in_atomic(): document why it is unsuitable for general use\n\nDiscourage people from inappropriately using in_atomic()\n\nSigned-off-by: Jonathan Corbet \u003ccorbet@lwn.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2232c2d8e0a6a31061dec311f3d1cf7624bc14f1",
      "tree": "1d90ec0b8bd4e3c154e386f005ef596ee25fa53f",
      "parents": [
        "c0f4133b8f70769bc8dda977feb9a29109d6ccca"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Feb 29 18:46:50 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Feb 29 18:46:50 2008 +0100"
      },
      "message": "rcu: add support for dynamic ticks and preempt rcu\n\nThe PREEMPT-RCU can get stuck if a CPU goes idle and NO_HZ is set. The\nidle CPU will not progress the RCU through its grace period and a\nsynchronize_rcu my get stuck. Without this patch I have a box that will\nnot boot when PREEMPT_RCU and NO_HZ are set. That same box boots fine\nwith this patch.\n\nThis patch comes from the -rt kernel where it has been tested for\nseveral months.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "6478d8800b75253b2a934ddcb734e13ade023ad0",
      "tree": "df4017269b8755735578445c0a8a9e8b3b2615e9",
      "parents": [
        "58b8a73ab8becfcaea84abc2a06038281efa4c8a"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:33 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:33 2008 +0100"
      },
      "message": "sched: remove the !PREEMPT_BKL code\n\nremove the !PREEMPT_BKL code.\n\nthis removes 160 lines of legacy code.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "4da1ce6d9c7e2a6d9236bf4dcfd33cf506082794",
      "tree": "28f1d0b2923900b6c41a60e6c45e50f1b3f15af3",
      "parents": [
        "f64f61145a38f7039e4f1c0b50dcc3fbe70ec28e"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jul 09 18:51:58 2007 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jul 09 18:51:58 2007 +0200"
      },
      "message": "sched: add in_atomic_preempt_off()\n\nadd in_atomic_preempt_off() - debugging helper that will\nsimplify schedule().\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "79bf2bb335b85db25d27421c798595a2fa2a0e82",
      "tree": "550ec2654ae1dd65b871de7fe9c890108c6e86d8",
      "parents": [
        "f8381cba04ba8173fd5a2b8e5cd8b3290ee13a98"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Feb 16 01:28:03 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 16 08:13:59 2007 -0800"
      },
      "message": "[PATCH] tick-management: dyntick / highres functionality\n\nWith Ingo Molnar \u003cmingo@elte.hu\u003e\n\nAdd functions to provide dynamic ticks and high resolution timers.  The code\nwhich keeps track of jiffies and handles the long idle periods is shared\nbetween tick based and high resolution timer based dynticks.  The dyntick\nfunctionality can be disabled on the kernel commandline.  Provide also the\ninfrastructure to support high resolution timers.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Roman Zippel \u003czippel@linux-m68k.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dde4b2b5f4ed275250488dabdaf282d9c6e7e2b8",
      "tree": "c14b594c39cb5f64216c24440b4a54ef2db3baea",
      "parents": [
        "07190a08eef3666a8687070226c8d403c1d548b7"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Feb 16 01:27:45 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 16 08:13:58 2007 -0800"
      },
      "message": "[PATCH] uninline irq_enter()\n\nUninline irq_enter().  [dynticks adds more stuff to it]\n\nNo functional changes.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Roman Zippel \u003czippel@linux-m68k.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "23d0b8b053391afe15c9667d80de77ca88e18b8b",
      "tree": "8ee6dd027581f794bcbffaa9022a3635ba59b04a",
      "parents": [
        "323a01c50832749d23664954f91df6fc43e73975"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed Oct 04 02:16:49 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Oct 04 07:55:28 2006 -0700"
      },
      "message": "[PATCH] genirq: irq: generalize the check for HARDIRQ_BITS\n\nThis patch adds support for systems that cannot receive every interrupt on a\nsingle cpu simultaneously, in the check to see if we have enough HARDIRQ_BITS.\n\nMAX_HARDIRQS_PER_CPU becomes the count of the maximum number of hardare\ngenerated interrupts per cpu.\n\nOn architectures that support per cpu interrupt delivery this can be a\nsignificant space savings and scalability bonus.\n\nThis patch adds support for systems that cannot receive every interrupt on\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Rajesh Shah \u003crajesh.shah@intel.com\u003e\nCc: Andi Kleen \u003cak@muc.de\u003e\nCc: \"Protasevich, Natalie\" \u003cNatalie.Protasevich@UNISYS.com\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "fbb9ce9530fd9b66096d5187fa6a115d16d9746c",
      "tree": "1151a55e5d56045bac17b9766e6a4696cff0a26f",
      "parents": [
        "cae2ed9aa573415c6e5de9a09b7ff0d74af793bc"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jul 03 00:24:50 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 03 15:27:03 2006 -0700"
      },
      "message": "[PATCH] lockdep: core\n\nDo \u0027make oldconfig\u0027 and accept all the defaults for new config options -\nreboot into the kernel and if everything goes well it should boot up fine and\nyou should have /proc/lockdep and /proc/lockdep_stats files.\n\nTypically if the lock validator finds some problem it will print out\nvoluminous debug output that begins with \"BUG: ...\" and which syslog output\ncan be used by kernel developers to figure out the precise locking scenario.\n\nWhat does the lock validator do?  It \"observes\" and maps all locking rules as\nthey occur dynamically (as triggered by the kernel\u0027s natural use of spinlocks,\nrwlocks, mutexes and rwsems).  Whenever the lock validator subsystem detects a\nnew locking scenario, it validates this new rule against the existing set of\nrules.  If this new rule is consistent with the existing set of rules then the\nnew rule is added transparently and the kernel continues as normal.  If the\nnew rule could create a deadlock scenario then this condition is printed out.\n\nWhen determining validity of locking, all possible \"deadlock scenarios\" are\nconsidered: assuming arbitrary number of CPUs, arbitrary irq context and task\ncontext constellations, running arbitrary combinations of all the existing\nlocking scenarios.  In a typical system this means millions of separate\nscenarios.  This is why we call it a \"locking correctness\" validator - for all\nrules that are observed the lock validator proves it with mathematical\ncertainty that a deadlock could not occur (assuming that the lock validator\nimplementation itself is correct and its internal data structures are not\ncorrupted by some other kernel subsystem).  [see more details and conditionals\nof this statement in include/linux/lockdep.h and\nDocumentation/lockdep-design.txt]\n\nFurthermore, this \"all possible scenarios\" property of the validator also\nenables the finding of complex, highly unlikely multi-CPU multi-context races\nvia single single-context rules, increasing the likelyhood of finding bugs\ndrastically.  In practical terms: the lock validator already found a bug in\nthe upstream kernel that could only occur on systems with 3 or more CPUs, and\nwhich needed 3 very unlikely code sequences to occur at once on the 3 CPUs.\nThat bug was found and reported on a single-CPU system (!).  So in essence a\nrace will be found \"piecemail-wise\", triggering all the necessary components\nfor the race, without having to reproduce the race scenario itself!  In its\nshort existence the lock validator found and reported many bugs before they\nactually caused a real deadlock.\n\nTo further increase the efficiency of the validator, the mapping is not per\n\"lock instance\", but per \"lock-class\".  For example, all struct inode objects\nin the kernel have inode-\u003einotify_mutex.  If there are 10,000 inodes cached,\nthen there are 10,000 lock objects.  But -\u003einotify_mutex is a single \"lock\ntype\", and all locking activities that occur against -\u003einotify_mutex are\n\"unified\" into this single lock-class.  The advantage of the lock-class\napproach is that all historical -\u003einotify_mutex uses are mapped into a single\n(and as narrow as possible) set of locking rules - regardless of how many\ndifferent tasks or inode structures it took to build this set of rules.  The\nset of rules persist during the lifetime of the kernel.\n\nTo see the rough magnitude of checking that the lock validator does, here\u0027s a\nportion of /proc/lockdep_stats, fresh after bootup:\n\n lock-classes:                            694 [max: 2048]\n direct dependencies:                  1598 [max: 8192]\n indirect dependencies:               17896\n all direct dependencies:             16206\n dependency chains:                    1910 [max: 8192]\n in-hardirq chains:                      17\n in-softirq chains:                     105\n in-process chains:                    1065\n stack-trace entries:                 38761 [max: 131072]\n combined max dependencies:         2033928\n hardirq-safe locks:                     24\n hardirq-unsafe locks:                  176\n softirq-safe locks:                     53\n softirq-unsafe locks:                  137\n irq-safe locks:                         59\n irq-unsafe locks:                      176\n\nThe lock validator has observed 1598 actual single-thread locking patterns,\nand has validated all possible 2033928 distinct locking scenarios.\n\nMore details about the design of the lock validator can be found in\nDocumentation/lockdep-design.txt, which can also found at:\n\n   http://redhat.com/~mingo/lockdep-patches/lockdep-design.txt\n\n[bunk@stusta.de: cleanups]\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "de30a2b355ea85350ca2f58f3b9bf4e5bc007986",
      "tree": "0bef670aff65614b3c78ca13b20307355b8221d5",
      "parents": [
        "5bdc9b447c0076f494a56fdcd93ee8c5e78a2afd"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jul 03 00:24:42 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 03 15:27:03 2006 -0700"
      },
      "message": "[PATCH] lockdep: irqtrace subsystem, core\n\nAccurate hard-IRQ-flags and softirq-flags state tracing.\n\nThis allows us to attach extra functionality to IRQ flags on/off\nevents (such as trace-on/off).\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "62c4f0a2d5a188f73a94f2cb8ea0dba3e7cf0a7f",
      "tree": "e85ca2d0dd43f90dccf758338764c3caa55f333f",
      "parents": [
        "089f26d5e31b7bf42a9a8fefec08b30cd27f4b0e"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "dwmw2@infradead.org",
        "time": "Wed Apr 26 12:56:16 2006 +0100"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@infradead.org",
        "time": "Wed Apr 26 12:56:16 2006 +0100"
      },
      "message": "Don\u0027t include linux/config.h from anywhere else in include/\n\nSigned-off-by: David Woodhouse \u003cdwmw2@infradead.org\u003e\n"
    },
    {
      "commit": "1f1c12afe5c3e0ef901eec12dee09df4947462ee",
      "tree": "157f01441ef5ddc0810d0bfebca4667c21254529",
      "parents": [
        "bcc132651d384ad115a275868effb49c64b348ce"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Sat Jan 14 13:21:03 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Jan 14 18:27:09 2006 -0800"
      },
      "message": "[PATCH] s390: cputime misaccounting\n\nfinish_arch_switch needs to update the user cpu time as well, not just the\nsystem cpu time.  Otherwise the partial user cpu time of a process that is\nstored in the lowcore will be (mis-)accounted to the next process.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f037360f2ed111fe89a8f5cb6ba351f4e9934e53",
      "tree": "5978627d4252a7faf6d4fb9577fe8aa55e5db648",
      "parents": [
        "10ebffde3d3916026974352b7900e44afe2b243f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@parcelfarce.linux.theplanet.co.uk",
        "time": "Sun Nov 13 16:06:57 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Nov 13 18:14:13 2005 -0800"
      },
      "message": "[PATCH] m68k: thread_info header cleanup\n\na) in smp_lock.h #include of sched.h and spinlock.h moved under #ifdef\n   CONFIG_LOCK_KERNEL.\n\nb) interrupt.h now explicitly pulls sched.h (not via smp_lock.h from\n   hardirq.h as it used to)\n\nc) in three more places we need changes to compensate for (a) - one place\n   in arch/sparc needs string.h now, hardirq.h needs forward declaration of\n   task_struct and preempt.h needs direct include of thread_info.h.\n\nd) thread_info-related helpers in sched.h and thread_info.h put under\n   ifndef __HAVE_THREAD_FUNCTIONS.  Obviously safe.\n\nSigned-off-by: Al Viro \u003cviro@parcelfarce.linux.theplanet.co.uk\u003e\nSigned-off-by: Roman Zippel \u003czippel@linux-m68k.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "67bc4eb0b1140a4bf364f2dcca152be659ed9057",
      "tree": "8dc373e0a622e80da888be3cc74932f33bb7485e",
      "parents": [
        "a2ac953d7c5c8ddbd01dfa0428b92497a69ad6ef"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "rdunlap@xenotime.net",
        "time": "Tue Jul 12 13:58:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jul 12 16:01:03 2005 -0700"
      },
      "message": "[PATCH] hardirq uses preempt\n\nhardirq.h uses preempt_count() from preempt.h\n\nSigned-off-by: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8f28e8fa46625310102aea06fac61ba04c8b5b88",
      "tree": "d83eafaeff6128c93b1513d19b3205f3bcf93172",
      "parents": [
        "37053cc84d51a790a6e5c3987665902cdab122a5"
      ],
      "author": {
        "name": "Paolo \u0027Blaisorblade\u0027 Giarrusso",
        "email": "blaisorblade@yahoo.it",
        "time": "Sat May 28 15:52:02 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat May 28 16:46:14 2005 -0700"
      },
      "message": "[PATCH] irq code: Add coherence test for PREEMPT_ACTIVE\n\nAfter porting this fixlet to UML:\n\nhttp://linux.bkbits.net:8080/linux-2.5/cset@41791ab52lfMuF2i3V-eTIGRBbDYKQ\n\n, I\u0027ve also added a warning which should refuse compilation with insane values\nfor PREEMPT_ACTIVE...  maybe we should simply move PREEMPT_ACTIVE out of\narchitectures using GENERIC_IRQS.\n\nSigned-off-by: Paolo \u0027Blaisorblade\u0027 Giarrusso \u003cblaisorblade@yahoo.it\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
