<?xml version="1.0" ?>

<kc>

<title>Kernel Traffic</title>

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

<issue num="284" date="17 Nov 2004 00:00:00 -0800" />

<stats posts="2980" size="16339" contrib="583" multiples="332" lastweek="246">

<person posts="135" size="670" who="Adrian Bunk" />
<person posts="103" size="438" who="Ingo Molnar" />
<person posts="60" size="318" who="Linus Torvalds" />
<person posts="54" size="381" who="Con Kolivas" />
<person posts="53" size="501" who="Geert Uytterhoeven" />
<person posts="51" size="248" who="Greg KH" />
<person posts="51" size="242" who="Timothy Miller" />
<person posts="47" size="163" who="Alan Cox" />
<person posts="46" size="168" who="William Lee Irwin III" />
<person posts="42" size="180" who="Andrew Morton" />
<person posts="42" size="177" who="Lee Revell" />
<person posts="42" size="151" who="Andi Kleen" />
<person posts="41" size="169" who="Jeff Garzik" />
<person posts="37" size="126" who="Jan Engelhardt" />
<person posts="35" size="184" who="Larry McVoy" />
<person posts="32" size="134" who="Sam Ravnborg" />
<person posts="30" size="175" who="Denis Vlasenko" />
<person posts="29" size="127" who="&quot;Jeff V. Merkey&quot;" />
<person posts="28" size="99" who="Chris Wedgwood" />
<person posts="27" size="192" who="Florian Schmidt" />
<person posts="26" size="174" who="(blaisorblade_spam)" />
<person posts="26" size="105" who="(james4765)" />
<person posts="26" size="100" who="Russell King" />
<person posts="25" size="475" who="Tom Rini" />
<person posts="25" size="111" who="Gene Heskett" />
<person posts="24" size="111" who="Andrea Arcangeli" />
<person posts="23" size="120" who="Dmitry Torokhov" />
<person posts="22" size="118" who="Chuck Ebbert" />
<person posts="22" size="93" who="Pavel Machek" />
<person posts="22" size="85" who="Christoph Hellwig" />
<person posts="21" size="88" who="Nick Piggin" />
<person posts="20" size="90" who="Roman Zippel" />
<person posts="20" size="89" who="Blaisorblade" />
<person posts="19" size="64" who="Paul Fulghum" />
<person posts="17" size="163" who="Bill Davidsen" />
<person posts="17" size="115" who="Christoph Lameter" />
<person posts="17" size="78" who="Marcelo Tosatti" />
<person posts="16" size="157" who="Tejun Heo" />
<person posts="16" size="78" who="&quot;Martin J. Bligh&quot;" />
<person posts="16" size="50" who="Arjan van de Ven" />
<person posts="15" size="115" who="&quot;Rafael J. Wysocki&quot;" />
<person posts="15" size="87" who="linux-os" />
<person posts="14" size="129" who="Thomas Gleixner" />
<person posts="14" size="56" who="Tonnerre" />
<person posts="14" size="50" who="Chris Wright" />
<person posts="14" size="49" who="Benjamin Herrenschmidt" />
<person posts="13" size="136" who="&quot;Mikael Starvik&quot;" />
<person posts="13" size="72" who="maximilian attems" />
<person posts="13" size="61" who="Jesper Juhl" />
<person posts="13" size="57" who="&quot;Randy.Dunlap&quot;" />
<person posts="13" size="47" who="Pavel Machek" />
<person posts="13" size="39" who="&quot;David S. Miller&quot;" />
<person posts="12" size="98" who="Stelian Pop" />
<person posts="12" size="67" who="Jim Nelson" />
<person posts="12" size="57" who="Helge Hafting" />
<person posts="11" size="62" who="John Richard Moser" />
<person posts="11" size="52" who="Paul Davis" />
<person posts="11" size="50" who="Paolo Ciarrocchi" />
<person posts="11" size="45" who="Jon Masters" />
<person posts="11" size="39" who="Bernd Petrovitsch" />
<person posts="10" size="72" who="Bartlomiej Zolnierkiewicz" />
<person posts="10" size="69" who="&quot;Martin Schlemmer [c]&quot;" />
<person posts="10" size="61" who="Jesse Barnes" />
<person posts="10" size="44" who="(janitor)" />
<person posts="10" size="40" who="Dave Airlie" />
<person posts="10" size="40" who="Al Viro" />
<person posts="10" size="40" who="Jon Smirl" />
<person posts="10" size="39" who="&quot;David Schwartz&quot;" />
<person posts="10" size="36" who="Lei Yang" />
<person posts="10" size="36" who="Zwane Mwaikambo" />
<person posts="10" size="32" who="Andi Kleen" />
<person posts="9" size="91" who="Pekka Enberg" />
<person posts="9" size="66" who="Suparna Bhattacharya" />
<person posts="9" size="42" who="OGAWA Hirofumi" />
<person posts="9" size="38" who="David Brownell" />
<person posts="9" size="35" who="Matt Mackall" />
<person posts="9" size="34" who="Rik van Riel" />
<person posts="9" size="31" who="Dave Jones" />
<person posts="9" size="27" who="Bernd Eckenfels" />
<person posts="8" size="98" who="Prasanna S Panchamukhi" />
<person posts="8" size="59" who="Matthew Wilcox" />
<person posts="8" size="37" who="&quot;Marcos D. Marado Torres&quot;" />
<person posts="8" size="34" who="&quot;Antonino A. Daplas&quot;" />
<person posts="8" size="33" who="Pete Zaitcev" />
<person posts="8" size="30" who="Matthias Urlichs" />
<person posts="8" size="25" who="Z Smith" />
<person posts="7" size="186" who="Michael Clark" />
<person posts="7" size="49" who="Bjorn Helgaas" />
<person posts="7" size="41" who="&quot;Paul E. McKenney&quot;" />
<person posts="7" size="39" who="(Mark_H_Johnson)" />
<person posts="7" size="38" who="Sami Farin" />
<person posts="7" size="38" who="dean gaudet" />
<person posts="7" size="36" who="&quot;K.R. Foley&quot;" />
<person posts="7" size="36" who="&quot;Andrew A.&quot;" />
<person posts="7" size="35" who="Anton Altaparmakov" />
<person posts="7" size="33" who="Mark Fortescue" />
<person posts="7" size="32" who="Petr Vandrovec" />
<person posts="7" size="31" who="Theodore Ts'o" />
<person posts="7" size="30" who="=?ISO-8859-1?Q?Ram=F3n_Rey_Vicente?=" />
<person posts="7" size="29" who="Len Brown" />
<person posts="7" size="28" who="Giuseppe Bilotta" />
<person posts="7" size="27" who="Thomas Zehetbauer" />
<person posts="7" size="27" who="Nigel Cunningham" />
<person posts="7" size="25" who="(viro)" />
<person posts="6" size="53" who="David Jez" />
<person posts="6" size="41" who="Fabio Coatti" />
<person posts="6" size="33" who="Jan Kara" />
<person posts="6" size="33" who="Hirokazu Takata" />
<person posts="6" size="30" who="Kyle Moffett" />
<person posts="6" size="28" who="&quot;Scott Lockwood&quot;" />
<person posts="6" size="28" who="&quot;Rui Nuno Capela&quot;" />
<person posts="6" size="28" who="Steven Dake" />
<person posts="6" size="27" who="=?iso-8859-1?q?M=E5ns_Rullg=E5rd?=" />
<person posts="6" size="27" who="Nathan Scott" />
<person posts="6" size="26" who="&quot;Li, Shaohua&quot;" />
<person posts="6" size="25" who="Robert Love" />
<person posts="6" size="24" who="Clemens Schwaighofer" />
<person posts="6" size="23" who="Miles Bader" />
<person posts="6" size="23" who="(Tim_T_Murphy)" />
<person posts="6" size="22" who="=?ISO-8859-1?Q?Espen_Fjellv=E6r_Olsen?=" />
<person posts="6" size="21" who="Vojtech Pavlik" />
<person posts="6" size="21" who="Chris Ross" />
<person posts="5" size="64" who="Zachary Amsden" />
<person posts="5" size="62" who="Sergei Haller" />
<person posts="5" size="31" who="Kay Sievers" />
<person posts="5" size="28" who="&quot;O.Sezer&quot;" />
<person posts="5" size="23" who="&quot;Maciej W. Rozycki&quot;" />
<person posts="5" size="22" who="Horms" />
<person posts="5" size="21" who="Matthias Andree" />
<person posts="5" size="21" who="Dominik Brodowski" />
<person posts="5" size="21" who="Andreas Steinmetz" />
<person posts="5" size="21" who="Miles Bader" />
<person posts="5" size="20" who="&quot;J.A. Magallon&quot;" />
<person posts="5" size="20" who="Stephen Wille Padnos" />
<person posts="5" size="19" who="&quot;Richard B. Johnson&quot;" />
<person posts="5" size="19" who="Colin Leroy" />
<person posts="5" size="19" who="&quot;Hua Zhong&quot;" />
<person posts="5" size="19" who="Roland Dreier" />
<person posts="5" size="18" who="Willy Tarreau" />
<person posts="5" size="18" who="Marcel Holtmann" />
<person posts="5" size="17" who="Tim Hockin" />
<person posts="5" size="17" who="Krzysztof Halasa" />
<person posts="5" size="17" who="Olaf Hering" />
<person posts="5" size="16" who="Diego Calleja" />
<person posts="4" size="110" who="Alexander Nyberg" />
<person posts="4" size="84" who="Paul Dickson" />
<person posts="4" size="64" who="Martin Schwidefsky" />
<person posts="4" size="51" who="CaT" />
<person posts="4" size="33" who="Brent Casavant" />
<person posts="4" size="25" who="Rusty Russell" />
<person posts="4" size="25" who="Andreas Klein" />
<person posts="4" size="24" who="Ray Bryant" />
<person posts="4" size="24" who="Bill Huey (hui)" />
<person posts="4" size="20" who="Jeff Moyer" />
<person posts="4" size="18" who="=?iso-8859-1?q?M=E5ns_Rullg=E5rd?=" />
<person posts="4" size="18" who="Stephen Frost" />
<person posts="4" size="18" who="Horst von Brand" />
<person posts="4" size="17" who="Shawn Starr" />
<person posts="4" size="17" who="Paul Mackerras" />
<person posts="4" size="16" who="Buddy Lucas" />
<person posts="4" size="16" who="linux-os" />
<person posts="4" size="16" who="&quot;Zhu, Yi&quot;" />
<person posts="4" size="15" who="Pierre Ossman" />
<person posts="4" size="15" who="Jan Knutar" />
<person posts="4" size="14" who="Chris Friesen" />
<person posts="4" size="14" who="Hans Reiser" />
<person posts="4" size="13" who="=?utf-8?q?Pawe=C5=82_Sikora?=" />
<person posts="4" size="13" who="Shawn Willden" />
<person posts="4" size="13" who="Nigel Kukard" />
<person posts="4" size="13" who="vlobanov" />
<person posts="4" size="13" who="Marc Bevand" />
<person posts="4" size="11" who="Paulo da Silva" />
<person posts="3" size="139" who="Justin Thiessen" />
<person posts="3" size="123" who="Badari Pulavarty" />
<person posts="3" size="37" who="Stephen Rothwell" />
<person posts="3" size="27" who="Christoph Hellwig" />
<person posts="3" size="23" who="John Cherry" />
<person posts="3" size="21" who="Chad Christopher Giffin" />
<person posts="3" size="19" who="Peter Chubb" />
<person posts="3" size="19" who="Alexey Dobriyan" />
<person posts="3" size="19" who="Karim Yaghmour" />
<person posts="3" size="18" who="Jan Dittmer" />
<person posts="3" size="18" who="Tony Lindgren" />
<person posts="3" size="17" who="James Cleverdon" />
<person posts="3" size="16" who="John Ripley" />
<person posts="3" size="15" who="Brad Campbell" />
<person posts="3" size="15" who="Daniel Egger" />
<person posts="3" size="15" who="Maneesh Soni" />
<person posts="3" size="15" who="Jason Baron" />
<person posts="3" size="15" who="Sergey Vlasov" />
<person posts="3" size="15" who="&quot;Yu, Luming&quot;" />
<person posts="3" size="14" who="Hiroyuki KAMEZAWA" />
<person posts="3" size="14" who="=?ISO-8859-2?Q?Martin_MOKREJ=A9?=" />
<person posts="3" size="14" who="&quot;Kendall Bennett&quot;" />
<person posts="3" size="13" who="Grzegorz Kulewski" />
<person posts="3" size="13" who="Rene Herman" />
<person posts="3" size="13" who="Timo Sirainen" />
<person posts="3" size="13" who="Mark Watts" />
<person posts="3" size="13" who="Kim Holviala" />
<person posts="3" size="12" who="&quot;Massimo Cetra&quot;" />
<person posts="3" size="12" who="Robin Rosenberg" />
<person posts="3" size="12" who="&quot;Chen, Kenneth W&quot;" />
<person posts="3" size="12" who="Mark Haverkamp" />
<person posts="3" size="12" who="Richard Henderson" />
<person posts="3" size="12" who="Doug Maxey" />
<person posts="3" size="11" who="Thayne Harbaugh" />
<person posts="3" size="11" who="&quot;Barry K. Nathan&quot;" />
<person posts="3" size="11" who="Werner Almesberger" />
<person posts="3" size="11" who="Jean Delvare" />
<person posts="3" size="11" who="Ryan Anderson" />
<person posts="3" size="11" who="Dave Dodge" />
<person posts="3" size="11" who="Raphael Jacquot" />
<person posts="3" size="10" who="Sorav Bansal" />
<person posts="3" size="10" who="Danny Brow" />
<person posts="3" size="10" who="John M Collins" />
<person posts="3" size="10" who="David Woodhouse" />
<person posts="3" size="10" who="&quot;Harald Dunkel&quot;" />
<person posts="3" size="10" who="Francois Romieu" />
<person posts="3" size="9" who="Mikael Pettersson" />
<person posts="3" size="9" who="Phy Prabab" />
<person posts="3" size="9" who="Andrew Walrond" />
<person posts="3" size="9" who="James Morris" />
<person posts="3" size="9" who="Manfred Spraul" />
<person posts="3" size="9" who="Daniel Phillips" />
<person posts="3" size="9" who="Michal Semler" />
<person posts="3" size="8" who="Nuno Silva" />
<person posts="3" size="7" who="Wakko Warner" />
<person posts="2" size="101" who=" (Pedro Larroy)" />
<person posts="2" size="67" who="Krzysztof Taraszka" />
<person posts="2" size="49" who="David Gibson" />
<person posts="2" size="39" who="Paul" />
<person posts="2" size="37" who="Michael Hunold" />
<person posts="2" size="37" who="Bartlomiej Zolnierkiewicz" />
<person posts="2" size="33" who="Tetsuo Handa" />
<person posts="2" size="32" who="Ben Collins" />
<person posts="2" size="25" who="Matt Porter" />
<person posts="2" size="19" who="Karsten Wiese" />
<person posts="2" size="18" who="Christian Axelsson" />
<person posts="2" size="18" who="David Gibson" />
<person posts="2" size="17" who="Andreas Herrmann" />
<person posts="2" size="17" who="Andrew Hendry" />
<person posts="2" size="17" who="Andrew Theurer" />
<person posts="2" size="15" who="&quot;Alexander Stohr&quot;" />
<person posts="2" size="13" who="Lorenzo Allegrucci" />
<person posts="2" size="13" who="Robin Holt" />
<person posts="2" size="13" who="Robert Clark" />
<person posts="2" size="13" who="Rajesh Venkatasubramanian" />
<person posts="2" size="13" who="Remi Colinet" />
<person posts="2" size="12" who="Seiichi Nakashima" />
<person posts="2" size="12" who="&quot;Moore, Robert&quot;" />
<person posts="2" size="11" who="&quot;Jin, Gordon&quot;" />
<person posts="2" size="11" who="James Bruce" />
<person posts="2" size="11" who="Timothy Miller" />
<person posts="2" size="11" who="Matthew Dobson" />
<person posts="2" size="10" who="Nathan Lynch" />
<person posts="2" size="10" who="Stef van der Made" />
<person posts="2" size="10" who="Kalin KOZHUHAROV" />
<person posts="2" size="10" who="Tobias Diedrich" />
<person posts="2" size="9" who="Neil Brown" />
<person posts="2" size="9" who="DaMouse" />
<person posts="2" size="9" who="John Hawkes" />
<person posts="2" size="9" who="Pantelis Antoniou" />
<person posts="2" size="9" who="Greg Buchholz" />
<person posts="2" size="9" who="Andrew" />
<person posts="2" size="9" who="Russell Miller" />
<person posts="2" size="9" who="Nishanth Aravamudan" />
<person posts="2" size="9" who="Ondrej Zary" />
<person posts="2" size="9" who="Andreas Dilger" />
<person posts="2" size="9" who="(michael)" />
<person posts="2" size="9" who="Hariprasad Nellitheertha" />
<person posts="2" size="8" who="Andy Whitcroft" />
<person posts="2" size="8" who="Nish Aravamudan" />
<person posts="2" size="8" who="Michal Schmidt" />
<person posts="2" size="8" who="Danny Brow" />
<person posts="2" size="8" who="Akinobu Mita" />
<person posts="2" size="8" who="Boris Bukowski" />
<person posts="2" size="8" who="Shantanu Goel" />
<person posts="2" size="8" who="Eric Mudama" />
<person posts="2" size="8" who="Dave Kleikamp" />
<person posts="2" size="8" who="Ed Tomlinson" />
<person posts="2" size="8" who="Eyal Lebedinsky" />
<person posts="2" size="8" who="Gabriel Paubert" />
<person posts="2" size="8" who="Kasper Sandberg" />
<person posts="2" size="8" who="Wim Van Sebroeck" />
<person posts="2" size="8" who="David Lang" />
<person posts="2" size="8" who="&quot;Meda, Prasanna&quot;" />
<person posts="2" size="8" who="Kurt Wall" />
<person posts="2" size="8" who="Neil Horman" />
<person posts="2" size="8" who="Eric Bambach" />
<person posts="2" size="8" who="john stultz" />
<person posts="2" size="8" who="Egbert Eich" />
<person posts="2" size="8" who="Jan Kasprzak" />
<person posts="2" size="8" who="Norbert Preining" />
<person posts="2" size="8" who="Matt Tolentino" />
<person posts="2" size="7" who="Kianusch Sayah Karadji" />
<person posts="2" size="7" who="&quot;Stuart MacDonald&quot;" />
<person posts="2" size="7" who="Simon Braunschmidt" />
<person posts="2" size="7" who="Joe Perches" />
<person posts="2" size="7" who="Dax Kelson" />
<person posts="2" size="7" who="&quot;Tim Warnock&quot;" />
<person posts="2" size="7" who="Terje Kvernes" />
<person posts="2" size="7" who="Matthias Schniedermeyer" />
<person posts="2" size="7" who="Xavier Bestel" />
<person posts="2" size="7" who=" (Kai Henningsen)" />
<person posts="2" size="7" who="Jesse Pollard" />
<person posts="2" size="7" who="Patrick Mochel" />
<person posts="2" size="7" who="Stephen Lewis" />
<person posts="2" size="7" who="Lukas Hejtmanek" />
<person posts="2" size="7" who="Vasya Pupkin" />
<person posts="2" size="6" who="Andreas Schwab" />
<person posts="2" size="6" who="Brice Goglin" />
<person posts="2" size="6" who=" (H. Peter Anvin)" />
<person posts="2" size="6" who="Trond Myklebust" />
<person posts="2" size="6" who="Anders Larsen" />
<person posts="2" size="6" who="Mark Frazer" />
<person posts="2" size="6" who="Dave Airlie" />
<person posts="2" size="6" who=" (Klaus Dittrich)" />
<person posts="2" size="6" who="(parker)" />
<person posts="2" size="6" who="&quot;H. Peter Anvin&quot;" />
<person posts="2" size="6" who="Herbert Xu" />
<person posts="2" size="6" who="Adrian Cox" />
<person posts="2" size="6" who="&quot;Joseph Cosby&quot;" />
<person posts="2" size="6" who="Jens Axboe" />
<person posts="2" size="5" who="ych43" />
<person posts="2" size="5" who="Meelis Roos" />
<person posts="2" size="5" who="Toni Spets" />
<person posts="2" size="5" who="Andries Brouwer" />
<person posts="2" size="5" who="Oliver Neukum" />
<person posts="2" size="5" who="Adam Heath" />
<person posts="2" size="5" who="Matt Heler" />
<person posts="2" size="5" who="Leo Przybylski" />
<person posts="2" size="4" who="&quot;Josef E. Galea&quot;" />
<person posts="1" size="67" who="John McCutchan" />
<person posts="1" size="59" who="&quot;Daniel Kirsten&quot;" />
<person posts="1" size="44" who="Wim Ceulemans" />
<person posts="1" size="38" who="Kahro Raie" />
<person posts="1" size="38" who="&quot;Anders K. Pedersen&quot;" />
<person posts="1" size="37" who="&quot;Serge E. Hallyn&quot;" />
<person posts="1" size="34" who="Norberto Bensa" />
<person posts="1" size="33" who="Koos Vriezen" />
<person posts="1" size="32" who="Erik Jacobson" />
<person posts="1" size="26" who="Stefan Schilling" />
<person posts="1" size="26" who="Rolando Espinoza La Fuente" />
<person posts="1" size="24" who="Steve Longerbeam" />
<person posts="1" size="21" who="(management)" />
<person posts="1" size="20" who="Stas Sergeev" />
<person posts="1" size="19" who="John Gilbert" />
<person posts="1" size="16" who="Richard Griffiths" />
<person posts="1" size="15" who="Kumar Gala" />
<person posts="1" size="12" who="Damien Moore" />
<person posts="1" size="10" who="Mark Lord" />
<person posts="1" size="10" who="Robert Zacek" />
<person posts="1" size="10" who="&quot;Michael Thonke&quot;" />
<person posts="1" size="9" who="Magnus =?iso-8859-1?q?M=E4=E4tt=E4?=" />
<person posts="1" size="8" who="Pavel Fedin" />
<person posts="1" size="8" who="=?ISO-8859-1?Q?Beno=EEt?= Dejean" />
<person posts="1" size="8" who="Matthew Dharm" />
<person posts="1" size="7" who="Darren Hart" />
<person posts="1" size="7" who="Adam Sampson" />
<person posts="1" size="7" who="Roland Fehrenbacher" />
<person posts="1" size="7" who="markus reichelt" />
<person posts="1" size="7" who="&quot;Pallipadi, Venkatesh&quot;" />
<person posts="1" size="7" who="Stuart Longland" />
<person posts="1" size="7" who="Keith M Wesolowski" />
<person posts="1" size="7" who="James Renken" />
<person posts="1" size="7" who="Suresh Siddha" />
<person posts="1" size="6" who="&quot;Wang, Zhenyu Z&quot;" />
<person posts="1" size="6" who="Marc Schiffbauer" />
<person posts="1" size="6" who="=?ISO-8859-1?Q?Malte_Schr=F6der?=" />
<person posts="1" size="6" who="Jon Masters" />
<person posts="1" size="6" who="&quot;Jan 'JaSan' Sarenik&quot;" />
<person posts="1" size="6" who="John Hawkes" />
<person posts="1" size="6" who="Hamie" />
<person posts="1" size="5" who="Matthijs Melchior" />
<person posts="1" size="5" who="Andreas Hartmann" />
<person posts="1" size="5" who="David Vrabel" />
<person posts="1" size="5" who="Suresh Kodati" />
<person posts="1" size="5" who="Mathieu Segaud" />
<person posts="1" size="5" who="Bijoy Thomas" />
<person posts="1" size="5" who="Yaroslav Klyukin" />
<person posts="1" size="5" who="tabris" />
<person posts="1" size="5" who="Arnaldo Carvalho de Melo" />
<person posts="1" size="5" who="(mike.miller)" />
<person posts="1" size="5" who="&quot;Williams, Mitch A&quot;" />
<person posts="1" size="5" who="=?ISO-8859-1?Q?Gerrit_Bruchh=E4user?=" />
<person posts="1" size="5" who=" (Joshua Kwan)" />
<person posts="1" size="5" who="Michele Debandi" />
<person posts="1" size="5" who="Troy Benjegerdes" />
<person posts="1" size="5" who="Stephen Hemminger" />
<person posts="1" size="5" who="Willem Riede" />
<person posts="1" size="5" who="Greg Buchholz" />
<person posts="1" size="5" who="Jonathan McDowell" />
<person posts="1" size="5" who="(expertw)" />
<person posts="1" size="5" who="Fernando Pablo Lopez-Lezcano" />
<person posts="1" size="5" who="Herbert Poetzl" />
<person posts="1" size="5" who="V13" />
<person posts="1" size="5" who="Antonio Vargas" />
<person posts="1" size="5" who="Zan Lynx" />
<person posts="1" size="5" who="Lars Roland" />
<person posts="1" size="4" who="Alexandre Oliva" />
<person posts="1" size="4" who="Andre Hedrick" />
<person posts="1" size="4" who="Javier Marcet" />
<person posts="1" size="4" who="Martin Waitz" />
<person posts="1" size="4" who="Gabor MICSKO" />
<person posts="1" size="4" who=" &lt;ThomasWeber@abyss.4t2.com&gt;" />
<person posts="1" size="4" who="Tim Connors" />
<person posts="1" size="4" who="Enrique Perez-Terron" />
<person posts="1" size="4" who="=?ISO-8859-1?Q?ismail_d=F6nmez?=" />
<person posts="1" size="4" who="Willem Riede" />
<person posts="1" size="4" who="Li Shaohua" />
<person posts="1" size="4" who="(sezeroz)" />
<person posts="1" size="4" who="Alessandro Amici" />
<person posts="1" size="4" who="Vincent Thomasset" />
<person posts="1" size="4" who="&quot;Jean Delvare&quot;" />
<person posts="1" size="4" who="Tim Connors" />
<person posts="1" size="4" who="Anders Saaby" />
<person posts="1" size="4" who="Borislav Petkov" />
<person posts="1" size="4" who="Ian Kumlien" />
<person posts="1" size="4" who="Hitech Recruit" />
<person posts="1" size="4" who="Jan Kara" />
<person posts="1" size="4" who="&quot;Vladimir B. Savkin&quot;" />
<person posts="1" size="4" who="Manu Abraham" />
<person posts="1" size="4" who="&quot;Andrew&quot;" />
<person posts="1" size="4" who="Kelledin" />
<person posts="1" size="4" who="Ken Moffat" />
<person posts="1" size="4" who="Kevin Freeman" />
<person posts="1" size="4" who="Christian Kujau" />
<person posts="1" size="4" who="=?ISO-8859-1?Q?Rog=E9rio_Brito?=" />
<person posts="1" size="4" who="Christophe Saout" />
<person posts="1" size="4" who=" (Bob Tracy)" />
<person posts="1" size="4" who="David Weinehall" />
<person posts="1" size="4" who=" (Markus  =?ISO-8859-1?Q?=20T=F6rnqvist?=)" />
<person posts="1" size="4" who="Andre Eisenbach" />
<person posts="1" size="4" who="Tim Connors" />
<person posts="1" size="4" who="Pierre" />
<person posts="1" size="4" who="&quot;John Hawkes&quot;" />
<person posts="1" size="4" who="David Howells" />
<person posts="1" size="4" who="Jan Rychter" />
<person posts="1" size="4" who="&quot;Shesha B. &quot; Sreenivasamurthy" />
<person posts="1" size="4" who="David Greaves" />
<person posts="1" size="4" who="&quot;Oliver Falk&quot;" />
<person posts="1" size="4" who="&quot;Kevin P. Fleming&quot;" />
<person posts="1" size="4" who="&quot;Rajendra&quot;" />
<person posts="1" size="3" who="&quot;H. Wiese&quot;" />
<person posts="1" size="3" who="&quot;Piszcz, Justin Michael&quot;" />
<person posts="1" size="3" who="=?ISO-8859-1?Q?Kristian_H=F8gsberg?=" />
<person posts="1" size="3" who="Michael Buesch" />
<person posts="1" size="3" who="Jan-Benedict Glaw" />
<person posts="1" size="3" who="Thomas Svedberg" />
<person posts="1" size="3" who="&quot;Andrew Chew&quot;" />
<person posts="1" size="3" who="Mauricio Lin" />
<person posts="1" size="3" who="brian wheeler" />
<person posts="1" size="3" who="&quot;W. Michael Petullo&quot;" />
<person posts="1" size="3" who="Nikita Danilov" />
<person posts="1" size="3" who="David Stevens" />
<person posts="1" size="3" who="&quot;Luck, Tony&quot;" />
<person posts="1" size="3" who="Erik Hensema" />
<person posts="1" size="3" who="john cooper" />
<person posts="1" size="3" who="Mail Lists" />
<person posts="1" size="3" who="(Valdis.Kletnieks)" />
<person posts="1" size="3" who="Shawn Willden" />
<person posts="1" size="3" who="Kevin Puetz" />
<person posts="1" size="3" who="Alex Williamson" />
<person posts="1" size="3" who="Jurriaan" />
<person posts="1" size="3" who="Grant Grundler" />
<person posts="1" size="3" who="&quot;usvyatsky, ilya&quot;" />
<person posts="1" size="3" who="&quot;Srinivas Naga Vutukuri&quot;" />
<person posts="1" size="3" who="Keith Owens" />
<person posts="1" size="3" who="Dave Hansen" />
<person posts="1" size="3" who="Yaroslav Halchenko" />
<person posts="1" size="3" who="Yaroslav Halchenko" />
<person posts="1" size="3" who="Shaun Kruger" />
<person posts="1" size="3" who="Rahul Karnik" />
<person posts="1" size="3" who="Armin Schindler" />
<person posts="1" size="3" who="&quot;Matthias Urlichs&quot;" />
<person posts="1" size="3" who="Christian Hesse" />
<person posts="1" size="3" who="Arne Henrichsen" />
<person posts="1" size="3" who="Gerd Knorr" />
<person posts="1" size="3" who="=?ISO-8859-1?Q?=22Fernando_O=2E_Kornd=F6rfer=22?=" />
<person posts="1" size="3" who="Ian Romanick" />
<person posts="1" size="3" who="John Alvord" />
<person posts="1" size="3" who="Joseph Pingenot" />
<person posts="1" size="3" who="Helge Deller" />
<person posts="1" size="3" who="(spu)" />
<person posts="1" size="3" who="Arjan van de Ven" />
<person posts="1" size="3" who="&quot;Mukund JB.&quot;" />
<person posts="1" size="3" who="Bastiaan Spandaw" />
<person posts="1" size="3" who="Christian Leber" />
<person posts="1" size="3" who="Pasi Savolainen" />
<person posts="1" size="3" who="David Dillow" />
<person posts="1" size="3" who="Jesse Barnes" />
<person posts="1" size="3" who="cliff white" />
<person posts="1" size="3" who="Carlos Vidal" />
<person posts="1" size="3" who="Daniel Gryniewicz" />
<person posts="1" size="3" who="Paulo Marques" />
<person posts="1" size="3" who="Tomas Szepe" />
<person posts="1" size="3" who="Alban Browaeys" />
<person posts="1" size="3" who="Albert Cahalan" />
<person posts="1" size="3" who="(karl.vogel)" />
<person posts="1" size="3" who="Amit Shah" />
<person posts="1" size="3" who="=?ISO-8859-1?Q?Mika_Penttil=E4?=" />
<person posts="1" size="3" who="Craig Schlenter" />
<person posts="1" size="3" who="Pascal Patry" />
<person posts="1" size="3" who="Giuliano Pochini" />
<person posts="1" size="3" who="brian franklin" />
<person posts="1" size="3" who="Thomas Oulevey" />
<person posts="1" size="3" who="Bernd Eckenfels" />
<person posts="1" size="3" who="Hugh Dickins" />
<person posts="1" size="3" who="Scott Robert Ladd" />
<person posts="1" size="3" who="Mark Nipper" />
<person posts="1" size="3" who="Pawel Sikora" />
<person posts="1" size="3" who="Juerg Billeter" />
<person posts="1" size="3" who="Dimitri Sivanich" />
<person posts="1" size="3" who="alan" />
<person posts="1" size="3" who=" (Luis R. Rodriguez)" />
<person posts="1" size="3" who="(jhigdon)" />
<person posts="1" size="3" who="Brett Russ" />
<person posts="1" size="3" who="Kenneth =?iso-8859-1?q?Aafl=F8y?=" />
<person posts="1" size="3" who="Bodo Eggert" />
<person posts="1" size="3" who="Prasanna Meda" />
<person posts="1" size="3" who="&quot;John W. Linville&quot;" />
<person posts="1" size="3" who="DervishD" />
<person posts="1" size="3" who="Greg Louis" />
<person posts="1" size="3" who="Kristian =?iso-8859-1?q?S=F8rensen?=" />
<person posts="1" size="3" who="&quot;M-Support&quot;" />
<person posts="1" size="3" who="Mikael Pettersson" />
<person posts="1" size="3" who=" (David Wagner)" />
<person posts="1" size="3" who="Hacksaw" />
<person posts="1" size="3" who="YOSHIFUJI Hideaki / =?iso-2022-jp?B?GyRCNUhGIzFRTEAbKEI=?=" />
<person posts="1" size="3" who="Todd Poynor" />
<person posts="1" size="3" who=" (Eric W. Biederman)" />
<person posts="1" size="3" who="(mmokrejs)" />
<person posts="1" size="3" who="Moritz Muehlenhoff" />
<person posts="1" size="3" who="Jeff Dike" />
<person posts="1" size="3" who="(gopu.bhaskar)" />
<person posts="1" size="3" who="Charles Shannon Hendrix" />
<person posts="1" size="3" who="Ross Biro" />
<person posts="1" size="3" who="Pradeep Anbumani" />
<person posts="1" size="3" who="Jon Valvatne" />
<person posts="1" size="3" who="Stefan Seyfried" />
<person posts="1" size="3" who="&quot;onyro.com&quot;" />
<person posts="1" size="3" who="Christian" />
<person posts="1" size="3" who="Baruch Even" />
<person posts="1" size="3" who="&quot;Anton Ertl&quot;" />
<person posts="1" size="3" who="&quot;Ameer Armaly&quot;" />
<person posts="1" size="3" who="Cal Peake" />
<person posts="1" size="3" who="Ricky Beam" />
<person posts="1" size="3" who="&quot;Pekka J Enberg&quot;" />
<person posts="1" size="3" who="Kronos" />
<person posts="1" size="3" who="Tomas Carnecky" />
<person posts="1" size="3" who="Han Boetes" />
<person posts="1" size="3" who="James Tabor" />
<person posts="1" size="3" who="Allan Sandfeld Jensen" />
<person posts="1" size="3" who="Grahame White" />
<person posts="1" size="3" who="Pekka Pietikainen" />
<person posts="1" size="3" who="'Christoph Hellwig'" />
<person posts="1" size="2" who="Taso Hatzi" />
<person posts="1" size="2" who="walt" />
<person posts="1" size="2" who="David Johnson" />
<person posts="1" size="2" who="IWAMOTO Toshihiro" />
<person posts="1" size="2" who="Rob van Nieuwkerk" />
<person posts="1" size="2" who="Glen Journeay" />
<person posts="1" size="2" who="Greg Banks" />
<person posts="1" size="2" who="Pozsar Balazs" />
<person posts="1" size="2" who="Alan Stern" />
<person posts="1" size="2" who="Darren Hart" />
<person posts="1" size="2" who="Tero Roponen" />
<person posts="1" size="2" who="Rajsekar" />
<person posts="1" size="2" who="Max Xiao" />
<person posts="1" size="2" who="&quot;Update service&quot;" />
<person posts="1" size="2" who="&quot;update-list&quot;" />
<person posts="1" size="2" who="Mehul Patel" />
<person posts="1" size="2" who="Lars Marowsky-Bree" />
<person posts="1" size="2" who="James Courtier-Dutton" />
<person posts="1" size="2" who="Erik Andersen" />
<person posts="1" size="2" who="Johannes Stezenbach" />
<person posts="1" size="2" who="Tigran Aivazian" />
<person posts="1" size="2" who="(vifr)" />
<person posts="1" size="2" who="Xose Vazquez Perez" />
<person posts="1" size="2" who="Roy Butler" />
<person posts="1" size="2" who="Daniel Alexandre" />
<person posts="1" size="2" who="(Andries.Brouwer)" />

