<?xml version="1.0" ?>

<kc>

<title>Kernel Traffic</title>

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

<issue num="34" date="13 Sep 1999 00:00:00 -0800" />

<intro>

<p>Thanks go to Peter Van Eynde, who wrote in a correction to last week's
issue. See his comments in red, at the bottom of <kcref subject="complicated
inline assembly" startdate="23 Aug 1999 00:00:00 -0800"></kcref>. Thanks, Peter!</p>

<p>The migration from http://www.kt.opensrc.org to http://kt.zork.net is
nearly complete. Mark has set up redirects to the Linuxcare pages. If you
haven't updated your bookmarks, you should. Also, as a result of the
migration the mailing lists are no longer functional. I'll let you know when
the new ones get set up.</p>

<p>In kernel news, as of 2.3.18 Linus Torvalds has declared a feature freeze!
Next week's KT will cover that discussion (unless it's still going on). It
looks like Linus is serious about shortening the release cycle. Here's his
post:</p>

<quote who="Linus Torvalds">

<p>Linux-2.3.18 is out there now, and it also marks the
beginning of the long-promised feature freeze for 2.4.x. To make that freeze
more effective, I'm taking two weeks off, just so that you simply CANNOT
tempt me with features.</p>

<p>Thanks to David Hinds and others for the last weeks of merging of PCMCIA
etc, I'm now officially happy.</p>

<p>Note that feature freeze is different from code freeze. We'll still do
updates of drivers etc without being too anal about it, and even completely
new drivers (or possibly filesystems) etc may possibly be accepted as long
as they don't impact _anything_ else and don't imply a completely new
approach to something. Drivers in particular tend to be updated even in the
stable kernel, after all.</p>

<p>But expect me to be less than enthusiastic about even new drivers. New ideas
for core functionality are right out.</p>

<p>The feature freeze should be turning into a code freeze in another two
months or so, and a release by the end of the year. And as everybody knows,
our targets never slip.</p>

<p>And as I said, don't even bother emailing me for the next two weeks, because
you won't be reaching me anyway, and the mail accumulated over the two weeks
will be unceremoniously dumped into a toxic waste container, to be buried in
concrete somewhere at sea. Never to be opened again, in short.</p>

</quote>

</intro>

<stats posts="995" size="4326" contrib="415" multiples="174" lastweek="160">

