<?xml version="1.0" ?>

<kc>

<title>Kernel Traffic</title>

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

<issue num="272" date="05 Sep 2004 00:00:00 -0800" />

<intro>

<p>I'd like to thank the folks who sent me pointers to tech-writing jobs,
or who recommended me to their companies. It's making a big difference,
and I really appreciate it. Thanks!</p>

<p>For the moment, though, I'm still available, and anyone who wants to <a
href="resume.html">check out my resume</a> is more than welcome.</p>

</intro>

<stats posts="1660" size="10280" contrib="432" multiples="222" lastweek="142">

<person posts="74" size="307" who="Andrew Morton" />
<person posts="73" size="304" who="Ingo Molnar" />
<person posts="56" size="339" who="Lee Revell" />
<person posts="53" size="415" who="Vojtech Pavlik" />
<person posts="42" size="212" who="Nick Piggin" />
<person posts="31" size="259" who="Greg KH" />
<person posts="30" size="159" who="Jeff Garzik" />
<person posts="25" size="163" who="Gene Heskett" />
<person posts="25" size="116" who="Con Kolivas" />
<person posts="23" size="125" who="Adrian Bunk" />
<person posts="22" size="91" who="William Lee Irwin III" />
<person posts="21" size="124" who="Robert Love" />
<person posts="19" size="279" who="David Gibson" />
<person posts="19" size="138" who="Scott Wood" />
<person posts="18" size="71" who="Takashi Iwai" />
<person posts="15" size="69" who="Avi Kivity" />
<person posts="15" size="55" who="Paul Jackson" />
<person posts="14" size="114" who="Ed Sweetman" />
<person posts="14" size="58" who="Arjan van de Ven" />
<person posts="14" size="57" who="Andrea Arcangeli" />
<person posts="13" size="60" who="Jens Axboe" />
<person posts="13" size="59" who="Dave Hansen" />
<person posts="13" size="59" who="Mikael Pettersson" />
<person posts="13" size="57" who="&quot;David S. Miller&quot;" />
<person posts="13" size="56" who="Alan Cox" />
<person posts="13" size="45" who="Pavel Machek" />
<person posts="12" size="240" who="(inaky.perez-gonzalez)" />
<person posts="12" size="41" who="Chris Wedgwood" />
<person posts="11" size="63" who="Daniel Phillips" />
<person posts="11" size="49" who="&quot;Randy.Dunlap&quot;" />
<person posts="11" size="45" who="Zwane Mwaikambo" />
<person posts="10" size="57" who="Olaf Hering" />
<person posts="10" size="53" who="Lars Marowsky-Bree" />
<person posts="10" size="53" who="Jesse Barnes" />
<person posts="10" size="52" who="Bill Huey (hui)" />
<person posts="10" size="50" who="Dimitri Sivanich" />
<person posts="10" size="47" who="Benjamin Herrenschmidt" />
<person posts="9" size="91" who="Ravikiran G Thirumalai" />
<person posts="9" size="44" who="Karim Yaghmour" />
<person posts="9" size="40" who="Benjamin Rutt" />
<person posts="9" size="37" who="Keith Owens" />
<person posts="9" size="32" who="Matt Mackall" />
<person posts="8" size="32" who="Rudo Thomas" />
<person posts="8" size="29" who="Timothy Miller" />
<person posts="7" size="48" who="&quot;Andrew Chew&quot;" />
<person posts="7" size="38" who="&quot;Bc. Michal Semler&quot;" />
<person posts="7" size="38" who="Deepak Saxena" />
<person posts="7" size="34" who="Marcelo Tosatti" />
<person posts="7" size="32" who="maximilian attems" />
<person posts="7" size="31" who="Dipankar Sarma" />
<person posts="7" size="29" who="Francois Romieu" />
<person posts="7" size="29" who="DervishD" />
<person posts="7" size="26" who="Tom Rini" />
<person posts="6" size="120" who="Takao Indoh" />
<person posts="6" size="95" who="Roland Dreier" />
<person posts="6" size="60" who="Hannes Reinecke" />
<person posts="6" size="55" who="Oleg Nesterov" />
<person posts="6" size="41" who="Steven Dake" />
<person posts="6" size="36" who="Rob van Nieuwkerk" />
<person posts="6" size="36" who="Peter Osterlund" />
<person posts="6" size="33" who="Roger Luethi" />
<person posts="6" size="31" who="Nigel Cunningham" />
<person posts="6" size="30" who="&quot;R. J. Wysocki&quot;" />
<person posts="6" size="25" who="Bill Davidsen" />
<person posts="6" size="24" who="Pete Zaitcev" />
<person posts="6" size="24" who="Tigran Aivazian" />
<person posts="6" size="21" who="=?ISO-8859-1?Q?ismail_d=F6nmez?=" />
<person posts="6" size="21" who="Trond Myklebust" />
<person posts="5" size="45" who="Paul Mackerras" />
<person posts="5" size="37" who="Shesha Sreenivasamurthy" />
<person posts="5" size="24" who="Kyle Moffett" />
<person posts="5" size="23" who="Denis Vlasenko" />
<person posts="5" size="21" who="Zwane Mwaikambo" />
<person posts="5" size="20" who="Tim Hockin" />
<person posts="5" size="20" who="Nathan Bryant" />
<person posts="5" size="20" who="Dominik Karall" />
<person posts="5" size="19" who="Geert Uytterhoeven" />
<person posts="5" size="19" who="Doug Maxey" />
<person posts="5" size="19" who="James Morris" />
<person posts="5" size="18" who="Bartlomiej Zolnierkiewicz" />
<person posts="5" size="18" who="David Brownell" />
<person posts="5" size="18" who="&quot;Shawn Starr&quot;" />
<person posts="5" size="18" who="Anton Blanchard" />
<person posts="5" size="17" who="Paolo Ciarrocchi" />
<person posts="5" size="16" who="(viro)" />
<person posts="4" size="69" who="&quot;Antonino A. Daplas&quot;" />
<person posts="4" size="55" who="Peter Chubb" />
<person posts="4" size="42" who="Norberto Bensa" />
<person posts="4" size="29" who="&quot;Tony&quot;" />
<person posts="4" size="22" who="David Teigland" />
<person posts="4" size="22" who="&quot;J.A. Magallon&quot;" />
<person posts="4" size="22" who="Paulo Marques" />
<person posts="4" size="21" who="Benno Senoner" />
<person posts="4" size="20" who="Mike Waychison" />
<person posts="4" size="20" who="Meelis Roos" />
<person posts="4" size="19" who="Nobuhiko Yoshida" />
<person posts="4" size="19" who="Clemens Schwaighofer" />
<person posts="4" size="19" who="Daniel Phillips" />
<person posts="4" size="18" who="Joel Schopp" />
<person posts="4" size="15" who="L A Walsh" />
<person posts="4" size="15" who="Hans Reiser" />
<person posts="4" size="14" who="Rob Couto" />
<person posts="4" size="13" who="Pavel Machek" />
<person posts="4" size="13" who="sankarshana rao" />
<person posts="3" size="77" who="Jan-Frode Myklebust" />
<person posts="3" size="41" who="Florian Lohoff" />
<person posts="3" size="35" who="Emmeran Seehuber" />
<person posts="3" size="32" who="Ferenc Kubinszky" />
<person posts="3" size="26" who="Neil Brown" />
<person posts="3" size="21" who="(zanussi)" />
<person posts="3" size="19" who="Nesimi Buelbuel" />
<person posts="3" size="18" who="Steve G" />
<person posts="3" size="17" who="Pasi Valminen" />
<person posts="3" size="16" who="Florian Schmidt" />
<person posts="3" size="15" who="Dmitry Melekhov" />
<person posts="3" size="15" who="&quot;Adam J. Richter&quot;" />
<person posts="3" size="14" who="David Ford" />
<person posts="3" size="14" who="Thomas Charbonnel" />
<person posts="3" size="14" who="Carl-Daniel Hailfinger" />
<person posts="3" size="14" who="Joel Becker" />
<person posts="3" size="13" who="&quot;Perez-Gonzalez, Inaky&quot;" />
<person posts="3" size="13" who="tabris" />
<person posts="3" size="12" who="Ram Pai" />
<person posts="3" size="12" who="=?iso-8859-1?q?M=E5ns_Rullg=E5rd?=" />
<person posts="3" size="12" who="Florin Andrei" />
<person posts="3" size="12" who="=?ISO-8859-1?Q?Ram=F3n_Rey_Vicente?=" />
<person posts="3" size="12" who="Kevin Fenzi" />
<person posts="3" size="12" who="Nathan Scott" />
<person posts="3" size="11" who="Ulrich Drepper" />
<person posts="3" size="11" who="Matthew Wilcox" />
<person posts="3" size="11" who="(Valdis.Kletnieks)" />
<person posts="3" size="11" who="FabF" />
<person posts="3" size="11" who="Andi Kleen" />
<person posts="3" size="11" who="&quot;Richard B. Johnson&quot;" />
<person posts="3" size="10" who="Chris Friesen" />
<person posts="3" size="10" who="Andreas Schwab" />
<person posts="3" size="10" who="Oliver Neukum" />
<person posts="3" size="10" who="Sam Ravnborg" />
<person posts="3" size="10" who="Dave Kleikamp" />
<person posts="3" size="10" who="Christoph Hellwig" />
<person posts="3" size="10" who="Paul Davis" />
<person posts="3" size="10" who="John Rose" />
<person posts="3" size="10" who="Samuel Thibault" />
<person posts="3" size="9" who="Albert Cahalan" />
<person posts="3" size="9" who="bert hubert" />
<person posts="2" size="95" who="Brian Gerst" />
<person posts="2" size="84" who="&quot;Returned mail&quot;" />
<person posts="2" size="83" who="&quot;Mail Delivery Subsystem&quot;" />
<person posts="2" size="74" who="Martin Schwidefsky" />
<person posts="2" size="50" who="Kumar Gala" />
<person posts="2" size="38" who="Fumitake ABE" />
<person posts="2" size="25" who="Brian Gerst" />
<person posts="2" size="23" who="Kronos" />
<person posts="2" size="17" who="Maikon Bueno" />
<person posts="2" size="16" who="Bjorn Helgaas" />
<person posts="2" size="14" who="Martins Krikis" />
<person posts="2" size="14" who="Trent Lloyd" />
<person posts="2" size="13" who="Kaloian Manassiev" />
<person posts="2" size="11" who="(haiquy)" />
<person posts="2" size="11" who="Tim Wright" />
<person posts="2" size="11" who="Douglas Gilbert" />
<person posts="2" size="10" who="Domen Puncer" />
<person posts="2" size="10" who="John Cherry" />
<person posts="2" size="10" who="Keith Owens" />
<person posts="2" size="10" who="&quot;Reinder&quot;" />
<person posts="2" size="10" who="Sebastien ESTIENNE" />
<person posts="2" size="10" who="&quot;Lei Yang&quot;" />
<person posts="2" size="10" who="Daniel Jacobowitz" />
<person posts="2" size="10" who="Erik Steffl" />
<person posts="2" size="9" who="Devel" />
<person posts="2" size="9" who="Frederik Himpe" />
<person posts="2" size="9" who="Michael Clark" />
<person posts="2" size="9" who="&quot;Moore, Robert&quot;" />
<person posts="2" size="9" who="Carl Spalletta" />
<person posts="2" size="9" who="James Bottomley" />
<person posts="2" size="9" who="Dominik Brodowski" />
<person posts="2" size="9" who="Coywolf Qi Hunt" />
<person posts="2" size="9" who="Adam Kropelin" />
<person posts="2" size="9" who=" (Franz Pletz)" />
<person posts="2" size="9" who="Aivils" />
<person posts="2" size="9" who="Bernd Petrovitsch" />
<person posts="2" size="8" who="&quot;Martin J. Bligh&quot;" />
<person posts="2" size="8" who="Robin Holt" />
<person posts="2" size="8" who="Alan Cox" />
<person posts="2" size="8" who="Dan Aloni" />
<person posts="2" size="8" who="Mikulas Patocka" />
<person posts="2" size="8" who=" (H. Peter Anvin)" />
<person posts="2" size="8" who="Nuno Tavares" />
<person posts="2" size="8" who="Marcel Holtmann" />
<person posts="2" size="8" who="Segher Boessenkool" />
<person posts="2" size="8" who="Jeff Moyer" />
<person posts="2" size="7" who="DaMouse" />
<person posts="2" size="7" who="&quot;Maciej W. Rozycki&quot;" />
<person posts="2" size="7" who="Stephen Hemminger" />
<person posts="2" size="7" who="Peter Santoro" />
<person posts="2" size="7" who="Herbert Xu" />
<person posts="2" size="7" who="Martin Pool" />
<person posts="2" size="7" who="Muli Ben-Yehuda" />
<person posts="2" size="7" who="Mario Lang" />
<person posts="2" size="7" who="Andi Kleen" />
<person posts="2" size="7" who="Chris Wright" />
<person posts="2" size="7" who="Jan Oravec" />
<person posts="2" size="7" who="Miklos Szeredi" />
<person posts="2" size="7" who="Tim Bird" />
<person posts="2" size="7" who="Rutger Nijlunsing" />
<person posts="2" size="7" who="Willy Tarreau" />
<person posts="2" size="7" who="Manfred Spraul" />
<person posts="2" size="7" who="&quot;J. Ryan Earl&quot;" />
<person posts="2" size="7" who="Grzegorz Kulewski" />
<person posts="2" size="7" who="Aroop MP" />
<person posts="2" size="7" who="Nigel Rantor" />
<person posts="2" size="7" who="benedicta hendircks" />
<person posts="2" size="7" who="Dave Jones" />
<person posts="2" size="6" who="Erik Mouw" />
<person posts="2" size="6" who="&quot;J. Bruce Fields&quot;" />
<person posts="2" size="6" who="Ulrich Weigand" />
<person posts="2" size="6" who="Jeff Dike" />
<person posts="2" size="6" who="Bernd Eckenfels" />
<person posts="2" size="6" who="=?iso-8859-1?q?une=20pomme?=" />
<person posts="2" size="5" who="=?iso-8859-1?q?Ankit=20Jain?=" />
<person posts="2" size="5" who="&quot;hv&quot;" />
<person posts="2" size="5" who="Ricky Beam" />
<person posts="1" size="94" who="Lukasz Michal Rak" />
<person posts="1" size="69" who="Janice M Girouard" />
<person posts="1" size="57" who="Peter Zijlstra" />
<person posts="1" size="51" who=" (Dmitry Baryshkov)" />
<person posts="1" size="45" who="Daniel Jacobowitz" />
<person posts="1" size="42" who="(owner)" />
<person posts="1" size="42" who="(vsbalaji)" />
<person posts="1" size="42" who="&quot;Bounced mail&quot;" />
<person posts="1" size="42" who="(dejan.durdenic)" />
<person posts="1" size="42" who="Erik Jacobson" />
<person posts="1" size="42" who="Federico Gherardini" />
<person posts="1" size="41" who=" (Monty)" />
<person posts="1" size="41" who="(alhartman6)" />
<person posts="1" size="41" who="(justice)" />
<person posts="1" size="41" who="Diffie" />
<person posts="1" size="41" who="&quot;Automatic Email Delivery Software&quot;" />
<person posts="1" size="39" who="Ulrich Brand" />
<person posts="1" size="38" who="John McCutchan" />
<person posts="1" size="31" who="Eduard Bloch" />
<person posts="1" size="20" who="&quot;Li, Shaohua&quot;" />
<person posts="1" size="16" who="Kiko Piris" />
<person posts="1" size="13" who="Rajesh Venkatasubramanian" />
<person posts="1" size="12" who="Shane Shrybman" />
<person posts="1" size="11" who="AKIYAMA Nobuyuki" />
<person posts="1" size="11" who="&quot;baugustoss&quot;" />
<person posts="1" size="11" who="&quot;Dwayne Rightler&quot;" />
<person posts="1" size="11" who="David M" />
<person posts="1" size="10" who="Dhruv Matani" />
<person posts="1" size="9" who="&quot;Gerard H. Pille&quot;" />
<person posts="1" size="9" who="David Gibson" />
<person posts="1" size="9" who="(linux)" />
<person posts="1" size="8" who="Wes Janzen" />
<person posts="1" size="8" who="Adam Belay" />
<person posts="1" size="8" who="Bernd Schubert" />
<person posts="1" size="8" who="(charlesmbahmy5)" />
<person posts="1" size="8" who="Marcin Owsiany" />
<person posts="1" size="7" who="Michael Bussmann" />
<person posts="1" size="7" who="Niranjan" />
<person posts="1" size="7" who="Boris de Laage" />
<person posts="1" size="6" who="=?iso-8859-1?q?Eva=20Dominguez?=" />
<person posts="1" size="6" who="Nick Orlov" />
<person posts="1" size="6" who="Philippe Gerum" />
<person posts="1" size="6" who="Redeeman" />
<person posts="1" size="6" who="Pat Gefre" />
<person posts="1" size="6" who="Cesar Eduardo Barros" />
<person posts="1" size="6" who="Daniel Stekloff" />
<person posts="1" size="6" who="Corey Minyard" />
<person posts="1" size="6" who="Ilyak Kasnacheev" />
<person posts="1" size="6" who="Daniel Phillips" />
<person posts="1" size="5" who="&quot;Will S.&quot;" />
<person posts="1" size="5" who="Tim Schmielau" />
<person posts="1" size="5" who="Harald Welte" />
<person posts="1" size="5" who="Marcello Barnaba" />
<person posts="1" size="5" who="Jesper Juhl" />
<person posts="1" size="5" who="Alex Galakhov" />
<person posts="1" size="5" who="(hector)" />
<person posts="1" size="5" who="Robert Wisniewski" />
<person posts="1" size="5" who="Herbert Poetzl" />
<person posts="1" size="5" who="Fernando Pablo Lopez-Lezcano" />
<person posts="1" size="5" who="&quot;Siddha, Suresh B&quot;" />
<person posts="1" size="5" who="Erez Zadok" />
<person posts="1" size="5" who="Andrew McGregor" />
<person posts="1" size="5" who="Xiong Jiang" />
<person posts="1" size="5" who="Christian Kujau" />
<person posts="1" size="5" who="Rainer Weikusat" />
<person posts="1" size="5" who="&quot;John Stoffel&quot;" />
<person posts="1" size="5" who="Keir Fraser" />
<person posts="1" size="5" who="Tim Connors" />
<person posts="1" size="5" who="&quot;Stephen C. Tweedie&quot;" />
<person posts="1" size="5" who="Alexander Gran" />
<person posts="1" size="5" who="Juergen Rose" />
<person posts="1" size="5" who="Phillip Lougher" />
<person posts="1" size="4" who="David Bryson" />
<person posts="1" size="4" who="Mike Kravetz" />
<person posts="1" size="4" who="Martin Schlemmer" />
<person posts="1" size="4" who="Tim Connors" />
<person posts="1" size="4" who="&quot;Amit D. Chaudhary&quot;" />
<person posts="1" size="4" who="Anindya Mozumdar" />
<person posts="1" size="4" who="Johannes Stezenbach" />
<person posts="1" size="4" who="Len Brown" />
<person posts="1" size="4" who="=?ISO-8859-1?Q?Andr=E9_Goddard_Rosa?=" />
<person posts="1" size="4" who="Jan Depner" />
<person posts="1" size="4" who="=?UTF-8?B?TGVuYXIgTMO1aG11cw==?=" />
<person posts="1" size="4" who="&quot;Brown, Len&quot;" />
<person posts="1" size="4" who="CaT" />
<person posts="1" size="4" who="Karsten Keil" />
<person posts="1" size="4" who="Steve Dickson" />
<person posts="1" size="4" who="Monty" />
<person posts="1" size="4" who="(lorinalanglois)" />
<person posts="1" size="4" who="&quot;Daniel Blueman&quot;" />
<person posts="1" size="4" who="Jim Paris" />
<person posts="1" size="4" who="&quot;Alexander E. Patrakov&quot;" />
<person posts="1" size="4" who="John S J Anderson" />
<person posts="1" size="4" who="Andreas Dilger" />
<person posts="1" size="4" who="Paul Mundt" />
<person posts="1" size="4" who="=?iso-8859-1?q?szonyi=20calin?=" />
<person posts="1" size="4" who="Matthias Andree" />
<person posts="1" size="4" who="Jan Blunck" />
<person posts="1" size="4" who="(jmerkey)" />
<person posts="1" size="4" who="Gabor MICSKO" />
<person posts="1" size="4" who="pp" />
<person posts="1" size="4" who="Jari Ruusu" />
<person posts="1" size="4" who="Arkadiusz Miskiewicz" />
<person posts="1" size="4" who="Markus Schaber" />
<person posts="1" size="4" who="Josh Aas" />
<person posts="1" size="4" who="Gerd Knorr" />
<person posts="1" size="4" who="Jan-Benedict Glaw" />
<person posts="1" size="4" who="David Mosberger" />
<person posts="1" size="4" who="Ryan Anderson" />
<person posts="1" size="4" who="Tim Connors" />
<person posts="1" size="4" who="Vernon Mauery" />
<person posts="1" size="4" who="Ralf Hildebrandt" />
<person posts="1" size="4" who="(jdanield)" />
<person posts="1" size="4" who="Greg Edwards" />
<person posts="1" size="4" who="&quot;Petr Vandrovec&quot;" />
<person posts="1" size="4" who="&quot;Catalin(ux aka Dino) BOIE&quot;" />
<person posts="1" size="4" who="David Weinehall" />
<person posts="1" size="4" who="Pavel Roskin" />
<person posts="1" size="4" who="David Weinehall" />
<person posts="1" size="4" who="Todd Poynor" />
<person posts="1" size="4" who="Christian Borntraeger" />
<person posts="1" size="4" who="Alex Lyashkov" />
<person posts="1" size="4" who="Solar Designer" />
<person posts="1" size="3" who="(hpa)" />
<person posts="1" size="3" who="Stephen Smalley" />
<person posts="1" size="3" who="Patrick Kiwitter - Mailinglist" />
<person posts="1" size="3" who="Mark Lord" />
<person posts="1" size="3" who="Alexandre Oliva" />
<person posts="1" size="3" who="Olaf Dietsche" />
<person posts="1" size="3" who="Riccardo Vestrini" />
<person posts="1" size="3" who="Eric St-Laurent" />
<person posts="1" size="3" who="&quot;Luiz Fernando N. Capitulino&quot;" />
<person posts="1" size="3" who="Theodore Ts'o" />
<person posts="1" size="3" who="David Howells" />
<person posts="1" size="3" who="&quot;Patrick Burke&quot;" />
<person posts="1" size="3" who="Brian Bruns" />
<person posts="1" size="3" who="Joshua Kwan" />
<person posts="1" size="3" who="&quot;Rafael do N. Pereira&quot;" />
<person posts="1" size="3" who="Andreas Haumer" />
<person posts="1" size="3" who="&quot;David N. Welton&quot;" />
<person posts="1" size="3" who="&quot;Prakash K. Cheemplavam&quot;" />
<person posts="1" size="3" who="Andy Whitcroft" />
<person posts="1" size="3" who="Roland McGrath" />
<person posts="1" size="3" who="Andreas Jellinghaus" />
<person posts="1" size="3" who="&quot;Dang, Linh [CAR:2X23:EXCH]&quot;" />
<person posts="1" size="3" who="(Postmaster)" />
<person posts="1" size="3" who="Ognyan Kulev" />
<person posts="1" size="3" who="Tomasz Paszkowski" />
<person posts="1" size="3" who="Paul Winkler" />
<person posts="1" size="3" who="Brian Pawlowski" />
<person posts="1" size="3" who="Daniele Venzano" />
<person posts="1" size="3" who="Evan Hisey" />
<person posts="1" size="3" who="David Addison" />
<person posts="1" size="3" who="Shen Aaron-r62966" />
<person posts="1" size="3" who="Nuno Monteiro" />
<person posts="1" size="3" who="Gerrit Huizenga" />
<person posts="1" size="3" who="Philippe Troin" />
<person posts="1" size="3" who="Dexter Filmore" />
<person posts="1" size="3" who="Arnd Bergmann" />
<person posts="1" size="3" who="Fumihiro Tersawa" />
<person posts="1" size="3" who="Niraj kumar" />
<person posts="1" size="3" who="&quot;Srinivas G.&quot;" />
<person posts="1" size="3" who="&quot;Ferdinand Arche&quot;" />
<person posts="1" size="3" who="Chris Mason" />
<person posts="1" size="3" who="&quot;Vladimir V. Saveliev&quot;" />
<person posts="1" size="3" who="Witold Krecicki" />
<person posts="1" size="3" who="(P)" />
<person posts="1" size="3" who="&quot;Alexander Y. Fomichev&quot;" />
<person posts="1" size="3" who="Ville Herva" />
<person posts="1" size="3" who="MA" />
<person posts="1" size="3" who="=?ISO-8859-1?Q?Lenar_L=F5hmus?=" />
<person posts="1" size="3" who="Rogier Wolff" />
<person posts="1" size="3" who="=?iso-8859-1?Q?J=F6rn?= Engel" />
<person posts="1" size="3" who="Ian Kent" />
<person posts="1" size="3" who="Guillaume POIRIER" />
<person posts="1" size="3" who="Matt Heler" />
<person posts="1" size="3" who="James Mastros" />
<person posts="1" size="3" who="Patrick McHardy" />
<person posts="1" size="3" who="Rafael Pereira" />
<person posts="1" size="3" who="&quot;Aneesh Kumar K.V&quot;" />
<person posts="1" size="3" who="Matt Porter" />
<person posts="1" size="3" who="Torrey Hoffman" />
<person posts="1" size="3" who="Zoltan Boszormenyi" />
<person posts="1" size="3" who="Bob Riegelmann" />
<person posts="1" size="3" who="Frank Cusack" />
<person posts="1" size="3" who="Wichert Akkerman" />
<person posts="1" size="3" who="Steve French" />
<person posts="1" size="3" who="Ian Soboroff" />
<person posts="1" size="3" who="(mnalis)" />
<person posts="1" size="3" who="&quot;Robert M. Stockmann&quot;" />
<person posts="1" size="3" who="Santiago Garcia Mantinan" />
<person posts="1" size="3" who="Martin Knoblauch" />
<person posts="1" size="3" who="Jussi Hamalainen" />
<person posts="1" size="3" who="(Administrator)" />
<person posts="1" size="3" who="Benjamin LaHaise" />
<person posts="1" size="3" who="Eyal Lebedinsky" />
<person posts="1" size="3" who="&quot;Jim Gifford&quot;" />
<person posts="1" size="3" who="&quot;Eric D. Mudama&quot;" />
<person posts="1" size="3" who="Steven French" />
<person posts="1" size="2" who="&quot;bradgoodman.com&quot;" />
<person posts="1" size="2" who="=?ISO-8859-1?Q?Fran=E7ois_Visconte?=" />
<person posts="1" size="2" who="Jan Knutar" />
<person posts="1" size="2" who="Manjunath Prabhu" />
<person posts="1" size="2" who="Monty" />
<person posts="1" size="2" who="(support)" />
<person posts="1" size="2" who="Leopold Gouverneur" />
<person posts="1" size="2" who="David Lloyd" />
<person posts="1" size="2" who="=?iso-8859-1?q?Steve=20Kieu?=" />
<person posts="1" size="2" who="(shinepeak)" />

