<?xml version="1.0" ?>

<kc>

<title>Kernel Traffic</title>

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

<issue num="48" date="27 Dec 1999 00:00:00 -0800" />

<intro>

<p>Peter Samuelson sent in a correction to <kcref subject="spin_unlock
optimization(i386)" startdate="20 Nov 1999 00:00:00 -0800"></kcref><!--
kt19991220_47.html#1 -->: He wrote:</p>

<quote who="Peter Samuelson">

<p>This probably wasn't mentioned anywhere on l-k but you might want to put in an
"update" on the first section of KT. You report that Linus was convinced to do
the spinlock optimization on Intel, but apparently someone has since changed
his mind back. See &lt;asm-i386/spinlock.h&gt; from 2.3.30pre5 and above:</p>

<blockquote>

<code>

<p>

  /*<br />
   * Sadly, some early PPro chips require the locked access,<br />
   * otherwise we could just always simply do<br />
   *<br />
   *    #define spin_unlock_string \<br />
   *            "movb $0,%0"<br />
   *<br />
   * Which is noticeably faster.<br />
   */<br />
  #define spin_unlock_string \<br />

<blockquote>

        "lock ; btrl $0,%0"<br />

</blockquote>

</p>

</code>

</blockquote>

</quote>

<p>Thanks, Peter!</p>

<p>This issue of Kernel Traffic is dedicated to Jill Cook, Clemens Wehrmann,
and the entire Cook family, who all distracted me from my work long enough
to enjoy a wonderful Christmas weekend in their home. Christmas is the most
important holiday of the Christian calendar, though in it one may detect
certain pagan and capitalist influences.</p>

</intro>

<stats posts="1585" size="6644" contrib="491" multiples="234" lastweek="174">