<person posts="53" size="150" who="Alan Cox " />
<person posts="30" size="170" who="Andrea Arcangeli " />
<person posts="25" size="96" who="Riley Williams " />
<person posts="22" size="135" who="Jeff Garzik " />
<person posts="20" size="54" who="&quot;David S. Miller&quot; " />
<person posts="18" size="66" who="Jens Axboe " />
<person posts="15" size="47" who="Jes Sorensen " />
<person posts="13" size="44" who="Robert Dinse " />
<person posts="11" size="38" who="Steve Dodd " />
<person posts="11" size="31" who="Keith Owens " />
<person posts="10" size="65" who="David Woodhouse " />
<person posts="10" size="35" who="Linus Torvalds " />
<person posts="9" size="65" who="Martin Mares " />
<person posts="9" size="39" who="&quot;Steven N. Hirsch&quot; " />
<person posts="9" size="33" who="Matthew Wilcox " />
<person posts="9" size="32" who=" (david parsons)" />
<person posts="8" size="37" who="Gerard Roudier " />
<person posts="8" size="31" who="Heinz Diehl " />
<person posts="8" size="29" who=" (H. Peter Anvin)" />
<person posts="8" size="26" who="Joe " />
<person posts="8" size="26" who="Paul Ashton " />
<person posts="8" size="21" who="Dan Hollis " />
<person posts="7" size="27" who="Kurt Garloff " />
<person posts="7" size="26" who="Trond Myklebust " />
<person posts="7" size="21" who="Andre Hedrick " />
<person posts="6" size="26" who="Chuck Mead " />
<person posts="6" size="25" who="&quot;Robert de Bath&quot; " />
<person posts="6" size="18" who="&quot;Stephen C. Tweedie&quot; " />
<person posts="5" size="37" who="Dubbs " />
<person posts="5" size="24" who="Dean Martin Townsley " />
<person posts="5" size="19" who="&quot;Daniel J Blueman&quot; " />
<person posts="5" size="15" who="Ralf Baechle " />
<person posts="5" size="14" who="Michael Elizabeth Chastain " />
<person posts="5" size="14" who="Philip Blundell " />
<person posts="5" size="13" who=" (Miquel van Smoorenburg)" />
<person posts="4" size="27" who="Paul Flinders " />
<person posts="4" size="19" who="Bret Indrelee " />
<person posts="4" size="18" who="Hans Reiser " />
<person posts="4" size="16" who="=?iso-8859-1?Q?Gr=E9goire?= FAVRE " />
<person posts="4" size="15" who=" (Zygo Blaxell)" />
<person posts="4" size="15" who="Matthew " />
<person posts="4" size="15" who="Christoph Lameter " />
<person posts="4" size="15" who="Roger Gammans " />
<person posts="4" size="14" who="Karsten Keil " />
<person posts="4" size="14" who="David Weinehall " />
<person posts="4" size="14" who="&quot;Theodore Y. Ts'o&quot; " />
<person posts="4" size="14" who="&quot;Petr Sebor&quot; " />
<person posts="4" size="14" who="Andreas Schwab " />
<person posts="4" size="12" who="&quot;Anthony Barbachan&quot; " />
<person posts="4" size="12" who="Mike Galbraith " />
<person posts="4" size="12" who="Jamie Lokier " />
<person posts="4" size="11" who="Elmer Joandi " />
<person posts="4" size="11" who="Wakko Warner " />
<person posts="4" size="11" who="Tigran Aivazian " />
<person posts="3" size="29" who="Vince Weaver " />
<person posts="3" size="25" who="Benjamin Carter " />
<person posts="3" size="21" who="Markus Hennig " />
<person posts="3" size="19" who="Michael Harnois " />
<person posts="3" size="18" who="Thomas Molina " />
<person posts="3" size="16" who="Marc Lefranc " />
<person posts="3" size="14" who="Harald Koenig " />
<person posts="3" size="13" who="Vladimir Dergachev " />
<person posts="3" size="13" who="Florian Lohoff " />
<person posts="3" size="12" who="Brian Hall " />
<person posts="3" size="12" who="&quot;Petr Vandrovec Ing. VTEI&quot; " />
<person posts="3" size="12" who="Ronald Cole " />
<person posts="3" size="11" who="Tudor Popescu " />
<person posts="3" size="11" who="Juan Carlos Castro y Castro " />
<person posts="3" size="11" who="Arnaldo Carvalho de Melo " />
<person posts="3" size="11" who="David Schleef " />
<person posts="3" size="11" who="Bernhard Rosenkraenzer " />
<person posts="3" size="11" who="Paul Jakma " />
<person posts="3" size="11" who="Benjamin Herrenschmidt " />
<person posts="3" size="10" who="Artur Skawina " />
<person posts="3" size="10" who="Jens Benecke " />
<person posts="3" size="10" who="&quot;Matthew G. Marsh&quot; " />
<person posts="3" size="10" who="Brian Swetland " />
<person posts="3" size="10" who="&quot;Khimenko Victor&quot; " />
<person posts="3" size="10" who="Richard A Nelson " />
<person posts="3" size="10" who="Rik van Riel " />
<person posts="3" size="10" who="&quot;Jim Nance&quot; " />
<person posts="3" size="9" who=" (Rogier Wolff)" />
<person posts="3" size="9" who="&quot;Lourdes A Jones&quot; " />
<person posts="3" size="9" who="Klaus Kudielka " />
<person posts="3" size="9" who="" />
<person posts="3" size="9" who="Marc Mutz " />
<person posts="3" size="9" who="&quot;Robert K. Nelson&quot; " />
<person posts="3" size="9" who="Oliver Xymoron " />
<person posts="3" size="9" who="Rik van Riel " />
<person posts="3" size="9" who="George Bonser " />
<person posts="3" size="8" who="Helge Hafting " />
<person posts="3" size="8" who="" />
<person posts="3" size="8" who="Kuhlburger Ferenc " />
<person posts="3" size="7" who="Walter Hofmann " />
<person posts="3" size="7" who="Alex Buell " />
<person posts="3" size="7" who="" />
<person posts="2" size="74" who="Rolf Braun " />
<person posts="2" size="22" who="Thomas Bierweiler " />
<person posts="2" size="20" who="" />
<person posts="2" size="18" who="Richard Henderson " />
<person posts="2" size="17" who="Patrick Lerda " />
<person posts="2" size="15" who="Thorsten Kranzkowski " />
<person posts="2" size="14" who="Philippe Troin " />
<person posts="2" size="13" who="Radovan Garabik " />
<person posts="2" size="12" who="&quot;Kai Henningsen&quot; " />
<person posts="2" size="11" who=" (Harvey J. Stein)" />
<person posts="2" size="11" who="" />
<person posts="2" size="11" who="Myrdraal " />
<person posts="2" size="10" who="&quot;Terry Katz&quot; " />
<person posts="2" size="10" who="Petr Vandrovec " />
<person posts="2" size="10" who="" />
<person posts="2" size="9" who="Arthur Jerijian " />
<person posts="2" size="9" who="Tim Walberg " />
<person posts="2" size="9" who="Prashant TR " />
<person posts="2" size="9" who="Felipe Eduardo Gonzalez " />
<person posts="2" size="8" who=" (Joachim Schmitz)" />
<person posts="2" size="8" who="&quot;WANG,YIDING (HP-SanJose,ex1)&quot; " />
<person posts="2" size="8" who="" />
<person posts="2" size="8" who="&quot;Mark H. Wood&quot; " />
<person posts="2" size="8" who="&quot;Sean Hunter&quot; " />
<person posts="2" size="8" who="&quot;Nikolay N. Igotti&quot; " />
<person posts="2" size="8" who="Drago Goricanec " />
<person posts="2" size="7" who="Joe " />
<person posts="2" size="7" who="Matthew Kirkwood " />
<person posts="2" size="7" who="&quot;Enrique Bernal&quot; " />
<person posts="2" size="7" who="German Jose Gomez Garcia " />
<person posts="2" size="7" who="Vladimir Dergachev " />
<person posts="2" size="7" who="Alexandre Hautequest " />
<person posts="2" size="7" who="Russell King " />
<person posts="2" size="7" who="David Odin " />
<person posts="2" size="7" who="Miquel van Smoorenburg " />
<person posts="2" size="7" who="Martin Gallant " />
<person posts="2" size="7" who="&quot;Linux Mailing Lists Receiver  " />
<person posts="2" size="7" who="Michael Meskes " />
<person posts="2" size="7" who="Helge Hafting " />
<person posts="2" size="7" who="&quot;Richard B. Johnson&quot; " />
<person posts="2" size="7" who="&quot;David Parsons&quot; " />
<person posts="2" size="6" who="Mark Hahn " />
<person posts="2" size="6" who="Simon Richter " />
<person posts="2" size="6" who="Horst von Brand " />
<person posts="2" size="6" who="david " />
<person posts="2" size="6" who="Goofy McGoon " />
<person posts="2" size="6" who="Mark Veteikis " />
<person posts="2" size="6" who="Junichi Saito " />
<person posts="2" size="6" who="Arjan van de Ven " />
<person posts="2" size="6" who=" (Marc MERLIN)" />
<person posts="2" size="6" who="Johannes Erdfelt " />
<person posts="2" size="6" who="Matthew Harrell " />
<person posts="2" size="6" who="&quot;Christopher E. Brown&quot; " />
<person posts="2" size="6" who="Dave Caswell " />
<person posts="2" size="6" who="Thomas Davis " />
<person posts="2" size="6" who="&quot;Nerijus&quot; " />
<person posts="2" size="6" who="Rene Chaddock " />
<person posts="2" size="5" who="Veeresh Prayaga " />
<person posts="2" size="5" who="Mike Panetta " />
<person posts="2" size="5" who="Henrik Olsen " />
<person posts="2" size="5" who="John LeMay " />
<person posts="2" size="5" who="&quot;Stefan Monnier&quot; " />
<person posts="2" size="5" who="&quot;Theodore Y. Ts'o&quot; " />
<person posts="2" size="5" who="Juanjo Ciarlante " />
<person posts="2" size="5" who="Marcelo Tosatti " />
<person posts="2" size="5" who="&quot;Barry K. Nathan&quot; " />
<person posts="2" size="5" who="" />
<person posts="2" size="5" who="Adam Kumiszcza " />
<person posts="2" size="5" who="Catalin BOIE " />
<person posts="2" size="5" who="Zach Brown " />
<person posts="2" size="5" who="Robert Walsh " />
<person posts="2" size="5" who="Jose Miguel Pereira Tavares " />
<person posts="2" size="5" who="Dale Amon " />
<person posts="2" size="4" who="Jeff Dike " />
<person posts="2" size="4" who="&quot;Chih-Jen Tsai&quot; " />
<person posts="2" size="4" who="Hoang Manh Hung " />
<person posts="2" size="4" who="Matthew Jacob " />
<person posts="2" size="4" who="Bill Huey " />
<person posts="1" size="204" who="David Ronis " />
<person posts="1" size="54" who="" />
<person posts="1" size="40" who="Touko Korpela " />
<person posts="1" size="34" who="Ilpo Ruotsalainen " />
<person posts="1" size="33" who="Simon Kirby " />
<person posts="1" size="29" who="John Hawkes " />
<person posts="1" size="18" who="Eric Lammerts " />
<person posts="1" size="17" who="Matthias Andree " />
<person posts="1" size="14" who="Robert de Vries " />
<person posts="1" size="11" who="Solar Designer " />
<person posts="1" size="9" who="Catalin Muresan " />
<person posts="1" size="9" who="&quot;imel...&quot; " />
<person posts="1" size="8" who="Tom Eastep " />
<person posts="1" size="8" who="DAVID SIMS 1 281 285 7792 " />
<person posts="1" size="7" who="Martin Schenk " />
<person posts="1" size="7" who="" />
<person posts="1" size="7" who="John Aldrich " />
<person posts="1" size="6" who="" />
<person posts="1" size="6" who="Rui Sousa " />
<person posts="1" size="6" who="Jorge Ventura " />
<person posts="1" size="6" who="&quot;Nietzel, Earle R&quot; " />
<person posts="1" size="5" who="&quot;R. Dicaire&quot; " />
<person posts="1" size="5" who="Bear Giles " />
<person posts="1" size="5" who="" />
<person posts="1" size="5" who="Christoph Pleger " />
<person posts="1" size="5" who="&quot;Jim&quot; " />
<person posts="1" size="5" who="Richard Black " />
<person posts="1" size="5" who="Manfred Spraul " />
<person posts="1" size="5" who="Igor Markov " />
<person posts="1" size="5" who="&quot;G. Allen Morris III&quot; " />
<person posts="1" size="4" who="dmitryv " />
<person posts="1" size="4" who="Peter Clark " />
<person posts="1" size="4" who="Shane Shrybman " />
<person posts="1" size="4" who="Takehiro Tominaga " />
<person posts="1" size="4" who="" />
<person posts="1" size="4" who="Mario Mikocevic " />
<person posts="1" size="4" who="Sushil Agrawal " />
<person posts="1" size="4" who="John Stultz " />
<person posts="1" size="4" who="Greg Maxwell " />
<person posts="1" size="4" who=" (G.W. Wettstein)" />
<person posts="1" size="4" who="Piotr Wilkin " />
<person posts="1" size="4" who="FAVRE =?iso-8859-1?Q?Gr=E9goire?= " />
<person posts="1" size="4" who="Mark Cooke " />
<person posts="1" size="4" who="" />
<person posts="1" size="4" who="Pete Toscano " />
<person posts="1" size="4" who="" />
<person posts="1" size="4" who="Stephen Frost " />
<person posts="1" size="4" who="Christian Ehrhardt " />
<person posts="1" size="4" who="Thomas Speck " />
<person posts="1" size="4" who="Alexander Kjeldaas " />
<person posts="1" size="4" who="Glen Turner " />
<person posts="1" size="4" who="Geert Uytterhoeven " />
<person posts="1" size="4" who="Phillip Ezolt " />
<person posts="1" size="4" who="Gaixia Zhang " />
<person posts="1" size="4" who="Gabor Lenart " />
<person posts="1" size="4" who="" />
<person posts="1" size="4" who="David Olofson " />
<person posts="1" size="4" who="Kirk Rafferty " />
<person posts="1" size="4" who="&quot;Michael H. Warfield&quot; " />
<person posts="1" size="3" who="Eduard Vopicka " />
<person posts="1" size="3" who="Jon Freivald " />
<person posts="1" size="3" who="Gary Lawrence Murphy " />
<person posts="1" size="3" who="John DeVale " />
<person posts="1" size="3" who="Kervin " />
<person posts="1" size="3" who="Alan Johnston " />
<person posts="1" size="3" who="&quot;Alex K.&quot; " />
<person posts="1" size="3" who="Pauline Middelink " />
<person posts="1" size="3" who="Matthew Vanecek " />
<person posts="1" size="3" who="&quot;Bryan Burns&quot; " />
<person posts="1" size="3" who="&quot;B. James Phillippe&quot; " />
<person posts="1" size="3" who="&quot;Schmitz, Joachim&quot; " />
<person posts="1" size="3" who="Jeff Long " />
<person posts="1" size="3" who="&quot;Chris Jones&quot; " />
<person posts="1" size="3" who="Chris Siebenmann " />
<person posts="1" size="3" who="&quot;Karsten N. Strand&quot; " />
<person posts="1" size="3" who="Immanuel Scholz " />
<person posts="1" size="3" who="Bharadwaj Yadavalli " />
<person posts="1" size="3" who="&quot;Barrett G. Lyon&quot; " />
<person posts="1" size="3" who="Glenn Burkhardt " />
<person posts="1" size="3" who="Jeff Garzik " />
<person posts="1" size="3" who="Leslie Mikesell " />
<person posts="1" size="3" who="George Staikos " />
<person posts="1" size="3" who="Drew Bernat " />
<person posts="1" size="3" who="Chris Wedgwood " />
<person posts="1" size="3" who="Luke Miller " />
<person posts="1" size="3" who="Karl Peterson " />
<person posts="1" size="3" who="Robbert Muller " />
<person posts="1" size="3" who="Benjamin LaHaise " />
<person posts="1" size="3" who="Drago Goricanec " />
<person posts="1" size="3" who="Sumanth Sukumar " />
<person posts="1" size="3" who="Karim Yaghmour " />
<person posts="1" size="3" who="Frank van Maarseveen " />
<person posts="1" size="3" who="Richard A Nelson " />
<person posts="1" size="3" who="Nix " />
<person posts="1" size="3" who="dmitryv " />
<person posts="1" size="3" who="Marcelo de Paula Bezerra " />
<person posts="1" size="3" who="Erik Mouw " />
<person posts="1" size="3" who="Terry Hardie " />
<person posts="1" size="3" who="Andrew Kieschnick " />
<person posts="1" size="3" who="&quot;John Hayward-Warburton (Programming account)&quot; " />
<person posts="1" size="3" who="T Subramania Sharma " />
<person posts="1" size="3" who="Richard Brunner " />
<person posts="1" size="3" who="&quot;Bill Rugolsky Jr.&quot; " />
<person posts="1" size="3" who="&quot;Rodel T. Viado&quot; " />
<person posts="1" size="3" who="Jason Gunthorpe " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="&quot;John B. Brown&quot; " />
<person posts="1" size="3" who="Eugene Kuznetsov " />
<person posts="1" size="3" who="Douglas Gilbert " />
<person posts="1" size="3" who="Tim Ricketts " />
<person posts="1" size="3" who="Geert Uytterhoeven " />
<person posts="1" size="3" who="Tymm Twillman " />
<person posts="1" size="3" who="&quot;Mr. James W. Laferriere&quot; " />
<person posts="1" size="3" who="Gary Simmons " />
<person posts="1" size="3" who="Horst von Brand " />
<person posts="1" size="3" who="Jesus David Diaz Leal " />
<person posts="1" size="3" who="Ben Pfaff " />
<person posts="1" size="3" who="ak " />
<person posts="1" size="3" who="Lars Marowsky-Bree " />
<person posts="1" size="3" who="sumanth " />
<person posts="1" size="3" who="CaT " />
<person posts="1" size="3" who="Sven Geggus " />
<person posts="1" size="3" who="Stanislav Brabec " />
<person posts="1" size="3" who="Niels Kristian Bech Jensen " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="Mathieu Arnold " />
<person posts="1" size="3" who="Donald Becker " />
<person posts="1" size="3" who="Peter Desnoyers " />
<person posts="1" size="3" who="winfried szukalski " />
<person posts="1" size="3" who="&quot;Michael K. Johnson&quot; " />
<person posts="1" size="3" who="James Fidell " />
<person posts="1" size="3" who="Dan Yocum " />
<person posts="1" size="3" who="Mike Jagdis " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="Chuck Campbell " />
<person posts="1" size="3" who="Robert Norris " />
<person posts="1" size="3" who="&quot;Dmitry V.&quot; " />
<person posts="1" size="3" who="&quot;Michael Hui&quot; " />
<person posts="1" size="3" who="&quot;Forever shall I be.&quot; " />
<person posts="1" size="3" who="&quot;Alexander S. Guy&quot; " />
<person posts="1" size="2" who="Kernel Stuffs " />
<person posts="1" size="2" who="Rick Hohensee " />
<person posts="1" size="2" who="Kai Schulte " />
<person posts="1" size="2" who="Mark Hagger " />
<person posts="1" size="2" who=" &lt;sushil@cse.iitk.ac.in&gt;" />
<person posts="1" size="2" who="Miles Lane " />
<person posts="1" size="2" who="&quot;Stephen R. van den Berg&quot; " />
<person posts="1" size="2" who=" (Peter Benie)" />
<person posts="1" size="2" who="Fuzzy Fox " />
<person posts="1" size="2" who="Karsten Keil " />
<person posts="1" size="2" who="Paul Richards " />
<person posts="1" size="2" who="Sander van Malssen " />
<person posts="1" size="2" who="Julian Anastasov " />
<person posts="1" size="2" who="Bill Anderson " />
<person posts="1" size="2" who="Raphael Gray " />
<person posts="1" size="2" who="Curtis Regentin " />
<person posts="1" size="2" who="Shannon Aldinger " />
<person posts="1" size="2" who="Florian Weimer " />
<person posts="1" size="2" who="Mofeed Shahin " />
<person posts="1" size="2" who="Patrick Mau " />
<person posts="1" size="2" who="Jim Duchek " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who=" (Nick Holloway)" />
<person posts="1" size="2" who="&quot;Bradley D. LaRonde&quot; " />
<person posts="1" size="2" who="Ben Fennema " />
<person posts="1" size="2" who="Martynas Kunigelis " />
<person posts="1" size="2" who="Camm Maguire " />
<person posts="1" size="2" who="Levent =?iso-8859-1?Q?G=FCndogdu?= " />
<person posts="1" size="2" who=" (Frank Heldt)" />
<person posts="1" size="2" who="Jason Nordwick " />
<person posts="1" size="2" who="CCC/STSL Membership Services " />
<person posts="1" size="2" who="&quot;gokhan sozmen&quot; " />
<person posts="1" size="2" who="Mikael Pettersson " />
<person posts="1" size="2" who="Andreas Tobler " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="&quot;Nathaniel G. Eldredge&quot; " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Paul Rusty Russell " />
<person posts="1" size="2" who="Eduardo Soriano " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Philip Blundell " />
<person posts="1" size="2" who="Tom Atkinson " />
<person posts="1" size="2" who="Pierre Kourzanoff " />
<person posts="1" size="2" who="David Hinds " />
<person posts="1" size="2" who="Nate Eldredge " />
<person posts="1" size="2" who="Spirilis " />
<person posts="1" size="2" who="Byron Stanoszek " />
<person posts="1" size="2" who=" (Patrick J. LoPresti)" />
<person posts="1" size="2" who="Ingo Molnar " />
<person posts="1" size="2" who="Phil Wilshire " />
<person posts="1" size="2" who="Dag Wieers " />
<person posts="1" size="2" who="Martin Costabel " />
<person posts="1" size="2" who="David Wragg " />
<person posts="1" size="2" who="SEJKORA Martin " />
<person posts="1" size="2" who="Rajesh Maddali " />
<person posts="1" size="2" who="&quot;David Skingsley&quot; " />
<person posts="1" size="2" who="Shaw Terwilliger " />
<person posts="1" size="2" who="David Livingstone " />
<person posts="1" size="2" who="Michael Cunningham " />
<person posts="1" size="2" who="Larry McVoy " />
<person posts="1" size="2" who="Andreas Bogk " />
<person posts="1" size="2" who="Chris Wedgwood " />
<person posts="1" size="2" who="Andy Barlak " />
<person posts="1" size="2" who="Aaron Tiensivu " />
<person posts="1" size="2" who="&quot;Thomas van Gulick&quot; " />
<person posts="1" size="2" who=" (Guest section DW)" />
<person posts="1" size="2" who="M. Berglund " />
<person posts="1" size="2" who="Bjorn Ekwall " />
<person posts="1" size="2" who="Alan Cox " />
<person posts="1" size="2" who=" (Larry McVoy)" />
<person posts="1" size="2" who="Aaron Lehmann " />
<person posts="1" size="2" who="Phil Blecker " />
<person posts="1" size="2" who="Sean King " />
<person posts="1" size="2" who="&quot;casler, heather&quot; " />
<person posts="1" size="2" who="Kapil Sethi " />
<person posts="1" size="2" who="&quot;Albert D. Cahalan&quot; " />
<person posts="1" size="2" who="Krishna Murthy " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Neil Booth " />
<person posts="1" size="2" who="&quot;Nico Schmoigl&quot; " />
<person posts="1" size="2" who="Fernando Barreto " />
<person posts="1" size="2" who="jean-sebastien milliere " />
<person posts="1" size="2" who="Petko Manolov " />
<person posts="1" size="2" who="Paolo Supino " />
<person posts="1" size="2" who="Raphael Bossek " />
<person posts="1" size="2" who=" (H.J. Lu)" />
<person posts="1" size="2" who="Massoud Asgharifard " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="fito " />
<person posts="1" size="2" who="Flippie Spies " />
<person posts="1" size="2" who="Kamran Karimi " />
<person posts="1" size="2" who="Bob Lorenzini " />
<person posts="1" size="2" who="Gerhard Mack " />
<person posts="1" size="2" who="Thomas Sailer " />
<person posts="1" size="2" who="Richard Gooch " />
<person posts="1" size="2" who="Xavier Leclercq " />
<person posts="1" size="2" who="Joerg =?iso-8859-1?Q?Str=F6ttchen?= " />
<person posts="1" size="2" who="Mario Donato Marino " />
<person posts="1" size="2" who="Frank Peters " />

