<?xml version="1.0" ?>

<kc>

<title>Kernel Traffic</title>

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

<issue num="234" date="06 Oct 2003 00:00:00 -0800" />

<headquote>

<p>If you like Kernel Traffic and want to send me a little money, click
here:</p>

<p>

<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
  <input type="hidden" name="cmd" value="_xclick"/>
  <input type="hidden" name="business" value="zbrown@tumblerings.org"/>
  <input type="hidden" name="no_shipping" value="1"/>
  <input type="hidden" name="return" value="http://www.kerneltraffic.org"/>
  <input type="hidden" name="cancel_return" value="http://www.kerneltraffic.org"/>
  <input type="image" src="https://www.paypal.com/images/x-click-but21.gif" alt="https://www.paypal.com/xclick/business=zbrown%40tumblerings.org&amp;no_note=1&amp;tax=0&amp;currency_code=USD" border="0" name="submit"/>
</form>

</p>

</headquote>

<stats posts="1785" size="9034" contrib="501" multiples="254" lastweek="193">

<person posts="69" size="516" who="Greg KH" />
<person posts="55" size="166" who="Alan Cox" />
<person posts="43" size="144" who="Chris Wright" />
<person posts="41" size="215" who="Vojtech Pavlik" />
<person posts="34" size="121" who="Andrew Morton" />
<person posts="31" size="95" who="Jamie Lokier" />
<person posts="29" size="118" who="Andries Brouwer" />
<person posts="28" size="108" who="Nick Piggin" />
<person posts="26" size="83" who="&quot;Luca Veraldi&quot;" />
<person posts="22" size="97" who="Andrea Arcangeli" />
<person posts="22" size="88" who="Andi Kleen" />
<person posts="21" size="71" who="Arjan van de Ven" />
<person posts="21" size="69" who="John Bradford" />
<person posts="20" size="83" who="Jeff Garzik" />
<person posts="19" size="81" who="Jens Axboe" />
<person posts="18" size="265" who="Martin Schwidefsky" />
<person posts="18" size="68" who="Adrian Bunk" />
<person posts="18" size="63" who="(viro)" />
<person posts="17" size="56" who="Bill Davidsen" />
<person posts="17" size="42" who="&quot;David S. Miller&quot;" />
<person posts="16" size="70" who="&quot;Randy.Dunlap&quot;" />
<person posts="14" size="38" who="Linus Torvalds" />
<person posts="13" size="48" who="Stephan von Krawczynski" />
<person posts="13" size="38" who="Dave Jones" />
<person posts="12" size="79" who="Peter Osterlund" />
<person posts="12" size="40" who="Christoph Hellwig" />
<person posts="12" size="39" who=" (bill davidsen)" />
<person posts="11" size="90" who="Matt Mackall" />
<person posts="11" size="85" who="Christoph Hellwig" />
<person posts="11" size="48" who="Adam Belay" />
<person posts="11" size="47" who="Larry McVoy" />
<person posts="11" size="36" who="Sam Ravnborg" />
<person posts="11" size="36" who="Marcelo Tosatti" />
<person posts="11" size="32" who="Pavel Machek" />
<person posts="10" size="74" who="Matthew Dobson" />
<person posts="10" size="61" who="Allen Martin" />
<person posts="10" size="33" who="Mikael Pettersson" />
<person posts="10" size="30" who="Patrick Mochel" />
<person posts="9" size="96" who="&quot;Norman Diamond&quot;" />
<person posts="9" size="52" who="Herbert Poetzl" />
<person posts="9" size="36" who="=?iso-8859-1?Q?J=F6rn?= Engel" />
<person posts="9" size="34" who=" (Eric W. Biederman)" />
<person posts="9" size="33" who="Benjamin Herrenschmidt" />
<person posts="9" size="28" who=" (=?iso-8859-1?q?M=E5ns_Rullg=E5rd?=)" />
<person posts="9" size="24" who="William Lee Irwin III" />
<person posts="8" size="72" who="Rusty Russell" />
<person posts="8" size="35" who="(richard.brunner)" />
<person posts="8" size="30" who="Geert Uytterhoeven" />
<person posts="8" size="30" who="=?ISO-8859-1?Q?Dani=EBl_Mantione?=" />
<person posts="8" size="28" who="Felipe W Damasio" />
<person posts="8" size="27" who="Kevin Corry" />
<person posts="8" size="24" who="Pavel Machek" />
<person posts="7" size="53" who="Ronald Bultje" />
<person posts="7" size="49" who="Rob Landley" />
<person posts="7" size="44" who="&quot;Villacis, Juan&quot;" />
<person posts="7" size="30" who="Russell King" />
<person posts="7" size="28" who="Ian Kent" />
<person posts="7" size="26" who="Jan Rychter" />
<person posts="7" size="24" who="(Valdis.Kletnieks)" />
<person posts="7" size="21" who="Zwane Mwaikambo" />
<person posts="7" size="20" who="&quot;J.A. Magallon&quot;" />
<person posts="6" size="109" who="Ramon Casellas" />
<person posts="6" size="63" who="Petr Vandrovec" />
<person posts="6" size="62" who=" (Jesse Barnes)" />
<person posts="6" size="30" who="Tom Rini" />
<person posts="6" size="23" who="Martin Schlemmer" />
<person posts="6" size="22" who="John Levon" />
<person posts="6" size="22" who="Joe Perches" />
<person posts="6" size="21" who="Muli Ben-Yehuda" />
<person posts="6" size="17" who="Timothy Miller" />
<person posts="6" size="16" who="Stephen Hemminger" />
<person posts="5" size="117" who="Jan Dittmer" />
<person posts="5" size="80" who="Matthew Wilcox" />
<person posts="5" size="40" who="(markw)" />
<person posts="5" size="33" who="Rolf Eike Beer" />
<person posts="5" size="29" who="&quot;Nakajima, Jun&quot;" />
<person posts="5" size="22" who="Jesper Juhl" />
<person posts="5" size="20" who="Len Brown" />
<person posts="5" size="19" who="Bas Mevissen" />
<person posts="5" size="19" who="(Andries.Brouwer)" />
<person posts="5" size="18" who="Dmitry Torokhov" />
<person posts="5" size="18" who="Wade" />
<person posts="5" size="17" who="Cliff White" />
<person posts="5" size="17" who="Alex Riesen" />
<person posts="5" size="17" who="&quot;Richard B. Johnson&quot;" />
<person posts="5" size="16" who="Nigel Cunningham" />
<person posts="5" size="16" who="Willy Tarreau" />
<person posts="5" size="15" who="Marcelo Penna Guerra" />
<person posts="5" size="14" who="Aaron Lehmann" />
<person posts="4" size="36" who="Shantanu Goel" />
<person posts="4" size="31" who="&quot;Dave Poirier&quot;" />
<person posts="4" size="29" who="german aracil boned" />
<person posts="4" size="24" who="Vinay K Nallamothu" />
<person posts="4" size="18" who="Shmulik Hen" />
<person posts="4" size="17" who="&quot;Petr Vandrovec&quot;" />
<person posts="4" size="16" who="Walt H" />
<person posts="4" size="14" who="John Cherry" />
<person posts="4" size="14" who="David Brownell" />
<person posts="4" size="14" who="Rogier Wolff" />
<person posts="4" size="13" who="&quot;Martin J. Bligh&quot;" />
<person posts="4" size="13" who="Shawn Starr" />
<person posts="4" size="13" who="Stevie-O" />
<person posts="4" size="13" who="Witold Krecicki" />
<person posts="4" size="12" who="Greg Stark" />
<person posts="4" size="12" who="Robert Love" />
<person posts="4" size="12" who="Oleg Drokin" />
<person posts="4" size="12" who="Maciej Soltysiak" />
<person posts="4" size="11" who="Alistair J Strachan" />
<person posts="4" size="11" who="Bradley Chapman" />
<person posts="4" size="11" who="Rusty Trivial Russell" />
<person posts="4" size="11" who="Justin Piszcz" />
<person posts="4" size="10" who="Bernhard Rosenkraenzer" />
<person posts="4" size="10" who="Shine Mohamed" />
<person posts="4" size="9" who="Ricardo Galli" />
<person posts="3" size="55" who="Dmitri Katchalov" />
<person posts="3" size="41" who="Tarkan Erimer" />
<person posts="3" size="34" who="&quot;Richard B. Johnson&quot;" />
<person posts="3" size="32" who="Bjorn Helgaas" />
<person posts="3" size="31" who="&quot;Mr. James W. Laferriere&quot;" />
<person posts="3" size="25" who="Florian Schanda" />
<person posts="3" size="22" who="Olivier Galibert" />
<person posts="3" size="22" who="Mary Edie Meredith" />
<person posts="3" size="19" who="Stephen Smalley" />
<person posts="3" size="19" who="&quot;dada1&quot;" />
<person posts="3" size="18" who="Dave Olien" />
<person posts="3" size="18" who="&quot;Daniel Blueman&quot;" />
<person posts="3" size="17" who="Olivier Galibert" />
<person posts="3" size="17" who="&quot;H.Rosmanith (Kernel Mailing List)&quot;" />
<person posts="3" size="17" who="Brad Chapman" />
<person posts="3" size="16" who="David Lang" />
<person posts="3" size="16" who="Maneesh Soni" />
<person posts="3" size="14" who="Harald Welte" />
<person posts="3" size="14" who="Roland Bless" />
<person posts="3" size="13" who="Will Dyson" />
<person posts="3" size="12" who="Nicolas Mailhot" />
<person posts="3" size="12" who="Neil Brown" />
<person posts="3" size="11" who="Andrew Zabolotny" />
<person posts="3" size="11" who="Deepak Saxena" />
<person posts="3" size="10" who="Pete Zaitcev" />
<person posts="3" size="10" who="Mike Fedyk" />
<person posts="3" size="10" who="Chris Friesen" />
<person posts="3" size="10" who="Manfred Spraul" />
<person posts="3" size="10" who="Arnd Bergmann" />
<person posts="3" size="10" who="Arve Knudsen" />
<person posts="3" size="10" who="=?iso-8859-2?B?R+Fib3IgTOlu4XJ0?=" />
<person posts="3" size="10" who="&quot;H. Peter Anvin&quot;" />
<person posts="3" size="9" who="CaT" />
<person posts="3" size="9" who="Steven Dake" />
<person posts="3" size="9" who="Badari Pulavarty" />
<person posts="3" size="9" who="Samuel Flory" />
<person posts="3" size="9" who="Norbert Preining" />
<person posts="3" size="9" who="Andi Kleen" />
<person posts="3" size="9" who="(reg)" />
<person posts="3" size="9" who="Yaroslav Halchenko" />
<person posts="3" size="9" who="Helge Hafting" />
<person posts="3" size="9" who="Christian" />
<person posts="3" size="9" who="Merlin Hughes" />
<person posts="3" size="9" who="Andrew de Quincey" />
<person posts="3" size="9" who="chas williams" />
<person posts="3" size="8" who="CASINO_E" />
<person posts="3" size="8" who="john stultz" />
<person posts="3" size="6" who="Albert Cahalan" />
<person posts="2" size="107" who="Alan Cox" />
<person posts="2" size="51" who="Ruediger Scholz" />
<person posts="2" size="46" who="Sean Estabrooks" />
<person posts="2" size="45" who="Matthias Andree" />
<person posts="2" size="42" who="Xose Vazquez Perez" />
<person posts="2" size="41" who="Ben Peddell" />
<person posts="2" size="39" who="Srihari Vijayaraghavan" />
<person posts="2" size="38" who="Greg Norris" />
<person posts="2" size="36" who="Pat Gefre" />
<person posts="2" size="36" who="Robert Davies" />
<person posts="2" size="28" who="Hugang" />
<person posts="2" size="28" who="Stacy Woods" />
<person posts="2" size="19" who="Torrey Hoffman" />
<person posts="2" size="14" who="Daniel McNeil" />
<person posts="2" size="13" who="Matt Domsch" />
<person posts="2" size="12" who="Douglas Gilbert" />
<person posts="2" size="12" who="Eyal Lebedinsky" />
<person posts="2" size="11" who="Andre Hedrick" />
<person posts="2" size="11" who="Ross Boylan" />
<person posts="2" size="10" who="&quot;Jeremy T. Bouse&quot;" />
<person posts="2" size="10" who="Andi Kleen" />
<person posts="2" size="10" who="Mrs Serena Jones" />
<person posts="2" size="10" who="John R Moser" />
<person posts="2" size="9" who="Mike Waychison" />
<person posts="2" size="9" who="Hans-Joachim Baader" />
<person posts="2" size="9" who="&quot;J.C. Wren&quot;" />
<person posts="2" size="9" who="(tomepperly)" />
<person posts="2" size="9" who="Ludovico Gardenghi" />
<person posts="2" size="8" who="Omen Wild" />
<person posts="2" size="8" who="Martin Konold" />
<person posts="2" size="8" who="gaxt" />
<person posts="2" size="8" who="Rene Rebe" />
<person posts="2" size="7" who="Alan Stern" />
<person posts="2" size="7" who="Rene Rask" />
<person posts="2" size="7" who="Andreas Happe" />
<person posts="2" size="7" who="Shash Chatterjee" />
<person posts="2" size="7" who="&quot;Chad N. Tindel&quot;" />
<person posts="2" size="7" who="Jay Vosburgh" />
<person posts="2" size="7" who="OGAWA Hirofumi" />
<person posts="2" size="6" who="Bartlomiej Zolnierkiewicz" />
<person posts="2" size="6" who="jw schultz" />
<person posts="2" size="6" who="Gerd Knorr" />
<person posts="2" size="6" who="Krzysztof Halasa" />
<person posts="2" size="6" who="Matt Heler" />
<person posts="2" size="6" who="(jhf)" />
<person posts="2" size="6" who="Erik Steffl" />
<person posts="2" size="6" who="(bee71e)" />
<person posts="2" size="6" who="Guilherme Polo" />
<person posts="2" size="6" who="Nicolas Mailhot" />
<person posts="2" size="6" who="Per Andreas Buer" />
<person posts="2" size="6" who="Michael Frank" />
<person posts="2" size="6" who="&quot;Stephen C. Tweedie&quot;" />
<person posts="2" size="6" who="Rik van Riel" />
<person posts="2" size="6" who="Andreas Dilger" />
<person posts="2" size="6" who="Diadon" />
<person posts="2" size="6" who="Eduardo Casino" />
<person posts="2" size="6" who="Andre Tomt" />
<person posts="2" size="6" who="Marc-Christian Petersen" />
<person posts="2" size="6" who="Olivier Galibert" />
<person posts="2" size="6" who="Robert Vollmert" />
<person posts="2" size="6" who="&quot;Adam J. Richter&quot;" />
<person posts="2" size="6" who="&quot;Christoph Baumann&quot;" />
<person posts="2" size="6" who=" (Jonathan Corbet)" />
<person posts="2" size="5" who="Tommy Reynolds" />
<person posts="2" size="5" who="Matt Hahnfeld" />
<person posts="2" size="5" who="JDeas" />
<person posts="2" size="5" who="Behdad Esfahbod" />
<person posts="2" size="5" who="(rwhron)" />
<person posts="2" size="5" who="Wakko Warner" />
<person posts="2" size="5" who="Koala GNU" />
<person posts="2" size="5" who="Marc Zyngier" />
<person posts="2" size="5" who="Dan" />
<person posts="2" size="5" who="Patrick McHardy" />
<person posts="2" size="5" who="Kovacs Gabor" />
<person posts="2" size="5" who="=?ISO-8859-1?Q?Ram=F3n?= Rey Vicente" />
<person posts="2" size="5" who="&quot;Breno&quot;" />
<person posts="2" size="5" who="Jose Luis Domingo Lopez" />
<person posts="2" size="5" who="DALive Editor" />
<person posts="2" size="5" who="Kurt Wall" />
<person posts="2" size="5" who="Anton Blanchard" />
<person posts="2" size="4" who="Matti Aarnio" />
<person posts="2" size="4" who="&quot;Anoop&quot;" />
<person posts="2" size="4" who="Binny Gill" />
<person posts="2" size="4" who="Sean Neakums" />
<person posts="2" size="4" who="(edouardino)" />
<person posts="2" size="4" who="Louis Garcia" />
<person posts="2" size="4" who="Milton Miller" />
<person posts="2" size="4" who="James Simmons" />
<person posts="2" size="4" who="&quot;Bruno Castro da Silva&quot;" />
<person posts="2" size="4" who="Alexandru Damian" />
<person posts="2" size="3" who="(John_Lax)" />
<person posts="2" size="3" who="&quot;cd2car&quot;" />
<person posts="1" size="64" who="Luca Montecchiani" />
<person posts="1" size="52" who="jtholmes" />
<person posts="1" size="51" who="Thomas Molina" />
<person posts="1" size="43" who="Andreas Maier" />
<person posts="1" size="41" who="Peter Lieverdink" />
<person posts="1" size="41" who="Aki Tossavainen" />
<person posts="1" size="33" who="David Yu Chen" />
<person posts="1" size="32" who="David van Hoose" />
<person posts="1" size="28" who="&quot;Sebastian Piecha&quot;" />
<person posts="1" size="26" who="Jens Kubieziel" />
<person posts="1" size="25" who="Dheeraj" />
<person posts="1" size="20" who="Steve Snyder" />
<person posts="1" size="19" who="Ryan Reich" />
<person posts="1" size="19" who="Piotr Biernat" />
<person posts="1" size="19" who="Daniel Luebke" />
<person posts="1" size="18" who="Jaroslav Kysela" />
<person posts="1" size="18" who="JSTHEMASTER" />
<person posts="1" size="18" who="Andreas Feldmann" />
<person posts="1" size="17" who="Bryan Whitehead" />
<person posts="1" size="15" who="Shailabh Nagar" />
<person posts="1" size="14" who="DD" />
<person posts="1" size="12" who="Martin Zwickel" />
<person posts="1" size="11" who="Julian Blake Kongslie" />
<person posts="1" size="10" who="Matt Domsch" />
<person posts="1" size="10" who="Joao Seabra" />
<person posts="1" size="9" who="Thorsten Leemhuis" />
<person posts="1" size="9" who="(olof)" />
<person posts="1" size="9" who="Jake Moilanen" />
<person posts="1" size="9" who=" (Eric W. Biederman)" />
<person posts="1" size="9" who="&quot;Nikita V. Youshchenko&quot;" />
<person posts="1" size="9" who="Orion Poplawski" />
<person posts="1" size="8" who="&quot;demon&quot;" />
<person posts="1" size="7" who="Makan Pourzandi" />
<person posts="1" size="7" who="Andrey Borzenkov" />
<person posts="1" size="6" who="Patrick Mansfield" />
<person posts="1" size="6" who="&quot;Ryan W. Maple&quot;" />
<person posts="1" size="6" who="Andrew Ryan" />
<person posts="1" size="5" who="Dely Sy" />
<person posts="1" size="5" who="&quot;Robert Currey&quot;" />
<person posts="1" size="5" who="Dave Hansen" />
<person posts="1" size="5" who="Mike Anderson" />
<person posts="1" size="5" who="Daniel Hardt" />
<person posts="1" size="5" who="Sergei Organov" />
<person posts="1" size="5" who="Hanna Linder" />
<person posts="1" size="5" who="Ram Pai" />
<person posts="1" size="5" who="(philippe.vivarelli)" />
<person posts="1" size="5" who="Alexander Achenbach" />
<person posts="1" size="5" who="Antonio Gallo" />
<person posts="1" size="5" who="Sergey Vlasov" />
<person posts="1" size="5" who="John Madden" />
<person posts="1" size="5" who="=?iso-8859-1?Q?Taneli_V=E4h=E4kangas?=" />
<person posts="1" size="5" who="Junio C Hamano" />
<person posts="1" size="5" who="&quot;Jeremy T. Bouse&quot;" />
<person posts="1" size="5" who="=?iso-8859-1?q?sandra=20williams?=" />
<person posts="1" size="5" who="Terje Eggestad" />
<person posts="1" size="5" who="David Mosberger" />
<person posts="1" size="5" who="Kumar Gala" />
<person posts="1" size="4" who="&quot;Vander Velden, Kent&quot;" />
<person posts="1" size="4" who="Paco Ros" />
<person posts="1" size="4" who="(pazke)" />
<person posts="1" size="4" who="Ranjeet Shetye" />
<person posts="1" size="4" who="&quot;Brown, Len&quot;" />
<person posts="1" size="4" who="&quot;Lisong Xu&quot;" />
<person posts="1" size="4" who="mh" />
<person posts="1" size="4" who="Stefan Winter" />
<person posts="1" size="4" who="Thomas Glanzmann" />
<person posts="1" size="4" who="Jonathan Corbet" />
<person posts="1" size="4" who=" (John Keimel)" />
<person posts="1" size="4" who="Suresh Krishnan" />
<person posts="1" size="4" who="=?koi8-r?Q?=22?=Alexey Dobriyan=?koi8-r?Q?=22=20?=" />
<person posts="1" size="4" who="Thiago Rondon" />
<person posts="1" size="4" who="Klaus Kurzmann" />
<person posts="1" size="4" who="Jesse Marlin" />
<person posts="1" size="4" who="Gerhard Mack" />
<person posts="1" size="4" who="&quot;Dr. David Alan Gilbert&quot;" />
<person posts="1" size="4" who="(linux-kernel-owner)" />
<person posts="1" size="4" who="Zilvinas Valinskas" />
<person posts="1" size="4" who="Steven Cole" />
<person posts="1" size="4" who="Stuart Longland" />
<person posts="1" size="4" who="Nicolae Mihalache" />
<person posts="1" size="4" who="Pallai Roland" />
<person posts="1" size="4" who="Jeffrey Layton" />
<person posts="1" size="4" who="Craig Thomas" />
<person posts="1" size="4" who="Edwin Apaloo" />
<person posts="1" size="4" who="Stewart Smith" />
<person posts="1" size="4" who="Nathan Scott" />
<person posts="1" size="4" who="Stephen Torri" />
<person posts="1" size="4" who="Jean Tourrilhes" />
<person posts="1" size="4" who="Paolo Dovera" />
<person posts="1" size="4" who="Nuno Monteiro" />
<person posts="1" size="4" who="Chris Rivera" />
<person posts="1" size="4" who="Jasper Spaans" />
<person posts="1" size="3" who="Martin Loschwitz" />
<person posts="1" size="3" who="(venom)" />
<person posts="1" size="3" who="Nathan Straz" />
<person posts="1" size="3" who="Georg Nikodym" />
<person posts="1" size="3" who="Hugo Mills" />
<person posts="1" size="3" who="(HOL_Virus_Alert)" />
<person posts="1" size="3" who="&quot;Paraszt Peter&quot;" />
<person posts="1" size="3" who="&quot;Robert White&quot;" />
<person posts="1" size="3" who="evil" />
<person posts="1" size="3" who="&quot;Hyunje Park&quot;" />
<person posts="1" size="3" who="&quot;farouk fisal&quot;" />
<person posts="1" size="3" who="Steve Lord" />
<person posts="1" size="3" who="Aschwin Marsman" />
<person posts="1" size="3" who="&quot;T. Weyergraf&quot;" />
<person posts="1" size="3" who="John Bradford" />
<person posts="1" size="3" who="Eli Carter" />
<person posts="1" size="3" who="Daniel Stekloff" />
<person posts="1" size="3" who="Justin Cormack" />
<person posts="1" size="3" who="Yaroslav Halchenko" />
<person posts="1" size="3" who="Stuart Low" />
<person posts="1" size="3" who="Adam Radford" />
<person posts="1" size="3" who="&quot;Ron Verhees&quot;" />
<person posts="1" size="3" who="GOTO Masanori" />
<person posts="1" size="3" who="Robert Schwebel" />
<person posts="1" size="3" who="Louis Zhuang" />
<person posts="1" size="3" who="Chris Meadors" />
<person posts="1" size="3" who="Gerardo Exequiel Pozzi" />
<person posts="1" size="3" who="&quot;Joseph Taylor&quot;" />
<person posts="1" size="3" who="Rodrigo Miranda Terra" />
<person posts="1" size="3" who="Jan Evert van Grootheest" />
<person posts="1" size="3" who="&quot;Robert L. Harris&quot;" />
<person posts="1" size="3" who="&quot;Youza Youzovic&quot;" />
<person posts="1" size="3" who="Andreas Schwab" />
<person posts="1" size="3" who="Andy Zeneski" />
<person posts="1" size="3" who="&quot;Justin T. Gibbs&quot;" />
<person posts="1" size="3" who="&quot;Dr. David Alan Gilbert&quot;" />
<person posts="1" size="3" who="Stephan Maciej" />
<person posts="1" size="3" who="war" />
<person posts="1" size="3" who="dual_bereta_r0x" />
<person posts="1" size="3" who="Matt Gibson" />
<person posts="1" size="3" who="Bernd Schmidt" />
<person posts="1" size="3" who="David Darville" />
<person posts="1" size="3" who="Adam Jones" />
<person posts="1" size="3" who="&quot;Horvath Gyorgy&quot;" />
<person posts="1" size="3" who="Stephen Satchell" />
<person posts="1" size="3" who="Abhijit Menon-Sen" />
<person posts="1" size="3" who="Eamonn Hamilton" />
<person posts="1" size="3" who="Paul Mundt" />
<person posts="1" size="3" who="Peter Chubb" />
<person posts="1" size="3" who="Xavier Spriet" />
<person posts="1" size="3" who="Kronos" />
<person posts="1" size="3" who="Catalin BOIE" />
<person posts="1" size="3" who="Mirko Lindner" />
<person posts="1" size="3" who="Chad Talbott" />
<person posts="1" size="3" who="Bongani Hlope" />
<person posts="1" size="3" who="bert hubert" />
<person posts="1" size="3" who="Dominic Robinson" />
<person posts="1" size="3" who="&quot;Feldman, Scott&quot;" />
<person posts="1" size="3" who="Stefan Voelkel" />
<person posts="1" size="3" who="David Ford" />
<person posts="1" size="3" who="&quot;Milton D. Miller II&quot;" />
<person posts="1" size="3" who="Curtis Regentin" />
<person posts="1" size="3" who="Trond Myklebust" />
<person posts="1" size="3" who="Ben Greear" />
<person posts="1" size="3" who="Richard J Moore" />
<person posts="1" size="3" who="Christian Kujau" />
<person posts="1" size="3" who="Urban Widmark" />
<person posts="1" size="3" who=" (Kai Henningsen)" />
<person posts="1" size="3" who="Shawn" />
<person posts="1" size="3" who=" (Erik Tews)" />
<person posts="1" size="3" who="&quot;Mr. Peter Da Costa.&quot;" />
<person posts="1" size="2" who="Marcelo Tosatti" />
<person posts="1" size="2" who="Gerardo Exequiel Pozzi" />
<person posts="1" size="2" who="Bernt Hansen" />
<person posts="1" size="2" who="Ken Moffat" />
<person posts="1" size="2" who="Jos Hulzink" />
<person posts="1" size="2" who="Mark Wong" />
<person posts="1" size="2" who="&quot;Ruth Ivimey-Cook&quot;" />
<person posts="1" size="2" who="gb" />
<person posts="1" size="2" who="Johannes Stezenbach" />
<person posts="1" size="2" who="James Bourne" />
<person posts="1" size="2" who="Leopold Gouverneur" />
<person posts="1" size="2" who="David T Hollis" />
<person posts="1" size="2" who="Rahul Karnik" />
<person posts="1" size="2" who="David Howells" />
<person posts="1" size="2" who="Mitchell Blank Jr" />
<person posts="1" size="2" who="Remi Colinet" />
<person posts="1" size="2" who="Markus =?ISO-8859-1?Q?H=E4stbacka?=" />
<person posts="1" size="2" who="Sven Dowideit" />
<person posts="1" size="2" who="Jari Ruusu" />
<person posts="1" size="2" who="Benjamin Weber" />
<person posts="1" size="2" who="Denis Zaitsev" />
<person posts="1" size="2" who="Xavier Bestel" />
<person posts="1" size="2" who="&quot;Mario Noioso&quot;" />
<person posts="1" size="2" who="=?iso-8859-1?q?emmanuel=20ALLAUD?=" />
<person posts="1" size="2" who="Scott Robert Ladd" />
<person posts="1" size="2" who="Bernd Eckenfels" />
<person posts="1" size="2" who="Adarsh Daheriya" />
<person posts="1" size="2" who="Paul Dickson" />
<person posts="1" size="2" who="Matt Bernstein" />
<person posts="1" size="2" who="&quot;James H. Cloos Jr.&quot;" />
<person posts="1" size="2" who="James Stevenson" />
<person posts="1" size="2" who="Peter-Paul Witta" />
<person posts="1" size="2" who="Ducrot Bruno" />
<person posts="1" size="2" who="Karol Kozimor" />
<person posts="1" size="2" who="(juan.carlos)" />
<person posts="1" size="2" who="Tim Hockin" />
<person posts="1" size="2" who="Mike Galbraith" />
<person posts="1" size="2" who="Pekka Pietikainen" />
<person posts="1" size="2" who="jshankar" />
<person posts="1" size="2" who="Kyle Rose" />
<person posts="1" size="2" who="Nicolas Turro" />
<person posts="1" size="2" who="Joe Thornber" />
<person posts="1" size="2" who="Daniel Jacobowitz" />
<person posts="1" size="2" who="Sandy Harris" />
<person posts="1" size="2" who="James Bottomley" />
<person posts="1" size="2" who="Andrzej Krzysztofowicz" />
<person posts="1" size="2" who="Ben Collins" />
<person posts="1" size="2" who="&quot;Hassan M. Jafri&quot;" />
<person posts="1" size="2" who="Christian Leber" />
<person posts="1" size="2" who="&quot;sting sting&quot;" />
<person posts="1" size="2" who="Michael Bode" />
<person posts="1" size="2" who="&quot;Dan Van Derveer&quot;" />
<person posts="1" size="2" who="Juergen Sawinski" />
<person posts="1" size="2" who="&quot;Mathias Sundman&quot;" />
<person posts="1" size="2" who="Jeff Layton" />
<person posts="1" size="2" who="skeller" />
<person posts="1" size="2" who="Ken Foskey" />
<person posts="1" size="2" who="&quot;Bill J.Xu&quot;" />
<person posts="1" size="2" who="Rafael Osuna" />
<person posts="1" size="2" who="Bryan O'Sullivan" />
<person posts="1" size="2" who="Dave Poirier" />
<person posts="1" size="2" who="(pbern)" />
<person posts="1" size="2" who="Ingo Oeser" />
<person posts="1" size="2" who="joe briggs" />
<person posts="1" size="2" who="Kirk Reiser" />
<person posts="1" size="2" who="Jon Smirl" />
<person posts="1" size="2" who="Ross Combs" />
<person posts="1" size="2" who="Jon Foster" />
<person posts="1" size="2" who="Bob Johnson" />
<person posts="1" size="2" who="Thomas Winischhofer" />
<person posts="1" size="2" who="John Wendel" />
<person posts="1" size="2" who="Paolo Ornati" />
<person posts="1" size="2" who="&quot;&quot;" />
<person posts="1" size="2" who="David McCullough" />
<person posts="1" size="2" who="Shane Wegner" />
<person posts="1" size="2" who="Ruben Puettmann" />
<person posts="1" size="2" who="=?ISO-8859-1?Q?Fr=E9d=E9ric_L=2E_W=2E_Meunier?=" />
<person posts="1" size="2" who="Harold" />
<person posts="1" size="2" who="Ken Hunter" />
<person posts="1" size="2" who="Subodh Srivastava" />
<person posts="1" size="2" who="Grant Miner" />
<person posts="1" size="1" who="root" />
<person posts="1" size="1" who="&quot;Frederick, Fabian&quot;" />

