By Jonathan Corbet
April 15, 2008
Ingo Molnar was recently
bitten by a problem which, in one form or
another, may affect a wider range of Linux users after 2.6.26. Linux
currently has two drivers for Intel's e1000 network adapters, called
"e1000" and "e1000e". The former driver, being the older of the two,
supports all older, PCI-based e1000 adapters. There is, shall we say, a
relative shortage of developers who are willing to stand up for the quality
of the code in this driver, but it works and has a lot of users.
The e1000e driver, instead, supports PCI-Express adapters. It
is a newer driver which is seen as being better written and easier to
maintain. It is intended that all new hardware will be supported by this
driver, and that, in particular, all PCI-Express hardware will use it. The
only problem is that a few PCI-Express chipsets were added to the older
e1000 driver before this policy was adopted. Since the newer driver also
supports those chipsets, there are two drivers (with two completely
different bodies of code) supporting the same hardware. The e1000
maintainers would like to end this duplication and put the e1000 driver
into a stable maintenance mode.
To that end, earlier this month, it was announced that,
as of 2.6.26, the PCI IDs corresponding to PCI-Express devices would be
removed from the e1000 driver, and that all users of that affected hardware
need to move over to e1000e. The e1000 developers had originally tried
to make this move for 2.6.25, but they committed a fundamental faux
pas in the process: they broke Linus's machine. So that change got
reverted before 2.6.25-rc1 came out. Instead, now, we have the
announcement that the change is coming in the next cycle (when the e1000e
problems, presumably, will be fixed) and a bit of configuration trickery
has been added; it causes the e1000 driver to not claim PCI-Express
devices if the e1000e driver has been built into the kernel.
Ingo's problem is that he built the e1000 driver into his kernel, but
ended up with e1000e configured as a module which was never loaded. That combination leads
to a network adapter which does not work at all, since the built-in driver
no longer claims it. Ingo, a bit disgruntled at having to spend an hour
tracking down the problem, has suggested that it is a regression which must
be fixed. The e1000 driver maintainers have resisted doing so, but Linus,
having also been burned, agrees. So, while
this transition is likely to go ahead as scheduled, 2.6.25 will probably
have a configuration change designed to keep others from falling into a
similar trap.
(
Log in to post comments)