<?xml version="1.0" ?>

<kc>

<title>Kernel Traffic</title>

<author contact="mailto:zbrown@tumblerings.org">Zack Brown</author>

<issue num="299" date="06 Mar 2005 00:00:00 -0800" />

<mailbox-stats>
	<global-stats>
		<generated-at>Sun Mar  6 22:36:38 2005</generated-at>
		<first-message>2005/01/20 01:16:17</first-message>
		<last-message>2005/01/25 22:57:58</last-message>
		<totals>
			<n-messages>1452</n-messages>
			<total-size>9MB</total-size>
			<avg-size>6KB</avg-size>
			<n-writers>522</n-writers>
			<wrote-more-then-1-message>210</wrote-more-then-1-message>
			<n-lines>141582</n-lines>
			<header-size>80457</header-size>
			<n-user-agents>62</n-user-agents>
			<n-organisations>35</n-organisations>
			<n-toplevel-domains>35</n-toplevel-domains>
		</totals>
		<averages>
			<lines-per-message>97</lines-per-message>
			<lines-per-header>55</lines-per-header>
			<header-percent-of-message>56.83%</header-percent-of-message>
			<header-percent-of-total>44.49%</header-percent-of-total>
			<line-length>21755</line-length>
			<bits-per-byte>4.2434</bits-per-byte>
		</averages>
		<importance>
			<low>0.00%</low>
			<normal>0.62%</normal>
			<high>0.00%</high>
		</importance>

	</global-stats>
	<top-writers>
		<top-writer rank="1">
			<e-mail-addr>Ingo Molnar</e-mail-addr>
			<n-messages>63</n-messages>
			<avg-size>5KB</avg-size>
			<total-size>295KB</total-size>
			<mostly-written-at>15:38</mostly-written-at>
		</top-writer>
		<top-writer rank="2">
			<e-mail-addr>joq@io.com</e-mail-addr>
			<n-messages>49</n-messages>
			<avg-size>5KB</avg-size>
			<total-size>241KB</total-size>
			<mostly-written-at>13:55</mostly-written-at>
		</top-writer>
		<top-writer rank="3">
			<e-mail-addr>Con Kolivas</e-mail-addr>
			<n-messages>37</n-messages>
			<avg-size>7KB</avg-size>
			<total-size>231KB</total-size>
			<mostly-written-at>11:35</mostly-written-at>
		</top-writer>
		<top-writer rank="4">
			<e-mail-addr>Vojtech Pavlik</e-mail-addr>
			<n-messages>32</n-messages>
			<avg-size>5KB</avg-size>
			<total-size>150KB</total-size>
			<mostly-written-at>15:22</mostly-written-at>
		</top-writer>
		<top-writer rank="5">
			<e-mail-addr>Stelian Pop</e-mail-addr>
			<n-messages>28</n-messages>
			<avg-size>6KB</avg-size>
			<total-size>158KB</total-size>
			<mostly-written-at>15:58</mostly-written-at>
		</top-writer>
	</top-writers>
	<top-subjects>
		<top-subject rank="1">
			<subject>[RFC] Linux Kernel Subversion Howto</subject>
			<n-messages>108</n-messages>
			<avg-size>5KB</avg-size>
			<total-size>508KB</total-size>
			<mostly-written-at>12:11</mostly-written-at>
		</top-subject>
		<top-subject rank="2">
			<subject>[patch, 2.6.11-rc2] sched: RLIMIT_RT_CPU_RATIO feature</subject>
			<n-messages>75</n-messages>
			<avg-size>6KB</avg-size>
			<total-size>384KB</total-size>
			<mostly-written-at>13:53</mostly-written-at>
		</top-subject>
		<top-subject rank="3">
			<subject>Touchpad problems with 2.6.11-rc2</subject>
			<n-messages>49</n-messages>
			<avg-size>5KB</avg-size>
			<total-size>207KB</total-size>
			<mostly-written-at>11:00</mostly-written-at>
		</top-subject>
		<top-subject rank="4">
			<subject>[PATCH]sched: Isochronous class v2 for unprivileged soft rt</subject>
			<n-messages>44</n-messages>
			<avg-size>6KB</avg-size>
			<total-size>264KB</total-size>
			<mostly-written-at>13:57</mostly-written-at>
		</top-subject>
		<top-subject rank="5">
			<subject>[RFC] Reliable video POSTing on resume</subject>
			<n-messages>41</n-messages>
			<avg-size>4KB</avg-size>
			<total-size>164KB</total-size>
			<mostly-written-at>13:19</mostly-written-at>
		</top-subject>
	</top-subjects>
	<top-receivers>
		<top-receiver rank="1">
			<e-mail-addr>linux</e-mail-addr>
			<n-messages>249</n-messages>
			<avg-size>8KB</avg-size>
			<total-size>2MB</total-size>
			<mostly-written-at>14:15</mostly-written-at>
		</top-receiver>
		<top-receiver rank="2">
			<e-mail-addr>akpm@osdl.org</e-mail-addr>
			<n-messages>97</n-messages>
			<avg-size>9KB</avg-size>
			<total-size>846KB</total-size>
			<mostly-written-at>15:51</mostly-written-at>
		</top-receiver>
		<top-receiver rank="3">
			<e-mail-addr>joq@io.com</e-mail-addr>
			<n-messages>58</n-messages>
			<avg-size>7KB</avg-size>
			<total-size>357KB</total-size>
			<mostly-written-at>13:17</mostly-written-at>
		</top-receiver>
		<top-receiver rank="4">
			<e-mail-addr>Ingo Molnar</e-mail-addr>
			<n-messages>58</n-messages>
			<avg-size>6KB</avg-size>
			<total-size>307KB</total-size>
			<mostly-written-at>12:31</mostly-written-at>
		</top-receiver>
		<top-receiver rank="5">
			<e-mail-addr>Con Kolivas</e-mail-addr>
			<n-messages>35</n-messages>
			<avg-size>6KB</avg-size>
			<total-size>182KB</total-size>
			<mostly-written-at>11:26</mostly-written-at>
		</top-receiver>
	</top-receivers>
	<top-ccers>
		<top-ccers rank="1">
			<e-mail-addr>LKML</e-mail-addr>
			<n-messages>546</n-messages>
			<avg-size>6KB</avg-size>
			<total-size>3MB</total-size>
			<mostly-written-at>13:36</mostly-written-at>
		</top-ccers>
		<top-ccers rank="2">
			<e-mail-addr>Andrew Morton</e-mail-addr>
			<n-messages>97</n-messages>
			<avg-size>7KB</avg-size>
			<total-size>633KB</total-size>
			<mostly-written-at>13:45</mostly-written-at>
		</top-ccers>
		<top-ccers rank="3">
			<e-mail-addr>Ingo Molnar</e-mail-addr>
			<n-messages>83</n-messages>
			<avg-size>6KB</avg-size>
			<total-size>442KB</total-size>
			<mostly-written-at>13:17</mostly-written-at>
		</top-ccers>
		<top-ccers rank="4">
			<e-mail-addr>Jack O'Quin</e-mail-addr>
			<n-messages>60</n-messages>
			<avg-size>5KB</avg-size>
			<total-size>286KB</total-size>
			<mostly-written-at>13:12</mostly-written-at>
		</top-ccers>
		<top-ccers rank="5">
			<e-mail-addr>Paul Davis</e-mail-addr>
			<n-messages>52</n-messages>
			<avg-size>5KB</avg-size>
			<total-size>256KB</total-size>
			<mostly-written-at>13:44</mostly-written-at>
		</top-ccers>
	</top-ccers>
	<top-level-domains>
		<tld rank="1">
			<name>com</name>
			<freq>574</freq>
		</tld>
		<tld rank="2">
			<name>org</name>
			<freq>239</freq>
		</tld>
		<tld rank="3">
			<name>net</name>
			<freq>149</freq>
		</tld>
		<tld rank="4">
			<name>de</name>
			<freq>136</freq>
		</tld>
		<tld rank="5">
			<name>hu</name>
			<freq>71</freq>
		</tld>
	</top-level-domains>
	<top-timezones>
		<tz rank="1">
			<name>+0100</name>
			<freq>481</freq>
		</tz>
		<tz rank="2">
			<name>-0500</name>
			<freq>236</freq>
		</tz>
		<tz rank="3">
			<name>-0800</name>
			<freq>227</freq>
		</tz>
		<tz rank="4">
			<name>+0000</name>
			<freq>113</freq>
		</tz>
		<tz rank="5">
			<name>+1100</name>
			<freq>108</freq>
		</tz>
	</top-timezones>
	<top-organisations>
		<org rank="1">
			<name>Red Hat, Inc.</name>
			<freq>15</freq>
			<bytes>78KB</bytes>
		</org>
		<org rank="2">
			<name>SUSE/Novell</name>
			<freq>10</freq>
			<bytes>153KB</bytes>
		</org>
		<org rank="3">
			<name>Grupo PIE</name>
			<freq>10</freq>
			<bytes>61KB</bytes>
		</org>
		<org rank="4">
			<name>SGI</name>
			<freq>8</freq>
			<bytes>62KB</bytes>
		</org>
		<org rank="5">
			<name>Red Hat Global Engineering Services Compiler Team</name>
			<freq>8</freq>
			<bytes>48KB</bytes>
		</org>
	</top-organisations>
	<top-user-agents>
		<useragent rank="1">
			<name>Mozilla</name>
			<freq>39</freq>
			<bytes>843KB</bytes>
		</useragent>
		<useragent rank="2">
			<name>Evolution</name>
			<freq>35</freq>
			<bytes>858KB</bytes>
		</useragent>
		<useragent rank="3">
			<name>Mutt/1.5.6+20040907i</name>
			<freq>29</freq>
			<bytes>763KB</bytes>
		</useragent>
		<useragent rank="4">
			<name>Mozilla/5.0</name>
			<freq>22</freq>
			<bytes>366KB</bytes>
		</useragent>
		<useragent rank="5">
			<name>Mutt/1.4.1i</name>
			<freq>21</freq>
			<bytes>799KB</bytes>
		</useragent>
	</top-user-agents>
	<messages-per-day>
		<Sunday><msgs>100</msgs><bytes>619KB</bytes></Sunday>
		<Monday><msgs>185</msgs><bytes>893KB</bytes></Monday>
		<Tuesday><msgs>254</msgs><bytes>2MB</bytes></Tuesday>
		<Wednesday><msgs>238</msgs><bytes>2MB</bytes></Wednesday>
		<Thursday><msgs>272</msgs><bytes>2MB</bytes></Thursday>
		<Friday><msgs>247</msgs><bytes>2MB</bytes></Friday>
		<Saturday><msgs>121</msgs><bytes>679KB</bytes></Saturday>
	</messages-per-day>
	<messages-per-month>
		<Jan><msgs>171</msgs><bytes>944KB</bytes></Jan>
		<Feb><msgs>1246</msgs><bytes>8MB</bytes></Feb>
		<Mar><msgs>0</msgs><bytes>0</bytes></Mar>
		<Apr><msgs>0</msgs><bytes>0</bytes></Apr>
		<May><msgs>0</msgs><bytes>0</bytes></May>
		<Jun><msgs>0</msgs><bytes>0</bytes></Jun>
		<Jul><msgs>0</msgs><bytes>0</bytes></Jul>
		<Aug><msgs>0</msgs><bytes>0</bytes></Aug>
		<Sep><msgs>0</msgs><bytes>0</bytes></Sep>
		<Oct><msgs>0</msgs><bytes>0</bytes></Oct>
		<Nov><msgs>0</msgs><bytes>0</bytes></Nov>
		<Dec><msgs>0</msgs><bytes>0</bytes></Dec>
	</messages-per-month>
	<messages-per-day-of-month>
		<day-1><msgs>12</msgs><bytes>75KB</bytes></day-1>
		<day-2><msgs>57</msgs><bytes>259KB</bytes></day-2>
		<day-3><msgs>50</msgs><bytes>243KB</bytes></day-3>
		<day-4><msgs>67</msgs><bytes>302KB</bytes></day-4>
		<day-5><msgs>33</msgs><bytes>171KB</bytes></day-5>
		<day-6><msgs>24</msgs><bytes>114KB</bytes></day-6>
		<day-7><msgs>65</msgs><bytes>327KB</bytes></day-7>
		<day-8><msgs>89</msgs><bytes>486KB</bytes></day-8>
		<day-9><msgs>80</msgs><bytes>530KB</bytes></day-9>
		<day-10><msgs>161</msgs><bytes>1009KB</bytes></day-10>
		<day-11><msgs>161</msgs><bytes>2MB</bytes></day-11>
		<day-12><msgs>63</msgs><bytes>370KB</bytes></day-12>
		<day-13><msgs>60</msgs><bytes>391KB</bytes></day-13>
		<day-14><msgs>92</msgs><bytes>442KB</bytes></day-14>
		<day-15><msgs>128</msgs><bytes>834KB</bytes></day-15>
		<day-16><msgs>82</msgs><bytes>474KB</bytes></day-16>
		<day-17><msgs>23</msgs><bytes>129KB</bytes></day-17>
		<day-18><msgs>0</msgs><bytes>0</bytes></day-18>
		<day-19><msgs>3</msgs><bytes>13KB</bytes></day-19>
		<day-20><msgs>22</msgs><bytes>154KB</bytes></day-20>
		<day-21><msgs>7</msgs><bytes>34KB</bytes></day-21>
		<day-22><msgs>21</msgs><bytes>120KB</bytes></day-22>
		<day-23><msgs>14</msgs><bytes>89KB</bytes></day-23>
		<day-24><msgs>17</msgs><bytes>74KB</bytes></day-24>
		<day-25><msgs>26</msgs><bytes>136KB</bytes></day-25>
		<day-26><msgs>16</msgs><bytes>89KB</bytes></day-26>
		<day-27><msgs>16</msgs><bytes>76KB</bytes></day-27>
		<day-28><msgs>11</msgs><bytes>50KB</bytes></day-28>
		<day-29><msgs>4</msgs><bytes>19KB</bytes></day-29>
		<day-30><msgs>2</msgs><bytes>26KB</bytes></day-30>
		<day-31><msgs>11</msgs><bytes>52KB</bytes></day-31>
	</messages-per-day-of-month>
	<messages-per-hour>
		<hour-1><msgs>33</msgs><bytes>175KB</bytes></hour-1>
		<hour-2><msgs>38</msgs><bytes>364KB</bytes></hour-2>
		<hour-3><msgs>17</msgs><bytes>73KB</bytes></hour-3>
		<hour-4><msgs>2</msgs><bytes>10KB</bytes></hour-4>
		<hour-5><msgs>5</msgs><bytes>21KB</bytes></hour-5>
		<hour-6><msgs>6</msgs><bytes>122KB</bytes></hour-6>
		<hour-7><msgs>31</msgs><bytes>119KB</bytes></hour-7>
		<hour-8><msgs>49</msgs><bytes>231KB</bytes></hour-8>
		<hour-9><msgs>70</msgs><bytes>371KB</bytes></hour-9>
		<hour-10><msgs>94</msgs><bytes>471KB</bytes></hour-10>
		<hour-11><msgs>72</msgs><bytes>360KB</bytes></hour-11>
		<hour-12><msgs>91</msgs><bytes>486KB</bytes></hour-12>
		<hour-13><msgs>89</msgs><bytes>690KB</bytes></hour-13>
		<hour-14><msgs>85</msgs><bytes>385KB</bytes></hour-14>
		<hour-15><msgs>96</msgs><bytes>578KB</bytes></hour-15>
		<hour-16><msgs>92</msgs><bytes>563KB</bytes></hour-16>
		<hour-17><msgs>109</msgs><bytes>857KB</bytes></hour-17>
		<hour-18><msgs>77</msgs><bytes>348KB</bytes></hour-18>
		<hour-19><msgs>67</msgs><bytes>330KB</bytes></hour-19>
		<hour-20><msgs>62</msgs><bytes>336KB</bytes></hour-20>
		<hour-21><msgs>58</msgs><bytes>303KB</bytes></hour-21>
		<hour-22><msgs>69</msgs><bytes>325KB</bytes></hour-22>
		<hour-23><msgs>50</msgs><bytes>265KB</bytes></hour-23>
	</messages-per-hour>
	<created-with><name>mboxstats</name><version>2.2</version><developer>folkert@vanheusden.com</developer><url>http://www.vanheusden.com/mboxstats/</url></created-with>

