<?xml version="1.0" ?>

<kc>

<title>Kernel Traffic</title>

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

<issue num="249" date="27 Jan 2004 00:00:00 -0800" />

<intro>

<p>DVD CCA has <a
href="http://www.eff.org/IP/Video/DVDCCA_case/20040122_eff_pr.php">surrendered
in the Bunner case</a>, probably due in large part to the <a
href="http://www.eff.org/news/breaking/archives/2004_01.php#001162">Jon
Johansen decision</a>. As a result of this, the author of the <a
href="http://www-2.cs.cmu.edu/~dst/DeCSS/Gallery/decss-haiku.txt">DeCSS
Haiku</a> has decided to step forward and acknowledge his authorship. If he
had done so before now, he would almost certainly have become the target of
a terrible lawsuit.</p>

<p>The true author of the DeCSS Haiku is in reality <a
href="http://www.loyalty.org/~schoen/">Seth David Schoen</a>, the
Staff Technologist of the <a href="http://eff.org/">Electronic Frontier
Foundation</a>. Now that he's stepping out of the shadows, he's written a
<a href="http://www.loyalty.org/~schoen/haiku.html">really great article</a>
about what he did and why. Don't miss the easter egg!</p>

</intro>

<stats posts="1877" size="9836" contrib="581" multiples="288" lastweek="180">

