<?xml version="1.0" ?>

<kc>

<title>Kernel Traffic</title>

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

<issue num="59" date="20 Mar 2000 00:00:00 -0800" />

<stats posts="1543" size="6474" contrib="466" multiples="223" lastweek="184">

<person posts="49" size="189" who="Jamie Lokier " />
<person posts="43" size="148" who="Andrea Arcangeli " />
<person posts="41" size="122" who="Alan Cox " />
<person posts="36" size="148" who="Stephen C. Tweedie " />
<person posts="32" size="103" who="William Montgomery " />
<person posts="26" size="82" who="Alexander Viro " />
<person posts="24" size="101" who="Pavel Machek " />
<person posts="24" size="98" who="Horst von Brand " />
<person posts="23" size="113" who="Khimenko Victor " />
<person posts="21" size="131" who="Jesse Pollard " />
<person posts="21" size="62" who="Ingo Molnar " />
<person posts="19" size="109" who="" />
<person posts="19" size="93" who="Riley Williams " />
<person posts="18" size="70" who="Andre Hedrick " />
<person posts="17" size="121" who="Christoph Hellwig " />
<person posts="16" size="89" who="Albert D. Cahalan " />
<person posts="13" size="56" who="Manfred Spraul " />
<person posts="13" size="46" who="Mike Coleman " />
<person posts="13" size="40" who="James Simmons " />
<person posts="12" size="43" who="Russell King " />
<person posts="11" size="55" who="Mike Galbraith " />
<person posts="11" size="49" who="Dan Kegel " />
<person posts="11" size="45" who="Mike A. Harris " />
<person posts="10" size="47" who="Casey Schaufler " />
<person posts="10" size="45" who="Michael H. Warfield " />
<person posts="10" size="39" who="Matthew Kirkwood " />
<person posts="10" size="36" who="Werner Almesberger " />
<person posts="10" size="35" who="Richard Gooch " />
<person posts="10" size="33" who="Chris Evans " />
<person posts="9" size="64" who="Julian Anastasov " />
<person posts="9" size="44" who="" />
<person posts="9" size="37" who="Lyle Coder " />
<person posts="9" size="34" who="Erik Andersen " />
<person posts="9" size="32" who="David S. Miller " />
<person posts="9" size="32" who="Benno Senoner " />
<person posts="9" size="32" who="Artur Skawina " />
<person posts="9" size="29" who="Tigran Aivazian " />
<person posts="9" size="28" who="Jeff Garzik " />
<person posts="8" size="34" who="Richard B. Johnson " />
<person posts="8" size="32" who="Horst von Brand " />
<person posts="8" size="31" who=" (H. Peter Anvin)" />
<person posts="8" size="31" who="Boris Okun " />
<person posts="8" size="30" who="Dean Gaudet " />
<person posts="8" size="29" who="Miles Lane " />
<person posts="8" size="29" who="Hans Reiser " />
<person posts="8" size="28" who="Keith Owens " />
<person posts="8" size="27" who="Jamie Lokier " />
<person posts="8" size="25" who="Arjan van de Ven " />
<person posts="8" size="24" who="Matti Aarnio " />
<person posts="8" size="24" who="" />
<person posts="7" size="38" who="Tim Coleman " />
<person posts="7" size="29" who="" />
<person posts="7" size="29" who="Andreas Gruenbacher " />
<person posts="7" size="25" who="Vojtech Pavlik " />
<person posts="7" size="22" who="Guest section DW " />
<person posts="7" size="22" who="Rik van Riel " />
<person posts="7" size="17" who="" />
<person posts="6" size="56" who="Ian Peters " />
<person posts="6" size="32" who="Giuliano Procida " />
<person posts="6" size="30" who="Larry McVoy " />
<person posts="6" size="26" who="Linda Walsh " />
<person posts="6" size="25" who=" (Peter Benie)" />
<person posts="6" size="22" who="Theodore Y. Ts'o " />
<person posts="6" size="22" who="Helge Hafting " />
<person posts="6" size="19" who="Q " />
<person posts="6" size="17" who="Bill Wendling " />
<person posts="6" size="17" who="" />
<person posts="6" size="17" who=" (Arjan van de Ven)" />
<person posts="5" size="45" who="M Sweger " />
<person posts="5" size="38" who="Sergey Kubushin " />
<person posts="5" size="22" who="Khimenko Victor " />
<person posts="5" size="21" who="Rui Sousa " />
<person posts="5" size="19" who="David Weinehall " />
<person posts="5" size="19" who="Rask Ingemann Lambertsen " />
<person posts="5" size="18" who="Christoph Rohland " />
<person posts="5" size="16" who="Andi Kleen " />
<person posts="5" size="16" who="Philip Blundell " />
<person posts="5" size="15" who="Chris Wedgwood " />
<person posts="4" size="67" who="Thomas Davis " />
<person posts="4" size="28" who="Andrzej Krzysztofowicz " />
<person posts="4" size="27" who="" />
<person posts="4" size="19" who="Jakub Jelinek " />
<person posts="4" size="17" who=" (Rogier Wolff)" />
<person posts="4" size="17" who="Harald Koenig " />
<person posts="4" size="16" who="Aman Singla " />
<person posts="4" size="16" who="Pavel Machek " />
<person posts="4" size="15" who="Tim Waugh " />
<person posts="4" size="15" who="Niels Kristian Bech Jensen " />
<person posts="4" size="15" who="" />
<person posts="4" size="15" who="Jamie Lokier " />
<person posts="4" size="14" who="Adam " />
<person posts="4" size="14" who="Stefan Monnier " />
<person posts="4" size="14" who="" />
<person posts="4" size="14" who="Paul Jakma " />
<person posts="4" size="14" who="Brandon S. Allbery KF8NH " />
<person posts="4" size="14" who="Nicolas MONNET " />
<person posts="4" size="13" who="vsync " />
<person posts="4" size="13" who="Ronald G. Minnich " />
<person posts="4" size="13" who="Peter Blomgren " />
<person posts="4" size="13" who="H. Peter Anvin " />
<person posts="4" size="12" who="Martin Mares " />
<person posts="4" size="12" who="Christoph Hellwig " />
<person posts="4" size="12" who="Sam Roberts " />
<person posts="4" size="12" who="David Ford " />
<person posts="4" size="12" who="Oliver Xymoron " />
<person posts="4" size="12" who="Lawrence Manning " />
<person posts="4" size="12" who="Stephen Frost " />
<person posts="4" size="11" who="David Woodhouse " />
<person posts="4" size="11" who="Jeff Garzik " />
<person posts="4" size="11" who="Peter T. Breuer " />
<person posts="4" size="11" who="Gregory Maxwell " />
<person posts="4" size="10" who="Tim Waugh " />
<person posts="3" size="169" who="John Hawkes " />
<person posts="3" size="44" who="Dimitris Michailidis " />
<person posts="3" size="22" who="John Cavan " />
<person posts="3" size="21" who="James Lewis Nance " />
<person posts="3" size="14" who="Raphael Manfredi " />
<person posts="3" size="14" who="Daniel J Blueman " />
<person posts="3" size="13" who="Jeff V. Merkey " />
<person posts="3" size="13" who="Alexander S A Kjeldaas " />
<person posts="3" size="12" who="Simon Huggins " />
<person posts="3" size="12" who="Philipp Thomas " />
<person posts="3" size="11" who="David A. Bandel " />
<person posts="3" size="11" who="Thierry Vignaud " />
<person posts="3" size="11" who="Michael Elizabeth Chastain " />
<person posts="3" size="11" who="Andi Kleen " />
<person posts="3" size="10" who="Amit S. Kale " />
<person posts="3" size="10" who="Borislav Deianov " />
<person posts="3" size="10" who="Henner Eisen " />
<person posts="3" size="10" who="Gerd Knorr " />
<person posts="3" size="10" who="Mr. James W. Laferriere " />
<person posts="3" size="10" who="Gergely Madarasz " />
<person posts="3" size="10" who="David L. Parsley (lkml account) " />
<person posts="3" size="10" who="Ralf Baechle " />
<person posts="3" size="9" who="Florian Weimer " />
<person posts="3" size="9" who="Rogerio Brito " />
<person posts="3" size="9" who="Maciej W. Rozycki " />
<person posts="3" size="9" who="Paul Gortmaker " />
<person posts="3" size="9" who="Richard Torkar " />
<person posts="2" size="23" who="Jesse Pollard " />
<person posts="2" size="21" who="Jan Kasprzak " />
<person posts="2" size="19" who="Chris Smith " />
<person posts="2" size="15" who="Mitchell Blank Jr " />
<person posts="2" size="15" who="Pete Clements " />
<person posts="2" size="13" who="Vitali Lieder " />
<person posts="2" size="13" who="George " />
<person posts="2" size="13" who="Peter Leif Rasmussen " />
<person posts="2" size="12" who="Garst R. Reese " />
<person posts="2" size="12" who="Oliver Neukum " />
<person posts="2" size="11" who="Juan J. Quintela " />
<person posts="2" size="11" who="Matthew Vanecek " />
<person posts="2" size="10" who=" (david parsons)" />
<person posts="2" size="10" who="Lee Chin " />
<person posts="2" size="10" who="Brian Gerst " />
<person posts="2" size="10" who="Dima Rogozin " />
<person posts="2" size="9" who="Thomas S. Iversen " />
<person posts="2" size="9" who="Otto E Solares " />
<person posts="2" size="9" who="Peter Monta " />
<person posts="2" size="9" who="Jeffrey Fielding " />
<person posts="2" size="8" who=" (Aaron Denney)" />
<person posts="2" size="8" who="Andi Kleen " />
<person posts="2" size="8" who="David Wragg " />
<person posts="2" size="8" who="" />
<person posts="2" size="8" who="Chris Parrott " />
<person posts="2" size="8" who="Zach Brown " />
<person posts="2" size="7" who="Dunlap, Randy " />
<person posts="2" size="7" who="Linus Torvalds " />
<person posts="2" size="7" who="Luuk van der Duim " />
<person posts="2" size="7" who="Rainer Mager " />
<person posts="2" size="7" who="david parsons " />
<person posts="2" size="7" who="ben soo " />
<person posts="2" size="7" who="William Stearns " />
<person posts="2" size="7" who="Neil Brown " />
<person posts="2" size="7" who="Roman Zippel " />
<person posts="2" size="7" who="V Ganesh " />
<person posts="2" size="7" who="Jordan Mendelson " />
<person posts="2" size="7" who="Anders Eriksson " />
<person posts="2" size="7" who="=?ISO-8859-1?Q?Manu=EBl?= Beunder " />
<person posts="2" size="7" who="Andrzej Krzysztofowicz " />
<person posts="2" size="7" who="Mark H. Wood " />
<person posts="2" size="7" who="Malcolm Beattie " />
<person posts="2" size="7" who="Drew Sanford " />
<person posts="2" size="7" who="The Doctor What " />
<person posts="2" size="7" who="David Raufeisen " />
<person posts="2" size="7" who=" (Linus Torvalds)" />
<person posts="2" size="6" who="Jens Axboe " />
<person posts="2" size="6" who="Dominik Kubla " />
<person posts="2" size="6" who="Matthew J Zito " />
<person posts="2" size="6" who="Simon Richter " />
<person posts="2" size="6" who="Chris Buchanan " />
<person posts="2" size="6" who="Terry Katz " />
<person posts="2" size="6" who="Nicholas Dronen " />
<person posts="2" size="6" who="Artur Frysiak " />
<person posts="2" size="6" who="Karsten Keil " />
<person posts="2" size="6" who="Paul Fulghum " />
<person posts="2" size="6" who="Darren Reed " />
<person posts="2" size="6" who="shannon loi " />
<person posts="2" size="6" who="Chris Bennett " />
<person posts="2" size="6" who=" (Jonathan Corbet)" />
<person posts="2" size="6" who="Sean Hunter " />
<person posts="2" size="6" who="Ron Flory " />
<person posts="2" size="6" who="David Hinds " />
<person posts="2" size="6" who="Brian Pomerantz " />
<person posts="2" size="6" who="clubneon " />
<person posts="2" size="6" who="Assar Westerlund " />
<person posts="2" size="6" who="diep doan " />
<person posts="2" size="5" who="Android " />
<person posts="2" size="5" who="Christopher Molnar " />
<person posts="2" size="5" who="John Newman " />
<person posts="2" size="5" who="Gerhard Mack " />
<person posts="2" size="5" who="Tom Rini " />
<person posts="2" size="5" who="Paul Jakma " />
<person posts="2" size="5" who="Jeff Dike " />
<person posts="2" size="5" who="Joerg Stroettchen " />
<person posts="2" size="5" who="Linux Lists " />
<person posts="2" size="5" who="Ferenc Tamas Gyurcsan " />
<person posts="2" size="5" who="Momchil Velikov " />
<person posts="2" size="5" who="Michael J. Dikkema " />
<person posts="2" size="5" who="Oleg Drokin " />
<person posts="2" size="5" who="Nathan Feldman " />
<person posts="2" size="5" who="Richard Henderson " />
<person posts="2" size="5" who="Thomas Molina " />
<person posts="2" size="5" who="f5ibh " />
<person posts="1" size="32" who="David Morton " />
<person posts="1" size="23" who="Ken Witherow " />
<person posts="1" size="16" who="Randy Dunlap " />
<person posts="1" size="14" who="Thomas Sailer " />
<person posts="1" size="13" who="Jorge Nerin " />
<person posts="1" size="13" who=" (Robert Broughton)" />
<person posts="1" size="9" who="=?iso-8859-15?Q?Ga=EBl_Qu=E9ri?= " />
<person posts="1" size="9" who="Paul Elliott " />
<person posts="1" size="8" who="Rusty Russell " />
<person posts="1" size="7" who="Peter Rasmussen " />
<person posts="1" size="7" who="" />
<person posts="1" size="7" who="Tobias =?iso-8859-1?Q?Ringstr=F6m?= " />
<person posts="1" size="7" who="" />
<person posts="1" size="7" who="Chris Dunlop " />
<person posts="1" size="6" who="Petr Vandrovec " />
<person posts="1" size="6" who="Rajeev V. Pillai " />
<person posts="1" size="6" who="DM " />
<person posts="1" size="6" who="Bryan Whitehead " />
<person posts="1" size="6" who="Jean Tourrilhes " />
<person posts="1" size="6" who="David Konerding " />
<person posts="1" size="5" who="Mikael Pettersson " />
<person posts="1" size="5" who="Scott Henry " />
<person posts="1" size="5" who="Andrey Panin " />
<person posts="1" size="5" who="Paul Vojta " />
<person posts="1" size="5" who=" (Grendel)" />
<person posts="1" size="4" who="Andreas Dilger " />
<person posts="1" size="4" who="Kosh Naranek " />
<person posts="1" size="4" who="Simon Cozens " />
<person posts="1" size="4" who="Alessandro Sala " />
<person posts="1" size="4" who="David Lang " />
<person posts="1" size="4" who="Pete Wyckoff " />
<person posts="1" size="4" who="" />
<person posts="1" size="4" who="Mindaugas Riauba " />
<person posts="1" size="4" who="Kurt Garloff " />
<person posts="1" size="4" who="Paul Schulz " />
<person posts="1" size="4" who="Nathan Hand " />
<person posts="1" size="4" who="" />
<person posts="1" size="4" who="Burton Windle " />
<person posts="1" size="4" who="Pavel Krauz " />
<person posts="1" size="4" who="ADAM Sulmicki " />
<person posts="1" size="4" who="Johannes Erdfelt " />
<person posts="1" size="4" who="John Prevost " />
<person posts="1" size="4" who="Michael Levitin " />
<person posts="1" size="4" who="Adrian Bridgett " />
<person posts="1" size="4" who="Foo Chun Choong " />
<person posts="1" size="4" who="Joel Jaeggli " />
<person posts="1" size="4" who="billy ball " />
<person posts="1" size="4" who="Lee Willis " />
<person posts="1" size="4" who="Thomas M. Galla " />
<person posts="1" size="4" who="Michael Levitin " />
<person posts="1" size="4" who="Adam D. Bradley " />
<person posts="1" size="4" who="kalyan " />
<person posts="1" size="4" who="Andrew Morton " />
<person posts="1" size="4" who="Hayden A. James " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="Frasnelli, Dan " />
<person posts="1" size="3" who="Paul Mackerras " />
<person posts="1" size="3" who=" (Red Hat Partisan)" />
<person posts="1" size="3" who="Elvis =?ISO-8859-1?Q?Pf=FCtzenreuter?= " />
<person posts="1" size="3" who="Doug Ledford " />
<person posts="1" size="3" who="Boszormenyi Zoltan " />
<person posts="1" size="3" who="Andrew Pam " />
<person posts="1" size="3" who="Jan-Simon Pendry " />
<person posts="1" size="3" who="Jan Bobrowski " />
<person posts="1" size="3" who="Jaekwon Oh " />
<person posts="1" size="3" who="Scott Henry " />
<person posts="1" size="3" who="Polton, Richard " />
<person posts="1" size="3" who="Romano Giannetti " />
<person posts="1" size="3" who="Jim Roland " />
<person posts="1" size="3" who="Petr Vandrovec " />
<person posts="1" size="3" who="Christopher L Tuttle " />
<person posts="1" size="3" who="Roman V. Shaposhnick " />
<person posts="1" size="3" who="Giuliano Cioffi " />
<person posts="1" size="3" who="Andreas Bombe " />
<person posts="1" size="3" who="Sandy Harris " />
<person posts="1" size="3" who="David Tucker " />
<person posts="1" size="3" who="Christian Laursen " />
<person posts="1" size="3" who="David Brownell " />
<person posts="1" size="3" who="Ben Collins " />
<person posts="1" size="3" who="Schoder, Markus " />
<person posts="1" size="3" who="Abhay Kanhere " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="Dru R Nelson " />
<person posts="1" size="3" who="Steve Rihards " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="Thomas E. Dodd /CSDC " />
<person posts="1" size="3" who="Christopher Allen Wing " />
<person posts="1" size="3" who="Lieven Marchand " />
<person posts="1" size="3" who="John Alvord " />
<person posts="1" size="3" who="Aleksey I Zavilohin " />
<person posts="1" size="3" who="Auvo Hakkinen " />
<person posts="1" size="3" who="Marc Merlin " />
<person posts="1" size="3" who="Gibbas, Mark " />
<person posts="1" size="3" who="Davide Libenzi " />
<person posts="1" size="3" who="Andrea Arcangeli " />
<person posts="1" size="3" who="Jeff Evans " />
<person posts="1" size="3" who="Eric Dittman " />
<person posts="1" size="3" who="Ville Herva " />
<person posts="1" size="3" who="Blu3Viper " />
<person posts="1" size="3" who="Mike Frisch " />
<person posts="1" size="3" who="Peter Rival " />
<person posts="1" size="3" who="Darrell A Escola " />
<person posts="1" size="3" who="Amnon Shiloh " />
<person posts="1" size="3" who="Ingo Rohloff " />
<person posts="1" size="3" who="H . J . Lu " />
<person posts="1" size="3" who="Robert Dinse " />
<person posts="1" size="3" who="Peter K " />
<person posts="1" size="3" who="Anton Blanchard " />
<person posts="1" size="3" who="Dave Gilbert " />
<person posts="1" size="3" who="Geert Uytterhoeven " />
<person posts="1" size="3" who="A.Srinath Reddy " />
<person posts="1" size="3" who=" (Miquel van Smoorenburg)" />
<person posts="1" size="3" who="John E. Schimmel " />
<person posts="1" size="3" who="Lars Marowsky-Bree " />
<person posts="1" size="3" who="Daniel Pittman " />
<person posts="1" size="3" who="Quang Nguyen \(formerly Ngo\) " />
<person posts="1" size="3" who="Przemyslaw Frasunek " />
<person posts="1" size="3" who="lars brinkhoff " />
<person posts="1" size="3" who="ejc " />
<person posts="1" size="3" who="Brent M. Smith " />
<person posts="1" size="3" who="Shuangjun Zhu " />
<person posts="1" size="3" who="herman dumont " />
<person posts="1" size="3" who=" (David A. Wagner)" />
<person posts="1" size="3" who="Dmitry Brodsky " />
<person posts="1" size="3" who="Pat O'Rourke " />
<person posts="1" size="3" who="Philipp Rumpf " />
<person posts="1" size="3" who="G. Hugh Song " />
<person posts="1" size="3" who="Keith Schincke " />
<person posts="1" size="3" who="Jonathan Corbet " />
<person posts="1" size="3" who="Brian 'brian' Medley " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="Dag Brattli " />
<person posts="1" size="3" who="Jason L Tibbitts III " />
<person posts="1" size="3" who="Pieckiel, Kevin A " />
<person posts="1" size="3" who="Paul Barton-Davis " />
<person posts="1" size="3" who="Aneesh Kumar K.V " />
<person posts="1" size="3" who="Stephen Foskett " />
<person posts="1" size="3" who="Joel Hollingsworth " />
<person posts="1" size="3" who="Simon Kirby " />
<person posts="1" size="3" who="Agustin Navarro " />
<person posts="1" size="3" who="manami " />
<person posts="1" size="3" who="Peter Dominguez " />
<person posts="1" size="3" who="Ari Pollak " />
<person posts="1" size="3" who="=?iso-2022-jp?B?GyRCJTAlbCE8JUglOCVjITwlSyE8GyhC?= " />
<person posts="1" size="3" who="Robert Schiele " />
<person posts="1" size="3" who="Jakob Borg " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="Matthew Jacob " />
<person posts="1" size="3" who="Ulrich Drepper " />
<person posts="1" size="3" who="Andrew Stanley-Jones " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="Victor Zandy " />
<person posts="1" size="3" who="Lawrence Walton " />
<person posts="1" size="3" who="Kevin Hilman " />
<person posts="1" size="3" who="Frank v Waveren " />
<person posts="1" size="2" who="Balint TOTH " />
<person posts="1" size="2" who="David Dyck " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Aki M Laukkanen " />
<person posts="1" size="2" who="Richard Zidlicky " />
<person posts="1" size="2" who="Florin Andrei " />
<person posts="1" size="2" who="Andrew McNabb " />
<person posts="1" size="2" who="G. Hugh Song " />
<person posts="1" size="2" who="Tim Fletcher " />
<person posts="1" size="2" who="Matt D. Robinson " />
<person posts="1" size="2" who="Catalin Muresan " />
<person posts="1" size="2" who="Steve Dodd " />
<person posts="1" size="2" who="B. James Phillippe " />
<person posts="1" size="2" who="Tim Pepper " />
<person posts="1" size="2" who="Wakko Warner " />
<person posts="1" size="2" who="Stephen Richard Ives " />
<person posts="1" size="2" who="Ed Taranto " />
<person posts="1" size="2" who="Ferdinand Prantl " />
<person posts="1" size="2" who="Sean King " />
<person posts="1" size="2" who=" (WOL - Odinn Sorensen)" />
<person posts="1" size="2" who="David Nemeth " />
<person posts="1" size="2" who="Robert A. Hayden " />
<person posts="1" size="2" who="Patrik Rak " />
<person posts="1" size="2" who="Armin Schindler " />
<person posts="1" size="2" who="Bakonyi Ferenc " />
<person posts="1" size="2" who=" (Eugene Crosser)" />
<person posts="1" size="2" who="Strohm Thomas (FV/SLD) * " />
<person posts="1" size="2" who="Tony den Haan " />
<person posts="1" size="2" who="Troy T. Hall " />
<person posts="1" size="2" who="Thomas Wagner " />
<person posts="1" size="2" who="Jacob Alifrangis " />
<person posts="1" size="2" who="Nick Wellnhofer " />
<person posts="1" size="2" who="Guus Sliepen " />
<person posts="1" size="2" who="Markus Schoder " />
<person posts="1" size="2" who="Daniel Stone " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="James Manning " />
<person posts="1" size="2" who="Mark Zealey " />
<person posts="1" size="2" who="Eric Warmenhoven " />
<person posts="1" size="2" who="Leonard Michlmayr " />
<person posts="1" size="2" who="Seth Vidal " />
<person posts="1" size="2" who="=?iso-8859-1?Q?Jos=E9?= =?iso-8859-1?Q?_Gon=E7alves?= " />
<person posts="1" size="2" who="Raj, Ashok " />
<person posts="1" size="2" who="Samuli Kaski " />
<person posts="1" size="2" who="Peter Goh " />
<person posts="1" size="2" who="W. Michael Petullo " />
<person posts="1" size="2" who="Graham Murray " />
<person posts="1" size="2" who="Andrey Savochkin " />
<person posts="1" size="2" who="Tuukka Toivonen " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Alexander Kushnirenko " />
<person posts="1" size="2" who="Matthias Andree " />
<person posts="1" size="2" who="Paul " />
<person posts="1" size="2" who="Steven J. Hill " />
<person posts="1" size="2" who="Alan Cox " />
<person posts="1" size="2" who="Rajeev Bector " />
<person posts="1" size="2" who="Jason Gunthorpe " />
<person posts="1" size="2" who="Tigran Aivazian " />
<person posts="1" size="2" who="Thomas Zimmerman " />
<person posts="1" size="2" who="David Winchell " />
<person posts="1" size="2" who="Cristian Tuduce " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who=" (Wu Ye)" />
<person posts="1" size="2" who="Dave Grothe " />
<person posts="1" size="2" who="Mathijs Mohlmann " />
<person posts="1" size="2" who="Matthias Reineke " />
<person posts="1" size="2" who="Dan Hollis " />
<person posts="1" size="2" who="Catherine &amp; Andreas " />
<person posts="1" size="2" who="nag " />
<person posts="1" size="2" who="Patrick Cole " />
<person posts="1" size="2" who="joel abenhaim " />
<person posts="1" size="2" who="G. Hugh Song " />
<person posts="1" size="2" who="Anjlica Malla " />
<person posts="1" size="2" who="Chris Mason " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Chad Miller " />
<person posts="1" size="2" who="Dave Airlie " />
<person posts="1" size="2" who="Pete Zaitcev " />
<person posts="1" size="2" who="Jeremy Hansen " />
<person posts="1" size="2" who="Jurgen Botz " />
<person posts="1" size="2" who="Vijay Subramani " />
<person posts="1" size="2" who="Mark Hahn " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Neal Becker " />
<person posts="1" size="2" who="Tiger " />
<person posts="1" size="2" who="DVSM " />
<person posts="1" size="2" who="Jeyaram Sankar G. " />