</mailbox-stats>

<section
  title="Intel Software RAID Driver (iswraid) Going Into 2.4"
  subject="[ANNOUNCE] &quot;iswraid&quot; (ICHxR ataraid sub-driver) for 2.4.29"
  archive="http://groups-beta.google.com/group/fa.linux.kernel/msg/2b5451e7ab02fbd1"
  posts="23"
  startdate="28 Jan 2005 17:15:04 -0800"
  enddate="11 Feb 2005 02:46:19 -0800"
>
<topic>Device Mapper</topic>
<topic>Disk Arrays: RAID</topic>
<topic>Disks: IDE</topic>
<topic>Disks: SCSI</topic>
<topic>Serial ATA</topic>

<mention>Christoph Hellwig</mention>
<mention>Bartlomiej Zolnierkiewicz</mention>

<p>Martins Krikis said:</p>

<quote who="Martins Krikis">

<p>Version 0.1.5 of the Intel Sofware RAID driver
(iswraid) is now available for the 2.4 series kernels at <a
href="http://prdownloads.sourceforge.net/iswraid/2.4.29-iswraid.patch.gz?download">http://prdownloads.sourceforge.net/iswraid/2.4.29-iswraid.patch.gz?download</a></p>

<p>It is an ataraid "subdriver" but uses the SCSI subsystem to
find the RAID member disks. It depends on the libata library,
particularly on either the ata_piix or the ahci driver, that enable
the Serial ATA capabilities in ICH5/ICH6/ICH7 chipsets. More
information is available at the project's home page at <a
href="http://iswraid.sourceforge.net/">http://iswraid.sourceforge.net/</a>.</p>

