* Matthew Wilcox <matthew@xxxxxx> wrote:And this would seem to break the most common means of testing a new driver for existing (and working!) hardware, which is to build both drivers as modules, install the new one, and if it appears to have problems either remove and insert the old driver by hand, or boot forcing the old driver.
On Tue, Apr 08, 2008 at 08:39:21PM +0200, Ingo Molnar wrote:so the pure presence of the e1000e module breaks the e1000 driver. That is a regression and a bug that should be fixed.I think you've found the wrong problem ... it looks deliberate to me that enabling e1000e disables e1000 from claiming the PCI IDs (see the PCIE() macro right before the e1000_pci_tbl in drivers/net/e1000/e1000_main.c).
The question is why e1000e isn't claiming the device ...
because i have e1000 built-in and dont load the e1000e module at all. That worked before and doesnt work now.
the solution is rather straightforward: if E1000 is built-in then E1000E should be built-in as well or disabled (i.e. it should not be possible to build it as a module in that case) - because the PCI ID stealing trick now connects the two drivers unconditionally. [ If e1000 is a module then e1000e can be a module (or disabled) - this would be the most common configuration. ]