</stats>

<section
  title="Linux 2.6.9 Released"
  subject="Linux v2.6.9..."
  archive="http://groups.google.com/groups?hl=en&amp;lr=lang_en&amp;safe=off&amp;selm=2QOum-3r5-35%40gated-at.bofh.it"
  posts="145"
  startdate="18 Oct 2004 14:45:21 -0800"
  enddate="31 Oct 2004 13:11:47 -0800"
>
<topic>Disks: IDE</topic>
<topic>FS: JFS</topic>
<topic>FS: XFS</topic>
<topic>Ioctls</topic>
<topic>Kernel Release Announcement</topic>
<topic>SMP</topic>
<topic>User-Mode Linux</topic>

<mention>David Weinehall</mention>
<mention>Alexander Viro</mention>

<p>Linus Torvalds announced Linux 2.6.9, saying:</p>

<quote who="Linus Torvalds">

<p>despite some naming confusion (expanation: I'm a retard), I did end up
doing the 2.6.9 release today. And it wasn't the same as the "-final" test
release (see explanation above).</p>

<p>Excuses aside, not a lot of changes since -rc4 (which was the last
announced test-kernel), mainly some UML updates that don't affect anybody
else. And a number of one-liners or compiler fixes. Full list appended.</p>

</quote>

<p>Jeff V. Merkey said:</p>

<quote who="Jeff V. Merkey">

<p>Although we do not work with them and are in fact on the the other side
of Unixware from a competing viewpoint, SCO has contacted us and identifed
with precise detail and factual documentation the code and intellectual
property in Linux they claim was taken from Unix.  We have reviewed their
claims and they appear to create enough uncertianty to warrant removal of
the infringing portions.</p>

<p>We have identified and removed the infringing portions of Linux for our
products that SCO claims was stolen from Unix. They are:</p>

<p>JFS, XFS, All SMP support in Linux, and RCU.</p>

<p>They make claims of other portions of Linux which were taken, however,
these other claims do not appear to be supported with factual evidence.</p>

</quote>

<p>Many, many kernel developers either laughed at him, insulted him, or told him
they wouldn't relicense their code or remove the parts he claimed SCO was
entitled to. The discussion meandered all over the place, Jeff trading
blow-for-blow on many fronts, even carrying on part of the debate with Alexander
Viro in the Cherokee tongue.</p>

<p>The vast majority reiterated that SCO had no legitimate claim and that Jeff
was nuts. David Weinehall even quoted Judge Schoefield's written opinion:</p>

<blockquote>

<p>In fact, however, Merkey is not just prone to exaggeration, he also is and
can be deceptive, not only to his adversaries, but also to his own partners,
his business associates and to the court. He deliberately describes his own,
separate reality.</p>

</blockquote>

<p>At some point in the course of the thread, Linus said:</p>

<quote who="Linus Torvalds">

<p>can you please stop Cc'ing me on this thread?</p>

<p>No, nobody I know (certainly not me) is willing to re-license Linux under
anything else than the GPL. Quite frankly, I suspect you'll have an easier
time just rewriting the whole thing.</p>

<p>And no, the only offer from SCO I'm interested in is a public apology
from Darl McSwine.  Their made-up stories about copyright ownership weren't
really that amusing a year ago, and now they're boring and stale.</p>

<p>So please just remove me from the cc, ok?</p>

</quote>

<p>Close by, Ingo Molnar also said:</p>

<quote who="Ingo Molnar">

<p>Jeff, you seem to have proven once more that you live in a fantasy world
that has its own private rules of physics, ethics and rule of law.  While this
appears to be a dangerous phenomenon, it is fortunately a relatively rare
one.</p>

<p>Linus has been intentionally, deliberately and maliciously lied to, smeared
and mislead for more than 1.5 years. Linus has not mislead anyone, let alone
lied to anyone. The so-called 'contamination' accusations that you repeated are
just that: unfounded accusations. A simple question: do you know the concept
of "truth"? Another simple question: do you even care about it? In the world
i live SCO owes Linus more than just a simple apology. I personally find it
admirable that the only thing Linus expects of SCO is a simple apology.</p>

</quote>

<p>It's of note that the thread covered last issue (see <kcref subject="Results
of Offline Review with Linus" startdate="25 Oct 2004 09:44:11 -0800"/>)
actually took place <i>after</i> this thread, so that summary may be seen
as the later result of the thread covered in this issue.  Apparently Linus
and Jeff spoke off-line and came to some sort of understanding.</p>

<p>The reason the threads were covered in the wrong order is that the one
from last week was only a single post, from October 25, while the thread
covered this week had an unrelated debugging thread attached to it as a reply,
that continued well beyond October 25. Since I like to wait for threads to
end before summarizing them, the earlier thread ended later than the later
thread, and so was covered later in KT.</p>

<p>In theory this sort of thing can happen whenever a long thread and a short
thread are close to the cut-off point for each week's Kernel Traffic. But
in practice, it only really matters when the two threads are on the same
or similar topics. If a thread about ioctl reorganization is summarized
incorrectly before a thread on an IDE driver, chances are there will be no
time-sensitive information between them. In cases like the current summary,
however, with multiple threads on the same issue being covered in the wrong
order, it can be confusing.</p>

</section>

<section
  title="Status Of 'arch' Revision Control For The Kernel"
  subject="BK kernel workflow"
  archive="http://groups.google.com/groups?q=g:thl893302672d&amp;dq=&amp;hl=en&amp;lr=&amp;selm=fa.e2q7poa.1c42228%40ifi.uio.no"
  posts="161"
  startdate="19 Oct 2004 08:06:49 -0800"
  enddate="01 Nov 2004 00:39:22 -0800"
>
<topic>BSD</topic>
<topic>Version Control</topic>

<p>In the course of discussion, Andrea Arcangeli argued that the proprietary
BitKeeper license had a negative impact on the ability of Linux to develop. He
felt it likely that if <i>all</i> developers had access to distributed revision
control, the situation would be much better than it was. Linus Torvalds
challenged:</p>

<quote who="Linux Torvalds">

<p>nobody knows how the universe would look if the speed of light wasn't
constant.</p>

<p>Your point is pointless. No such distributed revision control system
exists. And without BK, the people who have worked on them wouldn't largely
even understand what's wrong with CVS.</p>

<p>In fact, I find that people largely _still_ don't understand what's wrong
with CVS, and are still trying to just make another CVS thing.</p>

<p>So give Larry the credit he deserves, even if you dislike the license.</p>

</quote>

<p>Andrea pointed out that arch (tla) <quote who="Andrea Arcangeli">exists and
it's exactly as distributed as BK.</quote> Linus replied:</p>

<quote who="Linus Torvalds">

<p>And I looked at it before starting BK. Trust me, it was nowhere _near_
usable, which was my point. Nothing you have described has existed for
three years. Except for BK.</p>

<p>I doubt arch is there today either, but hey, if it displaces CVS, I
certainyl won't complain. How are the gcc people doing with it?</p>

</quote>

<p>Andrea replied:</p>

<quote who="Andrea Arcangeli">

<p>gcc people are stuck with CVS AFIK. Apparently CVS is good enough for
them.</p>

<p>arch isn't ready for prime time with the kernel. It would be ready if
we were ok to limit it to say 5000 changesets and to obsolete the older
changesets once in a while. the backend needs a rewrite to handle that.</p>

<p>Thanks to various improvements we did (I only did one that allows caching
with hardlinked trees, Chris and others did more), probably arch would be
already way faster than BK in a daily checkout checkin and cloning (nobody
on the open source side can verify since we cannot use BK, AFIK Miles tried
to buy a copy of BK but Larry refused to sell it, but I seriously doubt BK
has such an advanced hardlinking cache mechanism like arch), but the very
first setup on a new machine would be very inefficient (if compared to CVS)
and the local copy of the repository would take more space (again if compared
to CVS).</p>

<p>The user interface isn't nice either, it'd be nicer at least to avoid
overlaps between commands.</p>

<p>I believe this all can be fixed, it just needs a critical mass of users
and some big initial pain.</p>

</quote>

<p>Jeff Garzik also commented that arch <quote who="Jeff Garzik">doesn't
scale or merge as well as BK though.  I've told Larry that, if both BK
and &lt;open source tool&gt; were completely equal in terms of function,
I'd use the open source tool.  Neither arch (scalability) nor subversion
(scalability + stability) are there yet.</quote></p>

<p>Miles Bader disputed the comment that arch didn't scale or merge as well as
BitKeeper. He said:</p>

<quote who="Miles Bader">

<p>Scalability I'm not sure about; BK's "you must inform BK before you change
a file" model gives it a potential for being very quick at "tree-compare"
operations -- but makes it more annoying for the user.</p>

<p>Merging also seems a bit hard to judge.  From what I understand of BK,
it has a much more limited merging model than arch does; to do a reasonable
comparison, you'd have to see how well arch did if you limited yourself to
that restricted model, and then give arch some more points for not forcing
you to do so.</p>

<p>BK no doubt wins on the rough-edges-sanded-down front though; there are
a _few_ advantages to commercial software...</p>

</quote>

<p>Throughout the discussion, Linus showed no sign of considering anything other
than full support of BitKeeper. At one point he said angrily:</p>

<quote who="Linus Torvalds">

<p>Andrea, shut up.</p>

<p>It's not _your_ decision to make, or your decision to complain about. It's
the developers decision. It was mine, Jeff's, David's, Andrew's... Not
yours.</p>

<p>It's your decision is to not use BK. Fine. But then complaining when
people decide to use the best tool available is fricking impolite. Not
just to Larry, but to the people who made the choice.</p>

<p>You whine about BK taking rights away, but the fact is, BK is an _option_
for people to use. _YOU_ are the one trying to limit what people are
supposed to do.</p>

<p>In short, BK isn't the problem. You are.</p>

</quote>

<p>A couple of posts later he said, <quote who="Linus Torvalds">Andrea
doesn't actually do anything constructive when it comes to SCM. He just
complains every time somebody says something positive about a product that
(a) he didn't do anything for and (b) nobody forces him to use, and (c)
there are no real alternatives for today (much less the three years ago he
was whining about).</quote> In the same post, he added:</p>

<quote who="Linus Torvalds">

<p>No SCM is _ever_ going to be a quality manager.</p>

<p>And I also claim that people who think that "processes" are quality
management (see iso9000, or Dilbert) are seriously mistaken too.</p>

<p>The thing that keeps up the general quality is _people_. Good people, who
take pride in the quality. They end up being maintainers, not because they
chose the job, but because people ended up chosing them, for better of for
worse.</p>

<p>And the way to help those people is to make the day-to-day job easy, so
that they can spend as much time as possible on the thing that matters:
upholding good taste (and in the process keeping quality up). And that's
where an SCM comes in - not as a primary source of quality, but as a way
to keep track of the details, so that people can concentrate on what is
important.</p>

<p>And the SCM doesn't have to be anything really fancy. It can be a few
scripts to keep track of patches (that tends to grow and become slightly
more sophisticated over time). I'm not saying that BK is "it". There's a
number of BK users there, but clearly there are other ways to maintain
patches too - and people use them.</p>

<p>But complaining when a maintainer uses a tool that suits him is _stupid_.
It's arrogant to think that you can tell me how to do my work, but it's
really stupid when you can't give any reasonable alternatives that would
help me do it as efficiently.</p>

<p>And that's what Andrea is doing. Sure, BK is commercial, but dammit, so is
that 2GHz dual-G5 too and that Shuttle box in my corner. They happen to be
the tools I use for what I do. If Andrea told me that I should use a
slower machine because that's what most people use, I'd consider him a
total idiot. Similarly, when he complains that people use software tools
that clearly _do_ make them more productive, I consider his complaint
stupid.</p>

<p>There are other tools I use to make myself more productive. Many of them
are open source. Some I wrote myself. But I still use "uemacs" and "pine"
as part of my tool-chest, for example - and last I saw, they weren't open
source either (but I hear that the uemacs author stopped caring, so that
one might have been re-licensed).</p>

<p>Should I (or anybody else) ask Andrea's permission before we start using
non-opensource tools? No.  If Andrea were complaining about my "pine"
usage, he'd be laughed off the planet. It may be ass-backwards and old and
text-only, but the fact is, it's really none of his damn business, even
though he can see the effects in every email I write in the headers.</p>

<p>Similarly, Andrea can see some of the effects of me using BK when he looks
at the tar-balls and patches - syntactic markers that show that they have
been generated by a person who uses BK. It's really _no_ different from
the fact that I use pine to communicate. And no, neither BK nor pine are
under an open source license.  Deal with it.</p>

<p>Can Andrea point me to open-source tools and ask me politely whether I've
considered them as alternatives? Hell yes. I encourage him to do so when
something appears.</p>

</quote>

<p>Miles corrected Linus' assertion that Andrea did nothing constructive. Miles
said, <quote who="Miles Bader">This is not true.  Andrea has given some
very useful input on the gnu-arch mailing list.  He's definitely doing
more than just complaining about BK.</quote> Roman Zippel also remarked to
Linus, <quote who="Roman Zippel">nobody cares what you are using privately,
but your decisions as kernel maintainer have an effect on other people,
may this be the patches you include in the next release or the tools you
distribute them with.  In the end it's your decision what tools you use,
if you think the advantages outweigh the license which goes contrary to the
open devolopment process, that's fine, but so have other people the right to
disagree with that decision. Maybe you could make some suggestion on how to
articulate this more politically correct?  Linus, what disturbs me here is
that I don't see that you don't even try to acknowledge that the bk license
might be part of problem, you don't mention the bk license with a single
word. Nobody hates bk, that's a myth I'd expect from Larry but not from
you. bk is a rather innocent and certainly useful tool, the annoying part
are the business practices of its owner, who tries to push a licence into
an environment, where it has to provoke rejection.</quote> Linus replied:</p>

<quote who="Linus Torvalds">

<p>You don't like it, you don't use it. It's literally that simple.</p>

<p>This is the same thing as with the GPL. I absolutely _detest_ people
who whine about the GPL - and there are more GPL haters out there than BK
haters. It's _their_ problem.</p>

<p>EXACT SAME THING. Nobody has the right to whine about another persons
choice of license. You have a choice: use it or don't. Complaining about
the license to the author isn't part of it.</p>

<p>Larry can tell you that we've discussed the BK license in private, and he
definitely knows that I'd really like for it to be an open source license.
But I also suspect that Larry will tell you that I haven't been whining
about it - I've been trying to come up with ways it could work out for him,
considering that he's got employees to take care of, and I haven't been able
to come up with anything that would convince him. Fair enough.</p>

<p>Because it really is his choice.  Not mine.  Not yours. Not Andrea's.</p>

<p>And dammit, that choice is as close to "sacred" as anything can get in
software development as far as I'm concerned.</p>

<p>To paraphrase Voltaire - "I may disagree with your choice of license, but
I shall defend to the death your right to choose it". That goes for Larry,
and for the BSD people and for all the people who write software for a living
using some really nasty licenses.</p>

<p>And the same thing goes for users. Anybody who tells me I can't use a
program because it's not open source, go suck on rms. I'm not interested.
99% of that I run tends to be open source, but that's _my_ choice, dammit.</p>

</quote>

<p>The flaming went on and on...</p>

<p>Personally, I have two remarks to make on this issue:</p>

<p>

<ul>

<li>I think Linus hasn't looked at arch/tla for several years, judging from the
way he talk about it. It has made huge strides, but Linus still thinks of it as
a bundle of shell scripts, in spite of the fact that it was long ago ported to C
and has been gaining quite a lot of developer momentum over the past year.</li>

<li>Andrea and the other arch advocates should start using arch for their
own kernel development, instead of merely advocating it in the abstract. If
arch will work, then create repositories and show everyone else how great
it is. Until that starts to happen, I don't believe Linus will ever take any
BitKeeper alternative seriously. In fact, I think Linus will still be using
BitKeeper when 75% of kernel developers have switched to arch or something
else. That's just the way he is.  Arch can only make headway at the grass
roots, developer by developer.</li>

</ul>

</p>

</section>

<section
  title="Better SMP Process Migration"
  subject="[PATCH, 2.6.9] improved load_balance() tolerance for pinned tasks"
  archive="http://groups.google.com/groups?hl=en&amp;lr=lang_en&amp;safe=off&amp;selm=2RuDg-oq-17%40gated-at.bofh.it"
  posts="10"
  startdate="20 Oct 2004 11:36:04 -0800"
  enddate="29 Oct 2004 16:21:07 -0800"
>
<topic>SMP</topic>

<mention>Nick Piggin</mention>
<mention>Ingo Molnar</mention>

<p>John Hawkes said, <quote who="John Hawkes">A large number of processes
that are pinned to a single CPU results in every other CPU's load_balance()
seeing this overloaded CPU as "busiest", yet move_tasks() never finds
a task to pull-migrate.  This condition occurs during module unload,
but can also occur as a denial-of-service using sys_sched_setaffinity().
Several hundred CPUs performing this fruitless load_balance() will livelock
on the busiest CPU's runqueue lock.  A smaller number of CPUs will livelock
if the pinned task count gets high.  This simple patch remedies the more
common first problem: after a move_tasks() failure to migrate anything,
the balance_interval increments.  Using a simple increment, vs.  the more
dramatic doubling of the balance_interval, is conservative and yet also
effective.</quote> Ingo Molnar signed off on the patch, and Nick Piggin
worked with John on a revised version of the patch. It was clear that one
version or the other would be accepted.</p>

</section>

<section
  title="Linux 2.4.28-rc1; Straggling Patches Considered For Inclusion"
  subject="Linux 2.4.28-rc1"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=2SfiM-1tt-11%40gated-at.bofh.it"
  posts="23"
  startdate="22 Oct 2004 10:59:53 -0800"
  enddate="28 Oct 2004 06:29:49 -0800"
>
<topic>Big Memory Support</topic>
<topic>Disk Arrays: RAID</topic>
<topic>Disks: IDE</topic>
<topic>FS: devfs</topic>
<topic>Kernel Build System</topic>
<topic>Networking</topic>
<topic>PCI</topic>
<topic>Serial ATA</topic>
<topic>USB</topic>

<mention>Thomas Gleixner</mention>
<mention>Michael Frank</mention>
<mention>Roger Luethi</mention>
<mention>Geert Uytterhoeven</mention>
<mention>Eric Sandeen</mention>
<mention>Andre Hedrick</mention>
<mention>Andrey Borzenkov</mention>
<mention>Robert White</mention>
<mention>Ivan Kokshaysky</mention>
<mention>Joshua Kwan</mention>
<mention>David Vrabel</mention>
<mention>Eric Uhrhane</mention>
<mention>Hilko Bengen</mention>
<mention>Corey Minyard</mention>
<mention>Dave Jones</mention>
<mention>Jakub Bogusz</mention>
<mention>Willy Tarreau</mention>

<p>Marcelo Tosatti announced Linux 2.4.28-rc1, saying:</p>

<quote who="Marcelo Tosatti">

<p>Here goes the first release candidate of v2.4.28.</p>

<p>It contains a small number of changes from -pre4, a couple of libata
bugfixes, a PIIX IDE driver DMA bugfix, USB fixes, and some tmpfs
corrections.</p>

</quote>

<p>&#214;zkan Sezer said:</p>

<quote who="&#214;zkan Sezer">

<p>There are many lost/forgotten patches posted here on lkml. Since 2.4.28
is near and 2.4 is going into "deep maintainance" mode soon, I gathered a
short list of some of them.  There, sure, are many more of them,  but here
it goes.</p>

<p>I think they deserve a re-review and re-consideration for inclusion.</p>

<p>The "list":</p>

<p>

<ul>

<li>Dave Jones:  AMD K7 MCE changes backported from 2.6.<br />
  <a href="http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=106521456014393&amp;w=2">http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=106521456014393&amp;w=2</a></li>

<li>David Vrabel: TI CardBus PCI interrupt routing fix<br />
  <a href="http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=108446444125446&amp;w=2">http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=108446444125446&amp;w=2</a></li>

<li>Michael Mueller: opti-viper pci-chipset support
  (have an updated-for-2.4.23+ patch for this)<br />
  <a href="http://marc.theaimsgroup.com/?t=106698970100002&amp;r=1&amp;w=2">http://marc.theaimsgroup.com/?t=106698970100002&amp;r=1&amp;w=2</a><br />
  <a href="http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=106698965700864&amp;w=2">http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=106698965700864&amp;w=2</a></li>

<li>Michael Frank: Highmem user-friendliness, Shutdown kernel on zone-
  alignment failure
  (have an updated patch)<br />
  <a
href="http://lkml.org/lkml/2004/2/7/51">http://lkml.org/lkml/2004/2/7/51</a><br />
  <a href="http://marc.theaimsgroup.com/?t=107619437300052&amp;r=1&amp;w=2">http://marc.theaimsgroup.com/?t=107619437300052&amp;r=1&amp;w=2</a><br />
  <a href="http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=107619342911564&amp;w=2">http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=107619342911564&amp;w=2</a></li>

<li>Terry Hardie: 8 port SIIG serial card support<br />
  <a href="http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=107765546507508&amp;w=2">http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=107765546507508&amp;w=2</a></li>

<li>Mauricio Martinez/Corey Minyard: fix a problem (multiple reads of
  the same data) while reading from a CDU31 SONY CD-ROM drive<br />
  <a href="http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=106824345717317&amp;w=2">http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=106824345717317&amp;w=2</a></li>

<li>Roger Luethi: via-rhine, fix force media<br />
  <a href="http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=108507431710317&amp;w=2">http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=108507431710317&amp;w=2</a></li>

<li>Robert White: usbserial hangup on disconnect<br />
  <a href="http://marc.theaimsgroup.com/?t=108114071200002&amp;r=1&amp;w=2">http://marc.theaimsgroup.com/?t=108114071200002&amp;r=1&amp;w=2</a><br />
  <a href="http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=108114073600529&amp;w=2">http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=108114073600529&amp;w=2</a></li>

<li>V Ganesh: ipaq, hangup tty on usb disconnect<br />
  <a href="http://marc.theaimsgroup.com/?l=linux-usb-devel&amp;m=109049411609590&amp;w=2">http://marc.theaimsgroup.com/?l=linux-usb-devel&amp;m=109049411609590&amp;w=2</a></li>

<li>David M. Wilson: sis900 Wake-on-LAN support<br />
  <a href="http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=105835662823748&amp;w=2">http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=105835662823748&amp;w=2</a></li>

<li>Thomas Gleixner: sis5513 fix for SiS962 chipset<br />
  <a href="http://marc.theaimsgroup.com/?t=109482706500001&amp;r=1&amp;w=2">http://marc.theaimsgroup.com/?t=109482706500001&amp;r=1&amp;w=2</a><br />
  <a href="http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=109482716300929&amp;w=2">http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=109482716300929&amp;w=2</a></li>

<li>Eric Sandeen: fix for large direct I/O<br />
  <a href="http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=108197617129880&amp;w=2">http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=108197617129880&amp;w=2</a></li>

<li>Geert Uytterhoeven: smb_ops_unix compiler warning<br />
  <a href="http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=107659039710361&amp;w=2">http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=107659039710361&amp;w=2</a></li>

<li>David A. Lethe: scsi_scan.c, look for LUNs on XYRATEX RAID subsystems<br />
  <a href="http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=105534062611620&amp;w=2">http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=105534062611620&amp;w=2</a></li>

<li>Andrey Borzenkov: devfs deadlock on concurrent lookups on
  non-existent entry<br />
  <a href="http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=105630542714518&amp;w=2">http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=105630542714518&amp;w=2</a></li>

<li>Jim Carter: apm.c, Dell Inspiron, limit rate of power status calls
  (without the star to the asm code)<br />
  <a href="http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=106049225722612&amp;w=2">http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=106049225722612&amp;w=2</a></li>

<li>Eric Uhrhane: ATP867X PCI IDE driver: driver for the Acard/Artop PCI
  ATA/SATA cards (6885[LP]/6896[S]) based on the ATP867{A,B} chips.<br />
  <a href="http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=108198418515134&amp;w=2">http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=108198418515134&amp;w=2</a></li>

<li>Jakub Bogusz: missing include in farsync WAN driver<br />
  <a href="http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=109376793014054&amp;w=2">http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=109376793014054&amp;w=2</a></li>

<li>Willy Tarreau: MTU fix for tulip driver<br />
  <a href="http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=109130863303540&amp;w=2">http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=109130863303540&amp;w=2</a></li>

<li>Ivan Kokshaysky: alpha, make bootimage and make bootpfile failure,
  boot failure<br />
  <a href="http://marc.theaimsgroup.com/?t=109760337800003&amp;r=1&amp;w=2">http://marc.theaimsgroup.com/?t=109760337800003&amp;r=1&amp;w=2</a><br />
  <a href="http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=109820176212217&amp;w=2">http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=109820176212217&amp;w=2</a></li>

<li>Sam King: usbserial, down function call being made from an interrupt
  handler<br />
  <a href="http://marc.theaimsgroup.com/?t=109639065100005&amp;r=1&amp;w=2">http://marc.theaimsgroup.com/?t=109639065100005&amp;r=1&amp;w=2</a><br />
  <a href="http://marc.theaimsgroup.com/?l=linux-usb-devel&amp;m=109639053122263&amp;w=2">http://marc.theaimsgroup.com/?l=linux-usb-devel&amp;m=109639053122263&amp;w=2</a></li>

<li>Wolfgang Mues: auerswald-usb, kernel oops at disconnect or reconnect
  time because of an endless urb resubmit<br />
  <a href="http://marc.theaimsgroup.com/?l=linux-usb-devel&amp;m=108465864428213&amp;w=2">http://marc.theaimsgroup.com/?l=linux-usb-devel&amp;m=108465864428213&amp;w=2</a></li>

<li>Hilko Bengen: minor error in /proc/isapnp output<br />
  <a href="http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=107607982001162&amp;w=2">http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=107607982001162&amp;w=2</a></li>

<li>Joshua Kwan:  scripts: Support output of new ld<br />
  <a href="http://marc.theaimsgroup.com/?t=109549085600003&amp;r=1&amp;w=2">http://marc.theaimsgroup.com/?t=109549085600003&amp;r=1&amp;w=2</a></li>

<li>Joshua Kwan: kbuild: use infobox instead of msgbox and 'sleep 5'<br />
  <a href="http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=109549111519324&amp;w=2">http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=109549111519324&amp;w=2</a></li>

<li>Andre Hedrick: ide updates for 2.4.25<br />
  <a href="http://www.kernel.org/pub/linux/kernel/people/hedrick/ide-2.4.25/">http://www.kernel.org/pub/linux/kernel/people/hedrick/ide-2.4.25/</a></li>

</ul>

</p>

</quote>

<p>Marcelo took some of these on faith, but asked the specific authors for
confirmation in a number of cases. Some folks confirmed, and Marcelo said
the next -pre release would have a bunch of these updates.</p>

</section>

<section
  title="Some Discussion Of The 2.6 Development Model"
  subject="My thoughts on the &quot;new development model&quot;(A bit late tho)"
  archive="http://groups.google.com/groups?hl=en&amp;lr=&amp;safe=off&amp;selm=2SfVq-1Ym-3%40gated-at.bofh.it"
  posts="121"
  startdate="22 Oct 2004 12:03:00 -0800"
  enddate="29 Oct 2004 13:30:43 -0800"
>

<mention>Rik van Riel</mention>
<mention>Andrew Morton</mention>

<p>Espen Fjellv&#230;r Olsen disagreed with the entire direction of the
Linux development model in 2.6; instead of adding new features, he said,
<quote who="Espen Fjellv&#230;r Olsen">I think that 2.6 should be frozen from
now on, just security related stuff should be merged.</quote> He added that a
2.7 branch should be forked off for new features. Clemens Schwaighofer agreed
completely, but William Lee Irwin III felt that folks should just write code
and do real work on the kernel, instead of arguing over numbering systems.
Lee Revell added:</p>

<quote who="Lee Revell">

<p>Part of the reasoning behind the new development model is that if
you want a stable kernel, there are many vendors who will give you one.
The new dev model is partially driven by vendors and developers desire to
get their features into mainline quicker.  There is an inherent stability
cost associated with this, but the price is only paid by users who want
stability AND the latest kernel.org kernel.  The big players all seem to
agree that the new development model better suits users and their own needs.
The distros are in a better position to determine what constitutes a stable
kernel anyway, they have millions of users to test on.  Let the vendors AND
the kernel hackers do what they are each best at.</p>

<p>We need to continue the rapid pace of development because although Linux
rules in the small to mid server arena there are other areas where MS and
Apple are clearly ahead.  If you want to make an omelette you have to break
some eggs...</p>

</quote>

<p>Elsewhere, Hua Zhong remarked, <quote who="Hua Zhong">The fact is,
these days nobody wants to be a stable-release maintainer anymore. It's
boring.</quote> But Diego Calleja came back with, <quote who="Diego Calleja">I
doubt it. People like Alan Cox or Marcello have done it in the past, and I
bet many others could do it.</quote> Paul Fulghum felt that folks like Alan
and Marcelo <quote who="Paul Fulghum">probably suffer emotional scars from
the process.  Taming the patch stream must be like drinking from a fire hose
while herding angry, computer literate cats.  Wearing, but not boring.</quote>
Alan Cox confirmed, <quote who="Alan Cox">For 2.2 certainly and I suspect
for 2.4 it's also like that. The 2.6.x.[1-n] is more like distribution
maintenance its about careful analysis and minimal changes.</quote> Close by,
when Hua reiterated that no <i>top</i> developer would take on the task of
maintaining a stable 2.6 tree, Alan replied, <quote who="Alan Cox">I'll do
it if Linus wants</quote>, but nothing came of this.</p>

<p>Elsewhere, Adrian Bunk remarked, <quote who="Adrian Bunk">2.6 is corrently
more a development kernel than a stable kernel.</quote> And added, <quote
who="Adrian Bunk">Andrew+Linus should open a short-living 2.7 tree soon
and Andrew (or someone else) should maintain a 2.6 tree with less changes
(like Marcelo did and does with 2.4).</quote></p>

<p>Elsewhere, Willy Tarreau said, <quote who="Willy Tarreau">Linux already
got its reputation of a stable system from its production kernels, 2.0,
2.2 and 2.4 which are largely used in sensible environments.  2.6 is stable
enough for most desktop usage and for end-users distros to ship it by
default. This will encourage many more people to test it, send reports back
and finally stabilize it so that one day it can finally be used in production
environments. At first I was a bit angry that it had been declared "stable"
a bit too early, but now, judging by the amount of people who use it only
because their distros ship with it, I realise that indeed, it should have
been declared "stable" earlier so that all the bug fixes you see now would be
fixed by now.</quote> But William Lee Irwin III said, <quote who="William Lee
Irwin III">The freezes from kernels past led to gross redundancy. Distros all
froze at different points in time with numerous patches atop the then-mainline
release. The mainline freeze was meaningless because the distros were all
completely divorced from it, resulting in numerous simultaneously frozen
trees with no outlet for forward progress.</quote> Elsewhere, Rik van Riel
said he liked the way the 2.6 tree was currently being handled.</p>

<p>In general, developers closest to the development process were happiest
with the status quo, while developers closer to the user end of things felt
there should be changes. Linus did not weigh in, but several times Alan did
volunteer or hint that he would be willing to maintain a stable 2.6 tree. No
one mentioned that Andrew Morton is still technically the official maintainer,
even though Linus puts out all the releases.</p>

</section>

<section
  title="Linux 2.6.10-rc1 Released: The 'Woozy Numbat'; Some Numbering Considerations"
  subject="The naming wars continue..."
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=2Sj30-4bu-5%40gated-at.bofh.it&amp;prev=/groups%3Fas_ugroup%3Dlinux.kernel%26as_uauthors%3DLinus%2520Torvalds%26as_usubject%3DThe%2520naming%2520wars%2520continue...%26as_drbb%3Db%26as_mind%3D22%26as_minm%3DOct%26as_miny%3D2004%26as_maxd%3D22%26as_maxm%3DOct%26as_maxy%3D2004"
  posts="103"
  startdate="22 Oct 2004 14:05:13 -0800"
  enddate="29 Oct 2004 10:33:25 -0800"
>
<topic>Disks: SCSI</topic>
<topic>Kernel Release Announcement</topic>
<topic>Serial ATA</topic>

<p>Linus Torvalds announced Linux 2.6.10-rc1, saying:</p>

<quote who="Linus Torvalds">

<p>I thought long and hard about the name of this release (In other words,
I had a beer and watched TV. Mmm... Donuts), since one of the main complaints
about 2.6.9 was the apparently release naming scheme.</p>

<p>Should it be "-rc1"? Or "-pre1" to show it's not really considered
release quality yet? Or should I make like a rocket scientist, and count
_down_ instead of up? Should I make names based on which day of the week
the release happened? Questions, questions..</p>

<p>And the fact is, I can't see the point. I'll just call it all "-rcX",
because I (very obviously) have no clue where the cut-over-point from "pre"
to "rc" is, or (even more painfully obviously) where it will become the
final next release.</p>

<p>So to not overtax my poor brain, I'll just call them all -rc releases,
and hope that developers see them as a sign that there's been stuff merged,
and we should start calming down and seeing to the merged patches being
stable soon enough..</p>

<p>So without any further ado, here's 2.6.10-rc1 in testing. A fair number
of patches that were waiting for 2.6.9 to be out are in here, ranging all
over the map: merges from -mm, network (and net driver) updates, SATA stuff,
bluetooth, SCSI, device models, janitorial, you name it.</p>

<p>Oh, and the _real_ name did actually change. It's not Zonked Quokka any
more, that's so yesterday. Today we're Woozy Numbat! Get your order in!</p>

</quote>

<p>Several developers felt there was value in putting out a 'pre' series
before a 'rc' series, because the 'rc' series was by definition a 'release
candidate'.  Matt Mackall said, <quote who="Matt Mackall">the cut-over should
be when you're tempted to rename it 2.6.next. If you have no intention (or
hope) of renaming 2.6.x-rc1 to 2.6.x, it is not a "release candidate"</quote>
He added, <quote who="Matt Mackall">What's the point? It serves as a signal
that a) we're not accepting more big changes b) we think it's ready for
primetime and needs serious QA c) when 2.6.next gets released, the _exact
code_ has gone through a test cycle and we can have some confidence that
there won't be any nasty 0-day bugs when we go to install 2.6.next on
a production machine.</quote> Con Kolivas agreed with this, but added,
<quote who="Con Kolivas">I have this feeling Linus is laughing at us when
he debates these arguments.</quote> William Lee Irwin II felt the whole
discussion was pointless, and that Linus had enough to do without worrying
about these issues. To this, Linus replied:</p>

