Subject: Re: [regression] e1000e broke e1000

From: Jeff Garzik <[email-masked]>
Date: Tue, 08 Apr 2008 15:56:48 -0400

Ingo Molnar wrote:
> * Matthew Wilcox <[email-masked]> wrote:
> 
>> 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. ]

Then disable E1000E in your kernel config, and the PCIE() macro will do 
the right thing...

Have you reviewed the discussion that led to PCIE()?

	Jeff