</stats>

<section
  title="VMWare Discombobulates The System"
  subject="2.2.12 doesn't lock cdrom drive door"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9908_04/msg00967.html"
  posts="6"
  startdate="28 Aug 1999 00:00:00 -0800"
  enddate="01 Sep 1999 00:00:00 -0800"
>
<topic>Ioctls</topic>

<p>Walter Hofmann complained about 2.2.12 failing to lock his CDROM drive door
when mounted, but under the Subject: <a
href="http://kernelnotes.org/lnxlists/linux-kernel/lk_9908_05/msg00048.html">Re:
linux-kernel-digest V1 #4372</a>, he reported, <quote who="Walter
Hofmann">This only happens after someone has used vmware on the computer.
OTOH it is strange that Linux can't lock the door even after vmware has
terminated.</quote> Alan Cox explained, <quote who="Alan Cox">Vmware isnt a
unix application constrained by the OS. It does hardware level stuff of its
own,</quote> but Jens Axboe put in, <quote who="Jens Axboe">I think that
VMWare actually disables door locking and control it manually with an ioctl
to get complete control over it. That's what they told me, anyway, but not
having the source does not allow me to check. It sounds like that is causing
problems - I bet that they never re-enable door locking again. Take the
problem up with them,</quote> and Walter replied that he had filed a bug
report via their web form.</p>

</section>

<section
  title="Kernel Crypto Issues"
  subject="idea: MAC level compression &amp; crypto"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9908_04/msg01026.html"
  posts="29"
  startdate="28 Aug 1999 00:00:00 -0800"
  enddate="03 Sep 1999 00:00:00 -0800"
>
<topic>Compression</topic>

<mention>Alan Cox</mention>

<p>In the course of discussion, Alan Cox mentioned that crypto hooks
<em>still</em> can't go in the main kernel tree because of US laws. Elmer
Joandi was surprised that even hooks were prohibited, since they weren't
actually crypto.</p>

<p>David Woodhouse explained:</p>

<quote who="David Woodhouse">

<p>The US Government, in
its wisdom, has decreed that crypto hooks aren't allowed to be exported
either.</p>

<p>Presumably that's because without the hooks, we foreigners aren't even
clever enough to link in the existing crypto we've already smuggled from the
US, so that rule will stop us from using crypto just as effectively.</p>

<p>However, I believe you're allowed to export hooks if they're for
compression. Apparently we're not clever enough to plug crypto modules into
compression hooks either :)</p>

</quote>

<p>There was a discussion of the unenforcability and naivete of the US laws,
and how those laws are getting worse not better, even though countries like
France have abandoned similar crypto policies.</p>

</section>

<section
  title="Linus Opposed To Raw IO"
  subject="Streaming disk I/O: don't use raw, limit bufs per device/partition"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9908_04/msg01062.html"
  posts="3"
  startdate="28 Aug 1999 00:00:00 -0800"
  enddate="01 Sep 1999 00:00:00 -0800"
>
<topic>Raw IO</topic>

<p>In the course of discussion, Linus Torvalds said:</p>

<quote who="Linus Torvalds">

<p>I do not believe in raw IO - even
for streaming audio it's just too common for the data to have been available
in the cache, and by using raw IO you (for absolutely no good reason) just
made the machine do more IO than it should have.</p>

<p>There are very specific cases where the application knows that its dataset
is larger than physical memory, but those tend to be limited to quite large
problems. And they're getting larger.</p>

<p>But having a better way to decide what to throw out - that I am a strong
believer in.</p>

</quote>

</section>

<section
  title="ReiserFS Nears Readiness; Difficulties Discussed"
  subject="vm kills processes in our 2.3.12 port of reiserfs - what was the story on the changes to mark_buffer_dirty() and the too many dirty buffers issue?"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9908_04/msg00694.html"
  posts="18"
  startdate="29 Aug 1999 00:00:00 -0800"
  enddate="01 Sep 1999 00:00:00 -0800"
>
<topic>Code Freeze</topic>
<topic>FS: NFS</topic>
<topic>FS: ReiserFS</topic>
<topic>FS: ext2</topic>
<topic>SMP</topic>
<topic>Virtual Memory</topic>

<p>Hans Reiser had reiserfs running on 2.3.12, but 'dbench' was suffering from
processes getting killed for memory request failures. Hans remembered that
some 2.2.x code in mark_buffer_dirty(), intended to address that very issue,
had been dropped from 2.3.x; the problem did not occur with ext2fs instead
of reiserfs; and Hans asked additionally why vm chose to kill rather than
stall the offending processes. Andrea Arcangeli posted a patch that he felt
would solve the problem, and explained:</p>

<quote who="Andrea Arcangeli">

<p>I think it's because
mark_dirty_buffer doesn't enforce a limit in the grow of dirty buffers in
the system.</p>

<p>Baically the buffer code checks if there are too much dirty buffers only for
the data writes (because data writes usually pass through
block_write_partial_page or the other equivalent filesystem-helper functions
in 2.3.x).</p>

<p>So if your filesystem writes 120Mbyte of metadata before the first data
write, then you can fill the buffer cache with 120mbyte of dirty buffers
without blocking the application waiting for some write-I/O completation.
This unlimited grow of unfreeable memory in cache may lead to the VM
subsystem to be not able to recycle the cache in time and so the tasks that
needs memory will be killed (as happened in the early 2.2.x).</p>

</quote>

<p>In the course of discussion, Hans added that this was the final issue
preventing reiserfs from getting into 2.3.x; and that journalling was late
ALPHA and almost ready for actual use. Elsewhere, he added, <quote who="Hans
Reiser">We have hired an SMP specialist, and he is
going to dump all our schedule tracking crud that currently causes us to
have our own version of getblk, etc., but it will take him time to do that,
as he is new,</quote> but he also expressed some dismay, <quote who="Hans
Reiser">I think it is more than a little unfair to
let the ext2 folks rewrite VFS and ext2 in parallel, and then announce an
impending code freeze right after VFS has been radically changed.</quote></p>