</stats>

<section
  title="More Sistina Software Available; Clustering Workshop Organized"
  subject="[ANNOUNCE] Minneapolis Cluster Summit, July 29-30"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=2euPY-3V8-7%40gated-at.bofh.it&amp;prev=/groups%3Fas_ugroup%3Dlinux.kernel%26as_uauthors%3DDaniel%2520Phillips%26as_usubject%3D%255BANNOUNCE%255D%2520Minneapolis%2520Cluster%2520Summit%253A%2520July%252029-30%26as_drbb%3Db%26as_mind%3D04%26as_minm%3DJul%26as_miny%3D2004%26as_maxd%3D04%26as_maxm%3DJul%26as_maxy%3D2004"
  posts="55"
  startdate="04 Jul 2004 22:09:29 -0800"
  enddate="26 Jul 2004 21:57:50 -0800"
>
<topic>Clustering</topic>
<topic>Ottawa Linux Symposium</topic>

<mention>Arjan van de Ven</mention>
<mention>Steven Dake</mention>
<mention>Nick Piggin</mention>
<mention>Andrew Morton</mention>

<p>Daniel Phillips said:</p>

<quote who="Daniel Phillips">

<p>Red Hat and (the former) Sistina Software are pleased to announce that
we will host a two day kickoff workshop on GFS and Cluster Infrastructure
in Minneapolis, July 29 and 30, not too long after OLS.  We call this the
"Cluster Summit" because it goes well beyond GFS, and is really about building
a comprehensive cluster infrastructure for Linux, which will hopefully be
a reality by the time Linux 2.8 arrives.  If we want that, we have to start
now, and we have to work like fiends, time is short.  We offer as a starting
point, functional code for a half-dozen major, generic cluster subsystems
that Sistina has had under development for several years.</p>