<quote who="Linus Torvalds">

<p>Hey guys, calm down, I meant "naming wars" in a silly kind of way, not
the nasty kind.</p>

<p>The fact is, Linux naming has always sucked. Well, at least the versioning
I've used. Others tend to be more organized. Me, I'm the "artistic" type,
so I sometimes try to do something new, and invariably stupid.</p>

<p>The best suggestion so far has been to _just_ use another number, which
makes sense considering my dislike for both -rc and -pre.</p>

<p>However, for some reason four numbers just looks visually too obnoxious to
me, so as I don't care that much, I'll just use "-rc", and we can all agree
that it stands for "Ridiculous Count" rather than "Release Candidate".</p>

<p>More importantly, maybe we could all realize that it isn't actually that
big of an issue ;)</p>

</quote>

<p>Nick Piggin said:</p>

<quote who="Nick Piggin">

<p>Linus I agree it isn't a huge issue. The main thing for me is that I
could just give a _real_ release candidate more testing - run it through
some regression tests, make sure it functions OK on all my computers, etc. I
expect this would be helpful for people with large sets of regression tests,
and maybe those maintaining 'other' architectures too.</p>

<p>I understand there's always "one more" patch to go in, but now that we're
doing this stable-development system, I think a week or two weeks or even
three weeks to stabalize the release with only really-real-bugfixes can't
be such a bad thing.</p>