</stats>

<section
  title="Capabilities"
  subject="Capabilities"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_0002_02/msg00242.html"
  posts="182"
  startdate="09 Feb 2000 00:00:00 -0800"
  enddate="08 Mar 2000 00:00:00 -0800"
>
<topic>Access Control Lists</topic>
<topic>Capabilities</topic>
<topic>FS: ReiserFS</topic>
<topic>FS: XFS</topic>
<topic>FS: ext2</topic>
<topic>POSIX</topic>

<mention>Jason McMullan</mention>
<mention>Gregory Maxwell</mention>
<mention>Casey Schaufler</mention>
<mention>Horst von Brand</mention>

<p>Peter Benie started it off with:</p>

<quote who="Peter Benie">

<p>I've tried to use capabilities to run xntpd without
excessive privilege. Not surprisingly, the only capabiity xntpd requires is
cap_sys_time.</p>

<p>For this change to be useful, xntpd needs to run as a uid other than 0,
otherwise it can overwrite files owned by root, regardless of what
capabilities it has. This is no big deal - we just have to call setuid to
change uid.</p>

<p>Here's the problem - if you have any programs that don't understand
capabities, you have to run without SECURE_NO_SETUID_FIXUP or else they
won't throw away privilege correctly. In that mode, changing to a non-zero
uid clears the effective and permitted capability sets. This is no good
since you now have insufficient privilege to do what you want, so you employ
the following horrible hack. (Have your Unix barf-bag ready...)</p>