<p>Driver documentation is included in Documentation/iswraid.txt, which is
part of the patch. The license is GPL.</p>

<p>The changes WRT version 0.1.4.3 are the following:</p>

<p>

<ul>

<li>Resource deallocation bug fixed for failed initializations.</li>

<li>Read IO resubmission to mirror bug fixed.</li>

<li>RAID1E (covers 4-disk RAID10) code added.</li>

<li>More aggressive marking disks as bad in metadata.</li>

<li>Claiming disks for RAID "feature" removed.</li>

<li>Option defaults now customizable from the build configuration.</li>

<li>iswraid_never_fail "feature" watered down into iswraid_resist_failing.</li>

<li>iswraid_halt_degraded now prevents degraded volumes from being
registered.</li>

<li>Debug printouts more customizable.</li>

<li>Some code cleanup and optimization.</li>

<li>Documentation changes.</li>

</ul>

</p>

<p>Please consider this driver for inclusion in the 2.4 kernel tree.</p>

</quote>

<p>Jeff Garzik liked the patch, but Arjan van de Ven said, <quote who="Arjan
van de Ven">personally I consider it a new feature, and I don't consider new
features like this appropriate for a 2.4 deep maintenance stream.</quote>
Bartlomiej Zolnierkiewicz sided with Arjan, and Jeff replied:</p>

