Re: [Bugme-new] [Bug 10327] New: keyboard stops responding after"ifdown eth0"

From: Andrew Morton
Date: Wed Mar 26 2008 - 13:30:17 EST


On Wed, 26 Mar 2008 10:19:40 +0100
Marcus Better <marcus@xxxxxxxxx> wrote:

> Andrew Morton wrote:
> > ( sleep 10 ; echo t > /proc/sysrq-trigger ) &
> > ifdown eth0
> >
> >
> > - See if the sysrq-t output made it to /var/log/messages
>
> No, not a word. It hung after printing this:
>
> ...
> DHCPRELEASE ...
> send_packet: Network is unreachable
> send_packet: please consult README ...
> sky2 eth0: disabling interface
> ~# sky2 eth0: enabling interface
>
> I'm running ifplugd, but this time there was no network cable connected.
> Also ran from virtual console this time, the keyboard locked up like before.
>
> SysRq keys work, so I could do sysrq-s, sysrq-b. Also pressed sysrq-t
> before rebooting.

It certainy does sound like networking has gummed up the keventd queue(s).

> Any use trying netconsole? Can I run it over the wireless interface?

I don't think many (or any?) wireless drivers support netconsole.

I'd suggest running (and perhaps suitably modifying) this:

diff -puN drivers/net/sky2.c~a drivers/net/sky2.c
--- a/drivers/net/sky2.c~a
+++ a/drivers/net/sky2.c
@@ -50,6 +50,8 @@

#include "sky2.h"

+#define D() printk("%s:%d\n", __FILE__, __LINE__)
+
#define DRV_NAME "sky2"
#define DRV_VERSION "1.21"
#define PFX DRV_NAME " "
@@ -2931,32 +2933,42 @@ static void sky2_restart(struct work_str
struct net_device *dev;
int i, err;

+ D();
rtnl_lock();
+ D();
for (i = 0; i < hw->ports; i++) {
+ D();
dev = hw->dev[i];
if (netif_running(dev))
sky2_down(dev);
}
-
+ D();
napi_disable(&hw->napi);
+ D();
sky2_write32(hw, B0_IMSK, 0);
sky2_reset(hw);
sky2_write32(hw, B0_IMSK, Y2_IS_BASE);
napi_enable(&hw->napi);
-
+ D();
for (i = 0; i < hw->ports; i++) {
+ D();
dev = hw->dev[i];
if (netif_running(dev)) {
+ D();
err = sky2_up(dev);
+ D();
if (err) {
+ D();
printk(KERN_INFO PFX "%s: could not restart %d\n",
dev->name, err);
dev_close(dev);
+ D();
}
}
}
-
+ D();
rtnl_unlock();
+ D();
}

static inline u8 sky2_wol_supported(const struct sky2_hw *hw)
_

to see if things are getting stuck and if so, where.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/