<?xml version="1.0" ?>

<kc>

<title>Kernel Traffic</title>

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

<issue num="246" date="26 Dec 2003 00:00:00 -0800" />

<intro></intro>

<section
  title="Discussion Of Binary Modules; Linus Prefers OSL License To GPL"
  subject="Linux GPL and binary module exception clause?"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;as_drrb=b&amp;as_mind=29&amp;as_minm=3&amp;as_miny=1995&amp;as_maxd=3&amp;as_maxm=12&amp;as_maxy=2003&amp;selm=YMTi.aC.17%40gated-at.bofh.it"
  posts="276"
  startdate="03 Dec 2003 13:31:54 -0800"
  enddate="18 Dec 2003 23:56:02 -0800"
>
<topic>Binary-Only Modules</topic>
<topic>FS: JFS</topic>

<mention>Alan Cox</mention>

<p>A lot of folks participated in this thread. Below are some small bits and
pieces.</p>

<p>Kendall Bennett started it off, saying:</p>

<quote who="Kendall Bennett">

<p>I have heard many people reference the fact that the although the Linux
Kernel is under the GNU GPL license, that the code is licensed with an
exception clause that says binary loadable modules do not have to be under
the GPL. Obviously today there are vendors delivering binary modules (not
supported by the kernel maintainers of course), so clearly people believe
this to be true. However I was curious about the wording of this exception
clause so I went looking for it, but I cannot seem to find it. I downloaded
the 2.6-test1 kernel source code and looked at the COPYING file, but found
nothing relating to this (just the note at the top from Linus saying user
programs are not covered by the GPL). I also looked in the README file and
nothing was mentioned there either, at least from what I could see from a
quick read.</p>

<p>So does this exception clause exist or not? If not, how can the binary
modules be valid for use under Linux if the source is not made available
under the terms of the GNU GPL?</p>

<p>Lastly I noticed that the few source code modules I looked at to see if
the exception clause was mentioned there, did not contain the usual GNU GPL
preable section at the top of each file. IMHO all files need to have such a
notice attached, or they are not under the GNU GPL (just being in a ZIP/tar
achive with a COPYING file does not place a file under the GNU GPL). Given
all the current legal stuff going on with SCO, I figured every file would
have such a header. In fact some of the files I looked at didn't even contain
a basic copyright notice!!</p>

</quote>

<p>Linus Torvalds repied:</p>

<quote who="Linus Torvalds">

<p>No such exception exists.</p>

<p>There's a clarification that user-space programs that use the standard
system call interfaces aren't considered derived works, but even that isn't an
"exception" - it's just a statement of a border of what is clearly considered a
"derived work". User programs are _clearly_ not derived works of the kernel,
and as such whatever the kernel license is just doesn't matter.</p>

<p>And in fact, when it comes to modules, the GPL issue is exactly the same.
The kernel _is_ GPL. No ifs, buts and maybe's about it. As a result, anything
that is a derived work has to be GPL'd. It's that simple.</p>

<p>Now, the "derived work" issue in copyright law is the only thing that
leads to any gray areas. There are areas that are not gray at all: user
space is clearly not a derived work, while kernel patches clearly _are_
derived works.</p>

<p>But one gray area in particular is something like a driver that was
originally written for another operating system (ie clearly not a derived
work of Linux in origin). At exactly what point does it become a derived
work of the kernel (and thus fall under the GPL)?</p>

<p>THAT is a gray area, and _that_ is the area where I personally believe that
some modules may be considered to not be derived works simply because they
weren't designed for Linux and don't depend on any special Linux behaviour.</p>

<p>Basically:</p>

<p>

<ul>

<li>anything that was written with Linux in mind (whether it then _also_
   works on other operating systems or not) is clearly partially a derived
   work.</li>

<li>anything that has knowledge of and plays with fundamental internal
   Linux behaviour is clearly a derived work. If you need to muck around
   with core code, you're derived, no question about it.</li>

</ul>

</p>

<p>Historically, there's been things like the original Andrew filesystem
module: a standard filesystem that really wasn't written for Linux in the first
place, and just implements a UNIX filesystem. Is that derived just because
it got ported to Linux that had a reasonably similar VFS interface to what
other UNIXes did? Personally, I didn't feel that I could make that judgment
call. Maybe it was, maybe it wasn't, but it clearly is a gray area.</p>

<p>Personally, I think that case wasn't a derived work, and I was willing
to tell the AFS guys so.</p>

<p>Does that mean that any kernel module is automatically not a derived work?
HELL NO! It has nothing to do with modules per se, except that non-modules
clearly are derived works (if they are so central to the kenrel that you
can't load them as a module, they are clearly derived works just by virtue
of being very intimate - and because the GPL expressly mentions linking).</p>

<p>So being a module is not a sign of not being a derived work. It's just one
sign that _maybe_ it might have other arguments for why it isn't derived.</p>

</quote>

<p>He replied to himself a few minutes later, to add:</p>

<quote who="Linus Torvalds">

<p>Side note: historically, the Linux kernel module interfaces were really
quite weak, and only exported a few tens of entry-points, and really mostly
effectively only allowed character and block device drivers with standard
interfaces, and loadable filesystems.</p>

<p>So historically, the fact that you could load a module using nothing
but these standard interfaces tended to be a much stronger argument for not
being very tightly coupled with the kernel.</p>

<p>That has changed, and the kernel module interfaces we have today are MUCH
more extensive than they were back in '95 or so. These days modules are used
for pretty much everything, including stuff that is very much "internal kernel"
stuff and as a result the kind of historic "implied barrier" part of modules
really has weakened, and as a result there is not avery strong argument for
being an independent work from just the fact that you're a module.</p>

<p>Similarly, historically there was a much stronger argument for things
like AFS and some of the binary drivers (long forgotten now) for having
been developed totally independently of Linux: they literally were developed
before Linux even existed, by people who had zero knowledge of Linux. That
tends to strengthen the argument that they clearly aren't derived.</p>