<quote who="Jeff Garzik">

<p>It sorts sucks for users with that hardware.  The typical complaint comes
from trying to share data between Windows and Linux, where "just use md"
isn't a solution.</p>

<p>Without device mapper (another new feature) to enable dmraid, these users
are just sorta S.O.L.</p>

<p>I consider it not a new feature, but a missing feature, since otherwise
user data cannot be accessed in the RAID setups.</p>

</quote>

<p>Christoph Hellwig said those people should upgrade to 2.6, and Arjan pointed
out that Jeff's objections were true of all new hardware. The discussion went
back and forth with no resolution, but at one point Marcelo Tosatti said:</p>

<quote who="Marcelo Tosatti">

<p>I personally dislike and discourage the addition of ANY new drivers to v2.4
at this point, and I sincerely appreciate every argument against iswraid, but
I have no problems with it because it looks like a valid special case since
it allows users to access their ICH5/6 RAID partitions, as Jeff mentions.</p>

<p>Moreover the driver is going to die with v2.4 anyway, its not like any
future compatibility problem is being introduced.</p>

<p>So I understand the argument against having it in the tree: the elegant
way of doing it is to use dmraid.</p>

<p>But I dont buy it as an argument against merging it in a dying v2.4.x
tree which purpose is to serve existing users.</p>

<p>You are mistaken in arguing that "oh, since this driver can be merged,
its likely that any v2.6 HW support/driver will be accepted in v2.4".</p>

<p>So, its up to Jeff, and he seems to be OK with it.</p>

</quote>

</section>

<section
  title="HOWTO For Subversion Access To Kernel Sources"
  subject="[RFC] Linux Kernel Subversion Howto"
  archive="http://groups-beta.google.com/group/fa.linux.kernel/msg/68a6ec1d2e4f71e5"
  posts="108"
  startdate="02 Feb 2005 07:54:04 -0800"
  enddate="11 Feb 2005 12:00:41 -0800"
>
<topic>Version Control</topic>

<mention>Larry McVoy</mention>
<mention>Zack Brown</mention>
<mention>Ben Collins</mention>

<p>Stelian Pop said:</p>

<quote who="Stelian Pop">

<p>I've played lately a bit with Subversion and used it for managing the
kernel sources, using Larry McVoy's bk2cvs bridge and Ben Collins' bkcvs2svn
conversion script.</p>

<p>Since there is little information on the web on how to properly set up
a SVN repository and use it for tracking the latest kernel tree, I wrote
a small howto (modeled after the bk kernel howto) in case it can be useful
for other people too.</p>

<p>Feel free to comment on it (but let's not start a new BK flamewar or SVN
bashing session please). If there is enough interest I'll submit a patch to
include this in the kernel Documentation/ directory.</p>

<p>I've put it also on my web page along with the necessary scripts: <a
href="http://popies.net/svn-kernel/">http://popies.net/svn-kernel/</a></p>

</quote>

<p>This was very well received, and Larry McVoy responded promptly to
questions and requests regarding BitKeeper; nevertheless the discussion
quickly degenerated to bickering between kernel folks who wanted more
information than BitMover was prepared to give about their patch-handling
features; and Larry, who wanted to impede the creation of competing software,
and protect what he feels is his intellectual property.</p>

<editorialize who="Zack Brown">I have to hand it to Larry. As the years go
on and no free equivalent rises to replace BitKeeper, his claims become more
and more justified. In the old days, open source proponents believed that
no proprietary system could keep up with a horde of developers working on
a free equivalent. Larry has apparently disproved this, much to the chagrin
of many kernel developers and free software lovers everywhere.</editorialize>

</section>

<section
  title="Preempt Real-Time For ARM"
  subject="Preempt Real-time for ARM"
  archive="http://groups-beta.google.com/group/linux.kernel/msg/124b282b587ec964"
  posts="9"
  startdate="05 Feb 2005 10:36:46 -0800"
  enddate="10 Feb 2005 00:21:00 -0800"