<p>To this last, Theodore Y. Ts'o replied, <quote who="Theodore Y. Ts'o">For the record, it wasn't the "ext2 folks" that rewrote VFS,
and most of the changes happened fairly early in the 2.3 kernel series. If
you had been following the 2.3 kernel development, you should have had
plenty of time to deal with the VFS changes. It wasn't like the VFS changes
went in just before the code freeze.</quote></p>

<p>Linus Torvalds also replied to Hans' complaint, saying:</p>

<quote who="Linus Torvalds">

<p>Well, the ext2 folks actually
didn't have any input on that side at all.</p>

<p>It's just that the people who DID have input on the new VFS layer (really
just Ingo and me, although some others at least saw what happened) only used
ext2 (and in my case NFS - NFS to some degree was actually the first "real"
page cache client).</p>

<p>The page cache design was actually done with the notion of "let's not care
how filesystems do this now, let's just care about how we _want_ it done",
and the new code should be pretty easy to use for new filesystems. It can be
a real bitch to integrate old filesystems to, though, although there was a
lot of work to make it easier for the common cases.</p>

</quote>

</section>

<section
  title="Announce: Performance-Monitoring Counters Patch V. 0.5 Is Out"
  subject="Announce: release 0.5 of x86 performance-monitoring counters patch"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9908_05/msg00077.html"
  posts="9"
  startdate="30 Aug 1999 00:00:00 -0800"
  enddate="30 Aug 1999 00:00:00 -0800"
>
<topic>SMP</topic>

<p>Mikael Pettersson gave a pointer to <a
href="http://www.csd.uu.se/~mikpe/linux/">http://www.csd.uu.se/~mikpe/linux/</a>
and announced:</p>

<quote who="Mikael Pettersson">

<p>I've updated my x86
performance-monitoring counters patch, which provides user-space access to
the performance-monitoring counters (PMCs) in Intel P5/P6, Cyrix, and
WinChip processors. The current version is release 0.5 for kernel 2.3.15.</p>

<p>The current release provides</p>

<ol>

<li>virtual PMCs and TSCs that are saved and resumed automatically as
processes are,</li>

<li>hardware support for Intel, Cyrix, and IDT WinChip [the AMD K7 may be
supported if I can find the appropriate documentation], and</li>

<li>a "remote-control" feature which allows "monitor" processes to control
and sample the PMCs of other processes. The code should be SMP-safe,
although I have not been able to test it on an SMP machine.</li>

</ol>

<p>(Item (3) is the main change since the previously announced release 0.2 from
June.)</p>

</quote>

</section>

<section
  title="sysinfo Struct Incompatible Changes Between 2.2.x And 2.3.x"
  subject="2.3.16-1: 'struct sysinfo' ABI has incompatible change"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9908_05/msg00246.html"
  posts="3"
  startdate="30 Aug 1999 00:00:00 -0800"
  enddate="31 Aug 1999 00:00:00 -0800"
>

<mention>Michael Elizabeth Chastain</mention>

<p>Michael Elizabeth Chastain noticed that some new variables had been added to
the sysinfo struct (passed as an argument in the sysinfo() system call) in
2.3.16, and pointed out that this change in the struct's size would cause
2.2.x clients to give strange results on 2.4.x servers, and would cause
actual memory corruption in the case of 2.4.x clients of 2.2.x servers.</p>

<p>Peter Benie replied, <quote who="Peter Benie">The
sysinfo interface produces strange effects anyway - you can't tell if a
particular field is valid or not without using a lookup table from kernel
version numbers to fields. A version number, a set of flags or some other
indicator could be added to the structure so applications tell what values
the system filed in. (The caller would have to initialise the version to 0
to detect the current interface.)</quote> david parsons pointed out that in
properly implemented programs, a sysinfo() call compiled on an earlier
kernel will still work when run on a later one.</p>

</section>

<section
  title="BSDi Timestamp Bug"
  subject="Linux + ISDN + SLOW speed on BSDI systems"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9908_05/msg00277.html"
  posts="5"
  startdate="31 Aug 1999 00:00:00 -0800"
  enddate="01 Sep 1999 00:00:00 -0800"
>
<topic>BSD</topic>
<topic>FS: sysfs</topic>
<topic>Networking</topic>

<p>Bas Oude Nijeweme found that for any 2.2 or 2.3 kernel, he got a very low
transfer rate on data coming from BSDI systems. Connections to non-BSDI
boxes had normal transfer rates. David S. Miller suggested turning TCP
timestamps off by giving a "echo "0" &gt;/proc/sys/net/ipv4/tcp_timestamps"
command, and explained, <quote who="David S. Miller">There are some known bugs in BSDi's TCP timestamp
implementation, and the consequence of this bug (when hit) is that packets
are completely dropped and performance suffers.</quote> Bas reported
ecstatic success. EOT.</p>

</section>

<section
  title="tsx-11.mit.edu Upload Lag"
  subject="watchdog location"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9908_05/msg00282.html"
  posts="3"
  startdate="31 Aug 1999 00:00:00 -0800"
  enddate="01 Sep 1999 00:00:00 -0800"
>

<p>Michael Meskes said he had to change the primary location of his <a
href="ftp://tsx-11.mit.edu/pub/linux/sources/sbin/">watchdog</a> program,
explaining that the <a href="ftp://tsx-11.mit.edu">TSX-11 FTP site</a> had
stopped processing its incoming queue, and email to the archive team went
unanswered.</p>

<p>Theodore Y. Ts'o replied:</p>

<quote who="Theodore Y. Ts'o">

<p>Umm, oops.
&lt;blush&gt;</p>

<p>TSX-11 has been in &lt;&lt;media res&gt;&gt; most of the summer, since it's
been in between a (half-finished) computer upgrade, and I (and the other
archive team members) have been consumed with other activities. In my case,
it was due to my changing jobs. I've updated the watchdog deamon, and I will
be working on processing the rest of the incoming queue this week.</p>

<p>In the meantime, if you don't get an answer sent to the archive e-mail
address, please try sending mail directly to me (<a
href="mailto:tytso@mit.edu">tytso@mit.edu</a>). I'll make sure it gets dealt
with.</p>

<p>I should have the hardware transition finished this month, and things should
be better after that. I apologize for the disruption and the inconvenience.</p>

<p>In the meantime, of course, if you choose to change the primary location of
the watchdog deamon to another FTP server, I really can't blame you. Again,
my apologies.</p>

</quote>

<p>This explanation satisfied Michael, and he said he wasn't going to switch
his primary site after all.</p>

</section>

<section
  title="Files Appear Multiple Times Over NFS Under 2.3.x"
  subject="NFS bug in 2.3.13?"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9908_05/msg00283.html"
  posts="3"
  startdate="31 Aug 1999 00:00:00 -0800"
  enddate="31 Aug 1999 00:00:00 -0800"
>
<topic>FS: NFS</topic>

<mention>Larry McVoy</mention>
<mention>David S. Miller</mention>

<p>Larry McVoy noticed that with NFS under 2.3.13, readdir() would report a
given file multiple times in the same directory, and he was also seeing
"nfs_dentry_delete: src/LOD: ino=879232717, count=2, nlink=1" messages.
David S. Miller replied that this was a known problem with 2.3.x, on his
TODO list, and would definitely be fixed before 2.4 came out.</p>

</section>

<section
  title="'ping' DoS Exploit"
  subject="Userlevel ARP request"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9908_05/msg00319.html"
  posts="7"
  startdate="31 Aug 1999 00:00:00 -0800"
  enddate="31 Aug 1999 00:00:00 -0800"
>
<topic>Security</topic>

<p>Mike Panetta asked if the kernel would allow a user-mode program to test if
a machine was on a given IP, based on an ARP on that IP. Richard B. Johnson
said there was no problem, and suggested "if ping -c 1 hostname ; then
do_something ; fi", explaining, <quote who="Richard B. Johnson">Warning. If you intend to create a program like the
Micro$garbage stuff that pings every possible IP address on your network to
see if some host is up, you will find a lot of unhappy network neighbors.
ARP requests are broadcast. Without disabling your network, you can't filter
them out. This means that they are received by every ISR on every machine
and dumped on the floor. This can (read will) consume 80 to 90 percent of
available CPU cycles on every connected machine, slowing all machines down
to a crawl, when you have a hundred or more Micro$garbage machines pinging
all possible hosts on the LAN. Micro$garbage has been contacted, threatened
with Lawsuits, etc., but they don't even reply to registered mail.</quote></p>

</section>

<section
  title="PCI Enhancements For 2.3.16-pre1"
  subject="PATCH: PCI changes for pre-2.3.16-1"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9908_05/msg00310.html"
  posts="21"
  startdate="31 Aug 1999 00:00:00 -0800"
  enddate="03 Sep 1999 00:00:00 -0800"
>
<topic>PCI</topic>
<topic>Power Management: ACPI</topic>

<p>Martin Mares posted a patch against 2.3.16-pre1, containing a batch of
changes to the PCI subsystem. He summarized the changes:</p>

<quote who="Martin Mares">

<ol>

<li>Updated Documentation/Changes.</li>

<li>Added pcibios_assign_resource() to arch-dependent code.  This function
should handle address assignment when a new device (or, more frequently, a
new [read: misconfigured] region on an old device) is found.</li>

<li>Changed i386 bios32.c to use pcibios_assign_resource() for all
allocations.</li>

<li>Distinguish between pci_dev-&gt;name (only bus/slot/function, used for
PCI subsystem initialization messages) and pci_dev-&gt;full_name (used for
resource management stuff).</li>

<li>Added pci_find_capability which is a library function to be used by
drivers whenever they need to walk the PCI capability lists.</li>

<li>Removed pci_dev-&gt;master flag.</li>

<li>pci_scan_bus: If the bus already exists, don't attempt to scan it again
(yes, there really exist machines with a single bus behind two different
bridges [a host bridge and a fake PCI-to-PCI bridge], argh).</li>

<li>/proc/pci works again.</li>

<li>Modified the /proc/pci output format.  I've left out several
non-interesting status bits like devsel timing, but I tried to keep as close
to the original format as possible not to break programs parsing this file
(ugh!).</li>

<li>Removed PCI_REGION_* macros.</li>

<li>Added fixup for broken S3 cards reporting 32M region sizes instead of
64M.</li>

<li>Changed allocation of PCI resources -- we really need to know about
address ranges assigned to individual PCI buses to be sure which addresses
are free and which are routed to which bus. Each bus now has four pointers
to resources from which are all resources of devices on this bus allocated
(see pci_find_parent_resource() for a matching algorithm). As usually,
everything can be overriden in arch-specific code.</li>

<li>Removed the i448BX fixup as it was superseded by the bus resource
management changes.</li>

<li>resource.c: ioport_resource should have IORESOURCE_IO flag set,
iomem_resource likewise.</li>

</ol>

</quote>

<p>To item #4, Linus Torvalds had a minor technical objection:</p>

<quote who="Linus Torvalds">

<p>This is just crap.</p>

<p>You should NOT use bus/slot/fn in the name. For identification purposes, you
can just use the numbers in the "struct pci_dev" thing directly - no need to
try to continually get them into the name, because they are already
available as pure numbers.</p>