<blockquote>

<table border="0">
<tr><td>  fork</td><td></td></tr>
<tr><td>  [Parent]</td><td>          [Child]</td></tr>
<tr><td>    setgroups</td><td>         block, waiting for parent</td></tr>
<tr><td>    setgid</td><td></td></tr>
<tr><td>    setuid</td><td></td></tr>
<tr><td>    unblock child</td><td></td></tr>
<tr><td>    wait for child</td><td>    catsetp(getppid, capabilities)</td></tr>
<tr><td></td><td>                    exit</td></tr>
</table>

</blockquote>

<p>The child is still running as root with all capabities, so it can hand over
cap_sys_time to the parent. The parent will then have a non-zero uid and a
non-empty capability set.</p>

<p>This must have worked once since sucap relies on a similar trick, but it
doesn't work now because of how init is started.</p>

<blockquote>

<code>
#define CAP_INIT_EFF_SET    to_cap_t(~0 &amp; ~CAP_TO_MASK(CAP_SETPCAP))<br />
#define CAP_INIT_INH_SET    to_cap_t(~0 &amp; ~CAP_TO_MASK(CAP_SETPCAP))
</code>

</blockquote>

<p>This results in all children of init running with cap_setpcap-i, so the
child process cannot hand over cap_sys_time to the parent.</p>