<person posts="60" size="237" who="Andrew Morton" />
<person posts="43" size="146" who="Linus Torvalds" />
<person posts="32" size="186" who="Rusty Russell" />
<person posts="32" size="101" who="Mike Fedyk" />
<person posts="28" size="118" who="Jesper Juhl" />
<person posts="24" size="106" who="Davide Libenzi" />
<person posts="24" size="63" who="James Simmons" />
<person posts="23" size="87" who="Jens Axboe" />
<person posts="22" size="220" who="&quot;Martin J. Bligh&quot;" />
<person posts="22" size="107" who="martin f krafft" />
<person posts="21" size="278" who="Thomas Molina" />
<person posts="21" size="73" who="Greg KH" />
<person posts="20" size="71" who="(Valdis.Kletnieks)" />
<person posts="19" size="136" who="Dmitry Torokhov" />
<person posts="19" size="73" who=" (=?iso-8859-1?q?M=E5ns_Rullg=E5rd?=)" />
<person posts="18" size="101" who="Benjamin Herrenschmidt" />
<person posts="18" size="71" who="Bartlomiej Zolnierkiewicz" />
<person posts="18" size="61" who="Willy Tarreau" />
<person posts="17" size="70" who="Martin Schlemmer" />
<person posts="17" size="67" who="Adrian Bunk" />
<person posts="16" size="83" who="Christophe Saout" />
<person posts="16" size="64" who="Gene Heskett" />
<person posts="15" size="50" who="Tomas Szepe" />
<person posts="14" size="56" who="Soeren Sonnenburg" />
<person posts="14" size="52" who="Nick Piggin" />
<person posts="14" size="48" who="Paul Jackson" />
<person posts="14" size="48" who="Jeff Garzik" />
<person posts="13" size="147" who="Martin Knoblauch" />
<person posts="13" size="50" who="&quot;Marcos D. Marado Torres&quot;" />
<person posts="13" size="45" who="Marcelo Tosatti" />
<person posts="13" size="45" who="Vojtech Pavlik" />
<person posts="13" size="44" who="Dave Jones" />
<person posts="13" size="43" who="Bill Davidsen" />
<person posts="13" size="37" who="&quot;David S. Miller&quot;" />
<person posts="12" size="150" who=" (Eric W. Biederman)" />
<person posts="12" size="73" who="Paolo Ornati" />
<person posts="11" size="34" who="Hans Reiser" />
<person posts="10" size="76" who="James Morris" />
<person posts="10" size="49" who="Nigel Cunningham" />
<person posts="10" size="30" who="&quot;Randy.Dunlap&quot;" />
<person posts="10" size="29" who="Christoph Hellwig" />
<person posts="9" size="34" who="Russell King" />
<person posts="9" size="26" who="Andi Kleen" />
<person posts="9" size="24" who="Pavel Machek" />
<person posts="8" size="47" who="sena" />
<person posts="8" size="39" who="Srivatsa Vaddagiri" />
<person posts="8" size="32" who="&quot;Robert L. Harris&quot;" />
<person posts="8" size="28" who=" (bill davidsen)" />
<person posts="8" size="27" who="Roger Luethi" />
<person posts="8" size="25" who="James Bottomley" />
<person posts="7" size="44" who="Matthew Dobson" />
<person posts="7" size="38" who="Davin McCall" />
<person posts="7" size="37" who="Jean Tourrilhes" />
<person posts="7" size="29" who="Andre Hedrick" />
<person posts="7" size="25" who="Arjan van de Ven" />
<person posts="7" size="25" who="Matt Mackall" />
<person posts="7" size="24" who="(venom)" />
<person posts="7" size="22" who="&quot;J. Ryan Earl&quot;" />
<person posts="6" size="87" who="Arkadiusz Miskiewicz" />
<person posts="6" size="41" who="Samium Gromoff" />
<person posts="6" size="28" who="Jan Kasprzak" />
<person posts="6" size="27" who="Karol Kozimor" />
<person posts="6" size="25" who="Martin Josefsson" />
<person posts="6" size="24" who="&quot;Richard B. Johnson&quot;" />
<person posts="6" size="24" who="Andi Kleen" />
<person posts="6" size="24" who="Wakko Warner" />
<person posts="6" size="22" who="Amit Gurdasani" />
<person posts="6" size="22" who="Con Kolivas" />
<person posts="6" size="20" who="Chris Meadors" />
<person posts="6" size="19" who="DervishD" />
<person posts="6" size="18" who="Mikael Pettersson" />
<person posts="6" size="18" who="Andi Kleen" />
<person posts="5" size="120" who="Hans Ulrich Niedermann" />
<person posts="5" size="28" who="Dax Kelson" />
<person posts="5" size="27" who="Alex" />
<person posts="5" size="25" who="Erik Andersen" />
<person posts="5" size="23" who="Manfred Spraul" />
<person posts="5" size="22" who="(lk)" />
<person posts="5" size="22" who="Ram Pai" />
<person posts="5" size="20" who="Jesper Juhl" />
<person posts="5" size="20" who="Steve Youngs" />
<person posts="5" size="19" who="john stultz" />
<person posts="5" size="18" who="Oleg Drokin" />
<person posts="5" size="18" who="Claas Langbehn" />
<person posts="5" size="18" who="Tim Schmielau" />
<person posts="5" size="18" who="William Lee Irwin III" />
<person posts="5" size="17" who="Ivan Kokshaysky" />
<person posts="5" size="16" who="Stephan von Krawczynski" />
<person posts="5" size="15" who="Matthias Urlichs" />
<person posts="5" size="15" who="&quot;H. Peter Anvin&quot;" />
<person posts="5" size="15" who="Berkley Shands" />
<person posts="5" size="14" who="Alex Buell" />
<person posts="5" size="14" who="Rob Love" />
<person posts="5" size="13" who="Alan Stern" />
<person posts="5" size="13" who="Stephen Hemminger" />
<person posts="5" size="13" who="Lennert Buytenhek" />
<person posts="4" size="94" who="(dan)" />
<person posts="4" size="72" who="S Ait-Kassi" />
<person posts="4" size="42" who="Ralf Hildebrandt" />
<person posts="4" size="39" who="Willem Riede" />
<person posts="4" size="33" who="Libor Vanek" />
<person posts="4" size="26" who="Isaac Claymore" />
<person posts="4" size="25" who="=?iso-8859-2?Q?Karel_Kulhav=FD?=" />
<person posts="4" size="25" who="Hugang" />
<person posts="4" size="25" who="Adam Belay" />
<person posts="4" size="24" who="Jirka Kosina" />
<person posts="4" size="22" who="Dipankar Sarma" />
<person posts="4" size="15" who="&quot;Zhu, Yi&quot;" />
<person posts="4" size="14" who="&quot;Yu, Luming&quot;" />
<person posts="4" size="13" who="&quot;Thomas Graham&quot;" />
<person posts="4" size="13" who="Geert Uytterhoeven" />
<person posts="4" size="12" who="&quot;Gabor Z. Papp&quot;" />
<person posts="4" size="12" who="Maciej Zenczykowski" />
<person posts="4" size="12" who="Pete Zaitcev" />
<person posts="4" size="12" who="Markus =?ISO-8859-1?Q?H=E4stbacka?=" />
<person posts="4" size="11" who="Xavier Bestel" />
<person posts="4" size="10" who="Ville Herva" />
<person posts="3" size="56" who="Daniel Drake" />
<person posts="3" size="48" who="Erik Hensema" />
<person posts="3" size="46" who="Javier Marcet" />
<person posts="3" size="38" who="Tobias Diedrich" />
<person posts="3" size="34" who="=?iso-8859-1?q?Mr=20Amit=20Mehrotra?=" />
<person posts="3" size="33" who="Ed Sweetman" />
<person posts="3" size="32" who="Zwane Mwaikambo" />
<person posts="3" size="29" who="Gabor Burjan" />
<person posts="3" size="26" who="&quot;Eric C. Cooper&quot;" />
<person posts="3" size="22" who="Matthias Hentges" />
<person posts="3" size="21" who="Torrey Hoffman" />
<person posts="3" size="20" who="Robin Holt" />
<person posts="3" size="19" who="Gianni Mariani" />
<person posts="3" size="19" who="Ramon Rey Vicente" />
<person posts="3" size="17" who="Andrey Borzenkov" />
<person posts="3" size="15" who="Shivu V" />
<person posts="3" size="15" who="Rik van Riel" />
<person posts="3" size="14" who="&quot;Udo A. Steinberg&quot;" />
<person posts="3" size="14" who="John Lash" />
<person posts="3" size="13" who="&quot;Robert T. Johnson&quot;" />
<person posts="3" size="13" who="Jim Crilly" />
<person posts="3" size="13" who="Ian Pilcher" />
<person posts="3" size="13" who="=?iso-8859-1?q?szonyi=20calin?=" />
<person posts="3" size="13" who="Jan De Luyck" />
<person posts="3" size="13" who="=?ISO-8859-1?Q?Dani=EBl_Mantione?=" />
<person posts="3" size="12" who="Alessandro Suardi" />
<person posts="3" size="12" who="Tim Cambrant" />
<person posts="3" size="12" who="Joshua Schmidlkofer" />
<person posts="3" size="12" who="Jan-Benedict Glaw" />
<person posts="3" size="11" who="john moser" />
<person posts="3" size="11" who="David T Hollis" />
<person posts="3" size="11" who="Petr Baudis" />
<person posts="3" size="11" who="Martin F Krafft" />
<person posts="3" size="11" who="Dominik Strasser" />
<person posts="3" size="11" who="Dan Egli" />
<person posts="3" size="11" who="Jean Delvare" />
<person posts="3" size="11" who="&quot;J.A. Magallon&quot;" />
<person posts="3" size="10" who="Rob Couto" />
<person posts="3" size="10" who="Peng Yong" />
<person posts="3" size="10" who="Ingo Oeser" />
<person posts="3" size="10" who="Mike Anderson" />
<person posts="3" size="10" who="&quot;Justin T. Gibbs&quot;" />
<person posts="3" size="10" who="Paulo Marques" />
<person posts="3" size="10" who="Peter Chubb" />
<person posts="3" size="10" who="=?ISO-8859-1?Q?Mika_Penttil=E4?=" />
<person posts="3" size="10" who="Eric" />
<person posts="3" size="9" who="David Hinds" />
<person posts="3" size="9" who="Trond Myklebust" />
<person posts="3" size="9" who="Helge Hafting" />
<person posts="3" size="9" who="&quot;Christian Kivalo&quot;" />
<person posts="3" size="9" who="Alan Cox" />
<person posts="3" size="9" who="Takashi Iwai" />
<person posts="3" size="9" who="&quot;Prakash K. Cheemplavam&quot;" />
<person posts="3" size="8" who="Lorenzo Hernandez Garcia-Hierro" />
<person posts="3" size="7" who="Meelis Roos" />
<person posts="3" size="7" who="(viro)" />
<person posts="2" size="71" who="Philip Dodd" />
<person posts="2" size="61" who="Mario ''Jorge'' Di Nitto" />
<person posts="2" size="57" who="&quot;Herve Fache&quot;" />
<person posts="2" size="54" who="Gerardo Exequiel Pozzi" />
<person posts="2" size="50" who="Carlos Azevedo" />
<person posts="2" size="46" who="&quot;Nicolas Nilles&quot;" />
<person posts="2" size="45" who="Matthew Dharm" />
<person posts="2" size="44" who="Cristiano De Michele" />
<person posts="2" size="43" who="Florian Lohoff" />
<person posts="2" size="38" who="Matthias Andree" />
<person posts="2" size="34" who="Jochen Hein" />
<person posts="2" size="33" who="Grant Grundler" />
<person posts="2" size="32" who="Walter Unger" />
<person posts="2" size="32" who="John Goerzen" />
<person posts="2" size="28" who="CBke" />
<person posts="2" size="26" who="Manuel Estrada Sainz" />
<person posts="2" size="23" who="&quot;Nakajima, Jun&quot;" />
<person posts="2" size="20" who="&quot;Yury V. Umanets&quot;" />
<person posts="2" size="17" who="&quot;Feldman, Scott&quot;" />
<person posts="2" size="16" who="Hirokazu Takahashi" />
<person posts="2" size="14" who="auntvini" />
<person posts="2" size="14" who="Ingo Molnar" />
<person posts="2" size="13" who="=?ISO-8859-15?Q?Mika_Penttil=E4?=" />
<person posts="2" size="13" who="Wojciech 'Sas' Cieciwa" />
<person posts="2" size="13" who="Stian Jordet" />
<person posts="2" size="12" who="Joe Korty" />
<person posts="2" size="12" who="Maneesh Soni" />
<person posts="2" size="11" who="Xose Vazquez Perez" />
<person posts="2" size="10" who="Peter Osterlund" />
<person posts="2" size="9" who="Andrzej Krzysztofowicz" />
<person posts="2" size="9" who="Jon Burgess" />
<person posts="2" size="9" who="Elliott Bennett" />
<person posts="2" size="9" who="Sergio Vergata" />
<person posts="2" size="9" who="&quot;Heilmann, Oliver&quot;" />
<person posts="2" size="9" who="Ryan Underwood" />
<person posts="2" size="8" who="Jon Westgate" />
<person posts="2" size="8" who="Pavel Machek" />
<person posts="2" size="8" who="Michal Schmidt" />
<person posts="2" size="8" who="Wim Van Sebroeck" />
<person posts="2" size="8" who="bert hubert" />
<person posts="2" size="8" who="Mickael Marchand" />
<person posts="2" size="8" who="&quot;Nguyen, Tom L&quot;" />
<person posts="2" size="8" who="Martin Loschwitz" />
<person posts="2" size="8" who="Peter Lieverdink" />
<person posts="2" size="8" who="Giuliani Ivan" />
<person posts="2" size="8" who="&quot;Andrew Vasquez&quot;" />
<person posts="2" size="8" who="Marcus Hartig" />
<person posts="2" size="7" who="Ivanovich" />
<person posts="2" size="7" who="Catalin BOIE" />
<person posts="2" size="7" who="Andrea Barisani" />
<person posts="2" size="7" who="Ben Greear" />
<person posts="2" size="7" who="Andrey Panin" />
<person posts="2" size="7" who="Roland Kwee" />
<person posts="2" size="7" who="Tom Rini" />
<person posts="2" size="7" who=" (Joshua Kwan)" />
<person posts="2" size="7" who="Matthew Wilcox" />
<person posts="2" size="7" who="Rusty Russell" />
<person posts="2" size="7" who="Guennadi Liakhovetski" />
<person posts="2" size="7" who=" (Martin Maney)" />
<person posts="2" size="7" who="Eyal Lebedinsky" />
<person posts="2" size="7" who="&quot;Norman Diamond&quot;" />
<person posts="2" size="7" who="Jamie Lokier" />
<person posts="2" size="7" who="Andrei Mikhailovsky" />
<person posts="2" size="6" who="Ciaran McCreesh" />
<person posts="2" size="6" who="Brian Macy" />
<person posts="2" size="6" who="&quot;David B. Stevens&quot;" />
<person posts="2" size="6" who="Aaron Burt" />
<person posts="2" size="6" who="Mads Christensen" />
<person posts="2" size="6" who="Thorsten Kranzkowski" />
<person posts="2" size="6" who="Milan Jurik" />
<person posts="2" size="6" who="(trond.myklebust)" />
<person posts="2" size="6" who="Pacheco Jason NPRI" />
<person posts="2" size="6" who="Marek Habersack" />
<person posts="2" size="6" who="Thomas Fischbach" />
<person posts="2" size="6" who="&quot;Kevin P. Fleming&quot;" />
<person posts="2" size="6" who="Jonathan Lundell" />
<person posts="2" size="6" who="Jean-Marc Valin" />
<person posts="2" size="6" who=" (Arthur Othieno)" />
<person posts="2" size="6" who="Ed Tomlinson" />
<person posts="2" size="6" who="(lkml)" />
<person posts="2" size="6" who="neel vanan" />
<person posts="2" size="6" who="Stef van der Made" />
<person posts="2" size="6" who="Andy Isaacson" />
<person posts="2" size="6" who="Muli Ben-Yehuda" />
<person posts="2" size="6" who="John Reiser" />
<person posts="2" size="6" who="Maarten de Boer" />
<person posts="2" size="6" who="Andreas Schwab" />
<person posts="2" size="6" who="Pekka Pietikainen" />
<person posts="2" size="6" who="Justin Pryzby" />
<person posts="2" size="6" who="Luca Risolia" />
<person posts="2" size="6" who="Michel =?ISO-8859-1?Q?D=E4nzer?=" />
<person posts="2" size="6" who="Andries Brouwer" />
<person posts="2" size="6" who="Lukasz Trabinski" />
<person posts="2" size="6" who="Richard Henderson" />
<person posts="2" size="6" who="Roland Dreier" />
<person posts="2" size="5" who="Petri Koistinen" />
<person posts="2" size="5" who="Sam Ravnborg" />
<person posts="2" size="5" who="Jakob Oestergaard" />
<person posts="2" size="5" who="Duncan Sands" />
<person posts="2" size="5" who="&quot;Amit S. Kale&quot;" />
<person posts="2" size="5" who="Bryan Whitehead" />
<person posts="2" size="5" who="Andrew Walrond" />
<person posts="2" size="5" who="Albert Cahalan" />
<person posts="2" size="5" who="Christian Borntraeger" />
<person posts="2" size="5" who="Roman Zippel" />
<person posts="2" size="5" who="YAMAMOTO Takashi" />
<person posts="2" size="5" who="&quot;Guldo K&quot;" />
<person posts="2" size="5" who="Krzysztof Halasa" />
<person posts="2" size="5" who="Marcelo Bezerra" />
<person posts="2" size="5" who="Matt Domsch" />
<person posts="2" size="4" who="Armin" />
<person posts="2" size="4" who="Joe Perches" />
<person posts="2" size="4" who="Flameeyes" />
<person posts="2" size="4" who="&quot;Josh Berry&quot;" />
<person posts="2" size="4" who="Pascal Schmidt" />
<person posts="1" size="66" who="&quot;Stephen D. Williams&quot;" />
<person posts="1" size="46" who="&quot;Peter Meier&quot;" />
<person posts="1" size="44" who="Birger =?ISO-8859-1?Q?T=F6dtmann?=" />
<person posts="1" size="41" who="(caszonyi)" />
<person posts="1" size="40" who="Philipp Matthias Hahn" />
<person posts="1" size="39" who="Eric Moore" />
<person posts="1" size="38" who="IWAMOTO Toshihiro" />
<person posts="1" size="35" who="Darrell Wright" />
<person posts="1" size="31" who="Jan-Christian Treusch" />
<person posts="1" size="31" who="Gabor MICSKO" />
<person posts="1" size="30" who="Eddahbi Karim" />
<person posts="1" size="28" who="Bryan Andersen" />
<person posts="1" size="23" who="Bart Samwel" />
<person posts="1" size="23" who="Jan Kokoska" />
<person posts="1" size="21" who="&quot;bath66&quot;" />
<person posts="1" size="18" who="Oliver Feiler" />
<person posts="1" size="17" who="Steve Kenton" />
<person posts="1" size="16" who="Rudo Thomas" />
<person posts="1" size="15" who="&quot;Durairaj, Sundarapandian&quot;" />
<person posts="1" size="14" who="Daniel Brahneborg" />
<person posts="1" size="14" who="Caz Yokoyama" />
<person posts="1" size="14" who="Miquel van Smoorenburg" />
<person posts="1" size="13" who="Jurriaan" />
<person posts="1" size="13" who="&quot;Cress, Andrew R&quot;" />
<person posts="1" size="12" who="Juan Antonio Martinez" />
<person posts="1" size="10" who="Theodore Ts'o" />
<person posts="1" size="10" who="Andreas Henriksson" />
<person posts="1" size="9" who="Ludovic Drolez" />
<person posts="1" size="9" who="Bruce Allen" />
<person posts="1" size="9" who="Jan Evert van Grootheest" />
<person posts="1" size="9" who="Jakub Bogusz" />
<person posts="1" size="9" who="Mathieu Segaud" />
<person posts="1" size="8" who="Norberto Bensa" />
<person posts="1" size="8" who="Nathan Scott" />
<person posts="1" size="8" who="John Cherry" />
<person posts="1" size="8" who="Jurriaan on adsl-gate" />
<person posts="1" size="8" who="Ryan Dooley" />
<person posts="1" size="8" who="Kevin Corry" />
<person posts="1" size="8" who="Neo Wee Teck" />
<person posts="1" size="7" who="Jason Papadopoulos" />
<person posts="1" size="7" who="&quot;Larry W. Finger&quot;" />
<person posts="1" size="7" who="Vladimir Kondratiev" />
<person posts="1" size="7" who="(delacko)" />
<person posts="1" size="7" who="(m.andreolini)" />
<person posts="1" size="6" who="Bauke Jan Douma" />
<person posts="1" size="6" who="James Bourne" />
<person posts="1" size="6" who="Deian Chepishev" />
<person posts="1" size="6" who="Patrick Cole" />
<person posts="1" size="6" who="Axel Siebenwirth" />
<person posts="1" size="6" who="Attila BODY" />
<person posts="1" size="5" who="Maetee Maitri" />
<person posts="1" size="5" who="X-Stranger" />
<person posts="1" size="5" who="Hugo Mills" />
<person posts="1" size="5" who="Lawrence MacIntyre" />
<person posts="1" size="5" who="YOSHIFUJI Hideaki / =?iso-2022-jp?B?GyRCNUhGIzFRTEAbKEI=?=" />
<person posts="1" size="5" who="Robert Williamson" />
<person posts="1" size="5" who="&quot;Michael C. Ferguson&quot;" />
<person posts="1" size="5" who="(josh-lkernel)" />
<person posts="1" size="5" who="Colin Ngam" />
<person posts="1" size="5" who="Jakub Jelinek" />
<person posts="1" size="5" who="Andreas Gruenbacher" />
<person posts="1" size="4" who="Greg Stark" />
<person posts="1" size="4" who="Valentijn Sessink" />
<person posts="1" size="4" who="Jesper Juhl" />
<person posts="1" size="4" who="Delian Krustev" />
<person posts="1" size="4" who="Jonathan McDowell" />
<person posts="1" size="4" who="Dave Kleikamp" />
<person posts="1" size="4" who="Bryan Andersen" />
<person posts="1" size="4" who="Stephen Smalley" />
<person posts="1" size="4" who="Stan Bubrouski" />
<person posts="1" size="4" who="Tim Connors" />
<person posts="1" size="4" who=" (Joseph Fannin)" />
<person posts="1" size="4" who="Yuji Sekiya" />
<person posts="1" size="4" who="Michael Schierl" />
<person posts="1" size="4" who="Patrick Mansfield" />
<person posts="1" size="4" who="Andreas Unterkircher" />
<person posts="1" size="4" who="&quot;Mukker, Atul&quot;" />
<person posts="1" size="4" who="badari" />
<person posts="1" size="4" who="Zinx Verituse" />
<person posts="1" size="4" who="Badari Pulavarty" />
<person posts="1" size="4" who="Reza Roboubi" />
<person posts="1" size="4" who="Javier Fernandez-Ivern" />
<person posts="1" size="4" who="(yoros)" />
<person posts="1" size="4" who="=?iso-8859-15?B?Suly9G1lIEF1Z+k=?=" />
<person posts="1" size="4" who="Michael Buesch" />
<person posts="1" size="4" who="Petr Vandrovec" />
<person posts="1" size="4" who="Bob" />
<person posts="1" size="4" who="Max Valdez" />
<person posts="1" size="4" who="Sally Wang" />
<person posts="1" size="4" who="sven kissner" />
<person posts="1" size="4" who="Anders Westrup" />
<person posts="1" size="4" who="Romain Lievin" />
<person posts="1" size="4" who="Josh Grebe" />
<person posts="1" size="4" who="andreamrl" />
<person posts="1" size="4" who="(j.beyer)" />
<person posts="1" size="4" who="Darren Williams" />
<person posts="1" size="4" who="Paolo Dovera" />
<person posts="1" size="3" who="&quot;Nathaniel W. Filardo&quot;" />
<person posts="1" size="3" who="Bongani Hlope" />
<person posts="1" size="3" who="Anand Suvernkar" />
<person posts="1" size="3" who="Eric Anholt" />
<person posts="1" size="3" who=" (Dr. Greg Wettstein)" />
<person posts="1" size="3" who="David Lang" />
<person posts="1" size="3" who="Markus Kossmann" />
<person posts="1" size="3" who="(stefan.eletzhofer)" />
<person posts="1" size="3" who="Nathan Poznick" />
<person posts="1" size="3" who="noreaga" />
<person posts="1" size="3" who="Andres Salomon" />
<person posts="1" size="3" who="Kronos" />
<person posts="1" size="3" who="Wes Janzen" />
<person posts="1" size="3" who="Bernardo Innocenti" />
<person posts="1" size="3" who="&quot;Zhenghui Zhou&quot;" />
<person posts="1" size="3" who="Kevin Boergens" />
<person posts="1" size="3" who="Arnaldo Carvalho de Melo" />
<person posts="1" size="3" who="Bart Oldeman" />
<person posts="1" size="3" who="(nonprofitorg)" />
<person posts="1" size="3" who="Brad Tilley" />
<person posts="1" size="3" who="&quot;KD&quot;" />
<person posts="1" size="3" who="Alexander Hoogerhuis" />
<person posts="1" size="3" who="(davidjoerg)" />
<person posts="1" size="3" who="&quot;Pablo E. Limon Garcia Viesca&quot;" />
<person posts="1" size="3" who="Kurt Garloff" />
<person posts="1" size="3" who="Rob" />
<person posts="1" size="3" who="Andreas Theofilu" />
<person posts="1" size="3" who="Kai Vehmanen" />
<person posts="1" size="3" who="Benjamin Henne" />
<person posts="1" size="3" who="Ross Burton" />
<person posts="1" size="3" who="Damian Kolkowski" />
<person posts="1" size="3" who="Jonathan Higdon" />
<person posts="1" size="3" who="Elladan" />
<person posts="1" size="3" who="JG" />
<person posts="1" size="3" who="jw schultz" />
<person posts="1" size="3" who="Randy Appleton" />
<person posts="1" size="3" who="Gabriel Paubert" />
<person posts="1" size="3" who=" (Nick Holloway)" />
<person posts="1" size="3" who="Harald Welte" />
<person posts="1" size="3" who="Eric Sandeen" />
<person posts="1" size="3" who="Edgar Toernig" />
<person posts="1" size="3" who="&quot;Kevin Krieser&quot;" />
<person posts="1" size="3" who="Mihai RUSU" />
<person posts="1" size="3" who="Bart De Schuymer" />
<person posts="1" size="3" who="&quot;Carlos Fernandez Sanz&quot;" />
<person posts="1" size="3" who="&quot;Andreas Unterkircher&quot;" />
<person posts="1" size="3" who="Chris Smith" />
<person posts="1" size="3" who="Jos Hulzink" />
<person posts="1" size="3" who="Joel Jaeggli" />
<person posts="1" size="3" who="&quot;T'aZ&quot;" />
<person posts="1" size="3" who="Roberto Sanchez" />
<person posts="1" size="3" who="Jonathan Lundell" />
<person posts="1" size="3" who="&quot;Thomas Seifert&quot;" />
<person posts="1" size="3" who="OGAWA Hirofumi" />
<person posts="1" size="3" who="Chuck Berg" />
<person posts="1" size="3" who="Ion Badulescu" />
<person posts="1" size="3" who="Gerd Knorr" />
<person posts="1" size="3" who="Kitt Tientanopajai" />
<person posts="1" size="3" who="&quot;Perez-Gonzalez, Inaky&quot;" />
<person posts="1" size="3" who="James Cort" />
<person posts="1" size="3" who="Jan Kara" />
<person posts="1" size="3" who="Stewart Smith" />
<person posts="1" size="3" who="Robin Rosenberg" />
<person posts="1" size="3" who="David Mosberger-Tang" />
<person posts="1" size="3" who="Justin Cormack" />
<person posts="1" size="3" who="Kresimir Sparavec" />
<person posts="1" size="3" who="Akinobu Mita" />
<person posts="1" size="3" who="Kenneth Johansson" />
<person posts="1" size="3" who="(u1_amd64)" />
<person posts="1" size="3" who="(online)" />
<person posts="1" size="3" who="David Ford" />
<person posts="1" size="3" who="Peter Zijlstra" />
<person posts="1" size="3" who="Chris Siebenmann" />
<person posts="1" size="3" who="Pat Erley" />
<person posts="1" size="3" who="Steffen Beyer" />
<person posts="1" size="3" who="Eric Hustvedt" />
<person posts="1" size="3" who="Jose Luis Domingo Lopez" />
<person posts="1" size="3" who="Ramon Rey Vicente" />
<person posts="1" size="3" who="Jamie Heilman" />
<person posts="1" size="3" who="Paul Misner" />
<person posts="1" size="3" who="Steffen Weber" />
<person posts="1" size="3" who=" (=?iso-8859-1?q?Ga=EBl_Le_Mignot?=)" />
<person posts="1" size="3" who="=?ISO-8859-1?Q?Rapha=EBl_RIGO?=" />
<person posts="1" size="3" who="Zsolt KOZAK" />
<person posts="1" size="3" who="Eric Whiting" />
<person posts="1" size="3" who="Martin Hicks" />
<person posts="1" size="3" who=" (Jesse Barnes)" />
<person posts="1" size="3" who="=?iso-8859-2?q?Pawe=B3_Goleniowski?=" />
<person posts="1" size="3" who="newbiz" />
<person posts="1" size="3" who="Jean-Luc Fontaine" />
<person posts="1" size="3" who="mikeg" />
<person posts="1" size="3" who="&quot;Silk Thadeum&quot;" />
<person posts="1" size="3" who=" (A Mennucc1)" />
<person posts="1" size="2" who="mjt" />
<person posts="1" size="2" who="Zlatko Calusic" />
<person posts="1" size="2" who="Eugene Teo" />
<person posts="1" size="2" who="Bryan Rittmeyer" />
<person posts="1" size="2" who="Neal Stephenson" />
<person posts="1" size="2" who="Lieven Marchand" />
<person posts="1" size="2" who="Stephen Rothwell" />
<person posts="1" size="2" who="Ernst Herzberg" />
<person posts="1" size="2" who="(linux)" />
<person posts="1" size="2" who="(Andries.Brouwer)" />
<person posts="1" size="2" who="LKML" />
<person posts="1" size="2" who="Peter Daum" />
<person posts="1" size="2" who="Florian Weimer" />
<person posts="1" size="2" who="Raj" />
<person posts="1" size="2" who="David Alan Blomberg" />
<person posts="1" size="2" who="&quot;Dr. David Alan Gilbert&quot;" />
<person posts="1" size="2" who="David Lloyd" />
<person posts="1" size="2" who="&quot;jnf&quot;" />
<person posts="1" size="2" who="Andreas Theofilu" />
<person posts="1" size="2" who="Job" />
<person posts="1" size="2" who="David Blackman" />
<person posts="1" size="2" who="Samuel Flory" />
<person posts="1" size="2" who="Lincoln Dale" />
<person posts="1" size="2" who="Lukasz Trabinski" />
<person posts="1" size="2" who="Daniel Robbins" />
<person posts="1" size="2" who="Willy TARREAU" />
<person posts="1" size="2" who="Andrew Morgan" />
<person posts="1" size="2" who="Geek Assault" />
<person posts="1" size="2" who="Herbert Poetzl" />
<person posts="1" size="2" who="Lukas Postupa" />
<person posts="1" size="2" who="&quot;Moore, Eric Dean&quot;" />
<person posts="1" size="2" who="Frank v Waveren" />
<person posts="1" size="2" who="nickey" />
<person posts="1" size="2" who="Bastiaan Spandaw" />
<person posts="1" size="2" who="&quot;Nicklas Bondesson&quot;" />
<person posts="1" size="2" who="Pawel Kot" />
<person posts="1" size="2" who="Biplab Sarkar" />
<person posts="1" size="2" who="kernel sunder" />
<person posts="1" size="2" who="Andreas Jellinghaus" />
<person posts="1" size="2" who="Anton Blanchard" />
<person posts="1" size="2" who="&quot;Marcel Henselin&quot;" />
<person posts="1" size="2" who="Niels Ippensen" />
<person posts="1" size="2" who="Christoph Pleger" />
<person posts="1" size="2" who="Jon Smirl" />
<person posts="1" size="2" who="Joilnen Leite" />
<person posts="1" size="2" who="Rohan" />
<person posts="1" size="2" who="GCS" />
<person posts="1" size="2" who="Brice Goglin" />
<person posts="1" size="2" who="Robert =?ISO-8859-1?Q?F=FChricht?=" />
<person posts="1" size="2" who="Matthias Dilger" />
<person posts="1" size="2" who="Jaroslav Kysela" />
<person posts="1" size="2" who="wwp" />
<person posts="1" size="2" who="sundarapandian durairaj" />
<person posts="1" size="2" who=" (Detlef Grittner)" />
<person posts="1" size="2" who="Sven-Haegar Koch" />
<person posts="1" size="2" who="Aaron Lehmann" />
<person posts="1" size="2" who="Desmecht Laurent" />
<person posts="1" size="2" who="David =?iso-8859-15?Q?G=F3mez?=" />
<person posts="1" size="2" who="Murilo Pontes" />
<person posts="1" size="2" who=" (Miklos Szeredi)" />
<person posts="1" size="2" who="Xan" />
<person posts="1" size="2" who="Raphael Rigo" />
<person posts="1" size="2" who="Klaus Ripke" />
<person posts="1" size="2" who="Patrick Steiner" />
<person posts="1" size="2" who="Srihari Vijayaraghavan" />
<person posts="1" size="2" who="Diego Calleja" />
<person posts="1" size="2" who="Dan Brow" />
<person posts="1" size="2" who="&quot;Maciej Soltysiak&quot;" />
<person posts="1" size="2" who="Mario Vanoni" />
<person posts="1" size="2" who="Konstantin Kudin" />
<person posts="1" size="2" who="Andreas Steinmetz" />
<person posts="1" size="2" who="Witukind" />
<person posts="1" size="2" who="Bob Gill" />
<person posts="1" size="2" who="John Bradford" />
<person posts="1" size="2" who="Antti Jaakkola" />
<person posts="1" size="2" who="Troels Walsted Hansen" />
<person posts="1" size="2" who="Alwin Meschede" />
<person posts="1" size="2" who="Prasanna Meda" />
<person posts="1" size="2" who="Ricky Beam" />
<person posts="1" size="2" who=" (eternalblue)" />
<person posts="1" size="2" who="Frederik Deweerdt" />
<person posts="1" size="2" who="&quot;Sumit Narayan&quot;" />
<person posts="1" size="2" who="Matti Aarnio" />
<person posts="1" size="2" who="=?ISO-8859-1?Q?Fr=E9d=E9ric_L=2E_W=2E_Meunier?=" />
<person posts="1" size="2" who="Nathaniel M Nelson" />
<person posts="1" size="2" who="Moritz Moeller-Herrmann" />
<person posts="1" size="2" who="Robert Love" />
<person posts="1" size="2" who="Wichert Akkerman" />
<person posts="1" size="2" who="Steve Glines" />
<person posts="1" size="2" who="(tomwallard)" />
<person posts="1" size="2" who="John Gardiner Myers" />
<person posts="1" size="2" who="=?iso-8859-1?Q?S=E9bastien_BOURGASSER?=" />
<person posts="1" size="2" who="DaMouse Networks" />
<person posts="1" size="2" who="Daniel Gerstner" />
<person posts="1" size="2" who="Ed Weinberg" />
<person posts="1" size="2" who="Erik Mouw" />
<person posts="1" size="2" who="Roy Sigurd Karlsbakk" />
<person posts="1" size="2" who="&quot;Stanley Hines&quot;" />
<person posts="1" size="2" who="Dick Burke" />
<person posts="1" size="2" who="Tovar" />
<person posts="1" size="1" who="&quot;tt&quot;" />
<person posts="1" size="1" who="&quot;tt&quot;" />