<p>Numbers are numbers, and should be of type "int" or similar.</p>

<p>Text is text, and should be of type "char []".</p>

<p>Why do you have this need to mix the two?</p>

</quote>

<p>Martin replied:</p>

<quote who="Martin Mares">

<p>For "normal" purposes when
we need to report information about the device itself (as in /proc/ioports),
we surely should use the full name which contains only vendor and device.</p>

<p>For "special" purposes like error messages printed by PCI init code or by
device probing in drivers, it's more important to let the user know the bus
and the slot, not the real name of the device. Hence, you can think of
pci_dev-&gt;name as of name of the _slot_ and pci_dev-&gt;full_name as of
name of the _device_, but we really need both of them.</p>

</quote>

<p>Linus agreed, but he added:</p>

<quote who="Linus Torvalds">

<p>the thing I object to is to saving
that special string away, when the information exists there as-is. I really
don't see the advantage of</p>

<pre>        printk("%s", dev-&gt;name);</pre>

<p>over the much clearer</p>

<pre>        printk("%d:%d:%d", BUS(dev), SLOT(dev), FN(dev))</pre>

<p>Sure, the latter is slightly longer, but at least it's obvious what it
will actually print out - it's clear that now we're printing out the
_position_ of the card rather than it's "name".</p>

</quote>

<p>Elsewhere, under the Subject: <a
href="http://kernelnotes.org/lnxlists/linux-kernel/lk_9909_01/msg00012.html">PCI
patch for 2.3.16</a>, Martin posted another patch, explaining:</p>

<quote who="Martin Mares">

<p>The PCI saga continues ...
there is a small patch against 2.3.16:</p>

<ol>

<li>pci_dev-&gt;slot_name defined and used (I hope this variant is not
confusing anymore)</li>

<li>Use PCI BIOS IRQ routing table (if available) to find all the peer
buses. This should be a way more reliable than the peer bridge magic we were
using before (and still are using if there is no routing table).</li>

</ol>

<p>The remaining things I'd like to solve before 2.4 (except for bug fixes, of
course :)) :</p>

<ol>

<li>Introduce some mechanism for manual setting of the kernel view of IRQ's,
so that people having motherboards with broken BIOSes can fix the things
manually.</li>

<li>Write a script creating devlist.h from the pci.ids file.</li>