<p>In contrast, these days it would be hard to argue that a new driver or
filesystem was developed without any thought of Linux. I think the NVidia
people can probably reasonably honestly say that the code they ported had
_no_ Linux origin. But quite frankly, I'd be less inclined to believe that
for some other projects out there..</p>

</quote>

<p>Jason Kingsland pointed out that if "mucking around with core
code" made a work derived, then <quote who="Jason Kingsland">why the
introduction of EXPORT_SYMBOL_GPL and MODULE_LICENSE()?  Specifying
explicit boundaries for the module interface has legitimised binary-only
modules.  This was the signal to developers of proprietary code that
binary-only modules are tolerable.</quote> He also gave a link to an <a
href="http://www.linuxdevices.com/articles/AT5041108431.html">article by
Kevin Dankwardt</a> on the subject. Linus replied that EXPORT_SYMBOL_GPL
and MODULE_LICENSE were <quote who="Linus Torvalds">really just
documentation.</quote> He went on:</p>

<quote who="Linus Torvalds">

<p>This is exactly so that it is more clear which cases are black-and-white,
and where people shouldn't even have to think about it for a single second. It
still doesn't make the gray area go away, but it limits it a bit ("if you
need this export, you're clearly doing something that requires the GPL").</p>

<p>Note: since the kernel itself is under the GPL, clearly anybody can modify
the EXPORT_SYMBOL_GPL() line, and remove the _GPL part. That wouldn't be
against the license per se. But it doesn't make a module that needs that
symbol any less needful of the GPL - exactly because the thing is just a
big cluehint rather than anything else.</p>

</quote>

<p>Elsewhere, Linus added his judgement of the GPL and the <a
href="http://opensource.org/licenses/osl-2.0.php">OSL (Open Software
License)</a>. Of the GPL, Linus said, <quote who="Linus Torvalds">It's a very
solid license, and your rants about it have no basis in fact. I personally
actually like the OSL slightly better in the way it was written.</quote></p>

<p>Elsewhere, Linus offered:</p>

<quote who="Linus Torvalds">

<p>a "binary linux kernel module" is a derived work of the kernel, and thus
has to come with sources.</p>

<p>But if you use those same sources (and _you_ wrote them) they do not
contain any Linux code, they are _clearly_ not derived from Linux, and you
can license and use your own code any way you want.</p>

<p>You just can't make a binary module for Linux, and claim that that module
isn't derived from the kernel. Because it generally is - the binary module
not only included header files, but more importantly it clearly is _not_ a
standalone work any more. So even if you made your own prototypes and tried
hard to avoid kernel headers, it would _still_ be connected and dependent
on the kernel.</p>

<p>And note that I'm very much talking about just the _binary_. Your source
code is still very much yours, and you have the right to distribute it
separately any which way you want. You wrote it, you own the copyrights to
it, and it is an independent work.</p>

<p>But when you distribute it in a way that is CLEARLY tied to the GPL'd kernel
(and a binary module is just one such clear tie - a "patch" to build it or
otherwise tie it to the kernel is also such a tie, even if you distribute it
as source under some other license), you're BY DEFINITION not an independent
work any more.</p>

<p>(But exactly because I'm not a black-and-white person, I reserve the
right to make a balanced decision on any particular case. I have several
times felt that the module author had a perfectly valid argument for why the
"default assumption" of being derived wasn't the case. That's why things
like the AFS module were accepted - but not liked - in the first place).</p>

</quote>

<p>In the same post, he went on:</p>

<quote who="Linus Torvalds">

<p>This is why SCO's arguments are specious. IBM wrote their code, retained
their copyrights to their code AND THEY SEVERED THE CONNECTION TO SCO'S CODE
(and, arguably the connections didn't even exist in the first place, since
apparently things like JFS were written for OS/2 as well, and the Linux port
was based on that one - but that's a separate argument and independent of
my point).</p>

<p>See the definition of "derivative" in USC 17.1.101:</p>

<blockquote>

<p>        A "derivative work" is a work based upon one or more preexisting
        works, such as a translation, musical arrangement, dramatization,
        fictionalization, motion picture version, sound recording, art
        reproduction, abridgment, condensation, or any other form in which
        a work may be recast, transformed, or adapted. A work consisting of
        editorial revisions, annotations, elaborations, or other modifications
        which, as a whole, represent an original work of authorship, is a
        "derivative work".</p>

</blockquote>

<p>And a binary module is an "elaboration" on the kernel. Sorry, but that
is how it IS.</p>

<p>In short: your code is yours. The code you write is automatically
copyrighted by YOU, and as such you have the right to license and use it any
way you want (well, modulo _other_ laws, of course - in the US your license
can't be racist, for example, but that has nothing to do with copyright laws,
and would fall under a totally different legal framework).</p>

<p>But when you use that code to create an "elaboration" to the kernel, that
makes it a derived work, and you cannot distribute it except as laid out by
the GPL. A binary module is one such case, but even just a source patch is
_also_ one such case. The lines you added are yours, but when you distribute
it as an elaboration, you are bound by the restriction on derivative works.</p>

<p>Or you had better have some other strong argument why it isn't. Which
has been my point all along.</p>

</quote>

<p>Elsewhere, Linus also said:</p>

<quote who="Linus Torvalds">

<p>personally, I have my own judgment on what "derivative works" are, and
I use that judgement to decide if I'd complain or take the matter further.</p>

<p>And so _I_ personally think some binary modules are ok, and you've heard
my arguments as to why. That means that _I_ won't sue over such uses, since
in my opinion there is no copyright infringement IN THOSE CASES due to me
not considering them derivative.</p>

<p>My opinions are fairly public, and the stuff I say in public actually does
have legal weight in that it limits what I can do (if I say in public that
I think something is ok, I have a much harder time then making the argument
that it _isn't_ ok in front of a judge - this is what the "estoppel" thing
is all about).</p>