</quote>

<p>Chris Evans said he had a patch for this, and said, <quote who="Chris
Evans">Im very glad to hear you are de-privving xntpd. I'd like to see that
change in distributions ASAP! People de-privving bind (thank God) have also
hit this issue</quote>. He went on to explain, <quote who="Chris Evans">I
discussed the issue with the capabilities maintainer (Andrew Morgan) and we
decided upon a simple solution; If a process has its capabilities changed
via sys_capset(), it is marked as capability aware. When a "capability
aware" process does setuid(0 -&gt; !=0), capabilities are not cleared. The
"capability aware" flag is cleared on exec().</quote> Christopher Allen Wing
replied, <quote who="Christopher Allen Wing">Allow me to second this
suggestion. In the present state capabilities are useless on Linux as a
means of privilege isolation, since they can't be used by anyone besides
root on any standard Linux distribution.</quote> He added, <quote
who="Christopher Allen Wing">I want to be able to start a daemon, drop all
capabilities except the one I need, and then setuid() to a non-privileged
user,</quote> and exhorted, <quote who="Christopher Allen Wing">Linux needs
your patch!</quote> Chris E. replied, <quote who="Chris Evans">I've tested
my patch fairly carefully in the scenario you mention. I'll rediff and
submit to Linus once the rabid 2.3 kernel patching calms down.</quote></p>

<p>Peter also replied to Chris E.'s patch announcement, saying that it did meet
his needs, allowing him to avoid the horrible hack he'd described. On the
other hand, he pointed out, the patch would be unclean in his opinion,
because <quote who="Chris Evans">the side-effect of sys_capset is extremely
non-obvious; I'd probably be happier making the state change explicit with
prctl().</quote> Matthew Kirkwood seconded this, and Chris E. replied,
<quote who="Chris Evans">You'll get that when the filesystem support for
capabilities goes in. Alternatively, tighten up the bounding set as part of
your system initialisation scripts.</quote></p>

<p>Matthew felt this was a misunderstanding, and replied, <quote who="Matthew
Kirkwood">Read what the man says, Chris. He wants to be able to decree that
setuid programs (for example) don't get CNBS without breaking inetd. I don't
believe that this is functionality for its own sake. If you think of it as a
sysctl which allows you to turn off bits of SECURE_NO_SETUID_FIXUP.</quote>
Chris E. asserted that this <b>was</b> a case of functionality for its own
sake, because once filesystem support came along (which he felt would be
soon), <quote who="Chris Evans">the solution becomes one of userspace setup
rather than kernel support. Complexity is better in userspace than the
kernel. We don't want to introduce temporary kernel tweaks between now and
such time as we have filesystem support for capabilities, because then
people will _use_ that support and we could get stuck with it.</quote>
Matthew came back with, <quote who="Matthew Kirkwood">This is the same
argument which we heard against a capability bounding set, and I consider it
thoroughly bogus in both cases.</quote> He added that he saw no evidence of
filsystem support coming any time soon, and added, <quote who="Matthew
Kirkwood">The last patch I saw</quote> [...] <quote who="Matthew
Kirkwood">was against 2.1.xx, and used reserved space in the ext2 inode
which has since been used for other things. Linux has available a pair of
__u32s in the on-disk inode which is not sufficient, I believe. reiserfs has
no inode space reserved for future expansion.</quote> He also said that the
functionality would not add much complexity, and appended a short,
admittedly untested patch to his email, to prove it. There were a number of
replies.</p>

<p>Hans Reiser replied, <quote who="Hans Reiser">if you want an optional field
added</quote> [to reiserfs] <quote who="Hans Reiser">talk to us, dynamic
space allocation is a strength of our approach, and putting support for you
in a next major version of reiserfs is something we will do if you send me
an email/URL that convinces me your work is valuable (I am ignorant of it,
educate me.)</quote> Matthew thanked him, and added that he hadn't been
aware that reiserfs was flexible enough to do this. He went on:</p>

<quote who="Matthew Kirkwood">That being the case, I would like:

<p>

<ul>

<li>__u32 flags;            /* ext2 compatible file flags */</li>

<li>__u32 cap_allowed;      /* allowed capabilities */</li>

<li>__u32 cap_forced;       /* forced capabilities */</li>

</ul>

</p>

</quote>

<p>Chris E. objected that 32-bit capability fields might not be big enough to
handle all future needs. He felt that 64-bit capability fields would be much
better in any filesystem. Victor Khimenko felt that even 64-bit fields would
not be enough. He bemoaned:</p>