<person posts="83" size="258" who="Alan Cox " />
<person posts="58" size="209" who="Andrea Arcangeli " />
<person posts="37" size="166" who="Ingo Molnar " />
<person posts="33" size="106" who="Richard Gooch " />
<person posts="32" size="110" who="William Montgomery " />
<person posts="27" size="101" who="Jamie Lokier " />
<person posts="21" size="140" who="Alexander Viro " />
<person posts="21" size="76" who="Jeff V. Merkey " />
<person posts="20" size="93" who="Richard B. Johnson " />
<person posts="20" size="71" who="Linus Torvalds " />
<person posts="18" size="132" who="Andre Hedrick " />
<person posts="17" size="97" who="Kendall Bennett " />
<person posts="17" size="48" who="David S. Miller " />
<person posts="17" size="45" who="Tim Waugh " />
<person posts="16" size="88" who="Tigran Aivazian " />
<person posts="16" size="52" who="Pavel Machek " />
<person posts="16" size="47" who="Peter Samuelson " />
<person posts="15" size="54" who="David Weinehall " />
<person posts="14" size="68" who="Khimenko Victor " />
<person posts="14" size="68" who="Manfred Spraul " />
<person posts="14" size="52" who="Vojtech Pavlik " />
<person posts="13" size="58" who="Mike A. Harris " />
<person posts="12" size="32" who="" />
<person posts="11" size="49" who="Horst von Brand " />
<person posts="11" size="38" who="Jeff Garzik " />
<person posts="11" size="36" who=" (Miquel van Smoorenburg)" />
<person posts="11" size="35" who="David Schwartz " />
<person posts="11" size="33" who="Stephen Frost " />
<person posts="10" size="38" who="Egbert Eich " />
<person posts="10" size="36" who="Brandon S. Allbery KF8NH " />
<person posts="9" size="53" who=" (Kanoj Sarcar)" />
<person posts="9" size="46" who="" />
<person posts="9" size="35" who="Keith Owens " />
<person posts="9" size="33" who=" (H. Peter Anvin)" />
<person posts="9" size="32" who="David Ford " />
<person posts="9" size="24" who="Bernhard Rosenkraenzer " />
<person posts="8" size="55" who="Leeuw van der, Tim " />
<person posts="8" size="39" who="Thomas Davis " />
<person posts="8" size="31" who="James Simmons " />
<person posts="8" size="31" who=" (Rogier Wolff)" />
<person posts="8" size="27" who="Mark Lord " />
<person posts="7" size="42" who=" (Scott Lurndal)" />
<person posts="7" size="27" who="Jakub Jelinek " />
<person posts="7" size="25" who="Andi Kleen " />
<person posts="7" size="23" who="Jes Sorensen " />
<person posts="6" size="99" who="Ariel Ravicovich " />
<person posts="6" size="49" who="Martin Mares " />
<person posts="6" size="48" who="Alexandre Hautequest " />
<person posts="6" size="39" who="Artur Skawina " />
<person posts="6" size="27" who="Thorsten Kranzkowski " />
<person posts="6" size="27" who="Riley Williams " />
<person posts="6" size="22" who="Stephen C. Tweedie " />
<person posts="6" size="22" who="Horst von Brand " />
<person posts="6" size="21" who=" (david parsons)" />
<person posts="6" size="21" who="Robert Dinse " />
<person posts="6" size="21" who="Mike Galbraith " />
<person posts="6" size="20" who="Matthew Kirkwood " />
<person posts="6" size="20" who="Christopher E. Brown " />
<person posts="6" size="20" who="Ulrich Drepper " />
<person posts="6" size="18" who="Guest section DW " />
<person posts="5" size="40" who="Eleonora Autore " />
<person posts="5" size="19" who="George Staikos " />
<person posts="5" size="19" who="Christer Weinigel " />
<person posts="5" size="19" who="Frank Bernard " />
<person posts="5" size="18" who="Horst von Brand " />
<person posts="5" size="18" who="Andi Kleen " />
<person posts="5" size="17" who="Dan Kegel " />
<person posts="5" size="17" who="Benjamin C.R. LaHaise " />
<person posts="5" size="17" who="Steve Dodd " />
<person posts="5" size="16" who="Miquel van Smoorenburg " />
<person posts="5" size="16" who="Nate Eldredge " />
<person posts="5" size="15" who="Jason Gunthorpe " />
<person posts="5" size="15" who="Raul Miller " />
<person posts="5" size="15" who="Wakko Warner " />
<person posts="5" size="14" who="Dan Hollis " />
<person posts="4" size="32" who="Serge Robyns " />
<person posts="4" size="31" who="Chris Wing " />
<person posts="4" size="28" who="M Sweger " />
<person posts="4" size="28" who="Robert G. Brown " />
<person posts="4" size="21" who="Heinz Diehl " />
<person posts="4" size="20" who="Eric Paire " />
<person posts="4" size="20" who="Bret Indrelee " />
<person posts="4" size="19" who="John Ripley " />
<person posts="4" size="18" who="Christoph Rohland " />
<person posts="4" size="18" who="" />
<person posts="4" size="17" who="Paradox3 " />
<person posts="4" size="16" who="Martijn van Oosterhout " />
<person posts="4" size="16" who=" (Jim Gettys)" />
<person posts="4" size="15" who="Helge Hafting " />
<person posts="4" size="15" who="Alex Belits " />
<person posts="4" size="15" who="Adam J. Richter " />
<person posts="4" size="15" who="Dunlap, Randy " />
<person posts="4" size="13" who="Kjetil Torgrim Homme " />
<person posts="4" size="12" who="TenThumbs " />
<person posts="4" size="12" who="Peter T. Breuer " />
<person posts="4" size="12" who="David Woodhouse " />
<person posts="4" size="12" who="Tom Leete " />
<person posts="4" size="11" who="Chris Wedgwood " />
<person posts="4" size="11" who="George Bonser " />
<person posts="4" size="11" who="Olaf Titz " />
<person posts="4" size="10" who="Alan Cox " />
<person posts="4" size="10" who="Jeffrey B. Siegal " />
<person posts="3" size="91" who="Chuck Lever " />
<person posts="3" size="23" who="Thomas Molina " />
<person posts="3" size="21" who="Martin Dalecki " />
<person posts="3" size="18" who="Russell King " />
<person posts="3" size="17" who="Marek Habersack " />
<person posts="3" size="15" who="Mr. James W. Laferriere " />
<person posts="3" size="14" who="Dwayne C . Litzenberger " />
<person posts="3" size="14" who="Malcolm Beattie " />
<person posts="3" size="14" who="Henning P. Schmiedehausen " />
<person posts="3" size="14" who=" (Simon Patience)" />
<person posts="3" size="13" who="Casey Schaufler " />
<person posts="3" size="13" who="Richard Guy Briggs " />
<person posts="3" size="12" who="" />
<person posts="3" size="12" who="Scott Henry " />
<person posts="3" size="12" who="Ingo Molnar " />
<person posts="3" size="12" who="Karsten Keil " />
<person posts="3" size="12" who="" />
<person posts="3" size="12" who="Max " />
<person posts="3" size="12" who="Dan Yocum " />
<person posts="3" size="11" who="Brian Hall " />
<person posts="3" size="11" who="Gerd Knorr " />
<person posts="3" size="11" who="Bradley D. LaRonde " />
<person posts="3" size="11" who="Marc Lehmann " />
<person posts="3" size="10" who="Richard Guenther " />
<person posts="3" size="10" who="Chris Noe " />
<person posts="3" size="10" who="Adam Heath " />
<person posts="3" size="10" who="Michal Jaegermann " />
<person posts="3" size="10" who="vinny " />
<person posts="3" size="10" who="Jakma, Paul " />
<person posts="3" size="10" who="Neil Aggarwal " />
<person posts="3" size="10" who="van Heusden, Folkert " />
<person posts="3" size="10" who="Dominik Kubla " />
<person posts="3" size="9" who="David Lang " />
<person posts="3" size="9" who="Marc Mutz " />
<person posts="3" size="9" who="Manfred " />
<person posts="3" size="9" who="David Woodhouse " />
<person posts="3" size="9" who="Matthew Jacob " />
<person posts="3" size="9" who="Petko Manolov " />
<person posts="3" size="8" who="" />
<person posts="3" size="8" who="David Hinds " />
<person posts="3" size="8" who="Milos Puzovic " />
<person posts="3" size="7" who="Pawel Krawczyk " />
<person posts="3" size="7" who="solar " />
<person posts="2" size="26" who="" />
<person posts="2" size="18" who="Ryan Lackey " />
<person posts="2" size="13" who="Niels Kristian Bech Jensen " />
<person posts="2" size="12" who="Helge Deller " />
<person posts="2" size="12" who="Marques Johansson " />
<person posts="2" size="11" who="Ingo Oeser " />
<person posts="2" size="11" who="Ari Pollak " />
<person posts="2" size="11" who="Stefan Monnier " />
<person posts="2" size="10" who="Frank Peter Rival USG " />
<person posts="2" size="10" who="Hans de Goede " />
<person posts="2" size="10" who="" />
<person posts="2" size="10" who="Gerard Roudier " />
<person posts="2" size="9" who="Joerg Beyer " />
<person posts="2" size="9" who="Simon Patience " />
<person posts="2" size="9" who="Jeffrey E. Hundstad " />
<person posts="2" size="9" who="peter swain " />
<person posts="2" size="9" who="Harald Koenig " />
<person posts="2" size="9" who="Robert Johannes " />
<person posts="2" size="8" who="" />
<person posts="2" size="8" who="Terence Ripperda " />
<person posts="2" size="8" who="Douglas Kilpatrick " />
<person posts="2" size="8" who="Simon Kirby " />
<person posts="2" size="8" who="Derrick Steed " />
<person posts="2" size="8" who="=?ISO-8859-1?Q?Manu=EBl?= Beunder " />
<person posts="2" size="8" who="Andrew Daviel " />
<person posts="2" size="8" who="Kevin Hilman " />
<person posts="2" size="8" who="" />
<person posts="2" size="7" who="Maciej W. Rozycki " />
<person posts="2" size="7" who="Timothy Writer " />
<person posts="2" size="7" who="Michel Eyckmans (MCE) " />
<person posts="2" size="7" who="Jens Axboe " />
<person posts="2" size="7" who="Azeem Shahjahan Jiva " />
<person posts="2" size="7" who="Constantine Gavrilov " />
<person posts="2" size="7" who="clubneon " />
<person posts="2" size="7" who="Jens Benecke " />
<person posts="2" size="7" who="Mark H. Wood " />
<person posts="2" size="7" who="Terry Katz " />
<person posts="2" size="7" who="Giacomo Catenazzi " />
<person posts="2" size="7" who="Jason Bratton " />
<person posts="2" size="7" who="Ilpo Ruotsalainen " />
<person posts="2" size="7" who="Zack Brown " />
<person posts="2" size="7" who="Thomas Duffy " />
<person posts="2" size="7" who="Jim Studt " />
<person posts="2" size="7" who="Ted Sikora " />
<person posts="2" size="7" who="Johan Kullstam " />
<person posts="2" size="7" who="David Dyck " />
<person posts="2" size="6" who="Heinz Mauelshagen " />
<person posts="2" size="6" who="BIONDI Philippe " />
<person posts="2" size="6" who="Pauline Middelink " />
<person posts="2" size="6" who="Jon Mitchell " />
<person posts="2" size="6" who="nil " />
<person posts="2" size="6" who="Jeff Garzik " />
<person posts="2" size="6" who="Thorsten Kukuk " />
<person posts="2" size="6" who="Sergey Kubushin " />
<person posts="2" size="6" who="Gerhard Mack " />
<person posts="2" size="6" who="Alan Curry " />
<person posts="2" size="6" who="Theodore Y. Ts'o " />
<person posts="2" size="6" who="Lucca " />
<person posts="2" size="6" who="Ben Collins " />
<person posts="2" size="6" who="Daniel Zeaiter " />
<person posts="2" size="6" who="Jonathan Walther " />
<person posts="2" size="6" who="Andrzej Krzysztofowicz " />
<person posts="2" size="6" who="" />
<person posts="2" size="6" who="Benjamin Herrenschmidt " />
<person posts="2" size="6" who="Damien Miller " />
<person posts="2" size="6" who=" (Arjan van de Ven)" />
<person posts="2" size="6" who="Stephen Rothwell " />
<person posts="2" size="6" who="Philip Blundell " />
<person posts="2" size="6" who=" (=?iso-8859-1?q?=D8ystein?= Svendsen)" />
<person posts="2" size="6" who="Biondi Philippe " />
<person posts="2" size="6" who="Nicholas Waltham " />
<person posts="2" size="6" who="Michael Nelson " />
<person posts="2" size="6" who="Audin Malmin " />
<person posts="2" size="6" who="B. James Phillippe " />
<person posts="2" size="5" who="" />
<person posts="2" size="5" who="Petri Kaukasoina " />
<person posts="2" size="5" who="Jason Clifford " />
<person posts="2" size="5" who="Garst R. Reese " />
<person posts="2" size="5" who="Terry Hardie " />
<person posts="2" size="5" who="Pascal A. Dupuis " />
<person posts="2" size="5" who="Paul Rusty Russell " />
<person posts="2" size="5" who="Bill Wendling " />
<person posts="2" size="5" who="Robert Lowery " />
<person posts="2" size="5" who="Vasili Goutas " />
<person posts="2" size="5" who="Matthias Riese " />
<person posts="2" size="5" who="Adam Fritzler " />
<person posts="2" size="5" who="Gregory Maxwell " />
<person posts="2" size="5" who="Andris Pavenis " />
<person posts="2" size="4" who="Byron Stanoszek " />
<person posts="1" size="49" who="George R. Kasica " />
<person posts="1" size="42" who="Kevin O'Connor " />
<person posts="1" size="23" who=" (Nathan A. Mourey II)" />
<person posts="1" size="20" who="Linux Lists " />
<person posts="1" size="19" who="Thomas Speck " />
<person posts="1" size="18" who="Bartosz Waszak " />
<person posts="1" size="17" who="Oliver Mai " />
<person posts="1" size="16" who="Magnus Roth " />
<person posts="1" size="12" who="Bernhard Brueck " />
<person posts="1" size="11" who="Graham Murray " />
<person posts="1" size="10" who="Jim Nance " />
<person posts="1" size="10" who="Thorsten Kranzkowski " />
<person posts="1" size="9" who="ITway " />
<person posts="1" size="8" who="B. D. Elliott " />
<person posts="1" size="8" who="Charles Galpin " />
<person posts="1" size="8" who="Otto Meier " />
<person posts="1" size="7" who="Bret Indrelee " />
<person posts="1" size="7" who="Jochen Friedrich " />
<person posts="1" size="7" who="David Edwards " />
<person posts="1" size="7" who="Andrei Pitis " />
<person posts="1" size="6" who="Konstantine Tcherenkov " />
<person posts="1" size="6" who="Alain Schroeder " />
<person posts="1" size="6" who="Bartlomiej Zolnierkiewicz " />
<person posts="1" size="6" who="Satoshi Nagayasu " />
<person posts="1" size="6" who="Jim Garlick " />
<person posts="1" size="5" who="Gerrit Cap " />
<person posts="1" size="5" who="Don Dugger " />
<person posts="1" size="5" who="Mike Touloumtzis " />
<person posts="1" size="5" who="H . J . Lu " />
<person posts="1" size="5" who="Mike Phillips " />
<person posts="1" size="5" who="John Anthony Kazos Jr. " />
<person posts="1" size="5" who="Dancer " />
<person posts="1" size="5" who="Mamoru Yamanishi " />
<person posts="1" size="5" who="Christian Lademann " />
<person posts="1" size="5" who="Jakob Borg " />
<person posts="1" size="5" who="Rob van Riel " />
<person posts="1" size="5" who="Mauro Mazzieri " />
<person posts="1" size="4" who="Chuck Mead " />
<person posts="1" size="4" who="Martin Lucina " />
<person posts="1" size="4" who="Jan Kara " />
<person posts="1" size="4" who="Nimrod Mesika " />
<person posts="1" size="4" who="Neil Brown " />
<person posts="1" size="4" who="Paul " />
<person posts="1" size="4" who="David Taylor " />
<person posts="1" size="4" who="Pedro M. Rodrigues " />
<person posts="1" size="4" who="Brent M. Smith " />
<person posts="1" size="4" who="David Forrest " />
<person posts="1" size="4" who="Lars Marowsky-Bree " />
<person posts="1" size="4" who="Eric PAIRE " />
<person posts="1" size="4" who="" />
<person posts="1" size="4" who="Markus Schoder " />
<person posts="1" size="4" who="Peter Nikolic " />
<person posts="1" size="4" who="Kjartan Maraas " />
<person posts="1" size="4" who="C Hanish Menon " />
<person posts="1" size="4" who="Paul Kimoto " />
<person posts="1" size="4" who=" (Alexander L. Belikoff)" />
<person posts="1" size="4" who="Daniel Ryde " />
<person posts="1" size="4" who="Arnaud Gomes-do-Vale " />
<person posts="1" size="4" who="Andreas Scherbaum " />
<person posts="1" size="4" who="" />
<person posts="1" size="4" who="" />
<person posts="1" size="4" who="Chris Rankin " />
<person posts="1" size="4" who="Ian Stirling " />
<person posts="1" size="4" who="Willy Tarreau " />
<person posts="1" size="4" who="Arne Thomassen " />
<person posts="1" size="4" who="romain griffiths " />
<person posts="1" size="4" who=" (Rogier Wolff)" />
<person posts="1" size="4" who="Brian Macy " />
<person posts="1" size="4" who="Frank McIngvale " />
<person posts="1" size="4" who="" />
<person posts="1" size="4" who="Michael Meissner " />
<person posts="1" size="4" who="Daniel J Blueman " />
<person posts="1" size="4" who="Andrei Pelinescu-Onciul " />
<person posts="1" size="4" who="Mathijs Mohlmann " />
<person posts="1" size="4" who=" (Kai Henningsen)" />
<person posts="1" size="3" who="Alexander Kushnirenko " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="Brian May " />
<person posts="1" size="3" who="Doug Ledford " />
<person posts="1" size="3" who="Andreas Jaeger " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="Jesse Pollard " />
<person posts="1" size="3" who="Iusty Pop Daniel " />
<person posts="1" size="3" who="Tuukka Toivonen " />
<person posts="1" size="3" who="Mikulas Patocka " />
<person posts="1" size="3" who="Chris Adams " />
<person posts="1" size="3" who="Derek Fawcus " />
<person posts="1" size="3" who="Gaddoni Marco " />
<person posts="1" size="3" who=" (Eric W. Biederman)" />
<person posts="1" size="3" who="Michael Stiller " />
<person posts="1" size="3" who="Marc Merlin " />
<person posts="1" size="3" who=" (Hans-Joachim Baader)" />
<person posts="1" size="3" who="Frank v Waveren " />
<person posts="1" size="3" who="Rusty Russell " />
<person posts="1" size="3" who="Robert L. Harris " />
<person posts="1" size="3" who="Helder Luiz " />
<person posts="1" size="3" who=" (Knut Aksel =?iso-8859-1?Q?R=F8ysland?= )" />
<person posts="1" size="3" who="Pavel Machek " />
<person posts="1" size="3" who="Thomas E. Dodd /CSDC " />
<person posts="1" size="3" who="Avery Pennarun " />
<person posts="1" size="3" who="Andre Pang " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="Russ Allbery " />
<person posts="1" size="3" who="Dan Mills " />
<person posts="1" size="3" who="Peter Seiderer " />
<person posts="1" size="3" who=" (Eugene Crosser)" />
<person posts="1" size="3" who="Urban Widmark " />
<person posts="1" size="3" who="Martin Ferrari " />
<person posts="1" size="3" who="Steve Underwood " />
<person posts="1" size="3" who="Nils Bokermann " />
<person posts="1" size="3" who="Anup Kumar Ganguly " />
<person posts="1" size="3" who="Robert " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="Alan Modra " />
<person posts="1" size="3" who="Alexander V. Lukyanov " />
<person posts="1" size="3" who="Marnix Coppens " />
<person posts="1" size="3" who="Pierre-Gilles Mialon " />
<person posts="1" size="3" who="Brian Pomerantz " />
<person posts="1" size="3" who="Fredrik =?iso-8859-1?Q?Reutersw=E4rd?= " />
<person posts="1" size="3" who="Henrik Olsen " />
<person posts="1" size="3" who="Jonathan Brauer " />
<person posts="1" size="3" who="Nix " />
<person posts="1" size="3" who="Benno Senoner " />
<person posts="1" size="3" who="Harsha " />
<person posts="1" size="3" who="H. Peter Anvin " />
<person posts="1" size="3" who="Michael Barabanov " />
<person posts="1" size="3" who="Mikael Nordgren " />
<person posts="1" size="3" who="Andrew Morton " />
<person posts="1" size="3" who="Dimitris Michailidis " />
<person posts="1" size="3" who=" (Linus Torvalds)" />
<person posts="1" size="3" who="The Lost Wizard " />
<person posts="1" size="3" who="Marcin Dalecki " />
<person posts="1" size="3" who="Michael T. Babcock " />
<person posts="1" size="3" who="Sven LUTHER " />
<person posts="1" size="3" who="Bernard Wei " />
<person posts="1" size="3" who="Andreas Schuldei " />
<person posts="1" size="3" who="Giovanni Faglioni " />
<person posts="1" size="3" who="Reid Spencer " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="Jeff Dike " />
<person posts="1" size="3" who=" (Aaron Denney)" />
<person posts="1" size="3" who="Christopher Barton " />
<person posts="1" size="3" who="Amit S. Kale " />
<person posts="1" size="3" who="Gaixia Zhang " />
<person posts="1" size="3" who="Sid Boyce " />
<person posts="1" size="3" who="Brian Geisel " />
<person posts="1" size="3" who="Richard Henderson " />
<person posts="1" size="3" who="Giuliano Pochini " />
<person posts="1" size="3" who="Neal Sanche " />
<person posts="1" size="3" who="Ani Joshi " />
<person posts="1" size="3" who="Petr Vandrovec Ing. VTEI " />
<person posts="1" size="3" who="Bob Lorenzini " />
<person posts="1" size="3" who="Richard Henderson " />
<person posts="1" size="2" who="SK " />
<person posts="1" size="2" who="Jason Hill " />
<person posts="1" size="2" who="Jonas Jochum " />
<person posts="1" size="2" who="Jim Nance " />
<person posts="1" size="2" who="Andrey Panov " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Soohoon Lee " />
<person posts="1" size="2" who="Rafael E. Herrera " />
<person posts="1" size="2" who="Nicholas Waltham " />
<person posts="1" size="2" who="ELEMENTI S.A. " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Ram'on Garc'ia Fern'andez " />
<person posts="1" size="2" who="Bill Huey " />
<person posts="1" size="2" who="Paul Slootman " />
<person posts="1" size="2" who="John Alvord " />
<person posts="1" size="2" who="Aaron Holtzman " />
<person posts="1" size="2" who="Trever Adams " />
<person posts="1" size="2" who="Mike Phillips " />
<person posts="1" size="2" who=" (Matthias Urlichs)" />
<person posts="1" size="2" who="Uncle George " />
<person posts="1" size="2" who="Ralph Blach " />
<person posts="1" size="2" who="Kevin Rogers " />
<person posts="1" size="2" who="Benjamin Redelings I " />
<person posts="1" size="2" who="Pavan B " />
<person posts="1" size="2" who="Christian Groessler " />
<person posts="1" size="2" who="Remi Turk " />
<person posts="1" size="2" who="Vladislav Malyshkin " />
<person posts="1" size="2" who="Mike Frisch " />
<person posts="1" size="2" who="Alessandro Sala " />
<person posts="1" size="2" who="William F. Maton " />
<person posts="1" size="2" who="om prakash " />
<person posts="1" size="2" who="Yasuhide OOMORI " />
<person posts="1" size="2" who="Tom Sightler " />
<person posts="1" size="2" who="Jones D (ISaCS) " />
<person posts="1" size="2" who="Tim Coleman " />
<person posts="1" size="2" who="Gabor Lenart " />
<person posts="1" size="2" who="Greg Olszewski " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who=" (Rick Ellis)" />
<person posts="1" size="2" who="Brian Stevens " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Ildar Khabibrakhmanov " />
<person posts="1" size="2" who="Rik van Riel " />
<person posts="1" size="2" who="Ketil Malde " />
<person posts="1" size="2" who="ramudu " />
<person posts="1" size="2" who="Thierry Danis " />
<person posts="1" size="2" who="George " />
<person posts="1" size="2" who="Alexandre Oliva " />
<person posts="1" size="2" who="Jim Breton " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Johannes Erdfelt " />
<person posts="1" size="2" who=" (Wichert Akkerman)" />
<person posts="1" size="2" who="Christopher Horn " />
<person posts="1" size="2" who="Marc ZYNGIER " />
<person posts="1" size="2" who="Philip Blundell " />
<person posts="1" size="2" who="Tom Rini " />
<person posts="1" size="2" who="Greg KH " />
<person posts="1" size="2" who="Jeff Mcadams " />
<person posts="1" size="2" who="S . Daniel " />
<person posts="1" size="2" who="=?ISO-8859-2?Q?Tomasz_K=B3oczko?= " />
<person posts="1" size="2" who="Richard Zidlicky " />
<person posts="1" size="2" who="Kevin Waterson " />
<person posts="1" size="2" who=" (Peter Benie)" />
<person posts="1" size="2" who="Alex Buell " />
<person posts="1" size="2" who="Dietmar Kling " />
<person posts="1" size="2" who="Matan Ziv-Av " />
<person posts="1" size="2" who="Stanislav Meduna " />
<person posts="1" size="2" who="Bradley M Keryan " />
<person posts="1" size="2" who="Gregoire FAVRE " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Prairie Flower " />
<person posts="1" size="2" who="Mike Coleman " />
<person posts="1" size="2" who="Idle Time " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Marco Bano " />
<person posts="1" size="2" who="Ryan Lortie " />
<person posts="1" size="2" who=" (Andreas Jellinghaus)" />
<person posts="1" size="2" who="Christian Hick " />
<person posts="1" size="2" who="Florian Heinz " />
<person posts="1" size="2" who="Turchanov Sergei " />
<person posts="1" size="2" who="Marcelo Barbosa Lima " />
<person posts="1" size="2" who="Vinche " />
<person posts="1" size="2" who="Jean Zundel " />
<person posts="1" size="2" who="Daniel Roesen " />
<person posts="1" size="2" who="Douglas Gilbert " />
<person posts="1" size="2" who="Paul Flinders " />
<person posts="1" size="2" who="David Cougle " />
<person posts="1" size="2" who="Chris Evans " />
<person posts="1" size="2" who="William R. McDonough " />
<person posts="1" size="2" who="Rolf Fokkens " />
<person posts="1" size="2" who="Fusti Andras " />
<person posts="1" size="2" who="Simon Cahuk " />
<person posts="1" size="2" who="Frank Peters " />
<person posts="1" size="2" who="Jeremy Hansen " />
<person posts="1" size="2" who="Latham, Steve " />
<person posts="1" size="2" who="=?iso-8859-1?Q?J=F6rg=20Str=F6ttchen?= " />
<person posts="1" size="2" who="ux36267 " />
<person posts="1" size="2" who="Bernhard Rosenkraenzer " />
<person posts="1" size="2" who="Mark Hahn " />
<person posts="1" size="2" who="Oleg Drokin " />
<person posts="1" size="2" who="Jim Laferriere " />