>
<topic>Real-Time</topic>
<topic>SMP</topic>

<mention>Ingo Molnar</mention>

<p>Daniel Walker said:</p>

<quote who="Daniel Walker">

<p>This is a release of Preempt Real-time for ARM . It includes everything up
to CONFIG_PREEMPT_RT , and all of the latency tracing except interrupts off
timing. The timing also excludes syscalls. This patch includes only a port
to OMAP boards. However, it should be straight forward to get it working on
other boards.</p>

<p>The biggest point of discussion relates to the interrupts in threads
implementation. It is largely identical to what is implemented in the generic
irq handling. However, ARM doesn't not implement generic irq handling, and
will not support it in the near future. I am not in support of two different
threaded interrupt implementations.</p>

<p>I recently made a proposal to separate the threaded interrupt handling
from the generic irq handling, but I'm open to other ideas.</p>

</quote>

<p>Thomas Gleixner said that on ARM, <quote who="Thomas Gleixner">We have
done the conversion to the generic irq handling and it works fine on a couple
of machines.  I'm just waiting until the new SMP bits are there before I have
another go and clean up the missing SMP bits.</quote> Ingo Molnar was very
pleased to see this development, but Russell King had his doubts. He said:</p>

<quote who="Russell King">

<p>Well, I remain unconvinced about the generic irq handling.</p>

<p>Back in 2.4 times, ARM used to use the x86 way to handle IRQs, and it
caused lots of dropped IRQs for CF cards and the like, particularly in mixed
level/edge triggered interrupt environments (where a mixture of level and
edge based outputs are connected to edge triggered inputs.)</p>

<p>The ARM IRQ code got completely rewritten during 2.5 with a clean design,
generated from the requirements of the machines.</p>

<p>This caused major changes throughout all the machine support files, and I'm
_NOT_, repeat _NOT_ going to consider going back to some half baked approach
which doesn't really fit the needs of the ARM architecture, just because
"oh, it's generic."  If it doesn't work reliably, I'm not interested.</p>

<p>This is especially so when it impacts so many machines in ways specific
to each machine, and there's no way to get them tested in one go.</p>

<p>If this is to be done, doing it in the middle of a stable kernel series
is NOT the time or place to do it.  I have recently had people complaining
about the "stability" of 2.6, particularly in relation to changes made by
other people affecting drivers.</p>

<p>Consider these questions in relation to the generic IRQ code:</p>

<p>

<ol>

<li>Does it know the difference between handling level, edge-based and
"simple" IRQs?  ("simple" IRQs are those which are cascaded, but don't have
their own individual interrupt mask controls.)</li>

<li>Does the generic autoprobe code know which IRQs can be autoprobed and
which can't?  (cascade interrupts are just one example of interrupts which
must not be autoprobed.  There may be other reasons you wish to avoid probing
other interrupts on a particular machine, which the machine support code
knows about.)</li>

<li>Does the generic IRQ code know which IRQs can be claimed and which can't?
(IRQs 0 to NR_IRQS aren't always claimable, even when they appear to be
available - iow, desc-&gt;handler != &amp;no_irq_type.)</li>

<li>Does it allow per "hw type" retriggering of interrupts, even if the
hardware itself is not capable of such an action?  (and running these
interrupts at the next hardware interrupt?)</li>

<li>Does it allow control of interrupt wakeup sources?</li>

<li>Does it allow architectures to define their own irq_desc_t so that all
the data for a particular IRQ is localised and contained within one data
structure?</li>

</ol>

</p>

<p>What you'll find is that the ARM interrupt structure is designed to
efficiently meet the requirements of our wide range of hardware interrupt
controllers, with chained interrupt controllers, with as low latency as
possible.</p>

<p>In essence, I'm opposed to completely rewriting the ARM interrupt handling
at this stage.</p>

</quote>

<p>Thomas agreed in principle with the idea that reliability was more important
then just making code generic for its own sake. And he agreed that the testing
issue was significant. But he expressed his hope that Russell would be open
to the conversion, especially since he expected other architectures to benefit
from a conversion as well. Russell was unmoved, and after a couple more posts
he abandoned the thread, saying, <quote who="Russell King">I've said why
per-IRQ locks are incorrect for the non-RT cases on ARM, but unfortunately
just repeating the reasons why it's wrong isn't getting me anywhere either.
So shrug, all I can to is explain why it's wrong, and if people choose not
to listen there's nothing more I can do.</quote></p>

</section>

<section
  title="Kernel Size Reduction; Linus' Main System No Longer x86"
  subject="out-of-line x86 &quot;put_user()&quot; implementation"
  archive="http://groups-beta.google.com/group/fa.linux.kernel/msg/81607057a9bfd15b"
  posts="17"
  startdate="06 Feb 2005 22:23:51 -0800"
  enddate="11 Feb 2005 18:03:02 -0800"
>

<mention>Pavel Machek</mention>

<p>Linus Torvalds said:</p>

<quote who="Linus Torvalds">

<p>I was looking at some of the code we generate, and happened to notice that
we have this strange situation where the x86 "get_user()" macros generate
out-of-line code to do all the address verification etc, but the "put_user()"
ones do not, and do everything inline.</p>

<p>I also noticed that (probably as a result of this), our "put_user()" on
old i386 machines does not do the full magic manual page-following. Which
means that copy-on-write doesn't necessarily work right due to the broken
paging hw on the original 386 core.</p>

<p>I didn't fix the second part, but at least making things out-of-line makes
it possible. And making "put_user()" be out-of-line seemed quite doable.</p>

