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:
--- 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)
I'll try to debug this tomorrow, but I may not have time for a proper
debug session until next weekend.
/Mikael
From: Mikael Pettersson <[email protected]>
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.
David Miller writes:
> From: Mikael Pettersson <[email protected]>
> 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.
Mikael Pettersson <[email protected]> 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.
--
Krzysztof Halasa
Mikael Pettersson writes:
> David Miller writes:
> > From: Mikael Pettersson <[email protected]>
> > 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