</stats>

<section
  title="Status Of Large Memory Support"
  subject="experiences beyond 4 GB RAM with 2.4.22"
  posts="48"
  startdate="09 Sep 2003 01:01:12 -0800"
  enddate="18 Sep 2003 07:05:18 -0800"
>
<topic>FS: NFS</topic>
<topic>Virtual Memory</topic>

<mention>Marcelo Tosatti</mention>
<mention>Neil Brown</mention>
<mention>Andrea Arcangeli</mention>

<p>Stephan von Krawczyn reported that when he upgraded from 4 gigs of
RAM to 6 under 2.4.22, he noticed his NFS clients starting to time out,
general interactivity seemed terrible, and network performance dropped as
well. He asked if this was just the way things were, and Andrea Arcangeli
suggested he try kernel 2.4.22-aa1. Neil Brown also couldn't explain the
problems, but suggested upgrading to one of the 2.6-test kernels, or at least
configuring the kernel for a maximum of 4 gigs instead of 64, as Stephan
had done originally. It wouldn't use all of Stephan's memory, Neil admitted,
but it would be interesting if the system sped up again. Stephan said he'd
actually already tried that, and found the system to work perfectly, even though
it left 2 gigs of RAM unused.</p>

<p>Marcelo Tosatti also suggested trying Andrea's patches, as they contained
significant changes to the Virtual Memory subsystem. Stephan tried this
with 4 gigs of RAM, and again found no problems, though the problems with
6 gigs remained. At around this point, Alan Cox remarked, <quote who="Alan
Cox">The 2.6 tree is somewhat better about this but at the end of the day
if your I/O subsystem can't do the job your box will not perform ideally.
For some workloads its a huge win to have the extra RAM, for others the I/O
is a real pain. Also in some cases it might be interesting to try using the
extra RAM above the 4G boundary as a giant ram disk and using it as first
swap device.  I don't know anyone who explored that however.</quote></p>