<li>Write helper functions for allocation/freeing of PCI resources. As far
as I remember, we didn't agree yet whether there should be a single function
allocating all the resources (and drivers with special needs not using it)
or a function for allocating a single resource (called multiple times by
each driver). I prefer the first solution as it can be implemented as a
`pci_enable_device()' type function which could do things like waking up
powered down devices as well.</li>

</ol>

</quote>

<p>To the first item of Martin's second list, Linus replied:</p>

<quote who="Linus Torvalds">

<p>I expect this to blow up for a
number of people - how certain are you that all BIOSes really do this right?
I'd be surprised if there weren't problems with pointers to &gt;64kB
segments etc on various architectures, resulting in nonbootable systems.</p>

<p>As far as I know, the information should be in the ACPI tables, and those
should be findable without any BIOS calls.</p>

<p>Quite frankly, I'm not willing to start to use more BIOS calls that are
likely to be broken on some (unlikely) machines just to avoid problems on
other (unlikely) machines. EVERY time we've had a BIOS interface, we've had
trouble on some machines. We don't want to go down that path.</p>

</quote>

<p>But David Hinds pointed out, <quote who="David Hinds">Actually, the PCI interrupt mapping tables are often
available without using any BIOS calls. You can just scan 0xf0000-0xfffff
for a special signature ('$PIR') and read the table directly: this is one of
the defined ways of retrieving this information. I do this in the current
PCMCIA code to get the interrupt assignments for CardBus bridges.</quote></p>

</section>

<section
  title="NFS Fixes"
  subject="NFSv3: Summary of recent bugfixes/updates to the NFSv3 patches..."
  archive="../unavailable.html"
  posts="10"
  startdate="31 Aug 1999 00:00:00 -0800"
  enddate="02 Sep 1999 00:00:00 -0800"
>
<topic>FS: NFS</topic>
<topic>Networking</topic>
<topic>SMP</topic>

<mention>Steven N. Hirsch</mention>

<p>Trond Myklebust reported:</p>

<quote who="Trond Myklebust">

<p>A few longstanding, but
important bugs have been fixed recently in the NFSv3 patches for linux. I'd
therefore like to point out a few of these recent (past 3 weeks) fixes and
cleanups:</p>

<strong>SunRPC code</strong>

<ol>

<li>NFS over TCP now works as expected. Previous versions were a tad
unreliable, with transfer speeds being a factor 10 or so lower than the UDP
(when the thing wasn't hanging 8-(). Now tests indicate a reduction in speed
is of the order 20% on a local network, which is more in line with
expectations. I'd be very interested in hearing other people's experiences
here.</li>

<li>

<p>Problem of waiting on socket buffer memory fixed. If a socket buffer
runs out of write buffer memory (there's only 64k per socket), the code will
now sleep (or send off requests to other NFS partitions) until there is
enough free memory.</p>

<p>This problem was the cause of a certain amount of network storms against
Solaris machines. The latter prefer 32k wsizes (+ RPC call header), meaning
that the socket could only buffer 1 request at a time. This lead to the
transmission looping and sending off lots of headerless UDP fragments.</p>

</li>

<li>Spinlocking for improved SMP safeness. In principle, the kernel lock
should be held whenever we're in the RPCIOD code, or the NFS code. There
was, however, some indication of corruption of wait queues on SMP-machines.
Possibly due to manipulations of the queue in interrupts and/or
bottom_halves?</li>

</ol>

<strong>NFS code</strong>

<ol>

<li>A long-standing memory leak involving large reads has been fixed (if the
read failed, the allocated pages beyond 4k were sometimes not being freed).</li>

<li>Renaming of directories should now be fixed again.</li>

<li>

<p>New stale inode detection. Is much more relaxed. This means that we
avoid races with stale file handles. It should hopefully also work better
than the old code against named sockets.</p>

<p>In addition, the NFSv3 inode allocation code has been rewritten for greater
clarity.</p>

</li>

<li>The updating of 'atime' should hopefully be a bit more consistent. If
we've been reading the file from the cache, then the cached value of atime
won't get set back again by the next write/getattr/whatever statement that
happens to return the server's idea of what atime should be.</li>

</ol>

<p>The current version of the NFSv3 patches is 0.11.6. It should patch cleanly
against stock linux-2.2.10, 2.2.11 and 2.2.12. You may pick up the latest
NFSv3 patches at: <a
href="http://www.fys.uio.no/~trondmy/src/linux-2.2.12-nfsv3.dif.bz2">http://www.fys.uio.no/~trondmy/src/linux-2.2.12-nfsv3.dif.bz2</a></p>

<p>Please note that in order to mount NFSv3 partitions, you will need a patched
version of the 'mount' command. A Redhat 6.0 RPM can be found at <a
href="http://www.fys.uio.no/~trondmy/src/nfsv3-mount/mount-2.9o-1.2.i386.rpm">http://www.fys.uio.no/~trondmy/src/nfsv3-mount/mount-2.9o-1.2.i386.rpm</a>.
The source RPM can be found in the same directory. In addition, there is a
patch against stock 'mount-2.9o'.</p>

<p>Finally: please note the existence of a TODO list
which should (hopefully) be updated regularly with known
bugs/missing features etc. Please find the latter at: <a
href="http://www.fys.uio.no/~trondmy/src/TODO">http://www.fys.uio.no/~trondmy/src/TODO</a></p>

</quote>

<p>Steven N. Hirsch asked if these would apply cleanly to an otherwise-stock
2.2.12 kernel with HJ Lu's server patches previously added, then replied to
himself after trying it: there had only been a few small conflicts, but even
after installing the new kernel, a longstanding problem he'd been having
(which he'd reported weeks before) still persisted. 'lockd' had been oopsing
as soon as it tried to exercise locks against another server.</p>

<p>There was a bit of a bug hunt, some patches were exchanged, and finally some
error output revealed the problem. Trond moaned, posted a patch, and said,
<quote who="Trond Myklebust">Another 'nlmclnt_'
misnomer. I didn't remember that nlmclnt_async_call is used by the server
code too when I put in the fix for 'setuid' processes which inherit open
files..</quote></p>

<p>Steven reported success. End Of Thread.</p>

</section>

<section
  title="Upcoming LDP Book: &quot;Professional Linux Kernel Programming"
  subject="Call for Authors: Open Publishing licenced Kernel Programming Book"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9908_05/msg00341.html"
  posts="3"
  startdate="31 Aug 1999 00:00:00 -0800"
  enddate="01 Sep 1999 00:00:00 -0800"
>
<topic>SMP</topic>

<p>Gary Lawrence Murphy announced:</p>

<quote who="Gary Lawrence Murphy">

<p>Logic and Reason
have prevailed: Macmillan has agreed to publish our Kernel Programming Book
under the OPL, and I have agreed to use docbook as the authoring process to
ease later migration of all sections of the book back into the <a
href="http://www.kernelnotes.org/LDP/">LDP</a>.</p>

<p>This is not a "module programming" book; Alessandro is much better at that
than I could ever hope to be, and that is the way it should be.
"Professional Linux Kernel Programming" is a guide for people who need to
get under the hood and leverage the freedoms of the GPL in employing Linux
for specialized applications. There will be material on driver programming,
but this is not the primary focus of this book. The book will also focus on
the 2.2/2.3 kernels and while we hope to also include whatever is known
about 2.4/2.5, there is very little need to support 2.0/2.1 (Beck &amp; al have
already done this admirably)</p>

<p>We are looking at a Dec 31 deadline for all submissions, and we are
currently seeking contributing authors for sections including</p>

<ul>

<li>the network layer and the network devices</li>

<li>SMP, IPC and Memory management</li>

<li>salvaging investments in NT drivers</li>

<li>kernel programming tools, debugging and 'best practices'</li>

<li>the sound systems</li>

</ul>

<p>When we are done, we hope to leave behind a complete opus of papers in the
LPD to cover programming issues in the entire kernel. We have a table of
contents online at <a
href="http://members.xoom.com/teledynamics/book">http://members.xoom.com/teledynamics/book</a>
and invite your comments.</p>

<p>Anyone interested in participating in this project is invited to contact me
directly at <a href="mailto:garym@canada.com">garym@canada.com</a> or by
phone at 519-422-2723</p>

</quote>

</section>

<section
  title="PCI Layer Broken In 2.3.x For All But i386"
  subject="arch/alpha/kernel/bios32.c won't compile (2.3.15,2.3.16-1)"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9908_05/msg00344.html"
  posts="2"
  startdate="31 Aug 1999 00:00:00 -0800"
  enddate="31 Aug 1999 00:00:00 -0800"
>
<topic>PCI</topic>

<mention>Richard Henderson</mention>

<p>Thorsten Kranzkowski reported that arch/alpha/kernel/bios32.c wouldn't
compile in 2.3.15 and 2.3.16-pre1. Martin Mares explained, <quote who="Martin
Mares">2.3.15 contains new PCI layer code and only
the i386 port has been updated to work with it. Richard Henderson has
already fixed Alpha code, so expect it in the next kernel release.</quote></p>

</section>

<section
  title="NFS In The Linus Tree"
  subject="NFS under 2.2.12"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9908_05/msg00350.html"
  posts="27"
  startdate="31 Aug 1999 00:00:00 -0800"
  enddate="03 Sep 1999 00:00:00 -0800"
>
<topic>Disk Arrays: RAID</topic>
<topic>FS: NFS</topic>

<p>Robert K. Nelson was having NFS trouble, and in the course of discussion
Alan Cox said, <quote who="Alan Cox">2.2.12 itself seems to be rock solid as
far as the 2.2.12 knfsd goes. I've also run the patches and tools from HJ Lu
with no problems. The only reason they don't go in is the tool
change.</quote> Sven Geggus pointed out that distributions like Red Hat were
shipping without the new tools, so <quote who="Sven Geggus">If you get a
2.2.x Kernel from kernel.org running on a Redhat 6.0 Basesystem. NFS will no
longer work :(</quote></p>

<p>Alan confirmed this, saying, <quote who="Alan Cox">Yep. Because the knfsd shipped with 2.2.x isnt good enough,
but if I upgrade stuff in the kernel to need new tools people get all pissy
and obnoxious as they did with raid. So you can apply the knfs patches
yourself. I strongly recommend you and every vendor does that.</quote></p>

<p>Matthew Kirkwood expressed his views:</p>

<quote who="Matthew Kirkwood">

<p>At risk of turning
linux-kernel into a me-too-fest I would very much like to see the knfsd
patches go into 2.2.next (and also 2.3.next).</p>

<p>Alan has put in a lot of hard work to move 2.2 towards stability and I, for
one, am more than a little disturbed to see that impeded by a few whiners
who can't be bothered to upgrade one small support package.</p>

<p>At some stage, the distributors are going to have to bite the bullet and
issue kernel updates. There were simply too many bugs fixed between
2.2.5(+bits) and 2.2.13pre for Red Hat (for example) to sit on these kernels
until 6.1 (I hope).</p>

<p>So they're left with a choice of:</p>

<ol>

<li>2.2.something (say 13) as-is.  knfsd doesn't work.</li>

<li>2.2.13 + the knfsd patches that shipped in their original kernel. knfsd
works, but not as well as it might.</li>

<li>2.2.13 + the new knfsd patches.  They'll also have to issue a knfsd
update. Everything works as well as is possible with the software currently
available.</li>

</ol>

<p>Option 3 is the only viable solution as far as I'm concerned.</p>

<p>Perhaps if 2.2.13 proves solid, we can leave the old-tool-people there, and
push the knfsd patches into 2.2.14. That way, nobody needs to feel left
out.</p>

</quote>

<p>Frank van Maarseveen said to Alan, <quote who="Frank van Maarseveen">Ahh, now I understand why these patches haven't gone into
the kernel: you're concerned about the compatibility with existing linux
2.2.x distributions and installations. I've always thought the patches
weren't stable enough yet.</quote></p>

<p>Miquel van Smoorenburg also replied to Alan, saying:</p>

<quote who="Miquel van Smoorenburg">

<p>Well Alan, with
RAID the upgrade was pretty dangerous - you had to mess around with
converting important, critical config files by hand (mdtab -&gt; raidtab)
and people feared they could lose their data. At least I did. And if you
created a new style RAID partition there was no way to go back to a kernel
&lt; 2.2.12.</p>

<p>All of those facts do not apply to the kernel NFS server upgrade. It's just
a tools upgrade, there is _no_ chance of data loss at all. If you want to go
back to 2.2.12, downgrade the tools, be done.</p>

</quote>

<p>David S. Miller added:</p>

<quote who="David S. Miller">

<p>Another factor which people have to keep in mind is how many
people are using RAID heavily in 2.2.x and not using the new RAID stuff.</p>

<p>And one cannot judge this simply by the loudness or number of the people who
complain (unhappy people are loud, happy people are mostly silent). My
personal judgement says there are more people slaving away at adding the
RAID patches to the standard kernel than those who need to go through the
RAID upgrade process.</p>

</quote>

</section>

<section
  title="kerneld"
  subject="Another Stupid Question - kerneld"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9908_05/msg00427.html"
  posts="3"
  startdate="31 Aug 1999 00:00:00 -0800"
  enddate="01 Sep 1999 00:00:00 -0800"
>

<p>Robert Dinse asked, <quote who="Robert Dinse">If you
don't have loadable module support compiled into the kernel, is there any
need to run kerneld?</quote> and Riley Williams replied, <quote who="Riley
Williams">No - and if you're running a 2.2 kernel,
there's NEVER any need to run kerneld either...</quote> EOT.</p>

</section>

<section
  title="Progress On Driver For Maestro Audio Chip"
  subject="more maestro pounding"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9908_05/msg00434.html"
  posts="1"
  startdate="01 Sep 1999 00:00:00 -0800"
  enddate="01 Sep 1999 00:00:00 -0800"
>
<topic>Sound: Maestro</topic>
<topic>Sound: OSS</topic>

<p>Zach Brown gave a pointer to <a
href="http://people.redhat.com/zab/maestro/">OSS linux driver for the ESS
Maestro family of audio chips</a> and announced:</p>

<quote who="Zach Brown">

<p>more progress on the
OSS/maestro front. Output is feeling much better now. It doesn't leak memory
and doesn't jitter when you don't feed it quickly enough. Happiness.</p>

<p>Its still quite sick on some chip/codec pairs, this is annoying me to no
end. I'd appreciate if people could send me blindingly specific reports on
hardware success/failure. Its expected to work on most simple maestro 1/2
single codec setups, but when you start getting into 2e multi codec docking
nuttiness the forecast gets grim.</p>

<p>recording is still hopelessly broken and there are still weird mixer
interface barfos, both of which I intend to address next.</p>

<p>evil mmap() hacks may happen eventually also.</p>

</quote>

</section>

<section
  title="Longstanding CDROM Bug Fixed For 2.3.x"
  subject="CDROM bug in 2.3.x"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9909_01/msg00049.html"
  posts="3"
  startdate="01 Sep 1999 00:00:00 -0800"
  enddate="02 Sep 1999 00:00:00 -0800"
>
<topic>Disks: SCSI</topic>

<p>David S. Miller said:</p>

<quote who="David S. Miller">

<p>This one has been there
for a while, and I finally sat down just now to track it down.</p>

<p>What I see is that the generic cdrom driver is passing down packet commands
with a buffer length which is negative. I see that some of the cgc command
building routines are setting negative buffer lengths on purpose.</p>

<p>This is illegal and is confusing SCSI drivers quite badly, because the scsi
command will have SCpnt-&gt;request_bufflen &lt; 0 and this will be given to
the controller for the DMA request.</p>

<p>I don't know what the intentions were here, but this does need to be fixed
somehow so I leave it to Jens to figure out the correct fix.</p>

</quote>

<p>Jens Axboe replied, <quote who="Jens Axboe">It sets
the negative buflens for the ide-cd driver, which otherwise assumes that the
transfer is going in the wrong directions. It did seem odd to me at first,
but I wasn't aware that the SCSI drivers got confused. I'll fix it
up,</quote> and replied to himself with a patch the next day, adding,
<quote who="Jens Axboe">ide-cd.c had some really odd
code, where it expected transfers going to the drive to have negative buffer
lengths...</quote></p>

</section>

<section
  title="Modutils Maintainership Still In Dispute"
  subject="modutils/depmod doesn't support /lib/modules/*/usb"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9909_01/msg00078.html"
  posts="16"
  startdate="01 Sep 1999 00:00:00 -0800"
  enddate="02 Sep 1999 00:00:00 -0800"
>

<mention>Bjorn Ekwall</mention>

<p>Last week in <kcref subject="Re: [RFC] New modutils maintainer"
startdate="25 Aug 1999 00:00:00 -0800"></kcref>, Keith Owens took over as maintainer of the
modutils package. This week Bjorn Ekwall (the previous maintainer)
resurfaced, apparantly unaware of Keith's actions. Bjorn announced an
upcoming release of modutils, and (after a few folks put on asbestos
jackets) Keith replied peachefully, <quote who="Keith Owens">If Bjorn Ekwall
wants to continue to maintain modutils then I will drop my 2.3 tree. If
Bjorn wants to hand it over to me, I will merge his final 2.2 changes into
my 2.3 tree. If somebody else wants to maintain modutils they can decide
which versions they will use. No way am I going to fork this code.</quote></p>

<p>There was no reply, so the issue seems still up in the air.</p>

</section>

<section
  title="devfs V. 119 Announced"
  subject="[PATCH] devfs v119 available"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9909_01/msg00085.html"
  posts="1"
  startdate="01 Sep 1999 00:00:00 -0800"
  enddate="01 Sep 1999 00:00:00 -0800"
>
<topic>FS: devfs</topic>

<mention>Richard Gooch</mention>

<p>Richard Gooch gave a pointer to his <a
href="http://www.atnf.csiro.au/~rgooch/linux/kernel-patches.html">kernel
patches page</a>, and announced the release of version 119 of the devfs
patch.</p>

</section>

<section
  title="Uniform Driver Interface 1.0 Gets Cold Shoulder"
  subject="Universal Driver Interface spec available"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9909_01/msg00132.html"
  posts="15"
  startdate="01 Sep 1999 00:00:00 -0800"
  enddate="02 Sep 1999 00:00:00 -0800"
>
<topic>Disks: SCSI</topic>
<topic>Networking</topic>
<topic>Real-Time: RTLinux</topic>

<p>Jeff Garzik gave links to the <a href="http://www.projectudi.org/">Uniform
Driver Interface homepage</a>, the <a
href="http://www.projectudi.org/f-specs-1.0.html">UDI specs themselves (in
PDF format)</a>, and a <a
href="http://www.newsalert.com/bin/story?StoryId=Cn8YKWbKbyteXmt&amp;FQ=linux&amp;SymHdl=1&amp;Nav=na-search-&amp;StoryTitle=linux">newsalert.com
story</a> covering the release of version 1.0; and said, <quote who="Jeff
Garzik">Members of Project UDI today announced the
release of the UDI (Uniform Driver Interface) 1.0 Specification. This
Specification is the culmination of a multi-company development effort
designed to provide device driver portability for existing and future system
configurations. UDI supports today's key I/O technologies and is designed
with an extensible architecture that can easily accommodate future I/O
technologies and products.</quote></p>

<p>David S. Miller was opposed to the whole idea, saying, <quote who="David S.
Miller">No thanks, IMHO OS neutral driver interfaces are a nice idea but
they can only lead to mediocrity. (Yes I have read and understand how your
stuff works, the problem will still be there).</quote> And Alan Cox added,
<quote who="Alan Cox">Not sure why anyone thinks this is Linux relevant 8) -
other than it will help to make our drivers even faster than the competition
if they adopt it. Have a read, but keep a bucket handy</quote></p>

<p>Bret Indrelee replied more moderately:</p>

<quote who="Bret Indrelee">

<p>Actually there are a
couple of reasons it is relevant to Linux.</p>

<p>There is already code out there to run UDI drivers on a Linux system. If you
look, one of the demonstration systems was a Linux system. Intel did the
port.</p>

<p>Intel has also made statements to the effect of reference drivers for it's
hardware are most likely going to be UDI. If this happens, you are going to
want UDI support just so you can bring up new Intel hardware fast.</p>

<p>With some work on the UDI interface, you should be able to make it so all
UDI drivers are RTLinux friendly. Also, you could change the
mutex/semaphore/locking code as many times as your little hearts desire
without having to rewrite every UDI driver. The UDI interface has all of the
mutex and timed waits happening outside the driver, in the UDI support
routines.</p>

<p>I would have thought that people would rather spend their time working on
improving the operating system rather than rewrite an ethernet or SCSI
device driver for the umpteenth time. That is what UDI is intended to allow
you to do, focus on the OS and use standard drivers.</p>

</quote>

<p>Alan was unsympathetic, saying:</p>

<quote who="Alan Cox">

<p>I've read the UDI spec in
detail. Its about fit for BIOS loaders but thats it. If intel provide source
it will be worth porting their drivers to the OS properly. If intel don't
provide source we don't care anyway.</p>

<p>You simply cannot express stuff like the linux parport sharing in UDI, its
got no equivalence. Out goes parallel devices. You can't portably express
the Linux tty layer, out go tty devices. It's too slow for serious
networking and it can't properly express our scsi stuff and make good use of
it.</p>

<p>So what are you going to do with it. Joysticks ?</p>

</quote>

<p>Elsewhere, he added, <quote who="Alan Cox">I read the
0.9 spec. I thought "oh dear". I read the 1.0 spec and thought "oh
well"</quote></p>

</section>

<section
  title="Some Explanation Of Threading"
  subject="Re: Threads in Linux"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9909_01/msg00360.html"
  posts="9"
  startdate="01 Sep 1999 00:00:00 -0800"
  enddate="03 Sep 1999 00:00:00 -0800"
>
<topic>Executable File Format</topic>
<topic>SMP</topic>
<topic>Virtual Memory</topic>

<mention>Vladimir Dergachev</mention>

<p>Vladimir Dergachev asked a number of questions about Linux threading. First,
he asked if two threads from the same process could run on two different
CPUs. Matthew Kirkwood replied, <quote who="Matthew Kirkwood">Simple answer:
yes. Fuller answer: there is no such thing as "two threads from the same
process". Under Linux, a thread is a process is a thread. Threads commonly
share VM and open files, but they may share more or less, depending upon the
application. Just as processes may run concurrently on different CPUs, so
may threads, them being one and the same.</quote></p>

<p>Vladimir also asked what happened in the event of cache thrashing;
specifically he wanted to know if any optimizations were made for it.
Matthew replied that this was a user-space situation. He explained,
<quote who="Matthew Kirkwood">There is code to keep
the processes on the same CPU in some circumstances, but cache-thrashing is
largely an application effect. If you have your hogs battering away at the
same buffer, then the bus could well get swamped.</quote></p>

<p>Next, Vladimir asked if threaded programs were guaranteed to not run slower
on SMP than on UP, and also asked if the situation was like that on all
releases (2.0.*, 2.2.* and 2.3.*). Matthew replied that there were no
guarantees and never had been, because it wasn't a real time system. Jim
Nance added some clarification to the statement that the situation had
always been the same, with, <quote who="Jim Nance">Well sort of. Linus
always planned to do threads this way, but its only been relatively recently
that working pthread libraries have appeared to take advantage of it. For a
long time linux'es pthread implementation was implemented in user space and
all threads ran inside of 1 process. I think this was still the case when we
switched from a.out to ELF libraries. At some point Xavier Leroy wrote a
clone() based pthread implementation that is the basis of what we use today.
I do not think that it was a part of libc5, but you could patch up a libc5
system to use it. Xavier's package is a standard part of glibc, so you have
a reasonable pthreads implementation on all newer Linux
distributions.</quote></p>

<p>Finally, Vladimir also asked if there were there any way for a process to
request that all its threads be run on the same cpu. Matthew reiterated that
processes and threads were the same thing, and added, <quote who="Matthew
Kirkwood">That aside, there are patches which allow
processes to request that they run on only a certain set of CPUs. You could
use them, though really, it's the kernel's job to ensure that the
application doesn't have to do things like this.</quote></p>

</section>

<section
  title="DIPC Goes GPL"
  subject="DIPC 2.0-pre10"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9909_01/msg00150.html"
  posts="1"
  startdate="01 Sep 1999 00:00:00 -0800"
  enddate="01 Sep 1999 00:00:00 -0800"
>

<p>Kamran Karimi gave a pointer to the <a
href="http://wallybox.cei.net/dipc">Distributed Interprocess-Communication
(DIPC) homepage</a> and announced that DIPC 2.0-pre10 was available at <a
href="ftp://orion.cs.uregina.ca/pub/dipc">ftp://orion.cs.uregina.ca/pub/dipc</a>.
He added that as of version 2.0-pre5, DIPC was being released under the GPL</p>

</section>

<section
  title="Storing Driver Data In /proc"
  subject="[patch] RFC: /proc/module namespace"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9909_01/msg00187.html"
  posts="19"
  startdate="02 Sep 1999 00:00:00 -0800"
  enddate="02 Sep 1999 00:00:00 -0800"
>

<mention>Jeff Garzik</mention>

<p>Jeff Garzik posted a patch against 2.3.16 to create a /proc/module
directory, with functions to allow a module to create its own directory
/proc/module/{MODULE_NAME} in which to put its data. Jeff wanted comments on
the proposal and the code.</p>

<p>Fuzzy Fox asked if this meant that a driver's data would go in a different
place depending on whether it was compiled as a module or as part of the
kernel. There was some discussion, in which it was pointed out that drivers
and modules were not necessarily interchangable concepts. A little over 12
hours after posting his original patch, Jeff posted a slightly revised
version, that would use the /proc/driver directory instead of /proc/module</p>

</section>

<section
  title="MVP4 sound Support"
  subject="MVP4 sound Support"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9909_01/msg00199.html"
  posts="6"
  startdate="02 Sep 1999 00:00:00 -0800"
  enddate="02 Sep 1999 00:00:00 -0800"
>
<topic>Sound: SoundBlaster</topic>

<mention>Alan Cox</mention>

<p>Anthony Barbachan said, <quote who="Anthony Barbachan">I've got a motherboad
with an MVP4 chipset. This chipset has integrated video and sound. Its
suppose to have backward Soundblaster compatability however sound still
doesn't work. I was wondering if anybody was working on a sound driver for
this integrated sound in this chipset. If not I might write one
myself.</quote> Jeff Garzik replied, <quote who="Jeff Garzik">Funny you
should say that. :) I just e-mailed such a driver to Alan Cox for inclusion
in future kernels. You can get stable version 1.0.0 at <a
href="http://havoc.gtf.org/garzik/kernel/files/vt82cxxx-audio-2.3.16.patch.gz">http://havoc.gtf.org/garzik/kernel/files/vt82cxxx-audio-2.3.16.patch.gz</a></quote>.
Anthony replied, <quote who="Anthony Barbachan">Alright!!! Great the sound
was the only thing left to have this system fully capable.</quote></p>

</section>

<section
  title="ACPI In The Kernel"
  subject="ACPI still breaks PIIX4 IDE in 2.3.16"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9909_01/msg00237.html"
  posts="3"
  startdate="02 Sep 1999 00:00:00 -0800"
  enddate="03 Sep 1999 00:00:00 -0800"
>
<topic>Disks: IDE</topic>
<topic>Power Management: ACPI</topic>
<topic>USB</topic>
<topic>Virtual Memory</topic>

<mention>Jeff Garzik</mention>

<p>In the course of discussion, Jeff Garzik said that real ACPI was going into
the kernel soon, but Simon Richter replied, <quote who="Simon
Richter">As the guy who told you that ACPI would go
off soon I need to put that into the right direction: Real ACPI support is
under way, but still far from being usable. :-/ The patch I expected to be
able to send out yesterday did not go out, for reasons I state in my next
post.</quote></p>

<p>Under the Subject: <a
href="http://kernelnotes.org/lnxlists/linux-kernel/lk_9909_01/msg00452.html">The
future of ACPI4Linux</a>, Simon said:</p>

<quote who="Simon Richter">

<p>As some of you might already know, there are now (at least
:-) ) two concurrent approaches to implementing ACPI. I do not think that
concurrently developing them is a good idea, and I hope you all agree on
this. I will summarize the advantages and disadvantages of these solutions
briefly:</p>

<p>The "classic" ACPI4Linux patch: This is a rather huge patchset which already
does some things that do not require the AML VM to work. Its greatest
strength is that it contains much useful code, its greatest weakness size
and complexity. I believe that following this track will need enlarging the
kernel by about 300k before we can even dare to activate any real features.</p>

<p>A modular approach: This is a solution that is entirely module-based as
opposed to the ACPI4Linux patch which is not modularisable. It should work
on 95% of all PCs without patching the kernel, and on 100% with a 2k sized
patch to memory management. The current concept leaves the effective work to
a userspace daemon, the module itself just registers the interrupts and
reaches the events down to userspace. Its greatest strength is simplicity,
its greatest weakness the fact that ACPI devices need to be initialized by
an ACPI enumerator to work correctly, which would require e.g. the IDE
driver to reinitialize the device while the machine is already up and
running, a thing I would not like.</p>

<p>Both patches will require greater changes to other drivers, such as IDE and
USB later on.</p>

<p>I, personally, would vote for the ACPI4Linux patch because testing is easier
if you play with the hardware at a stage where you cannot do much damage,
but other people, including Max Berger, who is the "kernel guy" of the
project (I'm more into userland code) think different on this issue [Max,
Andy, I think it would be good to post something more about the module
here].</p>

</quote>

<p>He asked for opinions, but there was no reply.</p>

</section>

<section
  title="Support For Kallisto GPS Cards"
  subject="New Driver For Kallisto GPS Card"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9909_01/msg00243.html"
  posts="1"
  startdate="02 Sep 1999 00:00:00 -0800"
  enddate="02 Sep 1999 00:00:00 -0800"
>

<p>David Skingsley gave a pointer to his <a
href="http://www.btinternet.com/~david.skingsley/linux/kallisto/">kallisto
page</a>, and announced he had written a driver for the Kallisto GPS card,
accurate to between 1 - 5 microseconds</p>

</section>

<section
  title="Satisfied User Sees Speed Improvements In 2.3.x"
  subject="Responsiveness."
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9909_01/msg00536.html"
  posts="4"
  startdate="03 Sep 1999 00:00:00 -0800"
  enddate="04 Sep 1999 00:00:00 -0800"
>

<mention>Andrea Arcangeli</mention>
<mention>Bill Huey</mention>

<p>Bill Huey noticed a tremendous leap of responsiveness between 2.3.10 and
2.3.16; Andrea Arcangeli pointed out that his page-LRU patch and scheduling
patch both came into the kernel around 2.3.16.</p>

</section>

<section
  title="User-Mode Kernel V. 2.3.15-2um Announced"
  subject="user-mode kernel 2.3.15-2um"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9909_01/msg00544.html"
  posts="1"
  startdate="04 Sep 1999 00:00:00 -0800"
  enddate="04 Sep 1999 00:00:00 -0800"
>

<mention>Jeff Dike</mention>

<p>Jeff Dike gave a pointer to his <a
href="http://www.mv.com/ipusers/karaya/uml/profiling.html">Kernel Profiling
With Gprof page</a>, his <a
href="http://www.mv.com/ipusers/karaya/uml/gcov.html">Kernel Code Coverage
Analysis With Gcov page</a>, and the <a
href="http://www.mv.com/ipusers/karaya/uml/uml.html">Linux User-Mode Kernel
page</a>; and announced that profiling with gprof, test coverage with gcov,
and networking in general all worked on the latest version (2.3.15-2um) of
his user-mode kernel.</p>

</section>

<section
  title="Some Explanation Of Locking"
  subject="SMP linux help"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9909_01/msg00569.html"
  posts="14"
  startdate="04 Sep 1999 00:00:00 -0800"
  enddate="05 Sep 1999 00:00:00 -0800"
>
<topic>SMP</topic>

<mention>Nate Eldredge</mention>

<p>Sushil Agrawal noticed that in order to be SMP safe, the kernel was obliged
to go use various locking mechanisms; for example he pointed out that
do_fork(), as well as many other system calls, used the lock_kernel()
function. He asked, <quote who="Sushil Agrawal">What
does lock_kernel() do? If it is used to synchronize the access to kernel
data structures from other processes on other processors, then why, after
having called this function, we again try to do some locking like calling
spin_lock(&amp;lastpid_lock) in get_pid()?</quote></p>

<p>Victor Khimenko explained, <quote who="Victor Khimenko">Initially just one kernel lock protected everything in
kernel. It was not SMP-friendly. So global kernel lock was replaced by bunch
of smaller locks. Some things are still protected by global lock but some
things need personal lock (things access for which are time-critical
mostly)... It's not trivial change since you need to take care about
potential deadlock situations...</quote></p>

<p>Sushil asked if this change meant that spin_lock(&amp;lastpid_lock) and
read_lock(&amp;tasklist_lock) in the get_pid() function in fork.c were
redundant, and Matthew Wilcox explained that the spinlocks were used so the
kernel lock could be dropped.</p>

<p>Nate Eldredge had also been wondering about locking, and asked about the
situation on SMP systems when one CPU had a kernel lock. He wanted to know
how the other CPU was handled. Matthew explained, <quote who="Matthew
Wilcox">If another CPU holds the kernel lock, we
spin until it has released it, just as any other spinlock
(&lt;asm-i386/smplock.h&gt;). lock_kernel prevents any other processor from
simultaneously executing any other code that is also protected by the big
kernel lock.</quote> He added, <quote who="Matthew Wilcox">spinning means constantly polling a lock until it's
available.</quote></p>

<p>Mark Cooke also explained:</p>

<quote who="Mark Cooke">

<p>When you have the kernel lock
you can guarantee that accesses to anything else protected by the kernel
lock can't happen.</p>

<p>So, generally you:</p>

<ol>

<li>Acquire the kernel lock You can now guarantee that no other access to
code/data protected by the kernel lock can happen.</li>

<li>Mess with shared lists / page tables / etc</li>

<li>Let go of the lock</li>

</ol>

<p>The big kernel lock used to protect lots of stuff. Ie, acquiring the lock
used to stop a whole lot of stuff running.</p>

<p>These days, the big lock is being replaced with more localised locks, to
improve the granularity of access. Hence, you can have 1 CPU doing one
kernel task, and another CPU doing something unrelated, provided they are
protected by different locks.</p>

</quote>

<p>Jamie Lokier also clarified:</p>

<quote who="Jamie Lokier">

<p>Actually the kernel lock is
different to other spinlocks.</p>

<p>When a task holding the kernel lock blocks, i.e. calls schedule(), the lock
is dropped. When the task is run again, the lock is reacquired.</p>

<p>Ordinary spinlocks are different.  You must never call schedule() while
holding an ordinary spinlock. This means no wait_on_blah() or down() calls
in the critical region, and no non-atomic memory allocation. These rules
don't apply to semaphores used as mutexes.</p>

</quote>

<p>Ingo Molnar said that the kernel lock could best be described as a
"recursive-spin-semaphore". He added, <quote who="Ingo Molnar">We might want to change it to a real semaphore in the
future, now that the locked regions are getting much longer
(multi-millisec). 2.5 stuff i guess.</quote></p>

</section>

<section
  title="Fixing The SCSI Layer"
  subject="Fixing the SCSI layer"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9909_01/msg00576.html"
  posts="13"
  startdate="04 Sep 1999 00:00:00 -0800"
  enddate="06 Sep 1999 00:00:00 -0800"
>
<topic>Disks: SCSI</topic>

<mention>Matthew Jacob</mention>

<p>Alan Cox posted some rough patches, and reported:</p>

<quote who="Alan Cox">

<p>I've been trying to debug a
high performance fibrechannel HA under Linux. I'm now in a situation where
its 50/50 whether the bugs remaining are in the scsi layer or the adapter.
The scsi code however is so hard to read its going to be quicker to clean it
up and fix bits than to try and debug it further. Is anyone else trying to
clean up the scsi mess currently?</p>

<p>I'm not going to write some new scsi layer, sorry someone crazier can do
that just to clean up the cruft, including stuff like banging it all through
indent and extracting common code into functions, moving long complex
conditional code into functions etc.</p>

</quote>

<p>Terry Hardie was struggling with a driver for the OnStream 50GB tape drives,
but looking over the SCSI midlayer was getting him nowhere. He asked if he
should wait for that code to get tidied up, or would that be too far in the
future. Alan replied, <quote who="Alan Cox">2.3.17 is
when the cleanup starts</quote></p>

<p>Elsewhere, Matthew Jacob replied to Alan's original post, asking what
specific problem was being addressed. Alan replied, <quote who="Alan
Cox">Firstly to make it debuggable by cleaning the code up.</quote> Later,
he added, <quote who="Alan Cox">Until the code has been cleaned up, who
knows. Linus certainly wants the midlayer structure to die so that scsi
disks become ordinary block I/O devices and themselves call into scsi helper
routines if they wish.</quote></p>

</section>

<section
  title="Race Conditions In File Creation In 2.3.x"
  subject="Race conditions in file creation in 2.3."
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9909_01/msg00581.html"
  posts="7"
  startdate="04 Sep 1999 00:00:00 -0800"
  enddate="05 Sep 1999 00:00:00 -0800"
>
<topic>FS: NFS</topic>
<topic>FS: ext2</topic>

<mention>Alan Cox</mention>
<mention>David S. Miller</mention>

<p>Alan Cox reported that under 2.3.16, the command, "cp -vrf /usr/bin /mnt
&amp; -cp vrf /usr/bin /mnt &amp; cp -vrf /usr/bin /mnt" would give a lot of
'file not found' errors when 'cp' issued the create() system call. David S.
Miller asked if this was going over NFS, but Alan replied that it was a
straight ext2 to ext2 copy. Manfred Spraul suggested that write() and
truncate() might be the culprits instead of create(), since they weren't
syncronized. Alan replied that he now thought the error was coming from
open(). Manfred posted a small program to reproduce the error, and added
that this had been a known problem since approximately 2.3.7; and gave this
explanation:</p>

<quote who="Manfred Spraul">

<p>Unfortunately, it seems
difficult to fix it properly:</p>

<p>

<ol>

<li>affected files: several places outside VFS access i_sem directly: [at
least]</li>

 <ul>

 <li>fs/nfsd/vfs.c</li>

 <li>arch/*/kernel/sys_*.c</li>

 <li>drivers/char/tty_io.c</li>

 </ul>

<li>different types of files have completely different synchronzation
requirements, so I think flags should be added to VFS which sync calls are
required.</li>

 <ul>

 <li>pipes: nothing, even parallel read()/write() calls to the same filp
 must not block in VFS [the pipe could use O_NONBLOCK] linux-2.2 uses a
 dirty hack: fs/pipe.c knows that sys_write() called down(i_sem), and pipe.c
 calls up().</li>

 <li>e.g. raw-io: everything can run parallel _except_ parallel
 sys_read()/sys_write() calls to the same filp [flip-&gt;f_pos!]. No
 restrictions on parallel sys_pread()/sys_pwrite(). Note that this cannot be
 implemented in raw.c, because raw.c does not know whether sys_read() or
 sys_pread() was called.</li>

 <li>normal files: parallel, non-overlapping read/write calls are possible[
 overlapping writes violate NfsV2]. Truncate can run in parallel with
 read()/write() if these calls don't access the area between [old-EOF,
 new-EOF]. Even Windows 95 allow this level or parallelity for some files,
 this should be possible under Linux as well.</li>

 <li>everything else: I'd call down() before calling
 f_ops-&gt;read()/write(), I don't know if all character devices can handle
 parallel read()/write() calls. If they can handle it, then they should set
 appopriate flags.</li>

 </ul>

</ol>

</p>

</quote>

</section>

<section
  title="Assembler Bug"
  subject="[ix86 only] as86 bug?"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9909_01/msg00589.html"
  posts="7"
  startdate="04 Sep 1999 00:00:00 -0800"
  enddate="05 Sep 1999 00:00:00 -0800"
>

<p>Riley Williams reported:</p>

<quote who="Riley Williams">

<p>I've discovered a bug in
the as86 assembler which was causing my attempts to make the ix86 boot code
correctly handle kernels larger than 1M to play havoc with my system. Since
I've now isolated the effects of the bug, I'm reporting it for those
interested therein.</p>

<p>The problem is with as86's handling of the .org directive, and
specifically with the case where the directive specifies an address
lower than what would be used in the absence of the .org directive.
When this occurs, as86 does one of two things, with there being no
apparent pattern to its choice of which it does:</p>

<ul>

<li>Most of the time, it inserts lots of garbage at the point the directive
occurs. I would presume it's trying to insert 4G of garbage, but my
partitions aren't that large so it stops when it reaches the "Disk full"
condition, producing an "Out of memory" error (yes, that is correct).</li>

<li>Occasionally, it sets the location to the correct one, but in the
process overwrites the first two bytes of the code with 0x5a, 0x7f and thus
trashes the resulting code. There is no error message generated in this
case.</li>

</ul>

<p>Since I was tweaking the i386 boot sector when this bug hit me, I was less
than amused...</p>

</quote>

<p>Alan Cox warned, <quote who="Alan Cox">Please use dev86. The old as86 tools
vendors ship are about 3 years out of date and unmaintained.</quote> Later,
he added, <quote who="Alan Cox">All of them, every vendor.</quote></p>

</section>

</kc>