<p>But the thing is, my public opinions don't bind anybody else. So if Alan
Cox, or _any_ other kernel copyright holder, disagrees with me (and trust me,
people do), they have the right to complain on their own. Their case would be
weakened by my stance (simply because a defendant could point to my opinions
and the judge might be swayed by that).</p>

<p>And quite frankly, my largest reason for not complaining loudly has
often been that I'm lazy, and in several cases of sme people using GPL'd
work improperly I have been ready to join a lawsuit that somebody else
initiates. So far people have tended to back down.</p>

</quote>

<p>Elsewhere, Linus also said:</p>

<quote who="Linus Torvalds">

<p>I'd like to make it clear that I'm actually much softer on this than
many other people - I've been making it clear that I think that binary-only
modules _are_ ok, but that the burden of proof of ok'ness is squarely on
the shoulders of the company that makes them.</p>

<p>So please do get that part clear: I'm pretty well-known for allowing
binary-only modules in things like AFS and nVidia, where some people think
they shouldn't be allowed.</p>

<p>But the real issue here (and in the subject line in this whole discussion)
is about an "exception clause".</p>

<p>There is none. And I'm just saying that there is NO WAY that a binary-only
module is "automatically in the clear". They _may_ be, but it's on the basis
of something totally different than just "it's a module".</p>

<p>This is why I want to make it so clear that "moduleness" (which is not
a word, but should be one) is not the thing that matters. There's still a
strong "linkage" to a particular kernel in a binary module, and the act of
running the linker is not what determines whether a work is a derived work.</p>

<p>In short, you should not see my arguments as a way of saying "all modules
are derived works". I'm clearly not saying that, since I _do_ allow binary
only modules and I don't claim they infringe.</p>

<p>So I'm not arguing for a very wide notion of derived works: I'm arguing
AGAINST the narrow notion that a module would somehow automatically _not_
be derived.</p>

<p>This is why I've said at least fifty times that a kernel module is to be
considered "derived by default". The non-derivedness comes from things that
have nothing to do with whether it is a module.</p>

</quote>

<p>There was quite a long discussion, involving many interesting people who
said many interesting things.</p>

</section>

<section
  title="Status Of DevFS/udev In 2.6"
  subject="State of devfs in 2.6?"
  archive="http://www.google.com/groups?q=g:thl2938285046d&amp;dq=&amp;hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=10vOq-7mK-11%40gated-at.bofh.it"
  posts="107"
  startdate="08 Dec 2003 07:36:26 -0800"
  enddate="14 Dec 2003 22:09:40 -0800"
>
<topic>FS: devfs</topic>
<topic>FS: ramfs</topic>
<topic>FS: sysfs</topic>
<topic>Hot-Plugging</topic>

<mention>Greg KH</mention>

<p>Andrew Walrond asked:</p>

<quote who="Andrew Walrond">

<p>Whats the general feeling about devfs now? I remember Christoph and
others making some nasty remarks about it 6months ago or so, but later noted
christoph doing some slashing and burning thereof.</p>

<p>Is it 'nice' yet?</p>

</quote>

<p>Greg KH said that the DevFS code was deprecated and suffered from
unsolvable race conditions; William Lee Irwin III also said to Andrew,
<quote who="William Lee Irwin III">I would say it's deprecated at the very
least. sysfs and udev are supposed to provide equivalent functionality,
albeit by a somewhat different mechanism.</quote> Andrew thanked him and asked
how well the udev replacement for DevFS was doing; in particular, did udev offer
a viable MAKEDEV replacement. Rob Landley replied:</p>

<quote who="Rob Landley">

<p>My understanding is that udev takes the information exported by sysfs
about what devices exist in the system, and creates device nodes in /dev
(which can be a ramfs mount or part of a persistent filesystem, udev itself
doesn't care).  I'm guessing it traverses sysfs to see what the system's
got on startup (some variant of "find /sys -name device", perhaps) and then
receives hotplug events when new devices are added later.  On the whole, this
is generally cool, hotplug friendly, and small and simple.  _and_ the result
looks like a recognizable /dev directory, so end-user applications don't
have to be "devfs aware" (which was a bad sign from day 1 if you ask me).</p>

<p>Unfortunately, sysfs doesn't yet export device node information
for everything in the system yet.  (There aren't any under /sys/cdev,
/sys/devices/legacy, or /sys/devices/system, for example).  There are pending
patches to add more, but they're not considered bug fixes, so Linus won't take
them before 2.6.0 and we'll have to wait until after 2.6.0 for development
on this subsystem to finish.</p>

<p>Probably somewhere in the 2.6.4 to 2.6.6 timeframe, sysfs will have
all the device exports udev needs.  (Or at least all the ones anybody's
complained about yet.)  Until then...  dunno.  Maybe you can use a /dev
directory on a persistent filesystem that you mknod any extra devices you
need into yourself?)</p>

</quote>

</section>

<section
  title="Linux 2.4.24-pre1 Released; XFS Merged"
  subject="Linux 2.4.24-pre1"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=11foj-1aN-31%40gated-at.bofh.it"
  posts="11"
  startdate="10 Dec 2003 08:23:14 -0800"
  enddate="12 Dec 2003 13:45:14 -0800"
>
<topic>FS: ReiserFS</topic>
<topic>FS: XFS</topic>
<topic>OOM Killer</topic>

<p>Marcelo Tosatti announced 2.4.24-pre1, saying the XFS filesystem had been
merged. See <kcref subject="Announce: XFS split patches for 2.4.23"
startdate="30 Nov 2003 17:06:25 -0800"/> for the debate on this issue.</p>

<p>Mike Fedyk asked, <quote who="Mike Fedyk">Will you accept the data-logging
patches for reiserfs3 from suse in this release if it is submitted?  Don't
forget that the OOM killer has been added as an option (defaulting to off
:)</quote> Marcelo said, <quote who="Marcelo Tosatti">Its up to the reiserfs
people.</quote> Hans Reiser replied, <quote who="Hans Reiser">I will approve
it once Chris tells me it is ready.  (Especially since I asked him for the
patch port....;-)  )</quote> And Mike said, <quote who="Mike Fedyk">Hasn't
it been ready for a while now?  Let's get the merging started. :)</quote></p>