</stats>

<section
  title="ide-scsi Maintainership And Status; The Saga Continues"
  subject="The survival of ide-scsi in 2.6.x"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=174Jh-3A7-25%40gated-at.bofh.it"
  posts="17"
  startdate="26 Dec 2003 10:12:42 -0800"
  enddate="07 Jan 2004 14:22:20 -0800"
>
<topic>Disks: IDE</topic>
<topic>Disks: SCSI</topic>
<topic>USB</topic>

<mention>Jens Axboe</mention>
<mention>Wakko Warner</mention>
<mention>Stephen Tweedie</mention>
<mention>Linus Torvalds</mention>

<p>Back in November, Linus Torvalds had some pretty harsh words to say about
ide-scsi, covered in <kcref subject="2.9test9-mm1 and DAO ATAPI cd-burning
corrupt" startdate="03 Nov 2003 10:22:23 -0800"/>.</p>

<p>This week, Willem Riede said:</p>

<quote who="Willem Riede">

<p>I know that many feel that ide-scsi is useless, and should go away.
And you are probably tired of message threads talking about it.
Yet I ask respectfully that you hear me out, and give me feedback.</p>

<p>I need ide-scsi to survive. Why? I maintain osst, a driver for
OnStream tape drives, which need special handling. These drives
exist in SCSI, ATAPI, USB and IEEE1394 versions.</p>

