linux-mips
[Top] [All Lists]

Re: IP22 doesn't shutdown properly

To: linux-mips@linux-mips.org
Subject: Re: IP22 doesn't shutdown properly
From: Martin Michlmayr <tbm@cyrius.com>
Date: Thu, 23 Feb 2006 22:13:50 +0000
Cc: jblache@debian.org, rmk+serial@arm.linux.org.uk
In-reply-to: <20060217225824.GE20785@deprecation.cyrius.com>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <20060217225824.GE20785@deprecation.cyrius.com>
Sender: linux-mips-bounce@linux-mips.org
User-agent: Mutt/1.5.11
* Martin Michlmayr <tbm@cyrius.com> [2006-02-17 22:58]:
> When you try to shutdown or reboot an IP22 with 2.6.15 or 2.6.16-rc2,
> you see that the TERM signal is sent but then nothing happens.  At the
> beginning, the light on the Indy is green but after about 20 seconds
> it turns red.  Nothing happens on the console and the machine doesn't
> turn off.  Seen on Indy and Indigo2.
[and, as mentioned later, this only happens on serial, not when using
the bf]

I've tracked down now while the old 2.6.12 Debian package shut down
correctly while no recent git does.  The following simple change to
the serial driver makes the difference for me:

--- a/drivers/serial/serial_core.c~     2006-02-23 21:58:51.000000000 +0000
+++ b/drivers/serial/serial_core.c      2006-02-23 21:59:14.000000000 +0000
@@ -108,7 +108,8 @@
 static void uart_tasklet_action(unsigned long data)
 {
        struct uart_state *state = (struct uart_state *)data;
-       tty_wakeup(state->info->tty);
+       if (state->info->tty)
+               tty_wakeup(state->info->tty);
 }
 
 static inline void

I cannot easily check why this change was in Debian's 2.6.12 package
nor why it's not in Linus' git.  Russell, can you say whether this
change looks obviously good to you?  If not, I can dig some more and
see why this change was in our 2.6.12 package.

In any case, with this patch applied, the SGI Indy in serial mode
powers down correctly.  Without the patch, it stops as in the example
below and never turns off:

> sgi:~# shutdown -r now
> 
> Broadcast message from root (ttyS0) (Fri Feb 17 22:52:47 2006):
> 
> The system is going down for reboot NOW!
> INIT: Sending processes the TERM signal
> INIT: Sending proces

This is with:

CONFIG_SERIAL_IP22_ZILOG=y
CONFIG_SERIAL_IP22_ZILOG_CONSOLE=y
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y

-- 
Martin Michlmayr
http://www.cyrius.com/

<Prev in Thread] Current Thread [Next in Thread>