</section>

<section
  title="BitMover Asks Kernel Developers To Stop Complaining About BitKeeper"
  subject="Efficient IPC mechanism on Linux"
  posts="75"
  startdate="09 Sep 2003 09:30:58 -0800"
  enddate="13 Sep 2003 08:49:56 -0800"
>
<topic>Version Control</topic>

<p>In the course of discussion, Andrea Arcangeli made a post, and his sig
included the following text:</p>

<quote who="Andrea Arcangeli">

<pre>/*
 * If you refuse to depend on closed software for a critical
 * part of your business, these links may be useful:
 *
 * rsync.kernel.org::pub/scm/linux/kernel/bkcvs/linux-2.5/
 * rsync.kernel.org::pub/scm/linux/kernel/bkcvs/linux-2.4/
 * http://www.cobite.com/cvsps/
 *
 * svn://svn.kernel.org/linux-2.6/trunk
 * svn://svn.kernel.org/linux-2.4/trunk
 */</pre>

</quote>

<p>Larry McVoy replied:</p>

<quote who="Larry McVoy">

<p>We're providing the service which enables all of the below and without
our good will that service is at risk.  You're publicly slamming the
providers of that service.</p>

<p>If you want to do that, that's your right, but that leads us to ask:</p>

<p>

<ul>

