<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/kernel/hrtimer.c, branch v2.6.28</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/
</subtitle>
<id>https://git.shady.money/linux/atom?h=v2.6.28</id>
<link rel='self' href='https://git.shady.money/linux/atom?h=v2.6.28'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/'/>
<updated>2008-11-12T08:54:40Z</updated>
<entry>
<title>hrtimer: clean up unused callback modes</title>
<updated>2008-11-12T08:54:40Z</updated>
<author>
<name>Peter Zijlstra</name>
<email>a.p.zijlstra@chello.nl</email>
</author>
<published>2008-11-12T08:36:35Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=621a0d5207c18012cb39932f2d9830a11a6cb03d'/>
<id>urn:sha1:621a0d5207c18012cb39932f2d9830a11a6cb03d</id>
<content type='text'>
Impact: cleanup

git grep HRTIMER_CB_IRQSAFE revealed half the callback modes are actually
unused.

Signed-off-by: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
</entry>
<entry>
<title>timers: handle HRTIMER_CB_IRQSAFE_UNLOCKED correctly from softirq context</title>
<updated>2008-11-11T09:46:42Z</updated>
<author>
<name>Gautham R Shenoy</name>
<email>ego@in.ibm.com</email>
</author>
<published>2008-10-25T04:52:38Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=5d5254f0d3b9bebc47d97e357374c0ad0c291a7d'/>
<id>urn:sha1:5d5254f0d3b9bebc47d97e357374c0ad0c291a7d</id>
<content type='text'>
Impact: fix incorrect locking triggered during hotplug-intense stress-tests

While migrating the the CB_IRQSAFE_UNLOCKED timers during a cpu-offline,
we queue them on the cb_pending list, so that they won't go
stale.

Thus, when the callbacks of the timers run from the softirq context,
they could run into potential deadlocks, since these callbacks
assume that they're running with irq's disabled, thereby annoying
lockdep!

Fix this by emulating hardirq context while running these callbacks from
the hrtimer softirq.

=================================
[ INFO: inconsistent lock state ]
2.6.27 #2
--------------------------------
inconsistent {in-hardirq-W} -&gt; {hardirq-on-W} usage.
ksoftirqd/0/4 [HC0[0]:SC1[1]:HE1:SE0] takes:
 (&amp;rq-&gt;lock){++..}, at: [&lt;c011db84&gt;] sched_rt_period_timer+0x9e/0x1fc
{in-hardirq-W} state was registered at:
  [&lt;c014103c&gt;] __lock_acquire+0x549/0x121e
  [&lt;c0107890&gt;] native_sched_clock+0x88/0x99
  [&lt;c013aa12&gt;] clocksource_get_next+0x39/0x3f
  [&lt;c0139abc&gt;] update_wall_time+0x616/0x7df
  [&lt;c0141d6b&gt;] lock_acquire+0x5a/0x74
  [&lt;c0121724&gt;] scheduler_tick+0x3a/0x18d
  [&lt;c047ed45&gt;] _spin_lock+0x1c/0x45
  [&lt;c0121724&gt;] scheduler_tick+0x3a/0x18d
  [&lt;c0121724&gt;] scheduler_tick+0x3a/0x18d
  [&lt;c012c436&gt;] update_process_times+0x3a/0x44
  [&lt;c013c044&gt;] tick_periodic+0x63/0x6d
  [&lt;c013c062&gt;] tick_handle_periodic+0x14/0x5e
  [&lt;c010568c&gt;] timer_interrupt+0x44/0x4a
  [&lt;c0150c9f&gt;] handle_IRQ_event+0x13/0x3d
  [&lt;c0151c14&gt;] handle_level_irq+0x79/0xbd
  [&lt;c0105634&gt;] do_IRQ+0x69/0x7d
  [&lt;c01041e4&gt;] common_interrupt+0x28/0x30
  [&lt;c047007b&gt;] aac_probe_one+0x1a3/0x3f3
  [&lt;c047ec2d&gt;] _spin_unlock_irqrestore+0x36/0x39
  [&lt;c01512b4&gt;] setup_irq+0x1be/0x1f9
  [&lt;c065d70b&gt;] start_kernel+0x259/0x2c5
  [&lt;ffffffff&gt;] 0xffffffff
