)]}'
{
  "log": [
    {
      "commit": "b7e113dc9d52c4a37d2da6fafe77959f3a28eccf",
      "tree": "51f7ff4350b684be360b9894b77f131933080145",
      "parents": [
        "b04e7bdb984e3b7f62fb7f44146a529f88cc7639"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Sep 22 22:29:06 2007 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat Sep 22 17:15:34 2007 -0700"
      },
      "message": "clockevents: remove the suspend/resume workaround^Wthinko\n\nIn a desparate attempt to fix the suspend/resume problem on Andrews\nVAIO I added a workaround which enforced the broadcast of the oneshot\ntimer on resume. This was actually resolving the problem on the VAIO\nbut was just a stupid workaround, which was not tackling the root\ncause: the assignement of lower idle C-States in the ACPI processor_idle\ncode. The cpuidle patches, which utilize the dynamic tick feature and\ngo faster into deeper C-states exposed the problem again. The correct\nsolution is the previous patch, which prevents lower C-states across\nthe suspend/resume.\n\nRemove the enforcement code, including the conditional broadcast timer\narming, which helped to pamper over the real problem for quite a time.\nThe oneshot broadcast flag for the cpu, which runs the resume code can\nnever be set at the time when this code is executed. It only gets set,\nwhen the CPU is entering a lower idle C-State.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nTested-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Len Brown \u003clenb@kernel.org\u003e\nCc: Venkatesh Pallipadi \u003cvenkatesh.pallipadi@intel.com\u003e\nCc: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "31d9b3938c0459e5e9755ce0a98ac1e24eeff972",
      "tree": "d397929e8d11626128c5c04cae43e5319a7be43a",
      "parents": [
        "07eec6af448d13a6a520d9c6f06f2e87f61b567a"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sun Sep 16 15:36:43 2007 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@chaos.(none)",
        "time": "Sun Sep 16 15:36:43 2007 +0200"
      },
      "message": "clockevents: do not shutdown the oneshot broadcast device\n\nWhen a cpu goes offline it is removed from the broadcast masks. If the\nmask becomes empty the code shuts down the broadcast device. This is\nwrong, because the broadcast device needs to be ready for the online\ncpu going idle (into a c-state, which stops the local apic timer).\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n\n"
    },
    {
      "commit": "07eec6af448d13a6a520d9c6f06f2e87f61b567a",
      "tree": "eabd8fdf97ab76ff3abfa2c2804bb449f393ca01",
      "parents": [
        "729c6ba334771f28a54efd7e3b8f5ab9414ce7bc"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sun Sep 16 15:36:43 2007 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@chaos.(none)",
        "time": "Sun Sep 16 15:36:43 2007 +0200"
      },
      "message": "clockevents: Enforce oneshot broadcast when broadcast mask is set on resume\n\nThe jinxed VAIO refuses to resume without hitting keys on the keyboard\nwhen this is not enforced. It is unclear why the cpu ends up in a lower\nC State without notifying the clock events layer, but enforcing the\noneshot broadcast here is safe.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n\n"
    },
    {
      "commit": "5590a536c0bc403fc73908c66c1c88cbed735ecb",
      "tree": "e07b89628885da86706a2ba0ce9d50cd7f4a0dfc",
      "parents": [
        "18de5bc4c1f1f1fa5e14f354a7603bd6e9d4e3b6"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Jul 21 04:37:35 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat Jul 21 17:49:15 2007 -0700"
      },
      "message": "clockevents: fix device replacement\n\nWhen a device is replaced by a better rated device, then the broadcast\nmode needs to be evaluated again. When the new device has no requirement\nfor broadcasting, then the broadcast bits for the CPU must be cleared.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "18de5bc4c1f1f1fa5e14f354a7603bd6e9d4e3b6",
      "tree": "cb0ff399fb3f368adecf213318e32a499ada6ff9",
      "parents": [
        "93da56efcf8c6a111f0349f6b7651172d4745ca0"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Jul 21 04:37:34 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat Jul 21 17:49:15 2007 -0700"
      },
      "message": "clockevents: fix resume logic\n\nWe need to make sure, that the clockevent devices are resumed, before\nthe tick is resumed. The current resume logic does not guarantee this.\n\nAdd CLOCK_EVT_MODE_RESUME and call the set mode functions of the clock\nevent devices before resuming the tick / oneshot functionality.\n\nFixup the existing users.\n\nThanks to Nigel Cunningham for tracking down a long standing thinko,\nwhich affected the jinxed VAIO.\n\n[akpm@linux-foundation.org: xen build fix]\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "72fcde966252abd17d70e4e216a0411a34523a8f",
      "tree": "26980418ed1a6d6f528ca7681f420d48e2cb7842",
      "parents": [
        "88f18ba028b5939bb6f77bd690e5ad8d01bb24cc"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed May 23 13:57:30 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 23 20:14:11 2007 -0700"
      },
      "message": "Ignore bogus ACPI info for offline CPUs\n\nBooting a SMP kernel with maxcpus\u003d1 on a SMP system leads to a hard hang,\nbecause ACPI ignores the maxcpus setting and sends timer broadcast info for\nthe offline CPUs.  This results in a stuck for ever call to\nsmp_call_function_single() on an offline CPU.\n\nIgnore the bogus information and print a kernel error to remind ACPI\nfolks to fix it.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cd05a1f818073a623455a58e756c5b419fc98db9",
      "tree": "4e148e96f00fe07b0c53a379e812344733e8484a",
      "parents": [
        "24c4ac070adffe4a21f3a8daf4aee7c98fa6c4f9"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Mar 17 00:25:52 2007 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Mar 16 19:35:25 2007 -0700"
      },
      "message": "[PATCH] clockevents: Fix suspend/resume to disk hangs\n\nI finally found a dual core box, which survives suspend/resume without\ncrashing in the middle of nowhere. Sigh, I never figured out from the\ncode and the bug reports what\u0027s going on.\n\nThe observed hangs are caused by a stale state transition of the clock\nevent devices, which keeps the RCU synchronization away from completion,\nwhen the non boot CPU is brought back up.\n\nThe suspend/resume in oneshot mode needs the similar care as the\nperiodic mode during suspend to RAM. My assumption that the state\ntransitions during the different shutdown/bringups of s2disk would go\nthrough the periodic boot phase and then switch over to highres resp.\nnohz mode were simply wrong.\n\nAdd the appropriate suspend / resume handling for the non periodic\nmodes.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6321dd60c76b2e12383bc06046288b15397ed3a0",
      "tree": "4cea63e69ce4f6f5f7f94fc6905063efdde7974e",
      "parents": [
        "c3442e296517aee733d62fc3fe03211598902c7d"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Mar 06 08:25:42 2007 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 06 09:30:24 2007 -0800"
      },
      "message": "[PATCH] Save/restore periodic tick information over suspend/resume\n\nThe programming of periodic tick devices needs to be saved/restored\nacross suspend/resume - otherwise we might end up with a system coming\nup that relies on getting a PIT (or HPET) interrupt, while those devices\ndefault to \u0027no interrupts\u0027 after powerup. (To confuse things it worked\nto a certain degree on some systems because the lapic gets initialized\nas a side-effect of SMP bootup.)\n\nThis suspend / resume thing was dropped unintentionally during the\nlast-minute -mm code reshuffling.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "289f480af87e45f7a6de6ba9b4c061c2e259fe98",
      "tree": "1075cdb8656d7af12558ea2a3dee1fcd1d7a44a7",
      "parents": [
        "82f67cd9fca8c8762c15ba7ed0d5747588c1e221"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Feb 16 01:28:15 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 16 08:13:59 2007 -0800"
      },
      "message": "[PATCH] Add debugging feature /proc/timer_list\n\nadd /proc/timer_list, which prints all currently pending (high-res) timers,\nall clock-event sources and their parameters in a human-readable form.\n\nSample output:\n\nTimer List Version: v0.1\nHRTIMER_MAX_CLOCK_BASES: 2\nnow at 4246046273872 nsecs\n\ncpu: 0\n clock 0:\n  .index:      0\n  .resolution: 1 nsecs\n  .get_time:   ktime_get_real\n  .offset:     1273998312645738432 nsecs\nactive timers:\n clock 1:\n  .index:      1\n  .resolution: 1 nsecs\n  .get_time:   ktime_get\n  .offset:     0 nsecs\nactive timers:\n #0: \u003cf5a90ec8\u003e, hrtimer_sched_tick, hrtimer_stop_sched_tick, swapper/0\n # expires at 4246432689566 nsecs [in 386415694 nsecs]\n #1: \u003cf5a90ec8\u003e, hrtimer_wakeup, do_nanosleep, pcscd/2050\n # expires at 4247018194689 nsecs [in 971920817 nsecs]\n #2: \u003cf5a90ec8\u003e, hrtimer_wakeup, do_nanosleep, irqbalance/1909\n # expires at 4247351358392 nsecs [in 1305084520 nsecs]\n #3: \u003cf5a90ec8\u003e, hrtimer_wakeup, do_nanosleep, crond/2157\n # expires at 4249097614968 nsecs [in 3051341096 nsecs]\n #4: \u003cf5a90ec8\u003e, it_real_fn, do_setitimer, syslogd/1888\n # expires at 4251329900926 nsecs [in 5283627054 nsecs]\n  .expires_next   : 4246432689566 nsecs\n  .hres_active    : 1\n  .check_clocks   : 0\n  .nr_events      : 31306\n  .idle_tick      : 4246020791890 nsecs\n  .tick_stopped   : 1\n  .idle_jiffies   : 986504\n  .idle_calls     : 40700\n  .idle_sleeps    : 36014\n  .idle_entrytime : 4246019418883 nsecs\n  .idle_sleeptime : 4178181972709 nsecs\n\ncpu: 1\n clock 0:\n  .index:      0\n  .resolution: 1 nsecs\n  .get_time:   ktime_get_real\n  .offset:     1273998312645738432 nsecs\nactive timers:\n clock 1:\n  .index:      1\n  .resolution: 1 nsecs\n  .get_time:   ktime_get\n  .offset:     0 nsecs\nactive timers:\n #0: \u003cf5a90ec8\u003e, hrtimer_sched_tick, hrtimer_restart_sched_tick, swapper/0\n # expires at 4246050084568 nsecs [in 3810696 nsecs]\n #1: \u003cf5a90ec8\u003e, hrtimer_wakeup, do_nanosleep, atd/2227\n # expires at 4261010635003 nsecs [in 14964361131 nsecs]\n #2: \u003cf5a90ec8\u003e, hrtimer_wakeup, do_nanosleep, smartd/2332\n # expires at 5469485798970 nsecs [in 1223439525098 nsecs]\n  .expires_next   : 4246050084568 nsecs\n  .hres_active    : 1\n  .check_clocks   : 0\n  .nr_events      : 24043\n  .idle_tick      : 4246046084568 nsecs\n  .tick_stopped   : 0\n  .idle_jiffies   : 986510\n  .idle_calls     : 26360\n  .idle_sleeps    : 22551\n  .idle_entrytime : 4246043874339 nsecs\n  .idle_sleeptime : 4170763761184 nsecs\n\ntick_broadcast_mask: 00000003\nevent_broadcast_mask: 00000001\n\nCPU#0\u0027s local event device:\n\nClock Event Device: lapic\n capabilities:   0000000e\n max_delta_ns:   807385544\n min_delta_ns:   1443\n mult:           44624025\n shift:          32\n set_next_event: lapic_next_event\n set_mode:       lapic_timer_setup\n event_handler:  hrtimer_interrupt\n  .installed:  1\n  .expires:    4246432689566 nsecs\n\nCPU#1\u0027s local event device:\n\nClock Event Device: lapic\n capabilities:   0000000e\n max_delta_ns:   807385544\n min_delta_ns:   1443\n mult:           44624025\n shift:          32\n set_next_event: lapic_next_event\n set_mode:       lapic_timer_setup\n event_handler:  hrtimer_interrupt\n  .installed:  1\n  .expires:    4246050084568 nsecs\n\nClock Event Device: hpet\n capabilities:   00000007\n max_delta_ns:   2147483647\n min_delta_ns:   3352\n mult:           61496110\n shift:          32\n set_next_event: hpet_next_event\n set_mode:       hpet_set_mode\n event_handler:  handle_nextevt_broadcast\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": "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": "f8381cba04ba8173fd5a2b8e5cd8b3290ee13a98",
      "tree": "ad8c9f91ce031a04c62ff75fcd3237fc666f1c2e",
      "parents": [
        "906568c9c668ff994f4078932ec6ae1e3950d1af"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Feb 16 01:28:02 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: broadcast functionality\n\nWith Ingo Molnar \u003cmingo@elte.hu\u003e\n\nAdd broadcast functionality, so per cpu clock event devices can be registered\nas dummy devices or switched from/to broadcast on demand.  The broadcast\nfunction distributes the events via the broadcast function of the clock event\ndevice.  This is primarily designed to replace the switch apic timer to / from\nIPI in power states, where the apic stops.\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"
    }
  ]
}