<p>One high-level driver, osst, handles all of them, and that's how
it should be, right? For ATAPI, it relies on ide-scsi.</p>

<p>(By the way, ide-tape contains code for the ATAPI version, the
DI-30, but that code is old and has serveral known problems -
I'd like to see it removed - or at least deprecated - I will do
that myself later if people want me to.)</p>

<p>So can we agree to keep ide-scsi? I know it is not desired any
more for cd writers. To avoid the problem reports from people who
don't realize that and select ide-scsi anyway, we can refuse to
attach to a cd-type device (today it just warns). And/or make a
new explicit module parameter to tell ide-scsi exactly which
drives to attach to.</p>

<p>Today, ide-scsi is buggy, and that needs fixing. The underlying
problem is that ide-scsi stands with one leg in the IDE world and
one leg in the SCSI world, which creates the challenge to make
the IDE error recovery work in sync with, and under the direction of
the SCSI error handler.</p>

<p>Example bug reports are [1], [2], [3], [4], [5], and [6].</p>

<p>A recurring problem is scheduling while atomic, see [1], [5], [7].
Linus points bluntly to the problem in [7]. I plead guilty to
having introduced that code segment in [8]. I later attempted to
improve on the error handling in [9], but that patch was not
accepted (and wouldn't have fixed that particular problem).</p>

<p>[6] is different, and has me baffled - what can evoke a page fault
in idescsi_transfer_pc?</p>

<p>In the spirit of cleaning up one's own mess, I am working on a new
patch, to hopefully alleviate the problems. I've made liberal use
of the attachments to the osdl bug reports [1]-[4] created by
Mike Christie and a patch from Philip Auld [10], to give credit
where it is due. I've also looked at ide-cd to see what it does
differently.</p>

<p>Please look at the attachment (looking past the touch-ups that I
made while I was at it...). Am I moving in the right direction?
Specific changes I need advise on:</p>

<p>

<ol>

<li>timer expiry<br />
   attachments to [1]-[4] and [10] suggest using it. Is it useful to
   buy some more time? I don't see the point to wait longer.
   By returning 0, I let ide_timer_expiry do its thing to handle lost
   (dma) interrupts. By seeting the PC_TIMEDOUT flag, I tell our
   end_request function to return DID_TIME_OUT to the scsi system.</li>

<li>ide (atapi) abort/error<br />
   By providing ide-scsi's own error/abort functions, I defer all
   errror handling to the scsi error handlers. I have nagging doubts
   about totally removing ide_do_reset() calls from them though :-(</li>

<li>scsi (eh) abort/error<br />
   These take much inspiration from Mike Christie's work on [1]-[4]
   The eh_abort gets called first, and takes an opportunistic approach
   (if the problem resolves itslf, great). The eh_error pulls the
   carpet from under the request, and does the ide_do_reset().
   I hope I've not introduced any new locking/scheduling issues :-)</li>

</ol>

</p>

<p>I've tested the patched ide-scsi with 2.6.0 - and it works fine.
Too good actually, meaning the new error routines have not been
adequately exercised. Any hints as to how to simulate errors at
the ide subsystem level? Something like Stephen Tweedie's testdrive
[11] perhaps (if applicable to char device), but for 2.6?</p>

<p>Linus states in [7] that ide-scsi needs a maintainer. I haven't seen
anyone step forward, so that leads me to believe I may be the only
person that depends enough on ide-scsi to be motivated?</p>

<p>If people will have me, I am prepared to take on that responsibility.
I am just concerned that I may not have enough of a variety of devices
to be able to thoroughly test it (unless the DI-30 is the only one :-)).
What do people see as the requirements to be able to maintain ide-scsi?</p>

<p>OK, let me have it... Thanks, Willem Riede.</p>

<p>References:<br />
[1] <a href="http://bugme.osdl.org/show_bug.cgi?id=393">http://bugme.osdl.org/show_bug.cgi?id=393</a><br />
[2] <a href="http://bugme.osdl.org/show_bug.cgi?id=829">http://bugme.osdl.org/show_bug.cgi?id=829</a><br />
[3] <a href="http://bugme.osdl.org/show_bug.cgi?id=1335">http://bugme.osdl.org/show_bug.cgi?id=1335</a><br />
[4] <a href="http://bugme.osdl.org/show_bug.cgi?id=1381">http://bugme.osdl.org/show_bug.cgi?id=1381</a><br />
[5] <a href="http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=107103475609592&amp;w=2">http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=107103475609592&amp;w=2</a><br />
[6] <a href="http://marc.theaimsgroup.com/?l=linux-scsi&amp;m=105334942001271&amp;w=2">http://marc.theaimsgroup.com/?l=linux-scsi&amp;m=105334942001271&amp;w=2</a><br />
[7] <a href="http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=107150176124047&amp;w=2">http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=107150176124047&amp;w=2</a><br />
[8] <a href="http://marc.theaimsgroup.com/?l=linux-scsi&amp;m=104051080518591&amp;w=2">http://marc.theaimsgroup.com/?l=linux-scsi&amp;m=104051080518591&amp;w=2</a><br />
[9] <a href="http://marc.theaimsgroup.com/?l=linux-scsi&amp;m=104361480527780&amp;w=2">http://marc.theaimsgroup.com/?l=linux-scsi&amp;m=104361480527780&amp;w=2</a><br />
[10] <a href="http://marc.theaimsgroup.com/?l=linux-scsi&amp;m=107115248030218&amp;w=2">http://marc.theaimsgroup.com/?l=linux-scsi&amp;m=107115248030218&amp;w=2</a><br />
[11] <a href="http://people.redhat.com/sct/patches/testdrive/">http://people.redhat.com/sct/patches/testdrive/</a></p>

</quote>

<p>Wakko Warner suggested, half-seriously, just getting rid of both the IDE
and the SCSI layers entirely, and replacing them with a generic layer that
both could share. Short of that, he felt the IDE layer at least had always
been ugly, and could be replaced by an IDE-to-SCSI converter, so all IDE
devices would appear to be SCSI to the system.</p>

<p>Pete Zaitcev also replied to Willem, saying, <quote who="Pete Zaitcev">Based
on my expirience with ide-tape, I would rather have it killed instead. One
neat trick to appease enemies of ide-scsi might be to rename it into ide-scsi
into ide-tape-bis.  Might even add DSC bit handling... But the ide-tape is
too ugly to live for sure.</quote> Willem agreed in principal, but asked,
<quote who="Willem Riede">are there any IDE tape drives currently supported
by ide-tape, that are not compatble with ide-scsi plus st?</quote> Mikael
Pettersson offered, <quote who="Mikael Pettersson">My Seagate STT8000A works
better with ide-scsi+st than with ide-tape.  As long as a working ide-scsi
is around, I couldn't care less about the ide-tape abomination.</quote>
At this point, Bartlomiej Zolnierkiewicz said, <quote who="Bartlomiej
Zolnierkiewicz">Both ide-tape and ide-scsi are to stay in 2.6.x and die
in 2.7.x.</quote></p>

<p>Elsewhere, James Bottomley also replied to Willem's initial post, saying
that since no one else was interested, Willem was certainly welcome to start
sending in patches; and James would look at them. He added, <quote who="James
Bottomley">In the long term, I think libata will end up assuming much of
the role that ide-scsi does now, but since it doesn't interface to a lot
of existing motherboard chipsets, we're going to need ide-scsi around for
a while at least.</quote> Willem thanked him, adding that Linus had asked
Jens Axboe to look over Willem's original patch; and Jens said he hadn't
gotten to it yet, but would look it over soon.</p>

<p>Elsewhere, Bill Davidsen also thought it would be fine for Willem to do
what he could with ide-scsi. Bill said, <quote who="Bill Davidsen">here we
have someone who has the need, the ambition, and the time to do this. Users
of tape and MO still have need for ide-scsi, and would be happy to help test
at least.</quote></p>

</section>

<section
  title="New kthread Threading Functions"
  subject="[PATCH 1/2] kthread_create"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=1bg96-mX-7%40gated-at.bofh.it&amp;prev=/groups%3Fas_ugroup%3Dlinux.kernel%26as_uauthors%3DRusty%2520Russell%26as_usubject%3D%255BPATCH%25201/2%255D%2520kthread_create%26as_drbb%3Db%26as_mind%3D30%26as_minm%3DDec%26as_miny%3D2003%26as_maxd%3D30%26as_maxm%3DDec%26as_maxy%3D2003"
  posts="37"
  startdate="30 Dec 2003 19:31:08 -0800"
  enddate="07 Jan 2004 16:33:43 -0800"
>
<topic>Hot-Plugging</topic>

<mention>Andrew Morton</mention>

<p>Rusty Russell posted a patch, saying:</p>

<quote who="Rusty Russell">

<p>The hotplug CPU code introduces two major problems:</p>

<p>

<ol>

<li>Threads which previously never stopped (migration thread,
   ksoftirqd, keventd) have to be stopped cleanly as CPUs go offline.</li>

<li>Threads which previously never had to be created now have
   to be created when a CPU goes online.</li>

</ol>

</p>

<p>Unfortunately, stopping a thread is fairly baroque, involving memory
barriers, a completion and spinning until the task is actually dead.</p>

<p>There are also three problems in starting a thread:</p>

<p>

<ol>

<li>Doing it from a random process context risks environment contamination:
   better to do it from keventd to guarantee a clean environment, a-la
   call_usermodehelper.</li>

<li>Getting the task struct without races is a hard: see kernel/sched.c
   migration_call(), kernel/workqueue.c create_workqueue_thread().</li>

<li>There are races in starting a thread for a CPU which is not yet
   online: migration thread does a complex dance at the moment for
   a similar reason (there may be no migration thread to migrate us).</li>

</ol>

</p>

<p>Place all this logic in some primitives to make life easier:
kthread_create(), kthread_start() and kthread_destroy().  These
primitives require no extra data-structures in the caller: they operate
on normal "struct task_struct"s.</p>

<p>Other changes:</p>

<p>

<ul>

<li>Expose keventd_up(), as keventd and migration threads will use
    kthread to launch, and kthread normally uses workqueues and must
    recognize this case.</li>

</ul>

</p>

</quote>

<p>Andrew Morton suggested putting all the hotplugging patches in one location
for easy review, and Rusty said, <quote who="Rusty Russell">I've had this
on kernel.org for a few years now.  It's even at the top of the page: <a
href="http://www.kernel.org/pub/linux/kernel/people/rusty">http://www.kernel.org/pub/linux/kernel/people/rusty</a></quote></p>

<p>Elsewhere, Jeff Garzik really liked Rusty's work, and said:</p>

<quote who="Jeff Garzik">

<p>there are two mechanisms I (and some
others) felt were missing from the equally nifty workqueue stuff:</p>

<p>

<ol>

<li>one-shot threads</li>

<li>keventd overflow</li>

</ol>

</p>

<p>For #1, your patch seems to cover that nicely.</p>

<p>For #2, that's to be used for situations where (a) you need a thread
context _and_ (b) you simply cannot wait for keventd to become available
(since there are no time guarantees).</p>

</quote>

<p>Rusty replied, regarding Jeff's item 1, <quote who="Rusty Russell">It's
really for persistent threads, but you can use it as one-shot by either (1)
calling exit() in the core function (and noone calls kthread_destroy), or
(2) not having a core function and just having an init function.  I used
this in a test patch.</quote></p>

</section>

<section
  title="Linux 2.6.0-rc1-mm1"
  subject="2.6.0-rc1-mm1"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=18Kn1-48P-3%40gated-at.bofh.it"
  posts="16"
  startdate="31 Dec 2003 00:47:25 -0800"
  enddate="04 Jan 2004 18:54:22 -0800"
>
<topic>Version Control</topic>

<mention>Andrew Morton</mention>

<p>Andrew Morton posted <a
href="ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.1-rc1/2.6.1-rc1-mm1/">2.6.1-rc1-mm1</a>,
primarily to resync with the mainline 2.6 tree. Various folks posted fixes,
and Matthias Urlichs also said Andrew's release was</p>

<quote who="Matthias Urlichs">

<p>available via Bitkeeper at &lt;bk://smurf.bkbits.net/linux-2.6-mm&gt;.</p>

<p>If you use this tree, please consider dropping me a note or whatever;
I don't like to work in a vacuum...</p>

<p>The way I've built this, in case anybody's curious:</p>

<p>

<ul>

<li>undo all the changes in 2.6.0-mm2 but not in 2.6.1-rc1-mm1.</li>
<li>merge with 2.6.1-rc1, resolved nine conflicts.</li>
<li>Apply all patches in 2.6.1-rc1-mm2 but not in 2.6.0-mm2.
  Some didn't apply fully, for whatever reason.</li>
<li>Generate a diff between 2.6.1-rc1 and top-of-tree.
  Use interdiff -p1 to compare that to Andrew's official patch.
  (There were none, which was somewhat surprising.)</li>

</ul>

</p>

<p>Oh yes, I've stopped prefixing the patch tags with mm[12]; that would get
too confusing in the long run.</p>

</quote>

</section>

<section
  title="Some Problems With SuSE gcc 3.3 Prereleases"
  subject="[PATCH] disable gcc warnings of sign/unsigned comparison"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=19ahq-7Rg-11%40gated-at.bofh.it"
  posts="14"
  startdate="01 Jan 2004 04:33:33 -0800"
  enddate="05 Jan 2004 05:16:02 -0800"
>

<mention>Trond Myklebust</mention>
<mention>Andrew Morton</mention>

<p>Paul Jackson posted a patch to disable gcc warnings on comparing signed
and unsigned numbers, because he was seeing a lot of these when using gcc
3.3 under SuSE. In a later post he said:</p>

<quote who="Paul Jackson">

<p>Right now, compiling a 2.6.0-mm1 (what I had handy) with the 3.3 gcc on
my Pentium system for arch i386 generates 1386 signed and unsigned warnings,
of the two kinds:</p>

<pre>   warning: signed and unsigned type in conditional expression
   warning: comparison between signed and unsigned</pre>

<p>A patch that resolved these 1386 warnings would (1) generate more
crap than it cleaned up, (2) immediately result in adding more bugs
than removed, and (3) due to the crap level rising, generate more
bugs long term than it avoided.</p>

</quote>

<p>Andrew Morton was revolted by this, and was all set to go with Paul's
path, in spite of the fact that Trond Myklebust and others felt it would be
better to just fix the kernel code causing the warnings instead. But before
Andrew could add the patch to his tree, Paul discovered that <quote who="Paul
Jackson">the only place I can find the gcc with this bug (that -Wall implies
-Wsign-compare) is the gcc 3.3 that came with my SuSE Linux 8.2 distribution.
Each of the 3.3, 3.3.1 and 3.3.2 versions available at ftp.gnu.org/gnu/gcc are
ok - no such bug.</quote> Some folks began to speculate that the bug was in
3.3, and that is had been fixed subsequently; but elsewhere in the thread,
Adrian Bunk also said, <quote who="Adrian Bunk">It was _not_ a bug in gcc
3.3 .  It was a bug in some _prerelease_ versions of gcc 3.3 SuSE decided
to ship in a release of their distribution.  There is no officially released
version of gcc with this problem.</quote></p>