<li>wasn't the deal that we do the gateway and you stop whining?</li>
<li>why should we provide this gateway service at all if there is whining?</li>
<li>why shouldn't we firewall you off since you are whining?</li>
<li>or if firewalling fails, put in a day or two delay in the gateway?</li>

</ul>

</p>

</quote>

<p>Pavel Machek replied, <quote who="Pavel Machek">Eh? You are providing
a service and he provides you advertising. I can't see anything about
slamming you. I guess that Andrea does not think about kernel developing
as a business, so it is not really targeted at you. But anyway its *his*
signature.</quote> And Larry said:</p>

<quote who="Larry McVoy">

<p>Other people may not agree with your view on this one Pavel.  Most people
read that signature and saw it as a negative comment about BitKeeper.</p>

<p>People have told me they believe that if BitMover isn't getting benefit
from the free use of BK, free BK will go away.  People don't want to have
to depend on my goodwill, they want BitMover to derive benefit so that my
goodwill doesn't matter, it's just smart business to give BK away.</p>

<p>If that is really what people here think then that means there has to
be some benefit for BitMover.  One of the benefits is that we get to say
that the kernel team uses it and get some marketing advantage out of that.
But that benefit diminishes if what people are saying is negative.</p>

<p>It makes sense that people are uneasy about depending on BK given the
amount of work it takes to provide it and the amount of grief we take for
providing it.  I don't know why I didn't see that earlier, it's an unstable
situation.</p>