irq event stamp: 50102
hardirqs last  enabled at (50102): [&lt;c047ebf4&gt;] _spin_unlock_irq+0x20/0x23
hardirqs last disabled at (50101): [&lt;c047edc2&gt;] _spin_lock_irq+0xa/0x4b
softirqs last  enabled at (50088): [&lt;c0128ba6&gt;] do_softirq+0x37/0x4d
softirqs last disabled at (50099): [&lt;c0128ba6&gt;] do_softirq+0x37/0x4d

other info that might help us debug this:
no locks held by ksoftirqd/0/4.

stack backtrace:
Pid: 4, comm: ksoftirqd/0 Not tainted 2.6.27 #2
 [&lt;c013f6cb&gt;] print_usage_bug+0x13e/0x147
 [&lt;c013fef5&gt;] mark_lock+0x493/0x797
 [&lt;c01410b1&gt;] __lock_acquire+0x5be/0x121e
 [&lt;c0141d6b&gt;] lock_acquire+0x5a/0x74
 [&lt;c011db84&gt;] sched_rt_period_timer+0x9e/0x1fc
 [&lt;c047ed45&gt;] _spin_lock+0x1c/0x45
 [&lt;c011db84&gt;] sched_rt_period_timer+0x9e/0x1fc
 [&lt;c011db84&gt;] sched_rt_period_timer+0x9e/0x1fc
 [&lt;c01210fd&gt;] finish_task_switch+0x41/0xbd
 [&lt;c0107890&gt;] native_sched_clock+0x88/0x99
 [&lt;c011dae6&gt;] sched_rt_period_timer+0x0/0x1fc
 [&lt;c0136dda&gt;] run_hrtimer_pending+0x54/0xe5
 [&lt;c011dae6&gt;] sched_rt_period_timer+0x0/0x1fc
 [&lt;c0128afb&gt;] __do_softirq+0x7b/0xef
 [&lt;c0128ba6&gt;] do_softirq+0x37/0x4d
 [&lt;c0128c12&gt;] ksoftirqd+0x56/0xc5
 [&lt;c0128bbc&gt;] ksoftirqd+0x0/0xc5
 [&lt;c0134649&gt;] kthread+0x38/0x5d
 [&lt;c0134611&gt;] kthread+0x0/0x5d
 [&lt;c0104477&gt;] kernel_thread_helper+0x7/0x10
 =======================