</stats>

<section
  title="Binary Module Portability Across Kernel Versions"
  subject="[ot] Released Drivers for Lucent WinModems"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9912_01/msg00499.html"
  posts="107"
  startdate="02 Dec 1999 00:00:00 -0800"
  enddate="14 Dec 1999 00:00:00 -0800"
>
<topic>BSD: FreeBSD</topic>
<topic>Backward Compatibility</topic>
<topic>Microsoft</topic>
<topic>Modems</topic>
<topic>SMP</topic>
<topic>Sound: OSS</topic>

<mention>Jeff Garzik</mention>
<mention>Tim Waugh</mention>
<mention>Jim Nance</mention>

<p>Alexandre Hautequest gave a pointer to the <a
href="http://www.linmodems.org/">linmodem</a> site, and
asked about the project. Jason Clifford replied that for
Lucent-based modems, a binary-only kernel module was available,
that had been tested on 2.2.5 and 2.2.12; he gave a pointer to <a
href="http://www.linmodems.com/lucent-linux565.zip">http://www.linmodems.com/lucent-linux565.zip</a>
and added that he'd be releasing RPMs soon. Alan Cox replied that it wasn't
enough to say that the module had been tested on one kernel or another;
it was also important whether it had been compiled with 'gcc' or 'egcs',
which of the 1 or 2 gig memory options had been selected, and whether the
module had been compiled for SMP or not. Jim Nance retched into his hand and
said he hadn't realized the situation was that bad. He asked how difficult
it would be to make an SMP binary run under a non-SMP kernel, and added that
if it were feasible for a UP kernel to provide dummy locking functions that
would always say they aquired a lock when in fact they hadn't even tried,
that would be an easy solution to implement. Tim Waugh replied that this
would entail a performance hit on UP kernels, which would have to implement a
function call, instead of the current behavior of translating spin-lock code
to simple no-ops. Alan also replied to Jim with essentially the same answer,
to which Kendall Bennett posted a very lengthy reply. In it, he argued that
all of the problems with binary-module-portability between kernel versions,
were solvable; and that there were compelling reasons why those problems
<i>should</i> be solved. He listed:</p>