<p>2.6.x-rc (rc for Ridiculous Count) can then be our development releases,
and 2.6.x-rc (rc for Release Candidate) are then closer to stable releases
(in terms of getting patches in).</p>

<p>Optionally, you could change Ridiculous Count to PRErelease to avoid
confusion :)</p>

<p>Other than that I don't have much to complain about... so keep up the
good work!</p>

</quote>

<p>Bill Davidsen replied, <quote who="Bill Davidsen">I do agree that the pre
and rc names gave a strong hint that (-pre) new features would be considered or
(-rc) it's worth doing more serious testing. If Linux doesn't like this any
more, perhaps some other way to indicate the same thing would be desirable. I
admit that the kernel has gotten so good that I only try -rc (by whatever name)
kernel, I'm not waiting for the next big thing. I think that's really good,
actually.</quote> And Linus replied:</p>

<quote who="Linus Torvalds">

<p>Well, I actually do try to _explain_ in the kernel mailing list
annoucements what is going on.</p>

<p>One of the reasons I don't like "-rcX" vs "-preX" is that they are so
meaningless. In contrast, when I actually do the write-up on a patch, I tend
to explain what I expect to have changed, and if I feel we're getting ready
for a release, I'll say something like</p>

<blockquote>

<p>        ..</p>

<p>        Ok,</p>