<p>This means not just a cluster filesystem, but cluster logical volume
management, generic distributed locking, cluster membership services, node
fencing, user space utilities, graphical interfaces and more.  Of course,
it's all up for peer review.  Everybody is invited, and yes, that includes
OCFS and Lustre folks too. Speaking as an honorary OpenGFS team member,
we will be there in force.</p>

<p>Tentative agenda items:</p>

<ul>

<li>GFS walkthrough: let's get hacking</li>

<li>GULM, the Grand Unified Lock Manager</li>

<li>Sistina's brand new Distributed Lock Manager</li>

<li>Symmetric Cluster Architecture walkthrough</li>

<li>Are we there yet?  Infrastructure directions</li>

<li>GFS: Great, it works!  What next?</li>

</ul>

<p>Further details, including information on travel and hotel arrangements,
will be posted over the next few days on the Red Hat sponsored community
cluster page:</p>

<p><a
href="http://sources.redhat.com/cluster/">http://sources.redhat.com/cluster/</a></p>

<p>Unfortunately, space is limited.  We feel we can accommodate about fifty
people comfortably.  Registration is first come, first served.  The price
is: Free!  (Of course.)  If you're interested, please email me.</p>

<p>Let's set our sights on making Linux 2.8 a true cluster operating
system.</p>

</quote>

<p>Christoph Hellwig replied, <quote who="Christoph Hellwig">Don't you
think it's a little too short-term?  I'd rather see the cluster software
that could be merged mid-term on KS (and that seems to be only OCFS2 so
far)</quote>. Daniel said that the project was not short term; on the
contrary, he felt the project was several months overdue. He asked, <quote
who="Daniel Phillips">Don't you think we ought to take a look at how OCFS
and GFS might share some of the same infrastructure, for example, the DLM and
cluster membership services?</quote> Lars Marowsky-Bree said ominously, <quote
who="Lars Marowsky-Bree">Indeed. If your efforts in joining the infrastructure
are more successful than ours have been, more power to you ;-)</quote></p>

<p>Daniel asked what problems Lars was talking about, as the technical issues
did not seem insurmountable; Lars replied:</p>

<quote who="Lars Marowsky-Bree">

<p>The problems were mostly political. Maybe we tried to push too early,
but 1-3 years back, people weren't really interested in agreeing on some
common components or APIs. In particular a certain Linux vendor didn't even
join the group ;-) And the "industry" was very reluctant too. Which meant
that everybody spend ages talking and not much happening.</p>

<p>However, times may have changed, and hopefully for the better. The push
to get one solution included into the Linux kernel may be enough to convince
people that this time its for real...</p>