</section>

<section
  title="Some Filesystem Comparisons"
  subject="file system technical comparisons"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=19FbD-qT-17%40gated-at.bofh.it"
  posts="14"
  startdate="02 Jan 2004 13:38:22 -0800"
  enddate=""
>
<topic>FS: JFS</topic>
<topic>FS: NTFS</topic>
<topic>FS: ReiserFS</topic>
<topic>FS: ext3</topic>

<mention>Randy Dunlap</mention>

<p>Steve Glines asked for a technical comparison between ext3, reiserfs,
xfs jfs, and if possible any other supported filesystems. Stewart
Smith said he'd done some comparisons of a number of filesystems in
his <a href="http://www.flamingspork.com/honors/">honor's thesis</a>,
notable exceptions being JFS and NTFS. Someone else also gave a link
to a <a href="http://www.linux-mag.com/2002-10/jfs_01.html">Linux
Magazine article</a>. Randy Dunlap also gave a pointer to a <a
href="http://developer.osdl.org/rddunlap/journal_fs/lwe-jgfs.pdf">comparison
he'd done</a> in the 2.4 era, which he said was quite dated and probably
not so accurate anymore.</p>

</section>

<section
  title="Minimizing The Kernel"
  subject="2.6.1-rc1-tiny1 tree for small systems"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=19Kuz-872-3%40gated-at.bofh.it"
  posts="11"
  startdate="02 Jan 2004 19:08:14 -0800"
  enddate="10 Jan 2004 13:49:30 -0800"
>
<topic>FS: ext2</topic>
<topic>Networking</topic>
<topic>Small Systems</topic>

<mention>Andi Kleen</mention>

<p>Matt Mackall announced:</p>

<quote who="Matt Mackall">

<p>This is the third release of the -tiny kernel tree. The aim of this tree
is to collect patches that reduce kernel disk and memory footprint as well
as tools for working on small systems. Target users are things like embedded
systems, small or legacy desktop folks, and handhelds.</p>

<p>Latest release includes:</p>

<p>

<ul>

<li>sync against 2.6.1-rc1</li>
<li>latest netdrvr patchkit</li>
<li>SLOB allocator</li>
<li>Andi Kleen's bloat-o-meter</li>
<li>configurable tcpdiag, inetpeer, dnotify, ptrace, sysenter/vsyscall</li>
<li>configurable X86 CPU feature detection</li>
<li>ability to override arch CFLAGS from Kconfig</li>
<li>optional uninlining of current and thread_info</li>
<li>other minor tweaks</li>

</ul>

</p>

<p>The big bit here is SLOB, which optionally replaces the SLAB allocator
and kmalloc wrappers with a traditional malloc arena and a SLAB emulation
layer. SLOB is less than a tenth the size of the SLAB code and is considerably
more space efficient with its allocations, but is not as fast and may prove
less resistant to long-term fragmentation.</p>

<p>Thanks to Andi Kleen, Magnus Naeslund, and various others for their
contributions and suggestions.</p>

<p>The patch can be found at:</p>

<p><a href="http://selenic.com/tiny/2.6.1-rc1-tiny1.patch.bz2">http://selenic.com/tiny/2.6.1-rc1-tiny1.patch.bz2</a><br />
<a href="http://selenic.com/tiny/2.6.1-rc1-tiny1-broken-out.tar.bz2">http://selenic.com/tiny/2.6.1-rc1-tiny1-broken-out.tar.bz2</a></p>

<p>Contributions and suggestions are encouraged. In particular, it would be
helpful if people with non-x86 hardware could take a stab at extending some of
the stuff that's currently only been done for X86 to other architectures.</p>

</quote>

<p>Eric W. Biederman gave it a try, and found that he was able to create
a 220K compressed kernel, which he felt was a huge reduction compared with
other kernels. He also felt there was a lot of room for improvement, because
there were many non-optional features still in Matt's tree. Matt said,
<quote who="Matt Mackall">Suggestions? I'm rapidly exhausting a lot of the
obvious candidates.  My target build at the moment is ide + ext2 + proc +
ipv4 + console, and that's currently at around 800K uncompressed, booting in
a little less than 2.5MB. Hoping to get that under 2.</quote> Eric replied:</p>

<quote who="Eric W. Biederman">

<p>I have a 386 I really should try this out on.</p>

<p>Of note IPv4 is about 90K compressed.  And I know you can do a minimal
IPv4 stack in about 8K compressed.</p>

<p>My target is a minimal kernel that can be used as a bootloader.  But what
I am looking for at first is to be able to turn as many things off as possible
so that we can test to see how much individual pieces add.</p>

<p>If you look at ELKS or one of the old unix like kernels you can get those
down to 64K and still be usable.</p>

<p>I'm currently looking at removing the buffer cache, since I most of the
time I don't care about disks.  This is complicated by the fact that many of
the default paths in the kernel when they don't have a better implementation
use buffer cache methods.  But I'm making headway.</p>

<p>Proc is one of things that frequently has loads of crap that are not
needed in a minimal setup.</p>

<p>Until I find more candidates to turn off I can't see any low hanging
fruit for shrinking in size.</p>

</quote>

<p>Later, Eric posted a patch to remove block device support from Matt's kernel.
This brought his compiled bzImage down to 191K. After some feedback, he posted a
cleaner patch that also did more, and Matt merged it into his tree.</p>

</section>

<section
  title="New Set Of Input Patches"
  subject="New set of input patches"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=19PXk-6UW-9%40gated-at.bofh.it"
  posts="19"
  startdate="03 Jan 2004 00:50:43 -0800"
  enddate="04 Jan 2004 22:03:41 -0800"
>

<p>Dmitry Torokhov said to Vojtech Pavlik:</p>

<quote who="Dmitry Torokhov">

<p>I have a new set of input patches, could you take look at them?</p>

<p>

<ol>

<li>i8042-suspend.patch<br />
   Add suspend methods to i8042 to restore BIOS settings on suspend and
   kill polling timer which sometimes prevents APM suspend</li>

<li>i8042-options-parsing.patch<br />
   psmouse-options-parsing.patch<br />
   atkbd-options.parsing<br />
   Complete conversion to the new way of parsing parameters. Drop "i8042_",
   "psmouse_" and "atkbd_" prefixes from option names when compiled as a
   module and require "i8042.", "psmouse." and "atkbd." prefixes if built
   into the kernel.</li>