<quote who="Victor Khimenko">

<p>WHY everyone is trying to add low limits in
design just to try to break then later ? 32, 64 or 128 WILL NOT be enough in
long run. I can understood why capabilities in kernel are 32bit word:</p>

<p>

<ol>

<li>they are checked quite often and so it should be doable FAST and</li>

<li>they can be extended in future without big fuzz (it's internal kernel
structures so only few system calls should be changed)</li>

</ol>

</p>

<p>On other hand once something added to filesystem, it's added to FILESYSTEM.
Read "set in stone". It's VERY hard to fix something there. And starting of
program is NOT time-critical operation. Even if you put capabilities in
separate file and store inode number of that file in inode of
capability-enabled file this will not slow process starting much (even if
IMO it's overkill). So 32bit is not way to go and even 64 is not enough.
IMHO anyway.</p>

</quote>

<p>Casey Schaufler felt that having too many different capabilities would only
make it more difficult to set up a secure system; and there was some small
discussion. Elsewhere, the issue of how many bits to reserve came up as
well, with Chris E. urging people to reserve at least 64 bits. He felt this
would be enough for a fairly long time. Matthew felt that even 40 or 48
would be enough, but he had no objection to 64. Theodore Y. Ts'o observed:</p>

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

<p>Well, there's a trade off here.  If you could
have 32 bits basically
almost right away, and more would take longer, which would you choose?
Also, keep in mind that more bits is not necessarily good.  There is a
*huge* complexity cost in maintaining capabilities.  People have enough
trouble keeping track of the 12 bits of permissions on a per file basis.
This adds one or two orders of magnitude of more bits for every executable.</p>

<p>However, my knowledge of human nature being what it is, I agree with you
that unless very strong measures are taken to control the virtual explosion
of new capabilities people will want to add, we will need more bits. So I'd
suggest either putting a hard limit on 32 bits, or budgeting 128 or 256
bits, since bits are relatively cheap once you exceed 32.</p>

<p>People who are interested developing capability source should seriously
think about ways to control the complexity, though. If the user-mode
management tools aren't good enough, capabilities will be a diaster, and
their use could actualy decrease the overall security on a system.</p>

</quote>

<p>Gregory Maxwell put in another voice for limiting the number of
capabilities, pointing out that it could become virtually impossible for
anyone but a true guru to implement security effectively on a system with
many capabilities. And Pavel Machek, also replying to Theodore, added,
<quote who="Pavel Machek">Well, 32 will be almost certainly exceeded: we are
using 28 NOW.</quote></p>

<p>Jesse Pollard also replied to Theodore, saying that 32 would definitely not
be enough. He proposed:</p>

<quote who="Jesse Pollard">

<p>I'd like to (potentialy) be able to control every
system call through a capablity. I'm also a strong fan of MLS systems, it
lets my paranoid side out when protecting systems:).</p>

<p>I'd suggest using an index reference to a table containing multiple
capability lists. The set of usable capability lists is limited. Many
inodes, but the number of uniqe capability lists would be rather low (20-30
most likely). Using a reference:</p>

<p>

<ol>

<li>reduces the impact on an inode (8 bits would allow for 255 different
capabilitiy lists - reference 0 represents no list)</li>

<li>centralizes control over what capability lists are allowed; multiple
inodes would be able to reference the same capability list.</li>

<li>allows customization by the security administrator (users would not be
able to create arbitrary lists)</li>

<li>Allows more capabilities to be added without impact to the inode
structure, only the reference table support.</li>

</ol>

</p>

<p>Some additional administrative information could be determined easily too -
if a "link count" is updated each time an inode is given/removed a
capability reference, then the total number of files making use of the
capability list would be known; as well as any unused definitions.</p>

<p>I'm in the process of setting up a secured server system (using RSBAC) and I
would like to run the web server in a compartment, without the ability use
the exec system call. Yes this restricts a lot of CGI capability, but does
allow the use of Java (as part of the server) and mod_perl. The web pages
(and data files) will be stored at a security level below that of the server
process.</p>

<p>This configuration would prevent any hack entry into the server (via bugs/
stack overflow, etc) from being able to do anything to the data (no write
down). Without the exec, no shell process could be generated. The most that
could be done is aborting the server process. Since these are usually
children of a parent server, they would normally be restarted when needed
(parent would have fork, and listen).</p>

<p>Extended capabilities would allow me to detect/prevent hacking output data
by changing the server. Admittedly, it would not prevent replacing the
functionality of a web server (say by loading a bogus Java/perl server and
running it) but if the remaining capabilities prevented the use of the
"listen" system call (only the parent server listens) then even this attack
would be defeated. (The Apache server would have to be patched to drop the
capability to use the listen system call after the fork).</p>

</quote>

<p>Jason McMullan said this system made much more sense to him than having a
bitmask per inode. He argued that administration of cababilities would be
improved on such a system. But down the line in the argument, Andreas
Gruenbacher argued against Jesse's proposal:</p>

<quote who="Andreas Gruenbacher">

<p>Capabilities, Access Control Lists,
Auditing, Mandatory Access Control and Information Labeling are specified in
Posix 1003.1e / 1003.2c Draft Standard 17. DS17 was withdrawn. Nevertheless,
implementations of other Unixes are based on DS17 or earlier drafts.While
DS17 is not perfect, a lot of work surely has gone into Capabilities and
ACLs. Most of it actually makes sense.</p>

<p>The specs are publicly available. I guess Casey Schaufler already posted the
link; here it is again: <a
href="http://www.guug.de/~winni/posix.1e/download.html">http://www.guug.de/~winni/posix.1e/download.html</a>.</p>

<p>As far as capabilities are concerned, it's important at least the user
interface for manipulating ACLs is close to DS17. Having a completely
different capability scheme on Linux makes no sense. Linux tries to be
compatible with POSIX and other Unixes; I see no reason why capabilities
should be an exception.</p>

<p>Provided that the user interface is similar to DS17, a capabilities table
just adds complexity that doesn't pay off. The setfcap utility specified in
1003.2c manipulates individual capabilities.</p>

<p>The owner of a file may change the capabilities of a file (provided that
he/she is capable of CAP_SETFCAP). This also affects the per-filesystem
capabilities table. A capability table causes the same trouble when backing
up / restoring a filesystem. Each file and its associated capabilities need
to be backed up. Just backing up the index into the capabilities table
doesn't make much sense. When restoring the file to another filesystem, a
capability set corresponding to the capabilities of the file will probably
need to be created ...</p>

<p>I am convinced a fixed set of capabilities is all we need. A limit of 32 may
be too low; 64 seems perfectly reasonable to me. Capabilities are not meant
to cure each and every security problem. Things like protecting /etc/shadow
are really better dealt with by filesystem permissions.</p>

<p>64 capabilities require 3x64 bits for each inode. For future expansion,
3x128 seems a safe limit. Storing 128 more bytes in each inode is beyond
limits. Most files won't use capabilities, so that would be a massive waste
of disk space.</p>

<p>I propose to store a pointer to the capabilities of a file in each inode. On
ext2, we already have i_file_acl, which points to the ACL of a file.
Capabilities could be stored at the same location.</p>

<p>One possible implementation:</p>

<p>The ext2 part of the ACLs for Linux project at &lt;acl.bestbits.at&gt; uses
i_file_acl (and i_dir_acl) as a pointer to a disk block that contains the
ACL of a file. The very same disk blocks seem a natural place for storing
capabilities. This adds some trouble in the ACL code (it interferes with the
ACL cache), but is doable.</p>

<p>[Inodes with identical ACLs frequently share an ACL disk block. When an
inode is associated with an ACL, the ACL is looked up in a hash table. If a
suitable ACL disk block is found in the cache, that block is reused;
otherwise, a new ACL disk block is created.]</p>

<p>An alternative for storing capabilities, ACLs, etc. is to implement a
mechanism for storing arbitrary meta information (i.e., attribute lists) for
inodes. Irix XFS supports that. Ext2 has no comparable mechanism, but the
i_file_acl block approach may be good enough.</p>

<p>The SunWorld article ``Controlling Permissions with ACLs'' at <a
href="http://www.sunworld.com/swol-06-1998/swol-06-insidesolaris.html">http://www.sunworld.com/swol-06-1998/swol-06-insidesolaris.html</a>
and the Linux ACL project at <a
href="http://acl.bestbits.at/">http://acl.bestbits.at/</a> contain some more
implementation ideas.</p>