<p>

<ol>

<li> bugs in a later kernel could break a perfectly stable module; the only
fix would be to revert to the older kernel, which might be missing important
enhancements and other fixes.</li>

<li> binary module portability requires a consistent interface between
modules and kernel internals, which would be good because it would prevent
module writers from implementing "quick hacks" that accessed the internals
of other modules or the kernel directly.</li>

<li> binary portability would mean that much less testing would be needed,
to ensure that a module was functioning properly with a given kernel.</li>

</ol>

</p>

<p>He went on:</p>

<quote who="Kendall Bennett">

<p>It would appear to me
that unless Linux implemented a more clearly defined, binary portable driver
mechanism, compatibility problems will continually creep in over time,
plaguing the operating system with incompatibilities. Unless these problems
are solved, and device driver conformance tests implemented, Linux is headed
for disaster further down the track.</p>

<p>Constrast this again with FreeBSD whose development methodology actively
supports binary portable kernel modules. Perhaps now it makes more sense why
FreeBSD is considered more stable than Linux and that so many web servers
run FreeBSD and not Linux. FreeBSD does not support as much hardware, but
for what it does support, it is more stable.</p>

<p>The problem is that the *reasons* why the powers that be (Alan Cox and Linus
Torvalds) do not want to implement binary portable drivers for the Linux
kernel, are *not* based on sound reasoning. Specifically note the following
correspondance between myself, Linus and Alan from about a month
ago:</p>

</quote>

<p>He then quoted Linus as saying:</p>

<quote who="Linus Torvalds">

<p>I'm not all that interested in
trying to help binary-only drivers, when people like 3dfx are opening up
their specs and their libraries to the open source community. Why would I go
to the extra work to help people who aren't even willing to help me?</p>

