<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://elinux.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://elinux.org/index.php?title=Rt_Preempt_Subpatch_Table&amp;feed=atom&amp;action=history</id>
		<title>Rt Preempt Subpatch Table - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://elinux.org/index.php?title=Rt_Preempt_Subpatch_Table&amp;feed=atom&amp;action=history"/>
		<link rel="alternate" type="text/html" href="http://elinux.org/index.php?title=Rt_Preempt_Subpatch_Table&amp;action=history"/>
		<updated>2013-05-22T20:36:06Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.21alpha</generator>

	<entry>
		<id>http://elinux.org/index.php?title=Rt_Preempt_Subpatch_Table&amp;diff=74125&amp;oldid=prev</id>
		<title>Cschalle: Add category</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/index.php?title=Rt_Preempt_Subpatch_Table&amp;diff=74125&amp;oldid=prev"/>
				<updated>2011-10-28T10:32:23Z</updated>
		
		<summary type="html">&lt;p&gt;Add category&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 10:32, 28 October 2011&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 323:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 323:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;** this is used to emit warnings when a user-defined threshold is exceeded, and is useful for debugging the preemption features of this patchset&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;** this is used to emit warnings when a user-defined threshold is exceeded, and is useful for debugging the preemption features of this patchset&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* latency trace = system for logging preemption-related events&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* latency trace = system for logging preemption-related events&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Kernel]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key elinux:diff:version:1.11a:oldid:2072:newid:74125 --&gt;