Signed-off-by: Gautham R Shenoy &lt;ego@in.ibm.com&gt;
Acked-by: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
Acked-by: "Paul E. McKenney" &lt;paulmck@linux.vnet.ibm.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
</entry>
<entry>
<title>Merge branch 'timers/range-hrtimers' into v28-range-hrtimers-for-linus-v2</title>
<updated>2008-10-22T07:48:06Z</updated>
<author>
<name>Thomas Gleixner</name>
<email>tglx@linutronix.de</email>
</author>
<published>2008-10-22T07:48:06Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=268a3dcfea2077fca60d3715caa5c96f9b5e6ea7'/>
<id>urn:sha1:268a3dcfea2077fca60d3715caa5c96f9b5e6ea7</id>
<content type='text'>
Conflicts:

	kernel/time/tick-sched.c

Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
</entry>
<entry>
<title>hrtimers: simplify hrtimer_peek_ahead_timers()</title>
<updated>2008-10-20T11:38:11Z</updated>
<author>
<name>Thomas Gleixner</name>
<email>tglx@linutronix.de</email>
</author>
<published>2008-10-20T11:38:11Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=643bdf68f92a8516574ed7ca3713f9334c331b8d'/>
<id>urn:sha1:643bdf68f92a8516574ed7ca3713f9334c331b8d</id>
<content type='text'>
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
</entry>
<entry>
<title>hrtimers: fix docbook comments</title>
<updated>2008-10-20T11:33:36Z</updated>
<author>
<name>Thomas Gleixner</name>
<email>tglx@linutronix.de</email>
</author>
<published>2008-10-20T11:33:36Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=e1dd7bc58578ebfcaba989608017fe5156c29c86'/>
<id>urn:sha1:e1dd7bc58578ebfcaba989608017fe5156c29c86</id>
<content type='text'>
hrtimer_start() and hrtimer_start_range_ns() handle relative and
absolute timers.

Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
</entry>
<entry>
<title>Merge branches 'timers/clocksource', 'timers/hrtimers', 'timers/nohz', 'timers/ntp', 'timers/posixtimers' and 'timers/debug' into v28-timers-for-linus</title>
<updated>2008-10-20T11:14:06Z</updated>
<author>
<name>Thomas Gleixner</name>
<email>tglx@linutronix.de</email>
</author>
<published>2008-10-20T11:14:06Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=c465a76af658b443075d6efee1c3131257643020'/>
<id>urn:sha1:c465a76af658b443075d6efee1c3131257643020</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Merge commit 'linus/master' into merge-linus</title>
<updated>2008-10-17T16:20:26Z</updated>
<author>
<name>Arjan van de Ven</name>
<email>arjan@linux.intel.com</email>
</author>
<published>2008-10-17T16:20:26Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=651dab4264e4ba0e563f5ff56f748127246e9065'/>
<id>urn:sha1:651dab4264e4ba0e563f5ff56f748127246e9065</id>
<content type='text'>
Conflicts:

	arch/x86/kvm/i8254.c
</content>
</entry>
<entry>
<title>rangetimers: fix the bug reported by Ingo for real</title>
<updated>2008-10-13T15:08:34Z</updated>
<author>
<name>Arjan van de Ven</name>
<email>arjan@linux.intel.com</email>
</author>
<published>2008-10-13T14:32:15Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=dc4304f7deee29fcdf6a2b62f7146ea7f505fd42'/>
<id>urn:sha1:dc4304f7deee29fcdf6a2b62f7146ea7f505fd42</id>
<content type='text'>
and please hand me a brown paper bag

(thanks to Thomas for pointing out this very obvious bug)

Signed-off-by: Arjan van de Ven &lt;arjan@linux.intel.com&gt;
</content>
</entry>
<entry>
<title>rangetimer: fix BUG_ON reported by Ingo</title>
<updated>2008-10-11T19:25:45Z</updated>
<author>
<name>Arjan van de Ven</name>
<email>arjan@linux.intel.com</email>
</author>
<published>2008-10-11T19:25:45Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=030aebd2e439a2ebcca2b0ce30a02ed84feb043e'/>
<id>urn:sha1:030aebd2e439a2ebcca2b0ce30a02ed84feb043e</id>
<content type='text'>
There's a small race/chance that, while hrtimers are enabled globally,
they're later not enabled when we're calling the hrtimer_interrupt() function,
which then BUG_ON()'s for that. This patch closes that race/gap.

Signed-off-by: Arjan van de Ven &lt;arjan@linux.intel.com&gt;
</content>
</entry>
<entry>
<title>hrtimer: prevent migration of per CPU hrtimers</title>
<updated>2008-09-29T15:09:14Z</updated>
<author>
<name>Thomas Gleixner</name>
<email>tglx@linutronix.de</email>
</author>
<published>2008-09-29T13:47:42Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=ccc7dadf736639da86f3e0c86832c11a66fc8221'/>
<id>urn:sha1:ccc7dadf736639da86f3e0c86832c11a66fc8221</id>
<content type='text'>
Impact: per CPU hrtimers can be migrated from a dead CPU

The hrtimer code has no knowledge about per CPU timers, but we need to
prevent the migration of such timers and warn when such a timer is
active at migration time.

Explicitely mark the timers as per CPU and use a more understandable
mode descriptor for the interrupts safe unlocked callback mode, which
is used by hrtimer_sleeper and the scheduler code.

Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
</entry>
</feed>