</section>

<section
  title="New -tiny Kernel Patchset To Collect Patches That Shrink The Kernel"
  subject="[ANNOUNCE] -tiny tree for small systems (2.6.0-test11)"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=11Mtv-8kY-1%40gated-at.bofh.it"
  posts="7"
  startdate="11 Dec 2003 19:37:34 -0800"
  enddate="12 Dec 2003 08:51:10 -0800"
>
<topic>FS: sysfs</topic>
<topic>Networking</topic>
<topic>Small Systems</topic>

<p>Matt Mackall announced:</p>

<quote who="Matt Mackall">

<p>This is the first release of a new kernel tree dubbed '-tiny' (someone
already took -mm). The aim of this tree is to collect patches that
reduce kernel disk and memory footprint as well as tools for working
on small systems, an area Linux mainstream has been moving away from
since Linus got a real job. Target users are things like embedded
systems, small or legacy desktop folks, and handhelds.</p>

<p>To get the ball rolling, I've thrown in about 50 patches that trim
various bits of the kernel, almost all configurable, and a fair number
may eventually be appropriate for mainline. All the config options are
currently thrown under CONFIG_EMBEDDED and many of the minor tweaks
are covered under a set of config options called CONFIG_CORE_SMALL,
CONFIG_NET_SMALL, and CONFIG_CONSOLE_SMALL.</p>

<p>Nifty things I've included:</p>

<p>

<ul>

<li>building with -Os</li>
<li>4k process stacks (via -wli)</li>
<li>configurable removal of printk, BUG, and panic() strings</li>
<li>configurable HZ</li>
<li>configurable support for vm86, core dumps, kcore, sysfs, aio, etc.</li>
<li>a very nice kmalloc auditing system via /proc/kmalloc</li>
<li>auditing of bootmem usage</li>
<li>a system for counting inline instantiations</li>
<li>my netpoll/netconsole patches</li>
<li>my drivers/char/random fixups</li>

</ul>

</p>

<p>Some items on my todo list:</p>

<p>

<ul>

<li>borrow kgdb from -mm</li>
<li>merge my netpoll-based kgdb-over-ethernet</li>
<li>pageable kernel memory for a select subset of the kernel</li>
<li>reduced functionality vt for small gui systems</li>
<li>generic lookup/hash management code</li>

</ul>

</p>

<p>How small is -tiny? It's hard to quantify as it's all configurable and
some functionality is more important than others, but my current test
config has full IPv4 net stack and most other important functionality
and will boot comfortably on a 4M x86 box with about 2M
free+buffers+cache.</p>

<p>Bug reports, suggestions, and patch submissions are welcome!</p>

<p>The patch, currently against 2.6.0-test11, can be found at:</p>

<p><a href="http://selenic.com/tiny/">http://selenic.com/tiny/</a></p>

</quote>

<p>Tom Rini replied, <quote who="Tom Rini">I'd like to
suggest you check out the "tweaks" idea I tossed out here:
http://www.ussg.iu.edu/hypermail/linux/kernel/0211.0/2229.html If this sounds
interesting, I've got a version of the patch (albeit old and not applying
directly right now I bet) that moved things into header files and got all
of the dependancy stuff correct except for the initial run (so I think I
was forcing an update with any make invocation, but there were no spurious
recompiles).</quote> Matt said, <quote who="Matt Mackall">Looks cool. My only
worry is that to do it right, it has to make some fairly sweeping changes. I'm
trying to keep the stuff in -tiny fairly small and independent so that stuff
can be cherry-picked, but if we can get a consensus that "tweaks" is a good
direction for mainline, it might prove useful for some of the stuff I'm doing
with CONFIG_CORE_SMALL and friends now.</quote> Tom replied, <quote who="Rom
Rini">part of the problem that came up when this was brought up during 2.5
is that adding a whole bunch of CONFIG options for things Just Won't Happen
(too complex, PITA, etc).  OTOH however, lots of stuff like that keeps getting
in.</quote> And Bill Davidsen replied, <quote who="Bill Davidsen">But now
we have a config section for disabling things which may not be needed in
embedded systems. So there's a fair chance that tweaks and such can be
accepted as long as they're in the area where most will never go.</quote> But
Tom said this was also true when the question came up in 2.5.</p>

</section>

<section
  title="Revised 'Unreliable' Kernel Locking Guide"
  subject="[DOCUMENTATION] Revised Unreliable Kernel Locking Guide"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=11Oca-2TJ-5%40gated-at.bofh.it"
  posts="14"
  startdate="11 Dec 2003 21:24:18 -0800"
  enddate="15 Dec 2003 22:32:37 -0800"
>

<p>Rusty Russell announced:</p>

<quote who="Rusty Russell">

<p>OK, I've put the html version up for your reading pleasure: the diff is
quite extensive and hard to read.</p>

<p><a
href="http://www.kernel.org/pub/linux/kernel/people/rusty/kernel-locking/">http://www.kernel.org/pub/linux/kernel/people/rusty/kernel-locking/</a></p>

</quote>

<p>A bunch of folks were happy to see this, and offered corrections and
suggestions.</p>

</section>

<section
  title="Larry Pulls Another Larry"
  subject="RFC - tarball/patch server in BitKeeper"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=12Ieh-id-9%40gated-at.bofh.it&amp;prev=/groups%3Fas_ugroup%3Dlinux.kernel%26as_uauthors%3DLarry%2520McVoy%26as_usubject%3DRFC%2520-%2520tarball/patch%2520server%2520in%2520BitKeeper%26as_drbb%3Db%26as_mind%3D14%26as_minm%3DDec%26as_miny%3D2003%26as_maxd%3D14%26as_maxm%3DDec%26as_maxy%3D2003"
  posts="33"
  startdate="14 Dec 2003 09:21:56 -0800"
  enddate="21 Dec 2003 12:02:57 -0800"