<p>Quid pro quo. That's what the license is all about. I =allow= binary only
drivers, but that is very different from =supporting= them.</p>

</quote>

<p>Kendall contined, <quote who="Kendall Bennett">The
*reason* binary portable drivers are not implemented in Linux, is
because Linus and Alan are wielding the power of Linux to *force* hardware
vendors to implement Open Source device drivers. IMHO this is just as bad as
Microsoft using their monopoly power to force vendors to ship Windows on
their PC's.</quote> He concluded, <quote who="Kendall Bennett">Lots of stuff
available for Linux outside of the Linux kernel is not Open Source. A lot of
stuff is. The stuff that is, is Open Source because it makes sense for it to
be Open Source, not because the developers were forced to make it Open
Source. Open Source software will be successful because of the power that
opening the source code provides. The power that 'With enough eyes, all bugs
are shallow' as Linus once said. Has Linus forgotten the reasons why Linux
is where it is today? Instead he appears content to wield the power of
dictator over the Linux kernel sources to force vendors to do things his
way.</quote></p>

<p>There were many angry replies to Kendall's post, and two main threadlets of
discussion. In the first threadlet, Jeff Garzik said that supporting binary
portability would be a lot of work and would slow down the drivers, but that
Linus and Alan would probably accept patches, if they did not add overhead
to the kernel. Alan replied:</p>

<quote who="Alan Cox">

<p>It must also be running in a
way that it cannot trigger a bug in existing kernel code, otherwise we have
binaries triggering stuff that we cannot debug. That is what makes it hard.</p>

<p>If netscape Oopses the kernel as a user then I know we screwed up, because
we have a defined interface and it wasnt running as root. A driver is
totally different, it might causes oopses, application funnies - anything
and anywhere in the kernel.</p>

</quote>

<p>Hans de Goede felt this was an unreasonable requirement, and Kendall argued
that Alan's point only proved that Open Source device drivers was a good
thing. But he added that if vendors Open Sourced their code because it was good
to do so, that was different than if they Open Sourced their code because they
had been forced to do so. He concluded, <quote who="Kendall Bennett">Remember
that the reason Windows is where is is today is because of bullying tactics
by Microsoft. Why should Linux have to succeed based on the same bullying
tactics to force hardware vendors to open their specifications?</quote></p>

<p>Ingo Molnar replied:</p>

<quote who="Ingo Molnar">

<p>why should Linux make it
easier for anyone to hinder Linux development? Closed-source drivers are
definitely bad - not only for the hardware vendor (it's their problem and
they are free to create whatever additional headache for themselves at
will), but more for Linux users. Even if we had an ideal driver API, which
stayed constant over time. [which is impossible btw. as it contradicts some
of the fundamental properties of Linux] And Linux is _not_ neutral towards
constructs that hinder Linux development and hurt Linux users. Linux _is_
neutral towards other binary-only constructs, like user-space applications.
But kernel space is much more different.</p>

<p>Linux could flatly refuse binary modules, do you see that? Binary modules
are allowed nevertheless (take this as a gift!), but we simply cannot
guarantee cross-kernel-branch compatibility without hindering Linux
development. Nevertheless as you might have noticed, we try to keep the
driver API constant within the 'stable kernel branch'. Sometimes we have to
break module compatibility, but we try to avoid it _in the stable,
production branch_ as much as possible. What is your problem with this?</p>

<p>why is it impossible to keep the module API constant? Because Linux evolves
so fast, and the goal of Linux is to integrate drivers into the OS as much
as possible. This is a constantly fluctuating process, APIs, constants and
frameworks change frequently (and without us knowing about it advance). This
is essential to Linux, it gives us speed and generic drivers. i386
networking drivers worked almost out of box on other architectures - this
would be impossible with binary-only drivers. Because we simply cannot
guarantee '100% binary compatibility', we do not guarantee it at all. It's
not a clean concept.</p>

<p>sadly it's not possible to distinct between 'good' binary modules (which are
open-source), and 'bad' binary modules (which are closed-source) - but this
is not a problem! i'm sure you will understand the point: it's not hard to
create a 'module compilation package' that compiles the binary module on the
spot. We _do_ guarantee driver source-compatibility for the stable branch.
An on-the-spot driver compilation framework would be a welcome addition to
Linux (feel free to contribute it), as it can eg. optimize for the given CPU
and architecture.</p>

</quote>

<p>There were a few more posts in that discussion.</p>

<p>In the second threadlet, Alan replied to Kendall's original long post. To
the idea that binary portability could be accomplished without problems, and
that this should be done, Alan said, <quote who="Alan Cox">Not really. The
binary format is dependant on compiler, architecture, SMPness and a dozen
other things. The source is not. Binary compatibility killed windows Windows
98 could have been a much nicer OS without back compatibility. I see no
reason to kill Linux by re-enacting proprietary OS history with a free
OS.</quote></p>

<p>To the idea that binary portability would require a consistant interface,
Alan replied, <quote who="Alan Cox">You mean slower,
multiple and in frequent cases legacy overhead. You want every Linux user to
have a slower more buggy system so a few people can use your product, how
considerate you are.</quote></p>

<p>Alan concluded:</p>

<quote who="Alan Cox">

<p>You have a personal agenda to
ship proprietary Linux modules. As Linus and I both told you, feel free -
but _YOU_ and not the community can support the results. Its a simple matter
of maintainability and debugging.</p>

<p>Anyone using your modules is your problem. People with kernel bug reports of
any kind with your modules loaded will be referred to you, and binary
compatibility messes will be yours to deal with. You have our source, we
dont have yours, so you can debug it we cant.</p>

<p>Its your overhead, created by your product and desires. In the proprietary
world every vendor pays their own support costs, I don't see why it should
be different here.</p>

</quote>

<p>Chuck Mead praised Alan's comments, and said to Kendall, <quote who="Chuck
Mead">you've spanned the heights of incredibility
here! You have Linux kernel source code which is freely available but you
want the kernel folk to completely revamp their development program/path to
suit your own needs? Since you have such an excellent understanding of what
needs to be done why not use the source and do it yourself... that would
solve all of your problems! If releasing the source code to your drivers
doesn't suit your business model then don't play in the Linux space or do so
and provide your own support as Alan has said. I fail to see why the OS
community needs to support your proprietary source and business model. When
you talk about `binary portability' it makes me shiver... I left that world
behind by choice and personally do not want to revisit it and the idea that
Linus and Alan are `forcing' you, or any other vendor to implement Open
Source device drivers is a joke. The onus is on you to choose to do it or
not. If the economic model for your outfit dictates that your source remains
closed, that's fine, but don't then ask the Linux community to support your
efforts! If that's Linus and Alan twisting your arm then go ahead and add my
name to the list as well!</quote></p>

<p>Kendall replied:</p>

<quote who="Kendall Bennett">

<p>I will be building
mechanisms to support binary loadble drivers for our products into the Linux
kernels, and making those available as patches. I truly believe such a
mechanim will help make Linux a better OS, and I asked both Alan and Linus
whether they would accept support for this type of mechanism if I created it
and submitted the patches to them.</p>

<p>They flatly refused and said they would not support anything that will allow
for binary portable modules. So I will do this for our own needs, but no-one
else will benefit from this because it won't be a part of the standard Linux
distributions. I don't have any problem developing and supporting this code
for our own products, and I don't expect anyone to write this code for me.</p>

<p>However I am upset by the notion that the GPL nature of the Linux kernel
source can and is being used to force hardware vendors to release Open
Sourcce drivers because they have no other option. Not because another
option is not feasible, but because the core developers of Linux want to
lock our proprietry solutions.</p>

</quote>

<p>Alan pointed out that Kendall's first and third paragraphs above,
contradicted themselves. Kendall protested, and Stephen Frost explained,
<quote who="Stephen Frost">In the first paragraph you
talk about how you are intending to build a system whereby you will be able
to have binary-only drivers for your hardware. In the second paragraph you
claim that isn't possible.</quote></p>

<p>Kendall also replied directly to Alan's original response to his long post.
To Alan's statement that binary portability was dependant on many factors,
Kendall reiterated that if done properly, all those dependencies were
solvable. He pointed out that XFree86 4.0 had support for binary modules,
and didn't suffer from Alan's dependancy problems.</p>

