diff mbox

[BUG] 2.6.30-rc broke ixp4xx_eth, firmware breakage?

Message ID 200904182153.n3ILrP6j027453@pilspetsen.it.uu.se
State Not Applicable, archived
Delegated to: David Miller
Headers show

Commit Message

Mikael Pettersson April 18, 2009, 9:53 p.m. UTC
The ixp4xx_eth driver for my IXP420 XScale box (Synology DS101)
worked fine in kernel 2.6.29. Now trying to boot 2.6.30-rc2 I'm
greeted with the following failure during init:

Bringing up interface eth0:  RTNETLINK answers: No such file or directory
Failed to bring up eth0.
[FAILED]

There's a fairly long (at least 10 seconds) delay between the 'Bringing up'
message and the RTNETLINK error.

A diff between the 2.6.29 and 2.6.30-rc2 boot logs indicates that
the firmware doesn't get loaded:


I'll try to debug this tomorrow, but I may not have time for a proper
debug session until next weekend.

/Mikael
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

David Miller April 19, 2009, 4:18 a.m. UTC | #1
From: Mikael Pettersson <mikpe@it.uu.se>
Date: Sat, 18 Apr 2009 23:53:25 +0200 (MEST)

> The ixp4xx_eth driver for my IXP420 XScale box (Synology DS101)
> worked fine in kernel 2.6.29. Now trying to boot 2.6.30-rc2 I'm
> greeted with the following failure during init:
> 
> Bringing up interface eth0:  RTNETLINK answers: No such file or directory
> Failed to bring up eth0.
> [FAILED]
> 
> There's a fairly long (at least 10 seconds) delay between the 'Bringing up'
> message and the RTNETLINK error.
> 
> A diff between the 2.6.29 and 2.6.30-rc2 boot logs indicates that
> the firmware doesn't get loaded:

Please make sure CONFIG_FIRMWARE_IN_KERNEL is set in your
configuration if this driver is being built statically
into your kernel.

Otherwise, if modular, make sure the firmware files get installed into
the correct location and are available in the filesystem when the
driver loads.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Mikael Pettersson April 19, 2009, 9:32 a.m. UTC | #2
David Miller writes:
 > From: Mikael Pettersson <mikpe@it.uu.se>
 > Date: Sat, 18 Apr 2009 23:53:25 +0200 (MEST)
 > 
 > > The ixp4xx_eth driver for my IXP420 XScale box (Synology DS101)
 > > worked fine in kernel 2.6.29. Now trying to boot 2.6.30-rc2 I'm
 > > greeted with the following failure during init:
 > > 
 > > Bringing up interface eth0:  RTNETLINK answers: No such file or directory
 > > Failed to bring up eth0.
 > > [FAILED]
 > > 
 > > There's a fairly long (at least 10 seconds) delay between the 'Bringing up'
 > > message and the RTNETLINK error.
 > > 
 > > A diff between the 2.6.29 and 2.6.30-rc2 boot logs indicates that
 > > the firmware doesn't get loaded:
 > 
 > Please make sure CONFIG_FIRMWARE_IN_KERNEL is set in your
 > configuration if this driver is being built statically
 > into your kernel.

ixp4xx_eth is built as a module and I have CONFIG_FIRMWARE_IN_KERNEL unset.

 > Otherwise, if modular, make sure the firmware files get installed into
 > the correct location and are available in the filesystem when the
 > driver loads.

The firmware isn't shipped with the kernel but is something users have to
download from Intel, build, and install themselves; once installed they work
across kernel versions. The files reside in /lib/firmware/'s top-level
directory, and they are available since firmware loading (triggered by init's
attempt to up eth0) occurs after / has been mounted. My userspace uses oldish
firmware-aware hotplug since udev's too heavy-weight.

This all works with 2.6.29 and older 2.6.2x kernels.

I'll do a bisect.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Krzysztof Halasa April 19, 2009, 8:03 p.m. UTC | #3
Mikael Pettersson <mikpe@it.uu.se> writes:

> The ixp4xx_eth driver for my IXP420 XScale box (Synology DS101)
> worked fine in kernel 2.6.29. Now trying to boot 2.6.30-rc2 I'm
> greeted with the following failure during init:
>
> Bringing up interface eth0:  RTNETLINK answers: No such file or directory
> Failed to bring up eth0.
> [FAILED]

Thanks for the info, will look at it.
Mikael Pettersson April 19, 2009, 9:14 p.m. UTC | #4
Mikael Pettersson writes:
 > David Miller writes:
 >  > From: Mikael Pettersson <mikpe@it.uu.se>
 >  > Date: Sat, 18 Apr 2009 23:53:25 +0200 (MEST)
 >  > 
 >  > > The ixp4xx_eth driver for my IXP420 XScale box (Synology DS101)
 >  > > worked fine in kernel 2.6.29. Now trying to boot 2.6.30-rc2 I'm
 >  > > greeted with the following failure during init:
 >  > > 
 >  > > Bringing up interface eth0:  RTNETLINK answers: No such file or directory
 >  > > Failed to bring up eth0.
 >  > > [FAILED]
 >  > > 
 >  > > There's a fairly long (at least 10 seconds) delay between the 'Bringing up'
 >  > > message and the RTNETLINK error.
 >  > > 
 >  > > A diff between the 2.6.29 and 2.6.30-rc2 boot logs indicates that
 >  > > the firmware doesn't get loaded:
 >  > 
 >  > Please make sure CONFIG_FIRMWARE_IN_KERNEL is set in your
 >  > configuration if this driver is being built statically
 >  > into your kernel.
 > 
 > ixp4xx_eth is built as a module and I have CONFIG_FIRMWARE_IN_KERNEL unset.
 > 
 >  > Otherwise, if modular, make sure the firmware files get installed into
 >  > the correct location and are available in the filesystem when the
 >  > driver loads.
 > 
 > The firmware isn't shipped with the kernel but is something users have to
 > download from Intel, build, and install themselves; once installed they work
 > across kernel versions. The files reside in /lib/firmware/'s top-level
 > directory, and they are available since firmware loading (triggered by init's
 > attempt to up eth0) occurs after / has been mounted. My userspace uses oldish
 > firmware-aware hotplug since udev's too heavy-weight.
 > 
 > This all works with 2.6.29 and older 2.6.2x kernels.
 > 
 > I'll do a bisect.

Bisection identified Arjan's f520360d93cdc37de5d972dac4bf3bdef6a7f6a7
"kobject: don't block for each kobject_uevent" as the culprit.
Hugh Dickins reverted that change a few days ago in commit
05f54c13cd0c33694eec39a265475c5d6cf223cf, noting that it was buggy
and broke CONFIG_UEVENT_HELPER_PATH by prematurely releasing memory
needed when exec:ing the helper program.

I tested 2.6.30-rc2 + Hugh's patch and with that everything works again.

Krzysztof: you can relax, ixp4xx_eth was just an innocent bystander.

Hugh: thanks for the revert, consider this a late Acked-by.

/Mikael
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

--- dmesg-2.6.29	2009-04-18 23:26:30.000000000 +0200
+++ dmesg-2.6.30-rc2	2009-04-18 23:24:03.000000000 +0200
@@ -221,11 +222,9 @@ 
 kjournald starting.  Commit interval 5 seconds
 EXT3 FS on sda8, internal journal
 EXT3-fs: mounted filesystem with ordered data mode.
-net eth0: firmware: requesting NPE-C
-NPE-C: firmware functionality 0x0, revision 0x2:1
-NET: Registered protocol family 17
-eth0: link up, speed 100 Mb/s, full duplex
 Adding 2000336k swap on /dev/sda5.  Priority:-1 extents:1 across:2000336k 
+NET: Registered protocol family 17
+net eth0: firmware: requesting NPE-C
 RPC: Registered udp transport module.
 RPC: Registered tcp transport module.
 warning: `dbus-daemon' uses 32-bit capabilities (legacy support in use)