Skip to contentSkip to conversation

New: keyboard stops responding after "ifdown eth0"

Bugme-new Andrew Morton 3 participants 8 messages Mar 25, 2008 – Apr 11, 2008 1 message not in the archive

Subsystems (3)
lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): [email protected]/

#1 lore raw

(switched to email. Please respond via emailed reply-to-all, not via the bugzilla web interface).

Quoted 29 lines · On Tue, 25 Mar 2008 14:22:51 -0700 (PDT) [email protected] wrote:

http://bugzilla.kernel.org/show_bug.cgi?id=10327

           Summary: keyboard stops responding after "ifdown eth0"
           Product: Drivers
           Version: 2.5
     KernelVersion: 2.6.24, 2.6.25-rc6
          Platform: All
        OS/Version: Linux
              Tree: Mainline
            Status: NEW
          Severity: normal
          Priority: P1
         Component: Network
        AssignedTo: [email protected]
        ReportedBy: [email protected]

Latest working kernel version: unknown Earliest failing kernel version: 2.6.24
Distribution: Debian testing/unstable Hardware Environment: LG LE50 Express laptop Software Environment: Debian i386, X.org 7.3, KDE 4 Problem Description:

The keyboard stops working when I'm manipulating the Ethernet interface while in an X.org session. The session doesn't respond to keyboard input, although the magic SysReq key still works, and the mouse also works. The only way out is a reboot.

Quoted 8 lines

The bug is triggered consistently when I bring down the eth0 interface with "ifdown eth0". (I normally use only wireless, so I didn't notice this before.)

Steps to reproduce:

Boot up, log in to KDE, bring up eth0, assign an address and send some traffic, then "ifdown eth0".

(this is using sky2)

Quoted 13 lines

~$ cat /proc/interrupts
CPU0
0: 32835 local-APIC-edge-fasteoi timer

  1:         10   IO-APIC-edge      i8042
  8:          2   IO-APIC-edge      rtc
 12:        138   IO-APIC-edge      i8042
 14:      28322   IO-APIC-edge      ide0
 15:      10618   IO-APIC-edge      ide1
 16:        334   IO-APIC-fasteoi   HDA Intel
 19:      19243   IO-APIC-fasteoi   ohci_hcd:usb1, ohci_hcd:usb2, ehci_hcd:usb3
 20:         20   IO-APIC-fasteoi   firewire_ohci, yenta, tifm_7xx1,
sdhc0:slot0, sdhc0:slot1, sdhc0:slot2
 21:       1827   IO-APIC-fasteoi   acpi
Quoted 8 lines
 22:      19159   IO-APIC-fasteoi   0000:08:02.0
223:          2   PCI-MSI-edge      eth0
NMI:          0   Non-maskable interrupts
LOC:    1415833   Local timer interrupts
TRM:          0   Thermal event interrupts
SPU:          0   Spurious interrupts
ERR:          0
MIS:          0

So it's not an ill-advised disable_irq().

I guess the first question is: did the ifdown just kill the keyboard, or did more things die?

Perhaps you could try

ifdown eth0 ; sleep 5 ; ifup eth0

and see if the machine recovers?

(I am just maxed out on bug reports at present - could someone please take this up and see if we can get it fixed?)

#3 lore raw

One possible reason for unresponsive keyboard is a workqueue job in the shared workqueue sleeping very long or indefinitely.

Sky2.c has only one workqueue job: sky2_restart().

Signature · 3 lines
Stefan Richter
-=====-==--- --== ==-=-
http://arcgraph.de/sr/
#4 lore raw
Quoted 4 lines · On Wed, 26 Mar 2008 01:01:28 +0100 Stefan Richter <[email protected]>…

One possible reason for unresponsive keyboard is a workqueue job in the shared workqueue sleeping very long or indefinitely.

Sky2.c has only one workqueue job: sky2_restart().

Yeah.

Marcus, please try something like this:

- become root

- run

( sleep 10 ; echo t > /proc/sysrq-trigger ) & ifdown eth0

- wait a minute or so

- reboot

- See if the sysrq-t output made it to /var/log/messages

If it did, please send it as reply-to-all to this email. Try to avoid wordwrapping it, as many do.

Thanks.

#5 lore raw
Quoted 5 lines · Andrew Morton

( 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.

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

Marcus

#6 lore raw
Quoted 16 lines · On Wed, 26 Mar 2008 10:19:40 +0100 Marcus Better <[email protected]> wrote:
Quoted 5 lines · Andrew Morton

( 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

Quoted 5 lines

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).

Quoted 1 line

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:

drivers/net/sky2.c renamed from drivers/net/sky2.c~a +15 -3
diff -puN drivers/net/sky2.c~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.

#7 lore raw
Quoted 1 line · Andrew Morton

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

This doesn't seem to help, it freezes without printing anything, and there is nothing in the logs either.

#8 lore raw
In reply to Andrew Morton
Quoted 5 lines · Andrew Morton

Perhaps you could try

ifdown eth0 ; sleep 5 ; ifup eth0

and see if the machine recovers?

The keyboard locked up immediately, and the Konsole window where I typed the command also locked up and had to be killed forcibly.

Marcus