<p>I no longer use x86 as my main machine, so this patch is totally untested.
I've compiled it to see that things look somewhat sane, but that doesn't
mean much. If I forgot some register or screwed something else up, this
will result in a totally nonworking kernel, but I thought that maybe
somebody else would be interested in looking at whether this (a) works,
(b) migth even shrink the kernel and (c) might make us able to DTRT wrt the
page table following crud (old i386 cores may be hard to find these days,
so maybe people don't care).</p>

</quote>

<p>Ingo Molnar confirmed that Linus' patch <quote who="Ingo Molnar">boots fine
and shrinks the image size quite noticeably</quote>. Linus replied, <quote
who="Linus Torvalds">Goodie. Here's a slightly more recent version</quote>,
and added, <quote who="Linus Torvalds">I'm not going to put this into 2.6.11,
since I worry about compiler interactions, but the more people who test it
anyway, the better.</quote> Pavel Machek suggested including the patch in
Andrew Morton's -mm tree. At one point in the thread, Linus asked Andrew
if this would be OK, and Andrew replied, <quote who="Andrew Morton">I'll
take patches from anyone ;)</quote>. And Linus said, <quote who="Linus
Torvalds">You'll never live it down. Once you get a name for being easy,
you'll always be known as Andrew "patch-ho" Morton.</quote></p>

</section>

<section
  title="Elo Serial Touchscreen Driver; Generic Touchscreen Support"
  subject="[RFC/RFT] [patch] Elo serial touchscreen driver"
  archive="http://groups-beta.google.com/group/fa.linux.kernel/msg/dd36de62ff0ef5b8"
  posts="23"
  startdate="08 Feb 2005 08:42:27 -0800"
  enddate="10 Feb 2005 08:16:09 -0800"
>
<topic>Touchscreen</topic>

<mention>Dmitry Torokhov</mention>

<p>Vojtech Pavlik said:</p>

<quote who="Vojtech Pavlik">

<p>I've written a driver for probably the most common touchscreen type -
the serial Elo touchscreen.</p>

<p>The driver should handle all generations of serial Elos, as it handles
Elo 10-byte, 6-byte, 4-byte and 3-byte protocols.</p>

</quote>

<p>Dmitry Torokhov liked the patch, though he admitted he had no hardware
to test it. Paulo Marques was very enthusiastic about touch-screen support,
explaining, <quote who="Paulo Marques">I work for a company that develops
software for restaurants, and we have a Linux port of our main application
running in actual restaurants with a custom made Linux distribution for
about 2 years now.  We had to support a number of touchscreens, and we do it
in the application itself, reading the serial port and processing the data.
If this could go into the kernel, then our application needed only to read the
input device, and handle events, no matter what touch screen was there. That
would be a great improvement :)</quote> Vojtech was thrilled to see such
interest. Several posts down the line, Paulo Marques suggested:</p>

<quote who="Paulo Marques">

<p>I sometimes feel that we should have a "generic" touch screen driver from
looking at the code for the different brands.</p>

<p>Almost all touch screen data goes something like this:</p>

<p>

<ul>

<li>every packet is fixed size, N bytes long</li>

<li>the "header" bytes can be described by &lt;data&gt; AND &lt;mask&gt; ==
something expected</li>

<li>the X,Y,pressure,touch data can be described as "starting at bit B,
length N, multiply by Z". An array of these tokens should be able to handle
coordinates broken into several.</li>

</ul>

</p>

<p>If this information could be passed as a module parameter, new touchscreens
could be supported without any kernel modification.</p>

<p>We could parse a definition "string", like this:</p>

<p>"SIZE:10,SYNC:0:8:85,SYNC:8:8:54,X:24:8:1,X:32:8:256,Y:40:8:1,Y:48:8:256,T:16:2:1"</p>