<p>I know there are some people who will never be happy until everything is
GPLed, I can't help those people other than provide the gateway.  In return,
those people need to stop whining, the gateway has to be enough.</p>

<p>For the rest of the people, I'm looking for suggestions on how to make this
situation more stable.  It took me a while but I can see why you are nervous,
I'd be nervous in your position.  I'm nervous about doing any real marketing
of the kernel's use of BK because I figured it would lead to more flame wars.
I'm starting to think that if we were doing that it might actually lead to
less flames, based on the theory that we would then need you so you continue
to get BK for free.  If you have an opinion on that I'd like to know it.</p>

</quote>

<p>There were no replies.</p>

</section>

<section
  title="Athlon Prefetch Errata And Fix"
  subject="Update on AMD Athlon/Opteron/Athlon64 Prefetch Errata"
  posts="127"
  startdate="10 Sep 2003 16:56:56 -0800"
  enddate="18 Sep 2003 09:34:04 -0800"
>

<p>Richard Brunner said:</p>

<quote who="Richard Brunner">

<p>Continuing my yearly tradition of posting just one long
novel to LKML every year, here is the literary update on the
Prefetch Errata that the early 2.6 Kernels hit on AMD Athlon
Processors.</p>

<p>This previously published errata can occur infrequently and
is present in all AMD Athlon processors and earlier AMD
Opteron/Athlon64 processors.  See [1] and [2].</p>

<p>The full details are below, but the key point is that under
certain circumstances, prefetch instructions can get memory
management faults for addresses which would fault if they
were accessed by a load or store instruction.  We plan to
revise our published errata with the new information below.</p>

<p>The errata requires a kernel workaround, but the good news
is that it is:</p>

<p>

<ul>

<li>Harmless in most cases where it could occur. Most of the
    time the prefetch will be targeting memory that is
    accessible under the current privilege mode. So the page
    will simply be "faulted in" slightly earlier than
    needed.</li>

<li>Rare and Infrequent. AMD Athlon processors have been
    available for years running numerous Operating Systems
    and only recently have we hit this errata outside of
    code specifically designed to target the errata --
    requiring tens of thousands of iterations to cause it.</li>

<li>It can be worked around. Andi Kleen has a 2.6 and a 2.4
    Kernel patches that we have tested at AMD on a large
    number of AMD Athlon processors and AMD Opteron/Athlon64
    processors (both legacy x86 and x86-64 long mode).  It
    works just fine. (Andi will be posting them soon when he
    wakes up ;-)</li>

<li>AMD is fixing this in future revisions of AMD
    Opteron/Athlon64 processors.</li>

<li>Andi's kernel patches will not be needed on future
    AMD processors but it is forward compatible and so
    won't break on them either.</li>

</ul>

</p>

<p align="center">The Details</p>

<p>Software prefetch instructions are defined to ignore page
faults. Under highly specific and detailed internal
circumstances, the following conditions may cause the
PREFETCH instruction to report a page fault.</p>

<p>

<ul>

<li>The target address of the PREFETCH would cause a page
  fault if the address was accessed by an actual memory load
  or store instruction under the current privilege mode.</li>

<li>

<p>The instruction is a PREFETCH or PREFETCHNTA/0/1/2
  followed in execution-order by an actual or speculative
  byte-sized load to the same address.</p>

<p>  In this case, the page fault exception error code bits for
  the faulting PREFETCH would be identical to that for a
  byte-sized load to the same address.</p>

</li>

<li>

<p>The instruction is a PREFETCHW followed in execution-order
  by an actual or speculative byte-sized store to the same
  address.</p>

<p>  In this case, the page fault exception error code bits for
  the faulting PREFETCHW would be identical to that for a
  byte-sized store to the same address.</p>

</li>

</ul>

</p>

<p>Note that some misaligned accesses can be broken up by the
processor into multiple accesses where at least one of the
accesses is a byte-sized access.</p>

<p>If the target address of the subsequent memory load or store
is aligned and not byte-sized, this errata does not occur
and no work-around is needed.</p>

<p>So the net effect is that an unexpected page fault may occur
infrequently on a PREFETCH instruction.</p>

<p align="center">Kernel Work-around</p>

<p>The kernel can work around the errata by modifying the Page
Fault Handler in the following way.  This is what Andi
Kleen's patches do.  Because the actual errata is infrequent
it does not produce an excessive number of page faults that
affect system performance.</p>

<p>

<ul>

<li>Continue to allow the page fault handler to satisfy the
  page fault.  If the faulting instruction is permitted
  access to the page, return to it as usual.</li>

<li>If the faulting instruction is not permitted access to the
  page, scan the instruction stream bytes at the faulting
  Instruction Pointer to determine if the instruction is a
  PREFETCH.</li>

<li>If it is not a PREFETCH instruction, generate the
  appropriate memory access control violation as
  appropriate.</li>

<li>If the faulting instruction is a PREFETCH instruction,
  simply return back to it; the internal hardware conditions
  that caused the PREFETCH to fault should be removed and
  operation should continue normally.</li>

</ul>

</p>

<p align="center">General Work-around</p>

<p>If the page-fault handler for a kernel can be patched as
described above, no further action by software is
required. The following general work-arounds should only be
considered for kernels where the page-fault handler can not
be patched and a PREFETCH instruction could end up targeting
an address in an "inaccessible" page. (An "inaccessible"
page is one for which memory accesses are not allowed under
the current privilege mode.)</p>

<p>Because the actual errata is infrequent, it does not produce
an excessive number of page faults that affect system
performance.  Therefore a page fault from a PREFETCH
instruction for an address within an "accessible" page does
not require any general work-around.  (An "accessible" page
is one for which memory accesses are allowed under the
current privilege mode once the page is resident in memory)</p>

<p>Software can minimize the occurrence of the errata by
issuing only one PREFETCH instruction per cache-line (a
naturally-aligned 64-byte quantity on AMD Athlon and AMD
Opteron/Athlon64) and ensuring one of the following:</p>

<p>

<ul>

<li>In many cases, if a particular target address of a
  prefetch is known to encounter this errata, simply change
  the prefetch to target the next byte.</li>

<li>Avoid prefetching inaccessible memory locations, when
  possible.</li>

<li>In the general case, ensure that the address used by the
  PREFETCH is offset into the middle of an aligned quadword
  near the end of the cache-line. For example, if the
  address desired to be prefetched is "ADDR", use an offset
  of 0x33 to compute the address used by the actual PREFETCH
  instruction as: "(ADDR &amp; ~0x3f) + 0x33"</li>