</quote>

<p>And Pavel also replied to Jesse's proposal, pointing out that disabling
exec() amounted to security-by-obscurity. He acknowledged that it would
probably still deter 95% of all attacks, but explained, <quote who="Pavel
Machek">you can do exec without actually invoking exec system call -- you
close some fds, mmap executable somewhere into your address space, unmap old
files ... and you've done exec() without actually doing exec.</quote> Jesse
protested that there were some security benefits in any case. He took
'passwd' as an example, explaining that unless the program was exec()ed, it
would not be given the priveleges needed to change the password file. In
general, he said, <quote who="Jesse Pollard">it is not possible to gain
additional capabilities by a subsequent attack on privileged
utilities</quote> He added that:</p>

<quote who="Jesse Pollard">

<p>On several B2 rated systems, the shell IS capable
of requesting level changes, and unless the shell is operating in the proper
environment (capabilities, level, compartment, and process tree) then even
the request for security change can be a violation. (BTW, the system calls
for changing security environment has to be built into the shell - they
don't work otherwise - see below)</p>

<p>On one system I use (Cray UNICOS), the shell cannot change security
classifications without:</p>

<p>

<ol>

<li>be a login shell with a parent process that is flagged as a security
user entry point(telentd/sshd recieve these privilages).</li>

<li>have no subprocesses</li>

<li>have no open output files other than the controlling terminal (ie. don't
redirect stderr to a disk file...)</li>

<li>have the permission to change (elevate) security access.</li>

<li>can not raise level above that of the user connection (ie. secure wire,
labeled network connection).</li>

</ol>

</p>

<p>At least two of these get broken with a web server:</p>

<p>
   1. a web server should not be labeled as a user entry point<br />
   4. the web server sould not be labeled as such.
</p>

<p>There are other restrictions that can be applied by modifying the web server
itself:</p>

<p>

<ol>

<li>deny fork capability in children of the listening web server.</li>

<li>deny any open for write capability.</li>

<li>deny listen, bind, connect... capability in children of the parent web
server (no new network connections will be allowed after fork).</li>

</ol>

</p>

</quote>

<p>Horst von Brand pointed out that without CGIs, without a way to record user
input, and without client/server database etc., the web site would not have
much to offer. But Jesse reiterated that embedded Java and modperl would
still be available as part of the server, there were still certain things
the web site would be good for. Those would be, he said:</p>

<p>

<ol>

<li>catalog look-up via modperl or java module</li>

<li>redirect the browser to another site for business etc. applications</li>

<li>serve read-only data</li>

</ol>

</p>

<p>At this point the discussion veered off.</p>

</section>

<section
  title="Symlink Permissions In devfs"
  subject="[PATCH] devfs and symlinks--2.3.48"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_0003_01/msg00219.html"
  posts="9"
  startdate="01 Mar 2000 00:00:00 -0800"
  enddate="07 Mar 2000 00:00:00 -0800"
>
<topic>FS: devfs</topic>
<topic>FS: ext2</topic>
<topic>FS: procfs</topic>

<mention>Alan Cox</mention>
<mention>Linus Torvalds</mention>

<p>Matthew Vanecek complained that with devfs installed, symlinks in /dev would
all have permissions <code>lr-xr-xr-x</code> instead of
<code>lrwxrwxrwx</code> as was standard throughout the rest of the system.
He posted a one line patch to fix the inconsistency, but Richard Gooch
wouldn't accept it, because <quote who="Richard Gooch">Symlink permissions
should not matter. The kernel doesn't care, and neither should applications.
If some application out there is doing lstat(2), I'd rather break it and see
it fixed, since it's probably broken in other ways too.</quote> Jamie Lokier
pointed out that in /proc, symlink permissions <b>did</b> matter, in that
you couldn't read from symlinks that were not readable by you. Richard
replied that procfs was a special case, and that in devfs, symlink
permissions were simply ignored by the kernel. Matthew replied that if it
didn't matter, why not just fix the inconsistency? Richard reiterated that
the inconsistency would help identify broken programs. Jamie analogized that
this was the same as burgling someone's house to teach them to keep their
door locked. He suggested facetiously, <quote who="Jamie Lokier">Why don't
we read 9 bits from /dev/urandom and store them in the ext2 symlink
mode?</quote> Richard invited him to submit a patch to Linus Torvalds; and
Alan Cox added that those bits were just not used.</p>

</section>

<section
  title="64-bit Linux"
  subject="Linux 64 bit - Trillium"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_0003_01/msg00626.html"
  posts="39"
  startdate="03 Mar 2000 00:00:00 -0800"
  enddate="08 Mar 2000 00:00:00 -0800"
>
<topic>BSD: NetBSD</topic>
<topic>FS: NFS</topic>
<topic>Microkernels: Mach</topic>
<topic>Networking</topic>
<topic>SMP</topic>
<topic>Virtual Memory</topic>

<mention>Victor Khimenko</mention>
<mention>Paul Jakma</mention>
<mention>James W. Laferriere</mention>
<mention>Gregory Maxwell</mention>
<mention>Brian Pomerantz</mention>
<mention>Jeff Dike</mention>
<mention>Florian Weimer</mention>

<p>Someone had heard a rumor about 64-bit Linux, and asked about it on the
list. Gregory Maxwell mentioned that Linux had been 64-bit for awhile
already, and pointed to the Alpha and Sparc ports; but Brian Pomerantz, also
replying to the original poster, added that those ports still had
significant problems. Jeff V. Merkey replied, <quote who="Jeff V.
Merkey">You can download the source code for IA64 Linux from VA Linux's
Website. There are not any Merced IA64 boxes out at present except for Intel
partners, but will be soon (2Q 2000). They will probably cost about as much
as the income of a small third world nation when they come out.</quote>
James Manning pointed out that the sources Jeff referred to had been in the
official 2.3 series for a few versions already; but Steve Rihards took issue
with the idea that IA64 boxes would be redeamable for one (1) third world
nation. He said that on the contrary, they were intended to be priced much
lower than Sparcs. Victor Khimenko came down on Steve, pointing out that
Jeff had "obviously" been talking about early-access boxes, not retail
sales; the reference to the second quarter of 2000 made that clear enough
(In His Humble Opinion). Steve didn't reply.</p>

<p>Matti Aarnio, also replying to the original poster, offered the following
fine history/summary:</p>

<quote who="Matti Aarnio">

<p>"Trillium" is just one of lattest efforts among
others to bring one more architecture into Linux. <a
href="http://www.linuxia64.org/">http://www.linuxia64.org/</a> It has been
widely touted only because the target processor is made by intel, and so far
unavailable.</p>

<p>Linux began as i386 operating system in 1991. Linux 1.0 had only "i386" in
1994.</p>

<p>At Linux 1.2.* series (1995) mainline kernel already supported:</p>

<p>

<ul>

<li>i386  (32 bits)</li>

<li>Alpha (64 bits)</li>

<li>SPARC (32 bits)</li>

<li>MIPS  (32 bits)</li>
 
</ul>

</p>

<p>Now Linux 2.2 already supports:</p>

<p>

<ul>

<li>i386    (32 bits)</li>

<li>Alpha   (64 bits)</li>

<li>SPARC   (32 and 64 bits versions)</li>

<li>MIPS    (32 bits)</li>

<li>PowerPC (32 bits)</li>

<li>ARM     (32 bits)</li>

<li>M68K    (32 bits)</li>

</ul>

</p>

<p>Linux 2.3 (development series) carries already additionally:</p>

<p>

<ul>

<li>SH (a.k.a Hitachi H8) (32 bits)</li>

<li>IA64    (64 bits)</li>
 
</ul>

</p>

<p>In the works (but not in mainline source) I have heard also of:</p>

<p>

<ul>

<li>MIPS-64</li>

<li>PowerPC-64</li>

<li>HP-PA  (<a
href="http://www.thepuffingroup.com/parisc/">http://www.thepuffingroup.com/parisc/</a>)</li>

</ul>

</p>

</quote>

<p>Paul Jakma added to this list the IBM S/390 mainframe port, which had been
merged into 2.2.1; and David Weinehall pointed out that the S/390 was only
in 2.2.x, and hadn't yet been ported to 2.3; he added that 2.3 already
supported (continuing Matti's list):</p>

<quote who="David Weinehall">

<p>

<ul>

<li>PowerPC (64 bits)</li>

<li>MIPS (64 bits)</li>

<li>SuperH (32 bits)</li>

</ul>

</p>

</quote>

<p>unported architectures that he felt were most needed, were:</p>

<quote who="David Weinehall">

<p>

<ul>

<li>Whatever processor VAX:en use</li>

<li>88k</li>

<li> Crays (the non-vector models; I suspect that Linux doesn't would be
very suitable on a vector-machine. But I could be wrong)</li>

<li>AS/400 (something akin to the S/390 port; a virtual machine is needed
because of the lack of memory protection in hardware)</li>

</ul>

</p>

</quote>

<p>There were several replies to this. Florian Weimer added that the Intel
Paragon would be another good one to have. Paul Jakma, also replying to
David, opined that a lot of work was being done on the Vax port; but James
W. Laferriere said that his last visit to the web page had shown very little
progress. Alan Cox also replied to David, pointing out that Zach Brown was
working on the 88K. Zach replied:</p>

<quote who="Zach Brown">

<p>I even had two of them :)  But I couldn't find nice
docs easily, so I didn't bother. I've now passed the machines on to a nutty
NC guy (peter jones), maybe he'll have more luck.</p>

<p>The nicest way to do this port would be to get the motorotola vme reference
boards, I hear mot.de still has them in stock. Don't forget a very large
barf-bag to deal with the 88k iteslf, and a time machine to find anyone else
on the planet who knows anything about them.</p>

</quote>

<p>In his same post, Alan also remarked:</p>

<quote who="Alan Cox">

<p>The AS/400 is more like a toaster than a computer.
They take an interesting approach of implementing a protected machine via
software 'trust'. The compiler generates apps that are written in an
interpreted layer and have been validated to some extent. The code is then
executed JIT style with trust checks in the code. The real hardware is much
akin to an MMUless 386.</p>

<p>You'd almost want to bootstrap the system with a JVM on the hardware and use
the gcc compile into java byte code target to build your system.</p>

</quote>

<p>Drew Sanford replied, <quote who="Drew Sanford">Having done quite a bit of
work with banks, all of whom have used AS400's for transaction accounting, I
developed alot of respect for the way AS400's do things. It has more than
once crossed my mind to get my hands on one of the systems the banks were
phasing out just to see if I could port some form of linux to run in a VM on
the AS400 much like the linux port to the S/390. Were it not for a lack of
time and sometimes money, I think I would already have made a go at this. I
think it would make quite a machine running linux. As a side note, when I
read Alan's remark about the AS400 being more like a toaster than a
computer, it made me stop and think for a second. I think if anyone else had
said that, it would have created in a desire to dropkick the person that
said it, and teach them a thing or two. Coming from Alan, however, it seems
outragously funny....it took me nearly 5 minutes to be able to hit reply. I
don't know where the idea of it being like a toaster came from, but the
technicallity in the architecture is accurate. I've still got a maniacal
smile on my face ....</quote></p>

<p>Matthew Wilcox also replied to David, regarding the possibility of porting
to a Cray. He replied with mirth, <quote who="Matthew Wilcox">i heard they
don't have an MMU. ucLinux on a Cray, baby! I've heard people talking about
merging ucLinux into 2.5, but they're crazy people.</quote> Oliver Xymoron
replied:</p>

<quote who="Oliver Xymoron">

<p>I've heard the hardware can do it, but the
software folks didn't want to give up cycles to indirection. Cray was all
about maximum bandwidth, minimum latency. Hence, no cache, no virtual
memory, shared libs, etc. The OS's job on a dinosaur supercomputer was to
get the hell out of the way.</p>

<p>For a while, I had a Convex C1 in my living room, which was a vector
supercomputer. If you wanted, you could run UNIX, complete with TCP and NFS
on it, as well as Cray binaries. Assuming you had three-phase power and good
A/C. I think my VAIO probably kicks its ass in every respect.</p>

<p>Or you could take all the insides out and use the chassis for rackmount
equipment like a good stereo..</p>

</quote>

<p>In his original post, Matthew had also listed more machines to port to:
<quote who="Matthew Wilcox">AT&amp;T's Hobbit processor. Matsushita's MN10300.
Fujitsu FR30. Sun MAJC. Notional Semidestructors 32016. Jeff Dike's usermode
port. Linux/L4. mkLinux. There are some m68k machines which aren't included
yet like sun3, next and apollo DN. pc532 (see www.netbsd.org). The i860 and
i960. Transputers. Sun's 386-based workstations. Sequent SMP machines.
Pyramid. IBM Romp. Sony NEWS.</quote></p>

<p>Oliver replied soberly, <quote who="Oliver Xymoron">Retro-ports, while fun,
don't make a whole lot of practical sense. You rapidly reach a point where
maintaining an old machine is more expensive than buying a new one.
Emulators, on the other hand...</quote></p>

</section>

<section
  title="Cisco Routers And syncppp"
  subject="[PATCH] cisco-hdlc mode in syncppp.c"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_0003_01/msg01004.html"
  posts="7"
  startdate="06 Mar 2000 00:00:00 -0800"
  enddate="07 Mar 2000 00:00:00 -0800"
>

<mention>Alan Cox</mention>
<mention>Paul Fulghum</mention>

<p>Gergely Madarasz posted a 2-line patch to make the syncppp driver cooperate
with Cisco routers in cisco-hdlc mode (such as the 3600 series). Paul
Fulghum replied that he'd already submitted a similar patch that was
rejected by Alan Cox, on the grounds that it should be "done right". Gergely
replied, <quote who="Gergely Madarasz">Ah, I see... anyway, this fix should
be urgent, because I have quite a few clients now who had this
problem.</quote> Alan replied that he had investigated what it would take to
do it right, and had been thoroughly disgusted. But he agreed that Gergely's
patch was better than what existed currently. He concluded that he'd either
take the patch or do it right himself for 2.2.15-final.</p>

</section>

<section
  title="Accessing Parents Of Traced Processes"
  subject="Allow debuger to examine real parent"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_0003_01/msg01048.html"
  posts="10"
  startdate="06 Mar 2000 00:00:00 -0800"
  enddate="09 Mar 2000 00:00:00 -0800"
>

<mention>Alan Cox</mention>
<mention>Pavel Machek</mention>

<p>Pavel Machek posted a short patch to allow a debugger to examine the
original parent of a traced process. He said the information it provided was
not available elsewhere, but Alan Cox said the feature was superfluous,
isince 'ps' obviously got the information from somewhere. But Mike Coleman
replied:</p>

<quote who="Mike Coleman">

<p>ps reports the tracing process as the parent,
rather than reporting the original parent as the parent. AFAIK, ps gets its
info from /proc, and you can verify that every occurrence of 'pptr' in the
proc code is 'p_pptr' (referring to the parent) rather than p_opptr
(referring to the original parent).</p>

<p>[The only times when p_pptr != p_opptr is when a PTRACE_ATTACH happened, or
when CLONE_PTRACE was used.]</p>

<p>Although I'm the author of the patch, I don't think it's really the ultimate
correct solution to the problem. The correct solution, IMHO, is (within
userland) to always report the original parent in places where the parent is
currently being reported. This preserves the illusion that ptracing isn't
happening, for processes that don't care or need to know about it. For
processes that really *do* need to know, there should be a "special" way of
finding out--a new file in proc, maybe, or a new syscall or new ptrace
subcommand.</p>

<p>Since the full "correct" solution isn't required for SUBTERFUGUE, and since
I've heard that small, simple patches are easier to get into the kernel, I
just used a minimal solution.</p>

</quote>

<p>Regarding Mike's description of /proc's behavior, Linus Torvalds replied,
<quote who="Linus Torvalds">Hmm.. That's probably a bug. It would probably
be best to export the original parent in the /proc setup, and make the
"debugging parent" possibly visible some way (but the original parent should
be the normal one).</quote> And regarding Mike's assessment of the proper
fix, Linus replied:</p>

<quote who="Linus Torvalds">

<p>I think that illusion should be maintained, and
really only debugging should know about the so-called "real" parent.</p>

<p>The whole "re-parenting" thing was just a bad excuse for not re-doing the
parent pointers entirely, and should probably be ripped out at some point.
We should probably</p>

<p>

<ul>

<li>get rid of "p_opptr"</li>

<li>make "p_pptr" always be the real parent (which is not to say the process
that does "fork()" - "clone()" can just clone the real parent field too,
obviously)</li>

<li>add a "p_debuggerptr" thing that is entirely new and ONLY used for
debugging.</li>
 
</ul>

</p>

<p>The reason for the re-parenting is obviously signal handling at exit time,
but that's just such a special case that it's not really worth the confusion
between "original parent" and "real parent". But it works, and this is code
that nobody really likes to touch because it is so fundamental, so..</p>

</quote>

</section>

<section
  title="Some Kernel Files Use BSD License"
  subject="BSD Licensed files in Linux kernel."
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_0003_01/msg01220.html"
  posts="33"
  startdate="08 Mar 2000 00:00:00 -0800"
  enddate="08 Mar 2000 00:00:00 -0800"
>
<topic>BSD</topic>

<p>A one-day thread. Darren Reed said that certain files in the kernel sources,
such as linux/drivers/net/bsd_comp.c, were released under the BSD license,
not the GPL, which he suspected amounted to a violation of the GPL. There
were numerous replies. Among them, Alan Cox explained:</p>

<quote who="Alan Cox">

<p>I talked to a genuine authentic (non-internet) lawyer
about the GPL v BSD stuff a few years ago:</p>

<p>

<ul>

<li>GPL + BSD without advertising clause appears to be completely ok. Ditto
the XFree86 one</li>

<li>GPL + BSD with advertising clause is not compatible and the advertising
clause is clearly an 'additional restriction'</li>
 
</ul>

</p>

<p>In general GPL + anything is a no go unless the 'anything' is extremely non
restrictive. The GPL draws an arbitary line and labels one side free they
other not.</p>

<p>Since UC Berkeley dropped the advertising clause from their parts of the
code its possible this problem has actually vanished by default in the
kernel case now. I've not checked the documentation to figure this
out.</p>

</quote>

<p>And Linus Torvalds also explained:</p>

<quote who="Linus Torvalds">

<p>There are numerous files that are under a dual
license, which is perfectly ok. I don't actively encourage it, because it
creates problems if somebody else than the original author were to ever say
"I want to patch the Linux GPL'd version of this file, but I do NOT want to
make my changes available under the BSD license" or vice versa, but it
hasn't been a problem so far, so it's not something I discourage either.</p>

<p>(And besides, if somebody were to send me a patch with those kinds of
restrictions, my solution would probably be to just not accept the patch in
the first place).</p>

<p>The one file you mention (bsd_comp.c) is the only real special case that I'm
aware of, which is why it cannot be linked into the kernel directly (it only
ever gets built as a module - not for any technical reasons, but simply due
to the copyright issue).</p>

</quote>

</section>

<section
  title="Scheduling Difficulties Under Linux"
  subject="Linux responsiveness under heavy load"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_0003_02/msg00073.html"
  posts="26"
  startdate="08 Mar 2000 00:00:00 -0800"
  enddate="10 Mar 2000 00:00:00 -0800"
>
<topic>BSD: FreeBSD</topic>

<mention>Victor Khimenko</mention>
<mention>Andrea Arcangeli</mention>
<mention>Helge Hafting</mention>

<p>Nicolas MONNET reported that under heavy loads, Linux became less
responsive. He'd heard the the BSDs did much better in that area, and asked
if it was true. Rik van Riel replied:</p>

<quote who="Rik van Riel">

<p>We're working on it. Andrea Arcangeli is currently
improving the disk scheduling algorithm, I have some (small) changes to the
memory management subsystem and a number of other people are working on
patches that aren't ready/public yet...</p>

<p>It's true that we lag somewhat behind FreeBSD in this point, but we're
working on it :)</p>

</quote>

<p>Victor Khimenko also replied to Nicolas, saying that the problem was
systemic and very difficult to solve. Since the kernel was not
multithreaded, userland processes could never interrupt it. And while you
could limit a process's CPU time, limiting the kernel's CPU time was not
possible. Linux also handled low-memory situations poorly, and that was also
something difficult to change.</p>

<p>Elsewhere, Jeff V. Merkey pointed out that Windows NT had the same problem
of poor interactivity under heavy load, and <quote who="Jeff V. Merkey">the
way they got around it was to "cheat" by cranking up the priority of the
console and Windows GUI subsystem anytime someone hit a key or moved the
mouse. In fact, an NT server is still heavily loaded, but by making the
display look and feel "snappy", it presents the illusion that the server has
great responsiveness under heavy load.</quote> He suggested working the same
trick for bash and Xwindows. Helge Hafting added that OS/2 employed a
similar method. Theodore Y. Ts'o replied to Jeff, explaining:</p>

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

<p>I wouldn't call this cheating at all.  There
are a number of classical tradeoffs that you have to contend with when doing
scheduler design. One is the tradeoff between efficiency and responsiveness.
Switching between tasks costs, and so if you have a very heavily loaded
batch system, it's most effiencient to set the scheduling quantuum very
high, so that a process runs for long periods of time before some other
process runs. On the other hand, for a desktop system, where user
interaction is important, you want to set the scheduling quantuum as short
as possible.</p>

<p>Linux does something similar, in terms rewarding processes that give up
their timeslice before their scheduling quantuum is up, and giving less
priority to CPU-bound processes. NT is simply taking it to the next level,
and rewarding user-interaction more than other I/O bound processes. Since NT
doesn't have an X server, they have to bump up the priority of the W32
subsystem when it's in the middle of doing graphics. The equivalent analogue
for us on the Unix side is to run the X server at a slightly high priority.
(Say, nice -4).</p>

<p>This isn't cheating; it's just making a policy statement that user
interaction is more important that some of the other things that the machine
might be doing. If a 10 minute kernel compile takes an extra 10 seconds to
complete, it's not a big deal. But if mouse motion and keyboard response
takes an extra 10 milliseconds, it is a very big deal as far as the user is
concerned.</p>

</quote>

</section>

<section
  title="Problems With Newest Compiler Snapshots"
  subject="[pre-2.3.51-2] memset problem on IA32"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_0003_02/msg00349.html"
  posts="8"
  startdate="10 Mar 2000 00:00:00 -0800"
  enddate="13 Mar 2000 00:00:00 -0800"
>
<topic>Version Control</topic>

<mention>David S. Miller</mention>
<mention>Artur Frysiak</mention>

<p>Artur Frysiak got the following linker error while compiling 2.3.51-pre2:</p>

<blockquote>

<code>

kernel/kernel.o: In function `check_free_space':<br />
kernel/kernel.o(.text+0xb384): undefined reference to `memset'

</code>

</blockquote>

<p>David S. Miller posted a one-line patch to
<code>linux/include/linux/fs.h</code>, to include
<code>linux/string.h</code>; Artur replied with complete success, but
Philipp Thomas objected that David's patch <quote who="Philipp
Thomas">doesn't help when using current CVS gcc and it decides to generate a
memcpy libcall as those places won't see the inlined versions from
asm/string.h, at least not on ia32.</quote> Mike Galbraith agreed that just
calling memcpy() from the kernel sources would allow newer compiler
snapshots to generate a library call, instead of using the inline memcpy()
function as earlier compiler versions had. According to his research, none
of the docs said that the compiler had to give preference to using inlined
functions over library calls; and all the folks he'd asked had also
confirmed that it was completely up to the compiler. He added, <quote
who="Mike Galbraith">even if you put memcpy() in a lib, nothing dictates
that the compiler can't call bcopy().. or a whole slew of libc functions for
that matter,</quote> and concluded, <quote who="Mike Galbraith">If this is
true, it means that it's a coding bug to use this kind of construct in the
kernel.</quote></p>

</section>

<section
  title="More Yamaha Doc Problems"
  subject="Yamaha Sounddrivers again"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_0003_02/msg00506.html"
  posts="10"
  startdate="11 Mar 2000 00:00:00 -0800"
  enddate="11 Mar 2000 00:00:00 -0800"
>
<topic>Sound: SoundBlaster</topic>

<p>Daniel Egger was unable to activate soundblaster emulation on his
soundcards, and couldn't find a solution in the linux-kernel archives. So he
reported, <quote who="Daniel Egger">Having read the "documentation" of the
YMF754 and YMF744 chips it seems to me that a soundcard containing this
chips wouldn't even need bitfiddling to activate the sb-emulation because it
it already activated.</quote> In practice, however, this didn't seem to be
the case. Alan Cox replied simply, <quote who="Alan Cox">you have to program
the rest of the board to kick it into that mode. That phase is
undocumented.</quote> Daniel was confused by this, since the documentation
seemed to state that the board was already in that mode. But Alan replied
bluntly, <quote who="Alan Cox">I wrote the driver, tried the theory. The
AC97 codec is not being initialised by the hardware and the DMA stuff seems
to need some kind of support setup doing that isnt documented.</quote></p>

</section>

</kc>