<li>missing-module-license.patch<br />
   Maple and newton keyboard drivers were missing MODULE_LICENSE("GPL")</li>

<li>kconfig-synaptics-help.patch<br />
   Suggest psmouse.proto=imps to Synaptics users who do not want install
   native XFree Synaptics driver so taps would still work</li>

<li>sis-aux-port.patch<br />
   Do not ignore AUX port if chipset fails to disable it when we do probes
   as SiS is having trouble disabling but otherwise mouse works fine.</li>

</ol>

</p>

<p>The patches are on top of 2 other input patches
(remove jitter and ps2 emulation) that I have sent to
the list earlier. You can find the complete set of patches at <a
href="http://www.geocities.com/dt_or/input/2_6_0-rc1/">http://www.geocities.com/dt_or/input/2_6_0-rc1/</a>
and <a
href="http://www.geocities.com/dt_or/input/2_6_0-rc1-mm1/">http://www.geocities.com/dt_or/input/2_6_0-rc1-mm1/</a></p>

</quote>

<p>After some discussion and typo-hunting, Vojtech said, <quote who="Vojtech
Pavlik">Andrew, please apply these patches to your tree and/or schedule them
for inclusion into mainline.</quote></p>

</section>

<section
  title="kernel.org Web Page HTML Validity"
  subject="Kernel.org: Webpage validator and Web accessibility."
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=1ag1u-q7-5%40gated-at.bofh.it"
  posts="2"
  startdate="04 Jan 2004 04:48:10 -0800"
  enddate=""
>

<p>Someone pointed out that if one were to run <a
href="http://www.kernel.org">http://www.kernel.org</a> through the
<a href="http://validator.w3.org/">http://validator.w3.org/</a>
W3C HTML validator, the page would turn out invalid. Tim Cambrant
replied, <quote who="Tim Cambrant">You should contact the webmaster of <a
href="http://kernel.org">http://kernel.org</a> at webmaster@kernel.org about
this, since it isn't a kernel-development issue. I agree though, standards
should be followed, and making it valid really doesn't take long.</quote></p>

</section>

<section
  title="Usagi Stable Version 5 Released"
  subject="USAGI STABLE Release 5"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=1aj8Z-4Uk-9%40gated-at.bofh.it"
  posts="1"
  startdate="04 Jan 2004 08:08:28 -0800"
>
<topic>Networking</topic>

<p>Yuji Sekiya announced:</p>

<quote who="Yuji Sekiya">

<p>We are glad to announce the USAGI STABLE RELEASE 5, dated on January
4th, 2004.  This is the last major STABLE release based on linux-2.4 kernel
from USAGI Project. Our primary target of development is moved to linux-2.6
kernel.</p>

<p>Changes from the STABLE RELEASE 4.1 are:</p>

<p>

<ul>

<li>based on linux-2.4.21,</li>
<li>IPsec transport/tunnel mode support,</li>
<li>Mobile IPv6 support,</li>
<li>fixed interaction between IPsec and Mobile IPv6,</li>
<li>Default Router Preference Support, and</li>
<li>Route Information Option Support.</li>

</ul>

</p>

<p>However, the IPsec and Mobile IPv6 implementations included in this STABLE
release may not developed further. Because the IPsec stack was written for
linux-2.4 kernel by USAGI Project and currently we have rewritten NEW IPsec
stack for linux-2.6 kernel and the stack is included linux-2.6 mainline kernel.
The IPsec stack included linux-2.6 kernel is implemented based on "xfrm"
architecture and we will continue developing based on the NEW IPsec stack.</p>

<p>The Mobile IPv6 stack is the same situation as the IPsec. The Mobile
IPv6 stack included in this release is developed by HUT GO Project and the
stack is mainly written for linux-2.4 kernel. Currently USAGI Project and
GO Project have started joint project for developing new Mobile IPv6 stack
based on linux-2.6 kernel.</p>

<p>You can get our complete kit which includes
kernel tree, library and applications from &lt;<a
href="ftp://ftp.linux-ipv6.org/pub/usagi/stable/kit/">ftp://ftp.linux-ipv6.org/pub/usagi/stable/kit/</a>&gt;.</p>

<p>We also provide separate patches against
the main-line kernel and the tools &lt;<a
href="ftp://ftp.linux-ipv6.org/pub/usagi/stable/split/">ftp://ftp.linux-ipv6.org/pub/usagi/stable/split/</a>&gt;.</p>

<p>Many of our efforts are already in mainline kernel tree. We will continue
making reasonable size patches and trying to merge it into mainline kernel
tree.</p>

<p>We announce the latest information on our
web pages. Please check our web site &lt;<a
href="http://www.linux-ipv6.org">http://www.linux-ipv6.org</a>&gt;.</p>

<p>We also manage the mailing lists for USAGI users. If you
have questions, please join the mailing list. Comments and
advises are also welcome on that mailing list. Please visit &lt;<a
href="http://www.linux-ipv6.org/ml/">http://www.linux-ipv6.org/ml/</a>&gt;
for further information.</p>

</quote>

</section>

<section
  title="Status Of HPT372 And HPT374 IDE Controller Support"
  subject="Any hope for HPT372/HPT374 IDE controller?"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=1aoLv-4rm-21%40gated-at.bofh.it"
  posts="8"
  startdate="04 Jan 2004 14:11:57 -0800"
  enddate="05 Jan 2004 04:33:39 -0800"
>
<topic>Disks: IDE</topic>

<p>Tom Wallard asked if the Highpoint HPT372 and HPT374 IDE controllers had
been fixed yet. As reported way back in <kcref subject="must-fix list for
2.6.0" startdate="29 Apr 2003 14:57:31 -0800"/>, at least the HPT372N would
"eat disks" in 2.5; Andre Hedrick replied:</p>

<quote who="Andre Hedrick">

<p>I have a version stable for the KT400 chipset, it is the KT600 which is
unstable now.  As soon as I finish resolving the issues one of my customers
is having with the KT600, it will be released shortly there after.</p>

<p>Some of the problems appear with the APIC routing and interrupts being
lost and not begin processed.</p>

</quote>

<p>Various reports followed Tom's, including some claiming to work perfectly,
and others claiming to exhibit problems.</p>

</section>

<section
  title="Linux 2.6.1-rc1-mm2 Released"
  subject="2.6.1-rc1-mm2"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=1ayhM-Ss-9%40gated-at.bofh.it"
  posts="8"
  startdate="05 Jan 2004 00:20:56 -0800"
  enddate="07 Jan 2004 07:40:13 -0800"
>
<topic>Version Control</topic>

<p>Andrew Morton announced <a
href="ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.1-rc1/2.6.1-rc1-mm2">2.6.1-rc1-mm2</a>,
saying, <quote who="Andrew Morton">Many new fixes, all over the place.</quote>
Matthias Urlichs said that this release <quote who="Matthias Urlichs">will
be bitkeeperized shortly, in fact as soon as anything-non-kernel.bkbits.net
is again reachable.  :-/</quote></p>

</section>

<section
  title="Linux 2.4.24 To Be Serious Bugfix Only; mremap Exploit Plugged; XFS Inclusion Delayed"
  subject="Linux 2.4.24-rc1"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=1aCbE-6fD-3%40gated-at.bofh.it"
  posts="11"
  startdate="05 Jan 2004 04:18:35 -0800"
  enddate="06 Jan 2004 01:01:41 -0800"
>
<topic>FS: XFS</topic>

<mention>Martin Knoblauch</mention>

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

<quote who="Marcelo Tosatti">

<p>This release fixes a few critical problems in 2.4.23, including fixes
for two security bugs.</p>

<p>Upgrade is recommended.</p>

</quote>

<p>The release dealt with a recently discovered <a
href="http://isec.pl/vulnerabilities/isec-0013-mremap.txt">mremap
vulnerability</a>. Martin Knoblauch asked if this release postponed other
changes that had already been accepted into the 2.4 pre-releases; things like
XFS, in particular.  Marcelo explained, <quote who="Marcelo Tosatti">Yes.
The 2.4.24-pre tree with all its modifications becomes 2.4.25-pre.</quote></p>

</section>

<section
  title="mremap Security Patch For 2.6"
  subject="[patchlet link] Re: 2.6.1-rc1 affected?"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=1aG5v-3mf-1%40gated-at.bofh.it"
  posts="22"
  startdate="05 Jan 2004 08:41:05 -0800"
  enddate="08 Jan 2004 01:50:09 -0800"
>
<topic>Version Control</topic>

<mention>Tomas Szepe</mention>

<p>Markus Hastbacka asked if there would be a
patch against 2.6 to fix the recently discovered <a
href="http://isec.pl/vulnerabilities/isec-0013-mremap.txt">mremap security
hold</a>. Linus Torvalds replied, <quote who="Linus Torvalds">Yup.
I'd actually personally prefer a stronger test than the one in 2.4.24,
and my personal preference would be for just disallowing the degenerate
cases entirely.  I don't see a "mremap away" as being a valid thing to do,
since if that is what you want, why not just do a "munmap()"?</quote> Marcus
asked why there wasn't already a new -rc release for 2.6; and Linus replied,
<quote who="Linus Torvalds">Because nobody actually contacted me about the
problem and I read about it on linux-kernel like everybody else? Because
I just got up and created the patch? And because nobody has an exploit yet,
and one may be hard or impossible to create? And because people who care about
these things tend to not update to x.0 kernels anyway?</quote> He added, <quote
who="Linus Torvalds">They'll get a 2.6.1 soonish. The patch is in the current
BK tree, will be in -rc2, and will be in 2.6.1. Let's just make sure we don't
screw up the release due to being too much in a hurry either..</quote></p>

<p>At some point, Tomas Szepe asked for some sample code to prove that
an exploit was possible, and Bastiaan Spandaw said, <quote who="Bastiaan
Spandaw">According to a slashdot comment this is proof of concept code.  <a
href="http://linuxfromscratch.org/~devine/mremap_poc.c">http://linuxfromscratch.org/~devine/mremap_poc.c</a></quote>.
Several folks tested this on a few kernels and found it to successfully
exploit the hole.</p>

</section>

<section
  title="Hotplug Scripts Version 2004_01_05 Released"
  subject="[ANNOUNCE] 2004-01-05 release of hotplug scripts"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=1aHOx-5S8-27%40gated-at.bofh.it"
  posts="5"
  startdate="05 Jan 2004 10:30:58 -0800"
  enddate="05 Jan 2004 14:35:45 -0800"
>
<topic>Backward Compatibility</topic>
<topic>Hot-Plugging</topic>

<p>Greg KH announced:</p>

<quote who="Greg KH">

<p>I've just packaged up the latest Linux hotplug scripts into a release,
which can be found at:<br />
<a href="http://sourceforge.net/project/showfiles.php?group_id=17679">http://sourceforge.net/project/showfiles.php?group_id=17679</a></p>

<p>Or from your favorite kernel.org mirror at:<br />
        <a href="http://www.kernel.org/pub/linux/utils/kernel/hotplug/hotplug-2004_01_05.tar.gz"></a>kernel.org/pub/linux/utils/kernel/hotplug/hotplug-2004_01_05.tar.gz<br />
or for those who like bz2 packages:<br />
        <a href="http://www.kernel.org/pub/linux/utils/kernel/hotplug/hotplug-2004_01_05.tar.bz2">kernel.org/pub/linux/utils/kernel/hotplug/hotplug-2004_01_05.tar.bz2</a></p>

<p>I've also packaged up some pre-built (and signed) Red Hat FC 1 based rpms:<br />
        <a href="http://www.kernel.org/pub/linux/utils/kernel/hotplug/hotplug-2004_01_05-1.noarch.rpm">kernel.org/pub/linux/utils/kernel/hotplug/hotplug-2004_01_05-1.noarch.rpm</a><br />
        <a href="http://www.kernel.org/pub/linux/utils/kernel/hotplug/hotplug-base-2004_01_05-1.noarch.rpm">kernel.org/pub/linux/utils/kernel/hotplug/hotplug-base-2004_01_05-1.noarch.rpm</a><br /></p>