</ul>

</p>

<p align="center">Footnotes</p>

<p>[1] AMD Athlon(tm) Processor Model 6 Revision Guide 24332F June 2003.</p>

<p><a href="http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/24332.pdf">www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/24332.pdf</a></p>

<p>[2] Revision Guide for AMD Opteron(tm) Processors 25759 Rev. 3.07 Aug
2003</p>

<p><a href="http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/25759.PDF">www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/25759.PDF</a></p>

</quote>

<p>Andi Kleen posted his patch to take care of the poblem, saying:</p>

<quote who="Andi Kleen">

<p>Here is a patch to detect a prefect exception for 2.6.0test5/i386</p>

<p>I'm posting the versions for 2.4.22/x86-64 and 2.4.22/i386 in separate
mail. 2.6/x86-64 is not done yet, but will be in my next merge.</p>

<p>The patches only change the slow path in the page fault handler -
PREFETCH is only checked for when the kernel would send a signal
anyways or print an oops. The check is also rather cheap so it is
unconditionally enabled.</p>

<p>It handles SSE2 prefetches and 3dnow! style prefetches.</p>

<p>The only tricky bit is that it has to be careful to avoid recursive
segfaults. The prefetch checker can cause another page fault when
it does __get_user, but these should not recurse more than once.</p>

<p>This is insured by the placement of the checks in the page fault handler and
only checking for prefetches if the fault came from user space
or the exception tables have been already checked.
To make this work without a per task exception nest counter
I had to change the SIGBUS handling path slightly. Now when
an get/put_user in kernel causes a SIGBUS it is not delivered
to user space. Instead you just get the standard EFAULT back.</p>

<p>It also removed Andrew's old workaround for the problem.</p>

</quote>

<p>In the course of discussion, Andi also added (in response to the suggestion
that the code be made conditional, in case the errata was ever fixed):</p>

<quote who="Andi Kleen">

<p>My understanding is that it will never be fixed on the K7 (current Athlons),
And these will be with us for a long time; more or less forever, just like
the f00f bug :-)</p>

<p>I would agree with you if the patch had some bad impact on common
paths, but I don't think that's the case here. It merely adds a cheap check
to an already slow path.</p>

<p>On the other hand the errata is so unlikely that I doubt it will be frequently
hit anyways. 2.6 kernel hitting it was just very very unlucky, and it
only did so very infrequently.</p>

<p>Just to fix the kernel we could have chosen a different workaround, like
adding an exception table entry to each prefetch and jumping back
(I did that on the x86-64 port originally). But this way is also not that bad
and it fixes hypothetical user space programs that could maybe hit it too.</p>

<p>Of course they may want to also fix it in a different way to run on older
kernels (e.g. handling the signal in user space or avoiding the conditions).
But doing it centrally in the kernel is a bit cleaner and at some point
people have to update their kernels anyways.</p>

</quote>

<p>Elsewhere, Linus Torvalds said critically, <quote who="Linus Torvalds">This
patch is fragile and looks pointless.  What's wrong with the current status
quo that just says "Athlon prefetch is broken"?</quote> Andi pointed out that
the status quo did not fix breakage in user space, and Dave Jones added that
the status quo <quote who="Dave Jones">cripples the earlier athlons which
don't have this errata. Andi's fix at least makes prefetch work again on
those boxes.  It's also arguable that prefetch() helps the older K7's more
than the affected ones.</quote> But Andi said that all Athlons suffered from
this errata.</p>

</section>

<section
  title="Minor Tweaks To netpoll And netconsole"
  subject="netpoll/netconsole minor tweaks"
  posts="10"
  startdate="17 Sep 2003 10:24:47 -0800"
  enddate="18 Sep 2003 23:40:07 -0800"
>

<mention>Matt Mackall</mention>

<p>Chris Wright offered a short patch, explaining, <quote who="Chris
Wright">Here's a couple small tweaks.  The first is to netpoll_setup.
The settle time was too short for my e100, and the system would hang.  The
second is to netconsole so that it registers a console with CON_PRINTBUFFER.
This helps debugging early bootup issues where you want to capture data
from before netconsole is initialized.  Perhaps it should be a param to
netconsole?</quote> Matt Mackall suggested that the netpoll_setup settle
time adjustment should be made configurable at the command-line, instead of
hardwired into the code. Chris agreed with this. Matt also said that it was
fine for the netconsole change to not be conditional.</p>

</section>

<section
  title="New SGI Altix Serial Console Driver; GPL Concerns With SGI-Contributed Code"
  subject="[PATCH] Altix console driver"
  posts="11"
  startdate="17 Sep 2003 14:24:14 -0800"
  enddate="20 Sep 2003 14:44:14 -0800"
>
<topic>Patents</topic>

<mention>Pat Gefre</mention>

<p>Jesse Barnes posted a driver for the SGI Altix serial console. The code
was copyright SGI, released under the GPL, with Pat Gefre of SGI listed as
the maintainer. Christoph Hellwig noticed that in the copyright notice,
there was the following comment: "Further, this software is distributed
without any warranty that it is free of the rightful claim of any third
person regarding infringement or the like.  Any license provided herein,
whether implied or otherwise, applies only to this software file.  Patent
licenses, if any, provided herein do not apply to combinations of this
program with other software, or any other product whatsoever." Christoph
remarked, <quote who="Christoph Hellwig">This seems to be a restriction not
compatible with the GPL.  And it looks like many SGI files in the tree have
it aswell..</quote> Elsewhere, Alan Cox said the patch should be rejected
until the licensing issues were sorted out. He said, <quote who="Alan Cox">I
am perfectly permitted by the GPL to modify Linux and add other code to it,
or to create a new product based on it that is GPL licensed.  SGI need to fix
their boilerplate. I can kind of guess what they are trying to say but it needs
tweaking.</quote> But Jess pointed out, <quote who="Jesse Barnes">according
to the FSF our extra clauses are compatible with the GPL and LGPL.  See <a
href="http://oss.sgi.com/projects/GenInfo/NoticeExplan/">http://oss.sgi.com/projects/GenInfo/NoticeExplan/</a>.
If you still disagree then we'll have to try to find another solution.</quote>
Alan took a look and said he'd have to investigate the legal issues further
with the FSF lawyer.  Jamie Lokier replied:</p>

<quote who="Jamie Lokier">

<p>My reading of the boilerplate is that I can't use their code in another
GPL program, because their patent grant doesn't extend to other programs.</p>

<p>Even if that's permitted by the GPL, it doesn't mean you have to accept
it into the kernel like that.</p>

<p>If that's just a misunderstanding of the legalese on my part, then IMHO
the text needs to be clarified to ensure that everyone knows they may take
the code and use it in other GPL projects.</p>

</quote>

<p>Alan said, <quote who="Alan Cox">I'll let folks know when I hear back
from the FSF folks or if SGI decide to tweak it anyway.</quote></p>

</section>

<section
  title="Kernel Event Notification Code From Intel"
  subject="[PATCH 2.6.x] additional kernel event notifications"
  posts="17"
  startdate="17 Sep 2003 22:20:12 -0800"
  enddate="23 Sep 2003 02:16:32 -0800"
>

<mention>Anton Blanchard</mention>
<mention>Jun Nakajima</mention>

<p>Juan Villacis of Intel said:</p>

<quote who="Juan Villacis">

<p>We request that the following patch for additional kernel event
notifications be included in the upcoming 2.6.x kernel.</p>

<p>The current profiling hooks provide notifications at the end of a task's
lifetime (i.e., task exit, mmap exit, and exec unmap).  We would like to
have additional notifications on the start of a task (i.e., fork, execve,
kernel image loads, and user image loads).</p>

<p>We believe that profiling tools such as Oprofile, Perfmon, and VTune would
benefit from the additional hooks by improving the accuracy and completeness
of the performance data, especially when working in environments that can
dynamically create and destroy executable code (such as Java). Furthermore,
these hooks could be used to measure different types of performance data
(e.g., "forks per second") which are currently not available any other way.</p>

<p>Our patch follows the conventions used by the current profiling hooks,
and is relatively small.</p>

<p>We would appreciate comments/feedback on our proposal.</p>

</quote>

<p>Jesse Barnes supported the patch, saying, <quote who="Jesse Barnes">I for
one would like to see it so that the performance monitoring tools can work
properly without having to resort to syscall table patching.</quote> But
Andrew Morton said that acceptance into the kernel would depend on licensing
issues. He said, <quote who="Andrew Morton">If the code which needs the
hooks is not in the kernel.org tree then people can patch the core kernel at
the same time as adding the performance analysis patch.  If the code which
needs these hooks is not appropriately licensed then these hooks basically
constitute a GPL bypass and that is not a direction we wish to be heading
in.</quote> Juan replied:</p>