<p>        trying to make ready for the real 2.6.9 in a week or so, so please give
        this a beating, and if you have pending patches, please hold on to them
        for a bit longer, until after the 2.6.9 release. It would be good to have
        a 2.6.9 that doesn't need a dot-release immediately ;)</p>

<p>        ....</p>

</blockquote>

<p>which is a hell of a lot more descriptive, in my opinion.</p>

<p>Which is just another reason why the name itself is not that meaningful.
It can never carry the kind of information that people seem to _expect_
it to carry.</p>

</quote>

</section>

<section
  title="Different Perspectives On The Status Of Real-Time"
  subject="[RFC][PATCH] Restricted hard realtime"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=2SAdG-7Mm-25%40gated-at.bofh.it"
  posts="21"
  startdate="23 Oct 2004 11:47:21 -0800"
  enddate="28 Oct 2004 05:16:22 -0800"
>
<topic>Microkernels: Adeos</topic>
<topic>Real-Time: RTAI</topic>
<topic>Real-Time: RTLinux</topic>
<topic>SMP</topic>

<p>The quest for a real-time kernel has been going on for years, with
much work and many contributions by tons of people. And there are always
new people coming up with ideas for how to do it better. This week, Paul
E. McKenney proposed a mechanism to create real-time SMP systems by off-loading
system-calls and other time-consuming operations to other CPUs. He offered
up a partial patch to illustrate his ideas, acknowledging that there were
many shortcomings: it hadn't been merged with existing real-time work by
folks like Ingo Molnar; it hard-coded various things like which CPU was the
designated real-time CPU; it only handled system calls, and not exceptions or
traps; it was completely untested. But it was real code, and he concluded,
<quote who="Paul E. McKenney">the idea is to provide an evolutionary path
towards hard realtime in Linux.  Capabilities within Linux can be given
hard-realtime response separately and as needed.  And there are likely
a number of capabilities that will never require hard realtime response,
for example, given current techological trends, a 1MB synchronous write
to disk is going to take some time, and will be subject to the usual retry
and error conditions.  This approach allows such operations to keep their
simpler non-realtime code.</quote></p>

