)]}'
{
  "log": [
    {
      "commit": "8ef386092d7c2891bd7acefb2a87f878f7e9a0d6",
      "tree": "b149f0c63f9b9bb3f43e82097f1ae5972662288f",
      "parents": [
        "70bc42f90a3f4721c89dbe865e6c95da8565b41c"
      ],
      "author": {
        "name": "Atsushi Nemoto",
        "email": "anemo@mba.ocn.ne.jp",
        "time": "Sat Sep 30 23:28:31 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 01 00:39:27 2006 -0700"
      },
      "message": "[PATCH] kill wall_jiffies\n\nWith 2.6.18-rc4-mm2, now wall_jiffies will always be the same as jiffies.\nSo we can kill wall_jiffies completely.\n\nThis is just a cleanup and logically should not change any real behavior\nexcept for one thing: RTC updating code in (old) ppc and xtensa use a\ncondition \"jiffies - wall_jiffies \u003d\u003d 1\".  This condition is never met so I\nsuppose it is just a bug.  I just remove that condition only instead of\nkill the whole \"if\" block.\n\n[heiko.carstens@de.ibm.com: s390 build fix and cleanup]\nSigned-off-by: Atsushi Nemoto \u003canemo@mba.ocn.ne.jp\u003e\nCc: Andi Kleen \u003cak@muc.de\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Richard Henderson \u003crth@twiddle.net\u003e\nCc: Ivan Kokshaysky \u003cink@jurassic.park.msu.ru\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nCc: Ian Molton \u003cspyro@f2s.com\u003e\nCc: Mikael Starvik \u003cstarvik@axis.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Yoshinori Sato \u003cysato@users.sourceforge.jp\u003e\nCc: Hirokazu Takata \u003ctakata.hirokazu@renesas.com\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Kazumoto Kojima \u003ckkojima@rr.iij4u.or.jp\u003e\nCc: Richard Curnow \u003crc@rc0.org.uk\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Jeff Dike \u003cjdike@addtoit.com\u003e\nCc: Paolo \u0027Blaisorblade\u0027 Giarrusso \u003cblaisorblade@yahoo.it\u003e\nCc: Miles Bader \u003cuclinux-v850@lsi.nec.co.jp\u003e\nCc: Chris Zankel \u003cchris@zankel.net\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nCc: Roman Zippel \u003czippel@linux-m68k.org\u003e\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8f807f8d2137ba728d22820103131038639b68a9",
      "tree": "cea8d4eedbffc17ea9a01808afacb0e02dbbe206",
      "parents": [
        "3d3675cc3d04d7fd4bb11e8c1ea79e5ade4f5e44"
      ],
      "author": {
        "name": "Roman Zippel",
        "email": "zippel@linux-m68k.org",
        "time": "Sat Sep 30 23:28:25 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 01 00:39:26 2006 -0700"
      },
      "message": "[PATCH] ntp: add time_adjust to tick length\n\nThis folds update_ntp_one_tick() into second_overflow() and adds time_adjust\nto the tick length, this makes time_next_adjust unnecessary.  This slightly\nchanges the adjtime() behaviour, instead of applying it to the next tick, it\u0027s\napplied to the next second.\n\nSigned-off-by: Roman Zippel \u003czippel@linux-m68k.org\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b0ee75561beadc4db4d9a899c8ef4a7db50aa0ab",
      "tree": "e50354c74ce17f6ea78dc1d7fac608788de517f3",
      "parents": [
        "4c7ee8de956fc250fe31e2fa91f6da980fabe317"
      ],
      "author": {
        "name": "Roman Zippel",
        "email": "zippel@linux-m68k.org",
        "time": "Sat Sep 30 23:28:22 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 01 00:39:26 2006 -0700"
      },
      "message": "[PATCH] ntp: add ntp_update_frequency\n\nThis introduces ntp_update_frequency() and deinlines ntp_clear() (as it\u0027s not\nperformance critical).  ntp_update_frequency() calculates the base tick length\nusing tick_usec and adds a base adjustment, in case the frequency doesn\u0027t\ndivide evenly by HZ.\n\nSigned-off-by: Roman Zippel \u003czippel@linux-m68k.org\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4c7ee8de956fc250fe31e2fa91f6da980fabe317",
      "tree": "e2d7c207a7ca9f785c256513686f6d7f7234ef93",
      "parents": [
        "c902e0a0102f1095eec4b3511c13c84ca2bc4577"
      ],
      "author": {
        "name": "john stultz",
        "email": "johnstul@us.ibm.com",
        "time": "Sat Sep 30 23:28:22 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 01 00:39:26 2006 -0700"
      },
      "message": "[PATCH] NTP: Move all the NTP related code to ntp.c\n\nMove all the NTP related code to ntp.c\n\n[akpm@osdl.org: cleanups, build fix]\nSigned-off-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: 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": "3171a0305d62e6627a24bff35af4f997e4988a80",
      "tree": "5cf70462490528523172927c75f47970faa46ce9",
      "parents": [
        "27d91e07f9b863fa94491ffafe250580f0c2ce78"
      ],
      "author": {
        "name": "Atsushi Nemoto",
        "email": "anemo@mba.ocn.ne.jp",
        "time": "Fri Sep 29 02:00:32 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 29 09:18:15 2006 -0700"
      },
      "message": "[PATCH] simplify update_times (avoid jiffies/jiffies_64 aliasing problem)\n\nPass ticks to do_timer() and update_times(), and adjust x86_64 and s390\ntimer interrupt handler with this change.\n\nCurrently update_times() calculates ticks by \"jiffies - wall_jiffies\", but\ncallers of do_timer() should know how many ticks to update.  Passing ticks\nget rid of this redundant calculation.  Also there are another redundancy\npointed out by Martin Schwidefsky.\n\nThis cleanup make a barrier added by\n5aee405c662ca644980c184774277fc6d0769a84 needless.  So this patch removes\nit.\n\nAs a bonus, this cleanup make wall_jiffies can be removed easily, since now\nwall_jiffies is always synced with jiffies.  (This patch does not really\nremove wall_jiffies.  It would be another cleanup patch)\n\nSigned-off-by: Atsushi Nemoto \u003canemo@mba.ocn.ne.jp\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Andi Kleen \u003cak@muc.de\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Richard Henderson \u003crth@twiddle.net\u003e\nCc: Ivan Kokshaysky \u003cink@jurassic.park.msu.ru\u003e\nAcked-by: Russell King \u003crmk@arm.linux.org.uk\u003e\nCc: Ian Molton \u003cspyro@f2s.com\u003e\nCc: Mikael Starvik \u003cstarvik@axis.com\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: Yoshinori Sato \u003cysato@users.sourceforge.jp\u003e\nCc: Hirokazu Takata \u003ctakata.hirokazu@renesas.com\u003e\nAcked-by: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Kazumoto Kojima \u003ckkojima@rr.iij4u.or.jp\u003e\nCc: Richard Curnow \u003crc@rc0.org.uk\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Jeff Dike \u003cjdike@addtoit.com\u003e\nCc: Paolo \u0027Blaisorblade\u0027 Giarrusso \u003cblaisorblade@yahoo.it\u003e\nCc: Miles Bader \u003cuclinux-v850@lsi.nec.co.jp\u003e\nCc: Chris Zankel \u003cchris@zankel.net\u003e\nAcked-by: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nCc: 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": "07dccf3344010f9b9df7fe725da7e73bca2992df",
      "tree": "696730ef4e1bf85a24eac84713921746f74c7c10",
      "parents": [
        "6c2d8b5dcad468cb0bdec3368b53383bde51e487"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "mita@miraclelinux.com",
        "time": "Fri Sep 29 02:00:22 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 29 09:18:14 2006 -0700"
      },
      "message": "[PATCH] check return value of cpu_callback\n\nSpawing ksoftirqd, migration, or watchdog, and calling init_timers_cpu()\nmay fail with small memory.  If it happens in initcalls, kernel NULL\npointer dereference happens later.  This patch makes crash happen\nimmediately in such cases.  It seems a bit better than getting kernel NULL\npointer dereference later.\n\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Akinobu Mita \u003cmita@miraclelinux.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "2aae4a108dab8b8bc92270335f6e4b5c146b32ae",
      "tree": "e1bc601a3575d1ea25947564bcaf7abbe08b9d69",
      "parents": [
        "d7ff0dbf45ee8a7c4802ff46844e6e8167b7f360"
      ],
      "author": {
        "name": "Rolf Eike Beer",
        "email": "eike-kernel@sf-tec.de",
        "time": "Fri Sep 29 01:59:46 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 29 09:18:10 2006 -0700"
      },
      "message": "[PATCH] Fix kerneldoc comments in kernel/timer.c\n\nSome of the kerneldoc comments in this file are ignored since the lead-in\nis malformed, using either \"/*\" or \"/***\" instead of \"/**\".\n\n[rdunlap@xenotime.net: kerneldoc fixes]\nSigned-off-by: Rolf Eike Beer \u003ceike-kernel@sf-tec.de\u003e\nAcked-by: Alan Cox \u003calan@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "89e7e374dde1015d69d2d70797ae4053b14fa9db",
      "tree": "c6d819506caeec6680be88fccc4ed8e910a25ac9",
      "parents": [
        "650a898342b3fa21c392c06a2b7010fa19823efa"
      ],
      "author": {
        "name": "Josh Triplett",
        "email": "josht@us.ibm.com",
        "time": "Fri Sep 29 01:59:36 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 29 09:18:09 2006 -0700"
      },
      "message": "[PATCH] timer: add lock annotation to lock_timer_base\n\nlock_timer_base acquires a lock and returns with that lock held.  Add a\nlock annotation to this function so that sparse can check callers for lock\npairing, and so that sparse will not complain about this function since it\nintentionally uses the lock in this manner.\n\nSigned-off-by: Josh Triplett \u003cjosh@freedesktop.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6997a6faaa129a1c91775f7344c8d371a05178ea",
      "tree": "d1dbf57afc7d561620ad1b192ae031fd234b085a",
      "parents": [
        "012c437d03cb299814e58ac8d574f7510f5989a5"
      ],
      "author": {
        "name": "Kirill Korotaev",
        "email": "dev@sw.ru",
        "time": "Sun Aug 13 23:24:23 2006 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Aug 14 12:54:29 2006 -0700"
      },
      "message": "[PATCH] sys_getppid oopses on debug kernel\n\nsys_getppid() optimization can access a freed memory.  On kernels with\nDEBUG_SLAB turned ON, this results in Oops.  As Dave Hansen noted, this\noptimization is also unsafe for memory hotplug.\n\nSo this patch always takes the lock to be safe.\n\n[oleg@tv-sign.ru: simplifications]\nSigned-off-by: Kirill Korotaev \u003cdev@openvz.org\u003e\nCc: \u003cstable@kernel.org\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "51d8c5edd3b166fcc51aba84d78761d578400a7c",
      "tree": "d3cf04b8fd2d7a5a2ba8c0957bd3dbe3839981f5",
      "parents": [
        "bc65ac6a0ffc66c56d1e6893685d7fe87c63cc44"
      ],
      "author": {
        "name": "Josh Triplett",
        "email": "josht@us.ibm.com",
        "time": "Sun Jul 30 03:04:14 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 31 13:28:44 2006 -0700"
      },
      "message": "[PATCH] timer: Fix tvec_bases initializer\n\nkernel/timer.c defines a (per-cpu) pointer to tvec_base_t, but initializes\nit using { \u0026a_tvec_base_t }, which sparse warns about; change this to just\n\u0026a_tvec_base_t.\n\nSigned-off-by: Josh Triplett \u003cjosh@freedesktop.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6ea24f9ad18c65cc179593b5cc2a88cdadf8cc0c",
      "tree": "7a47cc8e18a6f25b4af0560282d8a0315f72241d",
      "parents": [
        "be6b5a3505fa0cd54c3b5959a39293f47c648980"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Sun Jul 30 03:03:38 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 31 13:28:40 2006 -0700"
      },
      "message": "[PATCH] fix bad macro param in timer.c\n\nWe have\n\n#define INDEX(N) (base-\u003etimer_jiffies \u003e\u003e (TVR_BITS + N * TVN_BITS)) \u0026 TVN_MASK\n\nand it\u0027s used via\n\n\tlist \u003d varray[i + 1]-\u003evec + (INDEX(i + 1));\n\nSo, due to underparenthesisation, this INDEX(i+1) is now a ...  (TVR_BITS + i\n+ 1 * TVN_BITS)) ...\n\nSo this bugfix changes behaviour.  It worked before by sheer luck:\n\n  \"If i was anything but 0, it was broken.  But this was only used by\n   s390 and arm.  Since it was for the next interrupt, could that next\n   interrupt be a problem (going into the second cascade)? But it was\n   probably seldom wrong.  That is, this would fail if the next\n   interrupt was in the second cascade, and was wrapped.  Which may\n   never of happened.  Also if it did happen, it would have just missed\n   the interrupt.\n\n   If an interrupt was missed, and no one was there to miss it, was it\n   really missed :-)\"\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8c78f3075dab4be279e283f901f00e33ce44890a",
      "tree": "034d667a713b24d39608b09bd2aafb7983fb6ba5",
      "parents": [
        "cea6a4ba8acfba6f59cc9ed71e0d05cb770b9d9c"
      ],
      "author": {
        "name": "Chandra Seetharaman",
        "email": "sekharan@us.ibm.com",
        "time": "Sun Jul 30 03:03:35 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 31 13:28:39 2006 -0700"
      },
      "message": "[PATCH] cpu hotplug: replace __devinit* with __cpuinit* for cpu notifications\n\nFew of the callback functions and notifier blocks that are associated with cpu\nnotifications incorrectly have __devinit and __devinitdata.  They should be\n__cpuinit and __cpuinitdata instead.\n\nIt makes no functional difference but wastes text area when CONFIG_HOTPLUG is\nenabled and CONFIG_HOTPLUG_CPU is not.\n\nThis patch fixes all those instances.\n\nSigned-off-by: Chandra Seetharaman \u003csekharan@us.ibm.com\u003e\nCc: Ashok Raj \u003cashok.raj@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3e143475c22036847f898d7e76ba337c1d7dbf6f",
      "tree": "4bbd8f322f6a1cd43be409393742967234d23151",
      "parents": [
        "635adb6cd25c8f816c9017a0a0349cd389eafcd3"
      ],
      "author": {
        "name": "john stultz",
        "email": "johnstul@us.ibm.com",
        "time": "Fri Jul 14 00:24:17 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jul 14 21:53:54 2006 -0700"
      },
      "message": "[PATCH] improve timekeeping resume robustness\n\nResolve problems seen w/ APM suspend.\n\nDue to resume initialization ordering, its possible we could get a timer\ninterrupt before the timekeeping resume() function is called.  This patch\nensures we don\u0027t do any timekeeping accounting before we\u0027re fully resumed.\n\n(akpm: fixes the machine-freezes-on-APM-resume bug)\n\nSigned-off-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: 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": "a0009652af385a42f0e0604136f772ead406c78d",
      "tree": "166224a3c3239ae5f7bd07759dd70b9bb2d95e28",
      "parents": [
        "52e92e5788139921352213fa6faf6e30ff1f2f5a"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Fri Jul 14 00:24:06 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jul 14 21:53:52 2006 -0700"
      },
      "message": "[PATCH] del_timer_sync(): add cpu_relax()\n\nRelax the CPU in the del_timer_sync() busywait loop.\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e154ff3d2c5ad313ef0c66e6217502361cad2799",
      "tree": "699be5e589775061d4279a7439ba5b2dc517078b",
      "parents": [
        "32dd66fce3b0ad5857433433b795844cb397608e"
      ],
      "author": {
        "name": "Roman Zippel",
        "email": "zippel@linux-m68k.org",
        "time": "Mon Jul 10 04:44:32 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 10 13:24:18 2006 -0700"
      },
      "message": "[PATCH] adjust clock for lost ticks\n\nA large number of lost ticks can cause an overadjustment of the clock.  To\ncompensate for this we look at the current error and the larger the error\nalready is the more careful we are at adjusting the error.  As small extra\nfix reset the error when the clock is set.\n\nSigned-off-by: Roman Zippel \u003czippel@linux-m68k.org\u003e\nAcked-by: john stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Uwe Bugla \u003cuwe.bugla@gmx.de\u003e\nCc: James Bottomley \u003cJames.Bottomley@SteelEye.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "36c8b586896f60cb91a4fd526233190b34316baf",
      "tree": "003246e1e676de33703daa979b3e3109ca202a89",
      "parents": [
        "48f24c4da1ee7f3f22289cb85e8b8a73e4df4db5"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jul 03 00:25:41 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 03 15:27:11 2006 -0700"
      },
      "message": "[PATCH] sched: cleanup, remove task_t, convert to struct task_struct\n\ncleanup: remove task_t and convert all the uses to struct task_struct. I\nintroduced it for the scheduler anno and it was a mistake.\n\nConversion was mostly scripted, the result was reviewed and all\nsecondary whitespace and style impact (if any) was fixed up by hand.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d730e882a15c38de02b63a063be636b2ff9e9ed1",
      "tree": "89e45dd870d7de3f50b487e87cf0ec1135f912dd",
      "parents": [
        "06825ba3553151eea24206bc53d4fc3de49e0ab1"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jul 03 00:25:10 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 03 15:27:07 2006 -0700"
      },
      "message": "[PATCH] lockdep: annotate timer base locks\n\nSplit the per-CPU timer base locks up into separate lock classes, because they\nare used recursively.\n\nHas no effect on non-lockdep kernels.\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": "e4d919188554a77c798a267e098059bc9aa39726",
      "tree": "bb5e47e09f5d107db44358ad668988f5ae768ade",
      "parents": [
        "9cebb5526833059f327d237a032422c762378b2a"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jul 03 00:24:34 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 03 15:27:02 2006 -0700"
      },
      "message": "[PATCH] lockdep: locking init debugging improvement\n\nLocking init improvement:\n\n - introduce and use __SPIN_LOCK_UNLOCKED for array initializations,\n   to pass in the name string of locks, used by debugging\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": "054cc8a2d808822dadf488a61729e3e550f114c4",
      "tree": "da7e5ecce06d1898263da9b47714b0b0fa972397",
      "parents": [
        "9c7b216d23e820e0e148d5be01bbb5bd2d8378fe"
      ],
      "author": {
        "name": "Chandra Seetharaman",
        "email": "sekharan@us.ibm.com",
        "time": "Tue Jun 27 02:54:07 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jun 27 17:32:41 2006 -0700"
      },
      "message": "[PATCH] cpu hotplug: revert initdata patch submitted for 2.6.17\n\nThis patch reverts notifier_block changes made in 2.6.17\n\nSigned-off-by: Chandra Seetharaman \u003csekharan@us.ibm.com\u003e\nCc: Ashok Raj \u003cashok.raj@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9c7b216d23e820e0e148d5be01bbb5bd2d8378fe",
      "tree": "53e6c1e4870db49b4999b4053862d3f63375773f",
      "parents": [
        "6ac12dfe9c2027cd3c5ed603f11d1bb4f04906fe"
      ],
      "author": {
        "name": "Chandra Seetharaman",
        "email": "sekharan@us.ibm.com",
        "time": "Tue Jun 27 02:54:07 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jun 27 17:32:40 2006 -0700"
      },
      "message": "[PATCH] cpu hotplug: revert init patch submitted for 2.6.17\n\nIn 2.6.17, there was a problem with cpu_notifiers and XFS.  I provided a\nband-aid solution to solve that problem.  In the process, i undid all the\nchanges you both were making to ensure that these notifiers were available\nonly at init time (unless CONFIG_HOTPLUG_CPU is defined).\n\nWe deferred the real fix to 2.6.18.  Here is a set of patches that fixes the\nXFS problem cleanly and makes the cpu notifiers available only at init time\n(unless CONFIG_HOTPLUG_CPU is defined).\n\nIf CONFIG_HOTPLUG_CPU is defined then cpu notifiers are available at run\ntime.\n\nThis patch reverts the notifier_call changes made in 2.6.17\n\nSigned-off-by: Chandra Seetharaman \u003csekharan@us.ibm.com\u003e\nCc: Ashok Raj \u003cashok.raj@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "19923c190e0932bf0ac1e1d06a48f5c3678dd0de",
      "tree": "2a32f5f16b3bbebd74c0f4910493c7f28a70fd84",
      "parents": [
        "6415ce9a922a1446e7ee0ac9b016082232ebe373"
      ],
      "author": {
        "name": "Roman Zippel",
        "email": "zippel@linux-m68k.org",
        "time": "Mon Jun 26 00:25:18 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 09:58:21 2006 -0700"
      },
      "message": "[PATCH] fix and optimize clock source update\n\nThis fixes the clock source updates in update_wall_time() to correctly\ntrack the time coming in via current_tick_length().  Optimize the fast\npaths to be as short as possible to keep the overhead low.\n\nSigned-off-by: Roman Zippel \u003czippel@linux-m68k.org\u003e\nAcked-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a275254975a29c51929ee175b92ac471ac2a0043",
      "tree": "42ec41bf74c0c601f05ed12ff674539f4bf6f505",
      "parents": [
        "5d0cf410e94b1f1ff852c3f210d22cc6c5a27ffa"
      ],
      "author": {
        "name": "john stultz",
        "email": "johnstul@us.ibm.com",
        "time": "Mon Jun 26 00:25:14 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 09:58:21 2006 -0700"
      },
      "message": "[PATCH] time: rename clocksource functions\n\nAs suggested by Roman Zippel, change clocksource functions to use\nclocksource_xyz rather then xyz_clocksource to avoid polluting the\nnamespace.\n\nSigned-off-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: 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": "cf3c769b4b0dd1146da84d5cf045dcfe53bd0f13",
      "tree": "caeb91eff6538ed5910e673a40a9f2bd9a022afa",
      "parents": [
        "5eb6d20533d14a432df714520939a6181e28f099"
      ],
      "author": {
        "name": "john stultz",
        "email": "johnstul@us.ibm.com",
        "time": "Mon Jun 26 00:25:08 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 09:58:20 2006 -0700"
      },
      "message": "[PATCH] Time: Introduce arch generic time accessors\n\nIntroduces clocksource switching code and the arch generic time accessor\nfunctions that use the clocksource infrastructure.\n\nSigned-off-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5eb6d20533d14a432df714520939a6181e28f099",
      "tree": "b032147620a8e213356658783f8037d2f5623b57",
      "parents": [
        "260a42309b31cbc54eb4b6b85649e412bcad053f"
      ],
      "author": {
        "name": "john stultz",
        "email": "johnstul@us.ibm.com",
        "time": "Mon Jun 26 00:25:07 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 09:58:20 2006 -0700"
      },
      "message": "[PATCH] Time: Use clocksource abstraction for NTP adjustments\n\nInstead of incrementing xtime by tick_nsec + ntp adjustments, use the\nclocksource abstraction to increment and scale time.  Using the clocksource\nabstraction allows other clocksources to be used consistently in the face of\nlate or lost ticks, while preserving the existing behavior via the jiffies\nclocksource.\n\nThis removes the need to keep time_phase adjustments as we just use the\ncurrent_tick_length() function as the NTP interface and accumulate time using\nshifted nanoseconds.\n\nThe basics of this design was by Roman Zippel, however it is my own\ninterpretation and implementation, so the credit should go to him and the\nblame to me.\n\nSigned-off-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "260a42309b31cbc54eb4b6b85649e412bcad053f",
      "tree": "51efc7bb51075b0d25d0e8465d3c056e6a57fe16",
      "parents": [
        "ad596171ed635c51a9eef829187af100cbf8dcf7"
      ],
      "author": {
        "name": "john stultz",
        "email": "johnstul@us.ibm.com",
        "time": "Mon Jun 26 00:25:07 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 09:58:20 2006 -0700"
      },
      "message": "[PATCH] Time: Let user request precision from current_tick_length()\n\nChange the current_tick_length() function so it takes an argument which\nspecifies how much precision to return in shifted nanoseconds.  This provides\na simple way to convert between NTPs internal nanoseconds shifted by\n(SHIFT_SCALE - 10) to other shifted nanosecond units that are used by the\nclocksource abstraction.\n\nSigned-off-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ad596171ed635c51a9eef829187af100cbf8dcf7",
      "tree": "24b19bec1b1abd8bd110064226569aa42dde0b3b",
      "parents": [
        "734efb467b31e56c2f9430590a9aa867ecf3eea1"
      ],
      "author": {
        "name": "john stultz",
        "email": "johnstul@us.ibm.com",
        "time": "Mon Jun 26 00:25:06 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 09:58:20 2006 -0700"
      },
      "message": "[PATCH] Time: Use clocksource infrastructure for update_wall_time\n\nModify the update_wall_time function so it increments time using the\nclocksource abstraction instead of jiffies.  Since the only clocksource driver\ncurrently provided is the jiffies clocksource, this should result in no\nfunctional change.  Additionally, a timekeeping_init and timekeeping_resume\nfunction has been added to initialize and maintain some of the new timekeping\nstate.\n\n[hirofumi@mail.parknet.co.jp: fixlet]\nSigned-off-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nSigned-off-by: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "bfe5d834195b3089b8846577311340376cc0f450",
      "tree": "52470de0fe87ff8372700e3472735cd5c14cee9d",
      "parents": [
        "6ceab8a936c302c0cea2bfe55617c76e2f5746fa"
      ],
      "author": {
        "name": "Paul Mackerras",
        "email": "paulus@samba.org",
        "time": "Sun Jun 25 05:47:14 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jun 25 10:01:01 2006 -0700"
      },
      "message": "[PATCH] Define __raw_get_cpu_var and use it\n\nThere are several instances of per_cpu(foo, raw_smp_processor_id()), which\nis semantically equivalent to __get_cpu_var(foo) but without the warning\nthat smp_processor_id() can give if CONFIG_DEBUG_PREEMPT is enabled.  For\nthose architectures with optimized per-cpu implementations, namely ia64,\npowerpc, s390, sparc64 and x86_64, per_cpu() turns into more and slower\ncode than __get_cpu_var(), so it would be preferable to use __get_cpu_var\non those platforms.\n\nThis defines a __raw_get_cpu_var(x) macro which turns into per_cpu(x,\nraw_smp_processor_id()) on architectures that use the generic per-cpu\nimplementation, and turns into __get_cpu_var(x) on the architectures that\nhave an optimized per-cpu implementation.\n\nSigned-off-by: Paul Mackerras \u003cpaulus@samba.org\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3439dd86e34580384d3b58cf8d54a9283cd7a342",
      "tree": "b421244c25d96e83a744576ad543587339e581fb",
      "parents": [
        "626ab0e69d376fa07599af669af8ba92d58e87c1"
      ],
      "author": {
        "name": "Porpoise",
        "email": "porpoise.chiang@gmail.com",
        "time": "Fri Jun 23 02:05:56 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:43:08 2006 -0700"
      },
      "message": "[PATCH] When CONFIG_BASE_SMALL\u003d1, cascade() may enter an infinite loop\n\nWhen CONFIG_BASE_SAMLL\u003d1, cascade() in may enter the infinite loop.\nBecause of CONFIG_BASE_SMALL\u003d1(TVR_BITS\u003d6 and TVN_BITS\u003d4), the list\nbase-\u003etv5 may cascade into base-\u003etv5.  So, the kernel enters the infinite\nloop in the function cascade().\n\nI created a test module to verify this bug, and a patch to fix it.\n\n#include \u003clinux/kernel.h\u003e\n#include \u003clinux/module.h\u003e\n#include \u003clinux/init.h\u003e\n#include \u003clinux/timer.h\u003e\n#if 0\n#include \u003clinux/kdb.h\u003e\n#else\n#define kdb_printf printk\n#endif\n\n#define TVN_BITS (CONFIG_BASE_SMALL ? 4 : 6)\n#define TVR_BITS (CONFIG_BASE_SMALL ? 6 : 8)\n#define TVN_SIZE (1 \u003c\u003c TVN_BITS)\n#define TVR_SIZE (1 \u003c\u003c TVR_BITS)\n#define TVN_MASK (TVN_SIZE - 1)\n#define TVR_MASK (TVR_SIZE - 1)\n\n#define TV_SIZE(N)  (N*TVN_BITS  + TVR_BITS)\n\nstruct timer_list timer0;\nstruct timer_list dummy_timer1;\nstruct timer_list dummy_timer2;\n\nvoid dummy_timer_fun(unsigned long data) {\n}\nunsigned long j\u003d0;\nvoid check_timer_base(unsigned long data)\n{\n        kdb_printf(\"check_timer_base %08x\\n\",jiffies);\n        mod_timer(\u0026timer0,(jiffies \u0026 (~0xFFF)) + 0x1FFF);\n}\n\nint init_module(void)\n{\n        init_timer(\u0026timer0);\n        timer0.data \u003d (unsigned long)0;\n        timer0.function \u003d check_timer_base;\n        mod_timer(\u0026timer0,jiffies+1);\n\n        init_timer(\u0026dummy_timer1);\n        dummy_timer1.data \u003d (unsigned long)0;\n        dummy_timer1.function \u003d dummy_timer_fun;\n\n        init_timer(\u0026dummy_timer2);\n        dummy_timer2.data \u003d (unsigned long)0;\n        dummy_timer2.function \u003d dummy_timer_fun;\n\n        j\u003djiffies;\n        j\u0026\u003d(~((1\u003c\u003cTV_SIZE(3))-1));\n        j+\u003d(1\u003c\u003cTV_SIZE(3));\n        j+\u003d(1\u003c\u003cTV_SIZE(4));\n\n        kdb_printf(\"mod_timer %08x\\n\",j);\n\n        mod_timer(\u0026dummy_timer1, j );\n        mod_timer(\u0026dummy_timer2, j );\n\n        return 0;\n}\n\nvoid cleanup_module()\n{\n        del_timer_sync(\u0026timer0);\n        del_timer_sync(\u0026dummy_timer1);\n        del_timer_sync(\u0026dummy_timer2);\n}\n\n(Cleanups from Oleg)\n\n[oleg@tv-sign.ru: use list_replace_init()]\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "626ab0e69d376fa07599af669af8ba92d58e87c1",
      "tree": "a995e0231e61fab63568bc7bade81dc20c1dae09",
      "parents": [
        "54e73770357142e297c916c7865f5fca7499f69c"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Fri Jun 23 02:05:55 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:43:07 2006 -0700"
      },
      "message": "[PATCH] list: use list_replace_init() instead of list_splice_init()\n\nlist_splice_init(list, head) does unneeded job if it is known that\nlist_empty(head) \u003d\u003d 1.  We can use list_replace_init() instead.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0662b71322e211dba9a4bc0e6fbca7861a2b5a7d",
      "tree": "bffce074929b6a36b7b1e00a485df7a5fe95cc22",
      "parents": [
        "8b1ea24c6cc529f6860c458b1c0872f22e74c950"
      ],
      "author": {
        "name": "Zachary Amsden",
        "email": "zach@vmware.com",
        "time": "Sat May 20 15:00:24 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun May 21 12:59:21 2006 -0700"
      },
      "message": "[PATCH] Fix a NO_IDLE_HZ timer bug\n\nUnder certain timing conditions, a race during boot occurs where timer\nticks are being processed on remote CPUs.  The remote timer ticks can\nincrement jiffies, and if this happens during a window when a timeout is\nvery close to expiring but a local tick has not yet been delivered, you can\nend up with\n\n1) No softirq pending\n2) A local timer wheel which is not synced to jiffies\n3) No high resolution timer active\n4) A local timer which is supposed to fire before the current jiffies value.\n\nIn this circumstance, the comparison in next_timer_interrupt overflows,\nbecause the base of the comparison for high resolution timers is jiffies,\nbut for the softirq timer wheel, it is relative the the current base of the\nwheel (jiffies_base).\n\nSigned-off-by: Zachary Amsden \u003czach@vmware.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "83d722f7e198b034699b1500d98729beff930efd",
      "tree": "7d790a2fd62165373ec7bacde704837288e0bec3",
      "parents": [
        "649bbaa484bcdce94f40a1b97a6a2ded0549e8a2"
      ],
      "author": {
        "name": "Chandra Seetharaman",
        "email": "sekharan@us.ibm.com",
        "time": "Mon Apr 24 19:35:21 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Apr 26 08:30:03 2006 -0700"
      },
      "message": "[PATCH] Remove __devinit and __cpuinit from notifier_call definitions\n\nFew of the notifier_chain_register() callers use __init in the definition\nof notifier_call.  It is incorrect as the function definition should be\navailable after the initializations (they do not unregister them during\ninitializations).\n\nThis patch fixes all such usages to _not_ have the notifier_call __init\nsection.\n\nSigned-off-by: Chandra Seetharaman \u003csekharan@us.ibm.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "649bbaa484bcdce94f40a1b97a6a2ded0549e8a2",
      "tree": "f24f05bf95ae9c4164266da87f36fed61c5c2206",
      "parents": [
        "e7edf9cdeddc0cff125e8e658216efb2ff2b2219"
      ],
      "author": {
        "name": "Chandra Seetharaman",
        "email": "sekharan@us.ibm.com",
        "time": "Mon Apr 24 19:35:15 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Apr 26 08:27:50 2006 -0700"
      },
      "message": "[PATCH] Remove __devinitdata from notifier block definitions\n\nFew of the notifier_chain_register() callers use __devinitdata in the\ndefinition of notifier_block data structure.  It is incorrect as the\ndata structure should be available after the initializations (they do\nnot unregister them during initializations).\n\nThis was leading to an oops when notifier_chain_register() call is\ninvoked for those callback chains after initialization.\n\nThis patch fixes all such usages to _not_ have the notifier_block data\nstructure in the init data section.\n\nSigned-off-by: Chandra Seetharaman \u003csekharan@us.ibm.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ba6edfcd1708da2e665f14eee76e87f39448ec40",
      "tree": "68aaebb5d97c31712567fb459dcd34343a514b78",
      "parents": [
        "5246d0503130fa58904c8beb987fcf93b96d8ab6"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Mon Apr 10 22:53:58 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Apr 11 06:18:40 2006 -0700"
      },
      "message": "[PATCH] timer initialisation fix\n\nWe need the boot CPU\u0027s tvec_bases[] entry to be initialised super-early in\nboot, for early_serial_setup().  That runs within setup_arch(), before even\nper-cpu areas are initialised.\n\nThe patch changes tvec_bases to use compile-time initialisation, and adds a\nseparate array `tvec_base_done\u0027 to keep track of which CPU has had its\ntvec_bases[] entry initialised (because we can no longer use the zeroness of\nthat tvec_bases[] entry to determine whether it has been initialised).\n\nThanks to Eugene Surovegin \u003cebs@ebshome.net\u003e for diagnosing this.\n\nCc: Eugene Surovegin \u003cebs@ebshome.net\u003e\nCc: Jan Beulich \u003cjbeulich@novell.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b20367a6c2a0cd937cb1f0a8cf848f1402fef99c",
      "tree": "8624096baed40f8f89e757b2d170a7b4d1844575",
      "parents": [
        "49c93e84d8b2d602a07c302c7e3cd4fa09095fbb"
      ],
      "author": {
        "name": "Jordan Hargrave",
        "email": "jordan_hargrave@dell.com",
        "time": "Fri Apr 07 19:50:18 2006 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Apr 09 11:53:53 2006 -0700"
      },
      "message": "[PATCH] x86_64: Fix drift with HPET timer enabled\n\nIf the HPET timer is enabled, the clock can drift by ~3 seconds a day.\nThis is due to the HPET timer not being initialized with the correct\nsetting (still using PIT count).\n\nIf HZ changes, this drift can become even more pronounced.\n\nHPET patch initializes tick_nsec with correct tick_nsec settings for\nHPET timer.\n\nVojtech comments:\n\n  \"It\u0027s not entirely correct (it assumes the HPET ticks totally\n   exactly), but it\u0027s significantly better than assuming the PIT error\n   there.\"\n\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9f31252cb61d5bc641cdef8a069a2ca5a77855f2",
      "tree": "b341ce067a5620a4a9650429ce64262888cd43a2",
      "parents": [
        "fda8bd78a15950b9b01a1c1477a9095cb08c27c1"
      ],
      "author": {
        "name": "Eric Sesterhenn",
        "email": "snakebyte@gmx.de",
        "time": "Sun Apr 02 13:45:55 2006 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Sun Apr 02 13:45:55 2006 +0200"
      },
      "message": "BUG_ON() Conversion in kernel/signal.c\n\nthis changes if() BUG(); constructs to BUG_ON() which is\ncleaner, contains unlikely() and can better optimized away.\n\nSigned-off-by: Eric Sesterhenn \u003csnakebyte@gmx.de\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "db1b1fefc2cecbff2e4214062fa8c680cb6e7b7d",
      "tree": "ad8e68882f7c36216e16ab264101c5da96ccd5c9",
      "parents": [
        "3055addadbe9bfb2365006a1c13fd342a8d30d52"
      ],
      "author": {
        "name": "Jack Steiner",
        "email": "steiner@sgi.com",
        "time": "Fri Mar 31 02:31:21 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 31 12:18:58 2006 -0800"
      },
      "message": "[PATCH] sched: reduce overhead of calc_load\n\nCurrently, count_active_tasks() calls both nr_running() \u0026\nnr_interruptible().  Each of these functions does a \"for_each_cpu\" \u0026 reads\nvalues from the runqueue of each cpu.  Although this is not a lot of\ninstructions, each runqueue may be located on different node.  Depending on\nthe architecture, a unique TLB entry may be required to access each\nrunqueue.\n\nSince there may be more runqueues than cpu TLB entries, a scan of all\nrunqueues can trash the TLB.  Each memory reference incurs a TLB miss \u0026\nrefill.\n\nIn addition, the runqueue cacheline that contains nr_running \u0026\nnr_uninterruptible may be evicted from the cache between the two passes.\nThis causes unnecessary cache misses.\n\nCombining nr_running() \u0026 nr_interruptible() into a single function\nsubstantially reduces the TLB \u0026 cache misses on large systems.  This should\nhave no measureable effect on smaller systems.\n\nOn a 128p IA64 system running a memory stress workload, the new function\nreduced the overhead of calc_load() from 605 usec/call to 324 usec/call.\n\nSigned-off-by: Jack Steiner \u003csteiner@sgi.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a2c348fe0117adced11e374329a5ea3f7c43cb41",
      "tree": "95233412196f8093e2e82437afeeadd2e479040c",
      "parents": [
        "3691c5199e8a4be1c7a91b5ab925db5feb866e19"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Fri Mar 31 02:30:31 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 31 12:18:53 2006 -0800"
      },
      "message": "[PATCH] __mod_timer: simplify -\u003ebase changing\n\nSince base and new_base are of the same type now, we can save one \u0027if\u0027\nbranch and simplify the code a bit.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3691c5199e8a4be1c7a91b5ab925db5feb866e19",
      "tree": "025210545818b080df13faa31c9266432579794c",
      "parents": [
        "5ce29646ebe352587e3b3160d599010c5da1b9dd"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Fri Mar 31 02:30:30 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 31 12:18:52 2006 -0800"
      },
      "message": "[PATCH] kill __init_timer_base in favor of boot_tvec_bases\n\nCommit a4a6198b80cf82eb8160603c98da218d1bd5e104:\n\t[PATCH] tvec_bases too large for per-cpu data\n\nintroduced \"struct tvec_t_base_s boot_tvec_bases\" which is visible at\ncompile time.  This means we can kill __init_timer_base and move\ntimer_base_s\u0027s content into tvec_t_base_s.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5ddcfa878d5b10b0ab94251a4229a8a9daaf93ed",
      "tree": "b24bbd7ccb1a8accb0bc2e6f8c0d3b92f0bf66ea",
      "parents": [
        "e4294b3ecd1da9abeb66709c89f71b1ba888b3b1"
      ],
      "author": {
        "name": "Roman Zippel",
        "email": "zippel@linux-m68k.org",
        "time": "Sat Mar 25 03:08:28 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Mar 25 08:23:02 2006 -0800"
      },
      "message": "[PATCH] remove pps support\n\nThis removes the support for pps.  It\u0027s completely unused within the kernel\nand is basically in the way for further cleanups.  It should be easier to\nreadd proper support for it after the rest has been converted to NTP4\n(where the pps mechanisms are quite different from NTP3 anyway).\n\nSigned-off-by: Roman Zippel \u003czippel@linux-m68k.org\u003e\nCc: Adrian Bunk \u003cbunk@stusta.de\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c08b8a49100715b20e6f7c997e992428b5e06078",
      "tree": "014758fb05908a3d49eeadc77f16dfa7585b12ac",
      "parents": [
        "185ae6d7a32721e9062030a9f2d24ed714fa45df"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Mar 25 03:06:33 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Mar 25 08:22:48 2006 -0800"
      },
      "message": "[PATCH] sys_alarm() unsigned signed conversion fixup\n\nalarm() calls the kernel with an unsigend int timeout in seconds.  The\nvalue is stored in the tv_sec field of a struct timeval to setup the\nitimer.  The tv_sec field of struct timeval is of type long, which causes\nthe tv_sec value to be negative on 32 bit machines if seconds \u003e INT_MAX.\n\nBefore the hrtimer merge (pre 2.6.16) such a negative value was converted\nto the maximum jiffies timeout by the timeval_to_jiffies conversion.  It\u0027s\nnot clear whether this was intended or just happened to be done by the\ntimeval_to_jiffies code.\n\nhrtimers expect a timeval in canonical form and treat a negative timeout as\nalready expired.  This breaks the legitimate usage of alarm() with a\ntimeout value \u003e INT_MAX seconds.\n\nFor 32 bit machines it is therefor necessary to limit the internal seconds\nvalue to avoid API breakage.  Instead of doing this in all implementations\nof sys_alarm the duplicated sys_alarm code is moved into a common function\nin itimer.c\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6687a97d4041f996f725902d2990e5de6ef5cbe5",
      "tree": "6ab982091cde7179d94cf592f9c669fd22d93a23",
      "parents": [
        "6a4d11c2abc57ed7ca42041e5f68ae4f7f640a81"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 24 03:18:41 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 24 07:33:30 2006 -0800"
      },
      "message": "[PATCH] timer-irq-driven soft-watchdog, cleanups\n\nMake the softlockup detector purely timer-interrupt driven, removing\nsoftirq-context (timer) dependencies.  This means that if the softlockup\nwatchdog triggers, it has truly observed a longer than 10 seconds\nscheduling delay of a SCHED_FIFO prio 99 task.\n\n(the patch also turns off the softlockup detector during the initial bootup\nphase and does small style fixes)\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a4a6198b80cf82eb8160603c98da218d1bd5e104",
      "tree": "8c59e9088840b6b95e46c00ddda4fd7a134154c2",
      "parents": [
        "c98d8cfbc600af88e9e6cffc84dd342280445760"
      ],
      "author": {
        "name": "Jan Beulich",
        "email": "jbeulich@novell.com",
        "time": "Fri Mar 24 03:15:54 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 24 07:33:21 2006 -0800"
      },
      "message": "[PATCH] tvec_bases too large for per-cpu data\n\nWith internal Xen-enabled kernels we see the kernel\u0027s static per-cpu data\narea exceed the limit of 32k on x86-64, and even native x86-64 kernels get\nfairly close to that limit.  I generally question whether it is reasonable\nto have data structures several kb in size allocated as per-cpu data when\nthe space there is rather limited.\n\nThe biggest arch-independent consumer is tvec_bases (over 4k on 32-bit\narchs, over 8k on 64-bit ones), which now gets converted to use dynamically\nallocated memory instead.\n\nSigned-off-by: Jan Beulich \u003cjbeulich@novell.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "67890d7084085e29c51afa2514036d42643fd3cf",
      "tree": "2562028768e7236ee70a5954aa45d8922fcbf350",
      "parents": [
        "90036ee5938d89638e80f4d0d0700d0f2dbd4a6a"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Thu Mar 16 23:04:00 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 17 07:51:25 2006 -0800"
      },
      "message": "[PATCH] time_interpolator: add __read_mostly\n\nThe pointer to the current time interpolator and the current list of time\ninterpolators are typically only changed during bootup.  Adding\n__read_mostly takes them away from possibly hot cachelines.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5aee405c662ca644980c184774277fc6d0769a84",
      "tree": "e8a74f57b4866e2ab0f6adac5dec174e8dbf17c0",
      "parents": [
        "a615fa83959896f8eac76c235953fb164cd1a9b9"
      ],
      "author": {
        "name": "Atsushi Nemoto",
        "email": "anemo@mba.ocn.ne.jp",
        "time": "Mon Mar 06 15:42:51 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Mar 06 18:40:44 2006 -0800"
      },
      "message": "[PATCH] time: add barrier after updating jiffies_64\n\nAdd a compiler barrier so that we don\u0027t read jiffies before updating\njiffies_64.\n\nSigned-off-by: Atsushi Nemoto \u003canemo@mba.ocn.ne.jp\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "69239749e1ac4f3496906aa4267cb9f61ce52c9c",
      "tree": "c64bc2c254b7fa81b50b11c851fe5c86ecdd83c1",
      "parents": [
        "f7c09bd972b7111b8c69bf57a189571edd4d4a7d"
      ],
      "author": {
        "name": "Tony Lindgren",
        "email": "tony@atomide.com",
        "time": "Mon Mar 06 15:42:45 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Mar 06 18:40:44 2006 -0800"
      },
      "message": "[PATCH] fix next_timer_interrupt() for hrtimer\n\nAlso from Thomas Gleixner \u003ctglx@linutronix.de\u003e\n\nFunction next_timer_interrupt() got broken with a recent patch\n6ba1b91213e81aa92b5cf7539f7d2a94ff54947c as sys_nanosleep() was moved to\nhrtimer.  This broke things as next_timer_interrupt() did not check hrtimer\ntree for next event.\n\nFunction next_timer_interrupt() is needed with dyntick (CONFIG_NO_IDLE_HZ,\nVST) implementations, as the system can be in idle when next hrtimer event\nwas supposed to happen.  At least ARM and S390 currently use\nnext_timer_interrupt().\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "685db65e422bfa523b8a9dacb5a658b42b254f05",
      "tree": "0d7eba52e7c9584a2e3b4f2cd1842bf55e67c2d0",
      "parents": [
        "7f99f06f01aa9460b5a18f1b0e0900c90d0a84fc"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@engr.sgi.com",
        "time": "Thu Mar 02 02:54:35 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Mar 02 08:33:07 2006 -0800"
      },
      "message": "[PATCH] time_interpolator: Use readq_relaxed() instead of readq().\n\nOn some platforms readq performs additional work to make sure I/O is done\nin a coherent way.  This is not needed for time retrieval as done by the\ntime interpolator.  So we can use readq_relaxed instead which will improve\nperformance.\n\nIt affects sparc64 and ia64 only.  Apparently it makes a significant\ndifference on ia64.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "726c14bf499e91e7ede4f1728830aba05c675061",
      "tree": "c9dfbc8f8fe7facc58e07e5699b6d97c41bd2b8e",
      "parents": [
        "dd942ae331425812930cd01766178b7e28e65f2d"
      ],
      "author": {
        "name": "Paul Mackerras",
        "email": "paulus@samba.org",
        "time": "Fri Feb 17 10:30:23 2006 +1100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Feb 17 08:24:29 2006 -0800"
      },
      "message": "[PATCH] Provide an interface for getting the current tick length\n\nThis provides an interface for arch code to find out how many\nnanoseconds are going to be added on to xtime by the next call to\ndo_timer.  The value returned is a fixed-point number in 52.12 format\nin nanoseconds.  The reason for this format is that it gives the\nfull precision that the timekeeping code is using internally.\n\nThe motivation for this is to fix a problem that has arisen on 32-bit\npowerpc in that the value returned by do_gettimeofday drifts apart\nfrom xtime if NTP is being used.  PowerPC is now using a lockless\ndo_gettimeofday based on reading the timebase register and performing\nsome simple arithmetic.  (This method of getting the time is also\nexported to userspace via the VDSO.)  However, the factor and offset\nit uses were calculated based on the nominal tick length and weren\u0027t\nbeing adjusted when NTP varied the tick length.\n\nNote that 64-bit powerpc has had the lockless do_gettimeofday for a\nlong time now.  It also had an extremely hairy routine that got called\nfrom the 32-bit compat routine for adjtimex, which adjusted the\nfactor and offset according to what it thought the timekeeping code\nwas going to do.  Not only was this only called if a 32-bit task did\nadjtimex (i.e. not if a 64-bit task did adjtimex), it was also\nduplicating computations from kernel/timer.c and it wasn\u0027t clear that\nit was (still) correct.\n\nThe simple solution is to ask the timekeeping code how long the\ncurrent jiffy will be on each timer interrupt, after calling\ndo_timer.  If this jiffy will be a different length from the last one,\nwe then need to compute new values for the factor and offset used in\nthe lockless do_gettimeofday.  In this way we can keep xtime and\ndo_gettimeofday in sync, even when NTP is varying the tick length.\n\nNote that when adjtimex varies the tick length, it almost always\nintroduces the variation from the next tick on.  The only case I could\nsee where adjtimex would vary the length of the current tick is when\nan old-style adjtime adjustment is being cancelled.  (It\u0027s not clear\nto me why the adjustment has to be cancelled immediately rather than\nfrom the next tick on.)  Thus I don\u0027t see any real need for a hook in\nadjtimex; the rare case of an old-style adjustment being cancelled can\nbe fixed up at the next tick.\n\nSigned-off-by: Paul Mackerras \u003cpaulus@samba.org\u003e\nAcked-by: john stultz \u003cjohnstul@us.ibm.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "53f087febfd12e74ba9f1082e71e9a45adc039ad",
      "tree": "8908ff3ecc3c97fb536c616df0f9d46356c4739f",
      "parents": [
        "76edc6051e02186fe664ab880447e2d1f96fd884"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Feb 01 05:56:41 2006 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Feb 07 20:57:42 2006 -0500"
      },
      "message": "[PATCH] timer.c NULL noise removal\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6ba1b91213e81aa92b5cf7539f7d2a94ff54947c",
      "tree": "0d461bf7c7f444a80d09f09501e9fb378a78220f",
      "parents": [
        "10c94ec16dd187f8d8dfdbb088e98330c05bf03c"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Jan 09 20:52:36 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jan 10 08:01:38 2006 -0800"
      },
      "message": "[PATCH] hrtimer: switch sys_nanosleep to hrtimer\n\nconvert sys_nanosleep() to use hrtimer_nanosleep()\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c0a3132963db68f1fbbd0e316b73de100fee3f08",
      "tree": "cdd76aacf0ca7ae7780696a06bf9643f8b245ba1",
      "parents": [
        "97fc79f97b1111c80010d34ee66312b88f531e41"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Jan 09 20:52:32 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jan 10 08:01:37 2006 -0800"
      },
      "message": "[PATCH] hrtimer: hrtimer core code\n\nhrtimer subsystem core.  It is initialized at bootup and expired by the timer\ninterrupt, but is otherwise not utilized by any other subsystem yet.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "97a41e26124330e41aa10ef88cd1711bc3d17460",
      "tree": "1546db361efaf926c7a970e3ec6044ea8d4b6f4c",
      "parents": [
        "b7b4d7a4666454b40b45a853bd1d296af37a85f0"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Sun Jan 08 01:02:17 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jan 08 20:13:48 2006 -0800"
      },
      "message": "[PATCH] kernel/: small cleanups\n\nThis patch contains the following cleanups:\n- make needlessly global functions static\n- every file should include the headers containing the prototypes for\n  it\u0027s global functions\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nAcked-by: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ecea8d19c9f0ebd62ddaa07fc919ff4e4b820d99",
      "tree": "189de0b898157618fbf08ec6e4adc8e5cce71ec3",
      "parents": [
        "371e8c25b65f2fe7942868a8a67129d571e94076"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sun Oct 30 15:03:00 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 30 17:37:25 2005 -0800"
      },
      "message": "[PATCH] jiffies_64 cleanup\n\nDefine jiffies_64 in kernel/timer.c rather than having 24 duplicated\ndefines in each architecture.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "dfc4f94d2ff95fc92127d3e512c1df7cab274fb8",
      "tree": "c9ed4d74147a3674816f59cf9fbeb69e2cb6afe4",
      "parents": [
        "89ada67917f516212452443a56b9fd3b65b74dc7"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Sun Oct 30 15:02:03 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 30 17:37:18 2005 -0800"
      },
      "message": "[PATCH] remove timer debug field\n\nRemove timer_list.magic and associated debugging code.\n\nI originally added this when a spinlock was added to timer_list - this meant\nthat an all-zeroes timer became illegal and init_timer() was required.\n\nThat spinlock isn\u0027t even there any more, although timer.base must now be\ninitialised.\n\nI\u0027ll keep this debugging code in -mm.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a5a0d52c7305cb3629ef0cc9e2e0e106869e1907",
      "tree": "11be2b00bc455e8f0dbe280b64932bdb7369bde0",
      "parents": [
        "1bb34a412750291e4e5e9f1d0fe7ae1b7e976098"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Sun Oct 30 15:01:42 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 30 17:37:18 2005 -0800"
      },
      "message": "[PATCH] ntp whitespace cleanup\n\nFix bizarre 4-space coding style in the NTP code.\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1bb34a412750291e4e5e9f1d0fe7ae1b7e976098",
      "tree": "00d481a2ff4302f444fbf7c31e5e661f79dc85a9",
      "parents": [
        "9c0cbd54ce0397017a823484f9a8054ab369b8a2"
      ],
      "author": {
        "name": "john stultz",
        "email": "johnstul@us.ibm.com",
        "time": "Sun Oct 30 15:01:42 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 30 17:37:18 2005 -0800"
      },
      "message": "[PATCH] NTP shift_right cleanup\n\nCreate a macro shift_right() that avoids the numerous ugly conditionals in the\nNTP code that look like:\n\n        if(a \u003c 0)\n                b \u003d -(-a \u003e\u003e shift);\n        else\n                b \u003d a \u003e\u003e shift;\n\nReplacing it with:\n\n        b \u003d shift_right(a, shift);\n\nThis should have zero effect on the logic, however it should probably have\na bit of testing just to be sure.\n\nAlso replace open-coded min/max with the macros.\n\nSigned-off-by : John Stultz \u003cjohnstul@us.ibm.com\u003e\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a8db2db1e6a8d323d87a67c5391d48fe2b97faf5",
      "tree": "0aa5fb9f80e4a476e097337104a3e1f94f39a96e",
      "parents": [
        "9e4e23bccb127fac109e765dfb7f9372661cb415"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Sun Oct 30 15:01:38 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 30 17:37:17 2005 -0800"
      },
      "message": "[PATCH] introduce setup_timer() helper\n\nEvery user of init_timer() also needs to initialize -\u003efunction and -\u003edata\nfields.  This patch adds a simple setup_timer() helper for that.\n\nThe schedule_timeout() is patched as an example of usage.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4b8f573b5db02a3017afbba49026a6aef480174f",
      "tree": "4abf19125526809d4be44cb83373f85605854575",
      "parents": [
        "930fc45a49ddebe7555cc5c837d82b9c27e65ff4"
      ],
      "author": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Sat Oct 29 18:15:42 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:35 2005 -0700"
      },
      "message": "[PATCH] TIMERS: add missing compensation for HZ \u003d\u003d 250\n\nAdd missing compensation for (HZ \u003d\u003d 250) !\u003d (1 \u003c\u003c SHIFT_HZ) in\nsecond_overflow().\n\nSigned-off-by: YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8a1c17574a01555e5d3fdf56d8d72969904c91ca",
      "tree": "9855d1048c2547ac9292c5e4c09c2a88f3b3e4fb",
      "parents": [
        "498d0c5711094b0e1fd93f5355d270ccebdec706"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Tue Sep 13 01:25:15 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Sep 13 08:22:29 2005 -0700"
      },
      "message": "[PATCH] schedule_timeout_[un]interruptible() speedup\n\nThese functions don\u0027t need schedule_timeout()\u0027s barrier.\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "75bcc8c5e1de78616b04ef9f317a293a7c1c163c",
      "tree": "fabdfd7fbc46baae5638b41648444d805e14eb3c",
      "parents": [
        "041e0e3b1970c508dc9a95b7dd9dc86271a7d7ac"
      ],
      "author": {
        "name": "Nishanth Aravamudan",
        "email": "nacc@us.ibm.com",
        "time": "Sat Sep 10 00:27:24 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Sep 10 10:06:37 2005 -0700"
      },
      "message": "[PATCH] kernel: fix-up schedule_timeout() usage\n\nUse schedule_timeout_{,un}interruptible() instead of\nset_current_state()/schedule_timeout() to reduce kernel size.\n\nSigned-off-by: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "64ed93a268bc18fa6f72f61420d0e0022c5e38d1",
      "tree": "1332ce542510b88014767f3536d9150710a2f3f9",
      "parents": [
        "672289e9faa56acd4e39ad866ea258b7be7c99a6"
      ],
      "author": {
        "name": "Nishanth Aravamudan",
        "email": "nacc@us.ibm.com",
        "time": "Sat Sep 10 00:27:21 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Sep 10 10:06:36 2005 -0700"
      },
      "message": "[PATCH] add schedule_timeout_{,un}interruptible() interfaces\n\nAdd schedule_timeout_{,un}interruptible() interfaces so that\nschedule_timeout() callers don\u0027t have to worry about forgetting to add the\nset_current_state() call beforehand.\n\nSigned-off-by: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "486d46aefe7ded0d343e306be740edd972aff740",
      "tree": "e750143e578503b77a66eff21595b16730506802",
      "parents": [
        "9f4a6dce10941380ad7365cc9b0ef038ed56cbf9"
      ],
      "author": {
        "name": "Alex Williamson",
        "email": "alex.williamson@hp.com",
        "time": "Tue Sep 06 15:17:04 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 07 16:57:24 2005 -0700"
      },
      "message": "[PATCH] optimize writer path in time_interpolator_get_counter()\n\n      Christoph Lameter \u003cclameter@engr.sgi.com\u003e\n\nWhen using a time interpolator that is susceptible to jitter there\u0027s\npotentially contention over a cmpxchg used to prevent time from going\nbackwards.  This is unnecessary when the caller holds the xtime write\nseqlock as all readers will be blocked from returning until the write is\ncomplete.  We can therefore allow writers to insert a new value and exit\nrather than fight with CPUs who only hold a reader lock.\n\nSigned-off-by: Alex Williamson \u003calex.williamson@hp.com\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8446f1d391f3d27e6bf9c43d4cbcdac0ca720417",
      "tree": "738853af877c9a391b4f2db467e7f90c6e2e38ed",
      "parents": [
        "4732efbeb997189d9f9b04708dc26bf8613ed721"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Sep 06 15:16:27 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 07 16:57:17 2005 -0700"
      },
      "message": "[PATCH] detect soft lockups\n\nThis patch adds a new kernel debug feature: CONFIG_DETECT_SOFTLOCKUP.\n\nWhen enabled then per-CPU watchdog threads are started, which try to run\nonce per second.  If they get delayed for more than 10 seconds then a\ncallback from the timer interrupt detects this condition and prints out a\nwarning message and a stack dump (once per lockup incident).  The feature\nis otherwise non-intrusive, it doesnt try to unlock the box in any way, it\nonly gets the debug info out, automatically, and on all CPUs affected by\nthe lockup.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nSigned-Off-By: Matthias Urlichs \u003csmurf@smurf.noris.de\u003e\nSigned-off-by: Richard Purdie \u003crpurdie@rpsys.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4c5640cb5f5a6fd780d99397eca028b575cb1206",
      "tree": "3f5eb4b4390ea71031eb2c93261052e6698cbdc1",
      "parents": [
        "3f024c1a4bc8ef9a149879351ce8b3aa749e0c2f"
      ],
      "author": {
        "name": "David Meybohm",
        "email": "dmeybohmlkml@bellsouth.net",
        "time": "Mon Aug 22 13:11:08 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Aug 23 11:44:29 2005 -0700"
      },
      "message": "[PATCH] preempt race in getppid\n\nWith CONFIG_PREEMPT \u0026\u0026 !CONFIG_SMP, it\u0027s possible for sys_getppid to\nreturn a bogus value if the parent\u0027s task_struct gets reallocated after\ncurrent-\u003egroup_leader-\u003ereal_parent is read:\n\n        asmlinkage long sys_getppid(void)\n        {\n                int pid;\n                struct task_struct *me \u003d current;\n                struct task_struct *parent;\n\n                parent \u003d me-\u003egroup_leader-\u003ereal_parent;\nRACE HERE \u003d\u003e    for (;;) {\n                        pid \u003d parent-\u003etgid;\n        #ifdef CONFIG_SMP\n        {\n                        struct task_struct *old \u003d parent;\n\n                        /*\n                         * Make sure we read the pid before re-reading the\n                         * parent pointer:\n                         */\n                        smp_rmb();\n                        parent \u003d me-\u003egroup_leader-\u003ereal_parent;\n                        if (old !\u003d parent)\n                                continue;\n        }\n        #endif\n                        break;\n                }\n                return pid;\n        }\n\nIf the process gets preempted at the indicated point, the parent process\ncan go ahead and call exit() and then get wait()\u0027d on to reap its\ntask_struct. When the preempted process gets resumed, it will not do any\nfurther checks of the parent pointer on !CONFIG_SMP: it will read the\nbad pid and return.\n\nSo, the same algorithm used when SMP is enabled should be used when\npreempt is enabled, which will recheck -\u003ereal_parent in this case.\n\nSigned-off-by: David Meybohm \u003cdmeybohmlkml@bellsouth.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "96ec3efdcbaea4f403f2a5f1204edbf903a01961",
      "tree": "e76ac60d389be7e7ed40e5bf2cd63f46b84b7e87",
      "parents": [
        "b20f3ae5f0efe1812d2a1278e2127a335884d445"
      ],
      "author": {
        "name": "Domen Puncer",
        "email": "domen@coderock.org",
        "time": "Sat Jun 25 14:58:43 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Jun 25 16:24:58 2005 -0700"
      },
      "message": "[PATCH] kernel/timer: fix msleep_interruptible() comment\n\nThe comment for msleep_interruptible() is wrong, as it will ignore\nwait-queue events, but will wake up early for signals.\n\nSigned-off-by: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nSigned-off-by: Domen Puncer \u003cdomen@coderock.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "be5b4fbd017d12e0d09ea0528a5839ce2ed2c8c8",
      "tree": "212a43003d1c4265718f53502547f36acbec143d",
      "parents": [
        "dcd497f99a1ef29a7c5e76142965be77e9dacabd"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "juhl-lkml@dif.dk",
        "time": "Thu Jun 23 00:09:09 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:19 2005 -0700"
      },
      "message": "[PATCH] preempt_count is int - remove cast and don\u0027t assign to unsigned type\n\nIn kernel/sched.c the return value from preempt_count() is cast to an int.\nThat made sense when preempt_count was defined as different types on is not\nneeded and should go away.  The patch removes the cast.\n\nIn kernel/timer.c the return value from preempt_count() is assigned to a\nvariable of type u32 and then that unsigned value is later compared to\npreempt_count().  Since preempt_count() returns an int, an int is what\nshould be used to store its return value.  Storing the result in an\nunsigned 32bit integer made a tiny bit of sense back when preempt_count was\ndifferent types on different archs, but no more - let\u0027s not play signed vs\nunsigned comparison games when we don\u0027t have to.  The patch modifies the\ncode to use an int to hold the value.  While I was around that bit of code\nI also made two changes to a nearby (related) printk() - I modified it to\nspecify the loglevel explicitly and also broke the line into a few pieces\nto avoid it being longer than 80 chars and clarified the text a bit.\n\nSigned-off-by: Jesper Juhl \u003cjuhl-lkml@dif.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "fd450b7318b75343fd76b3d95416853e34e72c95",
      "tree": "e747348f7d3c9f1615963dde4f2c8baaf842415f",
      "parents": [
        "55c888d6d09a0df236adfaf8ccf06ff5d0646775"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Thu Jun 23 00:08:59 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:16 2005 -0700"
      },
      "message": "[PATCH] timers: introduce try_to_del_timer_sync()\n\nThis patch splits del_timer_sync() into 2 functions.  The new one,\ntry_to_del_timer_sync(), returns -1 when it hits executing timer.\n\nIt can be used in interrupt context, or when the caller hold locks which\ncan prevent completion of the timer\u0027s handler.\n\nNOTE.  Currently it can\u0027t be used in interrupt context in UP case, because\n-\u003erunning_timer is used only with CONFIG_SMP.\n\nShould the need arise, it is possible to kill #ifdef CONFIG_SMP in\nset_running_timer(), it is cheap.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "55c888d6d09a0df236adfaf8ccf06ff5d0646775",
      "tree": "deb9434abe3cf7c9b714ccb267ef5d943a847dfe",
      "parents": [
        "bdd646a44672115c986593956aa4ef105485a184"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Thu Jun 23 00:08:56 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:16 2005 -0700"
      },
      "message": "[PATCH] timers fixes/improvements\n\nThis patch tries to solve following problems:\n\n1. del_timer_sync() is racy. The timer can be fired again after\n   del_timer_sync have checked all cpus and before it will recheck\n   timer_pending().\n\n2. It has scalability problems. All cpus are scanned to determine\n   if the timer is running on that cpu.\n\n   With this patch del_timer_sync is O(1) and no slower than plain\n   del_timer(pending_timer), unless it has to actually wait for\n   completion of the currently running timer.\n\n   The only restriction is that the recurring timer should not use\n   add_timer_on().\n\n3. The timers are not serialized wrt to itself.\n\n   If CPU_0 does mod_timer(jiffies+1) while the timer is currently\n   running on CPU 1, it is quite possible that local interrupt on\n   CPU_0 will start that timer before it finished on CPU_1.\n\n4. The timers locking is suboptimal. __mod_timer() takes 3 locks\n   at once and still requires wmb() in del_timer/run_timers.\n\n   The new implementation takes 2 locks sequentially and does not\n   need memory barriers.\n\nCurrently -\u003ebase !\u003d NULL means that the timer is pending. In that case\n-\u003ebase.lock is used to lock the timer. __mod_timer also takes timer-\u003elock\nbecause -\u003ebase can be \u003d\u003d NULL.\n\nThis patch uses timer-\u003eentry.next !\u003d NULL as indication that the timer is\npending. So it does __list_del(), entry-\u003enext \u003d NULL instead of list_del()\nwhen the timer is deleted.\n\nThe -\u003ebase field is used for hashed locking only, it is initialized\nin init_timer() which sets -\u003ebase \u003d per_cpu(tvec_bases). When the\ntvec_bases.lock is locked, it means that all timers which are tied\nto this base via timer-\u003ebase are locked, and the base itself is locked\ntoo.\n\nSo __run_timers/migrate_timers can safely modify all timers which could\nbe found on -\u003etvX lists (pending timers).\n\nWhen the timer\u0027s base is locked, and the timer removed from -\u003eentry list\n(which means that _run_timers/migrate_timers can\u0027t see this timer), it is\npossible to set timer-\u003ebase \u003d NULL and drop the lock: the timer remains\nlocked.\n\nThis patch adds lock_timer_base() helper, which waits for -\u003ebase !\u003d NULL,\nlocks the -\u003ebase, and checks it is still the same.\n\n__mod_timer() schedules the timer on the local CPU and changes it\u0027s base.\nHowever, it does not lock both old and new bases at once. It locks the\ntimer via lock_timer_base(), deletes the timer, sets -\u003ebase \u003d NULL, and\nunlocks old base. Then __mod_timer() locks new_base, sets -\u003ebase \u003d new_base,\nand adds this timer. This simplifies the code, because AB-BA deadlock is not\npossible. __mod_timer() also ensures that the timer\u0027s base is not changed\nwhile the timer\u0027s handler is running on the old base.\n\n__run_timers(), del_timer() do not change -\u003ebase anymore, they only clear\npending flag.\n\nSo del_timer_sync() can test timer-\u003ebase-\u003erunning_timer \u003d\u003d timer to detect\nwhether it is running or not.\n\nWe don\u0027t need timer_list-\u003elock anymore, this patch kills it.\n\nWe also don\u0027t need barriers. del_timer() and __run_timers() used smp_wmb()\nbefore clearing timer\u0027s pending flag. It was needed because __mod_timer()\ndid not lock old_base if the timer is not pending, so __mod_timer()-\u003elist_add()\ncould race with del_timer()-\u003elist_del(). With this patch these functions are\nserialized through base-\u003elock.\n\nOne problem. TIMER_INITIALIZER can\u0027t use per_cpu(tvec_bases). So this patch\nadds global\n\n        struct timer_base_s {\n                spinlock_t lock;\n                struct timer_list *running_timer;\n        } __init_timer_base;\n\nwhich is used by TIMER_INITIALIZER. The corresponding fields in tvec_t_base_s\nstruct are replaced by struct timer_base_s t_base.\n\nIt is indeed ugly. But this can\u0027t have scalability problems. The global\n__init_timer_base.lock is used only when __mod_timer() is called for the first\ntime AND the timer was compile time initialized. After that the timer migrates\nto the local CPU.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Renaud Lienhart \u003crenaud.lienhart@free.fr\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d59dd4620fb8d6422555a9e2b82a707718e68327",
      "tree": "78205657d24efcaa3f8314064951ac3814ed95a7",
      "parents": [
        "0d8d4d42f2d00eb65262b49f4edd4cf7ef4eb6fc"
      ],
      "author": {
        "name": "akpm@osdl.org",
        "email": "akpm@osdl.org",
        "time": "Sun May 01 08:58:47 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sun May 01 08:58:47 2005 -0700"
      },
      "message": "[PATCH] use smp_mb/wmb/rmb where possible\n\nReplace a number of memory barriers with smp_ variants.  This means we won\u0027t\ntake the unnecessary hit on UP machines.\n\nSigned-off-by: Anton Blanchard \u003canton@samba.org\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"
    }
  ]
}