<quote who="Juan Villacis">

<p>Our sampling driver kernel module which uses these hooks is GPL and could
be included in the kernel.org tree.</p>

<p>The current version of the driver (also GPL, but which hooks the
sys_call_table for 2.4.x-based kernels) is posted at,</p>

<p><a
href="http://www.intel.com/software/products/opensource/vdk/">http://www.intel.com/software/products/opensource/vdk/</a></p>

<p>We plan to post our new driver for kernel 2.6.0-test5 (with the event
notification patch applied) on both IA-32 and IA-64 to the above site early
next week.</p>

</quote>

<p>Jun Nakajima opined that he felt Intel was not trying to bypass the GPL,
but was simply implementing functionality that was similar in scope to other
code in the kernel.</p>

<p>Andrew was satisfied, and asked:</p>

<quote who="Andrew Morton">

<p>That code seems to have a lot of infrastructure for buffering samples,
transferring it to userspace, etc.</p>

<p>Have you looked into using the infrastructure in drivers/oprofile/
for this?  In other words: is it possible to augment the kernel's existing
oprofile capabilities so they meet VTune requirements?</p>

</quote>

<p>Juan explained, <quote who="Juan Villacis">We are not trying to change the
current profiling infrastructure.  We are trying to enhance the existing event
notification scheme to handle more events.</quote> He added, <quote who="Juan
Villacis">The current event notifications used by tools like Oprofile,
while quite useful, are not sufficient.  The additional event notifications
we propose can provide a more complete picture for performance tuning on
Linux, particularly for dynamically generated code (such as found in Java).
In addition to allowing for the enhancement of current performance tools,
it also enables creation of new tools to gather measurements that were
previously difficult to obtain (e.g., "image loads per second").</quote></p>

<p>Anton Blanchard suggested that Intel's work be layered on top of oprofile,
to avoid duplication of effort; but Juan replied that <quote who="Juan
Villacis">adds 4 generic hooks to the existing set of profiling hooks.
These additional hooks can be used to help performance tools such as Oprofile
and VTune to not mis-attribute performance data.</quote> He added, <quote
who="Juan Villacis">We are open to the possibility of including the VTune
driver into the base kernel, perhaps in an architecture-dependent area.
It could complement existing profilers.</quote></p>

</section>

<section
  title="More Threats From BitMover"
  subject="Fix for wrong OOM killer trigger?"
  posts="30"
  startdate="19 Sep 2003 09:16:13 -0800"
  enddate="23 Sep 2003 04:46:57 -0800"
>
<topic>Version Control</topic>

<p>In the course of discussion, Larry McVoy complained again about Andrea
Arcangeli's email sig, which advocated locations to access the kernel source
tree without relying on the BitKeeper client. Larry said, <quote who="Larry
McVoy">I can assure you that the first time the CVS gateway has a problem it
won't come back until you have stopped being rude.  You do understand that
the SVN and RSYNC data come from the CVS gateway and that the CVS gateway
comes from BitMover and that all of this crap is hosted by BitMover, right?
{cvs,svn}.kernel.org are cnames for kernel.bkbits.net.</quote> Andrea replied,
saying he didn't intend to be rude, he just had a different opinion from
Larry. Andrea said, <quote who="Andrea Arcangeli">I will never say that
you're rude because your claims against open source you posted several times
in linux-kernel (you know the parasite that eat the host, and lots and lots
of stuff like that, all things that I absolutely and totally disagree with),
I will never say the bitkeeper "free" licence is rude or whatever like that
despite I find it much less acceptable than all other proprietary licence I
dealt with in my limited experience with proprietary software, but people
is different, it's not about being rude, it's about thinking differently,
and I will never buy from you that thinking different is the same as being
rude.</quote> Larry objected, <quote who="Larry McVoy">you are saying that
closed source is bad, in particular, that BitKeeper is bad.  That's not the
problem, lots of people think that closed source is bad, but in the same
breath you promote some free gateways PAID FOR BY BITKEEPER and requested
by you.  That's hypocritical in the extreme.</quote></p>

</section>

<section
  title="New slabtop Utility To Track The Slab Layer Information In Real Time"
  subject="[ANNOUNCE]  slab information utility"
  posts="11"
  startdate="21 Sep 2003 19:03:06 -0800"
  enddate="22 Sep 2003 05:16:32 -0800"
>

<p>Chris Rivera said, <quote who="Chris Rivera">Robert Love and I would like
to announce the release of a new procps utility, slabtop.  Slabtop displays
detail kernel slab layer information in real time.  The look of slabtop
matches top's.  Slabtop displays a statistics header along with the 'top'
caches based on a sort criteria.</quote> He gave a link to Robert Love's
<a href="http://www.tech9.net/rml/procps/">procps packages</a>, and said
he hoped folks would find the tool useful. A couple posts down the line,
Robert added, <quote who="Robert Love">This is actually inspired (although
not really based on) Martin Bligh's vmtop perl script.  I just checked in
a little "thanks" to him into the man page ;-)</quote></p>

</section>

<section
  title="Dealing With Partition Table Problems"
  subject="rfc: test whether a device has a partition table"
  posts="14"
  startdate="24 Sep 2003 12:29:50 -0800"
  enddate="25 Sep 2003 04:14:42 -0800"
>
<topic>Disks: SCSI</topic>
<topic>FS: FAT</topic>
<topic>FS: rootfs</topic>
<topic>USB</topic>

<p>Andries Brouwer said:</p>

<quote who="Andries Brouwer">

<p>As everyone knows it is a bad idea to let the kernel guess whether there
is a partition table on a given block device, and if so, of what type.
Nevertheless this is what almost everybody does.</p>

<p>Until now the philosophy was: floppies do not have a partition table,
disks do have one, and for ZIP drives nobody knows. With USB we get more
types of block device that may or may not have a partition table (and if
they have none, usually there is a FAT filesystem with bootsector).  In such
cases the kernel assumes a partition table, and creates a mess if there was
none. Some heuristics are needed.</p>

<p>Many checks are possible (for a DOS-type partition table: boot indicator
must be 0 or 0x80, partitions are not larger than the disk, non-extended
partitions are mutually disjoint; for a boot sector: it starts with a jump,
the number of bytes per sector is 512 or at least a power of two, the number
of sectors per cluster is 1 or at least a power of two, the number of reserved
sectors is 1 or 32, the number of FAT copies is 2, ...).</p>

<p>I tried a minimal test, and the below is good enough for the boot sectors
and DOS-type partition tables that I have here.</p>

<p>So, question: are there people with DOS-type partition tables or FAT fs
bootsectors where the below gives the wrong answer?  I would be interested
in a copy of the sector.</p>

<p>I expect to submit some sanity check to DOS-type partition table parsing,
and hope to recognize with high probability the presence of a full disk
FAT filesystem.</p>

</quote>

<p>Linus Torvalds replied to Andries' first paragraph:</p>

<quote who="Linus Torvalds">

<p>So you say, and so you've said for a long time, but claiming that
"everybody knows it" is clearly not true.</p>

<p>In particular, I think that a kernel that doesn't do partitioning is
quite fundamentally broken. I'm sure others will agree.</p>

<p>If you have unusual cases (and let's face it, they don't much happen - we
have traditionally had _very_ few problems with getting things partitioned)
then you should be able to override them from user space and have user space
be able to tell the kernel about special partitions.</p>

<p>And hey, surprise surprise, you can do exactly that.</p>

<p>Also, surprise surprise, pretty much nobody actually does it. Because
the defaults are so sane.</p>

<p>Repeat after me: make the defaults so sane that most people don't even
have to think about it.</p>

<p>In short, I think your first sentence (upon which the rest of the argument
depends) is just quite _fundamentally_ flawed.</p>

</quote>

<p>Andries protested that yes, he had been pointing out the theoretical
problems for years; but that now the problems had moved into the practical
realm, and needed to be dealt with. He said, <quote who="Andries Brouwer">My
post implicitly suggested the minimal thing to do.  It will not be enough -
heuristics are never enough - but it probably helps in most cases.</quote>
But Alexander Viro protested, <quote who="Alexander Viro">If there *is* a
partition table with one entry and it gets misparsed - we have a real bug
that has to be dealt with and your heuristics won't help.  If there is no
partition table at all and in fact they have a filesystem on the entire disk -
let them use *entire* *disk*.  You can very well read /dev/sd&lt;letter&gt;,
mount it, whatever.</quote> Andries replied:</p>

<quote who="Andries Brouwer">