<p>The patch received a mixed reception. For one thing, as Ingo pointed out,
<quote who="Ingo Molnar">this has been implemented in a clean way already:
check out the "isolcpus=" boot option &amp; scheduler feature (implemented by
Dimitri Sivanich) which isolates a set of CPUs via sched-domains for precisely
such purposes. The way to enter such a domain is via the affinity syscall -
and balancing will leave such domains isolated.</quote> Paul was happy to
see this work, and rushed off to look at it. After a day of digging through
Dimitri Sivanich's code, he said, <quote who="Paul E. McKenney">I haven't
proven to myself that the isolcpus code gets rid of all of the cross-runqueue
lock acquisitions, but it certainly gets rid of a large number of them.
It doesn't seem to do system-call or exception-handler offload, but it does
help me see how to do this sort of thing cleanly.</quote> He offered a minor
patch to Dimitry, to remove an unnecessary #ifdef, and Dimitry replied,
<quote who="Dimitri Sivanich">this specific code wasn't part of my original
patch, but after looking at it briefly, I believe this patch should make
sense.</quote></p>

<p>Elsewhere, Thomas Gleixner was skeptical about the whole thing. For one
thing, he said, <quote who="Thomas Gleixner">I haven't seen an embedded
SMP system yet. Focussing this on SMP systems is ignoring the majority
of possible applications.</quote> He offered various existing uniprocessor
alternatives; such as the dual kernel approach of RTLinux, the domain approach
of RTAI/Adeos, and the in-kernel approach of KURT/Libertos. Paul found none
of these satisfactory, and also offered a fourth possibility, of running
<quote who="Paul E. McKenney">something like the Xen VMM, and have it provide
a single OS with the illusion that there are two CPUs.  As you say, the OS
cannot be allowed to really disable interrupts, instead, the underlying VMM
must track whether the OS thinks it has interrupts disabled on a given "CPU",
and refrain from delivering the interrupt until the OS is ready.  Of course,
on a multithreaded CPU or SMP system, the VMM is not required.</quote> He
added, regarding the whole idea of an embedded SMP system, <quote who="Paul
E. McKenney">Seeing SMP support for ARM lead me to believe that this was
not too far over the edge.</quote> Jon Masters replied:</p>

<quote who="Jon Masters">

<p>They have an SMP reference implementation, however many folks don't
actually want to go the dual core approach right now for embedded designs
(apparently the increased design complexity isn't worth it).  I've had
protracted discussions about this very issue quite recently indeed. Others
will disagree, I'm only basing my statement upon conversations with various
engineers - I think your idea eventually becomes interesting, but now is not
the right moment to be pushing it yet. People still don't want this now.</p>

<p>Talk to smartphone manufacturers who currently have dual ARM core designs,
one running Linux and the other running an RTOS for the GSM and phone stuff,
and they'll say they actually want to reduce the design complexity down to
a single core. Talking to people suggests that multicore designs are good in
certain situations (such as in the case above), but in general people aren't
yet going to respond to your way of doing realtime :-) Yes you do have only one
OS in there, maybe that would change opinion, but we're not quite at the point
where everything is multicore so you're not going to convince the masses.</p>

<p>Having said all that, for a different perspective, I hack on ppc (Xilinx
Virtex II Pro) kernel and userspace stuff for some folks that make high
resolution imaging equipment, involving extremely precise control over a
pulsed signal and data acquisition (we're talking nanosecond/microsecond
precision). Since Linux obviously isn't capable of this level of deterministic
response right now we end up farming out work to a separate core - it's
unlikely your approach would convince the hardware folks, but I guess it
might be tempting at some point in the future. Who knows.</p>

</quote>

<p>Elsewhere, Karim Yaghmour said:</p>

<quote who="Karim Yaghmour">

<p>I've been trying not to get too involved in this, though I've been
personally very interested in the topic of obtaining deterministic
response times from Linux for quite some time. Ingo's work is
certainly gathering a lot of interest, and he's certainly got the
brains and the can-do mindset that warrant a wait-and-see attitude.</p>

<p>I must admit though that I'm somewhat skeptical/worried. The issue
for me isn't whether Linux can actually become deterministic. This
kernel has reached heights which many of its detractors never
believed it could, it has come a long way. So whether it _could_
better/surpass existing RT-Unixes (such as LynxOS or QNX for example)
in terms of real-time performance is for me in the realm of the
possible.</p>

<p>That the Linux development community has to answer the question of
"how do we provide deterministic behavior for users who need it?"
was, as for the kernel developers of most popular Unixes, just a
matter of time. And in this regard, this is a piece of history that
is yet to be written: What is the _correct_ way to provide
deterministic response times in a Unix environment?</p>

<p>Like in most other circumstances, the Linux development community's
approach to this has been: show me the code! In that regard (and
this is in no way criticism of anyone's work),  Ingo's work has
gathered a lot of interest not because it is breaking new ground
in terms of the concepts, but largely because of its very rapid
development pace. Let's face it, no self-respecting effort that has
ever labeled itself as wanting to provide "hard real-time Linux"
has been active on the LKML on the same level as Ingo (though many
have concentrated a lot of effort and talent on other lists.)</p>

<p>Yet, I believe that this is a case where the concepts do actually
matter a lot, and that no amount of published code will erase the
fundamental question: What is the _correct_ way to provide
deterministic response times in a Unix environment? I keep
highlighting the word "correct" because it's around this word's
definition that the answer probably lies.</p>

<p>Here are a number of solutions that some have found to be "correct"
for their needs over time, in chronological order of appearance:</p>

<p>

<ol>

<li>Master/slave kernel (ex.: RTLinux)</li>
<li>Dual-CPU (there are actually many examples of this, some that
   date back quite a few years)</li>
<li>Interrupt levels (ex.: D.Schleef, B.Kuhn, etc.)</li>
<li>Nanokernel/Hypervisor (ex.:Adeos)</li>
<li>Preemption</li>
<li>Uber-preemption and IRQ threading (a.k.a. preemption on acid)
   (ex.: Ingo, TimeSys, MontaVista, Bill)</li>

</ol>

</p>

<p>My take on this has been that the "correct" way to provide
deterministic response times in a Unix environment should minimize
in as much as possible:</p>

<p>

<ol>

<li>the modifications to the targeted kernel's existing API,
behavior, source code, and functionality in general;</li>

<li>the burden for future mainstream kernel development efforts;</li>

<li>the potential for accidental/casual use of the hard-rt
capabilities, as this would in itself result in loss of
deterministic behavior;</li>

</ol>

</p>

<p>Also, it should be:</p>

<p>

<ol>

<li>architectured in a way that enables straight-forward
extension of the real-time capabilities/services without requiring
further modifications to the targeted kernel's existing API,
behavior, sources, and functionality in general;</li>

<li>truly deterministic, not simply time-bound by some upper
limit found during a sample test run;</li>

<li>_very_ simple to use without, as I said above, having the
potential of being accidentally or casually used (such a solution
should strive, in as much as possible, to provide the same API as
the targeted Unix kernel);</li>

<li>easily portable to new architectures, while remaining
consistent, both in terms of API and in terms of behavior, from
one architecture to the next;</li>

</ol>

</p>

<p>From all the solutions that have been put forth over the years, I
have found that the nanokernel/hypervisor solution fits this
description of correctness best. The Adeos/RT-nucleus/RTAI-fusion
stack is one implementation I have been promoting, as it has
already reached important milestones. All that is needed for it
to work is the necessary hooks for Adeos to hook itself into
Linux by way of an interrupt pipeline; the latter being very simple,
portable and non-intrusive, yet could not accidentally/casually
be used without breaking. This interrupt pipeline is all that
is required for the rest of the stack to provide the services I
have alluded to in other postings by means of loadable modules,
including the ability to transparently service existing Linux
system calls via RTAI-fusion for providing applications with hard-
rt deterministic behavior.</p>

<p>One argument that has been leveled against this approach by those
who champion the vanilla-Linux-should-become-hard-rt cause (many
of whom are now in the uber-preemption camp) is that it requires
writing separate real-time drivers. Yet, this argument contains
a fatal flaw: drivers do not become deterministic by virtue of
running on an RTOS. IOW, even if Linux were to be made a Unix RTOS,
every single driver in the Linux sources would still have to be
rewritten with determinism in mind in order to be used in a
system that requires hard-rt. This is therefore a non-issue.</p>

<p>Which brings me back to what you said above: "The problem is that
the entire OS kernel must be modified to ensure that all code paths
are deterministic." There are two possible paths here.</p>

<p>Either:</p>

<p>a) Most current kernel developers intend to eventually convert the
entire existing code-base into one that contains deterministic
code paths only, and therefore impose such constraints on all future
contributors, in which case the path to follow is the one set by
the uber-preemption folks;</p>

<p>or:</p>

<p>b) Most current kernel developers intend to keep Linux a general
purpose Unix OS which mainly serves a user-base that does not need
deterministic hard-rt behavior from Linux, and therefore changes
for providing deterministic hard-rt behavior are acceptable only
if they are demonstrably minimal, non-instrusive, yet flexible
enough for those that demand hard-rt, in which case the path to
follow is the one set by the nanokernel/hyperviser folks;</p>

<p>So which is it?</p>

</quote>

<p>Bill Huey gave a lengthy response to many of Karim's points; but the
upshot was, <quote who="Bill Huey">This is a non-issue. the uber-preemption
folks will continue to do what they've/we've been doing and it just opens
up more opportunities for dual-domain RT folks. One doesn't exclude from
the other.</quote> Andrew Morton also replied to Karim, suggesting:</p>

<quote who="Andrew Morton">

<p>uber-preemption is the chosen way for the mainline kernel mainly because
its mechanisms can be largely hidden inside (increasingly ghastly) header
files and most developers just don't have to worry about it.</p>

<p>I have a sneaking suspicion that the day will come when we get nice
sub-femtosecond latencies in all the trivial benchmarks but it turns out that
the realtime processes won't be able to *do* anything useful because whenever
they perform syscalls, those syscalls end up taking long-held locks.</p>

<p>Which does lead me to suggest that we need to identify the target
application areas for Ingo's current work and confirm that those applications
are seeing the results which they require.  Empirical results from the
field do seem to indicate success, but I doubt if they're sufficiently
comprehensive.</p>

</quote>

<p>Ingo offered a technical rebuttal to the idea that real-time processes
would have problems that the benchmarks wouldn't reveal; the upshot being
that he was confident the problems could be solved; though he admitted his
email ignored some more difficult issues.</p>

</section>

<section
  title="New Virtual cputime For Micro-Second Accounting"
  subject="[patch] cputime: introduce cputime."
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=2TX8b-1UG-7%40gated-at.bofh.it"
  posts="5"
  startdate="27 Oct 2004 06:21:40 -0800"
  enddate="28 Oct 2004 01:36:51 -0800"
>
<topic>User-Mode Linux</topic>
<topic>Version Control</topic>

<mention>Andrew Morton</mention>

<p>Martin Schwidefsky said, <quote who="Martin Schwidefsky">after the three
timer-header-cleanup patches have hit bitkeeper it's time for the next step:
the cputime_t patch. We've been using this patch and the s/390 exploitation
patch for micro-second based cpu time accounting for some time now and it
seems rock solid.  I didn't get a single bug report for it so far. Good
for s/390, but now the question is what does the patch do to all the other
architectures? 2.6.9 plus the cputime_t patch works fine on my thinkpad. Could
you add this to -mm for broader testing please?  The patch is cut against
2.6.10-rc1-mm1.</quote> His proposed Changelog entry said:</p>

<quote who="Martin Schwidefsky">

<p>This patch introduces the concept of (virtual) cputime. Each architecture
can define its method to measure cputime. The main idea is to define a
cputime_t type and a set of operations on it (see asm-generic/cputime.h).
Then use the type for utime, stime, cutime, cstime, it_virt_value,
it_virt_incr, it_prof_value and it_prof_incr and use the cputime operations
for each access to these variables. The default implementation is jiffies
based and the effect of this patch for architectures which use the default
implementation should be neglectible.</p>

<p>There is a second type cputime64_t which is necessary for the kernel_stat
cpu statistics. The default cputime_t is 32 bit and based on HZ, this will
overflow after 49.7 days. This is not enough for kernel_stat (ihmo not enough
for a processes too), so it is necessary to have a 64 bit type.</p>

<p>The third thing that gets introduced by this patch is an additional field
for the /proc/stat interface: cpu steal time. An architecture can account
cpu steal time by calls to the account_stealtime function. The cpu which
backs a virtual processor doesn't spent all of its time for the virtual
cpu. To get meaningful cpu usage numbers this involuntary wait time needs
to be accounted and exported to user space.</p>

</quote>

<p>Rik van Riel replied approvingly, <quote who="Rik van Riel">This will be
useful for User Mode Linux, Xen and iSeries too.</quote> Andrew Morton also
gave the patch a try, and liked it.</p>

</section>

<section
  title="Some Discussion Of Binary Firmware"
  subject="Intel also needs convincing on firmware licensing."
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=2U8df-1OQ-19%40gated-at.bofh.it"
  posts="7"
  startdate="27 Oct 2004 18:25:10 -0800"
  enddate="28 Oct 2004 07:41:31 -0800"
>
<topic>BSD: OpenBSD</topic>

<mention>Denis Vlasenko</mention>

<p>Han Boetes said:</p>

<quote who="Han Boetes">

<p>The people from the OpenBSD project are currently lobbying to get the
firmware for Intel wireless chipsets under a license suitable for Open
Source.</p>

<p>Since this will not only benefit BSD but also the Linux Project (and
even Intel) I would like to mention the URL here for people who want to help
writing to Intel.</p>

<p><a
href="http://undeadly.org/cgi?action=article&amp;sid=20041027193425">http://undeadly.org/cgi?action=article&amp;sid=20041027193425</a></p>

</quote>

<p>Gene Heskett replied:</p>

<quote who="Gene Heskett">

<p>Please be aware that for the so-called "software radios" chips/chipsets,
the FCC, and other similar regulating bodies in other countries has made
access to the data quite restrictive in an attempt to keep the less ruly
among us from putting them on frequencies they aren't authorized to use,
or to set the power levels above whats allowed.  These restrictions can vary
from governing body to governing body so the software is generally supplied
according to where the chipset is being shipped.  The potential for mischief,
and legal/monetary reprecussions is sufficiently great that I have serious
doubts that Intel will budge from their current position unless we can
prove, beyond any doubt, that the regulatory limitations imposed will not
be violated.</p>

<p>Since open source, where anyone who can read the code can see exactly
what the limits are, and 'adjust to suit', virtually guarantees miss-use,
sooner if not later, for no other reason than its human nature to
experiment, Intel/moto/etc therefore has very good reasons to treat its
chip&lt;-&gt;software interface as highly secret &amp; proprietary.</p>

<p>Thats not saying that they may at some point furnish a 'filter' that
presents the rest of the world with a usable API to control it, but the filter
will see to it that attempted illegal settings are ignored.  The only way I
can see that actually working is to actually put that filter inside the chip,
customized for the locale its being shipped to.  The radio control portion
of the chip itself wouldn't even be bonded out to external world pins or
bga contacts, just the port of the filter that the outside world talks to.</p>

<p>I'd rather doubt they want to make 20 to 40 different filtered versions
of the same chipset just to satisfy TPTB in some 3rd world country thats
less than 1% of the total sales.  Even the relatively dense market where
Han lives is probably less than 5% of the total for a popular chipset.</p>

<p>I'm a broadcast engineer who has been dealing at times with the FCC for
over 40 years, so you could say I'm biased.  But thats not real for over 40
years, so you could say I'm biased.  But thats not real bias, its just from
being fairly familiar with the regulatory territory.</p>