>
<topic>Version Control</topic>

<mention>Pavel Machek</mention>

<p>Larry McVoy announced:</p>

<quote who="Larry McVoy">

<p>I've prototyped an extension to BitKeeper that provides tarballs and
patches.  The idea is to make it possible for all trees hosted by bkbits.net
provide access to the data with a free client (included below in prototype
form).</p>

<p>The system is simplistic, it just provides a way to get the most recent
sources as a tarball and then any later updates as a patch.  There is no
provision for generating diffs, editing files, merging, etc.  All of that
is something that you can write, if you want, using standard tools (think
hard linked trees).</p>

<p>Before rolling this out, I want to know if this is going to (finally)
put to rest any complaints about BK not being open source, available on all
platforms, etc.  You need to understand that this is all you get, we're not
going to extend this so you can do anything but track the most recent sources
accurately.  No diffs.  No getting anything but the most recent version.
No revision history.</p>

<p>If you want anything other than the most recent version your choices
are to use BitKeeper itself or, if you want the main branches of the Linux
kernel, the BK2CVS exports.  This is not a gateway product, it is a way for
developers to track the latest and greatest with a free (source based) client.
It is not a way to convert BK repos to $SCM.</p>

<p>If the overwhelming response is positive then I'll add this to the
bkbits.net server and perhaps eventually to the BK product itself.</p>

</quote>

<p>Chris Frey and Pavel Machek drew attention to the license Larry used for
the software:</p>

<quote who="Larry McVoy">

<p>Licensed under the NWL - No Whining License.</p>

<p>You may use this, modify this, redistribute this provided you agree:</p>

<p>

<ul>

<li>not to whine about this product or any other products from BitMover,
Inc.</li>
<li>that there is no warranty of any kind.</li>
<li>retain this copyright in full.</li>

</ul>

</p>

</quote>

</section>

<section
  title="Status Of CONFIG_USB_DC2XX In 2.6"
  subject="dc2xx.c ported yet?"
  archive="http://www.google.com/groups?as_ugroup=linux.kernel&amp;as_uauthors=Joshua%20Kwan&amp;as_usubject=dc2xx.c%20ported%20yet?&amp;as_drbb=b&amp;as_mind=14&amp;as_minm=Dec&amp;as_miny=2003&amp;as_maxd=14&amp;as_maxm=Dec&amp;as_maxy=2003"
  posts="2"
  startdate="14 Dec 2003 12:17:07 -0800"
  enddate="14 Dec 2003 12:20:44 -0800"
>
<topic>Hot-Plugging</topic>
<topic>USB</topic>

<p>Joshua Kwan asked, <quote who="Joshua Kwan">Hi, I noticed that
CONFIG_USB_DC2XX is not available in the 2.6 tree and dc2xx.c doesn't exist
either. However, it's available in 2.4. Does the driver need to be ported? If
so, can I help?</quote> David Ford replied that there was no need for a
port. He said:</p>

<quote who="David Ford">

