<feed xmlns='http://www.w3.org/2005/Atom'>
<title>litmus-rt.git, branch wip-master-2.6.33-rt</title>
<subtitle>The LITMUS^RT kernel.</subtitle>
<link rel='alternate' type='text/html' href='http://rtsrv.cs.unc.edu/cgit/cgit.cgi/litmus-rt.git/'/>
<entry>
<title>Avoid deadlock when switching task policy to BACKGROUND (ugly)</title>
<updated>2010-06-10T17:24:54+00:00</updated>
<author>
<name>Andrea Bastoni</name>
<email>bastoni@cs.unc.edu</email>
</author>
<published>2010-06-10T17:24:54+00:00</published>
<link rel='alternate' type='text/html' href='http://rtsrv.cs.unc.edu/cgit/cgit.cgi/litmus-rt.git/commit/?id=53d9688562a712a9b3e0265b51f2e60fec103799'/>
<id>53d9688562a712a9b3e0265b51f2e60fec103799</id>
<content type='text'>
When (re)setting Litmus task policy to BACKGROUND, kfree is called while
in atomic context. This cannot be done in PreemptRT as it will deadlock
(this commit fixes the below trace).

Properly freeing rt-task structures while not holding proper locks
breaks various assumptions in the code and therefore these operations
cannot be easily postponed (to a moment when we don't hold the locks).
The solution is a bad hack and if the policy is reset to BACKGROUND task
we leak some memory.
Better solutions are very welcomed.

[   52.850018] =======================================================
[   52.850018] [ INFO: possible circular locking dependency detected ]
[   52.850018] 2.6.33.5-rt22-litmus2010 #441
[   52.850018] -------------------------------------------------------
[   52.850018] longtest_g/1637 is trying to acquire lock:
[   52.850018]  (per_cpu__lock_slab_locked){......}, at: [&lt;ffffffff8142b783&gt;] rt_spin_lock_slowlock+0x33/0x360
[   52.850018]
[   52.850018] but task is already holding lock:
[   52.850018]  (&amp;rq-&gt;lock){-...-.}, at: [&lt;ffffffff8102ee52&gt;] __sched_setscheduler+0x112/0x4f0
[   52.850018]
[   52.850018] which lock already depends on the new lock.
[   52.850018]
[   52.850018]
[   52.850018] the existing dependency chain (in reverse order) is:
[   52.850018]
[   52.850018] -&gt; #2 (&amp;rq-&gt;lock){-...-.}:
[   52.850018]        [&lt;ffffffff81060954&gt;] __lock_acquire+0x13c4/0x1cd0
[   52.850018]        [&lt;ffffffff810612bc&gt;] lock_acquire+0x5c/0x80
[   52.850018]        [&lt;ffffffff8142cc76&gt;] _raw_spin_lock+0x36/0x50
[   52.850018]        [&lt;ffffffff8102551e&gt;] task_rq_lock+0x5e/0xb0
[   52.850018]        [&lt;ffffffff8102fa44&gt;] try_to_wake_up+0x64/0x420
[   52.850018]        [&lt;ffffffff8102fe65&gt;] wake_up_process_mutex+0x15/0x20
[   52.850018]        [&lt;ffffffff8106708e&gt;] wakeup_next_waiter+0x9e/0x1b0
[   52.850018]        [&lt;ffffffff8142b70f&gt;] rt_spin_lock_slowunlock+0x4f/0x90
[   52.850018]        [&lt;ffffffff8142c419&gt;] rt_spin_unlock+0x49/0x50
[   52.850018]        [&lt;ffffffff8102ceb4&gt;] complete+0x44/0x50
[   52.850018]        [&lt;ffffffff8104d07c&gt;] kthread+0x7c/0xc0
[   52.850018]        [&lt;ffffffff81003214&gt;] kernel_thread_helper+0x4/0x10
[   52.850018]
[   52.850018] -&gt; #1 (&amp;p-&gt;pi_lock){......}:
[   52.850018]        [&lt;ffffffff81060954&gt;] __lock_acquire+0x13c4/0x1cd0
[   52.850018]        [&lt;ffffffff810612bc&gt;] lock_acquire+0x5c/0x80
[   52.850018]        [&lt;ffffffff8142cc76&gt;] _raw_spin_lock+0x36/0x50
[   52.850018]        [&lt;ffffffff81066859&gt;] task_blocks_on_rt_mutex+0x39/0x210
[   52.850018]        [&lt;ffffffff8142b9c3&gt;] rt_spin_lock_slowlock+0x273/0x360
[   52.850018]        [&lt;ffffffff8142c383&gt;] rt_spin_lock+0x43/0x90
[   52.850018]        [&lt;ffffffff810ab23e&gt;] _slab_irq_disable+0x4e/0x70
[   52.850018]        [&lt;ffffffff810ab93f&gt;] kmem_cache_free+0x1f/0xf0
[   52.850018]        [&lt;ffffffff810b34a1&gt;] file_free_rcu+0x31/0x40
[   52.850018]        [&lt;ffffffff81074a48&gt;] __rcu_process_callbacks+0x128/0x3a0
[   52.850018]        [&lt;ffffffff81074d3b&gt;] rcu_process_callbacks+0x7b/0x90
[   52.850018]        [&lt;ffffffff8103a96f&gt;] run_ksoftirqd+0x14f/0x310
[   52.850018]        [&lt;ffffffff8104d0a6&gt;] kthread+0xa6/0xc0
[   52.850018]        [&lt;ffffffff81003214&gt;] kernel_thread_helper+0x4/0x10
[   52.850018]
[   52.850018] -&gt; #0 (per_cpu__lock_slab_locked){......}:
[   52.850018]        [&lt;ffffffff8106120c&gt;] __lock_acquire+0x1c7c/0x1cd0
[   52.850018]        [&lt;ffffffff810612bc&gt;] lock_acquire+0x5c/0x80
[   52.850018]        [&lt;ffffffff8142cd91&gt;] _raw_spin_lock_irqsave+0x41/0x60
[   52.850018]        [&lt;ffffffff8142b783&gt;] rt_spin_lock_slowlock+0x33/0x360
[   52.850018]        [&lt;ffffffff8142c383&gt;] rt_spin_lock+0x43/0x90
[   52.850018]        [&lt;ffffffff810ab23e&gt;] _slab_irq_disable+0x4e/0x70
[   52.850018]        [&lt;ffffffff810ab93f&gt;] kmem_cache_free+0x1f/0xf0
[   52.850018]        [&lt;ffffffff811d1374&gt;] litmus_exit_task+0x84/0x130
[   52.850018]        [&lt;ffffffff8102f11f&gt;] __sched_setscheduler+0x3df/0x4f0
[   52.850018]        [&lt;ffffffff8102f24e&gt;] sched_setscheduler+0xe/0x10
[   52.850018]        [&lt;ffffffff8102f30d&gt;] do_sched_setscheduler+0xbd/0x100
[   52.850018]        [&lt;ffffffff8102f384&gt;] sys_sched_setscheduler+0x14/0x20
[   52.850018]        [&lt;ffffffff8100246b&gt;] system_call_fastpath+0x16/0x1b
[   52.850018]
[   52.850018] other info that might help us debug this:
[   52.850018]
[   52.850018] 3 locks held by longtest_g/1637:
[   52.850018]  #0:  (rcu_read_lock){.+.+..}, at: [&lt;ffffffff8102f2bf&gt;] do_sched_setscheduler+0x6f/0x100
[   52.850018]  #1:  (&amp;p-&gt;pi_lock){......}, at: [&lt;ffffffff8102ee0e&gt;] __sched_setscheduler+0xce/0x4f0
[   52.850018]  #2:  (&amp;rq-&gt;lock){-...-.}, at: [&lt;ffffffff8102ee52&gt;] __sched_setscheduler+0x112/0x4f0
[   52.850018]
[   52.850018] stack backtrace:
[   52.850018] Pid: 1637, comm: longtest_g Tainted: G        W 2.6.33.5-rt22-litmus2010 #441
[   52.850018] Call Trace:
[   52.850018]  [&lt;ffffffff8105ef10&gt;] print_circular_bug+0x100/0x110
[   52.850018]  [&lt;ffffffff8106120c&gt;] __lock_acquire+0x1c7c/0x1cd0
[   52.850018]  [&lt;ffffffff81429659&gt;] ? printk+0x67/0x69
[   52.850018]  [&lt;ffffffff8100246b&gt;] ? system_call_fastpath+0x16/0x1b
[   52.850018]  [&lt;ffffffff8100246b&gt;] ? system_call_fastpath+0x16/0x1b
[   52.850018]  [&lt;ffffffff810612bc&gt;] lock_acquire+0x5c/0x80
[   52.850018]  [&lt;ffffffff8142b783&gt;] ? rt_spin_lock_slowlock+0x33/0x360
[   52.850018]  [&lt;ffffffff8142cd91&gt;] _raw_spin_lock_irqsave+0x41/0x60
[   52.850018]  [&lt;ffffffff8142b783&gt;] ? rt_spin_lock_slowlock+0x33/0x360
[   52.850018]  [&lt;ffffffff81005649&gt;] ? dump_trace+0x129/0x330
[   52.850018]  [&lt;ffffffff8142b783&gt;] rt_spin_lock_slowlock+0x33/0x360
[   52.850018]  [&lt;ffffffff8142c383&gt;] rt_spin_lock+0x43/0x90
[   52.850018]  [&lt;ffffffff810ab23e&gt;] _slab_irq_disable+0x4e/0x70
[   52.850018]  [&lt;ffffffff810ab93f&gt;] kmem_cache_free+0x1f/0xf0
[   52.850018]  [&lt;ffffffff811d1374&gt;] litmus_exit_task+0x84/0x130
[   52.850018]  [&lt;ffffffff810242d8&gt;] ? dequeue_task+0x48/0x90
[   52.850018]  [&lt;ffffffff8102f11f&gt;] __sched_setscheduler+0x3df/0x4f0
[   52.850018]  [&lt;ffffffff8102f24e&gt;] sched_setscheduler+0xe/0x10
[   52.850018]  [&lt;ffffffff8102f30d&gt;] do_sched_setscheduler+0xbd/0x100
[   52.850018]  [&lt;ffffffff8102f2bf&gt;] ? do_sched_setscheduler+0x6f/0x100
[   52.850018]  [&lt;ffffffff8142bf02&gt;] ? trace_hardirqs_on_thunk+0x3a/0x3f
[   52.850018]  [&lt;ffffffff8102f384&gt;] sys_sched_setscheduler+0x14/0x20
[   52.850018]  [&lt;ffffffff8100246b&gt;] system_call_fastpath+0x16/0x1b
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When (re)setting Litmus task policy to BACKGROUND, kfree is called while
in atomic context. This cannot be done in PreemptRT as it will deadlock
(this commit fixes the below trace).

Properly freeing rt-task structures while not holding proper locks
breaks various assumptions in the code and therefore these operations
cannot be easily postponed (to a moment when we don't hold the locks).
The solution is a bad hack and if the policy is reset to BACKGROUND task
we leak some memory.
Better solutions are very welcomed.

[   52.850018] =======================================================
[   52.850018] [ INFO: possible circular locking dependency detected ]
[   52.850018] 2.6.33.5-rt22-litmus2010 #441
[   52.850018] -------------------------------------------------------
[   52.850018] longtest_g/1637 is trying to acquire lock:
[   52.850018]  (per_cpu__lock_slab_locked){......}, at: [&lt;ffffffff8142b783&gt;] rt_spin_lock_slowlock+0x33/0x360
[   52.850018]
[   52.850018] but task is already holding lock:
[   52.850018]  (&amp;rq-&gt;lock){-...-.}, at: [&lt;ffffffff8102ee52&gt;] __sched_setscheduler+0x112/0x4f0
[   52.850018]
[   52.850018] which lock already depends on the new lock.
[   52.850018]
[   52.850018]
[   52.850018] the existing dependency chain (in reverse order) is:
[   52.850018]
[   52.850018] -&gt; #2 (&amp;rq-&gt;lock){-...-.}:
[   52.850018]        [&lt;ffffffff81060954&gt;] __lock_acquire+0x13c4/0x1cd0
[   52.850018]        [&lt;ffffffff810612bc&gt;] lock_acquire+0x5c/0x80
[   52.850018]        [&lt;ffffffff8142cc76&gt;] _raw_spin_lock+0x36/0x50
[   52.850018]        [&lt;ffffffff8102551e&gt;] task_rq_lock+0x5e/0xb0
[   52.850018]        [&lt;ffffffff8102fa44&gt;] try_to_wake_up+0x64/0x420
[   52.850018]        [&lt;ffffffff8102fe65&gt;] wake_up_process_mutex+0x15/0x20
[   52.850018]        [&lt;ffffffff8106708e&gt;] wakeup_next_waiter+0x9e/0x1b0
[   52.850018]        [&lt;ffffffff8142b70f&gt;] rt_spin_lock_slowunlock+0x4f/0x90
[   52.850018]        [&lt;ffffffff8142c419&gt;] rt_spin_unlock+0x49/0x50
[   52.850018]        [&lt;ffffffff8102ceb4&gt;] complete+0x44/0x50
[   52.850018]        [&lt;ffffffff8104d07c&gt;] kthread+0x7c/0xc0
[   52.850018]        [&lt;ffffffff81003214&gt;] kernel_thread_helper+0x4/0x10
[   52.850018]
[   52.850018] -&gt; #1 (&amp;p-&gt;pi_lock){......}:
[   52.850018]        [&lt;ffffffff81060954&gt;] __lock_acquire+0x13c4/0x1cd0
[   52.850018]        [&lt;ffffffff810612bc&gt;] lock_acquire+0x5c/0x80
[   52.850018]        [&lt;ffffffff8142cc76&gt;] _raw_spin_lock+0x36/0x50
[   52.850018]        [&lt;ffffffff81066859&gt;] task_blocks_on_rt_mutex+0x39/0x210
[   52.850018]        [&lt;ffffffff8142b9c3&gt;] rt_spin_lock_slowlock+0x273/0x360
[   52.850018]        [&lt;ffffffff8142c383&gt;] rt_spin_lock+0x43/0x90
[   52.850018]        [&lt;ffffffff810ab23e&gt;] _slab_irq_disable+0x4e/0x70
[   52.850018]        [&lt;ffffffff810ab93f&gt;] kmem_cache_free+0x1f/0xf0
[   52.850018]        [&lt;ffffffff810b34a1&gt;] file_free_rcu+0x31/0x40
[   52.850018]        [&lt;ffffffff81074a48&gt;] __rcu_process_callbacks+0x128/0x3a0
[   52.850018]        [&lt;ffffffff81074d3b&gt;] rcu_process_callbacks+0x7b/0x90
[   52.850018]        [&lt;ffffffff8103a96f&gt;] run_ksoftirqd+0x14f/0x310
[   52.850018]        [&lt;ffffffff8104d0a6&gt;] kthread+0xa6/0xc0
[   52.850018]        [&lt;ffffffff81003214&gt;] kernel_thread_helper+0x4/0x10
[   52.850018]
[   52.850018] -&gt; #0 (per_cpu__lock_slab_locked){......}:
[   52.850018]        [&lt;ffffffff8106120c&gt;] __lock_acquire+0x1c7c/0x1cd0
[   52.850018]        [&lt;ffffffff810612bc&gt;] lock_acquire+0x5c/0x80
[   52.850018]        [&lt;ffffffff8142cd91&gt;] _raw_spin_lock_irqsave+0x41/0x60
[   52.850018]        [&lt;ffffffff8142b783&gt;] rt_spin_lock_slowlock+0x33/0x360
[   52.850018]        [&lt;ffffffff8142c383&gt;] rt_spin_lock+0x43/0x90
[   52.850018]        [&lt;ffffffff810ab23e&gt;] _slab_irq_disable+0x4e/0x70
[   52.850018]        [&lt;ffffffff810ab93f&gt;] kmem_cache_free+0x1f/0xf0
[   52.850018]        [&lt;ffffffff811d1374&gt;] litmus_exit_task+0x84/0x130
[   52.850018]        [&lt;ffffffff8102f11f&gt;] __sched_setscheduler+0x3df/0x4f0
[   52.850018]        [&lt;ffffffff8102f24e&gt;] sched_setscheduler+0xe/0x10
[   52.850018]        [&lt;ffffffff8102f30d&gt;] do_sched_setscheduler+0xbd/0x100
[   52.850018]        [&lt;ffffffff8102f384&gt;] sys_sched_setscheduler+0x14/0x20
[   52.850018]        [&lt;ffffffff8100246b&gt;] system_call_fastpath+0x16/0x1b
[   52.850018]
[   52.850018] other info that might help us debug this:
[   52.850018]
[   52.850018] 3 locks held by longtest_g/1637:
[   52.850018]  #0:  (rcu_read_lock){.+.+..}, at: [&lt;ffffffff8102f2bf&gt;] do_sched_setscheduler+0x6f/0x100
[   52.850018]  #1:  (&amp;p-&gt;pi_lock){......}, at: [&lt;ffffffff8102ee0e&gt;] __sched_setscheduler+0xce/0x4f0
[   52.850018]  #2:  (&amp;rq-&gt;lock){-...-.}, at: [&lt;ffffffff8102ee52&gt;] __sched_setscheduler+0x112/0x4f0
[   52.850018]
[   52.850018] stack backtrace:
[   52.850018] Pid: 1637, comm: longtest_g Tainted: G        W 2.6.33.5-rt22-litmus2010 #441
[   52.850018] Call Trace:
[   52.850018]  [&lt;ffffffff8105ef10&gt;] print_circular_bug+0x100/0x110
[   52.850018]  [&lt;ffffffff8106120c&gt;] __lock_acquire+0x1c7c/0x1cd0
[   52.850018]  [&lt;ffffffff81429659&gt;] ? printk+0x67/0x69
[   52.850018]  [&lt;ffffffff8100246b&gt;] ? system_call_fastpath+0x16/0x1b
[   52.850018]  [&lt;ffffffff8100246b&gt;] ? system_call_fastpath+0x16/0x1b
[   52.850018]  [&lt;ffffffff810612bc&gt;] lock_acquire+0x5c/0x80
[   52.850018]  [&lt;ffffffff8142b783&gt;] ? rt_spin_lock_slowlock+0x33/0x360
[   52.850018]  [&lt;ffffffff8142cd91&gt;] _raw_spin_lock_irqsave+0x41/0x60
[   52.850018]  [&lt;ffffffff8142b783&gt;] ? rt_spin_lock_slowlock+0x33/0x360
[   52.850018]  [&lt;ffffffff81005649&gt;] ? dump_trace+0x129/0x330
[   52.850018]  [&lt;ffffffff8142b783&gt;] rt_spin_lock_slowlock+0x33/0x360
[   52.850018]  [&lt;ffffffff8142c383&gt;] rt_spin_lock+0x43/0x90
[   52.850018]  [&lt;ffffffff810ab23e&gt;] _slab_irq_disable+0x4e/0x70
[   52.850018]  [&lt;ffffffff810ab93f&gt;] kmem_cache_free+0x1f/0xf0
[   52.850018]  [&lt;ffffffff811d1374&gt;] litmus_exit_task+0x84/0x130
[   52.850018]  [&lt;ffffffff810242d8&gt;] ? dequeue_task+0x48/0x90
[   52.850018]  [&lt;ffffffff8102f11f&gt;] __sched_setscheduler+0x3df/0x4f0
[   52.850018]  [&lt;ffffffff8102f24e&gt;] sched_setscheduler+0xe/0x10
[   52.850018]  [&lt;ffffffff8102f30d&gt;] do_sched_setscheduler+0xbd/0x100
[   52.850018]  [&lt;ffffffff8102f2bf&gt;] ? do_sched_setscheduler+0x6f/0x100
[   52.850018]  [&lt;ffffffff8142bf02&gt;] ? trace_hardirqs_on_thunk+0x3a/0x3f
[   52.850018]  [&lt;ffffffff8102f384&gt;] sys_sched_setscheduler+0x14/0x20
[   52.850018]  [&lt;ffffffff8100246b&gt;] system_call_fastpath+0x16/0x1b
</pre>
</div>
</content>
</entry>
<entry>
<title>Use a non-sleeping lock to protect fmlp locking operations</title>
<updated>2010-06-10T17:02:23+00:00</updated>
<author>
<name>Andrea Bastoni</name>
<email>bastoni@cs.unc.edu</email>
</author>
<published>2010-06-10T17:02:23+00:00</published>
<link rel='alternate' type='text/html' href='http://rtsrv.cs.unc.edu/cgit/cgit.cgi/litmus-rt.git/commit/?id=5980b2330359d002e4e2278327ff80307504b848'/>
<id>5980b2330359d002e4e2278327ff80307504b848</id>
<content type='text'>
The wait_queue_t lock used to protect fmlp_down and fmlp_up operations
in vanilla kernel is a sleeping lock in PreemptRT. We call fmlp
operations from atomic contexts. This commit replaces the wait_queue
lock with a raw_spin_lock.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The wait_queue_t lock used to protect fmlp_down and fmlp_up operations
in vanilla kernel is a sleeping lock in PreemptRT. We call fmlp
operations from atomic contexts. This commit replaces the wait_queue
lock with a raw_spin_lock.
</pre>
</div>
</content>
</entry>
<entry>
<title>Make  platform-specific Feather-Trace depend on !CONFIG_DEBUG_RODATA</title>
<updated>2010-06-09T20:57:12+00:00</updated>
<author>
<name>Bjoern B. Brandenburg</name>
<email>bbb@cs.unc.edu</email>
</author>
<published>2010-05-31T16:52:35+00:00</published>
<link rel='alternate' type='text/html' href='http://rtsrv.cs.unc.edu/cgit/cgit.cgi/litmus-rt.git/commit/?id=b7723f10b088450c82a84275371d48020309e5f7'/>
<id>b7723f10b088450c82a84275371d48020309e5f7</id>
<content type='text'>
Feather-Trace rewrites instructions in the kernel's .text segment.
This segment may be write-protected if CONFIG_DEBUG_RODATA is selected.
In this case, fall back to the default flag-based Feather-Trace
implementation. In the future, we could either adopt the ftrace method
of rewriting .text addresses using non-.text mappings or we could
consider replacing Feather-Trace with ftrace altogether.

For now, this patch avoids unexpected runtime errors.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Feather-Trace rewrites instructions in the kernel's .text segment.
This segment may be write-protected if CONFIG_DEBUG_RODATA is selected.
In this case, fall back to the default flag-based Feather-Trace
implementation. In the future, we could either adopt the ftrace method
of rewriting .text addresses using non-.text mappings or we could
consider replacing Feather-Trace with ftrace altogether.

For now, this patch avoids unexpected runtime errors.
</pre>
</div>
</content>
</entry>
<entry>
<title>Make PFAIR optional to prevent build and runtime failures.</title>
<updated>2010-06-09T20:56:50+00:00</updated>
<author>
<name>Bjoern B. Brandenburg</name>
<email>bbb@cs.unc.edu</email>
</author>
<published>2010-05-31T16:15:51+00:00</published>
<link rel='alternate' type='text/html' href='http://rtsrv.cs.unc.edu/cgit/cgit.cgi/litmus-rt.git/commit/?id=e677158a7f913bd010909d013b04c98c3834ece5'/>
<id>e677158a7f913bd010909d013b04c98c3834ece5</id>
<content type='text'>
The PFAIR plugin always implicitly assumed !NO_HZ (the schedule
is wrong if NO_HZ is enabled) and does not built if hrtimers are absent:

&gt; litmus/built-in.o: In function `pfair_activate_plugin':
&gt; sched_pfair.c:(.text+0x7f07): undefined reference to `cpu_stagger_offset'
&gt; litmus/built-in.o: In function `init_pfair':
&gt; sched_pfair.c:(.init.text+0x487): undefined reference to `cpu_stagger_offset'

cpu_stagger_offset() is only available if hrtimers are enabled.

This patch makes these dependencies explicit.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The PFAIR plugin always implicitly assumed !NO_HZ (the schedule
is wrong if NO_HZ is enabled) and does not built if hrtimers are absent:

&gt; litmus/built-in.o: In function `pfair_activate_plugin':
&gt; sched_pfair.c:(.text+0x7f07): undefined reference to `cpu_stagger_offset'
&gt; litmus/built-in.o: In function `init_pfair':
&gt; sched_pfair.c:(.init.text+0x487): undefined reference to `cpu_stagger_offset'

cpu_stagger_offset() is only available if hrtimers are enabled.

This patch makes these dependencies explicit.
</pre>
</div>
</content>
</entry>
<entry>
<title>Make C-EDF depend on x86 and SYSFS</title>
<updated>2010-06-09T20:56:39+00:00</updated>
<author>
<name>Andrea Bastoni</name>
<email>bastoni@cs.unc.edu</email>
</author>
<published>2010-05-31T04:54:07+00:00</published>
<link rel='alternate' type='text/html' href='http://rtsrv.cs.unc.edu/cgit/cgit.cgi/litmus-rt.git/commit/?id=95388e6e7f1692c08d66a8ca92b7ac776c3c6350'/>
<id>95388e6e7f1692c08d66a8ca92b7ac776c3c6350</id>
<content type='text'>
C-EDF depends on intel_cacheinfo.c (for get_shared_cpu_map()) which is
only available on x86 architectures. Furthermore, get_shared_cpu_map()
is only available if SYSFS filesystem is present.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
C-EDF depends on intel_cacheinfo.c (for get_shared_cpu_map()) which is
only available on x86 architectures. Furthermore, get_shared_cpu_map()
is only available if SYSFS filesystem is present.
</pre>
</div>
</content>
</entry>
<entry>
<title>Make smp_send_pull_timers() optional.</title>
<updated>2010-06-09T20:56:28+00:00</updated>
<author>
<name>Bjoern B. Brandenburg</name>
<email>bbb@cs.unc.edu</email>
</author>
<published>2010-05-30T23:50:52+00:00</published>
<link rel='alternate' type='text/html' href='http://rtsrv.cs.unc.edu/cgit/cgit.cgi/litmus-rt.git/commit/?id=0fb33c99d964c63f51216db232047924b1d8b489'/>
<id>0fb33c99d964c63f51216db232047924b1d8b489</id>
<content type='text'>
There is currently no need to implement this in ARM.
So let's make it optional instead.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
There is currently no need to implement this in ARM.
So let's make it optional instead.
</pre>
</div>
</content>
</entry>
<entry>
<title>Make release master support optional</title>
<updated>2010-06-09T20:56:19+00:00</updated>
<author>
<name>Bjoern B. Brandenburg</name>
<email>bbb@cs.unc.edu</email>
</author>
<published>2010-05-30T23:46:21+00:00</published>
<link rel='alternate' type='text/html' href='http://rtsrv.cs.unc.edu/cgit/cgit.cgi/litmus-rt.git/commit/?id=0c527966dd7dd3e377a0cbcb5b25e225f0adb990'/>
<id>0c527966dd7dd3e377a0cbcb5b25e225f0adb990</id>
<content type='text'>
Introduces CONFIG_RELEASE_MASTER and makes release
master support dependent on the new symbol. This is
useful because dedicated interrupt handling only applies
to "large" multicore platforms. This will allow us to
not implement smp_send_pull_timers() for all platforms.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Introduces CONFIG_RELEASE_MASTER and makes release
master support dependent on the new symbol. This is
useful because dedicated interrupt handling only applies
to "large" multicore platforms. This will allow us to
not implement smp_send_pull_timers() for all platforms.
</pre>
</div>
</content>
</entry>
<entry>
<title>Make compilation of C-EDF optional.</title>
<updated>2010-06-09T20:56:08+00:00</updated>
<author>
<name>Bjoern B. Brandenburg</name>
<email>bbb@cs.unc.edu</email>
</author>
<published>2010-05-30T22:59:30+00:00</published>
<link rel='alternate' type='text/html' href='http://rtsrv.cs.unc.edu/cgit/cgit.cgi/litmus-rt.git/commit/?id=a57cd053183702b68fa6a500af4a6770daacfaf9'/>
<id>a57cd053183702b68fa6a500af4a6770daacfaf9</id>
<content type='text'>
C-EDF only makes sense on multicore platforms that have shared caches.
Make it possible to disable it on other platforms, in particular,
on those that do not export get_shared_cpu_map().
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
C-EDF only makes sense on multicore platforms that have shared caches.
Make it possible to disable it on other platforms, in particular,
on those that do not export get_shared_cpu_map().
</pre>
</div>
</content>
</entry>
<entry>
<title>Make __ARCH_HAS_FEATHER_TRACE a proper CONFIG_ variable.</title>
<updated>2010-06-09T20:55:57+00:00</updated>
<author>
<name>Bjoern B. Brandenburg</name>
<email>bbb@cs.unc.edu</email>
</author>
<published>2010-05-30T22:41:28+00:00</published>
<link rel='alternate' type='text/html' href='http://rtsrv.cs.unc.edu/cgit/cgit.cgi/litmus-rt.git/commit/?id=a9af0235047575d7bfe5922b63c9eb2742a18f43'/>
<id>a9af0235047575d7bfe5922b63c9eb2742a18f43</id>
<content type='text'>
The idea of the Feather-Trace default implementation is that LITMUS^RT should
work without a specialized Feather-Trace implementation present. This was
actually broken.

Changes litmus/feather_trace.h to only include asm/feather_trace.h if actually
promised by the architecture.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The idea of the Feather-Trace default implementation is that LITMUS^RT should
work without a specialized Feather-Trace implementation present. This was
actually broken.

Changes litmus/feather_trace.h to only include asm/feather_trace.h if actually
promised by the architecture.
</pre>
</div>
</content>
</entry>
<entry>
<title>Bugfix: re-insert missing TS_PLUGIN_TICK_END tracing point</title>
<updated>2010-06-09T20:55:46+00:00</updated>
<author>
<name>Andrea Bastoni</name>
<email>bastoni@cs.unc.edu</email>
</author>
<published>2010-05-28T19:45:23+00:00</published>
<link rel='alternate' type='text/html' href='http://rtsrv.cs.unc.edu/cgit/cgit.cgi/litmus-rt.git/commit/?id=93ad471f8a5e2ba8d27a29af3589f156f45cc2f1'/>
<id>93ad471f8a5e2ba8d27a29af3589f156f45cc2f1</id>
<content type='text'>
Insert PLUGIN_TICK_END tracing point in litmus_tick(). It was lost during
the porting of 2008.3 to 2010.1.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Insert PLUGIN_TICK_END tracing point in litmus_tick(). It was lost during
the porting of 2008.3 to 2010.1.
</pre>
</div>
</content>
</entry>
</feed>