<p>I'd like to see an open source solution to this problem myself, but just
because its open source we are asking for, with the attendent liabilities
that implies, I would not hold my breath till it happens.</p>

<p>If you do, you'll probably be talking to the rest of the world through
a Ouija board.</p>

</quote>

<p>Denis Vlasenko pointed out that binary firmware didn't really hide anything,
because the code could just be disassembled and its secrets revealed. But Dax
Kelson replied:</p>

<quote who="Dax Kelson">

<p>Who cares what the secrets in the firmware are.</p>

<p>Again, it does not execute on your computer's CPU. It does not taint the
kernel. The Linux kernel driver is 100% GPLd, no binary blobs.</p>

<p>Nearly all the devices in your computer have firmware. Your keyboard,
your CDROM drive, your graphics card. It is hypocritical to clamor for the
source code to the IPW2100/2200/etc while not clamoring for the source code
to all the other firmwares in your computer.</p>

<p>It is unfortunate that the firmware isn't stored onboard the Intel card, and
instead needs to be loaded, however, this is a pretty minor inconvenience.</p>

</quote>

<p>After Kernel Traffic was published, I got an email from Timo Jyrinki, saying:</p>

<quote who="Timo Jyrinki">

<p>I would like to just point out the matter that has been apparently
confused even on the lkml: OpenBSD folks are not trying to have the firmwares
open-sourced, they are trying to have the binary blobs re-distributable. If
the firmwares aren't freely re-distributable, none of the WLAN adapters will
work on any *BSD or Linux distribution without manually going to the Internet
(how to do that without a network adapter?), accepting some "interesting" EULA
and finding out where to put the firmware so that the driver will find it.</p>

<p>Just in case the discussion continues, so that you may do some editorial
comment if no-one still gets it.</p>

<p>I've compiled a web page of the
matter, though I haven't yet "published" it: <a
href="http://www.iki.fi/tjyrinki/wireless.html">http://www.iki.fi/tjyrinki/wireless.html</a>
- I will keep it and probably improve it, I'm just not sure if it contains
(yet) enough useful information or all the points of view.</p>

<p>I think the confusion is because of the mentioned false assumptions,
but perhaps also because some folks don't care if it can be re-distributed
if it's binary-only anyway. The answer to the latter one is (partly) that
we already have firmwares on each of our network cards etc., these new WLAN
cards just need it to be uploaded on each boot. Though I also understand
that saving the few cents of not having the firmware permanently onboard is
just plain stupid anyway.</p>

</quote>

</section>

<section
  title="Cross-Compilation HOWTO"
  subject="massive cross-builds without too much PITA"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=2Ubut-3W2-3%40gated-at.bofh.it"
  posts="8"
  startdate="27 Oct 2004 21:48:33 -0800"
  enddate="30 Oct 2004 22:29:53 -0800"
>
<topic>FS: NFS</topic>
<topic>FS: ext2</topic>
<topic>SMP</topic>
<topic>Serial ATA</topic>
<topic>Version Control</topic>

<p>Alexander Viro said:</p>

<quote who="Alexander Viro">

<p>Contrary to popular beliefs, crosscompiling and full builds for a bunch
of platforms are not hard and not particulary time-consuming.  Below are
my notes on the setup and practices; I hope it will be useful and I really_
hope that people will start doing similar things.</p>

<p>On my boxen full rebuild for 6 platforms (allmodconfig on each) takes about
an hour and normally is done once per new upstream tree; build-and-compare
after making changes usually takes less than a minute total (again, for all
these targets).  IOW, it's fairly tolerable.</p>

<p align="center">        Requirements to sane setup:</p>

<p>

<ol>

<li>source tree should be common for as many platforms as possible; and
I mean physically common, not just cp -rl'ed.  Rationale: applying a
patch (or using emacs and similar inferior editors) would break links.
Propagating fixes between a bunch of partially shared trees is a PITA.</li>

<li>

<p>there should be an easy way to get a diff'able build logs before and
after a change and do that without heavy massage of logs and without forcing
full rebuild.  There should also be an easy way to carry a patchset _and_
get new changes into the patchset without having them turn into a huge
lump that would need to be split afterwards.</p>

<p>A way to do that: have a forest of cp -rl'ed trees, starting from the
baseline one, carrying the changes we'd done to source tree.  Common sequence
of events is</p>

<blockquote>

<p>        &lt;work with source tree&gt;<br />
        diff -urN &lt;last tree in forest&gt; &lt;source&gt; &gt; delta<br />
        cp -rl &lt;last tree in forerst&gt; &lt;new tree&gt;<br />
        (cd &lt;new tree&gt; &amp;&amp; patch -p1 -E) &lt;delta</p>

</blockquote>

<p>Note that this gives a fast way to see build log changes:</p>

<blockquote>

<p>        cd &lt;source&gt;<br />
        patch -p1 -E -R &lt;delta<br />
        make                    # now it's uptodate<br />
        patch -p1 -E &lt;delta<br />
        make &lt;whatever arguments&gt; &gt;../log-new 2&gt;&amp;1<br />
        patch -p1 -E -R &lt;delta<br />
        make &lt;whatever arguments&gt; &gt;../log-old 2&gt;&amp;1<br />
        patch -p1 -E &lt;delta</p>

</blockquote>

<p>and now we have build logs for *exact* *same* *part* *of* *tree* in old and
new trees.  Ready to be compared.  Of course, for multiplatform work we want
to do each of these for all platforms involved.  It's not going to be a lot
of rebuilds, though - we are only rebuilding the stuff we'd been changing.</p>

</li>

<li>change of baseline version should be easy.  Note that aforementioned
forest takes care of most of these problems - we can easily convert it
to sequence of patches (script doing diff between cp -rl'ed trees; fast
enough) and we can easily convert a series into the forest (cp -rl + patch
done by another script).  Porting to new baseline mostly consists of
folding the forest into patchset and applying it to new tree.</li>

<li>

<p>there should be an easy way to spread the builds between several boxen
_and_ keep the trees in sync.  What I'm doing looks so:</p>

<ol>

<li>master box where I'm doing most of the work on patchset (not
particulary fast CPU, preferably enough memory and fast disk).</li>

<li>

<p>slave boxen where the builds are done - these are heavily
CPU-bound [see below] and where editing is going on.  Layout:</p>

<p>

<ul>

<li>clean tree (right now - RC10-rc1-bk6) on each.</li>