<p>It is accessed via libusb these days opening /proc/bus/usb/*/*</p>

<p>Emerge (apt-get, etc, as per your distro of choice) something like gphoto2
which should include libusb by dependancy and setup hotplug.</p>

</quote>

</section>

<section
  title="Update Of Experimental Net Driver"
  subject="[BK PATCHES] 2.6.x experimental net driver updates"
  archive="http://www.google.com/groups?as_ugroup=linux.kernel&amp;as_uauthors=Jeff%20Garzik&amp;as_usubject=[BK%20PATCHES]%202.6.x%20experimental%20net%20driver%20updates&amp;as_drbb=b&amp;as_mind=16&amp;as_minm=Dec&amp;as_miny=2003&amp;as_maxd=16&amp;as_maxm=Dec&amp;as_maxy=2003"
  posts="4"
  startdate="15 Dec 2003 22:32:26 -0800"
  enddate="18 Dec 2003 05:49:37 -0800"
>
<topic>Networking</topic>
<topic>Version Control</topic>

<mention>Stephen Hemminger</mention>
<mention>Adrian Bunk</mention>
<mention>Francois Romieu</mention>
<mention>Krzysztof Halasa</mention>

<p>Jeff Garzik announced:</p>

<quote who="Jeff Garzik">

<p>Another edition of net driver updates.</p>

<p>Summary of new changes:</p>

<p>

<ul>

<li>revert skfddi janitorial patches.  no skfddi changes are included in
this patchkit anymore.  Stephen Hemminger has a much better skfddi patch
which obsoleted the already-merged skfddi changes.</li>
<li>atmel wireless SKB leak fix</li>
<li>3c574_cs deadlock fix</li>
<li>bonding destruction fix</li>
<li>more work from Al making net_device allocation dynamic and sane
(including fast, const-offset private structure allocation for drivers)</li>
<li>sk98lin update from vendor</li>
<li>TG3 update from DaveM</li>
<li>new pc200syn WAN driver from WAN maintainer Krzysztof Halasa</li>
<li>r8169 fixes from Francois Romieu</li>

</ul>

</p>

<p>Summary of patchkit:</p>

<p>

<ul>

<li>new e100 driver (rewritten from scratch)</li>
<li>new nVidia nForce NIC driver</li>
<li>new pc200syn WAN driver</li>

<li>tg3 bug fixes</li>
<li>r8169 major bug fixes</li>
<li>e1000 minor updates / fixes</li>
<li>sk98lin vendor updates / fixes</li>
<li>misc bug fixes</li>

<li>8139too NAPI support</li>
<li>tulip NAPI support</li>

<li>netconsole / netdump support</li>
<li>net_device allocation and reference counting work</li>

</ul>

</p>

<p>Patch:<br />
<a href="http://www.kernel.org/pub/linux/kernel/people/jgarzik/patchkits/2.6/2.6.0-test11-bk11-netdrvr-exp1.patch.bz2">http://www.kernel.org/pub/linux/kernel/people/jgarzik/patchkits/2.6/2.6.0-test11-bk11-netdrvr-exp1.patch.bz2</a></p>

<p>Full changelog:<br />
<a href="http://www.kernel.org/pub/linux/kernel/people/jgarzik/patchkits/2.6/2.6.0-test11-bk11-netdrvr-exp1.log">http://www.kernel.org/pub/linux/kernel/people/jgarzik/patchkits/2.6/2.6.0-test11-bk11-netdrvr-exp1.log</a></p>

<p>BK repo:<br />
bk://gkernel.bkbits.net/net-drivers-2.5-exp</p>

</quote>

<p>After a bug report from Adrian Bunk, Jeff posted an updated <a
href="http://www.kernel.org/pub/linux/kernel/people/jgarzik/patchkits/2.6/2.6.0-test11-bk11-netdrvr-exp2.patch.bz2">patch</a>
and <a
href="http://www.kernel.org/pub/linux/kernel/people/jgarzik/patchkits/2.6/2.6.0-test11-bk11-netdrvr-exp2.log">changelog</a>;
which Adrian confirmed worked for him.</p>

</section>

<section
  title="Status Of -mm Tree And 2.6"
  subject="2.6.0-test11-mm1"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=13GtK-q4-11%40gated-at.bofh.it"
  posts="17"
  startdate="17 Dec 2003 01:43:50 -0800"
  enddate="19 Dec 2003 10:21:21 -0800"
>

<mention>Thomas Molina</mention>
<mention>Christian Axelsson</mention>

<p>Andrew Morton put out 2.6.0-test11-mm1, and Andrew Walrond asked, <quote
who="Andrew Walrond">What are your intentions with -mm when you take over 2.6?
Is any of -mm getting into 2.6 before 2.6.0 release? Is it mainly queued
for 2.6.1?</quote> Christian Axelsson also wanted to know, and Andrew M.
replied, <quote who="Andrew Morton">We'll start merging it up after 2.6.0.
It'll be quite a lot of work, actually - a lot of things have been parked in
-mm for some time and may not have had sufficiently wide testing, especially
on non-i386.  I need to ask the originators and others to re-review and
retest some things.</quote> Thomas Molina said he was concerned that the
sheer quantity of stuff queued for post-2.6.0 was becoming likely to make
2.6.1 much less stable than 2.6.0; and this worried him. But Andrew M. said
that most of the stuff in the queue represented real fixes for real problems,
and that it was mainly just a question of figuring out the best way to merge
them all so the least breakage would occur. He also suggested that folks do
a lot of testing on the -mm tree, since that was where new patches would go
prior to each new 2.6 release.</p>

</section>

<section
  title="Linux 2.6.0 Released"
  subject="Linux 2.6.0"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=13XOk-1FW-25%40gated-at.bofh.it&amp;prev=/groups%3Fas_ugroup%3Dlinux.kernel%26as_uauthors%3DLinus%2520Torvalds%26as_usubject%3DLinux%25202.6.0%26as_drbb%3Db%26as_mind%3D17%26as_minm%3DDec%26as_miny%3D2003%26as_maxd%3D17%26as_maxm%3DDec%26as_maxy%3D2003"
  posts="47"
  startdate="17 Dec 2003 20:14:06 -0800"
  enddate="18 Dec 2003 22:57:47 -0800"
>
<topic>Big Memory Support</topic>
<topic>Bug Tracking</topic>
<topic>Device Mapper</topic>
<topic>Disk Arrays: LVM</topic>
<topic>Disk Arrays: RAID</topic>
<topic>Disks: IDE</topic>
<topic>FS: ext2</topic>
<topic>Kernel Release Announcement</topic>
<topic>SMP</topic>
<topic>Version Control</topic>

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

<quote who="Linus Torvalds">

<p>                                "The beaver is out of detox"<br />
                                                - Anon</p>

<p>This should not be a big surprise to anybody on the list any more,
since we've been building up to it for a long time now, and for the last
few weeks I haven't accepted any patches except for what amounts to fairly
obvious one-liners.</p>

<p>Anyway, 2.6.0 is out there now, and the patch from -test11 is a swelte
11kB in size. It's not the totally empty patch I was hoping for, but judging
by the bugs I worked on personally, things are looking pretty good.</p>

<p>To give you an example, one of the nastier bugs that we chased for the
last five weeks was a bug that could only be reproduced reliably on a 16-
or 32-way system, and only when the system had flaky disks. Putting in
known-good disks made the problem disappear. Similarly, compiling the kernel
with another compiler made the problem disappear.</p>

<p>It turned out to be a really subtle bug wrt SMP ordering and stack
allocation, and lots of thanks to Ram Pai for gathering all the information
that eventually led to it being fixed. The fix was a one-liner and a big
comment - but my point is that the quality of bugs has been pretty high
lately, and we feel that we're in pretty good shape.</p>

<p>Andrew has written up some caveats and pointers to information about 2.4.x
vs 2.6.x changes, and I'll let him post that. Some known issues were not
considered to be release-critical and a number of them have pending fixes
in the -mm queue. Generally they just didn't have the kind of verification
yet where I was willing to take them in order to make sure a fair 2.6.0
release.</p>

<p>NOTE! I'll continue to keep track of the 2.6 BK tree until we're closer
to the time when we literally split it for 2.7.x, because both Andrew and
I are pretty comfortable with our respective toolchains. But Andrew is the
stable tree maintainer, so everything should be approved by him at this
point. Think of the -mm tree as the staging area, and mine as a release
tree. We'll work together, but Andrew is boss.</p>

<p>(BK merging will have to go through some approval format, we'll see how
that works out exactly).</p>

</quote>

<p>A multitude burst into applause across the world. Regarding Andrew Morton's
list of caveats, Andrew said:</p>

<quote who="Andrew Morton">

<p>It's actually rather short because I started late.  See below.</p>

<p>There are also the "must-fix" and "should-fix" lists of items which we have
identified as still on the 2.6 todo list.  These are at</p>

<p><a
href="ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/must-fix/must-fix-7.txt">ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/must-fix/must-fix-7.txt</a>
and <a
href="ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/must-fix/should-fix-7.txt">ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/must-fix/should-fix-7.txt</a></p>

<p>

<ul>

<li>

<p>The 2.6.0 kernel has undergone several weeks of stabilization and we
  expect it to run well on server-class machines.</p>

<p>  Desktops and laptops may have more trouble at this time because of the
  much wider range of hardware and because of as-yet unimplemented fixes for
  the hardware and BIOS bugs from which these machines tend to suffer.</p>

<p>  During the 2.6.0 stabilization period a significant number of less
  serious fixes have accumulated in various auxiliary kernel trees and these
  shall be merged into the 2.6 stream after the 2.6.0 release.  Many of these
  fixes appear in Andrew Morton's "-mm" tree, at</p>

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

</li>

<li>

<p>Please report any problems to the appropriate mailing list.  If you do
  not know which list to use, send the report to linux-kernel@vger.kernel.org
  and it should reach the right person.  Some active subsystem mailing lists
  are:</p>

<p>        linux1394-devel@lists.sourceforge.net<br />
        linux-xfs@oss.sgi.com<br />
        linux-acpi@intel.com<br />
        linux-scsi@vger.kernel.org<br />
        ext2-devel@lists.sourceforge.net<br />
        linux-usb-users@lists.sourceforge.net</p>

<p>  Alternatively, kernel bug reports may be entered into the kernel bug
  tracking system at <a href="http://bugme.osdl.org/">http://bugme.osdl.org/</a></p>

</li>

<li>

<p>There are significant changes in the module subsystem, the LVM (Device
  Mapper) and RAID subsystems.  Details about these and many other kernel
  changes are presented in David Jones's kernel upgrade document at</p>

<p><a href="http://www.linux.org.uk/~davej/docs/post-halloween-2.6.txt">http://www.linux.org.uk/~davej/docs/post-halloween-2.6.txt</a></p>

<p>  Users who are testing 2.6 kernels for the first time should consult this
  document.</p>

</li>

<li>The ATA RAID drivers (eg the HighPoint RAID driver) have not been ported
  to the new BIO code and are not available under the 2.6 kernel at this
  time.</li>

<li>cryptoloop doesn't work on highmem machines.  Fixes exist in -mm and are
  queued for 2.6.1.</li>

<li>

<p>There are known performance problems with the default disk I/O scheduler
  which show up when the workload is performing small, random reads and
  writes (ie: database loads).  Largely fixed in -mm.</p>

<p>  In general, the "deadline" I/O scheduler is, and shall remain somewhat
  faster than the default "anticipatory" I/O scheduler with these sorts of
  workloads.  Database admins should consider adding the "elevator=deadline"
  kernel boot parameter.</p>

</li>

<li>There are performance problems due to misbehaviour in the readahead code
  which also impact database-style workloads.  Fixed in -mm, queued for
  2.6.1.</li>

<li>There are a larger number of as-yet unmerged frame buffer driver fixes.</li>

</ul>

</p>

</quote>

<p>Trond Myklebust asked, <quote who="Trond Myklebust">Will you be posting
a plan for how you want the 2.6.x series to proceed? I gather I'm not alone
in having a load of patches that I'd like to send you ASAP...</quote> Andrew
replied:</p>

<quote who="Andrew Morton">

<p>I believe that the processes we've all been using for the past year have
worked well (invitation here for people to disagree).  So any changes we
make to that process shouldn't be arbitrary.</p>

<p>I expect that until 2.7.0 forks, Linus and I shall continue to work 2.6.x
in much the same manner - that's what I'd prefer, anyway.</p>

<p>Obviously, the threshold for merging things into 2.6 becomes higher,
and large changes will be rejected pending more review and testing.
I shall continue to run an alternate tree for the provision of that testing
service.</p>

<p>Generally, we should expect that there will be large changes across the
2.6 lifetime - it is unrealistic to believe otherwise.  We just need to find
the processes to absorb those changes (and feed them into or from 2.7.x)
without breaking stuff.  We've done that fairly well across 2.5 I think.</p>

<p>We should sit tight for the next week or so, in case we need to rush out
a 2.6.1 for brown-bag bugs.  After that I need to shrink the -mm patchset
rather a lot.</p>

</quote>

</section>

<section
  title="libsysfs 0.4.0 Released"
  subject="[ANNOUNCE] libsysfs v0.4.0"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=144FL-3Tt-11%40gated-at.bofh.it"
  posts="1"
  startdate="18 Dec 2003 04:11:29 -0800"
>
<topic>FS: devfs</topic>
<topic>FS: sysfs</topic>
<topic>Klibc</topic>

<p>Ananth N Mavinakayanahalli announced:</p>

<quote who="Ananth N Mavinakayanahalli">

<p>Release 0.4.0 for libsysfs is now available at:</p>

<p><a
href="http://linux-diag.sourceforge.net">http://linux-diag.sourceforge.net</a></p>

<p>A number of changes have been made in this release which will require
a few modifications to applications already using the library. (udev-009
already has a bulk of these changes).</p>

<p>Here are the important additions/changes:</p>

<p>

<ul>

<li>Postponed reading directories and attributes until
                absolutely necessary.</li>
<li>Structure elements that are lists or references to
                structures are not populated by default. APIs
                have now been provided to populate them.</li>
<li>All "open" functions that take absolute path as argument
                now have a "_path" suffix.</li>
<li>Provided attribute "refresh" functions to read in updated
                attribute values.</li>
<li>Changes for klibc compatibility.</li>
<li>Provided APIs to retrieve device/class_device "parent".</li>
<li>Added manpages for lsbus and systool (Thanks to Martin Pitt).</li>

</ul>

</p>

<p>Please visit <a
href="http://linux-diag.sourceforge.net/Sysfsutils.html">http://linux-diag.sourceforge.net/Sysfsutils.html</a>
for more information.</p>

</quote>

</section>

<section
  title="x86_64-2.6.0-1 Released"
  subject="x86_64-2.6.0-1 released"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=146es-7eN-3%40gated-at.bofh.it"
  posts="1"
  startdate="18 Dec 2003 05:05:04 -0800"
>
<topic>Executable File Format</topic>
<topic>FS: JFS</topic>
<topic>FS: sysfs</topic>
<topic>PCI</topic>
<topic>Power Management: ACPI</topic>
<topic>SMP</topic>
<topic>Serial ATA</topic>

<p>Andi Kleen announced:</p>

<quote who="Andi Kleen">

<p>The first x86-64 patchkit for the 2.6.0 linux kernel has been released. I
normally don't announce patchkits to linux-kernel, but a lot of people
don't seem to know about them.  The patchkit has fixes for many serious bugs
(including data corruption iossues) on x86-64 that didn't make it in official
2.6.0. Please don't bother reporting any x86-64 problems to me if you didn't
apply the patchkit first.</p>

<p>Hopefully now that the trees are more open again most of this can migrate
into the official tree, depending on the policy enforced by Linus/Andrew.</p>

<p>This version just has a few minor fixes against the last patchkit release
(x86_64-2.6.0test11-3)</p>

<p><a href="ftp://ftp.x86-64.org/pub/linux/v2.6/x86_64-2.6.0-1.bz2">ftp://ftp.x86-64.org/pub/linux/v2.6/x86_64-2.6.0-1.bz2</a><br />
df65fee5a0388a036d324cb9b16bd778  x86_64-2.6.0-1.bz2</p>

<p>ChangeLog since x86_64-2.6.0test11-3:</p>

<p>

<ul>

<li>Mark some more non 64bit clean drivers !64BIT</li>
<li>Remove dump_sg in pci-gart.c again</li>
<li>Fix inefficiency in find_next_bit</li>

</ul>

</p>

<p>Older Changelog is available in</p>

<p><a href="ftp://ftp.x86-64.org/pub/linux/v2.6/RELEASE-NOTES">ftp://ftp.x86-64.org/pub/linux/v2.6/RELEASE-NOTES</a></p>

<p>Some known issues:</p>

<p>

<ul>

<li>Taskfile IO can hang SuSE hwscan. Better disable it for now.</li>
<li>Taskfile IO can cause disk corruption too.</li>
<li>NMI watchdog runs too often (HZ instead once a second) (still true?)
[I think that's fixed now, but needs verifying]</li>
<li>Machine Check calls printk currently, but that can deadlock when the MCE
occurs inside any of the console locks.</li>
<li>sysfs support for arch/ may not be complete.</li>
<li>32bit SYSCALL seems to still have problems with some programs (disabled
currently)</li>
<li>Some reports of persistent segfaults after stress tests
(also seen once here, need to be reproduced). Could be IOMMU overflow.</li>
<li>Mysterious timer bug in some cases. Shortly in or after bootup
the timer lists gets corrupted in some configuration. Seems to depend
on how long the bootup takes.</li>
<li>JFS seems to corrupt file systems quickly (generic 64bit bug)
        [maintainer cannot reproduce it]</li>
<li>WCHAN seems to be broken</li>
<li>Suspend often doesn't initialize video after wakeup
        Generic problem, needs a lot of effort to fix properly. The graphic
        card has to be POSTed properly, which is quite complicated.</li>
<li>MPT fusion driver breaks when iommu merging is disabled (run with iommu=merge)
        A workaround for this is enabled by default now. Underlying bug
        still unfixed. This bug seems to only occur on some specific machines,
        most MPT fusion users probably don't have to worry about it. Seems
        to be a driver bug.</li>
<li>Realtek 8169 driver does not support >4GB (patch exists, should be merged
by network driver maintainer)</li>
<li>Nvidia and VIA boards are forced to IO-APIC off to work around ACPI bugs.
        This will be a major problem once SMP boards with these chipsets
        are out.</li>
<li>Some boards don't set the wall clock correctly</li>
<li>G400 DRM crashes machine</li>
<li>VIA SATA doesn't work</li>
<li>Some people report disk corruptions with IOMMU. Not able to reproduce it.
        It seems to happen on some block device drivers who have a very deep
        queue. Mostly these devices don't need an IOMMU (3ware is a prominent
        exception) because they support 64bit IO. Unfortunately many people
        still run with CONFIG_IOMMU_DEBUG which will force the IOMMU support
        for every device. Changing the IOMMU flush to flush on every mapping
        seems to fix it. Currently there are workarounds active that
        check for Qlogic and 3ware and do that.  Anybody still seeing this
please
        try with iommu=fullflush and report back.
        Underlying bug still undebugged.</li>
<li>Scheduler does not work well with NUMA (testcase multithreaded STREAM)
        It does not distribute threads quickly enough to all CPUs,
        which leads to memory getting allocated on the wrong nodes.</li>
<li>Some motherboard/cpu combinations do not reboot automatically</li>
<li>IPSec netlink setup code is not 32bit emulation clean</li>
<li>iptables is not 32bit emulation clean</li>
<li>gettimeofday gets non monontonous when ntpd corrects drift</li>
<li>valgrind does not run even with linux32 --3gb. Figure out what is
different.</li>
<li>        [An a.out emacs also doesn't run. Probable the same difference]</li>

</ul>

</p>

</quote>

</section>

<section
  title="Itanium Maintainership"
  subject="[PATCH] update sn2 MAINTAINERS file entry"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=14cN3-24a-17%40gated-at.bofh.it"
  posts="1"
  startdate="18 Dec 2003 12:15:19 -0800"
>

<mention>Jesse Barnes</mention>
<mention>John Hesterberg</mention>

<p>Jesse Barnes posted a patch listing himself as the "SN-IA64 (Itanium)
SUB-PLATFORM" maintainer, instead of John Hesterberg.</p>

</section>

</kc>