<p>To Alan's statement that backwards compatibility killed Windows, Kendall
replied, <quote who="Kendall Bennett">Sorry, I
completely disagree here. Backwards compatibility in Windows 9x was a choice
that Microsoft made to sell the OS (and it worked; OS/2 would have killed NT
otherwise).</quote> (Martin Dalecki replied, <quote who="Martin
Dalecki">Just a question: What is this funny anti
trust court case about one hears such much last time in the media about.
Please enlighten me. Are are you trying to tell me that Win-Shit won the
market due to suprerioty in technology?</quote>)</p>

<p>To Alan's statement that Kendall had a personal agenda to ship proprietary
Linux modules, Kendall replied, <quote who="Kendall Bennett">you try to
force people who want to help Linux grow, to be forced into a model that is
fraught with compatibity issues. This is the whole crux of the matter. You
are totally against the concept of building support for binary portable
modules, because it might enable companies to develop proprietry drivers for
Linux? What about the fact that there are a ton of positive benefit for
compatibility issues in doing this? Are you willing to jeapordise the future
of Linux, just to stop my company from being able to build binary portable
modules? I didn't realise that what I do has such a tremendous impact on the
Linux community...</quote></p>

<p>To Alan's statement that he didn't want to re-enact proprietary operating
system history, Kendall replied, <quote who="Kendall Bennett">A *real*
operating system is just not going to be able to survive unless some
procedures and policies are put in place to ensure future compatibility with
legacy hardware.</quote></p>

<p>Alan replied to this last statement with:</p>

<quote who="Alan Cox">

<p>We've put procedures in place.
Its called *SOURCE CODE*. The NCR 5380 for example is the most godawful pile
of crud scsi controller on the planet. Its old while good for its time
nowdays is a joke.</p>

<p>Because we have this *SOURCE CODE* stuff it still works in Linux 2.3.30pre6
and people have extended it to support other platforms. So its extensible,
its adaptable</p>

<p>Its also *maintainable* which is the most important item of all. I can take
a bug report and look at the controller source and say "ok thats a driver
bug".</p>

</quote>

<p>Kendall replied, <quote who="Kendall Bennett">What I
am trying to get across is that binary portable modules help to solve driver
compatibility problems when you do new releases of the Linux kernel. I am
not trying to say that the source code should be closed.</quote> Alan came
back with, <quote who="Alan Cox">I've been helping
maintain the Linux kernel for six or seven years. I don't believe a word of
your claim. Things like vmware are a problem, the et inc modules were a
problem, oss has its problems. And thats despite the fact OSS especially,
and also to an extent ET worked hard on chasing bugs</quote></p>

<p>Richard B. Johnson spoke up as well:</p>

<quote who="Richard B. Johnson">

<p>If Linux allows
binary modules, the end of the world, as we know it, has arrived. The result
will be Trojan and other 'malware' inserted into the kernel. Even if we
trust the world to be on its best behavior, we will become just like NT and
other such crash-ware. Many/most/(perhaps all) problems with NT are directly
caused by 'drivers' which are written by nitwits contracted by
third-parties. You know, the ones who insist that the kernel be rewritten as
a polymorphic "object" because they learned those buzz-words in some OO
class at Three-Mile-Island.</p>

<p>If a company considers its drivers to be so secret that it will not allow
anybody to view its source-code, the company probably obtained the
source-code by theft. If so, the proper thing to do would be to used the
stolen source as a template from which to write an interface specification.
Then, from the interface specification, one writes the target software.
However, this is expensive. It takes time to write a specification. Its
quicker to steal source-code, hack it to run the proprietary hardware, then
keep it in the dark.</p>

<p>There is a good example of this kind of company policy at a one-time major
network company near the Great Salt Lake. It has been reported that its
President publically stated that he would never pay for something he could
steal.</p>

<p>The whole idea of an open-source Operating System is that it's open. We must
keep it that way.</p>

</quote>

</section>

<section
  title="mmap Changes"
  subject="mmap on a device returns ENODEV"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9912_02/msg00005.html"
  posts="13"
  startdate="08 Dec 1999 00:00:00 -0800"
  enddate="15 Dec 1999 00:00:00 -0800"
>

<mention>Andrea Arcangeli</mention>

<p>After checking out the source, Reid Spencer reported that the 2.2 kernel
didn't support mmap on block devices. He'd noticed on line 247 of mm/mmap.c,
that do_mmap() would return ENODEV if the file didn't support the mmap
operation, and this seemed to be the case for block devices. He pointed out,
<quote who="Reid Spencer">It would be very useful if
block devices would support mmap because it allows disk geometry to be
factored into applications requiring high speed disk operations,</quote> and
added that the compatibility existed at least on Solaris and IRIX.</p>

<p>Linus Torvalds replied, confirming Reid's interpretation, but adding that
the problem<quote who="Linus Torvalds">should finally be a thing of the past
soon: one of the issues is that the mmap() code requires the page cache, and
the page cache didn't use to handle the case of large devices correctly, and
as such couldn't be used - and raw devices for that reason had their very
own special code.</quote> He added that the feature would not be added to
2.2.x, but that it should be trivial to do in 2.3.x; he concluded, <quote
who="Linus Torvalds">This is one of those "small details" that I've wanted
for a long time. I've never had the time to actually do it, even though it
should be trivial. The sucker^H^H^H^H^H^Hperson to ask is probably Alex Viro
or Ingo Molnar, and see if you can entice them into doing it - they both
know this area forwards and backwards. Or it could be a great project for
somebody willing to learn and not too afraid of messing his disks over in
case of bugs..</quote></p>

<p>Alexander opted out, since he wanted to finish the symlinks-in-pagecache
patch first. Ingo posted a patch against against 2.3.32-pre2, explaing that
it:</p>

<quote who="Ingo Molnar">

<p>adds all pagecache blocks
that have established mappings to the buffer-cache hashlists (and can thus
can be looked up), including the swapcache. It works fine here and there is
no noticeable slowdown anywhere.</p>

<p>this does not fully solve the problem yet, what we need now is an agreed on
set of rules to access buffers that are in other caches as well (eg. the
pagecache).</p>

<p>Is it bad to synchronize access through the buffer-cache? I dont think so
and it's simple and straightforward. The disadvantage is that the pagecache
has to maintain the state of the buffer properly, which adds some overhead.
Eg if. a page sees a pagefault with write-access then all underlying buffers
have to be marked as 'permanent dirty'. Permament dirty buffers are not
written back by bdflush. This very same new buffer-state could i believe be
used by the journalling code too to tell other cache users that a block is
not to be written back, yet. In the typical 4k blocksize case it's only one
buffer that needs to be maintained, so the cost doesnt look like to be big.
There are probably other issues to be solved as well, but this would be the
>main approach.</p>

</quote>

<p>Linus and Andrea Arcangeli both objected to the patch, Linus saying,
<quote who="Linus Torvalds">I really don't like this. It
shouldn't be needed, and it does slow down lookups (the fact that we no
longer do buffer cache lookups as often as we historically did hides the
issue, but it's still conceptually wrong).</quote></p>

<p>End Of Thread.</p>

</section>

<section
  title="Telephone Interface Card Under Linux"
  subject="Telephone Interface Card"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9912_02/msg00290.html"
  posts="4"
  startdate="09 Dec 1999 00:00:00 -0800"
  enddate="16 Dec 1999 00:00:00 -0800"
>

<mention>Andrew Morton</mention>

<p>Someone asked if there were any Telephone Interface
Cards that supported Linux. Andrew Morton gave pointers to <a
href="http://www.asteriskpbx.com/main/index.html">Asterisk Open Source PBX</a>
and <a href="http://www.linuxtelephony.org/">Linux Telephony</a>.  Rick Ellis
gave a pointer to <a href="http://www.ftel.com/products/ict-1.html">Franklin
Telecom</a>. Mike A.  Harris put in, <quote who="Mike A. Harris">Any card at
all that has specs available, would be easy to program, either directly with
port writes, or by writing a simple driver for. If specs are not available
though, running it in DOSemu or with a breakout box of some kind should yield
very simple to decode (reverse engineer) hardware. Any DTMF card AFAICS is
a fairly simple device. I can't imagine it using any more than a few ports
that are easy to determine, especially with DOSEMU.</quote></p>

</section>

<section
  title="Compiler Errors In 2.3.31 And 2.3.32"
  subject="2.3.31 (and 2.3.32pre2) breaks cpp with segmentation fault (ok in 2.3.30), reproducable (mremap problem???)"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9912_02/msg00787.html"
  posts="24"
  startdate="11 Dec 1999 00:00:00 -0800"
  enddate="16 Dec 1999 00:00:00 -0800"