<p>There still is the Open Clustering Framework group though, which is
a sub-group of the FSG and maybe the right umbrella to put this under,
to stay away from the impression that it's a single vendor pushing.</p>

<p>If we could revive that and make real progress, I'd be as happy as a well
fed penguin.</p>

<p>Now with OpenAIS on the table, the GFS stack, the work already done by
OCF in the past (which is, admittedly, depressingly little, but I quite like
the Resource Agent API for one) et cetera, there may be a good chance.</p>

</quote>

<p>Daniel, a Red Hat employee, admitted that Lars' reference to a "certain
Linux vendor" referred to Red Hat. But he said that Red Hat was fully behind
the idea now, and had a lot of recently acquired Sistina code to put into
the pot. He invited everyone who had expressed interest in this in the past
to join in the discussion and in the project. And he promised to look over
all available relevant code. He and Lars, during this conversation, also
went back-and-forth on various technical issues; which Daniel summarized at
one point, saying:</p>

<quote who="Daniel Phillips">

<p>OK, what I've learned from the discussion so far is, we need to avoid 
getting stuck too much on the HA aspects and focus more on the 
cluster/performance side for now.  There are just too many entrenched 
positions on failover.  Even though every component of the cluster is 
designed to fail over, that's just a small part of what we have to deal 
with:</p>

<ul>

<li>Cluster Volume management</li>

<li>Cluster configuration management</li>

<li>Cluster membership/quorum</li>

<li>Node Fencing</li>

<li>Parallel cluster filesystems with local semantics</li>

<li>Distributed Locking</li>

<li>Cluster mirror block device</li>

<li>Cluster snapshot block device</li>

<li>Cluster administration interface, including volume managment</li>

<li>Cluster resource balancing</li>

<li>bits I forgot to mention</li>

</ul>

<p>Out of that, we need to pick the three or four items we're prepared to 
address immediately, that we can obviously share between at least two 
known cluster filesystems, and get them onto lkml for peer review.  
Trying to push the whole thing as one lump has never worked for 
anybody, and won't work in this case either.  For example, the DLM is 
fairly non-controversial, and important in terms of performance and 
reliability.  Let's start with that.</p>

<p>Furthermore, nobody seems interested in arguing about the cluster block 
devices either, so lets just discuss how they work and get them out of 
the way.</p>

<p>Then let's tackle the low level infrastructure, such as CCS (Cluster 
Configuration System) that does a simple job, that is, it distributes 
configuration files racelessly.</p>

<p>I heard plenty of fascinating discussion of quorum strategies last 
night, and have a number of papers to read as a result.  But that's a 
diversion: it can and must be pluggable.  We just need to agree on how 
the plugs work, a considerably less ambitious task.</p>

<p>In general, the principle is: the less important it is, the more 
argument there will be about it.  Defer that, make it pluggable, call 
it policy, push it to user space, and move on.  We need to agree on the 
basics so that we can manage network volumes with cluster filesystems 
on top of them.</p>

</quote>

<p>The technical discussion continued, with contributions from Daniel, Lars,
Arjan van de Ven, Nick Piggin, Steven Dake, and even a small contribution
from Andrew Morton.</p>

</section>

<section
  title="New 'Voluntary' Preemption Patch Avoids Existing Preemption Problems"
  subject="[announce] [patch] Voluntary Kernel Preemption Patch"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=2g8rY-7zF-11%40gated-at.bofh.it&amp;prev=/groups%3Fas_ugroup%3Dlinux.kernel%26as_uauthors%3DIngo%2520Molnar%26as_usubject%3D%255Bannounce%255D%2520%255Bpatch%255D%2520Voluntary%2520Kernel%2520Preemption%2520Patch%26as_drbb%3Db%26as_mind%3D09%26as_minm%3DJul%26as_miny%3D2004%26as_maxd%3D09%26as_maxm%3DJul%26as_maxy%3D2004"
  posts="267"
  startdate="09 Jul 2004 10:26:38 -0800"
  enddate="29 Jul 2004 18:23:05 -0800"
>
<topic>FS: ReiserFS</topic>
<topic>FS: ext3</topic>
<topic>FS: sysfs</topic>
<topic>Framebuffer</topic>
<topic>I2C</topic>
<topic>Real-Time</topic>
<topic>SMP</topic>
<topic>Sound: ALSA</topic>

<p>Ingo Molnar said:</p>

<quote who="Ingo Molnar">

<p>as most of you are probably aware of it, there have been complaints on
lkml that the 2.6 kernel is not suitable for serious audio work due to
high scheduling latencies (e.g. the Jackit people complained). I took a
look at latencies and indeed 2.6.7 is pretty bad - latencies up to 50
msec (!) can be easily triggered using common workloads, on fast 2GHz+
x86 system - even when using the fully preemptible kernel!</p>

<p>to solve this problem, Arjan van de Ven and I went over various kernel
functions to determine their preemptability and we re-created from
scratch a patch that is equivalent in performance to the 2.4 lowlatency
patches but is different in design, impact and approach:</p>

<p><a
href="http://redhat.com/~mingo/voluntary-preempt/voluntary-preempt-2.6.7-bk20-H2">http://redhat.com/~mingo/voluntary-preempt/voluntary-pree
mpt-2.6.7-bk20-H2</a></p>

<p>(Note to kernel patch reviewers: the split voluntary_resched type of
  APIs, the feature #ifdefs and runtime flags are temporary and were
  only introduced to enable a easy benchmarking/comparisons. I'll split
  this up into small pieces once there's testing feedback and actual
  audio users had their say!)</p>

<p>unlike the lowlatency patches, this patch doesn't add a lot of new
scheduling points to the source code, it rather reuses a rich but
currently inactive set of scheduling points that already exist in the
2.6 tree: the might_sleep() debugging checks. Any code point that does
might_sleep() is in fact ready to sleep at that point. So the patch
activates these debugging checks to be scheduling points. This reduces
complexity and impact quite significantly.</p>

<p>but even using these (over one hundred) might_sleep() points there were
still a number of latency sources in the kernel - we identified and
fixed them by hand, either via additional might_sleep() checks, or via
explicit rescheduling points. Sometimes lock-break was necessary as
well.</p>

<p>as a practical goal, this patch aims to fix all latency sources that
generate higher than ~1 msec latencies. We'd love to learn about
workloads that still cause audio skipping even with this patch applied,
but i've been unable to generate any load that creates higher than 1msec
latencies. (not counting driver initialization routines.)</p>

<p>this patch is also more configurable than the 2.4 lowlatency patches
were: there's a .config option to enable voluntary preemption, and there
are runtime /proc/sys knobs and boot-time flags to turn voluntary
preemption (CONFIG_VOLUNTARY_PREEMPT) and kernel preemption
(CONFIG_PREEMPT) on/off:</p>

<pre>        # turn on/off voluntary preemption (if CONFIG_VOLUNTARY_PREEMPT)
        echo 1 &gt; /proc/sys/kernel/voluntary_preemption
        echo 0 &gt; /proc/sys/kernel/voluntary_preemption

        # turn on/off the preemptible kernel feature (if CONFIG_PREEMPT)
        /proc/sys/kernel/kernel_preemption
        /proc/sys/kernel/kernel_preemption

</pre>

<p>the 'voluntary-preemption=0/1' and 'kernel-preemption=0/1' boot options
can be used to control these flags at boot-time.</p>

<p>all 4 combinations make sense if both CONFIG_PREEMPT and
CONFIG_VOLUNTARY_PREEMPT are enabled - great for performance/latency
testing and comparisons.</p>

<p>The stock 2.6 kernel is equivalent to:</p>

<p>voluntary_preemption:0 kernel_preemption:0</p>

<p>the 2.6 kernel with voluntary kernel preemption is equivalent to:</p>

<p>voluntary_preemption:1 kernel_preemption:0</p>

<p>the 2.6 kernel with preemptible kernel enabled is:</p>

<p>voluntary_preemption:0 kernel_preemption:1</p>

<p>and the preemptible kernel enhanced with additional lock-breaks is 
enabled via:</p>

<p>voluntary_preemption:1 kernel_preemption:1</p>

<p>it is safe to change these flags anytime.</p>

<p>The patch is against 2.6.7-bk20, and it also includes fixes for kernel
bugs that were uncovered while developing this patch. While it works for
me, be careful when using this patch!</p>

</quote>

<p>A huge discussion ensued. There was a good bit of support initially among
some developers, and a lot of folks piled on with comments and criticisms. But
Andrew Morton did not feel that the situation was at all clear. He thought it
would be useful to examine the particular workloads that folks had experienced
when the problems occurred; and he said:</p>

<quote who="Andrew Morton">

<p>Certainly 2.6+preempt is not as good as 2.4+LL at this time, but 2.6 isn't
too bad either.  Even under heavy filesystem load it's hard to exceed a 0.5
millisecond holdoff.  There are still a few problem in the ext3 checkpoint
buffer handling, but those seem pretty hard to hit.  I doubt if the `Jack'
testers were running `dbench 1000' during their testing.</p>