<li>base - clean + combined patchset applied to it (RC10-rc1-bk6-base; cp -rl'ed from clean)</li>

<li>forest (RC10-rc1-bk6-&lt;name&gt;; cp -rl'ed starting from base, that's where additions to patchset go)</li>

<li>source (RC10-rc1-bk6-current; originally cp -a from base, that's where editing and builds are done)</li>

<li>linux-&lt;arch&gt; - object trees</li>

<li>patches/... - NFS-exported by master and shared by all slaves.</li>

</ul>

</p>

<p>It's easier to move stuff around that way (scp gets annoying real soon)</p>

</li>

</ol>

<p>Note that sharing the trees between slaves (e.g. by NFS) is not practical -
too damn slow.  Propagating changes is not hard, provided that slaves are
few.</p>

<p>*NOTE*: one thing you definitely want to do is to turn CONFIG_DEBUG_INFO
off.  That changes the builds from IO-bound to CPU-bound and saves a *lot*
of space.  When you work with several platforms the last part gets really
important - we are talking about nearly 2Gb per target.</p>

<p>Splitup of initial patchset lives on master; no point duplicating potentially
very large forest on slaves.  What we have on slaves is the tail of patchset -
the stuff we'd added.  From time to time we can move the beginning of that
tail to master, collapsing more stuff on slaves.</p>

</li>

<li>

<p>cross-toolchains themselves and not wearing your fingers by nightmare
make invokations.  I've done a trivial script that takes target name as its
first argument, sets ARCH, O, CROSS_COMPILE and CHECK (for cross-sparse)
depending on it and passes them and the rest of arguments to make.  It also
sanitizes stderr a bit (see ftp.linux.org.uk/pub/people/viro/kmk for what I'm
using right now).  That takes care of make side of that mess - something like $
for i in i386 alpha ppc; do kmk $i C=2 drivers/net/ &gt;../$i-net15 &amp; done
is done a lot (and history helps enough to make further scripting a
non-issue).</p>

<p>Building cross-toolchain is surprisingly easy these days; I'm using debian
on build boxen and cross-compilers are not hard to do:</p>

<blockquote>

<p>        apt-get build-dep binutils<br />
        apt-get build-dep gcc-3.3<br />
        apt-get install dpkg-cross<br />
        apt-get source binutils<br />
        get binutils-cross-... patch from bugs.debian.org/231707<br />
        cd binutils-...<br />
        apply patch<br />
        TARGET=&lt;target&gt;-linux fakeroot debian/rules binary-cross<br />
        cd ..<br />
        dpkg -i binutils-&lt;target&gt;-....deb<br />
        got linux-kernel-headers, libc6, libc6-dev and libdb1-compat for target<br />
        dpkg-cross -a &lt;target&gt; -b on all of those<br />
        dpkg -i resulting packages<br />
        apt-get source gcc-3.3<br />
        cd gcc-3.3-...<br />
        GCC_TARGET=&lt;gcc_target&gt; debian/rules control<br />
        GCC_TARGET=&lt;gcc_target&gt; debian/rules build<br />
        GCC_TARGET=&lt;gcc_target&gt; fakeroot debian/rules binary<br />
        cd ..<br />
        dpkg -i resulting packages.</p>

</blockquote>

<p>One note: &lt;target&gt; here is debian platform name (e.g. ppc), but &lt;gcc_target&gt;
is *gcc* idea of what that bugger is called (e.g. powerpc).</p>

<p>IIRC, Nikita Youshchenko had pre-built debs somewhere, but they were not
for the host I'm using (amd64/sid).</p>

<p>In any case, that's a one-time work (OK, once per target).  Major limitation
here is that one needs several debs for target (AFAICS all we really need
is a bunch of headers).  In practical terms it means no ppc64.  However,
it's not too bad a problem - breaking ppc64 means breaking a box Linus is
playing with, so problems on that platform are noticed fast enough as it
is ;-)</p>

</li>

<li>

<p>cross-sparse: sparse snapshots live on <a
href="http://www.codemonkey.org.uk/projects/bitkeeper/sparse/">http://www.codemonkey.org.uk/projects/bitkeeper/sparse/</a>;
I'm probably doing more work than necessary since I build a separate binary
for each target.  What it means is</p>

<p>

<ol>

<li>editing pre-process.h to point to cross-gcc headers (e.g.
/usr/lib/gcc-lib/alpha-linux/3.3.4/include) and</li>

<li>editing target.c (probably not needed these days)<br />
make CFLAGS=-O3<br />
mv ~/bin/sparse-&lt;arch&gt;{,-old}<br />
cp check ~/bin/sparse-&lt;arch&gt;<br />
does the build-and-install.</li>

</ol>

</p>

<p>When switching to new version of sparse (and it's changing pretty fast):
make for all platforms to make sure that no compiling will get in a way,
followed by</p>

<blockquote>

<p>        kmk &lt;arch&gt; C=2 CHECK=sparse-&lt;arch&gt;-old >../&lt;arch&gt;-sparse-old<br />
        kmk &lt;arch&gt; C=2 &gt;../&lt;arch&gt;-sparse-new</p>

</blockquote>

<p>for everything (works fine in parallel), followed by comparing logs and
looking for regressions.  About 20 minutes for all (well, 20 minutes plus
whatever it takes to fix the breakage if we get one, obviously).</p>

</li>

<li>

<p>useful tricks:</p>

<p>

<ol>

<li>I'm carrying a patch that allows to add to CHECKFLAGS from command
line (CF=-Wbitwise in make/kmk arguments instead of editing makefile).
It's probably worth merging at some point.</li>

<li>

<p>I'm carrying a kludge that teaches allmodconfig to take a given set of
options from a file and pin them down; Roman has a cleaner patch and IIRC he
was going to merge it at some point.  Anyway, that allows to do such things
as "allmodconfig on i386, but have CPU type set to K7 and disable SMP first,
so we'll get all UP-only drivers into the build".  Or "do PPC build for that
sub-architecture", etc.</p>

<p>See ftp.linux.org.uk/pub/people/viro/patchset/XK* for that stuff.</p>

</li>

</ol>

</p>

</li>

<li>

<p>Random notes:</p>

<p>Of course, all that stuff can be done on a single box; however, having a
bunch of compiles run in parallel will get painful since too many of them ==
guaranteed way to trash all caches around.  I've ended up using a two-years-old
K7 box as a master (since that was where I was doing most of the kernel work
anyway) and put two amd64 3400+, both with 512Mb and 10krpm SATA as slaves.
I considered spreading build on other local boxen; maybe I'll do that when I
add more targets to active set, but that's not obvious.  The main problem here
is doing resyncs between the boxen without too much PITFingers - and getting
around to doing it, of course.  So far existing setup had been more than enough
for my needs - so much that all further scripting, etc. remains theory.</p>

<p>IME this stuff is *heavily* CPU-bound.  Parallel builds on the same source
make IO load almost a non-issue, as long as you are not spewing gigabytes of
crap all over the disk (== have CONFIG_DEBUG_INFO turned off; again, it's
a must-do unless you are reading this posting by mistake, having confused
your linux-kernel and masochists-r-us mailboxen).</p>

<p>ext2 works fine for build boxen - you are not dealing with hard-to-recreate
data there (diffs are going to master and you want them carved into small
chunks from the very beginning anyway).  So journalling, etc. is a pointless
overhead in this situation.  Keep in mind that forest of cp -rl'ed kernel
trees gets hard on caches once it grows past ~60 copies regardless of the fs
involved; if your patchset gets bigger than that, fragment it and do porting,
etc. group-by-group.</p>

<p>Currently i386, amd, sparc32, sparc64, alpha and ppc all survive
allmodconfig with relatively few patches; amount of new breakage showing up
is not too bad and so far didn't take much time to deal with.  Bringing in
new targets...  hell knows - parisc probably will be the next one (which will
mean adding delta between Linus' and parisc trees into -bird), arm going after
it (that will mean untangling the mess around drivers/net/8390.c first ;-/)
After getting the target to build (and barring the acts of Cthulhu or Ingo)
it doesn't add a lot of overhead...</p>

<p>Hardware: well, whatever you have, obviously.  Parallel builds *do* scale
nicely, so SMP with relatively slow CPUs can do fine.  Out of something
recent...  I went with UP amd64, simply because a couple of UP boxen was
actually cheaper than equivalent SMP one (~$600 per box, counting disks and
cases) and everything else would be too far overpriced.</p>

</li>

</ol>

</p>

</quote>

<p>Geert Uytterhoeven remarked, <quote who="Geert
Uytterhoeven">Just in case you ever want to start
doing m68k as well: I already have a few sparse-related cleanups at <a
href="http://linux-m68k-cvs.ubb.ca/~geert/linux-m68k-2.6.x-merging/">http://linux-m68k-cvs.ubb.ca/~geert/linux-m68k-2.6.x-merging/</a>XXX-sparse-*</quote>.
Alexander asked, <quote who="Alexander Viro">Hrm...  How far is Linus'
tree from building on m68k these days?  I hadn't looked at the delta since
2.6.7 or so, but it used to be fairly invasive in some places...</quote>
And Geert replied:</p>

<quote who="Geert Uytterhoeven">

<p>For 2.6.8.1, the different task models (cfr. the thread titled `Re:
Getting kernel.org kernel to build for m68k?' on lkml last September) is
the big problem. If you apply the patch from that thread to plain 2.6.8.1,
it'll build fine!</p>

<p>2.6.9 introduced a new problem with the signal handling (for which BTW
we don't have a fix yet).</p>

</quote>

<p>Alessandro Amici also replied to Alexander's original post, saying,
<quote who="Alessandro Amici">I happen to be learning how to cross-compile
on Debian right now, so i can testify that building the cross toolchain
'The Debian Way' is even easier than you describe ;).</quote> He went on:</p>

<quote who="Alessandro Amici">

Detailed instructions are at:
<a href="http://people.debian.org/~debacle/cross.html">http://people.debian.org/~debacle/cross.html</a>

<p>The short story is:<br />
# apt-get toolchain-source dpkg-cross autoconf2.13 fakeroot<br />
# tpkg-install-libc &lt;terget&gt;-linux # grabs, converts and install the headers<br />
$ tpkg-make &lt;target&gt;-linux  # no need to patch anything<br />
$ cd binutils...<br />
$ debuild -us -uc    # no magic env variables<br />
# dpkg -i ../binutils...deb<br />
$ cd ../gcc...<br />
$ debuild -us -uc<br />
# dpkg -i ../gcc...deb</p>

<p>If I'm not mistaken, that's all.</p>

</quote>

<p>But Alexander pointet out, <quote who="Alexander Viro">gcc and binutils
in there tend to get out of sync with native ones.  Which is a killer,
as far as I'm concerned...</quote></p>

</section>

<section
  title="Kprobes Updates"
  subject="[0/3] PATCH Kprobes for x86_64- 2.6.9-final"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=2UgNo-7Sy-3%40gated-at.bofh.it"
  posts="12"
  startdate="28 Oct 2004 03:32:08 -0800"
  enddate="28 Oct 2004 15:42:17 -0800"
>
<topic>Assembly</topic>
<topic>SMP</topic>

<p>Prasanna S Panchamukhi said, <quote who="Prasanna S. Panchamukhi">Below
are the Kprobes patches ported to x86_64 architecture.  I have updated
these patches with suggestions from Andi Kleen.  Thanks Andi for
reviewing and providing your feedback.  These patches can be applied over
2.6.9-final.</quote> The first patch modified Kprobes to support porting it to
other architectures. The second patch (and really the whole project), he said:

<quote who="Prasanna S. Panchamukhi">

<p>Helps developers to trap at almost any kernel code address, specifying
a handler routine to be invoked when the breakpoint is hit. Useful
for analysing the Linux kernel by collecting debugging information
non-disruptively. Employs single-stepping out-of-line to avoid probe
misses on SMP and may be especially useful in aiding debugging elusive
races and problems on live systems. More elaborate dynamic tracing
tools can be built over the kprobes interface.</p>

<p>Sample usage:</p>

<pre>        To place a probe on __blockdev_direct_IO:
        static int probe_handler(struct kprobe *p, struct pt_regs *)
        {
                ... whatever ...
        }
        struct kprobe kp = {
                .addr = __blockdev_direct_IO,
                .pre_handler = probe_handler
        };
        register_kprobe(&amp;kp);

</pre>

<p>Jprobes:</p>

<p>A special kprobe type which can be placed on function entry points,
and employs a simple mirroring principle to allow seamless access
to the arguments of a function being probed. The probe handler
routine should have the same prototype as the function being probed.</p>

<p>The way it works is that when the probe is hit, the breakpoint
handler simply irets to the probe handler's rip while retaining
register and stack state corresponding to the function entry.
After it is done, the probe handler calls jprobe_return() which
traps again to restore processor state and switch back to the
probed function. Linus noted correctly at KS that we need to be
careful as gcc assumes that the callee owns arguments. We save and
restore enough stack bytes to cover argument space.</p>

<p>Sample Usage:</p>

<pre>        static int jip_queue_xmit(struct sk_buff *skb, int ipfragok)
        {
                ... whatever ...
                jprobe_return();
                return 0;
        }

        struct jprobe jp = {
                {.addr = (kprobe_opcode_t *) ip_queue_xmit},
                .entry = (kprobe_opcode_t *) jip_queue_xmit
        };
        register_jprobe(&amp;jp);</pre>

</quote>

</p>

<p>And the third patch also consisted of minor changes to facilitate porting.
Andi Kleen replied to the set of them, saying:</p>

<quote who="Andi Kleen">

<p>The patch is not ready to be applied yet. You didn't address some issues
from the last review.</p>

<p>Like I still would like to have the page fault notifier completely
moved out of the fast path into no_context (that i386 has it there is also
wrong). Adding kprobe_runn doesn't make a difference.</p>

<p>And the jprobe_return_end change is wrong, my suggestion was to move it
into the inline assembler statement. Adding asmlinkage doesn't help at all
(I think i386 gets this wrong too)</p>

</quote>

<p>Prasanna explained regarding the page fault notifier, <quote who="Prasanna
S. Panchamuk">The kprobes fault handler is called if an exception is generated
for any instruction within the fault-handler or when Kprobes single-steps the
probed instruction.  AFAIK kprobes does not handle page faults in the above
case and just returns immediately resuming the normal execution.</quote>
Andi replied, <quote who="Andi Kleen">Ok. It's ugly, but ok. Can you remove
the bogus kprobes_running() then please, it's unnecessary?  With that change
it would be ok to merge from my side.</quote></p>

</section>

<section
  title="Linux 2.6.10-rc1-mm2 Released"
  subject="2.6.10-rc1-mm2"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=2UAMi-5IU-17%40gated-at.bofh.it"
  posts="29"
  startdate="29 Oct 2004 00:49:30 -0800"
  enddate="02 Nov 2004 23:28:43 -0800"
>
<topic>Kernel Build System</topic>
<topic>Kernel Release Announcement</topic>
<topic>Virtual Memory</topic>

<p>Andrew Morton announced Linux kernel 2.6.10-rc1-mm2, saying:</p>

<quote who="Andrew Morton">

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

<p>

<ul>

<li>There are a bunch of CPU scheduler changes here in the load balancing area.
They have been shown to help some workloads, but extra performance testing
is needed.</li>

<li>More fiddling with the memory reclaim code.  We're making gradual
progress here, so people who have had issues in the past with VM behaviour
should keep an eye out for improvements or regressions.</li>

<li>

<p>sparc64 and possibly other architectures fail to compile at all due to
a kbuild problem. A fix is in progress. Apparently doing</p>

<blockquote>

<p>        touch include/asm-foo/Kbuild</p>

</blockquote>

<p>will work around this.</p>

</li>

</ul>

</p>

</quote>

</section>

<section
  title="Linux 2.6.9-ac5 Released"
  subject="Linux 2.6.9-ac5"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=2UHDX-2CX-3%40gated-at.bofh.it"
  posts="8"
  startdate="29 Oct 2004 06:40:32 -0800"
  enddate="31 Oct 2004 05:15:06 -0800"
>

<p>Alan Cox announced a new release of his own Kernel patch set, 2.6.9-ac5. He
said, <quote who="Alan Cox">This update adds some of the more minor fixes as
well as a fix for a nasty __init bug. Nothing terribly pressing for non-S390
users unless they are hitting one of the bugs described or need the new driver
bits.</quote> Nuno Silva replied, <quote who="Nuno Silva">Thank god someone
started to mantain a stable 2.6 kernel!</quote> Greg Louis concurred, saying,
<quote who="Greg Louis">I was going to wait till at least 2.6.10 -- need
reliable operation, and all the "this-and-that-major-function-is- broken-again"
messages were putting me off -- but Alan can be trusted.</quote></p>

</section>

<section
  title="Automated Correctness Checking"
  subject="Sparse &quot;context&quot; checking.."
  archive="http://groups.google.com/groups?hl=en&amp;lr=&amp;selm=2VezS-rN-3%40gated-at.bofh.it"
  posts="4"
  startdate="30 Oct 2004 19:20:53 -0800"
  enddate="30 Oct 2004 21:03:20 -0800"
>
<topic>SMP</topic>
<topic>USB</topic>

<p>Linus Torvalds said:</p>

<quote who="Linus Torvalds">

<p>I just committed the patches to the kernel to start supporting a new
automated correctness check that I added to sparse: the counting of static
"code context" information.</p>

<p>The sparse infrastructure is pretty agnostic, and you can count pretty
much anything you want, but it's designed to test that the entry and exit
contexts match, and that no path through a function is ever entered with
conflicting contexts.</p>

<p>In particular, this is designed for doing things like matching up a "lock"
with the pairing "unlock", and right now that's exactly what the code
does: it makes each spinlock count as "+1" in the context, and each
spinunlock count as "-1", and then hopefully it should all add up.</p>

<p>It doesn't always, of course. Since it's a purely static analyser, it's
unhappy about code like</p>

<pre>        int fn(arg)
        {
                if (arg)
                        spin_lock(lock);
                ...
                if (arg)
                        spin_unlock(lock);
        }</pre>

<p>because the code is not statically deterministic, and the stuff in between
can be called with or without a lock held. That said, this has long been
frowned upon, and there aren't that many cases where it happens.</p>

<p>Right now the counting is only enabled if you use sparse, and add the
"-Wcontext" flag to the sparse command line by hand - and the spinlocks
have only been annotated for the SMP case, so right now it only works for
CONFIG_SMP. Details, details.</p>

<p>Also, since sparse does purely local decisions, if you actually _intend_
to grab a lock in one function and release it in another, you need to tell
sparse so, by annotating the function that acquires the lock (with
"__acquires(lockname)") and the function that releases it (with, surprise
surprise, "__releases(lockname)") in the declaration. That tells sparse to
update the context in the callers appropriately, but it also tells sparse
to expect the proper entry/exit contexts for the annotated functions
themselves.</p>

<p>I haven't done the annotation for any functions yet, so expect warnings.
If you do a checking run, the warnings will look something like:</p>

<pre>          CHECK   kernel/resource.c
        kernel/resource.c:59:13: warning: context imbalance in 'r_start' - wrong count at exit
        kernel/resource.c:69:13: warning: context imbalance in 'r_stop' - unexpected unlock</pre>

<p>which just shows that "r_start" acquired a lock, and sparse didn't expect
it to, while "r_stop" released a lock that sparse hadn't realized it had.
In this case, the cause is pretty obvious, and the annotations are equally
so.</p>

<p>A more complicated case is</p>

<pre>          CHECK   kernel/sys.c
        kernel/sys.c:465:2: warning: context imbalance in 'sys_reboot' - different lock contexts for basic block</pre>

<p>where that "different lock contexts" warning means that sparse determined
that some code in that function was reachable with two different lock
contexts. In this case it's actually harmless, since what happens in this
case is that the code after rebooting the machine is unreachable, and
sparse just doesn't understand that.</p>

<p>But in other cases it's more fundamental, and the lock imbalance is due to
dynamic data that sparse just can't understand. The warning in that case
can be disabled by hand, but there doesn't seem to be that many of them. A
full kernel build for me has about 200 warnings, and most of them seem to
be the benign kind (ie the kind above where one function acquires the lock
and another releases it, and they just haven't been annotated as such).</p>

<p>The sparse thing could be extended to _any_ context that wants pairing,
and I just wanted to let people know about this in case they find it
interesting..</p>

</quote>

<p>Roland Dreier replied, <quote who="Roland Dreier">Do you have a plan for
how to handle functions like spin_trylock()?  I notice in the current tree
you just didn't annotate spin_trylock().</quote> Linus replied:</p>

<quote who="Linus Torvalds">

<p>Actually, the _current_ tree does actually annotate spin_trylock() (as of
just before I sent out the email). It looks like</p>

<pre>        #define spin_trylock(lock)      __cond_lock(_spin_trylock(lock))</pre>

<p>where __cond_lock() for sparse is</p>

<pre>        include/linux/compiler.h:# define __cond_lock(x)        ((x) ? ({ __context__(1); 1; }) : 0)</pre>

<p>ie we add a "+1" context marker for the success case.</p>

<p>NOTE! This works with sparse only because sparse does immediate constant
folding, so if you do</p>

<pre>        if (spin_trylock(lock)) {
                ..
                spin_unlock(lock);
        }</pre>

<p>sparse linearizes that the right way unconditionally, and even though
there is a data-dependency, the data depenency is constant. However, if
some code does</p>

<pre>        success = spin_trylock(lock);
        if (success) {
                ..
                spin_unlock(lock);
        }</pre>

<p>sparse would complain about it, because sparse doesn't do any _real_ data
flow analysis.</p>

<p>So sparse can follow all the obvious cases, including trylock and
"atomic_dec_and_lock()".</p>

</quote>

<p>Greg KH also said to Linus, <quote who="Greg KH">Nice, I like this
a lot.  Already found some bugs in the USB drivers that have been there
forever.</quote></p>

</section>

<section
  title="man-pages Maintainership"
  subject="[OT] man-pages-1.70, new maintainer"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=2VwZK-4Z4-1%40gated-at.bofh.it"
  posts="2"
  startdate="31 Oct 2004 14:59:33 -0800"
  enddate="31 Oct 2004 17:39:48 -0800"
>

<p>After maintaining the man-pages project for 9 years, Andries Brouwer
said, <quote who="Andries Brouwer">Just released man-pages-1.70. Find it
the usual places.  Due to a decreasing amount of time and increasing RSI,
maintaining the man-pages package became difficult.  Fortunately Michael
Kerrisk has accepted to take over.  Send corrections and additions to <a
href="mailto:mtk-manpages@gmx.net">mtk-manpages@gmx.net</a>.</quote> Rob van
Nieuwkerk said, <quote who="Rob van Nieuwkerk">Thanks a lot Andries for all
your great man-pages work!</quote></p>

</section>

<section
  title="Migration To New Argument-Passing Method For Some Assembly Interfaces"
  subject="RFC: avoid asmlinkage on x86 traps/interrupts"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=2We4I-7rZ-1%40gated-at.bofh.it"
  posts="5"
  startdate="02 Nov 2004 12:56:54 -0800"
  enddate="03 Nov 2004 19:40:27 -0800"
>
<topic>Assembly</topic>

<p>Linus Torvalds said:</p>

<quote who="Linus Torvalds">

<p>Here's the second part of a gradual change from using stack argument
passing to using register argument passing for a number of assembly
interfaces. As covered in previous discussions, this has the advantage of
having the caller/callee agree on the ownership of the arguments (well,
at least the three first ones), and thus gcc won't occasionally possibly
corrupt the stack frame that assembly code believes it owns.</p>

<p>It also removes a few instructions when we can pass arguments in registers
in most places. In other places it adds a "movl %esp,%eax", though, as some
cases used to just rely on knowing the saved stack layout and use that directly
as the arguments.. So it's not really a big win either way, and the real
motivation for this is to move away from the argument ownership questions.</p>

<p>No other architecture should care, since for most of them "asmlinkage"
vs "fastcall" is a no-op, and when that isn't true (like on ia64) as far as
I can tell all the actual call-sites in this patch were all in C code for
the routines that were changed. But architecture maintainers should probably
take a quick look to verify.</p>

</quote>

</section>

</kc>