<p>The source rpm is available if you want to rebuild it for other distros
or versions of Red Hat at:<br />
        <a href="http://www.kernel.org/pub/linux/utils/kernel/hotplug/hotplug-2004_01_05-1.src.rpm">kernel.org/pub/linux/utils/kernel/hotplug/hotplug-2004_01_05-1.src.rpm</a><br />
        <a href="http://www.kernel.org/pub/linux/utils/kernel/hotplug/hotplug-2004_01_05-1.src.rpm">kernel.org/pub/linux/utils/kernel/hotplug/hotplug-2004_01_05-1.src.rpm</a></p>

<p>The main web site for the linux-hotplug project can be found at:<br />
        <a href="http://linux-hotplug.sf.net/">http://linux-hotplug.sf.net/</a><br />
which contains lots of documentation on the whole linux-hotplug
process.</p>

<p>This release is recommended for _anyone_ using the 2.6.0 and beyond kernels
who is still using hotplug scripts older than 2003_08_05, as a number of
changes have been made in order to support the 2.6 kernel properly.</p>

<p>The release is still backwards compatible with 2.4, so there is no need
to worry about upgrading.</p>

</quote>

</section>

<section
  title="Linux 2.4.24-pre4 Released; htree Code Not Yet Merged"
  subject="Linux 2.4.25-pre4"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=1b0nY-2vi-13%40gated-at.bofh.it"
  posts="12"
  startdate="06 Jan 2004 06:14:23 -0800"
  enddate="09 Jan 2004 08:29:50 -0800"
>
<topic>FS: ext2</topic>
<topic>Version Control</topic>

<mention>Mike Fedyk</mention>

<p>Marcelo Tosatti said:</p>

<quote who="Marcelo Tosatti">

<p>Moving on with the 2.4.24-pre tree, here is 2.4.25-pre4.</p>

<p>It contains an ext2/3 update (mostly forward compatibility related),
the usual architecture updates (this time S390, PPC64/32, SH), osst update,
TG3 bugfixes, amongst others.</p>

<p>Some of the fixes listed in this changelog (the rtc fixes, the IrDA "log
buster" fix and the netfilter MASQUERADE oops) were already in other -pre's,
they got removed and re added for technical BK reasons.</p>

</quote>

<p>Mike Fedyk asked if Marcelo planned to merge the htree code, and Marcelo
said yes, in the next -pre release.</p>

</section>

<section
  title="Linus Talks About Declaring 'volatile' Variables"
  subject="[PATCH] fix get_jiffies_64 to work on voyager"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=1b266-55J-7%40gated-at.bofh.it"
  posts="16"
  startdate="06 Jan 2004 08:04:07 -0800"
  enddate="06 Jan 2004 11:04:15 -0800"
>
<topic>Assembly</topic>
<topic>PCI</topic>
<topic>SMP</topic>

<p>In the course of discussion, during which the suggestion was made to declare
a variable 'volatile', Linus Torvalds said:</p>

<quote who="Linus Torvalds">

<p>we should _never_ make anything volatile. There just isn't any reason
to. The compiler will never do any "better" with a volatile, it will only
ever do worse.</p>

<p>If there are memory ordering constraints etc, the compiler won't be able
to handle them anyway, and volatile will be a no-op. That's why we have
"barrier()" and "mb()" and friends.</p>

<p>The _only_ acceptable use of "volatile" is basically:</p>

<p>

<ul>

<li>

<p>in _code_ (not data structures), where we might mark a place as making
   a special type of access. For example, in the PCI MMIO read functions,
   rather than use inline assembly to force the particular access (which
   would work equally well), we can force the pointer to a volatile type.</p>

<p>   Similarly, we force this for "test_bit()" macros etc, because they are
   documented to work on SMP-safe. But it's the _code_ that works that
   way, not the data structures.</p>

<p>   And this is an important distinctions: there are specific pieces of
   _code_ that may be SMP-safe (for whatever reasons the writer thinks).
   Data structures themselves are never SMP safe.</p>

<p>   Ergo: never mark data structures "volatile". It's a sure sign of a bug
   if the thing isn't a memory-mapped IO register (and even then it's
   likely a bug, since you really should be using the proper functions).</p>

<p>   (Some driver writers use "volatile" for mailboxes that are updated by
   DMA from the hardware. It _can_ be correct there, but the fact is, you
   might as well put the "volatile" in the code just out of principle).</p>

</li>

</ul>

</p>

<p>That said, the "sure sign of a bug" case has one specific sub-case:</p>

<p>

<ul>

<li>to paste over bugs that you really don't tink are worth fixing any
   other way. This is why "jiffies" itself is declared volatile: just to
   let people write code that does "while (time_before(xxx, jiffies))".</li>

</ul>

</p>

<p>But the "jiffies" case is safe only _exactly_ because it's an atomic read.
You always get a valid value - so it's actually "safe" to mark jiffies as
baing volatile. It allows people to be sloppy (bad), but at least it allows
people to be sloppy in a safe way.</p>

<p>In contrast, "jiffies_64" is _not_ an area where you can safely let
the compiler read a unstable value, so "volatile" is fundamentally wrong
for it. You need to have some locking, or to explicitly say "we don't
care in this case", and in both cases it would be wrong to call the thing
"volatile". With locking, it _isn't_ volatile, and with "we don't care", it
had better not make any difference. In either case the "volatile" is wrong.</p>

<p>We had absolutely _tons_ of bugs in the original networking code, where
clueless people thougth that "volatile" somehow means that you don't need
locking. EVERY SINGLE CASE, and I mean EVERY ONE, was a bug.</p>

<p>There are some other cases where the "volatile" keyword is fine, notably
inline asm has a specific meaning that is pretty well-defined and very
useful. But in all other cases I'd suggest having the volatile be part of
the code, possibly with an explanation _why_ it is ok to use volatile there
unless it is obvious.</p>

</quote>

</section>

<section
  title="FUSE 1.1-pre1 Released"
  subject="[ANNOUNCE] Filesystem in Userspace (FUSE) 1.1-pre1"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=1bmey-A0-21%40gated-at.bofh.it"
  posts="1"
  startdate="07 Jan 2004 05:43:30 -0800"
>

<p>Miklos Szeredi announced FUSE (Filesystem in User SpacE) version 1.1-pre1,
and said:</p>

<quote who="Miklos Szeredi">

<p>I did a release at long last, it's got proper 2.6 kernel support and all
the rest of the stuff that people contributed since 1.0.</p>

<p>It can be downloaded from the usual place:</p>

<p><a
href="http://sourceforge.net/projects/avf">http://sourceforge.net/projects/avf</a></p>

</quote>

</section>

<section
  title="kgdb 2.0 For 2.6.0"
  subject="kgdb 2.0 for kernel 2.6.0"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=1bmof-OZ-11%40gated-at.bofh.it"
  posts="1"
  startdate="07 Jan 2004 05:48:43 -0800"
>

<mention>George Anzinger</mention>
<mention>Andi Kleen</mention>
<mention>Andrew Morton</mention>

<p>Amit S. Kale said:</p>

<quote who="Amit S. Kale">

<p>I have released kgdb 2.0 for kernel 2.6.0 for i386 and x86_64 architectures
at <a href="http://kgdb.sourceforge.net">http://kgdb.sourceforge.net</a>.</p>

<p>This version of kgdb has been supported by TimeSys Corporation and
Storad Inc.  It contains code from kgdb patches maintained by Andrew Morton
(George Anzinger), Andi Kleen and Jim Housten.</p>

<p>Significant changes since previous version:</p>

<p>

<ol>

<li>This version contains three patches: architecture specific patches for
i386 and x86_64 and a common patch.</li>

<li>Automatic loading of modules in gdb is available on x86_64 platform now.
Debugging of modules, including those in initrd, should be trivial with
this feature.</li>

<li>Hasslefree detach and reconnect from gdb possible on x86_64 platform
also.</li>

<li>New format of kgdb kernel command line options: kgdbwait, kgdb8250.</li>

<li>Shadow thread to get backtraces lost when gdb can't go beyond do_IRQ.</li>

<li>Uses new thread list packet qf instead of qL. This fixes the thread
information loss previous versions of kgdb had.</li>

</ol>

</p>

</quote>

</section>

<section
  title="iostat 2.0 Released"
  subject="iostat - Linux I/O performance monitoring utility"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=1buma-5mA-39%40gated-at.bofh.it"
  posts="1"
  startdate="07 Jan 2004 14:26:21 -0800"
>

<p>Zlatko Calusic said:</p>

<quote who="Zlatko Calusic">

<p>iostat v2.0 is out!</p>

<p>It works flawlessly on both 2.4 &amp; 2.6, compiles on Debian, Redhat, you
name it... IOW, it's perfect. :)</p>

<p>Looks something like this:</p>

<pre>                             extended device statistics
device mgr/s mgw/s    r/s    w/s    kr/s    kw/s   size queue   wait svc_t  %b
hde        0  3530    5.0   92.0    20.2 14597.8  150.6  68.1  563.2   6.0  58
hdg        0     0    0.0    0.0     0.0     0.0    0.0   0.0    0.0   0.0   0
hda        0   105  159.6   69.4   637.7   812.9    6.3  56.0  176.4   4.1  95</pre>

<p>Find it on: <a href="http://linux.inet.hr/">http://linux.inet.hr/</a></p>

</quote>

</section>

<section
  title="Using Floating Point Operations In Kernel Code"
  subject="Use of floating point in the kernel"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=1bvUw-7Ry-15%40gated-at.bofh.it"
  posts="6"
  startdate="07 Jan 2004 15:59:12 -0800"
  enddate="07 Jan 2004 20:12:51 -0800"
>

<p>Pekka Pietikainen found some cases of floating point math operations inside
kernel code, which is not supposed to be allowed; H. Peter Anvin said, <quote
who="H. Peter Anvin">Has anyone considered asking the gcc people to add an
-fno-fpu (or -mno-fpu) option, throwing an error if any FP instructions are
used?</quote> Linus Torvalds replied:</p>

<quote who="Linus Torvalds">

<p>We really should, but there really are some rare cases where it is
actually ok.</p>

<p>In particular, you _can_ do math, if you just do the proper
"kernel_fpu_begin()"/"kernel_fpu_end()" around it, and you have reason to
believe that you can assume a math processor exists.</p>

<p>Is it needed? I dunno. I'd frown on it in general, but I don't see it
being fundamentally wrong under the rigth circumstances.</p>

</quote>

</section>

<section
  title="Linux 2.6.1-rc3 Released"
  subject="2.6.1-rc3"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=1bMiB-61N-11%40gated-at.bofh.it"
  posts="2"
  startdate="07 Jan 2004 22:48:00 -0800"
  enddate="08 Jan 2004 09:07:52 -0800"
>
<topic>Kernel Release Announcement</topic>

<p>Linus Torvalds announced kernel 2.6.1-rc3, saying, <quote who="Linus
Torvalds">Not a lot to say, the ChangeLog says it all (and I include the -rc2
log too, since I forgot to actually ever post it). Mostly random smaller stuff
all over. The big merges were all in rc1 and do not seem to have caused any
huge headaches.</quote></p>

</section>

<section
  title="Linux 2.6.1-rc2-mm1 Released; Also Uptodate Against 2.6.1-rc3"
  subject="2.6.1-rc2-mm1"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=1bCVY-Yg-9%40gated-at.bofh.it"
  posts="19"
  startdate="07 Jan 2004 23:28:31 -0800"
  enddate="09 Jan 2004 05:49:42 -0800"
>
<topic>Disk Arrays: RAID</topic>
<topic>FS: ext2</topic>
<topic>Framebuffer</topic>
<topic>Power Management: ACPI</topic>
<topic>Security</topic>
<topic>User-Mode Linux</topic>
<topic>Version Control</topic>

<p>Andrew Morton announced:</p>

<quote who="Andrew Morton">

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

<p>

<ul>

<li>Some rework to the mt-ranier CDROM support and ATAPI access to MO drives.
  Could anyone who uses these please retest.</li>

<li>A fix for loop-on-ext2-on-cdrom.  Also needs testing please.</li>

<li>