<p>All of which makes me suspect that the problems which the `Jack' testers
saw were not directly related to long periods of non-preemption in-kernel.
At least, not in core kernel/fs/mm code.  There have been problem in the
past in places like i2c drivers, fbdev scrolling, etc.</p>

<p>What we need to do is to encourage audio testers to use ALSA
drivers, to enable CONFIG_SND_DEBUG in the kernel build and to set
/proc/asound/*/*/xrun_debug and to send us the traces which result from
underruns.</p>

<p>As for the patch, well, sprinkling rescheduling points everywhere is
still not the preferred approach.  But adding more might_sleep() checks is
a sneaky way of making it more attractive ;)</p>

</quote>

<p>In a nearby post he also added:</p>

<quote who="Andrew Morton">

<p>Let me repeat that I am unconvinced as to the diagnosis of the current
audio problems - more analysis might prove me wrong of course.</p>

<p>And I'm unconvinced that we need to do anything apart from identifying
and fixing the remaining spinlocks which are holding off preemption for
too long.</p>

<p>IOW, I am questioning the very need for a "voluntary preemption" feature
at all when "involuntary preemption" works perfectly well.</p>

</quote>

<p>A few posts down the road, Ingo replied:</p>

<quote who="Ingo Molnar">

<p>the reason is difference in overhead (codesize, speed) and risks (driver
robustness). We do not want to enable preempt for Fedora yet because it
breaks just too much stuff and is too heavy. So we looked for a solution
that might work for a generic distro.</p>

<p>here are the code size differences. With a typical .config (debugging
options disabled), the 2.6.7-mm7(+voluntary-preempt) UP x86 kernel gets the
following .text sizes:</p>

<pre>orig:      1776911 bytes
   preempt:   1855519 bytes  (+4.4%)
   voluntary: 1783407 bytes  (+0.3%)</pre>

<p>so if voluntary-preempt can get close to real preempt's numbers for
practical stuff then we get most of the benefits while excluding some of
the nastiest risks and disadvantages.</p>

<p>(Long-term i'd like to see preempt be used unconditionally - at which
point the 10-line CONFIG_VOLUNTARY_PREEMPT Kconfig and kernel.h change could
go away.)</p>

</quote>

<p>Robert Love suggested that in this case, instead of coming up with
complicated workarounds, the thing to do was to work on getting preemption
working on Fedora. He also disagreed with the idea that preemption would have
too much overhead associated with it. He said, <quote who="Robert Love">I
have seen no specific arguments that show a significant overhead.  Heck,
when people tried to show that kernel preemption hurt throughput, we saw
tests that showed improved throughput (probably due to better utilization
of I/O).</quote> Andrew also added, close by, <quote who="Andrew Morton">I
don't recall any testing results which showed a significant performance
difference from CONFIG_PREEMPT.</quote> He also felt the thing to do was
to fix preemption on Fedora, or at least identify the bugs so they could
be addressed. Arjan van de Ven replied, <quote who="Arjan van de Ven">just
look over all the "fix preempt" stuff that got added to the kernel in the
last 6 months. Sometimes subtle sometimes less so. From a distribution POV
I don't want a potential slew of basically impossible to reproduce problems,
especially this young in 2.6, there are plenty of other problems already (and
before you ask "which", just look at how many bugs got fixed in the last X
weeks for any value of X, and look at say acpi issues).  Yes I understand this
puts you into a bit of a bad position, several distros not enabling preempt
means that it gets less testing than it should.  However.. there's only so
much issues distros can take and with 2.6 still quite fresh...</quote></p>

<p>Andrew felt that Arjan was equivocating here; and suggested that Arjan
really couldn't identify any specific bugs and was just spreading FUD. Mikulas
Patocka replied with a concrete case. He said, <quote who="Mikulas Patocka">For
example the recent race that corrupted file content on ext3 and reiserfs when
fsync and write were called simultaneously ... it was possible on SMP too,
but with tiny probability --- CONFIG_PREEMPT triggered it wide open.</quote>
But there was no reply to this.</p>

<p>Elsewhere, some audio folks actually followed Andrew's initial suggestion of
performing more tests, and so a large subthread was taken up with preemption
debugging session. Throughout the discussion, Andrew reiterated that <quote
who="Andrew Morton">preemption is the way in which we wish to provide
low-latency.  At this time, patches which sprinkle cond_resched() all over
the place are unwelcome.  After 2.7 forks we can look at it again.</quote>
Though even then he affirmed that he had not yet gone over Ingo's and
Arjan's patch.</p>

<p>Elsewhere, and sometimes overlapping with the preempt discussion, Ingo and
Arjan continued to develop and release new versions of their patch.</p>

</section>

<section
  title="Linux 2.6.8-rc1-mm1 Released; Quick Fix For Big Slowdown Followed"
  subject="2.6.8-rc1-mm1"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=2hMx0-3c0-3%40gated-at.bofh.it"
  posts="19"
  startdate="13 Jul 2004 17:25:59 -0800"
  enddate="22 Jul 2004 04:56:31 -0800"
>
<topic>Big Memory Support</topic>
<topic>FS: ext3</topic>
<topic>Kernel Release Announcement</topic>
<topic>Ottawa Linux Symposium</topic>

<mention>Jens Axboe</mention>

<p>Andrew Morton announced Linux 2.6.8-rc1-mm1, saying:</p>

<quote who="Andrew Morton">

<p><a
href="ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.8-rc1/2.6.8-rc1-mm1/">ftp://ftp.kernel.org/pub/linux/kernel/people/
akpm/patches/2.6/2.6.8-rc1/2.6.8-rc1-mm1/</a></p>

<ul>

<li>Lots of little fixes, mainly</li>

<li>

<p>Numerous scheduling latency fixes, mainly in the ext3 area.</p>

<p>This is a first pass - these patches need redoing and a bit of
infrastructure consolidation.</p>

</li>

<li>Outta here: I won't be in a
position to handle patches until July 26.  Off to <a
href="http://www.tech-forum.org/upcoming/open_source_software_06-10-04.htm">http://www.tech-forum.org/upcoming/open_source_software_06-10
-04.htm</a> and then Kernel Summit and then OLS.</li>

</ul>

</quote>

<p>He posted a quick patch six hours later, at around midnight, saying,
<quote who="Andrew Morton">This kernel runs like a dessicated slug if you
have more than 2G of memory due to a 32-bit overflow.</quote> He acknowledged
that it wasn't a great fix, but it would do for the moment. Elsewhere, J. A.
Magallon reported that 2.6.8-rc1-mm1 would oops if the user tried to write to a
CD without a CD in the driver. He said:</p>

<quote who="J. A. Magallon">

<p>Who would do such a stupid thing ? Me the impatient trying to write before
the drive ends to load the disc...</p>

<p>The bad thing is that it leaves the drive in an ususable state:</p>

<pre>Error trying to open /dev/hdc exclusively (Device or resource busy)... retrying in 1 second.
Error trying to open /dev/hdc exclusively (Device or resource busy)... retrying in 1 second.</pre>

<p>It does not happen with 2.6.8-rc2.</p>

</quote>

<p>Jens Axboe posted a fix, adding that Andrew did have possession of the fix,
though Jens wasn't sure if it had actually been merged yet.</p>

</section>

<section
  title="I2C Updates For 2.6"
  subject="[BK PATCH] I2C update for 2.6.8-rc1"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=2i2s5-6BS-7%40gated-at.bofh.it"
  posts="23"
  startdate="14 Jul 2004 16:05:31 -0800"
  enddate="29 Jul 2004 22:30:51 -0800"
>
<topic>FS: sysfs</topic>
<topic>I2C</topic>

<mention>Mark M. Hoffman</mention>
<mention>Eugene Surovegin</mention>

<p>Greg KH, working with Alexandre d'Alton, Eugene Surovegin, Luiz Capitulino,
Andras Bali, Mark M. Hoffman, and primarily with Jean Delvare, posted a
bunch of I2C patches, split up into bite-sized chunks for easy approval. He
said, <quote who="Greg KH">Here are some i2c driver fixes and updates for
2.6.8-rc1.  There are a few new i2c chip drivers, and the biggest chunk
is the new w1 (1-wire) driver subsystem contributed by Evgeniy Polyakov.
The sysfs interface for w1 isn't finished quite yet (just need to create
some more sysfs files, nothing major), but the main functionality is there,
and this allows more w1 drivers to be contributed easier.</quote> One patch
aimed at providing support for adm1030 and adm1031 sensors chips. Another,
as Greg quoted an email from Jean, <quote who="Jean Delvare">adds support
for the LM86, MAX6657 and MAX6658 sensor chips to the lm90 driver. These
are less popular than the LM90 and ADM1032 but several users have reported
to use these, so I added support to the lm90 driver. All these chips are
fully compatible so that's just a matter of accepting the new chip ids. I
also slightly simplified the detection code.</quote> Another, as Greg quoted
an email from Andras, <quote who="Greg KH">adds support for the LM77 sensor
chips made by National Semiconductor. Formerly this was claimed by the LM75
driver but when I got hold of an embedded board (built around the National
Geode SC1100 CPU), which was equipped with an LM77, it turned out that the
two chips are not compatible.</quote> Another, as Greg quoted another email
from Jean, <quote who="Jean Delvare">is my port of the adm1025 driver to
2.6. It has been tested by a few users and reported to work OK.</quote>
Another patch added a Dallas 1-wire protocol driver subsystem. As stated
in the configuration help text included in the patch, "Dallas's 1-wire
bus is usefull to connect slow 1-pin devices such as iButtons and thermal
sensors." The remaining patches were bug fixes and documentation updates
(and the removal of i2c/i2c-pport documentation because the relevant driver
was not in the official sources and had not yet even been ported to 2.6).</p>

</section>

<section
  title="Limiting the Number Of Concurrent Hotplug Processes"
  subject="[PATCH] Limit number of concurrent hotplug processes"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=2k3k7-1T9-11%40gated-at.bofh.it"
  posts="13"
  startdate="20 Jul 2004 05:52:40 -0800"
  enddate="27 Jul 2004 23:12:07 -0800"
>
<topic>Hot-Plugging</topic>
<topic>Virtual Memory</topic>

<mention>Andrew Morton</mention>

<p>Hannes Reinecke said:</p>

<quote who="Hannes Reinecke">

<p>the attached patch limits the number of concurrent hotplug processes.
Main idea behind it is that currently each call to call_usermodehelper will
result in an execve() of "/sbin/hotplug", without any check whether enough
resources are available for successful execution. This leads to hotplug
being stuck and in worst cases to machines being unable to boot.</p>

<p>This check cannot be implemented in userspace as the resources are already
taken by the time any resource check can be done; for the same reason any
'slim' programs as /sbin/hotplug will only delay the problem.</p>

</quote>

<p>Andrew Morton was a little surprised to hear about Hannes' symptoms. He
asked what was causing enough module probes to trigger the lockup. Christian
Borntraeger replied:</p>

<quote who="Christian Borntraeger">

<p>I dont know exactly which scenario Hannes has seen, but its quite simple
to trigger this scenario with almost any s390/zSeries.</p>

<p>Using the Hardware Management Console or z/VM you are able to hotplug
(deactive/activate/attach/detach) almost every channel path. As a channel
path can connect a big bunch of devices lots of machine checks are triggered,
which causes lots of hotplugs. The same amount of machine checks could happen
if a hardware failure happens.</p>

<p>Some month ago I played around with a diet version of  hotplug. This program
was fast and small enough to make my scenario work properly. Nevertheless,
as hannes already stated this will only delay the problem.</p>

</quote>

<p>And Hannes confirmed, <quote who="Hannes Reinecke">As Christian Borntraeger
already said, it's not so much an explosion of module probes but rather the
triggering of quite a lot of events.  Imagine loading scsi_debug with 512
devices or more ...</quote></p>

<p>Andrew and Hannes went back and forth on it for a bit, but had a strange
sort of disconnect, in which Andrew wasn't able to understand what Hannes was
attempting, and Hannes wasn't able to explain it clearly. Patches came in from
both sides throughout, and the thread ended abruptly, with no conclusion.</p>

</section>

<section
  title="Possible Scheduler Improvements"
  subject="[RFC] Patch for isolated scheduler domains"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=2kOVE-26D-5%40gated-at.bofh.it"
  posts="21"
  startdate="22 Jul 2004 08:41:26 -0800"
  enddate="27 Jul 2004 17:08:10 -0800"
>
<topic>Hyperthreading</topic>
<topic>SMP</topic>

<p>Dimitri Sivanich said:</p>

<quote who="Dimitri Sivanich">

<p>I'm interested in implementing something I'll call isolated sched domains
for single cpus (to minimize the latencies involved when doing things like
load balancing on certain select cpus) on IA64.</p>

<p>Below I've included an initial patch to illustrate what I'd like to do.
I know there's been mention of 'platform specific work' in the area of sched
domains.  This patch only addresses IA64, but could be made generic as well.
The code is derived directly from the current default arch_init_sched_domains
code.</p>

<p>The patch isolates cpus that have been specified via a boot time parameter
'isolcpus=&lt;cpu #&gt;,&lt;cpu #&gt;'.</p>

</quote>

<p>Ingo Molnar liked the idea, and suggested, <quote who="Ingo Molnar">put
it into sched.c. Every architecture benefits from the ability to define
isolated CPUs.</quote> Nick Piggin asked if Dimitri or anyone else had
tried actually running the code, and Dimitri said he'd been running it on
an Altix. Nick also pointed him to a thread Nick had started, with Subject: "<a
href="http://groups.google.com/groups?hl=en&amp;lr=lang_en&amp;ie=UTF-8&amp;safe=off&amp;selm=2kYV2-RS-3%40gated-at.bofh.it">[PATCH]
consolidate sched domains</a>", and suggested that Dimitry consider working
on top of the patch Nick described there.</p>

<p>In that thread, Nick said:</p>

<quote who="Nick Piggin">

<p>The attached patch is against 2.6.8-rc1-mm1. Tested on SMP, UP and SMP+HT
here and it seems to be OK.</p>

<p>I have included the cpu_sibling_map for ppc64, although Anton said he
did have an implementation floating around which he would probably prefer,
but I'll let him deal with that.</p>

<p>Anyway, x86-64 is not equivalent before and after this patch. The main
thing is that they've been using SD_CPU_INIT for NUMA nodes, but will now
use SD_NODE_INIT. Probably neither is optimal, but I don't think Andi has
had much time to look at it. I should be able to take a look at it soon.</p>

</quote>

<p>Nick's changelog entry for the patch read:</p>

<blockquote>

<p>Teach the generic domains builder about SMT, and consolidate all
architecture specific domain code into that. Also, the SD_*_INIT macros can
now be redefined by arch code without duplicating the entire setup code. This
can be done by defining ARCH_HASH_SCHED_TUNE.</p>

<p>The generic builder has been simplified with the addition of a helper
macro which will probably prove to be useful to arch specific code as well
and should be exported if that is the case.</p>

</blockquote>

<p>Dimitri waded into the code, asking questions and offering bug reports,
along with several other developers.</p>

</section>

<section
  title="Process Aggregates (PAGG) For Grouping Processes"
  subject="[PATCH] (update) Process Aggregates (PAGG) for 2.6.7"
  archive="http://groups.google.com/groups?hl=en&amp;lr=lang_en&amp;ie=UTF-8&amp;safe=off&amp;selm=2msxE-5Pu-9%40gated-at.bofh.it"
  posts="2"
  startdate="22 Jul 2004 13:03:34 -0800"
  enddate="26 Jul 2004 21:07:51 -0800"
>
<topic>SMP</topic>

<p>For an earlier PAGG patch, see <kcref subject="[PATCH] 2.5.43 CSA, Job,
and PAGG" startdate="17 Oct 2002 07:21:47 -0800"/></p>

<p>This time, Erik Jacobson said:</p>

<quote who="Erik Jacobson">

<p>Attached is the PAGG patch for kernel 2.6.7.  Some may recall I posted
an earlier PAGG patch for 2.6.7.  This version has improved handling for
the init function pointer functionality introduced earlier.</p>

<p>We'd be very interested in seeing this be accepted in to the kernel.
If there is anything we should adjust to make it more likely to be accepted,
please reply.</p>

</quote>

<p>The patch included documentation as well, in the form of a
Documentation/pagg.txt file:</p>

<blockquote>

<p>The process aggregates infrastructure, or PAGG, provides a generalized
mechanism for providing arbitrary process groups in Linux.  PAGG consists
of a series of functions for registering and unregistering support for new
types of process aggregation containers with the kernel.  This is similar to
the support currently provided within Linux that allows for dynamic support
of filesystems, block and character devices, symbol tables, network devices,
serial devices, and execution domains.  This implementation of PAGG provides
developers the basic hooks necessary to implement kernel modules for specific
process containers, such as the job container.</p>

<p>The do_fork function in the kernel was altered to support PAGG.  If a
process is attached to any PAGG containers and subsequently forks a child
process, the child process will also be attached to the same PAGG containers.
The PAGG containers involved during the fork are notified that a new process
has been attached.  The notification is accomplished via a callback function
provided by the PAGG module.</p>

<p>The do_exit function in the kernel has also been altered.  If a process
is attached to any PAGG containers and that process is exiting, the PAGG
containers are notified that a process has detached from the container.
The notification is accomplished via a callback function provided by the
PAGG module.</p>

<p>The sys_execve function has been modified to support an optional callout
that can be run when a process in a pagg list does an exec.  It can be used,
for example, by other kernel modules that wish to do advanced CPU placement
on multi-processor systems (just one example).</p>

</blockquote>

<p>Andrew Morton replied, <quote who="Andrew Morton">Seems straightforward
enough, but until we've decided to merge features which actually _use_
the mechanism, I'd be reluctant to send any of this Linuswards.</quote></p>

</section>

<section
  title="Joining Keyboards To Braille Displays"
  subject="User-space Keyboard input?"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=2l5WF-5Ng-29%40gated-at.bofh.it"
  posts="5"
  startdate="23 Jul 2004 02:36:20 -0800"
  enddate="23 Jul 2004 22:09:17 -0800"
>
<topic>Braille</topic>

<p>Mario Lang said:</p>

<quote who="Mario Lang">

<p>I'm working on BRLTTY[1], a user-space daemon which handles braille displays
on UNIX platforms.  One of our display drivers recently gained the ability to
receive (set 2) scancodes from a keyboard connected directly to the display.
This is a very cool feature, since the display in question has a bluetooth
interface, making it effectively into a complete wireless terminal (input
and output through the same connection).</p>

<p>However, this creates some problems.  First of all, we now have to deal
with keyboard layouts.  Additionally, since we currently insert via TIOCSTI
I think this might get problematic as soon as one switches to an X Windows
console and modifiers come into play.</p>

<p>Does anyone know (and can point me into the right direction) if Linux has
some mechanism to allow for user-space keyboard data to be processed by the
kernel as if it were received from the system keyboard?  I.e., keyboard layout
would be handled by the same mapping which is configured for the system.</p>

</quote>

<p>Marcel Holtmann suggested, <quote who="Marcel Holtmann">Take a look at
the user level driver support (uinput).</quote> And Samuel Thibault also
said to Mario:</p>

<quote who="Samuel Thibault">

<p>About modifiers, I submitted a patch to Dave to handle them properly.</p>

<p>But ascii to scancode translation still depends on scancode to ascii
translation performed by the kernel indeed and the question still applies. I'll
have a look at uinput.</p>

</quote>

<p>Several days later, Mario posted an update, <quote who="Mario Lang">uinput
support is now committed to scr_linux.c.  I am using the exernal keyboard of
my bluetooth capable braille display to type this email already via uinput
:-).  The same layout is used as is configured on the box.  Our generic AT2
support maps to VAL_PASSKEY commands and the AT2 support for Linux maps the
AT2 scancode set to what Linux internally uses for scancodes (a sort of XT
scancode set, but not really).</quote></p>

</section>

<section
  title="Kernel Events Layer For Asynchoronous Communication"
  subject="[patch] kernel events layer"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=2lleR-8rw-3%40gated-at.bofh.it"
  posts="54"
  startdate="23 Jul 2004 09:41:57 -0800"
  enddate="27 Jul 2004 10:37:05 -0800"
>
<topic>FS: sysfs</topic>

<mention>Inaky Perez-Gonzalez</mention>

<p>Robert Love said:</p>

<quote who="Robert Love">

<p>Following patch implements the kernel events layer, which is a simple
wrapper around netlink to allow asynchronous communication from the kernel
to user-space of events, errors, logging, and so on.</p>

<p>Current intention is to hook the kernel via this interface into D-BUS,
although the patch is intended to be agnostic to any of that and policy
free.</p>

<p>D-BUS can be found here:</p>

<p><a href="http://dbus.freedesktop.org/">http://dbus.freedesktop.org/</a></p>

<p>Other user-space utilities (including code to utilize this) can be found
here:</p>

<p><a
href="http://vrfy.org/projects/kdbusd/">http://vrfy.org/projects/kdbusd/</a></p>

<p>This patch only implements a single event, processor temperature detection.
Other useful events include md sync, filesystem mount, driver errors, etc.
We can add those later, on a case-by-case basis.  I would like to be more
careful with adding events than we are with adding printk's, with some aim
toward a stable interface.</p>

<p>Usage of the new interface is simple:</p>

<p>send_kmessage(group, interface, message, ...)</p>

<p>Credit to Arjan for the initial implementation, Kay Sievers for some
updates, and the netlink code.</p>

</quote>

<p>A lot of folks went over the patch and offered comments and criticism; Andrew
Morton also asked approximately how many send_kmessage() calls there were likely
to be in total, in a couple of years. Robert replied:</p>

<quote who="Robert Love">

<p>Predicting the future is hard, but I suspect this number to be small.
Let's say 10 in core kernel code?</p>

<p>If this takes off as a solution for error reporting, that number will be
much larger in drivers.</p>

</quote>

<p>Chris Wedgwood was OK with the 10 calls in the core kernel, but a large
number in driver code would worry him. He said:</p>

<quote who="Chris Wedgwood">

<p>I would alsmost rather all possible messages get stuck somewhere common
so driver writes can't add these ad-hoc and we can avoid a proliferation of
either similar or pointless messages.</p>

<p>Forcing these into a common place lets people eyeball if a new messages
really is necessary --- and it makes writing applications to deal with these
things easier (since you don't have to scan the entire kernel tree).</p>

</quote>

<p>Robert compared the send_kmessage() situation with that of printk()s,
in that printk() messages were intended simply to be messages the developer
thought worthwhile to post. The send_kmessage() call would presumably
be similar. But he still agreed that refining and collecting them into a
single group might make sense as well. He said, <quote who="Robert Love">the
common base of errors could be certified as supported by the error daemon,
translated, etc.  etc.  I am not sure how realistic this goal is, but I do
like it, at least for the general case of the usual errors in drivers.</quote>
Chris guessed that most messages would be selected from a small pool of common
errors.  The discussion continued, but at one point Andrew Morton said:</p>

<quote who="Andrew Morton">

<p>I must say that my gut feeling here is that bolting an arbitrary new
namespace into the kernel in this manner is not the way to proceed.</p>

<p>I hope we'll hear more from Greg on this next week - see if we can come
up with some way to use the kobject/sysfs namespace for this.</p>

<p>Although heaven knows how "tmpfs just ran out of space" would map onto
kobject/sysfs.</p>

</quote>

<p>Inaky Perez-Gonzalez suggested using kobject representations if any
existed for a given circumstance, and dealing with other situations on a
case-by-case basis. But Robert said, <quote who="Robert Love">That introduces
two orthogonal name spaces, and that really doesn't cut it.  If Greg can
come up with a solution for using kobjects, I am all for that - that would
be great - but I really do not see kobject paths working out.  I think the
best we have is the file path in the tree.</quote> Greg KH replied, <quote
who="Greg KH">Give me a few days, I'm working on it, but have been traveling
too much.  Robert and I will sit down during OSCON this week and try to work
out something along these lines, and then post it again here.</quote></p>

</section>

<section
  title="ketchup Version 0.8 Released"
  subject="[ANNOUNCE] ketchup 0.8"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=2ldrc-30h-27%40gated-at.bofh.it"
  posts="6"
  startdate="23 Jul 2004 10:55:04 -0800"
  enddate="24 Jul 2004 11:36:11 -0800"
>
<topic>Version Control</topic>

<mention>Lee Revell</mention>

<p>Matt Mackall said:</p>

<quote who="Matt Mackall">

<p>ketchup is a script that automatically patches between kernel
versions, downloading and caching patches as needed, and automatically
determining the latest versions of several trees. Available at:</p>

<p><a
href="http://selenic.com/ketchup/ketchup-0.8">http://selenic.com/ketchup/ketchup-0.8</a></p>

<p>New in this version by popular demand:</p>

<ul>

<li>falls back to .gz files if .bz2 files aren't available</li>

<li>can find BK snapshots in old/ directories
  (aka the jgarzik memorial hack)</li>

<li>option to rename directories to linux-&lt;v&gt; after update</li>

<li>can read default options from KETCHUP_OPTS</li>

</ul>

<p>Example usage:</p>

<p>$ ketchup 2.6-mm<br/>
 2.6.3-rc1-mm1 -&gt; 2.6.5-mm4<br/>
 Applying 2.6.3-rc1-mm1.bz2 -R<br/>
 Applying patch-2.6.3-rc1.bz2 -R<br/>
 Applying patch-2.6.3.bz2<br/>
 Applying patch-2.6.4.bz2<br/>
 Applying patch-2.6.5.bz2<br/>
 Downloading 2.6.5-mm4.bz2<br/>
 Downloading 2.6.5-mm4.bz2.sign<br/>
 Verifying signature...<br/>
 gpg: Signature made Sat Apr 10 21:55:36 2004 CDT using DSA key ID 517D0F0E<br />
 gpg: Good signature from "Linux Kernel Archives Verification Key<br />
 &lt;<a href="mailto:ftpadmin@kernel.org">ftpadmin@kernel.org</a>&gt;"<br/>
 gpg:                 aka "Linux Kernel Archives Verification Key<br />
 &lt;<a href="mailto:ftpadmin@kernel.org">ftpadmin@kernel.org</a>&gt;"<br/>
 owner.<br/>
 gpg: WARNING: This key is not certified with a trusted signature!<br />
 gpg:          There is no indication that the signature belongs to the<br />
 Primary key fingerprint: C75D C40A 11D7 AF88 9981  ED5B C86B A06A 517D 0F0E<br />
 Applying 2.6.5-mm4.bz2</p>

</quote>

<p>Lee Revell gave ketchup a try, but had trouble getting it to work under
Debian Unstable; and the two of them went back and forth on it for a bit.</p>

</section>

<section
  title="GPL Being Tested In German Courts"
  subject="[OT] German court says the GPL is effective"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=2lfMi-4JD-35%40gated-at.bofh.it"
  posts="3"
  startdate="23 Jul 2004 13:24:23 -0800"
  enddate="29 Jul 2004 04:11:05 -0800"
>

<mention>Matthias Andree</mention>

<p>Adrian Bunk said:</p>

<quote who="Adrian Bunk">

<p>I know this is off-topic, but a court in my home town Munich has
decided that a cease and desist letter Harald Welte sent to a router
producer (Sitecom) who used netfilter/iptables in his router but didn't
publish the sources of the firmware with a penalty of up to 100 000 Euro
is valid (a German version of the decision of the three judges is at <a
href="http://www.jbb.de/urteil_lg_muenchen_gpl.pdf">http://www.jbb.de/urteil_lg_muenchen_gpl.pdf</a>).</p>

<p>It's quite nice to hear that a court has decided that the GPL is enforceable
under German law.</p>

</quote>

<p>Prakash K. Cheemplavam remarked, <quote who="Prakash K. Cheemplavam">As far
as I have understood it: This was just a "quick" decision making, a "real"
court case comes later. So far the court finds it reasonable to enforce the
cease and desist letter until the final decision comes, as the "probability"
is high, that the GPL is compatible with German laws and even if not, the
company wouldn't be allowed to use the GPLed software.</quote></p>

<p>Matthias Andree asked if the verdict had become final yet, and Adrian
replied that no, it had not.</p>

</section>

<section
  title="Driver For IBM Multiport Serial Adapters"
  subject="new device driver to enable the IBM Multiport Serial Adapter in Linux"
  archive="http://groups.google.com/groups?hl=en&amp;lr=lang_en&amp;ie=UTF-8&amp;safe=off&amp;selm=2mjXt-8lm-35%40gated-at.bofh.it"
  posts="3"
  startdate="26 Jul 2004 11:10:26 -0800"
  enddate="27 Jul 2004 07:22:35 -0800"
>
<topic>Modems</topic>

<mention>Jeff Garzik</mention>

<p>Janice M. Girouard said:</p>

<quote who="Janice M. Girouard">

<p>The patch below enables the IBM Multiport Serial Adapter for the Linux OS.
This driver is for a family of multiport serial adapters including 2 port
RVX, 2 port internal modem, 4 port internal modem and a split 1 port RVX and
1 port internal modem.  We have applied &amp; tested this patch against our
iSeries and pSeries machines (there are no known existing defects following
this testing).</p>

<p>We would like this code accepted into the kernel.  It was previosly
submitted to the linux-serial mailing list, and we believe we have addressed
any coding issues raised.   Are there any additional concerns?  How do you
suggest we proceed to have this code accepted?</p>

</quote>

<p>Andrew Morton replied:</p>

<quote who="Andrew Morton">

<p>Looks sane.  Did you really intend that it be buildable for all
architectures?  (There's nothing wrong with this - it's good.  But it's a
bit unusual for this sort of driver).</p>

<p>"IBM multiport serial adapter" seems to be a rather generic description of
this device.  Is this the only multiport serial adapter which IBM has ever,
or will ever make?  If not, then perhaps we could make the description a
little more specific?</p>

</quote>

<p>There was no reply to this, but elsewhere, Jeff Garzik gave a line-by-line
code commentary, with many suggestions and bug reports.</p>

</section>

<section
  title="IRQ Threads; Real-Time Issues"
  subject="[patch] IRQ threads"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=2mJ5y-Xl-25%40gated-at.bofh.it"
  posts="30"
  startdate="27 Jul 2004 14:50:40 -0800"
  enddate="29 Jul 2004 14:44:09 -0800"
>
<topic>BSD</topic>
<topic>Disks: IDE</topic>
<topic>Microkernels: Adeos</topic>
<topic>Patents</topic>
<topic>Real-Time: RTAI</topic>
<topic>SMP</topic>

<mention>Lee Revell</mention>

<p>Scott Wood said:</p>

<quote who="Scott Wood">

<p>I have attached a patch for implementing IRQ handlers in threads, for
latency-reduction purposes.  It requires that softirqs must be run in
threads (or else they could end up running inside the IRQ threads,
which will at the very least trigger bugs due to in_irq() being set). 
I've tested it with Ingo's voluntary-preempt J7 patch, and it should
work with the TimeSys softirq thread patch as well (though you might
get a conflict with the PF_IRQHANDLER definition; just merge them
into one).</p>

<p>Some notes:</p>

<ol>

<li>This may not work properly with some interrupt controller code,
which doesn't do the obvious thing with mask_and_ack() and end(). 
This includes the IO-APIC code, which has an empty end() for edge
triggered interrupts and an empty mask_and_ack() for level-triggered
interrupts.  The mask_and_ack() needs to really mask the interrupt,
as otherwise the hardware will not deliver lower-priority (to it)
interrupts, which may have a higher-priority thread.</li>

<li>This patch does not disable local interrupts when running a
threaded handler.  SMP-safe drivers shouldn't be directly bothered by
this (as the interrupt could as easily have happened on another CPU),
but there may be some interactions with softirqs and per-cpu data, if
a softirq thread preempts an IRQ thread, or an IRQ thread gets
migrated to a different CPU.  I'm particularly worried about the
network code.  If possible, I'd like to find and fix such breakages
rather than use local_irq_disable(), as that would prevent IRQ
proritization from working, and prevent IRQ threads from being used
to isolate the rest of the system from long-running IRQs (such as
non-DMA IDE).</li>

<li>The i8042 driver had to be marked SA_NOTHREAD, as there are
non-preemptible regions where it spins, waiting for an interrupt.
Ideally, this driver (and others like it) should be fixed to either
do a cond_resched() or use a wait queue.</li>

<li>This might be a good time to get around to moving the bulk of the
arch/whatever/kernel/irq.c into generic code, as the code said was
supposed to happen in 2.5.  This patch is currently only for x86
(though we've run IRQ threads on many different platforms in the
past).</li>

<li>Is there any reason why an IRQ controller might want to have its
end() called even if IRQ_DISABLED or IRQ_INPROGRESS is set?  It'd be
nice to merge those checks in with the IRQ_THREADPENDING/IRQ_THREADRUNNING 
checks.</li>

<li>This patch causes in_irq() to return true if an IRQ thread is
running, as some drivers use it in common code to determine how to
act.  in_interrupt(), however, will return false in such a case.
The exact meaning of these macros in the presence of IRQ threads
isn't very well defined, and I hope this results in sane behavior.</li>

</ol>

</quote>

<p>Ingo Molnar had some specific criticisms, but affirmed, <quote who="Ingo
Molnar">I agree with the concept of using multiple threads for interrupts
- i'll add that to the voluntary-preempt patch too. This is an essential
feature to prioritize interrupts.</quote> Bill Huey remarked, <quote who="Bill
Huey">The way I picture the problem permits those threads to migration across
CPUs and therefore kill interrupt performance from cache thrashing. Do you
have a solution for that ? I like the way you're doing it now with irqd() in
that it's CPU-local, but as you know it's not priority sensitive.</quote> Scott
replied:</p>

<quote who="Scott Wood">

<p>Wouldn't the IRQ threads be subject to the same heuristics that the
scheduler uses with ordinary threads, in order to avoid unnecessary
CPU migration?  Plus, IRQs ordinarily get distributed across CPUs,
and in most cases shouldn't have a very large cache footprint
(especially data; the code can be in multiple CPU caches at once), so
I don't think this is a susbtantial degradation from the way things
already are.</p>

<p>If desired by the user, an IRQ thread could be bound to a specific
CPU to avoid such problems (in which case, they'd probably want to
set the smp_affinity of the hard IRQ stub to the same CPU).</p>

</quote>

<p>Bill replied, <quote who="Bill Huey">I get a number of gripes from SMP
aware folks that the context switching overhead is significant as well
as cache issues. That's what the concern is about.</quote> He agreed
with Scott's suggestion to bind IRQ threads to specific CPUs, saying,
<quote who="Bill Huey">this is an obvious next step in order to get better
performance.</quote> Ingo, on the other hand, said of Scott's suggestion,
<quote who="Ingo Molnar">i fixed this problem in -M5 the other way around:
the IRQ threads follow the affinity settings. They will bind themselves to
the first CPU in the affinity mask and they migrate only at 'safe' points
(between hardirqs).  This way e.g. user-space irqbalance will automatically
move the IRQ threads around too.</quote></p>

<p>Elsewhere, in respons to Scott's original post, Karim Yaghmour leveled
some criticism, saying:</p>

<quote who="Karim Yaghmour">

<p>My experience with clients who have been using TimeSys' stuff has been
abysmal. The fact of the of the matter is that most people who used
this were practically locked-in to TimeSys' services, unable to download
anything "standard" off the net and using it with their kernel. In one
example, we had to ditch the kernel the client got from TimeSys because
we had spent 10+ hours trying to get LTT to work on it without any
success whatsoever.</p>

<p>As I had said on other lists before, I don't see the point of creating
that much complexity in the kernel in order to try to shave-off a little
bit more off of the kernel's interrupt response time. The fact of the
matter is that neither this patch nor most of the other patches suggested
makes the kernel truely hard-rt. These patches only make the kernel
respond "faster". If you really need hard-rt, then you should be using
the Adeos nanokernel. With Adeos, you can even get a hard-rt driver
without using RTAI or any of the other rt derivatives.</p>

</quote>

<p>Lee Revell objected to Karim's vague characterizations of TimeSys, saying it
was difficult to defend against such assertions; Karim agreed, but said it was
the only way he could make the point he wanted to make, without violating his
client's confidentiality. Lee cautioned Karim to just try to be more careful in
future; and that particular disagreement ended.</p>

<p>Bringing the discussion back on track, Bill said:</p>

<quote who="Bill Huey">

<p>there's really two camps that are emerging in the real time Linux field,
dual and single kernel. The single kernel work that's current being done
could very well get Linux to being hard RT, assuming that you solve all of
the technical problems with things like RCU, etc... in 2.6.</p>

<p>The dual kernels folks would be in less of position to VAR their own
stuff and sell proprietary products if Linux were to get native hard RT
performance if you accept that economic criteria. Who knows what the actual
results will be.</p>

<p>It could be that all of this work with Linux could bury prioprietary OS
product (such as LynxOS here) or it could open doors to other things unknown
things that were never possible previous to Linux getting some kind of hard RT
capability. It's certainly a scary notion to think about with many variables
to consider. Linux getting hard RT is inevitable.  It's just a question of
how it'll be handled by proprietary OS vendors, witness IBM for a positive
example. A negative one would be Sun.</p>

<p>Now that Windriver System (the idiot folks that never understood Linux
before laying off tons of folks and disbanned the rather famous BSD/OS group
which I was apart of, etc...) and Red Hat is in the picture, it's all starting
to cook up.</p>

</quote>

<p>Karim pointed out that the dual-kernel concept was patented; and reiterated
that he advocated a third approach: the Adeos nanokernel. Philippe Gerum also
said:</p>

<quote who="Philippe Gerum">

<p>The hard RT people I know of and work with want to be able 1) to get
microsecond level bounded interrupt latency with no exception to this
rule, and 2) to be able to choose the right level of dispatch latency on a
thread-by-thread basis, from a few microseconds to a few hundreds of, but
in any case _bounded_ and predictable in the worst case. For this to happen,
they are willing to accept stringent limitations functionaly-wise if need be
to obtain the first, but still get access to the regular Linux programming
model and APIs if the second fits their apps.  They already know how they
could mix both properly in what would look like a single system from the
application pov.</p>

<p>For these people, the current undergoing work aimed at improving the
current determinism of the vanilla kernel is everything but a danger: it's
fundamental and very good news, because it could make 2) a reality sooner or
later. However, point 1) remains an issue, and unless you find a solution
for mixing fire and water, i.e. determinism which requires unfairness by
design and throughput seeking fairness on the average case, you would likely
end up considering that the Linux RT people's radical approach of using
a dual-kernel does not make them uneducated bozos (Ok, except me perhaps,
but this is not my point).  To get microsecond level guaranteed interrupt
latencies, the problem is far beyond solving random latency spots here and
there: it's an architectural issue.</p>

<p>To achieve this, we (i.e. the educated ones like Karim helping the
uneducated bozo like myself; yep, this is a teamwork) have come to
the conclusion that we needed a portable infrastructure that allows a
complete prioritization of interrupts, and hw events of interest in general
(e.g. traps/exceptions). Some infrastructure that exposes the same interface
regardless of the platform it runs on. It's called Adeos, the source code
identation is terrible (after 20 years practicing it, I still find means
to worsen my coding style, funky eh?!) but it's a working example of such
kind of infrastructure. The advantage of such kind of thin layer is that
you can plug any hard real-time core over it. This layer can remain silent
when unused, it can be configured out, it is just an enabler.  You don't
have to put the hell of a havoc in a stable GPOS core to modify some key
architectural characteristics of the Linux kernel in order to buy hard RT
capabilities to everyone, which could be construed as smashing a squadron
of flies with nukes.</p>

</quote>

<p>Elsewhere but close by, Albert D. Cahalan said:</p>

<quote who="Albert D. Cahalan">

<p>There is no such thing as hard-RT in the real world.</p>

<p>In reality, there's no point in making the software far more reliable than
the hardware, power supply, and so on.  Somebody may pour a can of Mountain
Dew into the vent holes.</p>

<p>Your software is OK as long as other causes of failure are much more
likely. One might even say you spent too much of your budget perfecting
the software! In the end it all comes down to $$$ (or Euros, or Yen...),
doesn't it?</p>

<p>People don't mathematically demonstrate anything about modern systems,
at least not while being honest.</p>

</quote>

<p>The thread petered out around here.</p>

</section>

<section
  title="loop-AES Update"
  subject="Announce loop-AES-v2.1c file/swap crypto package"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=2mZ0F-3E9-5%40gated-at.bofh.it"
  posts="1"
  startdate="28 Jul 2004 07:45:58 -0800"
>
<topic>Advanced Encryption Standard</topic>

<mention>Russell King</mention>

<p>Jari Ruusu announced a new version of loop-AES, saying:</p>

<quote who="Jari Ruusu">

<p>loop-AES changes since previous release:</p>

<p>

<ul>

<li>Adapted and merged Russell King's loop.c flush_dcache_page() fix. Most
  sane processors were not affected, but some processors with goofy aliasing
  caches were indeed affected (2.4 and 2.6 kernels).</li>

<li>Added optimized assembler implementations of AES and MD5 functions for
  AMD64 and compatible processors.</li>

<li>Pentium-2 optimized assembler implementations of AES and MD5 are really
  i386 compatible, so now those assembler implementations are enabled for
  all x86 processors.</li>

<li>Fixed Makefile to be compatible with distros that include "" characters in
  KERNELRELEASE string.</li>

<li>Added dkms.conf configuration file for Dynamic Kernel Module Support.
  Charles Duffy wrote original version.</li>

<li>Added support for /lib/modules/`uname -r`/source symlink.</li>

<li>Converted MODULE_PARM macros to module_param (2.6 kernels only).</li>

<li>Added workaround for scripts/modpost breakage (2.6 kernels only).</li>

</ul>

</p>

<p>bzip2 compressed tarball is here:</p>

<p>    <a href="http://loop-aes.sourceforge.net/loop-AES/loop-AES-v2.1c.tar.bz2">http://loop-aes.sourceforge.net/loop-AES/loop-AES-v2.1c.tar.bz2</a><br />
    md5sum b404d9d679b7096dd3fb089345c52320</p>

<p>    <a href="http://loop-aes.sourceforge.net/loop-AES/loop-AES-v2.1c.tar.bz2.sign">http://loop-aes.sourceforge.net/loop-AES/loop-AES-v2.1c.tar.bz2.sign</a></p>

<p>Additional ciphers package changes since previous release:</p>

<p>

<ul>

<li>Fixed Makefile to be compatible with distros that include "" characters in
  KERNELRELEASE string.</li>

<li>Added dkms.conf configuration file for Dynamic Kernel Module Support.
  Adapted from version that was originally written by Charles Duffy.</li>

<li>Added support for /lib/modules/`uname -r`/source symlink.</li>

<li>Added workaround for scripts/modpost breakage (2.6 kernels only).</li>

</ul>

</p>

<p>bzip2 compressed tarball is here:</p>

<p>    <a href="http://loop-aes.sourceforge.net/ciphers/ciphers-v2.0i.tar.bz2">http://loop-aes.sourceforge.net/ciphers/ciphers-v2.0i.tar.bz2</a><br />
    md5sum 1a5e1d967bca0cde71a32e533ef26ce9</p>

<p>    <a href="http://loop-aes.sourceforge.net/ciphers/ciphers-v2.0i.tar.bz2.sign">http://loop-aes.sourceforge.net/ciphers/ciphers-v2.0i.tar.bz2.sign</a></p>

</quote>

</section>

<section
  title="PPC8xx Maintainership"
  subject="PPC8xx Maintainer patch"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=2nnPo-4Ls-27%40gated-at.bofh.it"
  posts="1"
  startdate="29 Jul 2004 10:15:04 -0800"
>
<topic>MAINTAINERS File</topic>

<mention>Paul Mackerras</mention>
<mention>Tom Rini</mention>

<p>Paul Mackerras posted a patch to the MAINTAINERS file, listing Tom Rini
as the official maintainer of Linux for PowerPC embedded PPC8xx and the
PowerPC boot code.</p>

</section>

</kc>