<p>This string defines the touch driver for elotouch, 10 bytes packet (I
didn't include the pressure reading, for simplification).</p>

<p>I currently have 6 different "drivers" that would all fit into this
model. The same goes for all 3 elotouch protocols that you implemented.</p>

<p>Does this sound like a good idea?</p>

</quote>

<p>But Vojtech said no, the amount of code saved by this approach would not
justify the obfuscation it would produce. Nonetheless, a lively discussion
ensued, in which folks discussed various technical issues involved in
touchscreen support.</p>

</section>

<section
  title="RelayFS Updated"
  subject="[PATCH] relayfs redux, part 4"
  archive="http://groups-beta.google.com/group/linux.kernel/msg/aa9b24ae7ada476b"
  posts="7"
  startdate="09 Feb 2005 18:49:36 -0800"
  enddate="10 Feb 2005 01:14:40 -0800"
>
<topic>Assembly</topic>
<topic>SMP</topic>

<p>Tom Zanussi said:</p>

<quote who="Tom Zanussi">

<p>Here's the latest relayfs patch, incorporating the previous round of
suggestions.  Thanks to everyone who sent comments.  Here's a list of
the major changes:</p>

<ul>

<li>replaced remap_page_range() and reserved bits with a nopage()
  handler.</li>

<li>buffers are now allocated/freed as part of inode alloc/destroy.</li>

<li>got rid of the automatic creation/teardown of directory hierarchies,
  and exported create/remove dir functions instead.</li>

<li>replaced the fileop callback with explicit map/unmap callbacks - these
  were the only fileops currently being used by anything, so I got rid
  of the other cases.</li>

<li>relay_write() and __relay_write() no longer return a value - it
  doesn't really make sense for clients to check a return value in the
  fast path anyway.</li>

<li>added a buf_full() callback to notify users that a buffer has become
  full and therefore events might be lost.</li>

<li>got rid of the 'helper' macros, which weren't helping much.</li>

<li>various other bits of code and comment cleanup.</li>

</ul>

<p>Also, there was some question as to whether or not the memcpy in
relay_write() was being inlined properly - I looked at the generated
assembly code, and it seems to be, but I'll be taking a closer look
later.</p>

<p>This is what the API now looks like:</p>

<dl>
  <dt>API functions:</dt>
<dd>

<p>rchan *relay_open(base_filename, parent, subbuf_size, n_subbufs, flags, callbacks);<br />
    void relay_close(chan);<br />
    dentry *relayfs_create_dir(name, parent);<br />
    int relayfs_remove_dir(dentry);<br />
    void relay_reset(chan);</p>

<p>void relay_write(chan, data, length);<br />
    void __relay_write(chan, data, length);<br />
    void *relay_reserve(chan, length);</p>

<p>void relay_subbufs_consumed(chan, subbufs_consumed, cpu);<br />
    void relay_commit(buf, subbuf_idx, count);</p>

</dd></dl>

<dl>
  <dt>callbacks</dt>
<dd>

<p>int subbuf_start(buf, subbuf, prev_subbuf_idx);<br />
    int deliver(buffer, subbuf, subbuf_idx);<br />
    void buf_mapped(buf, filp);<br />
    void buf_unmapped(buf, filp);<br />
    void buf_full(buf);</p>

</dd></dl>

<p>As before, I've tested this code on a single proc machine using a
hacked version of the kprobes network packet tracing module, which can
be found here:</p>

<p><a
href="http://prdownloads.sourceforge.net/dprobes/plog.tar.gz?download">http://prdownloads.sourceforge.net/dprobes/plog.tar.gz?download</a></p>

<p>If people are more or less happy with the current version, I'll do
some SMP testing and write some Documentation.</p>

</quote>

<p>There seemed to be general support for Tom's work, with some technical
criticism; though no real discussion ensured.</p>

</section>

<section
  title="Linux 2.4.30-pre1 Released"
  subject="Linux 2.4.30-pre1"
  archive="http://groups-beta.google.com/group/linux.kernel/msg/6ff4acbe68874615"
  posts="1"
  startdate="10 Feb 2005 00:40:28 -0800"
>
<topic>Serial ATA</topic>

<p>Marcelo Tosatti announced Linux 2.4.30-pre1, saying:</p>

<quote who="Marcelo Tosatti">

<p>Here goes v2.4.30-pre1.</p>

<p>It contains, amongst others, a SATA update, series of networking bug fixes,
and v2.6 hardening backports.</p>

</quote>

</section>

<section
  title="Linux 2.6.11-rc4 Released; Status Of SIS5595 Driver In 2.6"
  subject="Linux 2.6.11-rc4"
  archive="http://groups-beta.google.com/group/linux.kernel/msg/0479fffdf7125bf8"
  posts="9"
  startdate="12 Feb 2005 19:34:11 -0800"
  enddate="14 Feb 2005 10:12:21 -0800"
>
<topic>I2C</topic>
<topic>Kernel Release Announcement</topic>
<topic>Version Control</topic>

<p>Linus Torvalds announced Linux 2.6.11-rc4, saying:</p>

<quote who="Linus Torvalds">

<p>this is hopefully the last -rc kernel before the real 2.6.11, so please
give it a whirl, and complain loudly about anything broken.</p>

<p>As can be seen from the shortlog, most of the changes are pretty trivial.
I think the biggest change is the radeon updates, and some of the NLS codepage
things caused big diffs even if the changes themselves are pretty trivial
(oh, and moving the ia64 "shubio.h" file accounts for about seven thousand
lines of diffs, but no real changes ;)</p>

<p>In short: some driver updates, some arm/uml/sparc updates, and various
random (mostly) one-liners all over. The most noticeable of the one-liners
is hopefully that raid5/6 should work again.</p>

</quote>

<p>Enrico Bartky asked, <quote who="Enrico Bartky">It is possible to include
the SIS5595 chip driver to the final release?</quote> But Jean Delvare replied,
<quote who="Jean Delvare">No, sorry. It's not even in -mm yet (in fact it's
even not in Greg's bk-i2c tree yet). It needs to spend some time (and get
some testing) in -mm before it can go to Linus.  You are still welcome to
get the <a href="http://lkml.org/lkml/diff/2005/2/6/192/1">patch</a> and
apply it manually to your tree if you want support right now.</quote></p>

</section>

<section
  title="CPU Scheduler Documentation For Linux 2.6.8.1"
  subject="Linux 2.6.8.1 CPU Scheduler Documentation"
  archive="http://groups-beta.google.com/group/fa.linux.kernel/msg/08e3110bf417838f"
  posts="3"
  startdate="13 Feb 2005 16:23:15 -0800"
  enddate="13 Feb 2005 22:18:56 -0800"
>

<mention>Nick Piggin</mention>
<mention>Willy Tarreau</mention>

<p>Josh Aas said:</p>

<quote who="Josh Aas">

<p>I have written an introduction to the Linux 2.6.8.1 CPU scheduler
implementation. It should help people to understand what is going on in the
scheduler code faster than they would be able to by just reading through
the code. The paper can be downloaded in PDF or LyX form from here:</p>

<p><a
href="http://josh.trancesoftware.com/linux/">http://josh.trancesoftware.com/linux/</a></p>

<p>This paper will never be "done," as I'd like to keep improving it over
time, and updating it to newer versions of the kernel as time allows. If you
have comments, suggestions, or corrections you'd like to make, please email
me. Technical corrections in particular would be appreciated. Hopefully this
can be as accurate and helpful as possible, and will inspire more people to
look into the Linux scheduler.</p>

<p>My employer, SGI, did not ask me to write this paper - it was done as part
of a school project last semester. While SGI owns the copyright to the paper,
they have allowed me to release it under the GNU FDL.</p>

</quote>

<p>Willy Tarreau was very interested in this documentation, and also offered
suggestions on how to produce a better PDF file for it. Nick Piggin also
liked seeing this work done.</p>

</section>

<section
  title="In-Kernel Genetic Library Version 0.2 Released"
  subject="[ANNOUNCE 0/4] Genetic-lib version 0.2"
  archive="http://groups-beta.google.com/group/fa.linux.kernel/msg/8d170de5106a2ccb"
  posts="5"
  startdate="15 Feb 2005 11:29:06 -0800"
  enddate="15 Feb 2005 11:56:33 -0800"