<p>First, if the kernel comes up with a bogus partition table, this will
confuse users (and user space) greatly. It is not harmless, even though you
would know how to survive.</p>

<p>Second, if the kernel reads random stuff from flash media that may yield
I/O errors. Such media do often not have blocks at a fixed place, but have
at the start a table that says where on the media a given block lives.
Blocks that have never been written do not occur in the table, and attempts
to read them give an I/O error. (And our famous SCSI error handling may want
to retry a few times, reset the device and retry, reset the bus and retry
.. I have seen boot times of a quarter of an hour because the kernel was
busy retrying SmartMedia accesses.)  In short - we should not read random
blocks from a disk on flash media.</p>

</quote>

<p>Elsewhere, Linus also thought the problem amounted to just a bug that needed
fixing, rather than Andries' radical proposal. He added:</p>

<quote who="Linus Torvalds">

<p>The _worst_ thing that can happen is that you have four extra (totally
bogus) partitions, and you end up using the whole device.</p>

<p>That's my point about partitioning - not that it's necessarily perfect, but
even when it _isn't_ perfect, it's no worse than not partitioning at all.</p>

</quote>

<p>Andries replied:</p>

<quote who="Andries Brouwer">

<p>Letting mount or the kernel guess the type of the filesystem to mount is
bad. If the kernel or mount guesses wrong the result can be fs corruption
and kernel crash. So the right approach is to always give a -t option to
mount and a rootfstype= boot option to the kernel.</p>

<p>But most people don't, and survive. And I maintain mount and over time
a system of heuristics has been built into mount to make it rather likely
that a guess will be correct.</p>

<p>The partition situation is similar but a bit worse.  We have the
second half: likely guesses, but we lack the first half: correctness with
certainty.</p>

<p>What probably will happen as a result of this episode is that the likelihood
of certain guesses is improved a bit.  But I wouldnt mind the option of
having certainty instead of probability. Userspace that tells the kernel,
instead of letting the kernel probe.</p>

</quote>

<p>Elsewhere, Linus took another look at Andries' patch, and made specific
objections to various technical points. Andries responded to these, and the
discussion then probably went to private email.</p>

</section>

<section
  title="New DigSig Module For Digital Signature Verification For Binaries"
  subject="[ANNOUNCE] DigSig 0.2: kernel module for digital signature verification for binaries"
  posts="1"
  startdate="25 Sep 2003 11:19:47 -0800"
>
<topic>Executable File Format</topic>

<p>Makan Pourzandi announced:</p>

<quote who="Makan Pourzandi">

<p>DSI development team would like to announce the release 0.2 of digsig.</p>

<p>This kernel module (for 2.5.66 and higher) checks the signature of the
binary before running it.  The main goal is to insert digital signatures
inside the ELF binary and verify this signature before loading the binary. It
is based on the Linux Security Module hooks.</p>

<p>The code is GPL and available from: <a
href="http://sourceforge.net/projects/disec/">http://sourceforge.net/projects/disec/</a>,
download digsig-0.2.</p>

<p>I hope that it'll be useful to you.  All bug reports and feature requests
or general feedback are welcome (please CC me in your answer or feedback to
the mailing list).</p>

<p align="center">overview</p>

<p>Instead of writing a long detailed explication, I rather give you an
example of how you can use it.</p>

<p align="center">A Very simple scenraio to show how to use it</p>

<p>1) Generate gpg key and export your public key in order to use it for
signature verification.</p>

<p>$gpg --gen-key</p>

<p>=> careful generate RSA key</p>

<p>$gpg --export &gt;&gt; my_public_key.pub</p>

<p>2) Sign your binaries using Bsign</p>

<p>Before using bsign to sign all your binaries, try out with a simple
example.</p>

<p>$cp `which ps` ps-test<br />
$bsign -s ps-test // sign the binary<br />
$bsign -v ps-test // be sure that the signature is valid</p>

<p>3) Make the digsig module</p>

<p>From ./digsig, do make -C /usr/src/linux-2.5.66 SUBDIRS=$PWD modules.
You need rw acess to /usr/src/linux-2.5.66.</p>

<p>CAREFULL: we advice you to compile the module in debug mode at your
first tries (see -DDSI_DEBUG -DDSI_DIGSIG_DEBUG in the Makefile). In
this mode, the module verifies the signatures but does not enforce the
security (if not any signature present in your binary, you'll have a
message in /var/log/messages but the execution is not
aborted.). However, the execution of the bianaries with invalid
signatures is aborted. Once, you're sure of your binary signature
procedure you can recompile the whole on non-debug mode.</p>

<p>4) load digsig, use the public key exported in step 1 as argument</p>

<p>root@colby digsig-dev]# ./digsig.init start pubkey.pub<br />
Loading Digsig module.<br />
Making device for communication with the module.<br />
Loading public key.<br />
Done.<br />
root@colby digsig-dev]#</p>

<p>5) In debug mode:</p>

<p>$./ps-test</p>

<p>$tail -f /var/log/messages<br />
Sep 16 15:49:16 colby kernel: DSI-LSM MODULE - binary is ./ps-test<br />
Sep 16 15:49:16 colby kernel: DSI-LSM MODULE - dsi_bprm_compute_creds:<br />
Found signature section<br />
Sep 16 15:49:16 colby kernel: DSI-LSM MODULE - dsi_bprm_compute_creds:<br />
Signature verification successful</p>

<p>$ps</p>

<p>// no check for not signed binaries<br />
$tail -f /var/log/messages<br />
Sep 16 15:49:16 colby kernel: DSI-LSM MODULE - binary is ./ps</p>

<p>6) In restrictive mode, normal mode</p>

<p>You need to use bsign to sign all binaries that you want to run in
normal mode.</p>

<pre>// signed binary
[lmcmpou@reblochon lmcmpou]$ ps
 PID TTY          TIME CMD
6897 pts/2    00:00:00 bash
6941 pts/2    00:00:00 ps</pre>

<p>// not signed binary<br />
[lmcmpou@reblochon lmcmpou]$ ./ps-makan-1<br />
bash: ./ps-makan: cannot execute binary file</p>

<p>// binary with wrong signature<br />
[lmcmpou@reblochon lmcmpou]$ ./ps-makan-2<br />
bash: ./ps-makan-colby: Operation not permitted</p>

<p>7) Unload the module.</p>

<p>[root@colby digsig-dev]# ./digsig.init stop<br />
Unloading Digsig.</p>

<p align="center">Performances</p>

<p>This is release 0.2. We have done some benchmarks.</p>

<p>We ran lmbench on a Pentium IV, 2.4 GHz, 500 mega bytes of memory,
running Linux 2.5.66. Our benchmarks show that the execution time
(exec function call) multiplies by a factor of 4 when the module is
loaded (no changes for fork call, as the binary is not loaded into
memory).</p>

<p align="center">Some details</p>

<p>The module is independent from DSI (parent project) and you don't need
to download the whole dsi tar ball to play with the digsig module (even if
we'll be more than happy to have your feedback about dsi project :-)).</p>

<p>Our approach has been to use the existing solutions like gpg and bsign
rather than reinventing the whole thing from scratch.</p>

<p>However, in order to reduce the overhead in the kernel, we took only the
minimum code necessary from GPG. We took only the MPI (Multi Precision Integer)
source code and the RSA crypto source code. This helped much to reduce the
amount of code imported to the kernel in sourc code of the original (only
1/10 of the original gnupg 1.2.2 sourc code has been imported to the kernel
module). On the other hand, we avoided OpenSSL source code for the fact that
the licensing was not clear to us. We did some tests at user level and found
out that OpenSSL is 4 times faster than GPG regarding RSA verification. As
a future direction, we plan to clarify this licensing issue and use OpenSSL
instead of GPG.</p>

<p align="center">Requirements:</p>

<p>Linux OS kernel 2.5.66 or  higher. We tested against 2.5.66 and
2.6.0-test5.</p>

<p>Bsign version
0.4.5. (http://packages.debian.org/unstable/admin/bsign.html)</p>

<p>GPG 1.2.2 or higher.</p>

<p align="center">Merits</p>

<p>This work has been done by (alphabetical order)</p>

<p>A Apvrille (axelle.apvrille@ericsson.ca),<br />
D Gordon (davidgordonca@yahoo.ca),<br />
M Pourzandi (makan.pourzandi@ericsson.ca),<br />
V Roy (vincent.roy@ericsson.ca).</p>

<p>Special merits go to David who wrote big chunks of the source code.</p>

<p>Thanks to Radu Filip (socrate@infoiasi.ro) which has done the initial
study for this work.</p>

<p>Thanks also to Marc Singer who helped us in using Bsign.</p>

</quote>

</section>

</kc>