>

<mention>Heinz Diehl</mention>
<mention>Mike Galbraith</mention>

<p>One of David Dyck's methods of testing new kernels is to compile and test
Perl. This time, he got a repeatable segmentation fault in the C
pre-processor, when compiling Perl under 2.3.31; Mike Galbraith led a
debugging session, in which folks who were <i>not</i> seeing the problem,
gave him their .config files for comparison. This didn't lead anywhere, but
elsewhere, Heinz Diehl reported that the problem was still there in 2.3.32;
Thorsten Kranzkowski, also experiencing the problem, asked if Heinz had the
netfilter modules loaded; but Heinz replied that no, his machine was a
standalone box using UUCP for Internet access. After a bit of back and forth
between Thorsten and Heinz, Benjamin C.R. LaHaise posted a patch and
reported, <quote who="Benjamin C.R. LaHaise">Here's
the fix that works for a couple of other people who have triggered the
problem. I was being too clever, and it seems that in some cases even though
the new parameter is not touched, its presence is corrupting *something*. If
someone has an explanation, I'd be interested in hearing it.</quote></p>

<p>Heinz reported success with the patch, but Thorsten was still getting
internal compiler errors, but only when he loaded the NAT modules. Benjamin
tried to diagnose the problem, but no solution presented itself in the
thread.</p>

<p>David, however, posted three days after initiating the thread, saying that
Benjamin's fix had made it into 2.3.33, and his seg-fault was gone.</p>

</section>

<section
  title="Major Security Hole In 2.0.x!! Alan Hands Off The 2.0 Tree To David Weinehall!!"
  subject="[security] Big problem on 2.0.x? (fwd)"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9912_02/msg01003.html"
  posts="36"
  startdate="13 Dec 1999 00:00:00 -0800"
  enddate="17 Dec 1999 00:00:00 -0800"
>
<topic>Disks: IDE</topic>
<topic>FS: NFS</topic>
<topic>Networking</topic>

<mention>Andrea Arcangeli</mention>
<mention>Mike A. Harris</mention>

<p>Daniel Ryde quoted a post from bugtraq, in which Eduardo Cruz reported that
doing a 'ping -s 65468 -R ANYIPADDRESS' would disable the system and cause
an eventual reboot. Eduardo had tested this on 2.0.35 and 2.0.36; 2.2.x
wouldn't fall for it.</p>

<p>Mike A. Harris suggested a 'chmod u-s /bin/ping' on all 2.0.x systems,
adding that Alan Cox would probably not release a 2.0.39 just to fix this
hole. Andrei Pelinescu-Onciul tracked the problem down to a bug in
net/ipv4/ip_output.c, in ip_build_xmit(). He posted a code fragment that
would at least prevent the exploit. Andrea Arcangeli agreed with his
assessment, and posted a patch. David Weinehall asked if Alan would consider
a 2.0.39 containing only that patch, adding that a lot of people still used
2.0.x systems. Alan replied, <quote who="Alan Cox">If you want to become
2.0.x maintainer and fix this and the other chunk of bugs then be my guest.
I don't really have time to worry about 2.0, 2.2 and 2.3.34.</quote></p>

<p>David accepted responsibility for maintaining the stable tree. He asked for
confirmation from Linus Tovalds and others, saying, <quote who="David
Weinehall">I REALLY need to know KNOW whether people accept me or not. I
won't mind being critised now, as long as complaints are laid out in a
serious manner. If any of you has anything on your minds that you don't want
to discuss openly on the list, feel free to reply privately.</quote></p>