>

<mention>Peter Williams</mention>

<p>Jake Moilanen, continuing from <kcref subject="[ANNOUNCE 0/4][RFC]
Genetic Algorithm Library" startdate="06 Jan 2005 08:08:44 -0800"/>, said:</p>

<quote who="Jake Moilanen">

<p>Here is the next release of the genetic library based against 2.6.10
kernel.</p>

<p>There were numerous changes from the first release, but the major change in
this version is the introduction of phenotypes.  A phenotype is a set of genes
the affect an observable property.  In genetic-library terms, it is a set of
genes that will affect a particular fitness measurement.  Each phenotype will
have a set of children that contain genes that affect a fitness measure.</p>

<p>Now multiple fitness routines can be ran for each genetic library
user.  Then depending on the results of a particular fitness measure, the
specific genes that directly affect that fitness measure can be modified.
This introduces a finer granularity that was missing in the first release
of the genetic-library.</p>

<p>I would like to thank Peter Williams for reworking the Zaphod Scheduler
and help designing the phenotypes.</p>

<p>Some of the other features introduced is shifting the number of mutations
depending on how well a phenotype is performing.  If the current generation
outperformed the previous generation, then the rate of mutation will go down.
Conversely if the current generation performed worst then the previous
generation, the mutation rate will go up.  This mutation rate shift will
do two things.  When generations are improving, it will reduce the number
unnecessary mutations and hone in on the optimal tunables.  When a workload
drastically changes, the fitness should go way down, and the mutation rate
will increase in order to test a greater space of better values quicker.
This should decrease the time it takes to adjust to a new workload.  There is a
limit at 45% of the genes being mutated every generation in order to prevent
the mutation rate spiralling out of control.</p>

<p>SpecJBB and UnixBench are still yielding a 1-3% performance improvement,
however (though it's subjective) the interactiveness has had noticeable
improvements.</p>

<p>I have not broke the Anticipatory IO Scheduler down to a fine granularity
in phenotypes yet.  Any assistance would be greatly appreciated.</p>

<p>Currently I am hosting this project off of:</p>

<p><a href="http://kernel.jakem.net">http://kernel.jakem.net</a></p>

</quote>

</section>

<section
  title="New -hf (&quot;Hot Fix&quot;) Branch Of The 2.4 Tree"
  subject="[ANNOUNCE] kernel 2.4 hotfixes : 2.4.29-hf2"
  archive="http://groups-beta.google.com/group/fa.linux.kernel/msg/4a215fd76d08eca8"
  posts="1"
  startdate="15 Feb 2005 17:06:00 -0800"
>
<topic>Version Control</topic>

<mention>Adrian Bunk</mention>

<p>Willy Tarreau said:</p>

<quote who="Willy Tarreau">

<p>after a short discussion with Marcelo, we quickly agreed that a hotfix
tree would be a good thing for kernel 2.4, since a few months can separate
two stable releases. I offered to help in this area because I already have to
pick random patches from the BK changesets anyway, so the only additional
work will be to pack them in a more presentable way than what I can do
just for me. Marcelo offered to help me by telling me when he thinks that
a particular patch needs to be merged or excluded.</p>

<p>Overall, the patches included are classified in 6 categories:</p>

<p>

<ul>

<li>security : fixes for security bugs in general</li>
<li>critical : fixes for problems leading to panic, or data corruption</li>
<li>major    : fixes for general system stability (oopses, memory leaks,
...)</li>
<li>minor    : fixes for erroneous behaviours in general.</li>
<li>build    : missing includes, Makefile bugs, etc... which prevents certain
               configurations from being built (here, we should often encounter
               Adrian Bunk's numerous patches :-))</li>
<li>documentation : configure.help and friends. Will most probably be fed by
                    Adrian's contributions too.</li>

</ul>

</p>

<p>As much as possible, I will avoid changes in drivers because we all know
that in this area, a fix for one user breaks another one.</p>

<p>Anyway, all of those patches will be extracted from -BK. I'm not building
a parallel tree (I already have another one for that :-)). The main goal
is that the diff between this kernel and the next release should be smaller
than the diff between previous and next release.</p>

<p>Marcelo and I agreed on the "-hf" suffix (for "Hot Fix"). Two patches
are systematically provided, one with the version in the Makefile, and one
without. The goal is to ease both people using vanilla kernels in production
(who need to check the real version) and people who want a virgin kernel
base to apply external patches while limiting the number of rejects.</p>

<p>A tarball is also included with all the individual patches. A makefile
relies on the "CONTENTS" file itself to rebuild the patch against the kernel
of your choice. It is very easy to add/remove patches in the CONTENTS file,
so I hope it will be convenient enough for people who don't want to include
minor or documentation fixes for example. It is documented anyway.</p>

<p>I've started with 2.4.29 and released 2.4.29-hf2 a few days ago. In fact,
I was waiting for the site to migrate from home to my company (EXOSEC) to
benefit from more outgoing bandwidth, before sending this announce. Despite
this, I will try to stay up to date within the shortest time, and release a new
hotfix as soon as either something weird gets fixed, or Marcelo asks me to do
so. In any case, I'll do my best to send an announce here for new releases.</p>

<p>The patches and tarballs are hosted here :</p>

<p><a
href="http://linux.exosec.net/kernel/2.4-hf/">http://linux.exosec.net/kernel/2.4-hf/</a></p>

<p>I'm open to comments, advices, critics, etc, but flames such as "you lose
your time" or "2.4 is dead" will feed /dev/null. One possible improvement
I have already identified would be to publish the work in progress so that
people could get fixes in real time, but if they really need so, they should
download from BK instead.</p>

<p>If this branch gets enough demand, I will maintain several previous
versions in parallel (eg: go back to 2.4.27).</p>

<p>In the mean time, please find here the CONTENTS file which details what
patches have been included and basically what they do.</p>

</quote>

</section>

</kc>