&lt;/table&gt;</summary>
		<author><name>Cschalle</name></author>	</entry>

	<entry>
		<id>http://elinux.org/index.php?title=Rt_Preempt_Subpatch_Table&amp;diff=2072&amp;oldid=prev</id>
		<title>RBot: Bot (Edward's framework)</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/index.php?title=Rt_Preempt_Subpatch_Table&amp;diff=2072&amp;oldid=prev"/>
				<updated>2007-03-06T03:36:43Z</updated>
		
		<summary type="html">&lt;p&gt;Bot (Edward&amp;#039;s framework)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Here is a table of rt-preempt sub-patches and the kernel features they introduce and affect:&lt;br /&gt;
{| &lt;br /&gt;
|- bgcolor=&amp;quot;80c080&amp;quot;&lt;br /&gt;
|  .          &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | '''PATCH'''&lt;br /&gt;
|- bgcolor=&amp;quot;80c080&amp;quot;&lt;br /&gt;
|  Kernel item &lt;br /&gt;
|  p-smp               &lt;br /&gt;
|  p-cleanup &lt;br /&gt;
|  add-lnr&lt;br /&gt;
|  add-crs&lt;br /&gt;
|  *fix-scheduling*&lt;br /&gt;
|  *keventd*&lt;br /&gt;
|  idle-thread-p-fix&lt;br /&gt;
|  remove-bkl&lt;br /&gt;
|- &lt;br /&gt;
|  spinlock_t                  &lt;br /&gt;
|  add break_lock        &lt;br /&gt;
|  .         &lt;br /&gt;
|  .     &lt;br /&gt;
|  .      &lt;br /&gt;
|  .               &lt;br /&gt;
|  .        &lt;br /&gt;
|  .                 &lt;br /&gt;
|  .         &lt;br /&gt;
|- &lt;br /&gt;
|  rwlock_t                     &lt;br /&gt;
|  add break_lock        &lt;br /&gt;
|  .         &lt;br /&gt;
|  .     &lt;br /&gt;
|  .      &lt;br /&gt;
|  .               &lt;br /&gt;
|  .        &lt;br /&gt;
|  .                 &lt;br /&gt;
|  .         &lt;br /&gt;
|- &lt;br /&gt;
|  _raw_read_trylock()          &lt;br /&gt;
|  create                &lt;br /&gt;
|  .         &lt;br /&gt;
|  .     &lt;br /&gt;
|  .      &lt;br /&gt;
|  .               &lt;br /&gt;
|  .        &lt;br /&gt;
|  .                 &lt;br /&gt;
|  .         &lt;br /&gt;
|- &lt;br /&gt;
|  generic_raw_read_trylock()   &lt;br /&gt;
|  create                &lt;br /&gt;
|  .         &lt;br /&gt;
|  .     &lt;br /&gt;
|  .      &lt;br /&gt;
|  .               &lt;br /&gt;
|  .        &lt;br /&gt;
|  .                 &lt;br /&gt;
|  .         &lt;br /&gt;
|- &lt;br /&gt;
|  cond_resched_lock()          &lt;br /&gt;
|  check for break_lock  &lt;br /&gt;
|  .         &lt;br /&gt;
|  .     &lt;br /&gt;
|  .      &lt;br /&gt;
|  add calls to    &lt;br /&gt;
|  .        &lt;br /&gt;
|  .                 &lt;br /&gt;
|  .         &lt;br /&gt;
|- &lt;br /&gt;
|  &amp;lt;spinlock routines&amp;gt;() (read_lock(), spin_lock_irqsave(), spin_lock_irq(), spin_lock_bh(), read_lock_irqsave(), read_lock_irq(), read_lock_bh(), write_lock_irqsave(), write_lock_irq(), write_lock_bh()) &lt;br /&gt;
|  enabled irqs, check for lock break requests &lt;br /&gt;
|  . &lt;br /&gt;
|  . &lt;br /&gt;
|  . &lt;br /&gt;
|  change some *_lock() to *_lock_irq()s &lt;br /&gt;
|  . &lt;br /&gt;
|  . &lt;br /&gt;
|  . &lt;br /&gt;
|- &lt;br /&gt;
|  need_lockbreak()             &lt;br /&gt;
|  .                     &lt;br /&gt;
|  create    &lt;br /&gt;
|  .     &lt;br /&gt;
|  .      &lt;br /&gt;
|  .               &lt;br /&gt;
|  .        &lt;br /&gt;
|  .                 &lt;br /&gt;
|  .         &lt;br /&gt;
|- &lt;br /&gt;
|  cond_resched()               &lt;br /&gt;
|  .                     &lt;br /&gt;
|  fix       &lt;br /&gt;
|  .     &lt;br /&gt;
|  .      &lt;br /&gt;
|  add calls to    &lt;br /&gt;
|  .        &lt;br /&gt;
|  .                 &lt;br /&gt;
|  .         &lt;br /&gt;
|- &lt;br /&gt;
|  lock_need_resched()          &lt;br /&gt;
|  .                     &lt;br /&gt;
|  .         &lt;br /&gt;
|  create&lt;br /&gt;
|  .      &lt;br /&gt;
|  add calls to    &lt;br /&gt;
|  .        &lt;br /&gt;
|  .                 &lt;br /&gt;
|  .         &lt;br /&gt;
|- &lt;br /&gt;
|  lock/unlock_kernel()         &lt;br /&gt;
|  .                     &lt;br /&gt;
|  .         &lt;br /&gt;
|  .     &lt;br /&gt;
|  .      &lt;br /&gt;
|  add calls to    &lt;br /&gt;
|  .        &lt;br /&gt;
|  .                 &lt;br /&gt;
|  .         &lt;br /&gt;
|- &lt;br /&gt;
|  cond_resched_softirq()       &lt;br /&gt;
|  .                     &lt;br /&gt;
|  .         &lt;br /&gt;
|  .     &lt;br /&gt;
|  .      &lt;br /&gt;
|  add calls to    &lt;br /&gt;
|  .        &lt;br /&gt;
|  .                 &lt;br /&gt;
|  .         &lt;br /&gt;
|- &lt;br /&gt;
|  filemap_sync()               &lt;br /&gt;
|  .                     &lt;br /&gt;
|  .         &lt;br /&gt;
|  .     &lt;br /&gt;
|  .  &lt;br /&gt;
|  create replacement with cond_resched()&lt;br /&gt;
|  .&lt;br /&gt;
|  .       &lt;br /&gt;
|  .         &lt;br /&gt;
|- &lt;br /&gt;
|  __filemap_sync()             &lt;br /&gt;
|  .                     &lt;br /&gt;
|  .         &lt;br /&gt;
|  .     &lt;br /&gt;
|  .      &lt;br /&gt;
|  create?         &lt;br /&gt;
|  .        &lt;br /&gt;
|  .                 &lt;br /&gt;
|  .         &lt;br /&gt;
|- &lt;br /&gt;
|  unmap_vmas()                 &lt;br /&gt;
|  .                     &lt;br /&gt;
|  .         &lt;br /&gt;
|  .     &lt;br /&gt;
|  .      &lt;br /&gt;
|  change ZAP_BLOCK_SIZE&lt;br /&gt;
|  .   &lt;br /&gt;
|  .                 &lt;br /&gt;
|  .         &lt;br /&gt;
|- &lt;br /&gt;
|  helper_init()                &lt;br /&gt;
|  .                     &lt;br /&gt;
|  .         &lt;br /&gt;
|  .     &lt;br /&gt;
|  .      &lt;br /&gt;
|  .               &lt;br /&gt;
|  create   &lt;br /&gt;
|  .                 &lt;br /&gt;
|  .         &lt;br /&gt;
|- &lt;br /&gt;
|  rest_init()                  &lt;br /&gt;
|  .                     &lt;br /&gt;
|  .         &lt;br /&gt;
|  .     &lt;br /&gt;
|  .      &lt;br /&gt;
|  .               &lt;br /&gt;
|  .        &lt;br /&gt;
|  enable_preemption &lt;br /&gt;
|  .         &lt;br /&gt;
|- &lt;br /&gt;
|  start_kernel()               &lt;br /&gt;
|  .                     &lt;br /&gt;
|  .         &lt;br /&gt;
|  .     &lt;br /&gt;
|  .      &lt;br /&gt;
|  .               &lt;br /&gt;
|  .        &lt;br /&gt;
|  disable preemption&lt;br /&gt;
|  .         &lt;br /&gt;
|- &lt;br /&gt;
|  PREEMPT_BKL                  &lt;br /&gt;
|  .                     &lt;br /&gt;
|  .         &lt;br /&gt;
|  .     &lt;br /&gt;
|  .      &lt;br /&gt;
|  .               &lt;br /&gt;
|  .        &lt;br /&gt;
|  .                 &lt;br /&gt;
|  create    &lt;br /&gt;
|- &lt;br /&gt;
|  _smp_processor_id()          &lt;br /&gt;
|  .                     &lt;br /&gt;
|  .         &lt;br /&gt;
|  .     &lt;br /&gt;
|  .      &lt;br /&gt;
|  .               &lt;br /&gt;
|  .        &lt;br /&gt;
|  .                 &lt;br /&gt;
|  create    &lt;br /&gt;
|- &lt;br /&gt;
|  current_cpu_data             &lt;br /&gt;
|  .                     &lt;br /&gt;
|  .         &lt;br /&gt;
|  .     &lt;br /&gt;
|  .      &lt;br /&gt;
|  .               &lt;br /&gt;
|  .        &lt;br /&gt;
|  .                 &lt;br /&gt;
|  replace with cpu_data[] &lt;br /&gt;
|- &lt;br /&gt;
|  in_atomic()                  &lt;br /&gt;
|  .                     &lt;br /&gt;
|  .         &lt;br /&gt;
|  .     &lt;br /&gt;
|  .      &lt;br /&gt;
|  .               &lt;br /&gt;
|  .        &lt;br /&gt;
|  .                 &lt;br /&gt;
|  alters    &lt;br /&gt;
|- &lt;br /&gt;
|  nmi_enter/exit(), irq_enter()&lt;br /&gt;
|  .                     &lt;br /&gt;
|  .         &lt;br /&gt;
|  .     &lt;br /&gt;
|  .      &lt;br /&gt;
|  .               &lt;br /&gt;
|  .        &lt;br /&gt;
|  .                 &lt;br /&gt;
|  alter to use add/sub_preempt_count() &lt;br /&gt;
|- &lt;br /&gt;
|  add/sub_preempt_count()      &lt;br /&gt;
|  .                     &lt;br /&gt;
|  .         &lt;br /&gt;
|  .     &lt;br /&gt;
|  .      &lt;br /&gt;
|  .               &lt;br /&gt;
|  .        &lt;br /&gt;
|  .                 &lt;br /&gt;
|  create    &lt;br /&gt;
|- &lt;br /&gt;
|  &amp;lt;u&amp;gt;ARRAY(0x1016aca4)&amp;lt;/u&amp;gt;release_kernel_lock() &lt;br /&gt;
|  .              &lt;br /&gt;
|  .         &lt;br /&gt;
|  .     &lt;br /&gt;
|  .      &lt;br /&gt;
|  .               &lt;br /&gt;
|  .        &lt;br /&gt;
|  .                 &lt;br /&gt;
|  create    &lt;br /&gt;
|- &lt;br /&gt;
|  lock/unlock_kernel()         &lt;br /&gt;
|  .                     &lt;br /&gt;
|  .         &lt;br /&gt;
|  .     &lt;br /&gt;
|  .      &lt;br /&gt;
|  .               &lt;br /&gt;
|  .        &lt;br /&gt;
|  .                 &lt;br /&gt;
|  create sem version&lt;br /&gt;
|- &lt;br /&gt;
|  DEBUG_PREEMPT                &lt;br /&gt;
|  .                     &lt;br /&gt;
|  .         &lt;br /&gt;
|  .     &lt;br /&gt;
|  .      &lt;br /&gt;
|  .               &lt;br /&gt;
|  .        &lt;br /&gt;
|  .                 &lt;br /&gt;
|  create    &lt;br /&gt;
|- &lt;br /&gt;
|  smp_processor_id()           &lt;br /&gt;
|  .                     &lt;br /&gt;
|  .         &lt;br /&gt;
|  .     &lt;br /&gt;
|  .      &lt;br /&gt;
|  .               &lt;br /&gt;
|  .        &lt;br /&gt;
|  .                 &lt;br /&gt;
|  add debug version&lt;br /&gt;
|- &lt;br /&gt;
|  might_sleep()                &lt;br /&gt;
|  .                     &lt;br /&gt;
|  .         &lt;br /&gt;
|  .     &lt;br /&gt;
|  .      &lt;br /&gt;
|  .               &lt;br /&gt;
|  .        &lt;br /&gt;
|  .                 &lt;br /&gt;
|  .         &lt;br /&gt;
|  created in rtp3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Sub-patch summaries ==&lt;br /&gt;
* preempt-smp - spin irq-nicely and request cross-CPU lock-breaks if needed.&lt;br /&gt;
*** add break_lock field to spinlock_t and rwlock_t, and add _raw_read_trylock() function&lt;br /&gt;
*** generic_raw_read_trylock() needs to an ARCH-optimized version&lt;br /&gt;
* preempt-cleanup - fixes some issues with cond_resched, and adds need_lockbreak()&lt;br /&gt;
* add-lock_need_resched - self-explanatory&lt;br /&gt;
* sched-add-cond_resched_softirq - allows some softirqs-disabled codepaths to preempt&lt;br /&gt;
* *fix-scheduling*, break-latency* - add cond_resched() to lots of places&lt;br /&gt;
*** add lock_kernel and unlock_kernel in a few places&lt;br /&gt;
*** adjust some routines to allow rescheduling better (dependent on PREEMPT and SMP)&lt;br /&gt;
* fix-keventd-execution-dependency - schedule work differently during kevent initialization&lt;br /&gt;
* idle-thread-preemption-fix - disable preemption during bootup (until idle thread is running)&lt;br /&gt;
* remove-the-bkl-by-turning-it-into-a-sempahore - self-explanatory&lt;br /&gt;
*** adds _smp_processor_id() to help debug incorrect usage of this routine&lt;br /&gt;
*** adds add/sub_preempt_count, with debug aids to detect underflows&lt;br /&gt;
*** adds DEBUG_PREEMPT to enable both of the above&lt;br /&gt;
*** replace current_cpu_data with cpu_data[_smp_processor_id()]&lt;br /&gt;
*** add PREEMPT_BKL, and change routines lock/unlock_kernel to use a semaphore&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Terminology ==&lt;br /&gt;
* voluntary preempt = add preemption points to PREEMPT kernels (mostly via added calls to cond_resched())&lt;br /&gt;
* might_sleep =&lt;br /&gt;
* latency timing = system for keeping track of preemption request vs. actual preemption occurence&lt;br /&gt;
** this is used to emit warnings when a user-defined threshold is exceeded, and is useful for debugging the preemption features of this patchset&lt;br /&gt;
* latency trace = system for logging preemption-related events&lt;/div&gt;</summary>
		<author><name>RBot</name></author>	</entry>

	</feed>