<p>A significant amount of work on remap_file_pages() from Ingo.  Most
  notably, we now support per-page protections within a single VMA.  This is
  aimed at UML and similar specialised applications which are presently
  forced to allocate one VMA per page.</p>

<p>  Anyone who is interested in remap_file_pages(), please test.</p>

<p>  This adds a new syscall and breaks all non-ia32 architectures.
  Instructions as to how to unbreak them is in the
  remap_file_pages-prot-2.6.1-H2 patch.</p>

</li>

<li>

<p>The remap_file_pages non-blocking infrastructure has been used to
  implement prefaulting of minor faults for mappings.  This will reduce the
  kernel's minor fault rate by up to a factor of eight and has been shown to
  offer a few percent speedup on some things.</p>

<p>  This needs serious benchmarking please.  Tests which involve short-lived
  processes.</p>

<p>  The remap_file_pages work will probably live in -mm for a while.  It
  needs careful review - alterations to largely unused code paths are a
  concern because of the potential for long-lived security and DoS holes.</p>

</li>

<li>Added an implementation of RAID6 from Peter Anvin.  Usage information is
  available in the Kconfig help for the feature.  I'm sure he'd like to
  hear of testing results.</li>

<li>There's a fix for the Radeon framebuffer card here which we're a bit
  wobbly about.  if you have such a thing, please send a report.</li>

<li>Significant amount of rework of the ACPI PM timer source patch.  I'm not
  sure that I got all the right patches in the right place.  John and
  Dominik, please double-check.</li>

<li>Added the latest code drop from DRM CVS.  People who use DRM, please test
  it.</li>

</ul>

</p>

</quote>

<p>He replied to himself, having noticed that Linus had put out 2.6.1-rc3
just moment's before Andrew's own release. He said, <quote who="Andrew
Morton">2.6.1-rc2-mm1 contains everything which is in 2.6.1-rc3.</quote></p>

</section>

<section
  title="RAM Hotplugging And Allocation"
  subject="a new version of memory hotremove patch"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=1bD5E-1aI-3%40gated-at.bofh.it"
  posts="5"
  startdate="07 Jan 2004 23:36:34 -0800"
  enddate="09 Jan 2004 01:41:58 -0800"
>
<topic>Big Memory Support</topic>
<topic>Hot-Plugging</topic>

<p>Toshihiro Iwamoto said:</p>

<quote who="Toshihiro Iwamoto">

<p>This is an update of the memory hot removal
patch.  As I'll merge this patch over Goto-san's hotplug patch (<a
href="http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=107214532922184&amp;w=2">http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=107214532922184&amp;w=2</a>),
this will be the final version in this standalone form.  When that is done,
there will be no more zone_active checks in page allocation code.</p>

<p>Changes from the previous version (dated 20031126) are:</p>

<p>

<ul>

<li>Implemented remapping of mlock()'d pages.
  This is done by adding an argument to try_to_unmap() function to be
  able to ignore VM_LOCKED bit.</li>

<li>Hacks to make kswapd more aggressive on disabled zones were
  removed.  Remapping and swapping out should be used together to make
  system performance impact caused by memory hot removal low. I think
  switching remapping and swapping out based on whether pages are on
  active lists or inactive lists is an easy and acceptable solution.
  There may be better threshold, and the above idea may be
  inappropriate for systems where the cost of memcpy is very high.</li>

<li>Bugfixes.  truncate detection, page dirty bit handling, more
  PageAgain handling.</li>

</ul>

</p>

<p>Known problems:</p>

<p>

<ul>

<li>If a page is in mapping->io_pages when remap happens, it will be
  moved to dirty_pages.  Tracking page->list to find out the list
  which page is connected to would be too expensive, and I have no other
  idea.</li>

<li>It seems there's a very small possibility of race between remap and
  move_from_swap_cache.  I've added some code for this, but it is
  essentially untested.</li>

</ul>

</p>

<p>I guess many of you think this patch has no use for yourselves, but it
was at least useful for finding some kind of kernel memory leaks. :)</p>

<p><a
href="http://people.valinux.co.jp/~iwamoto/mh.html">http://people.valinux.co.jp/~iwamoto/mh.html</a>
contains some patch explaination and usage info.  This page hasn't changed
much since the last post.</p>

</quote>

<p>Hirokazu Takahashi replied:</p>

<quote who="Hirokazu Takahashi">

<p>I just implemented a patch which allow us to allocate huge continuous
pages easily. As We know it's very hard to allocate them on demand, since
free memory on system may be fragmented.  My approach is that I let annoying
pages move to another place so that we can make free coninuous space on
memory. Iwamoto's memory-hot-removal patch will help to do it.</p>

<p>I believe moving pages approach will be much better than random swaping
page out approach for this purpose.</p>

<p>iwamoto&gt; This is an update of the memory hot removal patch.<br />
iwamoto&gt; <a href="http://people.valinux.co.jp/~iwamoto/mh.html">http://people.valinux.co.jp/~iwamoto/mh.html</a></p>

<p>My patch needs the iwamoto's memory-hot-removeval patch.  You should
apply both of them against linux-2.6.0.</p>

<p>Known problems:</p>

<p>

<ul>

<li>This patch doesn't work if CONFIG_HUGETLB_PAGE isn't set.
        Does anybody have good idea to solve it,
        since it's difficult to know whether a specified page
        is free or a part of a large continuous page without
        PG_compound flag.</li>

</ul>

</p>

<p>ToDos:</p>

<p>

<ul>

<li>It's hard to allocate HugePages for hugetlbfs on a box
        which dosen't have HighMem zones yet.</li>

<li>We will make some continuous pages allocation work
        at the same time.</li>

</ul>

</p>

</quote>

</section>

<section
  title="Linux Test Project January Version Released"
  subject="[ANNOUNCE] Linux Test Project January Release Announcement"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=1bPgA-1Vl-21%40gated-at.bofh.it"
  posts="1"
  startdate="08 Jan 2004 12:37:59 -0800"
>

<mention>Randy Hron</mention>
<mention>Erik Andersen</mention>

<p>Robert Williamson said:</p>

<quote who="Robert Williamson">

<p>The Linux Test Project test suite &lt;<a
href="http://www.linuxtestproject.org">http://www.linuxtestproject.org</a>&gt;
has been released. The latest version of the testsuite contains 2100+ tests
for the Linux OS. Our web site also contains other information such as:
test results, a Linux test tools matrix, technical papers and HowTos on
Linux testing, and a code coverage analysis tool.</p>

<p>Developers from the Linux Test Project co-authored the whitepaper,
"Putting Linux Reliability to the Test".  This article documents
the test results and analysis of the Linux kernel and other core OS
components, including everything from libraries and device drivers
to file systems and networking, all under some fairly adverse
conditions, over a period of 60 days. You can find the paper at: <a
href="http://www.ibm.com/developerworks/linux/library/l-rel">http://www.ibm.com/developerworks/linux/library/l-rel</a></p>

<p>Release Highlights:</p>

<p>

<ul>

<li>Code cleanups by Erik Andersen, Glen Foster, Jay Turner, and Ming Gao.</li>

<li>Removal of a memory leak in one of the test harness libraries by Randy
Hron.</li>

<li>Improvements to allow tests to build and execute under more environments
and distributions.</li>

</ul>

</p>

<p>We encourage the community to post results to ltp-results@lists.sf.net,
and patches, new tests, or comments/questions to ltp-list@lists.sf.net.</p>

</quote>

</section>

<section
  title="Keycode Problems In Recent Kernels"
  subject="Broken keycodes in recent kernels"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=1bSxH-KG-3%40gated-at.bofh.it"
  posts="2"
  startdate="08 Jan 2004 16:08:40 -0800"
  enddate="09 Jan 2004 00:24:15 -0800"
>
<topic>Microsoft</topic>
<topic>USB</topic>

<p>Andries Brouwer said:</p>

<quote who="Andries Brouwer">

<p>Just received my tenth complaint this year about the fact that kbd and
recent kernels disagree as to what the right keycodes are. Since I maintain
kbd it follows that recent kernels are broken.</p>

<p>What is right?</p>

<p>The old Linux convention is that for 1-88 keycode equals scancode.
Above that things are a bit messy, mainly because the 128 scancodes xx and
the 128 escaped scancodes e0 xx and the single combination e1 1d 45 are put
into 127 keycodes, and that doesnt fit.</p>

<p>OK. So we want at least to preserve this 1-88 range, and may worry
about the rest later. All common keys should keep their keycode.  See also
setkeycodes(8).</p>

<p>2.6 does first an untranslate and then a map to keycode, so
the fact that keycode equals (translated) scancode now becomes
atkbd_set2_keycode[atkbd_unxlate_table[i]] == i for i=1,...,88.</p>

<p>Looking at 2.6.0 we see a single mistake: scancode 84 is translated
incorrectly. And many Japanese complained.  Looking at 2.6.1-rc1 we see two
mistakes: also scancode 85 is now mistranslated.</p>

<p>So, I think the change of 2.6.1-rc1 was not necessarily an improvement,
but 2.6.0 needs a fix.</p>

<p>I can look at the details, but perhaps Vojtech wants to comment.</p>

</quote>

<p>Vojtech Pavlik replied:</p>

<quote who="Vojtech Pavlik">

<p>I won't argue that the 2.6.1-rc situation is correct, but I'll describe
it and the difference from 2.4:</p>

<p>

<ol>

<li>

<p>Keycode 84.</p>

<p>On 2.4, keycode 84 is the SysRq keycode, since historically AT keyboards
do emit a different keycode for SysRq than form PrintScreen, although
they're on the same key.</p>

<p>On 2.6, there is only one keycode for PrintScreen, in an attempt to be a
bit saner, and that is 99. And here comes my mistake - since 84 was not
used anymore, I used it for the "103rd" European key.</p>

<p>The 103rd key usually produces either backslash-bar or hash-tilde, or
other national combo. I believe that 2.4 did emit keycode 43 for it,
since this keyboard is treated the same as backslash by AT Set 2
keyboards, in hardware.</p>

<p>USB keyboards, and Set 3 keyboards, however differentiate between this
key and the real backslash, and since there also can be the real
backslash in addition to this key on the keyboard, it makes sense to
allocate a scancode to it.</p>

<p>Now my snafu was that I allocated a 2.4-used scancode to it, and one
that is mapped to SAK in 2.4 keymaps usually.</p>

<p>This bites French, British and probably Brazilian people, too.</p>

<p>I'm open to suggestions about how to fix it.</p>

</li>

<li>

<p>Keycode 85.</p>

<p>Scancode 85 (translated, set2) at the moment is not mapped to any
keycode. There are other scancodes that are not mapped at all, only
known scancodes are mapped, the rest should be changed by the user.</p>

<p>Keycode 85 is defined as F13 (in keymaps), and is mapped to scancode 93
(both in atkbd.c and keyboard.c), which is F13, according to Microsoft
documentation, which was used as reference, since that's what keyboard
manufacturers tend to follow nowadays.</p>

</li>

<li>

<p>Japanese and Korean keys.</p>

<p>2.6 has unified support for Japanese and Korean keys on both USB and
PS/2 keyboards.</p>

<p>The keycodes are defined as:</p>

<pre>KEY_INTL1  181  /* Romanji */
KEY_INTL2  182  /* Hiragana / Katakana */
KEY_INTL3  183  /* Yen */
KEY_INTL4  184  /* Henkan */
KEY_INTL5  185  /* Muhenkan */
KEY_INTL6  186  /* PC9800 KP , */
KEY_LANG1  190  /* Hanguel */
KEY_LANG2  191  /* Hanja */
KEY_LANG3  192  /* Katakana */
KEY_LANG4  193  /* Hiragana */
KEY_LANG5  194  /* Zenkaku / Hankaku */</pre>

<p>These keycodes are translated back to the PS/2 scancodes in raw mode.</p>

<p>The problem here lies in that that all the keycodes are above 128, and
are different from what 2.4 used for these keys on an AT keyboard.</p>

<p>We could go back to the 2.4 layout, where the keycodes are scattered
where there was space in the translated set2 scancode list, and not even
all fit there, but I think that way lies madness. The 2.6 layout is
based on the USB HUT definition.</p>

</li>

</ol>

</p>

</quote>

</section>

</kc>