<p>Pedro M. Rodrigues replied, <quote who="Pedro M. Rodrigues">While i dont
think that a 2.0.39 with just this fix is a good idea (i agree with Alan Cox
that only external vulnerabilities should be a reason for a new version) i
believe some sort of revision of the 2.0.X kernels once in a while is a good
idea.</quote> David said, <quote who="David Weinehall">My idea isn't to ONLY
fix this one, but also fixup some other things. However, I'll probably drop
a pre-patch 1 in some direction soon (I guess that'd be to Alan?), and that
one will probably only contain this fix together with some documentation
updates and maybe some other small things. I will release more pre-patches
as my reviewing of the patch-log/bug-log Alan sent me progresses.</quote>
Alan offered to review pre-patches if David (or someone else) was willing to
"do all the legwork".</p>

<p>Linus said:</p>

<quote who="Linus Torvalds">

<p>I can certainly look
at 2.0.x updates too, but I also suspect that the people who REALLY care are
the distribution makers. I don't have any strong feelings about 2.0.x -
although I _do_ suspect that you have to be even more careful than usual,
because you're not going to get very much testing any more..</p>

<p>The people who are still on 2.0.x are not the kind of people who are excited
about testing unless they have major problems, and THAT in itself is a
problem - it means that you get a very self-selected tester list, which may
result in exactly the wrong output from testing. So I would suggest you only
apply stuff that is "obviously correct" from reading the sources and
directed testing, but I don't care enough about 2.0.x to really argue
strongly one way or the other..</p>

</quote>

<p>There was more discussion about issues surrounding 2.0.x maintenance, and at
one point David announced that he had begun working on 2.0.39; Andrea
Arcangeli asked what known problems remained with 2.0.x, and Alan said:</p>

<quote who="Alan Cox">

<p>The major 2.0.x bugs left are</p>

<p>

<ul>

<li>Obscure race causing very occasional tcp socket free while in use
causing crash in sock_wmalloc and similar</li>

<li>"BUG copied...." in TCP (harmless)</li>

<li>Cannot configure shared memory limits to avoid overcommits</li>

<li>TCP blind spoofing vulnerabilities</li>

<li>CLONE_PID needs stopping from user space</li>

<li>Incomplete locking for threaded apps (notably versus file locking)</li>

<li>TCP memory leak somewhere. I think Chris Wedgewood may have found this</li>

<li>PS/2 can load and then fail to init. Accessing psaux then crashes</li>

<li>Can't boot on an old old Cyrix/TI CPU (ditto with 2.2 I think). The code
turns on the cpuid flag but doesnt then check to see if CPUID is now
available so reboots when it calls cpuid</li>

<li>Quota races</li>

<li>Very occasional NFS crashes with "evil packet..."</li>

<li>IDE geometry bugs as 2.2 had</li>

</ul>

</p>

<p>Needs lots of driver updates (aic etc). I have archived mails about these
including patches in some cases</p>

</quote>

<p>There was a bit of discussion about which of these changes to implement.</p>

</section>

<section
  title="Development Process Criticized; Alan Uses egcs 1.1.2"
  subject="Kernels do not compile anymore"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9912_02/msg01093.html"
  posts="24"
  startdate="13 Dec 1999 00:00:00 -0800"
  enddate="14 Dec 1999 00:00:00 -0800"
>

<mention>Arjan van de Ven</mention>
<mention>David Parsons</mention>
<mention>Richard Gooch</mention>
<mention>Horst von Brand</mention>

<p>Richard B. Johnson reported, <quote who="Richard B. Johnson">I detect a
very distressing trend. Since the 2.3.13 release, which took several days
to fix so it would compile, I have not been able to download a kernel that
will compile. The 2.3.31 release of a development kernel (December 6) had,
not only problems with missing variables like "memory_start", etc., but also
had incomplete structures, missing structure members, etc., all over the
place. Most of the errors had to do with initial ram-disk support which is
required on many systems that use modules. I spent about two weeks of my spare
time trying to make 2.3.31 compile then gave up.  If anyone is interested,
I can provide a copy of .config but that's not the problem. The problem is
that Linus and others used to make sure that kernels would compile. This is
no longer being done. Instead, we have 'secret' versions of kernels retained
by distributors while the publicly accessible kernels are junk.</quote></p>

<p>He also pointed out that although he had been contributing patches to the
kernel since 1995, his name had been removed from all parts of the code that
had once contained it, including the contributors file.</p>

<p>There were a lot of replies. The only one that addressed Richard's concerns
about not being given due credit for his contributions was by John Anthony
Kazos Jr., where John objected to Richard's <quote who="John Anthony Kazos
Jr.">blatant conspiracy-theorist tone. Perhaps you
should offer some conclusive proof with your spicy accusations.</quote>
Richard replied, <quote who="Richard B. Johnson">It's
not a conspiracy. I never blame upon a conspiracy that which can be
explained by stupidity.</quote> No more was said on the subject.</p>

<p>To Richard's original post, Richard Gooch pointed out that Richard J.
shouldn't complain about development kernels not compiling. They were in the
unstable tree, after all. He recommended using a kernel from the stable
series for folks who needed stability. David Parsons objected that it was
better for development if folks complained bitterly about things not
working, than just use the stable tree. He added that, of course, submitting
a patch to make the kernels work would be best of all.</p>

<p>Arjan van de Ven also replied to Richard J.'s original post, saying that
having the kernel fail to compile drivers that were missing or broken, was
intentional, because it was the best way to get them fixed.</p>

<p>Mike A. Harris also replied to Richard J.'s original post, saying,
<quote who="Mike A. Harris">These problems occur only
with devel kernels, and possibly on very rare occasions with stable ones.
Saying that these compilation problems puts things in the distributors hands
is rediculous. I've NEVER seen ANY distribution release a dist with a
development kernel. (That is speaking of the mainstream widely used dists
like RedHat, Caldera, etc - MAIN RELEASES - not beta releases).</quote></p>

<p>This spawned a discussion of its own, when Horst von Brand pointed out that
there had been a few 1.3.x and 2.1.x Red Hat releases; he seemed to remember
Slackware doing a similar thing, and pointed out that SLS (Soft Landing
Linux), one of the first Linux distributions, started up <i>before</i>
version 1.0</p>

<p>Mike, Alan Cox and Chris Adams corrected him, saying that Red Hat may have
released a "Rawhide" distribution with an unstable kernel, but never a
production system. Alan added, <quote who="Alan Cox">Slackware did a 1.3.59
release once, which at the time was not a bad idea at all. We could probably
have gone from 1.3.59 to 2.0pre but people did more stuff and 2.0 took a lot
longer.</quote></p>

<p>Steve Dodd added, <quote who="Steve Dodd">Slackware
also did a 1.1.x ([45]9?)-based distro, I'm sure. That would have been
sometime between late '94 and early '95, I think.</quote></p>

<p>Alan also reported elsewhere, that he is currently building kernels from
egcs 1.1.2</p>

</section>

<section
  title="Disabling Pentium III Serial Numbers"
  subject="disabling Intel PSN"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9912_03/msg00111.html"
  posts="47"
  startdate="15 Dec 1999 00:00:00 -0800"
  enddate="20 Dec 1999 00:00:00 -0800"
>
<topic>FS: sysfs</topic>
<topic>SMP</topic>

<mention>Peter Samuelson</mention>
<mention>Peter Benie</mention>
<mention>Marc Lehmann</mention>
<mention>Matthew Kirkwood</mention>
<mention>H. Peter Anvin</mention>
<mention>David Schwartz</mention>
<mention>David Woodhouse</mention>
<mention>Dwayne C. Litzenberger</mention>

<p>Pawel Krawczyk asked if anyone had considered an option to disable the Intel
Pentium III processor serial number (PSN). He gave a pointer to <a
href="http://www.intel.com/design/pentiumiii/applnots/245125.htm">Intel
docs</a> on the CPUID instruction, adding that this could be used to disable
the PSN until the next reboot. Marc Mutz and Peter Samuelson both replied
that Linux already did this in the unstable branch; Peter added that the
feature would probably be back-ported to 2.2.15, if he wasn't mistaken.</p>

<p>Matthew Kirkwood also confirmed that the PSN was always disabled at
boot-time, since it was not a useful feature. David Schwartz pointed out
that this was a reason to not use it, not a reason to take active steps to
disable it. H. Peter Anvin felt that there were some valid uses for the PSN.
He suggested making it a command-line option, even if it defaulted to off.</p>

<p>There were a lot of replies to H. Peter; Marc Lehmann pointed out that
PSNs were non-portable. Peter Benie felt that if the PSN were enabled, vendors
would start using it for software licence keys. David Woodhouse felt that this
wasn't a valid objection, since the vendors would have to have a fall-back
for non-PIIIs, and users would simply disable the PSN during installation
of the licence. Dwayne C. Litzenberger opined that the kernel should keep it
disabled by default, and force users to patch the kernel in order to re-enable
it. Later, he elaborated, <quote who="Dwayne C. Litzenber">I suggest the
default be that the PSN be simply disabled at startup. A kernel parameter
(optionally compiled into the kernel) could change this so that the PSN
is read before it is disabled. The PSN could then be stored in a /proc
variable (and also read through a (perhaps privileged) sysctl command). This
variable could be modified (ala /proc/sys/*) if the user wishes (whether
or not they actually have a PIII).  The PSN would then become no more
infringent on privacy than a variable MAC adddress.</quote> He concluded,
<quote who="Dwayne C. Litzenber">By marginalising the PSN, it can become a
useful feature without allowing vendors to force it upon the users.</quote></p>

<p>Marc Mutz liked that idea a lot, and added, <quote who="Marc
Mutz">Additionally, you _have_ to export the psn via /proc or the like,
because if you let an application execute the CPUID command (I think that was
what reveals the PSN?) on SMP, that value can change between calls.</quote></p>

</section>

<section
  title="glibc Including Kernel Headers"
  subject="[PATCH] asm*/resource.h fix for glibc"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9912_03/msg00287.html"
  posts="48"
  startdate="16 Dec 1999 00:00:00 -0800"
  enddate="17 Dec 1999 00:00:00 -0800"
>
<topic>Backward Compatibility</topic>

<p>A brief excerpt from a long and interesting one-day thread.</p>

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

<quote who="Linus Torvalds">

<p>WHY THE H*LL DOES GLIBC CONTINUE TO INCLUDE LINUX KERNEL HEADER FILES?</p>

<p>Stop it NOW.</p>

<p>We had this discussion with the old libc5, where we due to historical
reasons did the inclusion of kernel header files into user space. And one of
the things glibc was supposed to do was to stop doing that!</p>

<p>The user-space library header files have to match the LIBRARY, not the
kernel.</p>

<p>This is not open for discussion. The reason I ended up hating libc5 doing it
was that it broke every once in a while when the kernel was re-organized. I
thought we had gotten past that with glibc.</p>

<p>If the glibc people cannot figure out how "cp" works, maybe somebody should
tell them. Symlinks are a maintenance nightmare, and means that not only
does the user-space compilation environment suddenly depend on which version
of the kernel sources you have installed (as opposed to which one you're
_running_), but they also mean that suddenly you have to install the kernel
sources to compile anything (or split up the kernel sources into "headers"
and "the rest"). Which means that package management is screwed up etc etc.</p>

<p>I refuse to add more of the __KERNEL__ stupidity. The existing stuff is
there for backwards compatibility, but the thing stops here.</p>

</quote>

<p>Miquel van Smoorenburg replied:</p>

<quote who="Miquel van Smoorenburg">

<p>Tell that to RedHat.</p>

<p>Debian ships with a set of known-good and stable kernel headers in
/usr/include/linux and /usr/include/asm. Seems to work pretty well,
even though people like tytso don't really agree ;)</p>

<p>People just need to understand that you have to compile modules with
-I/usr/src/linux/include or -I/usr/src/linux-2.4.22/include</p>

<p>A Makefile fragment in /usr/src/linux (say, config.mk) that keeps the CFLAGS
that were used to compile the kernel would go a long way to getting people
to use -I/usr/src/linux-2.4.22/include pretty much automatically.</p>

</quote>

<p>Later, he elaborated:</p>

<quote who="Miquel van Smoorenburg">

<p>The README that
comes with a module should tell you to edit the Makefile and adjust the path
to the kernel if you want to build against a non-standard kernel. The
default should probably be /usr/src/linux for people who installed the
running kernel and headers and/or source straight from the rpm or deb and
simply want to build a module.</p>

<p>That way, nothing depends on /usr/include/linux anymore.</p>

<p>So actually, we need 2 things:</p>

<p>

<ul>

<li>rename include/net and include/scsi in the kernel source. This is for
the benefit of compiling userland programs against non-standard kernel
headers</li>

<li>generate a config.mk Makefile fragment when compiling the kernel that
gets put in include/linux/config.mk (like config.h, really) This is for the
benefit of compiling standalone modules</li>

</ul>

</p>

<p>Note that this is probably the 6th time that this is discussed and I am at
least the 2nd person to come to this conclusion ;)</p>

</quote>

</section>

</kc>

